diff --git a/crates/grida-canvas-wasm/example/demo.grida b/crates/grida-canvas-wasm/example/demo.grida index 5a3cea8b6e..e85e5c92d7 100644 --- a/crates/grida-canvas-wasm/example/demo.grida +++ b/crates/grida-canvas-wasm/example/demo.grida @@ -1,3094 +1,9970 @@ { - "version": "0.0.4-beta+20251209", "document": { - "nodes": { - "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc": { - "name": "demo", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": -611, - "top": 632, - "width": 1080, - "height": 1080, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" - }, - "corner_radius": 30, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "fb5c188a-1ff8-4974-b2a2-97c691a6b517": { - "name": "Frame 945", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 1080, - "height": 150, - "style": { - "overflow": "clip" - }, - "corner_radius": [ - 30, - 30, - 0, - 0 - ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "fb5c188a-1ff8-4974-b2a2-97c691a6b517", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "7fa7152a-1aa6-432f-8a18-e06028407210": { - "name": "Vector 270", - "type": "svgpath", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 0, - "paths": [ - { - "d": "M0 0.5L1080 0.5L1080 -0.5L0 -0.5L0 0.5Z", - "fill_rule": "nonzero", - "fill": "stroke" - } - ], - "id": "7fa7152a-1aa6-432f-8a18-e06028407210" - }, - "36123500-0f85-4828-90d6-f7efe0465145": { - "name": "Frame 946", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 40, - "top": 25, - "width": 100, - "height": 100, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" - }, - "corner_radius": 100, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "36123500-0f85-4828-90d6-f7efe0465145", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "3cdaf947-0959-470b-9012-018e733d9f69": { - "name": "\blogo", - "type": "svgpath", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 32, - "top": 32, - "width": 36, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" - }, - { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "3cdaf947-0959-470b-9012-018e733d9f69", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933": { - "name": "Canary", - "type": "text", + "bitmaps": {}, + "images": {}, + "links": { + "27928f62-5265-4d23-a828-fc42c58572ac": [ + "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f", + "d77358f4-748d-49fe-ae50-911f357c4a62", + "39121f18-a69b-4d0c-8a45-39548fb7d43b" + ], + "2c313df1-8090-4200-b114-38919c70045f": [ + "296499fb-b83a-4cf2-8589-d589a3426f4e", + "c83c9be1-62a3-40da-8037-a7ae14cc093e", + "79f25f6f-65bd-4dd8-8627-c4a5d773a218" + ], + "2c316d9f-4c8b-4af0-b367-b0f1b8901a88": [ + "cc64cd72-f5aa-489a-8570-8cdc4b20daca" + ], + "34c46b34-5b54-4a27-be7d-a55950a3398e": [ + "96c40aae-f303-4c9b-be20-39d6a5d9e9ef", + "d77fbae1-c379-4ffe-a524-887324617346" + ], + "36123500-0f85-4828-90d6-f7efe0465145": [ + "3cdaf947-0959-470b-9012-018e733d9f69" + ], + "3860c5b4-1987-436f-8113-63a1d3999d2e": [ + "135994ec-41b4-4d58-bf51-9dd6fd577e6c", + "c8655a4f-837f-4867-b7ee-81c9025fc188", + "0879aa63-70ad-4c47-ae56-b99462ce540c" + ], + "39121f18-a69b-4d0c-8a45-39548fb7d43b": [ + "e0e5300d-09e2-4afb-ad25-4e8b0b03624c", + "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6", + "b8277fa8-b221-4b5c-b05b-df375de91af2", + "aad05458-6b10-47b8-ab6b-f859b3b5e299" + ], + "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6": [ + "55067523-3d57-4636-91c7-3f1769f4747e" + ], + "3afd24ac-a789-4e3e-b626-f7d990eab72a": [ + "0eb99750-edad-4a0a-a886-6b7e505b62ab", + "9f5905c5-5e47-4d14-898f-18d4bb98025e", + "a3b4b1cd-ce66-4e36-abfa-a162d5676199", + "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa" + ], + "4b2cb61d-1925-4515-ad23-e15f08cc6626": [ + "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77" + ], + "5ac3de8f-c266-4d78-a1c4-02b413174ab6": [ + "79e82c91-9ed1-4eb0-8c33-89fe98219b7c", + "3afd24ac-a789-4e3e-b626-f7d990eab72a", + "97dafdc5-8004-4d73-890c-3c9ee68c688e" + ], + "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f": [ + "158c801e-d693-4ee1-b392-ef86c8e97864", + "755302fe-e073-4faa-881d-d561335f3068", + "ae565e52-976f-4909-b062-b8cd5ef26c30" + ], + "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc": [ + "fb5c188a-1ff8-4974-b2a2-97c691a6b517", + "b5131656-c058-447c-a93d-52d91ea30f6f" + ], + "755302fe-e073-4faa-881d-d561335f3068": [ + "60f4d6dd-6a18-47e4-8ec5-95445d429770" + ], + "79e82c91-9ed1-4eb0-8c33-89fe98219b7c": [ + "ff20ed51-2dce-4a17-816c-ca346983979e", + "f290578a-89d6-4141-b762-cf370d7392e0", + "94c3ba01-8de9-4a90-a0a8-05972ac52f44" + ], + "84347d1c-ca26-4d6d-b3d2-be770742e660": [ + "787f4515-a1cd-4cfc-990e-5199f7544975" + ], + "8d653755-953e-4a0d-9f06-c935dbdc659b": [ + "45bfea71-1399-42b0-8fa1-633305419119", + "9cae0b62-3130-4ecb-9aaf-302f82669aa3", + "2003aba6-81f4-438b-a9b0-d702c4d8e945" + ], + "96c40aae-f303-4c9b-be20-39d6a5d9e9ef": [ + "5786bd6e-498e-4090-b5b9-3d91ede365f6", + "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d", + "efc81eb0-403e-4ff3-aad6-ae88c55e1fd4" + ], + "b5131656-c058-447c-a93d-52d91ea30f6f": [ + "6db11f69-c5e4-43dd-adfb-ce93b013095b", + "29429cb3-52e5-4731-957b-4a37e7856fcb", + "e4891d1d-12bb-4a9f-9359-741a359ea39e", + "01182c94-a1f6-46f2-9b41-5cd622c480a6", + "2c316d9f-4c8b-4af0-b367-b0f1b8901a88", + "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9", + "2c313df1-8090-4200-b114-38919c70045f" + ], + "b8277fa8-b221-4b5c-b05b-df375de91af2": [ + "2a1ed781-06d1-4a4d-9908-5e807f3c2983", + "8927e413-8570-4259-891b-e36aa614a25d", + "14472868-d49c-4411-adc9-ab48beb4621c", + "3ac33bc3-743e-4eef-8011-ce8b6a1b740a", + "1044027a-8009-437b-8a4b-1c3ec006f8f9" + ], + "c1a07e06-f9e9-4023-b072-674edb9c680e": [ + "e430dc52-d4a4-4d99-95b5-baf1f09e68f6", + "470d42db-a5d6-4b45-8a0b-abcee1ad08d8" + ], + "c8655a4f-837f-4867-b7ee-81c9025fc188": [ + "e8655ffa-b4dc-4939-864d-77b9208e1f2e" + ], + "d77358f4-748d-49fe-ae50-911f357c4a62": [], + "d77fbae1-c379-4ffe-a524-887324617346": [ + "8d653755-953e-4a0d-9f06-c935dbdc659b", + "f7075669-9c1b-47a9-825e-cdf5c86fc827" + ], + "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d": [ + "4f8fa473-890a-49d0-8335-3b78ffaf31a5" + ], + "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5": [ + "3860c5b4-1987-436f-8113-63a1d3999d2e", + "4b2cb61d-1925-4515-ad23-e15f08cc6626" + ], + "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6": [ + "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1", + "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6" + ], + "f290578a-89d6-4141-b762-cf370d7392e0": [ + "8bd6d1b1-51bd-406a-9fa5-42956191dd2c" + ], + "f7075669-9c1b-47a9-825e-cdf5c86fc827": [ + "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96" + ], + "fb5c188a-1ff8-4974-b2a2-97c691a6b517": [ + "7fa7152a-1aa6-432f-8a18-e06028407210", + "36123500-0f85-4828-90d6-f7efe0465145", + "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933" + ], + "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77": [ + "8099fa98-1f01-4e85-be29-1c4ac50516a5", + "84347d1c-ca26-4d6d-b3d2-be770742e660", + "c1a07e06-f9e9-4023-b072-674edb9c680e", + "2f472276-c737-4757-bff1-6a22539a2cfa", + "540840f9-eca5-4975-8f05-3bcb7ff27f8c" + ], + "main": [ + "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc", + "5ac3de8f-c266-4d78-a1c4-02b413174ab6", + "27928f62-5265-4d23-a828-fc42c58572ac", + "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5", + "34c46b34-5b54-4a27-be7d-a55950a3398e" + ] + }, + "nodes": { + "01182c94-a1f6-46f2-9b41-5cd622c480a6": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "text": "Canary", - "left": 170, - "top": 54, - "bottom": 54, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 32, - "font_family": "Inter", - "font_weight": 500, - "id": "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933", + "bottom": 226, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "b5131656-c058-447c-a93d-52d91ea30f6f": { - "name": "Frame 947", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 930, - "style": { - "overflow": "clip" - }, - "corner_radius": [ - 0, - 0, - 30, - 30 ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "b5131656-c058-447c-a93d-52d91ea30f6f", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "6db11f69-c5e4-43dd-adfb-ce93b013095b": { - "name": "CANVAS", - "type": "text", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "text": "CANVAS", - "left": 60, - "top": 734, - "right": 523, - "bottom": 40, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 120, "font_family": "Inter", - "font_weight": 500, - "id": "6db11f69-c5e4-43dd-adfb-ce93b013095b", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } - } - ] - }, - "29429cb3-52e5-4731-957b-4a37e7856fcb": { - "name": "DRAW", - "type": "text", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "text": "DRAW", - "left": 60, - "top": 101, - "right": 662, - "bottom": 673, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, "font_size": 120, - "font_family": "Inter", "font_weight": 500, - "id": "29429cb3-52e5-4731-957b-4a37e7856fcb", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } - } - ] - }, - "e4891d1d-12bb-4a9f-9359-741a359ea39e": { - "name": "EVERYTHING", - "type": "text", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "text": "EVERYTHING", - "left": 60, - "top": 272, - "right": 250, - "bottom": 502, - "width": "auto", "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, + "id": "01182c94-a1f6-46f2-9b41-5cd622c480a6", + "left": 898, "letter_spacing": 0, - "font_size": 120, - "font_family": "Inter", - "font_weight": 500, - "id": "e4891d1d-12bb-4a9f-9359-741a359ea39e", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } - } - ] - }, - "01182c94-a1f6-46f2-9b41-5cd622c480a6": { - "name": "IN", - "type": "text", - "active": true, + "line_height": 1.3, "locked": false, + "name": "IN", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "IN", - "left": 898, - "top": 548, "right": 60, - "bottom": 226, - "width": "auto", - "height": "auto", + "rotation": 0, "style": {}, + "text": "IN", "text_align": "left", "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 120, - "font_family": "Inter", - "font_weight": 500, - "id": "01182c94-a1f6-46f2-9b41-5cd622c480a6", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } - } - ] - }, - "2c316d9f-4c8b-4af0-b367-b0f1b8901a88": { - "name": "oval-2", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": -7, - "top": -94.5, - "width": 542, - "height": 542, - "style": { - "overflow": "clip" - }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "2c316d9f-4c8b-4af0-b367-b0f1b8901a88" - }, - "cc64cd72-f5aa-489a-8570-8cdc4b20daca": { - "name": "circle-02", - "type": "svgpath", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 37.93999481201172, - "top": 159.8900146484375, - "width": 466.1200256347656, - "height": 222.22000122070312, - "paths": [ - { - "d": "M282.02 196.565C291.915 198.98 300.538 198.066 309.028 198.849C327.063 200.524 345.164 201.372 363.242 202.633C365.305 202.785 368.354 202.372 368.179 205.417C368.025 207.809 365.173 207.592 363.286 207.657C323.465 208.81 283.644 210.397 243.845 208.07C229.913 207.244 216.507 210.115 202.949 212.137C172.825 216.639 142.548 219.727 112.095 221.337C89.782 222.511 67.4909 222.25 45.178 222.032C41.6017 221.989 38.0475 221.532 34.4932 221.141C32.0798 220.88 29.1618 220.358 29.1398 217.465C29.1179 213.986 32.5186 214.181 34.9758 213.79C36.5336 213.551 38.1572 213.616 39.7368 213.725C89.6503 216.987 139.213 213.442 188.578 206.004C166.177 203.721 143.776 201.481 121.683 197.24C89.6284 191.085 58.4517 182.386 30.8292 164.204C20.0567 157.114 10.8857 148.415 5.11552 136.715C-4.80137 116.598 -0.128149 94.0668 17.6433 74.5805C35.5902 54.8985 58.2981 42.3716 82.6076 32.3892C121.222 16.5349 161.657 8.09666 203.058 3.59481C230.242 0.637071 257.491 -0.667813 284.785 0.332598C326.712 1.89846 368.201 6.72653 407.934 21.2325C422.414 26.5173 436.28 33.0635 447.777 43.5243C469.52 63.315 471.999 86.9334 454.864 110.769C443.784 126.189 428.777 137.28 412.673 147.002C381.781 165.64 348.06 177.623 313.614 187.779C303.697 190.694 293.714 193.325 282.086 196.565L282.02 196.565ZM275.021 12.294C266.443 12.4245 257.908 12.9465 249.352 13.251C224.823 14.0991 200.469 16.6654 176.335 20.841C136.47 27.7352 97.7023 38.1742 62.1376 57.9867C43.8835 68.1431 26.9458 80.0176 17.2922 99.3298C10.6005 112.727 11.895 125.71 20.8904 137.824C27.2969 146.458 35.8535 152.569 45.178 157.636C75.1919 173.947 107.97 181.32 141.451 186.257C167.077 190.019 192.878 192.238 218.723 193.999C234.41 195.087 250.054 196.718 265.434 191.455C271.05 189.541 277.018 188.606 282.81 187.105C320.635 177.21 357.911 165.683 392.686 147.502C412.563 137.106 431.125 124.819 444.815 106.702C460.502 85.933 457.54 65.2506 436.917 49.157C424.674 39.6096 410.611 33.6289 395.933 28.9096C356.638 16.2739 316.005 13.2075 275.065 12.3375L275.021 12.294Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "cc64cd72-f5aa-489a-8570-8cdc4b20daca", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } - } - ] + "top": 548, + "type": "text", + "width": "auto", + "z_index": 0 }, - "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9": { - "name": "arrow-27", - "type": "svgpath", + "0879aa63-70ad-4c47-ae56-b99462ce540c": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 609.6328735351562, - "top": 673.424072265625, - "width": 233.6844024658203, - "height": 117.1951675415039, - "paths": [ - { - "d": "M13.957 102.47C15.3467 95.6312 16.7804 89.3427 17.867 82.9892C18.461 79.4479 18.5805 75.8295 18.7349 72.1824C18.8378 69.7509 18.536 67.1848 15.4161 66.8896C12.1052 66.5763 11.1336 69.022 10.5956 71.6371C9.60754 76.6187 8.78162 81.5835 7.79353 86.565C6.29774 93.8434 4.43203 100.958 1.03365 107.639C-1.77511 113.187 1.40575 118.242 7.36952 117.008C19.2971 114.539 31.4461 114.468 43.3601 112.479C45.0231 112.219 47.5593 112.234 47.4651 109.848C47.3574 107.943 45.0122 107.946 43.519 107.773C37.2337 106.985 30.9302 106.389 24.6676 105.7C23.6201 105.568 22.2694 105.922 21.7357 104.78C21.0412 103.301 22.3996 102.53 23.2833 101.682C40.5704 84.7521 57.4831 67.369 76.9837 52.8326C89.502 43.4816 102.791 35.4882 118.341 32.0774C123.72 30.916 129.112 30.6232 134.458 31.8357C136.187 32.2242 138.48 32.4411 139.08 34.2324C139.749 36.3193 137.36 37.1211 136.092 38.286C123.692 49.7683 113.798 62.9331 109.05 79.4114C107.175 85.9473 106.389 92.5219 108.648 99.1598C111.462 107.392 117.984 111.093 126.493 109.103C135.002 107.114 141.348 101.869 146.668 95.2412C156.443 82.9966 162.337 69.3248 161.328 53.2653C161.025 48.3542 160.148 43.389 157.519 39.2857C154.188 34.1203 156.341 31.7543 160.799 29.1247C176.246 20.0507 192.919 14.3048 210.181 10.1244C216.69 8.55613 223.165 7.01671 229.629 5.25143C231.31 4.80021 234.275 4.69527 233.581 1.86717C233.012 -0.595697 230.374 0.11834 228.487 0.0361079C228.296 0.0180319 228.134 0.034881 227.937 0.0804737C202.055 6.40039 175.04 9.43311 152.367 25.2432C150.096 26.8271 148.194 27.5786 145.519 25.9764C135.862 20.116 125.39 19.4463 114.626 21.8326C94.0215 26.3713 77.1343 37.7502 61.7601 51.4564C44.8746 66.5293 29.6674 83.2064 15.8216 101.104C15.4957 101.491 14.9909 101.733 14.0268 102.412L13.957 102.47ZM134.31 96.8342C132.208 98.3377 130.389 99.9001 128.415 101.062C120.92 105.557 114.789 102.471 113.917 93.7482C113.495 89.4041 114.226 85.1048 115.488 80.9522C119.37 68.1821 127.063 57.8926 136.304 48.5526C139.502 45.322 142.725 39.1385 146.841 40.7807C151.419 42.6272 151.9 49.386 152.463 54.6107C152.602 55.8445 152.672 57.1359 152.586 58.3804C151.52 73.6332 145.137 86.3594 134.316 96.7705L134.31 96.8342Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9", + "bottom": 54, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "2c313df1-8090-4200-b114-38919c70045f": { - "name": "diamond-cluster", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 32, + "font_weight": 500, + "height": "auto", + "id": "0879aa63-70ad-4c47-ae56-b99462ce540c", + "left": 170, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Canary", "opacity": 1, - "z_index": 0, - "rotation": -0.08141034632793365, - "expanded": false, "position": "absolute", - "left": 23, - "top": 612.2640991210938, - "width": 200, - "height": 200, - "style": { - "overflow": "clip" - }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "2c313df1-8090-4200-b114-38919c70045f" + "rotation": 0, + "style": {}, + "text": "Canary", + "text_align": "left", + "text_align_vertical": "top", + "top": 54, + "type": "text", + "width": "auto", + "z_index": 0 }, - "296499fb-b83a-4cf2-8589-d589a3426f4e": { - "name": "misc-32", - "type": "svgpath", + "0eb99750-edad-4a0a-a886-6b7e505b62ab": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 79.6806640625, - "top": 66.437744140625, - "width": 49.59336853027344, - "height": 53.733787536621094, - "paths": [ - { - "d": "M19.123 9.31628C17.233 15.2863 14.883 20.7763 11.993 26.0263C10.673 28.4263 9.16297 30.6863 7.29297 32.6863C6.63297 33.3863 5.82299 34.3263 4.74299 33.5863C3.59299 32.7863 4.34299 31.7963 4.84299 30.9563C9.98299 22.3963 13.413 13.1563 15.833 3.49628C16.233 1.90628 16.593 0.136285 18.693 0.00628494C20.723 -0.113715 21.413 1.50628 22.113 3.01628C24.663 8.45628 28.383 12.8263 33.923 15.3363C37.513 16.9663 41.143 17.0163 44.403 14.2963C45.833 13.1063 47.453 12.2363 48.923 13.9963C50.363 15.7163 49.213 17.2263 48.003 18.5463C41.703 25.4463 38.073 33.6663 36.143 42.6963C35.593 45.2563 35.593 47.9363 35.163 50.5263C34.633 53.6363 31.843 54.8063 29.863 52.5863C24.433 46.5063 17.003 44.2763 9.76298 41.6563C7.02298 40.6663 4.27298 39.7363 1.73298 38.3163C0.972977 37.8963 -0.177014 37.5663 0.0229857 36.4663C0.252986 35.2063 1.49299 35.3163 2.46299 35.2763C11.563 34.8763 19.903 37.3763 27.563 42.1363C29.603 43.4063 30.183 43.1563 30.633 40.8463C31.753 34.9963 34.073 29.5663 37.093 24.4463C37.993 22.9263 38.493 22.0963 35.983 21.7363C30.303 20.9263 26.033 17.5463 22.353 13.3563C21.293 12.1463 20.333 10.8363 19.133 9.30627L19.123 9.31628Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "296499fb-b83a-4cf2-8589-d589a3426f4e", + "effects": [], "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "c83c9be1-62a3-40da-8037-a7ae14cc093e": { - "name": "misc-24", - "type": "svgpath", - "active": true, + ], + "height": 810, + "id": "0eb99750-edad-4a0a-a886-6b7e505b62ab", + "left": 135, "locked": false, + "name": "Ellipse 1", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 124.7919921875, - "top": 92.885498046875, - "width": 43.75392532348633, - "height": 40.73863983154297, - "paths": [ - { - "d": "M22.3616 40.7286C21.1616 40.6686 20.2716 40.2386 19.5216 39.5386C18.9916 39.0486 18.4616 38.5186 18.0616 37.9286C15.1416 33.5586 11.6216 30.4986 5.8316 31.9486C5.2516 32.0986 4.56162 31.9286 3.94162 31.8086C2.32162 31.4786 0.651622 31.1386 0.131622 29.2186C-0.388378 27.3286 0.711626 26.0786 2.04163 25.0386C5.77163 22.1286 9.32162 19.0386 12.1616 15.1986C14.9416 11.4486 17.3316 7.51863 18.6816 3.00863C19.0816 1.67863 19.5316 0.348638 21.1316 0.0486379C22.8016 -0.261362 23.5316 0.968616 24.3416 2.08862C28.3816 7.63862 33.6116 11.1786 40.6216 11.7386C41.9516 11.8486 43.1616 12.2986 43.6016 13.7186C44.0716 15.2286 43.4116 16.4086 42.2016 17.2586C39.5216 19.1286 36.9916 21.3586 34.0616 22.6886C29.7216 24.6486 27.9116 28.0786 26.9416 32.3186C26.5116 34.1786 26.2216 36.0686 25.7116 37.8986C25.2416 39.6186 24.1216 40.7286 22.3416 40.7386L22.3616 40.7286ZM34.9616 16.2886C30.4816 13.9886 26.4416 11.8186 23.1516 8.47863C22.0816 7.39863 21.7916 8.47861 21.4816 9.17861C20.2216 11.9986 18.7716 14.7186 16.9316 17.1986C15.0116 19.7786 12.9716 22.2786 10.9616 24.8486C15.3316 26.2886 17.3316 30.4786 21.2216 33.0586C22.2816 24.5086 26.9916 19.1386 34.9716 16.2986L34.9616 16.2886Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "c83c9be1-62a3-40da-8037-a7ae14cc093e", + "rotation": 0, + "stroke_cap": "butt", + "stroke_width": 1, + "top": 60, + "type": "ellipse", + "width": 810, + "z_index": 0 + }, + "1044027a-8009-437b-8a4b-1c3ec006f8f9": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1.0, + "b": 1.0, + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "79f25f6f-65bd-4dd8-8627-c4a5d773a218": { - "name": "misc-22", - "type": "svgpath", - "active": true, + ], + "height": 116.1629638671875, + "id": "1044027a-8009-437b-8a4b-1c3ec006f8f9", + "left": 0, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 30.4658203125, - "top": 83.214111328125, - "width": 39.131309509277344, - "height": 38.8399543762207, - "paths": [ - { - "d": "M14.7478 0.019989C16.3678 0.159989 17.3678 0.939979 18.3478 1.75998C20.8578 3.83998 23.1678 6.17 25.9578 7.91C28.8978 9.74 31.9678 10.8 35.5078 9.94C36.7978 9.63 38.3778 9.31999 38.9978 11.05C39.5678 12.62 38.1878 13.26 37.2078 14.02C31.3978 18.53 26.8678 23.9 25.4878 31.41C25.2078 32.96 25.2078 34.45 25.5178 35.99C25.7478 37.16 25.4078 38.21 24.2178 38.68C22.9578 39.18 22.1678 38.44 21.5778 37.4C20.0278 34.68 17.4078 33.41 14.6278 32.51C10.7478 31.26 6.80781 30.21 2.88781 29.08C1.65781 28.73 0.207816 28.47 0.0178157 26.98C-0.172184 25.56 1.19782 25.17 2.20782 24.55C4.49782 23.13 6.04782 21.02 7.30782 18.68C9.86782 13.89 10.9278 8.64997 11.8978 3.37997C12.2378 1.53997 12.8278 0.03 14.7778 0L14.7478 0.019989ZM15.6778 6.03C15.3578 6.86 15.1278 7.34998 14.9878 7.84998C13.4278 13.46 11.8078 19.04 7.73782 23.48C6.70782 24.6 7.63781 24.8 8.47781 25.03C12.3378 26.07 16.1978 27.11 19.6878 29.14C20.6978 29.73 21.2278 29.37 21.4778 28.38C22.6778 23.48 25.2778 19.39 28.7178 15.78C29.5678 14.89 29.3478 14.38 28.2478 14.1C23.3078 12.85 19.6478 9.55999 15.6778 6.01999L15.6778 6.03Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "79f25f6f-65bd-4dd8-8627-c4a5d773a218", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 + "rotation": 0, + "top": 131.5487060546875, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 75.82589721679688, + 71.80049896240234 + ], + [ + 122.60700225830078, + 71.80049896240234 + ], + [ + 84.82219696044922, + 44.36249923706055 + ], + [ + 99.21620178222656, + 0.0 + ], + [ + 61.431800842285156, + 27.438100814819336 + ], + [ + 23.64739990234375, + 0.0 + ], + [ + 38.041500091552734, + 44.36249923706055 + ], + [ + 0.0, + 71.80049896240234 + ], + [ + 47.03770065307617, + 71.80049896240234 + ], + [ + 61.431800842285156, + 116.16300201416016 + ], + [ + 75.82589721679688, + 71.80049896240234 + ] + ] + }, + "width": 122.60669708251952, + "z_index": 0 }, - "5ac3de8f-c266-4d78-a1c4-02b413174ab6": { - "name": "demo", - "type": "container", + "135994ec-41b4-4d58-bf51-9dd6fd577e6c": { "active": true, + "height": 0, + "id": "135994ec-41b4-4d58-bf51-9dd6fd577e6c", + "left": 0, "locked": false, + "name": "Vector 270", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 619, - "top": 34, - "width": 1080, - "height": 1080, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" + "rotation": 0, + "top": 150, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.5 + ], + [ + 1080.0, + 0.5 + ], + [ + 1080.0, + -0.5 + ], + [ + 0.0, + -0.5 + ], + [ + 0.0, + 0.5 + ] + ] }, - "corner_radius": 30, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "5ac3de8f-c266-4d78-a1c4-02b413174ab6", + "width": 1080, + "z_index": 0 + }, + "14472868-d49c-4411-adc9-ab48beb4621c": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "79e82c91-9ed1-4eb0-8c33-89fe98219b7c": { - "name": "Frame 945", - "type": "container", - "active": true, + ], + "height": 116.16287231445312, + "id": "14472868-d49c-4411-adc9-ab48beb4621c", + "left": 181.72520446777344, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, + "rotation": 0, "top": 0, - "width": 1080, - "height": 150, - "style": { - "overflow": "clip" - }, - "corner_radius": [ - 30, - 30, - 0, - 0 - ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "79e82c91-9ed1-4eb0-8c33-89fe98219b7c", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 75.82589721679688, + 71.80049896240234 + ], + [ + 122.60700225830078, + 71.80049896240234 + ], + [ + 84.56510162353516, + 44.36240005493164 + ], + [ + 99.21620178222656, + 0.0 + ], + [ + 61.174800872802734, + 27.437999725341797 + ], + [ + 23.390300750732422, + 0.0 + ], + [ + 37.7843017578125, + 44.36240005493164 + ], + [ + 0.0, + 71.80049896240234 + ], + [ + 46.780601501464844, + 71.80049896240234 + ], + [ + 61.174800872802734, + 116.16300201416016 + ], + [ + 75.82589721679688, + 71.80049896240234 + ] + ] + }, + "width": 122.60653686523438, + "z_index": 0 }, - "ff20ed51-2dce-4a17-816c-ca346983979e": { - "name": "Vector 270", - "type": "svgpath", + "158c801e-d693-4ee1-b392-ef86c8e97864": { "active": true, + "height": 0, + "id": "158c801e-d693-4ee1-b392-ef86c8e97864", + "left": 0, "locked": false, + "name": "Vector 270", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 0, + "rotation": 0, "top": 150, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.5 + ], + [ + 1080.0, + 0.5 + ], + [ + 1080.0, + -0.5 + ], + [ + 0.0, + -0.5 + ], + [ + 0.0, + 0.5 + ] + ] + }, "width": 1080, - "height": 0, - "paths": [ + "z_index": 0 + }, + "2003aba6-81f4-438b-a9b0-d702c4d8e945": { + "active": true, + "fill_paints": [ { - "d": "M0 0.5L1080 0.5L1080 -0.5L0 -0.5L0 0.5Z", - "fill_rule": "nonzero", - "fill": "stroke" + "active": true, + "color": { + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" } ], - "id": "ff20ed51-2dce-4a17-816c-ca346983979e" + "font_family": "Inter", + "font_size": 120, + "font_weight": 900, + "height": "auto", + "id": "2003aba6-81f4-438b-a9b0-d702c4d8e945", + "left": 0, + "letter_spacing": 0, + "line_height": 1.2, + "locked": false, + "name": "CREATING", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "style": {}, + "text": "CREATING", + "text_align": "left", + "text_align_vertical": "top", + "top": 290, + "type": "text", + "width": 629, + "z_index": 0 }, - "f290578a-89d6-4141-b762-cf370d7392e0": { - "name": "Frame 946", - "type": "container", + "27928f62-5265-4d23-a828-fc42c58572ac": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 40, - "top": 25, - "width": 100, - "height": 100, "border": { - "border_width": 1, "border_color": { - "r": 0, - "g": 0, + "a": 0.10000000149011612, "b": 0, - "a": 0.10000000149011612 + "g": 0, + "r": 0 }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" + "border_style": "solid", + "border_width": 1 }, - "corner_radius": 100, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "corner_radius": 30, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "f290578a-89d6-4141-b762-cf370d7392e0", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "8bd6d1b1-51bd-406a-9fa5-42956191dd2c": { - "name": "\blogo", - "type": "svgpath", - "active": true, + ], + "height": 1080, + "id": "27928f62-5265-4d23-a828-fc42c58572ac", + "layout": "flow", + "left": -611, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "demo", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 32, - "top": 32, - "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" - }, - { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "8bd6d1b1-51bd-406a-9fa5-42956191dd2c", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": -648, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "29429cb3-52e5-4731-957b-4a37e7856fcb": { + "active": true, + "bottom": 673, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "94c3ba01-8de9-4a90-a0a8-05972ac52f44": { - "name": "Canary", - "type": "text", - "active": true, + ], + "font_family": "Inter", + "font_size": 120, + "font_weight": 500, + "height": "auto", + "id": "29429cb3-52e5-4731-957b-4a37e7856fcb", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "DRAW", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "Canary", - "left": 170, - "top": 54, - "bottom": 54, - "width": "auto", - "height": "auto", + "right": 662, + "rotation": 0, "style": {}, + "text": "DRAW", "text_align": "left", "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 32, - "font_family": "Inter", - "font_weight": 500, - "id": "94c3ba01-8de9-4a90-a0a8-05972ac52f44", + "top": 101, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "296499fb-b83a-4cf2-8589-d589a3426f4e": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" + } + ], + "height": 53.733787536621094, + "id": "296499fb-b83a-4cf2-8589-d589a3426f4e", + "left": 79.6806640625, + "locked": false, + "name": "misc-32", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 66.437744140625, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + -1.8899993896484375, + 5.970019340515137 + ], + "tb": [ + 2.890000343322754, + -5.25 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + -1.3199996948242188, + 2.3999996185302734 + ], + "tb": [ + 1.8699994087219238, + -1.9999980926513672 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + -0.6600003242492676, + 0.7000007629394531 + ], + "tb": [ + 1.0799999237060547, + 0.7400016784667969 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + -1.1500000953674316, + -0.7999992370605469 + ], + "tb": [ + -0.5, + 0.8400001525878906 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 5.140000343322754, + -8.560001373291016 + ], + "tb": [ + -2.4200000762939453, + 9.660019874572754 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.39999961853027344, + -1.5899999141693115 + ], + "tb": [ + -2.1000003814697266, + 0.1300000697374344 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 2.029998779296875, + -0.11999993771314621 + ], + "tb": [ + -0.7000007629394531, + -1.5099999904632568 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 2.549999237060547, + 5.439999580383301 + ], + "tb": [ + -5.540000915527344, + -2.510000228881836 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 3.5900001525878906, + 1.6299991607666016 + ], + "tb": [ + -3.259998321533203, + 2.7200002670288086 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 1.4300003051757812, + -1.1899995803833008 + ], + "tb": [ + -1.470001220703125, + -1.7599992752075195 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 1.4399986267089844, + 1.7200002670288086 + ], + "tb": [ + 1.2100028991699219, + -1.3200016021728516 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + -6.299999237060547, + 6.899999618530273 + ], + "tb": [ + 1.9300003051757812, + -9.029998779296875 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + -0.5500030517578125, + 2.5600013732910156 + ], + "tb": [ + 0.43000030517578125, + -2.5900001525878906 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + -0.529998779296875, + 3.1100006103515625 + ], + "tb": [ + 1.9799995422363281, + 2.220001220703125 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + -5.430000305175781, + -6.079998016357422 + ], + "tb": [ + 7.240019798278809, + 2.6199989318847656 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + -2.7400002479553223, + -0.9899978637695312 + ], + "tb": [ + 2.5400002002716064, + 1.4200019836425781 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + -0.7600030303001404, + -0.4199981689453125 + ], + "tb": [ + -0.19999969005584717, + 1.0999984741210938 + ] + }, + { + "a": 17, + "b": 18, + "ta": [ + 0.2300003170967102, + -1.2600021362304688 + ], + "tb": [ + -0.9700000286102295, + 0.04000091552734375 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + 9.10000991821289, + -0.3999977111816406 + ], + "tb": [ + -7.659999847412109, + -4.759998321533203 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + 2.0400009155273438, + 1.2700004577636719 + ], + "tb": [ + -0.4499988555908203, + 2.3100013732910156 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + 1.1200008392333984, + -5.849998474121094 + ], + "tb": [ + -3.0199966430664062, + 5.119998931884766 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 0.9000015258789062, + -1.5200004577636719 + ], + "tb": [ + 2.509998321533203, + 0.3600006103515625 + ] + }, + { + "a": 22, + "b": 23, + "ta": [ + -5.680002212524414, + -0.8099994659423828 + ], + "tb": [ + 3.6800003051757812, + 4.190000534057617 + ] + }, + { + "a": 23, + "b": 24, + "ta": [ + -1.0600013732910156, + -1.2100000381469727 + ], + "tb": [ + 1.2000007629394531, + 1.5300302505493164 + ] + }, + { + "a": 24, + "b": 25, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 25, "b": 0, - "a": 1 + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 19.12299919128418, + 9.316280364990234 + ], + [ + 11.993000030517578, + 26.02630043029785 + ], + [ + 7.292970180511475, + 32.68629837036133 + ], + [ + 4.742990016937256, + 33.586299896240234 + ], + [ + 4.842989921569824, + 30.956300735473633 + ], + [ + 15.833000183105469, + 3.4962799549102783 + ], + [ + 18.69300079345703, + 0.006284940056502819 + ], + [ + 22.113000869750977, + 3.016279935836792 + ], + [ + 33.92300033569336, + 15.336299896240234 + ], + [ + 44.40299987792969, + 14.296299934387207 + ], + [ + 48.92300033569336, + 13.996299743652344 + ], + [ + 48.00299835205078, + 18.546300888061523 + ], + [ + 36.143001556396484, + 42.6963005065918 + ], + [ + 35.16299819946289, + 50.52629852294922 + ], + [ + 29.863000869750977, + 52.586299896240234 + ], + [ + 9.762980461120605, + 41.65629959106445 + ], + [ + 1.7329800128936768, + 38.31629943847656 + ], + [ + 0.022985700517892838, + 36.46630096435547 + ], + [ + 2.4629900455474854, + 35.27629852294922 + ], + [ + 27.562999725341797, + 42.13629913330078 + ], + [ + 30.632999420166016, + 40.84629821777344 + ], + [ + 37.09299850463867, + 24.446300506591797 + ], + [ + 35.983001708984375, + 21.736299514770508 + ], + [ + 22.35300064086914, + 13.356300354003906 + ], + [ + 19.132999420166016, + 9.306269645690918 + ], + [ + 19.12299919128418, + 9.316280364990234 + ] + ] + }, + "width": 49.59336853027344, + "z_index": 0 }, - "3afd24ac-a789-4e3e-b626-f7d990eab72a": { - "name": "Frame 947", - "type": "container", + "2a1ed781-06d1-4a4d-9908-5e807f3c2983": { "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 1.0, + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" + } + ], + "height": 116.16287231445312, + "id": "2a1ed781-06d1-4a4d-9908-5e807f3c2983", + "left": 112.32521057128906, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, + "position": "absolute", "rotation": 0, + "top": 212.83712768554688, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 75.82589721679688, + 71.80049896240234 + ], + [ + 122.60700225830078, + 71.80049896240234 + ], + [ + 84.82219696044922, + 44.36240005493164 + ], + [ + 99.21620178222656, + 0.0 + ], + [ + 61.431800842285156, + 27.437999725341797 + ], + [ + 23.390300750732422, + 0.0 + ], + [ + 37.7843017578125, + 44.36240005493164 + ], + [ + 0.0, + 71.80049896240234 + ], + [ + 46.780601501464844, + 71.80049896240234 + ], + [ + 61.431800842285156, + 116.16300201416016 + ], + [ + 75.82589721679688, + 71.80049896240234 + ] + ] + }, + "width": 122.60653686523438, + "z_index": 0 + }, + "2c313df1-8090-4200-b114-38919c70045f": { + "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", "expanded": false, + "height": 200, + "id": "2c313df1-8090-4200-b114-38919c70045f", + "layout": "flow", + "left": 23, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "diamond-cluster", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 930, + "rotation": -0.08141034632793365, "style": { "overflow": "clip" }, - "corner_radius": [ - 0, - 0, - 30, - 30 - ], - "padding": 0, - "layout": "flow", + "top": 612.2640991210938, + "type": "container", + "width": 200, + "z_index": 0 + }, + "2c316d9f-4c8b-4af0-b367-b0f1b8901a88": { + "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, "direction": "horizontal", + "expanded": false, + "height": 542, + "id": "2c316d9f-4c8b-4af0-b367-b0f1b8901a88", + "layout": "flow", + "left": -7, + "locked": false, "main_axis_alignment": "start", - "cross_axis_alignment": "start", "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "3afd24ac-a789-4e3e-b626-f7d990eab72a", + "name": "oval-2", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": -94.5, + "type": "container", + "width": 542, + "z_index": 0 + }, + "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, - "b": 1.0, - "a": 1.0 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] + ], + "height": 200, + "id": "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa", + "left": 111, + "locked": false, + "name": "Vector", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 415, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 17, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 22, + "b": 18, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.0 + ], + [ + 66.66670227050781, + 0.0 + ], + [ + 66.66670227050781, + 66.66670227050781 + ], + [ + 0.0, + 66.66670227050781 + ], + [ + 0.0, + 0.0 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 66.66670227050781, + 66.66670227050781 + ], + [ + 66.66670227050781, + 133.33299255371094 + ], + [ + 0.0, + 133.33299255371094 + ], + [ + 0.0, + 200.0 + ], + [ + 66.66670227050781, + 200.0 + ], + [ + 66.66670227050781, + 133.33299255371094 + ], + [ + 133.33299255371094, + 133.33299255371094 + ], + [ + 133.33299255371094, + 200.0 + ], + [ + 200.0, + 200.0 + ], + [ + 200.0, + 133.33299255371094 + ], + [ + 133.33299255371094, + 133.33299255371094 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 200.0, + 66.66670227050781 + ], + [ + 200.0, + 0.0 + ], + [ + 133.33299255371094, + 0.0 + ], + [ + 133.33299255371094, + 66.66670227050781 + ] + ] + }, + "width": 200, + "z_index": 0 }, - "0eb99750-edad-4a0a-a886-6b7e505b62ab": { - "name": "Ellipse 1", - "type": "ellipse", + "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933": { "active": true, + "bottom": 54, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" + } + ], + "font_family": "Inter", + "font_size": 32, + "font_weight": 500, + "height": "auto", + "id": "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933", + "left": 170, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Canary", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 135, - "top": 60, - "width": 810, - "height": 810, - "stroke_width": 1, - "stroke_cap": "butt", - "effects": [], - "id": "0eb99750-edad-4a0a-a886-6b7e505b62ab", + "rotation": 0, + "style": {}, + "text": "Canary", + "text_align": "left", + "text_align_vertical": "top", + "top": 54, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "2f472276-c737-4757-bff1-6a22539a2cfa": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "9f5905c5-5e47-4d14-898f-18d4bb98025e": { - "name": "Draw anything, anywhere, anytime.", - "type": "text", - "active": true, + ], + "font_family": "Inter", + "font_size": 100, + "font_weight": 200, + "height": "auto", + "id": "2f472276-c737-4757-bff1-6a22539a2cfa", + "left": 90, + "letter_spacing": 0, + "line_height": 1, "locked": false, + "name": "Meet your", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "Draw anything, \nanywhere, anytime.", - "left": 60, - "top": 60, - "right": 560, - "bottom": 740, - "width": "auto", - "height": "auto", + "rotation": 0, "style": {}, + "text": "Meet your", "text_align": "left", "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 50, - "font_family": "Inter", - "font_weight": 400, - "id": "9f5905c5-5e47-4d14-898f-18d4bb98025e", + "top": 80, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "34c46b34-5b54-4a27-be7d-a55950a3398e": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 30, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "a3b4b1cd-ce66-4e36-abfa-a162d5676199": { - "name": "Vector", - "type": "svgpath", - "active": true, + ], + "height": 1080, + "id": "34c46b34-5b54-4a27-be7d-a55950a3398e", + "layout": "flow", + "left": 619, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "demo", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 820, - "top": 60, - "width": 200, - "height": 200, - "paths": [ - { - "d": "M0 0L66.6667 0L66.6667 66.6667L0 66.6667L0 0ZM133.333 66.6667L66.6667 66.6667L66.6667 133.333L0 133.333L0 200L66.6667 200L66.6667 133.333L133.333 133.333L133.333 200L200 200L200 133.333L133.333 133.333L133.333 66.6667ZM133.333 66.6667L200 66.6667L200 0L133.333 0L133.333 66.6667Z", - "fill_rule": "evenodd", - "fill": "fill" - } - ], - "id": "a3b4b1cd-ce66-4e36-abfa-a162d5676199", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": -1246, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "36123500-0f85-4828-90d6-f7efe0465145": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 100, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa": { - "name": "Vector", - "type": "svgpath", - "active": true, + ], + "height": 100, + "id": "36123500-0f85-4828-90d6-f7efe0465145", + "layout": "flow", + "left": 40, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 946", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 111, - "top": 415, - "width": 200, - "height": 200, - "paths": [ - { - "d": "M0 0L66.6667 0L66.6667 66.6667L0 66.6667L0 0ZM133.333 66.6667L66.6667 66.6667L66.6667 133.333L0 133.333L0 200L66.6667 200L66.6667 133.333L133.333 133.333L133.333 200L200 200L200 133.333L133.333 133.333L133.333 66.6667ZM133.333 66.6667L200 66.6667L200 0L133.333 0L133.333 66.6667Z", - "fill_rule": "evenodd", - "fill": "fill" - } + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 25, + "type": "container", + "width": 100, + "z_index": 0 + }, + "3860c5b4-1987-436f-8113-63a1d3999d2e": { + "active": true, + "corner_radius": [ + 30, + 30, + 0, + 0 ], - "id": "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa", + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "97dafdc5-8004-4d73-890c-3c9ee68c688e": { - "name": "With Canvas, you’re not just creating visuals—you’re building experiences.", - "type": "text", - "active": true, + ], + "height": 150, + "id": "3860c5b4-1987-436f-8113-63a1d3999d2e", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 945", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "With Canvas, \nyou’re not just creating visuals—you’re building experiences.", - "left": 60, - "top": 825, - "right": 142, - "bottom": 60, - "width": 878, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 50, - "font_family": "Inter", - "font_weight": 400, - "id": "97dafdc5-8004-4d73-890c-3c9ee68c688e", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "39121f18-a69b-4d0c-8a45-39548fb7d43b": { + "active": true, + "corner_radius": [ + 0, + 0, + 400, + 400 + ], + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, + "a": 1.0, + "b": 0.4705882352941176, "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "r": 1.0 + }, + "type": "solid" } - ] - }, - "27928f62-5265-4d23-a828-fc42c58572ac": { - "name": "demo", - "type": "container", - "active": true, + ], + "height": 930, + "id": "39121f18-a69b-4d0c-8a45-39548fb7d43b", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": -611, - "top": -648, - "width": 1080, - "height": 1080, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, + "rotation": 0, "style": { "overflow": "clip" }, - "corner_radius": 30, - "padding": 0, - "layout": "flow", + "top": 150, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6": { + "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, "direction": "horizontal", + "expanded": false, + "height": 65, + "id": "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6", + "layout": "flow", + "left": 180, + "locked": false, "main_axis_alignment": "start", - "cross_axis_alignment": "start", "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "27928f62-5265-4d23-a828-fc42c58572ac", + "name": "icons/unicons-arrow-up-right", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 10, + "type": "container", + "width": 65, + "z_index": 0 + }, + "3ac33bc3-743e-4eef-8011-ce8b6a1b740a": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f": { - "name": "Frame 945", - "type": "container", - "active": true, + ], + "height": 116.16287231445312, + "id": "3ac33bc3-743e-4eef-8011-ce8b6a1b740a", + "left": 42.92522048950195, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, + "rotation": 0, "top": 0, - "width": 1080, - "height": 150, - "style": { - "overflow": "clip" + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 75.82589721679688, + 71.80049896240234 + ], + [ + 122.60700225830078, + 71.80049896240234 + ], + [ + 84.82219696044922, + 44.36240005493164 + ], + [ + 99.21620178222656, + 0.0 + ], + [ + 61.431800842285156, + 27.437999725341797 + ], + [ + 23.390300750732422, + 0.0 + ], + [ + 38.04140090942383, + 44.36240005493164 + ], + [ + 0.0, + 71.80049896240234 + ], + [ + 46.780601501464844, + 71.80049896240234 + ], + [ + 61.431800842285156, + 116.16300201416016 + ], + [ + 75.82589721679688, + 71.80049896240234 + ] + ] }, + "width": 122.60653686523438, + "z_index": 0 + }, + "3afd24ac-a789-4e3e-b626-f7d990eab72a": { + "active": true, "corner_radius": [ - 30, - 30, 0, - 0 + 0, + 30, + 30 ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "158c801e-d693-4ee1-b392-ef86c8e97864": { - "name": "Vector 270", - "type": "svgpath", - "active": true, + ], + "height": 930, + "id": "3afd24ac-a789-4e3e-b626-f7d990eab72a", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, + "rotation": 0, + "style": { + "overflow": "clip" + }, "top": 150, + "type": "container", "width": 1080, - "height": 0, - "paths": [ + "z_index": 0 + }, + "3cdaf947-0959-470b-9012-018e733d9f69": { + "active": true, + "fill_paints": [ { - "d": "M0 0.5L1080 0.5L1080 -0.5L0 -0.5L0 0.5Z", - "fill_rule": "nonzero", - "fill": "stroke" + "active": true, + "color": { + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } ], - "id": "158c801e-d693-4ee1-b392-ef86c8e97864" + "height": 36, + "id": "3cdaf947-0959-470b-9012-018e733d9f69", + "left": 32, + "locked": false, + "name": "\blogo", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 32, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] + }, + "width": 36, + "z_index": 0 }, - "755302fe-e073-4faa-881d-d561335f3068": { - "name": "Frame 946", - "type": "container", + "45bfea71-1399-42b0-8fa1-633305419119": { "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" + } + ], + "font_family": "Inter", + "font_size": 120, + "font_weight": 200, + "height": "auto", + "id": "45bfea71-1399-42b0-8fa1-633305419119", + "left": 0, + "letter_spacing": 0, + "line_height": 1.2, "locked": false, + "name": "JUMP IN", "opacity": 1, - "z_index": 0, + "position": "absolute", "rotation": 0, - "expanded": false, + "style": {}, + "text": "JUMP IN", + "text_align": "left", + "text_align_vertical": "top", + "top": 0, + "type": "text", + "width": 629, + "z_index": 0 + }, + "470d42db-a5d6-4b45-8a0b-abcee1ad08d8": { + "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" + } + ], + "height": 36, + "id": "470d42db-a5d6-4b45-8a0b-abcee1ad08d8", + "left": 246, + "locked": false, + "name": "\blogo", + "opacity": 1, "position": "absolute", - "left": 40, - "top": 25, - "width": 100, - "height": 100, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" + "rotation": 0, + "top": 6, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] }, - "corner_radius": 100, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "width": 36.00001525878906, + "z_index": 0 + }, + "4b2cb61d-1925-4515-ad23-e15f08cc6626": { + "active": true, + "corner_radius": 0, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "755302fe-e073-4faa-881d-d561335f3068", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] + ], + "height": 930, + "id": "4b2cb61d-1925-4515-ad23-e15f08cc6626", + "layout": "flow", + "left": 0, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 150, + "type": "container", + "width": 1080, + "z_index": 0 }, - "60f4d6dd-6a18-47e4-8ec5-95445d429770": { - "name": "\blogo", - "type": "svgpath", + "4f8fa473-890a-49d0-8335-3b78ffaf31a5": { "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" + } + ], + "height": 36, + "id": "4f8fa473-890a-49d0-8335-3b78ffaf31a5", + "left": 32, "locked": false, + "name": "\blogo", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 32, + "rotation": 0, "top": 32, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] + }, "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" - }, - { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "60f4d6dd-6a18-47e4-8ec5-95445d429770", + "z_index": 0 + }, + "540840f9-eca5-4975-8f05-3bcb7ff27f8c": { + "active": true, + "corner_radius": 0, + "effects": [], "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "ae565e52-976f-4909-b062-b8cd5ef26c30": { - "name": "Canary", - "type": "text", - "active": true, + ], + "height": 3, + "id": "540840f9-eca5-4975-8f05-3bcb7ff27f8c", + "left": 90, "locked": false, + "name": "Rectangle 2", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "Canary", - "left": 170, - "top": 54, - "bottom": 54, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 32, - "font_family": "Inter", - "font_weight": 500, - "id": "ae565e52-976f-4909-b062-b8cd5ef26c30", + "rotation": 0, + "stroke_cap": "butt", + "stroke_width": 1, + "top": 320, + "type": "rectangle", + "width": 900, + "z_index": 0 + }, + "55067523-3d57-4636-91c7-3f1769f4747e": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, + "a": 1, + "b": 0, "g": 0, + "r": 0 + }, + "type": "solid" + } + ], + "height": 32.5, + "id": "55067523-3d57-4636-91c7-3f1769f4747e", + "left": 16.249008178710938, + "locked": false, + "name": "Vector", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 16.25, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + -0.8194059729576111, + 0.0004958955105394125 + ], + "tb": [ + -0.0004958956269547343, + -0.8194130659103394 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0004958953359164298, + 0.8194098472595215 + ], + "tb": [ + -0.8194130659103394, + 0.0004999637603759766 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + -0.27803999185562134, + 0.27739906311035156 + ], + "tb": [ + -0.000661100260913372, + -0.3927001953125 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0013224799185991287, + 0.8152008056640625 + ], + "tb": [ + -0.8151150345802307, + 0.001300811767578125 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.39177000522613525, + 0.0010986328125 + ], + "tb": [ + -0.2770500183105469, + 0.27700042724609375 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0002994537353515625, + 0.8190994262695312 + ], + "tb": [ + -0.8191013336181641, + 0.000301361083984375 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.8190994262695312, + -0.000301361083984375 + ], + "tb": [ + 0.000301361083984375, + 0.8191013336181641 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + -0.00029754638671875, + -0.8190810084342957 + ], + "tb": [ + 0.8190994262695312, + -0.0003306875005364418 + ] + }, + { + "a": 14, "b": 0, - "a": 1 + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 31.017200469970703, + 1.2348999689493212e-7 + ], + [ + 1.4827699661254883, + 1.2348999689493212e-7 + ], + [ + 2.776409928628709e-7, + 1.484760046005249 + ], + [ + 1.484760046005249, + 2.9675300121307373 + ], + [ + 27.442899703979492, + 2.9675300121307373 + ], + [ + 0.4400379955768585, + 29.971500396728516 + ], + [ + 0.006612420082092285, + 31.01849937438965 + ], + [ + 1.484760046005249, + 32.49209976196289 + ], + [ + 2.52947998046875, + 32.06100082397461 + ], + [ + 29.53350067138672, + 5.05580997467041 + ], + [ + 29.53350067138672, + 31.01740074157715 + ], + [ + 31.017200469970703, + 32.5 + ], + [ + 32.500999450683594, + 31.016199111938477 + ], + [ + 32.500999450683594, + 1.4826099872589111 + ], + [ + 31.017200469970703, + 1.2348999689493212e-7 + ] + ] + }, + "width": 32.50099182128906, + "z_index": 0 }, - "d77358f4-748d-49fe-ae50-911f357c4a62": { - "name": "Frame 947", - "type": "container", + "5786bd6e-498e-4090-b5b9-3d91ede365f6": { "active": true, + "height": 0, + "id": "5786bd6e-498e-4090-b5b9-3d91ede365f6", + "left": 0, "locked": false, + "name": "Vector 270", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, + "rotation": 0, "top": 150, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.5 + ], + [ + 1080.0, + 0.5 + ], + [ + 1080.0, + -0.5 + ], + [ + 0.0, + -0.5 + ], + [ + 0.0, + 0.5 + ] + ] + }, "width": 1080, - "height": 930, - "style": { - "overflow": "clip" + "z_index": 0 + }, + "5ac3de8f-c266-4d78-a1c4-02b413174ab6": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "corner_radius": 30, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "d77358f4-748d-49fe-ae50-911f357c4a62", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "39121f18-a69b-4d0c-8a45-39548fb7d43b": { - "name": "Frame 947", - "type": "container", - "active": true, + ], + "height": 1080, + "id": "5ac3de8f-c266-4d78-a1c4-02b413174ab6", + "layout": "flow", + "left": 619, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "demo", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 930, + "rotation": 0, "style": { "overflow": "clip" }, + "top": 34, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f": { + "active": true, "corner_radius": [ + 30, + 30, 0, - 0, - 400, - 400 + 0 ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "39121f18-a69b-4d0c-8a45-39548fb7d43b", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "e0e5300d-09e2-4afb-ad25-4e8b0b03624c": { - "name": "We are looking for a new contributor for our team", - "type": "text", - "active": true, + ], + "height": 150, + "id": "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 945", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "We are looking for\na new contributor for our team", - "left": 60, - "top": 125, - "right": 216, - "bottom": 675, - "width": 804, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 50, - "font_family": "Inter", - "font_weight": 300, - "id": "e0e5300d-09e2-4afb-ad25-4e8b0b03624c", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 30, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6": { - "name": "Frame 1018", + ], + "height": 1080, + "id": "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc", + "layout": "flow", + "left": -611, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "demo", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 632, "type": "container", + "width": 1080, + "z_index": 0 + }, + "60f4d6dd-6a18-47e4-8ec5-95445d429770": { "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" + } + ], + "height": 36, + "id": "60f4d6dd-6a18-47e4-8ec5-95445d429770", + "left": 32, "locked": false, + "name": "\blogo", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 60, - "top": 322, - "width": 270, - "height": 85, - "border": { - "border_width": 2, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - }, - "border_style": "solid" - }, - "style": {}, - "corner_radius": 999, - "padding": { - "padding_top": 10, - "padding_right": 25, - "padding_bottom": 10, - "padding_left": 25 + "rotation": 0, + "top": 32, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] }, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 20, - "cross_axis_gap": 20, - "id": "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6" + "width": 36.00001525878906, + "z_index": 0 }, - "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1": { - "name": "about", - "type": "text", + "6db11f69-c5e4-43dd-adfb-ce93b013095b": { "active": true, + "bottom": 40, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" + } + ], + "font_family": "Inter", + "font_size": 120, + "font_weight": 500, + "height": "auto", + "id": "6db11f69-c5e4-43dd-adfb-ce93b013095b", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "CANVAS", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "about ", - "left": 25, - "top": 10, - "width": "auto", - "height": "auto", + "right": 523, + "rotation": 0, "style": {}, + "text": "CANVAS", "text_align": "left", "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 50, - "font_family": "Inter", - "font_weight": 300, - "id": "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1", + "top": 734, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "755302fe-e073-4faa-881d-d561335f3068": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 100, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6": { - "name": "icons/unicons-arrow-up-right", - "type": "container", - "active": true, + ], + "height": 100, + "id": "755302fe-e073-4faa-881d-d561335f3068", + "layout": "flow", + "left": 40, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 946", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 180, - "top": 10, - "width": 65, - "height": 65, + "rotation": 0, "style": { "overflow": "clip" }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6" + "top": 25, + "type": "container", + "width": 100, + "z_index": 0 }, - "55067523-3d57-4636-91c7-3f1769f4747e": { - "name": "Vector", - "type": "svgpath", + "787f4515-a1cd-4cfc-990e-5199f7544975": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 16.249008178710938, - "top": 16.25, - "width": 32.50099182128906, - "height": 32.5, - "paths": [ - { - "d": "M31.0172 1.2349e-07L1.48277 1.2349e-07C0.663364 0.000496019 -0.000495618 0.665347 2.77641e-07 1.48476C0.000496173 2.30417 0.665347 2.96803 1.48476 2.96753L27.4429 2.96753L0.440038 29.9715C0.161998 30.2489 0.00595132 30.6258 0.00661242 31.0185C0.0079349 31.8337 0.669645 32.4934 1.48476 32.4921C1.87653 32.4932 2.25243 32.338 2.52948 32.061L29.5335 5.05581L29.5335 31.0174C29.5338 31.8365 30.1981 32.5003 31.0172 32.5C31.8363 32.4997 32.5013 31.8353 32.501 31.0162L32.501 1.48261C32.5007 0.663529 31.8363 -0.000330564 31.0172 1.2349e-07Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "55067523-3d57-4636-91c7-3f1769f4747e", "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "b8277fa8-b221-4b5c-b05b-df375de91af2": { - "name": "D2", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 60, + "font_weight": 400, + "height": "auto", + "id": "787f4515-a1cd-4cfc-990e-5199f7544975", + "left": 30, + "letter_spacing": 0, + "line_height": 1.2, "locked": false, + "name": "Get started!", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 606, - "top": 481, - "width": 347, - "height": 329, + "rotation": 0, "style": {}, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "b8277fa8-b221-4b5c-b05b-df375de91af2" + "text": "Get started!", + "text_align": "left", + "text_align_vertical": "top", + "top": 10, + "type": "text", + "width": "auto", + "z_index": 0 }, - "2a1ed781-06d1-4a4d-9908-5e807f3c2983": { - "name": "Vector", - "type": "svgpath", + "79e82c91-9ed1-4eb0-8c33-89fe98219b7c": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 112.32521057128906, - "top": 212.83712768554688, - "width": 122.60653686523438, - "height": 116.16287231445312, - "paths": [ - { - "d": "M75.8259 71.8005L122.607 71.8005L84.8222 44.3624L99.2162 0L61.4318 27.438L23.3903 0L37.7843 44.3624L0 71.8005L46.7806 71.8005L61.4318 116.163L75.8259 71.8005Z", - "fill_rule": "nonzero", - "fill": "fill" - } + "corner_radius": [ + 30, + 30, + 0, + 0 ], - "id": "2a1ed781-06d1-4a4d-9908-5e807f3c2983", + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "8927e413-8570-4259-891b-e36aa614a25d": { - "name": "Vector", - "type": "svgpath", - "active": true, + ], + "height": 150, + "id": "79e82c91-9ed1-4eb0-8c33-89fe98219b7c", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 945", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 224.65028381347656, - "top": 131.5487060546875, - "width": 122.34972381591797, - "height": 116.1629638671875, - "paths": [ - { - "d": "M75.569 71.8005L122.35 71.8005L84.5652 44.3625L98.9593 0L61.1749 27.4381L23.3905 0L37.7845 44.3625L0 71.8005L46.7808 71.8005L61.1749 116.163L75.569 71.8005Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "8927e413-8570-4259-891b-e36aa614a25d", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "79f25f6f-65bd-4dd8-8627-c4a5d773a218": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, - "b": 1.0, - "a": 1.0 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] + ], + "height": 38.8399543762207, + "id": "79f25f6f-65bd-4dd8-8627-c4a5d773a218", + "left": 30.4658203125, + "locked": false, + "name": "misc-22", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 83.214111328125, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 1.619999885559082, + 0.14000000059604645 + ], + "tb": [ + -0.9799995422363281, + -0.820000946521759 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 2.510000228881836, + 2.0799999237060547 + ], + "tb": [ + -2.789999008178711, + -1.739999771118164 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 2.940000534057617, + 1.8299999237060547 + ], + "tb": [ + -3.5400009155273438, + 0.8600006103515625 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 1.2899971008300781, + -0.3099994659423828 + ], + "tb": [ + -0.6199989318847656, + -1.7300100326538086 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.5699996948242188, + 1.5699996948242188 + ], + "tb": [ + 0.9799995422363281, + -0.7600002288818359 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + -5.810001373291016, + 4.510000228881836 + ], + "tb": [ + 1.3799991607666016, + -7.510000228881836 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.2800006866455078, + 1.5499992370605469 + ], + "tb": [ + -0.3099994659423828, + -1.5400009155273438 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.23000144958496094, + 1.1699981689453125 + ], + "tb": [ + 1.1900005340576172, + -0.470001220703125 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -1.260000228881836, + 0.5 + ], + "tb": [ + 0.5900001525878906, + 1.0399971008300781 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + -1.5500011444091797, + -2.720001220703125 + ], + "tb": [ + 2.780000686645508, + 0.9000015258789062 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + -3.880000114440918, + -1.2499980926513672 + ], + "tb": [ + 3.919999837875366, + 1.1299991607666016 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + -1.2300000190734863, + -0.35000038146972656 + ], + "tb": [ + 0.19000031054019928, + 1.489999771118164 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + -0.18999969959259033, + -1.4200000762939453 + ], + "tb": [ + -1.0099999904632568, + 0.6200008392333984 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 2.2899999618530273, + -1.4200000762939453 + ], + "tb": [ + -1.2599997520446777, + 2.3400001525878906 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 2.559999942779541, + -4.789999961853027 + ], + "tb": [ + -0.9700002670288086, + 5.269999980926514 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + 0.3399991989135742, + -1.840000033378601 + ], + "tb": [ + -1.9499998092651367, + 0.029999999329447746 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 17, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + -0.32000064849853516, + 0.8299999237060547 + ], + "tb": [ + 0.1400003433227539, + -0.5 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + -1.5599994659423828, + 5.610020160675049 + ], + "tb": [ + 4.069980144500732, + -4.439998626708984 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + -1.0300002098083496, + 1.1200008392333984 + ], + "tb": [ + -0.8399996757507324, + -0.23000144958496094 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 3.859990119934082, + 1.039999008178711 + ], + "tb": [ + -3.489999771118164, + -2.029998779296875 + ] + }, + { + "a": 22, + "b": 23, + "ta": [ + 1.010000228881836, + 0.5900001525878906 + ], + "tb": [ + -0.25, + 0.9900016784667969 + ] + }, + { + "a": 23, + "b": 24, + "ta": [ + 1.1999988555908203, + -4.899999618530273 + ], + "tb": [ + -3.440000534057617, + 3.609999656677246 + ] + }, + { + "a": 24, + "b": 25, + "ta": [ + 0.8500003814697266, + -0.8899993896484375 + ], + "tb": [ + 1.0999984741210938, + 0.2799997329711914 + ] + }, + { + "a": 25, + "b": 26, + "ta": [ + -4.940000534057617, + -1.25 + ], + "tb": [ + 3.9700002670288086, + 3.5399999618530273 + ] + }, + { + "a": 26, + "b": 27, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 27, + "b": 18, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 14.74779987335205, + 0.019989000633358955 + ], + [ + 18.34779930114746, + 1.7599799633026123 + ], + [ + 25.957799911499023, + 7.909999847412109 + ], + [ + 35.5078010559082, + 9.9399995803833 + ], + [ + 38.997798919677734, + 11.050000190734863 + ], + [ + 37.207801818847656, + 14.020000457763672 + ], + [ + 25.48780059814453, + 31.40999984741211 + ], + [ + 25.517799377441406, + 35.9900016784668 + ], + [ + 24.21780014038086, + 38.68000030517578 + ], + [ + 21.577800750732422, + 37.400001525878906 + ], + [ + 14.627799987792969, + 32.5099983215332 + ], + [ + 2.887809991836548, + 29.079999923706055 + ], + [ + 0.01781569980084896, + 26.979999542236328 + ], + [ + 2.207819938659668, + 24.549999237060547 + ], + [ + 7.307819843292236, + 18.68000030517578 + ], + [ + 11.89780044555664, + 3.379970073699951 + ], + [ + 14.777799606323242, + 0.0 + ], + [ + 14.74779987335205, + 0.019989000633358955 + ], + [ + 15.677800178527832, + 6.03000020980835 + ], + [ + 14.987799644470215, + 7.849979877471924 + ], + [ + 7.737820148468018, + 23.479999542236328 + ], + [ + 8.47780990600586, + 25.030000686645508 + ], + [ + 19.68779945373535, + 29.139999389648438 + ], + [ + 21.477800369262695, + 28.3799991607666 + ], + [ + 28.71780014038086, + 15.779999732971191 + ], + [ + 28.247800827026367, + 14.100000381469727 + ], + [ + 15.677800178527832, + 6.019989967346191 + ], + [ + 15.677800178527832, + 6.03000020980835 + ] + ] + }, + "width": 39.131309509277344, + "z_index": 0 }, - "14472868-d49c-4411-adc9-ab48beb4621c": { - "name": "Vector", - "type": "svgpath", + "7fa7152a-1aa6-432f-8a18-e06028407210": { "active": true, + "height": 0, + "id": "7fa7152a-1aa6-432f-8a18-e06028407210", + "left": 0, "locked": false, + "name": "Vector 270", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 181.72520446777344, - "top": 0, - "width": 122.60653686523438, - "height": 116.16287231445312, - "paths": [ - { - "d": "M75.8259 71.8005L122.607 71.8005L84.5651 44.3624L99.2162 0L61.1748 27.438L23.3903 0L37.7843 44.3624L0 71.8005L46.7806 71.8005L61.1748 116.163L75.8259 71.8005Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "14472868-d49c-4411-adc9-ab48beb4621c", + "rotation": 0, + "top": 150, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.5 + ], + [ + 1080.0, + 0.5 + ], + [ + 1080.0, + -0.5 + ], + [ + 0.0, + -0.5 + ], + [ + 0.0, + 0.5 + ] + ] + }, + "width": 1080, + "z_index": 0 + }, + "8099fa98-1f01-4e85-be29-1c4ac50516a5": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, - "b": 1.0, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "3ac33bc3-743e-4eef-8011-ce8b6a1b740a": { - "name": "Vector", - "type": "svgpath", - "active": true, + ], + "font_family": "Inter", + "font_size": 100, + "font_weight": 500, + "height": "auto", + "id": "8099fa98-1f01-4e85-be29-1c4ac50516a5", + "left": 90, + "letter_spacing": 0, + "line_height": 1, "locked": false, + "name": "new canvas", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 42.92522048950195, - "top": 0, - "width": 122.60653686523438, - "height": 116.16287231445312, - "paths": [ + "rotation": 0, + "style": {}, + "text": "new canvas", + "text_align": "left", + "text_align_vertical": "top", + "top": 180, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "84347d1c-ca26-4d6d-b3d2-be770742e660": { + "active": true, + "corner_radius": 999, + "cross_axis_alignment": "start", + "cross_axis_gap": 10, + "direction": "horizontal", + "expanded": false, + "fill_paints": [ { - "d": "M75.8259 71.8005L122.607 71.8005L84.8222 44.3624L99.2162 0L61.4318 27.438L23.3903 0L38.0414 44.3624L0 71.8005L46.7806 71.8005L61.4318 116.163L75.8259 71.8005Z", - "fill_rule": "nonzero", - "fill": "fill" + "active": true, + "color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } ], - "id": "3ac33bc3-743e-4eef-8011-ce8b6a1b740a", + "height": 93, + "id": "84347d1c-ca26-4d6d-b3d2-be770742e660", + "layout": "flow", + "left": 90, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 10, + "name": "Frame 1021", + "opacity": 1, + "padding_bottom": 10, + "padding_left": 30, + "padding_right": 30, + "padding_top": 10, + "position": "absolute", + "rotation": 0, + "style": {}, + "top": 360, + "type": "container", + "width": 400, + "z_index": 0 + }, + "8927e413-8570-4259-891b-e36aa614a25d": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "1044027a-8009-437b-8a4b-1c3ec006f8f9": { - "name": "Vector", - "type": "svgpath", - "active": true, + ], + "height": 116.1629638671875, + "id": "8927e413-8570-4259-891b-e36aa614a25d", + "left": 224.65028381347656, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 0, + "rotation": 0, "top": 131.5487060546875, - "width": 122.60669708251953, - "height": 116.1629638671875, - "paths": [ - { - "d": "M75.8259 71.8005L122.607 71.8005L84.8222 44.3625L99.2162 0L61.4318 27.4381L23.6474 0L38.0415 44.3625L0 71.8005L47.0377 71.8005L61.4318 116.163L75.8259 71.8005Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "1044027a-8009-437b-8a4b-1c3ec006f8f9", + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 75.56900024414062, + 71.80049896240234 + ], + [ + 122.3499984741211, + 71.80049896240234 + ], + [ + 84.56520080566406, + 44.36249923706055 + ], + [ + 98.95929718017578, + 0.0 + ], + [ + 61.17490005493164, + 27.438100814819336 + ], + [ + 23.390499114990234, + 0.0 + ], + [ + 37.78450012207031, + 44.36249923706055 + ], + [ + 0.0, + 71.80049896240234 + ], + [ + 46.780799865722656, + 71.80049896240234 + ], + [ + 61.17490005493164, + 116.16300201416016 + ], + [ + 75.56900024414062, + 71.80049896240234 + ] + ] + }, + "width": 122.34972381591795, + "z_index": 0 + }, + "8bd6d1b1-51bd-406a-9fa5-42956191dd2c": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] + ], + "height": 36, + "id": "8bd6d1b1-51bd-406a-9fa5-42956191dd2c", + "left": 32, + "locked": false, + "name": "\blogo", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 32, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] + }, + "width": 36.00001525878906, + "z_index": 0 }, - "aad05458-6b10-47b8-ab6b-f859b3b5e299": { - "name": "Join our team!", - "type": "text", + "8d653755-953e-4a0d-9f06-c935dbdc659b": { "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, + "height": 435, + "id": "8d653755-953e-4a0d-9f06-c935dbdc659b", + "layout": "flow", + "left": 60, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 1022", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "Join our team!", - "left": 60, - "top": 60, - "right": 216, - "bottom": 805, - "width": 804, - "height": "auto", + "rotation": 0, "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 50, - "font_family": "Inter", - "font_weight": 500, - "id": "aad05458-6b10-47b8-ab6b-f859b3b5e299", + "top": 60, + "type": "container", + "width": 629, + "z_index": 0 + }, + "94c3ba01-8de9-4a90-a0a8-05972ac52f44": { + "active": true, + "bottom": 54, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5": { - "name": "demo", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 32, + "font_weight": 500, + "height": "auto", + "id": "94c3ba01-8de9-4a90-a0a8-05972ac52f44", + "left": 170, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Canary", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 619, - "top": 1314, - "width": 1080, - "height": 1080, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" - }, - "corner_radius": 30, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5", + "rotation": 0, + "style": {}, + "text": "Canary", + "text_align": "left", + "text_align_vertical": "top", + "top": 54, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "3860c5b4-1987-436f-8113-63a1d3999d2e": { - "name": "Frame 945", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 50, + "font_weight": 300, + "height": "auto", + "id": "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1", + "left": 25, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "about", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, - "top": 0, - "width": 1080, - "height": 150, - "style": { - "overflow": "clip" - }, + "rotation": 0, + "style": {}, + "text": "about ", + "text_align": "left", + "text_align_vertical": "top", + "top": 10, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "96c40aae-f303-4c9b-be20-39d6a5d9e9ef": { + "active": true, "corner_radius": [ 30, 30, 0, 0 ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "3860c5b4-1987-436f-8113-63a1d3999d2e", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "135994ec-41b4-4d58-bf51-9dd6fd577e6c": { - "name": "Vector 270", - "type": "svgpath", - "active": true, + ], + "height": 150, + "id": "96c40aae-f303-4c9b-be20-39d6a5d9e9ef", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 945", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, - "top": 150, + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", "width": 1080, - "height": 0, - "paths": [ + "z_index": 0 + }, + "97dafdc5-8004-4d73-890c-3c9ee68c688e": { + "active": true, + "bottom": 60, + "fill_paints": [ { - "d": "M0 0.5L1080 0.5L1080 -0.5L0 -0.5L0 0.5Z", - "fill_rule": "nonzero", - "fill": "stroke" + "active": true, + "color": { + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } ], - "id": "135994ec-41b4-4d58-bf51-9dd6fd577e6c" - }, - "c8655a4f-837f-4867-b7ee-81c9025fc188": { - "name": "Frame 946", - "type": "container", - "active": true, + "font_family": "Inter", + "font_size": 50, + "font_weight": 400, + "height": "auto", + "id": "97dafdc5-8004-4d73-890c-3c9ee68c688e", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 40, - "top": 25, - "width": 100, - "height": 100, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" - }, - "corner_radius": 100, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "c8655a4f-837f-4867-b7ee-81c9025fc188", + "name": "With Canvas, you’re not just creating visuals—you’re building experiences.", + "opacity": 1, + "position": "absolute", + "right": 142, + "rotation": 0, + "style": {}, + "text": "With Canvas, \nyou’re not just creating visuals—you’re building experiences.", + "text_align": "left", + "text_align_vertical": "top", + "top": 825, + "type": "text", + "width": 878, + "z_index": 0 + }, + "9cae0b62-3130-4ecb-9aaf-302f82669aa3": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "e8655ffa-b4dc-4939-864d-77b9208e1f2e": { - "name": "\blogo", - "type": "svgpath", - "active": true, + ], + "font_family": "Inter", + "font_size": 120, + "font_weight": 300, + "height": "auto", + "id": "9cae0b62-3130-4ecb-9aaf-302f82669aa3", + "left": 0, + "letter_spacing": 0, + "line_height": 1.2, "locked": false, + "name": "START", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 32, - "top": 32, - "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" - }, - { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "e8655ffa-b4dc-4939-864d-77b9208e1f2e", + "rotation": 0, + "style": {}, + "text": "START ", + "text_align": "left", + "text_align_vertical": "top", + "top": 145, + "type": "text", + "width": 629, + "z_index": 0 + }, + "9f5905c5-5e47-4d14-898f-18d4bb98025e": { + "active": true, + "bottom": 740, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "0879aa63-70ad-4c47-ae56-b99462ce540c": { - "name": "Canary", - "type": "text", - "active": true, + ], + "font_family": "Inter", + "font_size": 50, + "font_weight": 400, + "height": "auto", + "id": "9f5905c5-5e47-4d14-898f-18d4bb98025e", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Draw anything, anywhere, anytime.", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "Canary", - "left": 170, - "top": 54, - "bottom": 54, - "width": "auto", - "height": "auto", + "right": 560, + "rotation": 0, "style": {}, + "text": "Draw anything, \nanywhere, anytime.", "text_align": "left", "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 32, - "font_family": "Inter", - "font_weight": 500, - "id": "0879aa63-70ad-4c47-ae56-b99462ce540c", + "top": 60, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "a3b4b1cd-ce66-4e36-abfa-a162d5676199": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "4b2cb61d-1925-4515-ad23-e15f08cc6626": { - "name": "Frame 947", - "type": "container", - "active": true, + ], + "height": 200, + "id": "a3b4b1cd-ce66-4e36-abfa-a162d5676199", + "left": 820, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 930, - "style": { - "overflow": "clip" + "rotation": 0, + "top": 60, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 17, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 22, + "b": 18, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.0 + ], + [ + 66.66670227050781, + 0.0 + ], + [ + 66.66670227050781, + 66.66670227050781 + ], + [ + 0.0, + 66.66670227050781 + ], + [ + 0.0, + 0.0 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 66.66670227050781, + 66.66670227050781 + ], + [ + 66.66670227050781, + 133.33299255371094 + ], + [ + 0.0, + 133.33299255371094 + ], + [ + 0.0, + 200.0 + ], + [ + 66.66670227050781, + 200.0 + ], + [ + 66.66670227050781, + 133.33299255371094 + ], + [ + 133.33299255371094, + 133.33299255371094 + ], + [ + 133.33299255371094, + 200.0 + ], + [ + 200.0, + 200.0 + ], + [ + 200.0, + 133.33299255371094 + ], + [ + 133.33299255371094, + 133.33299255371094 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 200.0, + 66.66670227050781 + ], + [ + 200.0, + 0.0 + ], + [ + 133.33299255371094, + 0.0 + ], + [ + 133.33299255371094, + 66.66670227050781 + ] + ] }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "4b2cb61d-1925-4515-ad23-e15f08cc6626", + "width": 200, + "z_index": 0 + }, + "aad05458-6b10-47b8-ab6b-f859b3b5e299": { + "active": true, + "bottom": 805, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77": { - "name": "Frame 947", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 50, + "font_weight": 500, + "height": "auto", + "id": "aad05458-6b10-47b8-ab6b-f859b3b5e299", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Join our team!", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, - "top": 0, - "width": 1080, - "height": 930, - "style": { - "overflow": "clip" - }, - "corner_radius": 200, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77", + "right": 216, + "rotation": 0, + "style": {}, + "text": "Join our team!", + "text_align": "left", + "text_align_vertical": "top", + "top": 60, + "type": "text", + "width": 804, + "z_index": 0 + }, + "ae565e52-976f-4909-b062-b8cd5ef26c30": { + "active": true, + "bottom": 54, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "8099fa98-1f01-4e85-be29-1c4ac50516a5": { - "name": "new canvas", - "type": "text", - "active": true, + ], + "font_family": "Inter", + "font_size": 32, + "font_weight": 500, + "height": "auto", + "id": "ae565e52-976f-4909-b062-b8cd5ef26c30", + "left": 170, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Canary", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "new canvas", - "left": 90, - "top": 180, - "width": "auto", - "height": "auto", + "rotation": 0, "style": {}, + "text": "Canary", "text_align": "left", "text_align_vertical": "top", - "line_height": 1, - "letter_spacing": 0, - "font_size": 100, - "font_family": "Inter", - "font_weight": 500, - "id": "8099fa98-1f01-4e85-be29-1c4ac50516a5", + "top": 54, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "84347d1c-ca26-4d6d-b3d2-be770742e660": { - "name": "Frame 1021", - "type": "container", - "active": true, + ], + "height": 331, + "id": "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96", + "left": 0, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 90, - "top": 360, - "width": 400, - "height": 93, - "style": {}, - "corner_radius": 999, - "padding": { - "padding_top": 10, - "padding_right": 30, - "padding_bottom": 10, - "padding_left": 30 + "rotation": 0, + "top": 0, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + -0.01800537109375, + -45.68659973144531 + ], + "tb": [ + 45.69099426269531, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + -45.701499938964844, + 0.0 + ], + "tb": [ + -1.997680101339938e-6, + -45.70100402832031 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 45.70098876953125 + ], + "tb": [ + -45.70100402832031, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + 45.68598937988281, + -0.01800537109375 + ], + "tb": [ + 0.0, + 45.69099426269531 + ] + }, + { + "a": 16, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 331.0, + 82.75 + ], + [ + 331.0, + 7.2342400017078035e-6 + ], + [ + 165.5, + 0.0 + ], + [ + 165.5, + 82.71739959716797 + ], + [ + 82.75, + 7.2342400017078035e-6 + ], + [ + 3.6171200008539017e-6, + 7.2342400017078035e-6 + ], + [ + 3.6171200008539017e-6, + 165.5 + ], + [ + 82.75, + 165.5 + ], + [ + 8.078750206785487e-14, + 248.25 + ], + [ + 3.6171200008539017e-6, + 331.0 + ], + [ + 165.5, + 331.0 + ], + [ + 165.5, + 248.25 + ], + [ + 248.25, + 331.0 + ], + [ + 331.0, + 331.0 + ], + [ + 331.0, + 165.5 + ], + [ + 248.2830047607422, + 165.5 + ], + [ + 331.0, + 82.75 + ] + ] }, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "width": 331, + "z_index": 0 + }, + "b5131656-c058-447c-a93d-52d91ea30f6f": { + "active": true, + "corner_radius": [ + 0, + 0, + 30, + 30 + ], "cross_axis_alignment": "start", - "main_axis_gap": 10, - "cross_axis_gap": 10, - "id": "84347d1c-ca26-4d6d-b3d2-be770742e660", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 1.0, + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] + ], + "height": 930, + "id": "b5131656-c058-447c-a93d-52d91ea30f6f", + "layout": "flow", + "left": 0, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 150, + "type": "container", + "width": 1080, + "z_index": 0 }, - "787f4515-a1cd-4cfc-990e-5199f7544975": { - "name": "Get started!", - "type": "text", + "b8277fa8-b221-4b5c-b05b-df375de91af2": { "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, + "height": 329, + "id": "b8277fa8-b221-4b5c-b05b-df375de91af2", + "layout": "flow", + "left": 606, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "D2", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "Get started!", - "left": 30, - "top": 10, - "width": "auto", - "height": "auto", + "rotation": 0, "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 60, - "font_family": "Inter", - "font_weight": 400, - "id": "787f4515-a1cd-4cfc-990e-5199f7544975", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 - } - } - ] + "top": 481, + "type": "container", + "width": 347, + "z_index": 0 }, "c1a07e06-f9e9-4023-b072-674edb9c680e": { - "name": "Frame 1020", - "type": "container", "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 20, + "direction": "horizontal", "expanded": false, - "position": "absolute", - "left": 708, - "top": 802, - "width": 282, "height": 48, - "style": {}, - "corner_radius": 0, - "padding": 0, + "id": "c1a07e06-f9e9-4023-b072-674edb9c680e", "layout": "flow", - "direction": "horizontal", + "left": 708, + "locked": false, "main_axis_alignment": "start", - "cross_axis_alignment": "start", "main_axis_gap": 20, - "cross_axis_gap": 20, - "id": "c1a07e06-f9e9-4023-b072-674edb9c680e" - }, - "e430dc52-d4a4-4d99-95b5-baf1f09e68f6": { - "name": "Powered by", - "type": "text", - "active": true, - "locked": false, + "name": "Frame 1020", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "Powered by ", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", + "rotation": 0, "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 40, - "font_family": "Inter", - "font_weight": 500, - "id": "e430dc52-d4a4-4d99-95b5-baf1f09e68f6", + "top": 802, + "type": "container", + "width": 282, + "z_index": 0 + }, + "c83c9be1-62a3-40da-8037-a7ae14cc093e": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "470d42db-a5d6-4b45-8a0b-abcee1ad08d8": { - "name": "\blogo", - "type": "svgpath", - "active": true, + ], + "height": 40.73863983154297, + "id": "c83c9be1-62a3-40da-8037-a7ae14cc093e", + "left": 124.7919921875, "locked": false, + "name": "misc-24", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 246, - "top": 6, - "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" + "rotation": 0, + "top": 92.885498046875, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + -1.2000007629394531, + -0.060001373291015625 + ], + "tb": [ + 0.75, + 0.7000007629394531 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + -0.5300006866455078, + -0.4900016784667969 + ], + "tb": [ + 0.39999961853027344, + 0.5900001525878906 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + -2.9200000762939453, + -4.369998931884766 + ], + "tb": [ + 5.789999961853027, + -1.4500007629394531 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + -0.5800004005432129, + 0.14999771118164062 + ], + "tb": [ + 0.6200001239776611, + 0.12000083923339844 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + -1.6200001239776611, + -0.3299999237060547 + ], + "tb": [ + 0.5199999809265137, + 1.9200000762939453 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + -0.5199999809265137, + -1.8899993896484375 + ], + "tb": [ + -1.3300039768218994, + 1.039999008178711 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 3.7299997806549072, + -2.910001754760742 + ], + "tb": [ + -2.839980125427246, + 3.840001106262207 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 2.7799997329711914, + -3.75 + ], + "tb": [ + -1.3500003814697266, + 4.510000228881836 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.39999961853027344, + -1.3300000429153442 + ], + "tb": [ + -1.5999984741210938, + 0.3000001013278961 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 1.6700000762939453, + -0.30999988317489624 + ], + "tb": [ + -0.8099994659423828, + -1.1200039386749268 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 4.039999008178711, + 5.550000190734863 + ], + "tb": [ + -7.010002136230469, + -0.5599994659423828 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 1.3299980163574219, + 0.1100006103515625 + ], + "tb": [ + -0.44000244140625, + -1.4200000762939453 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.470001220703125, + 1.5099992752075195 + ], + "tb": [ + 1.2099990844726562, + -0.8500003814697266 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + -2.6800003051757812, + 1.8699989318847656 + ], + "tb": [ + 2.9300003051757812, + -1.3299999237060547 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + -4.340000152587891, + 1.9599990844726562 + ], + "tb": [ + 0.9699993133544922, + -4.239999771118164 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + -0.43000030517578125, + 1.8600006103515625 + ], + "tb": [ + 0.5100002288818359, + -1.8300018310546875 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + -0.4699993133544922, + 1.7199974060058594 + ], + "tb": [ + 1.779998779296875, + -0.01000213623046875 + ] + }, + { + "a": 17, + "b": 18, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 18, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + -4.480001449584961, + -2.3000011444091797 + ], + "tb": [ + 3.2900009155273438, + 3.3399696350097656 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + -1.0699996948242188, + -1.0799999237060547 + ], + "tb": [ + 0.3099994659423828, + -0.6999998092651367 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + -1.260000228881836, + 2.8199901580810547 + ], + "tb": [ + 1.8400001525878906, + -2.4800004959106445 + ] + }, + { + "a": 22, + "b": 23, + "ta": [ + -1.9200010299682617, + 2.5799999237060547 + ], + "tb": [ + 2.0099992752075195, + -2.5699996948242188 + ] + }, + { + "a": 23, + "b": 24, + "ta": [ + 4.369999885559082, + 1.4400005340576172 + ], + "tb": [ + -3.8899993896484375, + -2.5800018310546875 + ] + }, + { + "a": 24, + "b": 25, + "ta": [ + 1.0600013732910156, + -8.55000114440918 + ], + "tb": [ + -7.979999542236328, + 2.8400001525878906 + ] + }, + { + "a": 25, + "b": 26, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 26, + "b": 19, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 22.361600875854492, + 40.728599548339844 + ], + [ + 19.5216007232666, + 39.53860092163086 + ], + [ + 18.061599731445312, + 37.9286003112793 + ], + [ + 5.831600189208984, + 31.94860076904297 + ], + [ + 3.941620111465454, + 31.8085994720459 + ], + [ + 0.13162200152873993, + 29.218599319458008 + ], + [ + 2.0416300296783447, + 25.03860092163086 + ], + [ + 12.161600112915039, + 15.198599815368652 + ], + [ + 18.68160057067871, + 3.0086300373077393 + ], + [ + 21.13159942626953, + 0.04863790050148964 + ], + [ + 24.34160041809082, + 2.0886199474334717 + ], + [ + 40.62160110473633, + 11.73859977722168 + ], + [ + 43.601600646972656, + 13.718600273132324 + ], + [ + 42.20159912109375, + 17.25860023498535 + ], + [ + 34.06159973144531, + 22.688600540161133 + ], + [ + 26.941600799560547, + 32.318599700927734 + ], + [ + 25.711599349975586, + 37.89860153198242 + ], + [ + 22.34160041809082, + 40.73860168457031 + ], + [ + 22.361600875854492, + 40.728599548339844 + ], + [ + 34.96160125732422, + 16.28860092163086 + ], + [ + 23.151599884033203, + 8.478630065917969 + ], + [ + 21.481599807739258, + 9.178609848022461 + ], + [ + 16.93160057067871, + 17.19860076904297 + ], + [ + 10.961600303649902, + 24.848600387573242 + ], + [ + 21.221599578857422, + 33.05860137939453 + ], + [ + 34.97159957885742, + 16.298599243164062 + ], + [ + 34.96160125732422, + 16.28860092163086 + ] + ] + }, + "width": 43.75392532348633, + "z_index": 0 + }, + "c8655a4f-837f-4867-b7ee-81c9025fc188": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 }, - { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "470d42db-a5d6-4b45-8a0b-abcee1ad08d8", + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 100, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "2f472276-c737-4757-bff1-6a22539a2cfa": { - "name": "Meet your", - "type": "text", - "active": true, + ], + "height": 100, + "id": "c8655a4f-837f-4867-b7ee-81c9025fc188", + "layout": "flow", + "left": 40, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 946", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "Meet your", - "left": 90, - "top": 80, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1, - "letter_spacing": 0, - "font_size": 100, - "font_family": "Inter", - "font_weight": 200, - "id": "2f472276-c737-4757-bff1-6a22539a2cfa", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 25, + "type": "container", + "width": 100, + "z_index": 0 + }, + "cc64cd72-f5aa-489a-8570-8cdc4b20daca": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "540840f9-eca5-4975-8f05-3bcb7ff27f8c": { - "name": "Rectangle 2", - "type": "rectangle", - "active": true, + ], + "height": 222.22000122070312, + "id": "cc64cd72-f5aa-489a-8570-8cdc4b20daca", + "left": 37.93999481201172, "locked": false, + "name": "circle-02", "opacity": 1, - "z_index": 0, - "rotation": 0, - "width": 900, - "height": 3, "position": "absolute", - "top": 320, - "left": 90, - "corner_radius": 0, - "stroke_width": 1, - "stroke_cap": "butt", - "effects": [], - "id": "540840f9-eca5-4975-8f05-3bcb7ff27f8c", + "rotation": 0, + "top": 159.8900146484375, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 9.89501953125, + 2.4149932861328125 + ], + "tb": [ + -8.490020751953125, + -0.7830047607421875 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 18.03497314453125, + 1.6750030517578125 + ], + "tb": [ + -18.0780029296875, + -1.2610015869140625 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 2.06298828125, + 0.152008056640625 + ], + "tb": [ + 0.175018310546875, + -3.045013427734375 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + -0.15399169921875, + 2.391998291015625 + ], + "tb": [ + 1.886993408203125, + -0.06500244140625 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + -39.821014404296875, + 1.1529998779296875 + ], + "tb": [ + 39.79901123046875, + 2.326995849609375 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + -13.9320068359375, + -0.8260040283203125 + ], + "tb": [ + 13.557998657226562, + -2.0219879150390625 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -30.124008178710938, + 4.50201416015625 + ], + "tb": [ + 30.4530029296875, + -1.6100006103515625 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + -22.313003540039062, + 1.1739959716796875 + ], + "tb": [ + 22.312896728515625, + 0.2180023193359375 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -3.5763015747070312, + -0.042999267578125 + ], + "tb": [ + 3.554302215576172, + 0.3909912109375 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + -2.4133987426757812, + -0.2610015869140625 + ], + "tb": [ + 0.022001266479492188, + 2.89300537109375 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + -0.021898269653320312, + -3.47900390625 + ], + "tb": [ + -2.4571990966796875, + 0.3910064697265625 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 1.55780029296875, + -0.2389984130859375 + ], + "tb": [ + -1.5796012878417969, + -0.1090087890625 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 49.91349792480469, + 3.261993408203125 + ], + "tb": [ + -49.36500549316406, + 7.4380035400390625 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + -22.4010009765625, + -2.2830047607421875 + ], + "tb": [ + 22.093002319335938, + 4.240997314453125 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + -32.054595947265625, + -6.154998779296875 + ], + "tb": [ + 27.62249755859375, + 18.1820068359375 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + -10.772500991821289, + -7.089996337890625 + ], + "tb": [ + 5.7701802253723145, + 11.699996948242188 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + -9.916890144348145, + -20.11699676513672 + ], + "tb": [ + -17.771448135375977, + 19.486305236816406 + ] + }, + { + "a": 17, + "b": 18, + "ta": [ + 17.9468994140625, + -19.68199920654297 + ], + "tb": [ + -24.309497833251953, + 9.982402801513672 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + 38.614402770996094, + -15.854297637939453 + ], + "tb": [ + -41.4010009765625, + 4.50184965133667 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + 27.184005737304688, + -2.9577388763427734 + ], + "tb": [ + -27.29400634765625, + -1.000411033630371 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + 41.927001953125, + 1.5658620595932007 + ], + "tb": [ + -39.733001708984375, + -14.505970001220703 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 14.480010986328125, + 5.284799575805664 + ], + "tb": [ + -11.49700927734375, + -10.460800170898438 + ] + }, + { + "a": 22, + "b": 23, + "ta": [ + 21.74298095703125, + 19.790699005126953 + ], + "tb": [ + 17.134979248046875, + -23.835594177246094 + ] + }, + { + "a": 23, + "b": 24, + "ta": [ + -11.08001708984375, + 15.420005798339844 + ], + "tb": [ + 16.10400390625, + -9.722000122070312 + ] + }, + { + "a": 24, + "b": 25, + "ta": [ + -30.891998291015625, + 18.63800048828125 + ], + "tb": [ + 34.44598388671875, + -10.156005859375 + ] + }, + { + "a": 25, + "b": 26, + "ta": [ + -9.917022705078125, + 2.9149932861328125 + ], + "tb": [ + 11.62799072265625, + -3.2400054931640625 + ] + }, + { + "a": 26, + "b": 27, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 27, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 28, + "b": 29, + "ta": [ + -8.5780029296875, + 0.13050079345703125 + ], + "tb": [ + 8.555984497070312, + -0.3045005798339844 + ] + }, + { + "a": 29, + "b": 30, + "ta": [ + -24.529006958007812, + 0.8480997085571289 + ], + "tb": [ + 24.133987426757812, + -4.175600051879883 + ] + }, + { + "a": 30, + "b": 31, + "ta": [ + -39.86500549316406, + 6.894201278686523 + ], + "tb": [ + 35.564701080322266, + -19.8125 + ] + }, + { + "a": 31, + "b": 32, + "ta": [ + -18.254100799560547, + 10.15639877319336 + ], + "tb": [ + 9.653600692749023, + -19.31220245361328 + ] + }, + { + "a": 32, + "b": 33, + "ta": [ + -6.691699981689453, + 13.397193908691406 + ], + "tb": [ + -8.995399475097656, + -12.114006042480469 + ] + }, + { + "a": 33, + "b": 34, + "ta": [ + 6.406499862670898, + 8.633987426757812 + ], + "tb": [ + -9.324501037597656, + -5.0670013427734375 + ] + }, + { + "a": 34, + "b": 35, + "ta": [ + 30.013900756835938, + 16.311004638671875 + ], + "tb": [ + -33.48100280761719, + -4.9369964599609375 + ] + }, + { + "a": 35, + "b": 36, + "ta": [ + 25.625991821289062, + 3.761993408203125 + ], + "tb": [ + -25.845001220703125, + -1.760986328125 + ] + }, + { + "a": 36, + "b": 37, + "ta": [ + 15.686996459960938, + 1.0880126953125 + ], + "tb": [ + -15.379989624023438, + 5.26300048828125 + ] + }, + { + "a": 37, + "b": 38, + "ta": [ + 5.615997314453125, + -1.91400146484375 + ], + "tb": [ + -5.7919921875, + 1.501007080078125 + ] + }, + { + "a": 38, + "b": 39, + "ta": [ + 37.82501220703125, + -9.894989013671875 + ], + "tb": [ + -34.774993896484375, + 18.180999755859375 + ] + }, + { + "a": 39, + "b": 40, + "ta": [ + 19.876983642578125, + -10.39599609375 + ], + "tb": [ + -13.69000244140625, + 18.11699676513672 + ] + }, + { + "a": 40, + "b": 41, + "ta": [ + 15.68701171875, + -20.769004821777344 + ], + "tb": [ + 20.623016357421875, + 16.09360122680664 + ] + }, + { + "a": 41, + "b": 42, + "ta": [ + -12.24298095703125, + -9.547401428222656 + ], + "tb": [ + 14.677978515625, + 4.71929931640625 + ] + }, + { + "a": 42, + "b": 43, + "ta": [ + -39.295013427734375, + -12.635700225830078 + ], + "tb": [ + 40.94000244140625, + 0.8700008392333984 + ] + }, + { + "a": 43, + "b": 44, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 44, + "b": 28, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 282.0199890136719, + 196.56500244140625 + ], + [ + 309.02801513671875, + 198.8489990234375 + ], + [ + 363.24200439453125, + 202.63299560546875 + ], + [ + 368.1789855957031, + 205.41700744628906 + ], + [ + 363.2860107421875, + 207.65699768066406 + ], + [ + 243.84500122070312, + 208.07000732421875 + ], + [ + 202.94900512695312, + 212.13699340820312 + ], + [ + 112.09500122070312, + 221.33700561523438 + ], + [ + 45.178001403808594, + 222.03199768066406 + ], + [ + 34.49319839477539, + 221.14100646972656 + ], + [ + 29.139799118041992, + 217.46499633789062 + ], + [ + 34.975799560546875, + 213.7899932861328 + ], + [ + 39.73680114746094, + 213.72500610351562 + ], + [ + 188.5780029296875, + 206.00399780273438 + ], + [ + 121.68299865722656, + 197.24000549316406 + ], + [ + 30.829200744628906, + 164.20399475097656 + ], + [ + 5.115520000457764, + 136.71499633789062 + ], + [ + 17.643299102783203, + 74.58049774169922 + ], + [ + 82.60759735107422, + 32.389198303222656 + ], + [ + 203.05799865722656, + 3.5948100090026855 + ], + [ + 284.7850036621094, + 0.3325980007648468 + ], + [ + 407.9339904785156, + 21.232500076293945 + ], + [ + 447.7770080566406, + 43.52429962158203 + ], + [ + 454.864013671875, + 110.76899719238281 + ], + [ + 412.6730041503906, + 147.0019989013672 + ], + [ + 313.614013671875, + 187.7790069580078 + ], + [ + 282.08599853515625, + 196.56500244140625 + ], + [ + 282.0199890136719, + 196.56500244140625 + ], + [ + 275.02099609375, + 12.293999671936035 + ], + [ + 249.3520050048828, + 13.25100040435791 + ], + [ + 176.3350067138672, + 20.840999603271484 + ], + [ + 62.13759994506836, + 57.986698150634766 + ], + [ + 17.292200088500977, + 99.32980346679688 + ], + [ + 20.890399932861328, + 137.82400512695312 + ], + [ + 45.178001403808594, + 157.63600158691406 + ], + [ + 141.4510040283203, + 186.2570037841797 + ], + [ + 218.72300720214844, + 193.99899291992188 + ], + [ + 265.4339904785156, + 191.4550018310547 + ], + [ + 282.80999755859375, + 187.10499572753906 + ], + [ + 392.6860046386719, + 147.5019989013672 + ], + [ + 444.81500244140625, + 106.7020034790039 + ], + [ + 436.9169921875, + 49.15700149536133 + ], + [ + 395.9330139160156, + 28.90959930419922 + ], + [ + 275.06500244140625, + 12.337499618530273 + ], + [ + 275.02099609375, + 12.293999671936035 + ] + ] + }, + "width": 466.1200256347656, + "z_index": 0 + }, + "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "34c46b34-5b54-4a27-be7d-a55950a3398e": { - "name": "demo", - "type": "container", - "active": true, + ], + "height": 117.1951675415039, + "id": "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9", + "left": 609.6328735351562, "locked": false, + "name": "arrow-27", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 619, - "top": -1246, - "width": 1080, - "height": 1080, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" + "rotation": 0, + "top": 673.424072265625, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 1.389699935913086, + -6.838798522949219 + ], + "tb": [ + -1.0866012573242188, + 6.3535003662109375 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.5939998626708984, + -3.5412979125976562 + ], + "tb": [ + -0.15439987182617188, + 3.6470947265625 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.10289955139160156, + -2.4315032958984375 + ], + "tb": [ + 3.1198997497558594, + 0.295196533203125 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + -3.3108997344970703, + -0.31330108642578125 + ], + "tb": [ + 0.5380001068115234, + -2.6150970458984375 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + -0.9880599975585938, + 4.981597900390625 + ], + "tb": [ + 0.9880900382995605, + -4.981498718261719 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + -1.4957900047302246, + 7.2783966064453125 + ], + "tb": [ + 3.3983802795410156, + -6.680999755859375 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -2.808760166168213, + 5.547996520996094 + ], + "tb": [ + -5.963769912719727, + 1.2339935302734375 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 11.927579879760742, + -2.4690017700195312 + ], + "tb": [ + -11.913999557495117, + 1.9890060424804688 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 1.6630020141601562, + -0.2599945068359375 + ], + "tb": [ + 0.09420013427734375, + 2.3860015869140625 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + -0.10770034790039062, + -1.904998779296875 + ], + "tb": [ + 1.4931983947753906, + 0.17299652099609375 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + -6.285301208496094, + -0.7880020141601562 + ], + "tb": [ + 6.262599945068359, + 0.6890029907226562 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + -1.0475006103515625, + -0.13199615478515625 + ], + "tb": [ + 0.5336990356445312, + 1.141998291015625 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + -0.6944999694824219, + -1.4789962768554688 + ], + "tb": [ + -0.8837013244628906, + 0.8479995727539062 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 17.287099838256836, + -16.929901123046875 + ], + "tb": [ + -19.50060272216797, + 14.53640365600586 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 12.518295288085938, + -9.350997924804688 + ], + "tb": [ + -15.550003051757812, + 3.4108009338378906 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + 5.378997802734375, + -1.1613998413085938 + ], + "tb": [ + -5.3459930419921875, + -1.2124996185302734 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + 1.72900390625, + 0.3885021209716797 + ], + "tb": [ + -0.600006103515625, + -1.7912979125976562 + ] + }, + { + "a": 17, + "b": 18, + "ta": [ + 0.6689910888671875, + 2.086902618408203 + ], + "tb": [ + 1.26800537109375, + -1.1648979187011719 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + -12.399993896484375, + 11.4822998046875 + ], + "tb": [ + 4.747993469238281, + -16.47829818725586 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + -1.875, + 6.5359039306640625 + ], + "tb": [ + -2.259002685546875, + -6.637901306152344 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + 2.813995361328125, + 8.232200622558594 + ], + "tb": [ + -8.508995056152344, + 1.9900054931640625 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 8.509002685546875, + -1.9889984130859375 + ], + "tb": [ + -5.3199920654296875, + 6.627799987792969 + ] + }, + { + "a": 22, + "b": 23, + "ta": [ + 9.774993896484375, + -12.244606018066406 + ], + "tb": [ + 1.009002685546875, + 16.059497833251953 + ] + }, + { + "a": 23, + "b": 24, + "ta": [ + -0.303009033203125, + -4.911102294921875 + ], + "tb": [ + 2.628997802734375, + 4.103298187255859 + ] + }, + { + "a": 24, + "b": 25, + "ta": [ + -3.33099365234375, + -5.165401458740234 + ], + "tb": [ + -4.4579925537109375, + 2.629598617553711 + ] + }, + { + "a": 25, + "b": 26, + "ta": [ + 15.447006225585938, + -9.07400131225586 + ], + "tb": [ + -17.261993408203125, + 4.1803998947143555 + ] + }, + { + "a": 26, + "b": 27, + "ta": [ + 6.509002685546875, + -1.5682697296142578 + ], + "tb": [ + -6.4640045166015625, + 1.765279769897461 + ] + }, + { + "a": 27, + "b": 28, + "ta": [ + 1.680999755859375, + -0.4512200355529785 + ], + "tb": [ + 0.694000244140625, + 2.8281002044677734 + ] + }, + { + "a": 28, + "b": 29, + "ta": [ + -0.569000244140625, + -2.462867021560669 + ], + "tb": [ + 1.886993408203125, + 0.08223210275173187 + ] + }, + { + "a": 29, + "b": 30, + "ta": [ + -0.1909942626953125, + -0.01807600073516369 + ], + "tb": [ + 0.1970062255859375, + -0.04559269919991493 + ] + }, + { + "a": 30, + "b": 31, + "ta": [ + -25.882003784179688, + 6.319916248321533 + ], + "tb": [ + 22.672988891601562, + -15.810090065002441 + ] + }, + { + "a": 31, + "b": 32, + "ta": [ + -2.2710113525390625, + 1.5839004516601562 + ], + "tb": [ + 2.6750030517578125, + 1.6021995544433594 + ] + }, + { + "a": 32, + "b": 33, + "ta": [ + -9.656997680664062, + -5.860401153564453 + ], + "tb": [ + 10.763999938964844, + -2.3862991333007812 + ] + }, + { + "a": 33, + "b": 34, + "ta": [ + -20.60449981689453, + 4.538700103759766 + ], + "tb": [ + 15.374198913574219, + -13.70620346069336 + ] + }, + { + "a": 34, + "b": 35, + "ta": [ + -16.885501861572266, + 15.072895050048828 + ], + "tb": [ + 13.845800399780273, + -17.897598266601562 + ] + }, + { + "a": 35, + "b": 36, + "ta": [ + -0.3259000778198242, + 0.38700103759765625 + ], + "tb": [ + 0.9640998840332031, + -0.6790008544921875 + ] + }, + { + "a": 36, + "b": 37, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 37, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 38, + "b": 39, + "ta": [ + -2.1020050048828125, + 1.5035018920898438 + ], + "tb": [ + 1.9740142822265625, + -1.161895751953125 + ] + }, + { + "a": 39, + "b": 40, + "ta": [ + -7.4949951171875, + 4.495002746582031 + ], + "tb": [ + 0.8720016479492188, + 8.722801208496094 + ] + }, + { + "a": 40, + "b": 41, + "ta": [ + -0.4219970703125, + -4.3441009521484375 + ], + "tb": [ + -1.2620010375976562, + 4.152595520019531 + ] + }, + { + "a": 41, + "b": 42, + "ta": [ + 3.8820037841796875, + -12.770103454589844 + ], + "tb": [ + -9.240997314453125, + 9.34000015258789 + ] + }, + { + "a": 42, + "b": 43, + "ta": [ + 3.197998046875, + -3.230602264404297 + ], + "tb": [ + -4.115997314453125, + -1.6422004699707031 + ] + }, + { + "a": 43, + "b": 44, + "ta": [ + 4.5780029296875, + 1.8465003967285156 + ], + "tb": [ + -0.5630035400390625, + -5.224697113037109 + ] + }, + { + "a": 44, + "b": 45, + "ta": [ + 0.139007568359375, + 1.2338027954101562 + ], + "tb": [ + 0.08599853515625, + -1.2445030212402344 + ] + }, + { + "a": 45, + "b": 46, + "ta": [ + -1.0659942626953125, + 15.252799987792969 + ], + "tb": [ + 10.820999145507812, + -10.411102294921875 + ] + }, + { + "a": 46, + "b": 47, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 47, + "b": 38, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 13.956999778747559, + 102.47000122070312 + ], + [ + 17.867000579833984, + 82.98919677734375 + ], + [ + 18.734899520874023, + 72.18240356445312 + ], + [ + 15.416099548339844, + 66.88960266113281 + ], + [ + 10.595600128173828, + 71.63710021972656 + ], + [ + 7.793529987335205, + 86.56500244140625 + ], + [ + 1.0336500406265259, + 107.63899993896484 + ], + [ + 7.36952018737793, + 117.00800323486328 + ], + [ + 43.36009979248047, + 112.47899627685547 + ], + [ + 47.4650993347168, + 109.8479995727539 + ], + [ + 43.51900100708008, + 107.77300262451172 + ], + [ + 24.667600631713867, + 105.69999694824219 + ], + [ + 21.735700607299805, + 104.77999877929688 + ], + [ + 23.283300399780273, + 101.68199920654297 + ], + [ + 76.98370361328125, + 52.83259963989258 + ], + [ + 118.34100341796875, + 32.07740020751953 + ], + [ + 134.45799255371094, + 31.8356990814209 + ], + [ + 139.0800018310547, + 34.232398986816406 + ], + [ + 136.0919952392578, + 38.2859992980957 + ], + [ + 109.05000305175781, + 79.4113998413086 + ], + [ + 108.64800262451172, + 99.15979766845703 + ], + [ + 126.49299621582031, + 109.10299682617188 + ], + [ + 146.66799926757812, + 95.24120330810547 + ], + [ + 161.3280029296875, + 53.26530075073242 + ], + [ + 157.5189971923828, + 39.285701751708984 + ], + [ + 160.7989959716797, + 29.12470054626465 + ], + [ + 210.18099975585938, + 10.12440013885498 + ], + [ + 229.62899780273438, + 5.251430034637451 + ], + [ + 233.58099365234375, + 1.867169976234436 + ], + [ + 228.48699951171875, + 0.036107901483774185 + ], + [ + 227.93699645996094, + 0.08047369867563248 + ], + [ + 152.36700439453125, + 25.243200302124023 + ], + [ + 145.5189971923828, + 25.97640037536621 + ], + [ + 114.6259994506836, + 21.832599639892578 + ], + [ + 61.760101318359375, + 51.45640182495117 + ], + [ + 15.821599960327148, + 101.10399627685547 + ], + [ + 14.026800155639648, + 102.41200256347656 + ], + [ + 13.956999778747559, + 102.47000122070312 + ], + [ + 134.30999755859375, + 96.83419799804688 + ], + [ + 128.4149932861328, + 101.06199645996094 + ], + [ + 113.91699981689453, + 93.74819946289062 + ], + [ + 115.48799896240234, + 80.95220184326172 + ], + [ + 136.3040008544922, + 48.5526008605957 + ], + [ + 146.84100341796875, + 40.78070068359375 + ], + [ + 152.46299743652344, + 54.61069869995117 + ], + [ + 152.58599853515625, + 58.380401611328125 + ], + [ + 134.3159942626953, + 96.77050018310547 + ], + [ + 134.30999755859375, + 96.83419799804688 + ] + ] }, - "corner_radius": 30, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "width": 233.6844024658203, + "z_index": 0 + }, + "d77358f4-748d-49fe-ae50-911f357c4a62": { + "active": true, + "corner_radius": 0, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "34c46b34-5b54-4a27-be7d-a55950a3398e", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "96c40aae-f303-4c9b-be20-39d6a5d9e9ef": { - "name": "Frame 945", - "type": "container", - "active": true, + ], + "height": 930, + "id": "d77358f4-748d-49fe-ae50-911f357c4a62", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, - "top": 0, - "width": 1080, - "height": 150, + "rotation": 0, "style": { "overflow": "clip" }, - "corner_radius": [ - 30, - 30, - 0, - 0 - ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "top": 150, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "d77fbae1-c379-4ffe-a524-887324617346": { + "active": true, + "corner_radius": 0, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "96c40aae-f303-4c9b-be20-39d6a5d9e9ef", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "5786bd6e-498e-4090-b5b9-3d91ede365f6": { - "name": "Vector 270", - "type": "svgpath", - "active": true, + ], + "height": 930, + "id": "d77fbae1-c379-4ffe-a524-887324617346", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, + "rotation": 0, + "style": { + "overflow": "clip" + }, "top": 150, + "type": "container", "width": 1080, - "height": 0, - "paths": [ + "z_index": 0 + }, + "e0e5300d-09e2-4afb-ad25-4e8b0b03624c": { + "active": true, + "bottom": 675, + "fill_paints": [ { - "d": "M0 0.5L1080 0.5L1080 -0.5L0 -0.5L0 0.5Z", - "fill_rule": "nonzero", - "fill": "stroke" + "active": true, + "color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } ], - "id": "5786bd6e-498e-4090-b5b9-3d91ede365f6" - }, - "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d": { - "name": "Frame 946", - "type": "container", - "active": true, + "font_family": "Inter", + "font_size": 50, + "font_weight": 300, + "height": "auto", + "id": "e0e5300d-09e2-4afb-ad25-4e8b0b03624c", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "We are looking for a new contributor for our team", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 40, - "top": 25, - "width": 100, - "height": 100, + "right": 216, + "rotation": 0, + "style": {}, + "text": "We are looking for\na new contributor for our team", + "text_align": "left", + "text_align_vertical": "top", + "top": 125, + "type": "text", + "width": 804, + "z_index": 0 + }, + "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d": { + "active": true, "border": { - "border_width": 1, "border_color": { - "r": 0, - "g": 0, + "a": 0.10000000149011612, "b": 0, - "a": 0.10000000149011612 + "g": 0, + "r": 0 }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" + "border_style": "solid", + "border_width": 1 }, "corner_radius": 100, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] + ], + "height": 100, + "id": "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d", + "layout": "flow", + "left": 40, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 946", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 25, + "type": "container", + "width": 100, + "z_index": 0 }, - "4f8fa473-890a-49d0-8335-3b78ffaf31a5": { - "name": "\blogo", - "type": "svgpath", + "e430dc52-d4a4-4d99-95b5-baf1f09e68f6": { "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" + } + ], + "font_family": "Inter", + "font_size": 40, + "font_weight": 500, + "height": "auto", + "id": "e430dc52-d4a4-4d99-95b5-baf1f09e68f6", + "left": 0, + "letter_spacing": 0, + "line_height": 1.2, "locked": false, + "name": "Powered by", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 32, - "top": 32, - "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" - }, + "rotation": 0, + "style": {}, + "text": "Powered by ", + "text_align": "left", + "text_align_vertical": "top", + "top": 0, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "e4891d1d-12bb-4a9f-9359-741a359ea39e": { + "active": true, + "bottom": 502, + "fill_paints": [ { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" + "active": true, + "color": { + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } ], - "id": "4f8fa473-890a-49d0-8335-3b78ffaf31a5", + "font_family": "Inter", + "font_size": 120, + "font_weight": 500, + "height": "auto", + "id": "e4891d1d-12bb-4a9f-9359-741a359ea39e", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, + "locked": false, + "name": "EVERYTHING", + "opacity": 1, + "position": "absolute", + "right": 250, + "rotation": 0, + "style": {}, + "text": "EVERYTHING", + "text_align": "left", + "text_align_vertical": "top", + "top": 272, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "e8655ffa-b4dc-4939-864d-77b9208e1f2e": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 + "g": 1.0, + "r": 1.0 + }, + "type": "solid" + } + ], + "height": 36, + "id": "e8655ffa-b4dc-4939-864d-77b9208e1f2e", + "left": 32, + "locked": false, + "name": "\blogo", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 32, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] + }, + "width": 36.00001525878906, + "z_index": 0 }, "efc81eb0-403e-4ff3-aad6-ae88c55e1fd4": { - "name": "Canary", - "type": "text", "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "text": "Canary", - "left": 170, - "top": 54, "bottom": 54, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 32, - "font_family": "Inter", - "font_weight": 500, - "id": "efc81eb0-403e-4ff3-aad6-ae88c55e1fd4", "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "d77fbae1-c379-4ffe-a524-887324617346": { - "name": "Frame 947", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 32, + "font_weight": 500, + "height": "auto", + "id": "efc81eb0-403e-4ff3-aad6-ae88c55e1fd4", + "left": 170, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Canary", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 930, - "style": { - "overflow": "clip" + "rotation": 0, + "style": {}, + "text": "Canary", + "text_align": "left", + "text_align_vertical": "top", + "top": 54, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "corner_radius": 30, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "d77fbae1-c379-4ffe-a524-887324617346", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "8d653755-953e-4a0d-9f06-c935dbdc659b": { - "name": "Frame 1022", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 60, - "top": 60, - "width": 629, - "height": 435, - "style": {}, - "corner_radius": 0, - "padding": 0, + ], + "height": 1080, + "id": "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5", "layout": "flow", - "direction": "horizontal", + "left": 619, + "locked": false, "main_axis_alignment": "start", - "cross_axis_alignment": "start", "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "8d653755-953e-4a0d-9f06-c935dbdc659b" + "name": "demo", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 1314, + "type": "container", + "width": 1080, + "z_index": 0 }, - "45bfea71-1399-42b0-8fa1-633305419119": { - "name": "JUMP IN", - "type": "text", + "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6": { "active": true, + "border": { + "border_color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 2 + }, + "corner_radius": 999, + "cross_axis_alignment": "start", + "cross_axis_gap": 20, + "direction": "horizontal", + "expanded": false, + "height": 85, + "id": "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6", + "layout": "flow", + "left": 60, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 20, + "name": "Frame 1018", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 10, + "padding_left": 25, + "padding_right": 25, + "padding_top": 10, "position": "absolute", - "text": "JUMP IN", - "left": 0, - "top": 0, - "width": 629, - "height": "auto", + "rotation": 0, "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 120, - "font_family": "Inter", - "font_weight": 200, - "id": "45bfea71-1399-42b0-8fa1-633305419119", + "top": 322, + "type": "container", + "width": 270, + "z_index": 0 + }, + "f290578a-89d6-4141-b762-cf370d7392e0": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 100, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "9cae0b62-3130-4ecb-9aaf-302f82669aa3": { - "name": "START", - "type": "text", - "active": true, + ], + "height": 100, + "id": "f290578a-89d6-4141-b762-cf370d7392e0", + "layout": "flow", + "left": 40, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 946", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "START ", - "left": 0, - "top": 145, - "width": 629, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 120, - "font_family": "Inter", - "font_weight": 300, - "id": "9cae0b62-3130-4ecb-9aaf-302f82669aa3", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 - } - } - ] + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 25, + "type": "container", + "width": 100, + "z_index": 0 }, - "2003aba6-81f4-438b-a9b0-d702c4d8e945": { - "name": "CREATING", - "type": "text", + "f7075669-9c1b-47a9-825e-cdf5c86fc827": { "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, + "height": 331, + "id": "f7075669-9c1b-47a9-825e-cdf5c86fc827", + "layout": "flow", + "left": 689, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Group", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "CREATING", - "left": 0, - "top": 290, - "width": 629, - "height": "auto", + "rotation": 0, "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 120, - "font_family": "Inter", - "font_weight": 900, - "id": "2003aba6-81f4-438b-a9b0-d702c4d8e945", + "top": 539, + "type": "container", + "width": 331, + "z_index": 0 + }, + "fb5c188a-1ff8-4974-b2a2-97c691a6b517": { + "active": true, + "corner_radius": [ + 30, + 30, + 0, + 0 + ], + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "f7075669-9c1b-47a9-825e-cdf5c86fc827": { - "name": "Group", - "type": "container", - "active": true, + ], + "height": 150, + "id": "fb5c188a-1ff8-4974-b2a2-97c691a6b517", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 945", "opacity": 1, - "z_index": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77": { + "active": true, + "corner_radius": 200, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", "expanded": false, - "position": "absolute", - "left": 689, - "top": 539, - "width": 331, - "height": 331, - "style": {}, - "corner_radius": 0, - "padding": 0, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" + } + ], + "height": 930, + "id": "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77", "layout": "flow", - "direction": "horizontal", + "left": 0, + "locked": false, "main_axis_alignment": "start", - "cross_axis_alignment": "start", "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "f7075669-9c1b-47a9-825e-cdf5c86fc827" + "name": "Frame 947", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", + "width": 1080, + "z_index": 0 }, - "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96": { - "name": "Vector", - "type": "svgpath", + "ff20ed51-2dce-4a17-816c-ca346983979e": { "active": true, + "height": 0, + "id": "ff20ed51-2dce-4a17-816c-ca346983979e", + "left": 0, "locked": false, + "name": "Vector 270", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 0, - "top": 0, - "width": 331, - "height": 331, - "paths": [ - { - "d": "M331 82.75L331 7.23424e-06L165.5 0L165.5 82.7174C165.482 37.0308 128.441 7.23424e-06 82.75 7.23424e-06L3.61712e-06 7.23424e-06L3.61712e-06 165.5L82.75 165.5C37.0485 165.5 -1.99768e-06 202.549 8.07875e-14 248.25L3.61712e-06 331L165.5 331L165.5 248.25C165.5 293.951 202.549 331 248.25 331L331 331L331 165.5L248.283 165.5C293.969 165.482 331 128.441 331 82.75Z", - "fill_rule": "evenodd", - "fill": "fill" - } - ], - "id": "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 + "rotation": 0, + "top": 150, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 0.0, + 0.5 + ], + [ + 1080.0, + 0.5 + ], + [ + 1080.0, + -0.5 + ], + [ + 0.0, + -0.5 + ], + [ + 0.0, + 0.5 + ] + ] + }, + "width": 1080, + "z_index": 0 }, "main": { - "type": "scene", - "id": "main", - "name": "main", "active": true, - "locked": false, + "background_color": { + "a": 1, + "b": 0.96, + "g": 0.96, + "r": 0.96 + }, "constraints": { "children": "multiple" }, - "guides": [], "edges": [], - "background_color": { - "r": 0.96, - "g": 0.96, - "b": 0.96, - "a": 1 - } + "guides": [], + "id": "main", + "locked": false, + "name": "main", + "type": "scene" } }, - "links": { - "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc": [ - "fb5c188a-1ff8-4974-b2a2-97c691a6b517", - "b5131656-c058-447c-a93d-52d91ea30f6f" - ], - "fb5c188a-1ff8-4974-b2a2-97c691a6b517": [ - "7fa7152a-1aa6-432f-8a18-e06028407210", - "36123500-0f85-4828-90d6-f7efe0465145", - "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933" - ], - "36123500-0f85-4828-90d6-f7efe0465145": [ - "3cdaf947-0959-470b-9012-018e733d9f69" - ], - "b5131656-c058-447c-a93d-52d91ea30f6f": [ - "6db11f69-c5e4-43dd-adfb-ce93b013095b", - "29429cb3-52e5-4731-957b-4a37e7856fcb", - "e4891d1d-12bb-4a9f-9359-741a359ea39e", - "01182c94-a1f6-46f2-9b41-5cd622c480a6", - "2c316d9f-4c8b-4af0-b367-b0f1b8901a88", - "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9", - "2c313df1-8090-4200-b114-38919c70045f" - ], - "2c316d9f-4c8b-4af0-b367-b0f1b8901a88": [ - "cc64cd72-f5aa-489a-8570-8cdc4b20daca" - ], - "2c313df1-8090-4200-b114-38919c70045f": [ - "296499fb-b83a-4cf2-8589-d589a3426f4e", - "c83c9be1-62a3-40da-8037-a7ae14cc093e", - "79f25f6f-65bd-4dd8-8627-c4a5d773a218" - ], - "5ac3de8f-c266-4d78-a1c4-02b413174ab6": [ - "79e82c91-9ed1-4eb0-8c33-89fe98219b7c", - "3afd24ac-a789-4e3e-b626-f7d990eab72a", - "97dafdc5-8004-4d73-890c-3c9ee68c688e" - ], - "79e82c91-9ed1-4eb0-8c33-89fe98219b7c": [ - "ff20ed51-2dce-4a17-816c-ca346983979e", - "f290578a-89d6-4141-b762-cf370d7392e0", - "94c3ba01-8de9-4a90-a0a8-05972ac52f44" - ], - "f290578a-89d6-4141-b762-cf370d7392e0": [ - "8bd6d1b1-51bd-406a-9fa5-42956191dd2c" - ], - "3afd24ac-a789-4e3e-b626-f7d990eab72a": [ - "0eb99750-edad-4a0a-a886-6b7e505b62ab", - "9f5905c5-5e47-4d14-898f-18d4bb98025e", - "a3b4b1cd-ce66-4e36-abfa-a162d5676199", - "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa" - ], - "27928f62-5265-4d23-a828-fc42c58572ac": [ - "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f", - "d77358f4-748d-49fe-ae50-911f357c4a62", - "39121f18-a69b-4d0c-8a45-39548fb7d43b" - ], - "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f": [ - "158c801e-d693-4ee1-b392-ef86c8e97864", - "755302fe-e073-4faa-881d-d561335f3068", - "ae565e52-976f-4909-b062-b8cd5ef26c30" - ], - "755302fe-e073-4faa-881d-d561335f3068": [ - "60f4d6dd-6a18-47e4-8ec5-95445d429770" - ], - "d77358f4-748d-49fe-ae50-911f357c4a62": [], - "39121f18-a69b-4d0c-8a45-39548fb7d43b": [ - "e0e5300d-09e2-4afb-ad25-4e8b0b03624c", - "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6", - "b8277fa8-b221-4b5c-b05b-df375de91af2", - "aad05458-6b10-47b8-ab6b-f859b3b5e299" - ], - "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6": [ - "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1", - "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6" - ], - "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6": [ - "55067523-3d57-4636-91c7-3f1769f4747e" - ], - "b8277fa8-b221-4b5c-b05b-df375de91af2": [ - "2a1ed781-06d1-4a4d-9908-5e807f3c2983", - "8927e413-8570-4259-891b-e36aa614a25d", - "14472868-d49c-4411-adc9-ab48beb4621c", - "3ac33bc3-743e-4eef-8011-ce8b6a1b740a", - "1044027a-8009-437b-8a4b-1c3ec006f8f9" - ], - "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5": [ - "3860c5b4-1987-436f-8113-63a1d3999d2e", - "4b2cb61d-1925-4515-ad23-e15f08cc6626" - ], - "3860c5b4-1987-436f-8113-63a1d3999d2e": [ - "135994ec-41b4-4d58-bf51-9dd6fd577e6c", - "c8655a4f-837f-4867-b7ee-81c9025fc188", - "0879aa63-70ad-4c47-ae56-b99462ce540c" - ], - "c8655a4f-837f-4867-b7ee-81c9025fc188": [ - "e8655ffa-b4dc-4939-864d-77b9208e1f2e" - ], - "4b2cb61d-1925-4515-ad23-e15f08cc6626": [ - "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77" - ], - "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77": [ - "8099fa98-1f01-4e85-be29-1c4ac50516a5", - "84347d1c-ca26-4d6d-b3d2-be770742e660", - "c1a07e06-f9e9-4023-b072-674edb9c680e", - "2f472276-c737-4757-bff1-6a22539a2cfa", - "540840f9-eca5-4975-8f05-3bcb7ff27f8c" - ], - "84347d1c-ca26-4d6d-b3d2-be770742e660": [ - "787f4515-a1cd-4cfc-990e-5199f7544975" - ], - "c1a07e06-f9e9-4023-b072-674edb9c680e": [ - "e430dc52-d4a4-4d99-95b5-baf1f09e68f6", - "470d42db-a5d6-4b45-8a0b-abcee1ad08d8" - ], - "34c46b34-5b54-4a27-be7d-a55950a3398e": [ - "96c40aae-f303-4c9b-be20-39d6a5d9e9ef", - "d77fbae1-c379-4ffe-a524-887324617346" - ], - "96c40aae-f303-4c9b-be20-39d6a5d9e9ef": [ - "5786bd6e-498e-4090-b5b9-3d91ede365f6", - "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d", - "efc81eb0-403e-4ff3-aad6-ae88c55e1fd4" - ], - "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d": [ - "4f8fa473-890a-49d0-8335-3b78ffaf31a5" - ], - "d77fbae1-c379-4ffe-a524-887324617346": [ - "8d653755-953e-4a0d-9f06-c935dbdc659b", - "f7075669-9c1b-47a9-825e-cdf5c86fc827" - ], - "8d653755-953e-4a0d-9f06-c935dbdc659b": [ - "45bfea71-1399-42b0-8fa1-633305419119", - "9cae0b62-3130-4ecb-9aaf-302f82669aa3", - "2003aba6-81f4-438b-a9b0-d702c4d8e945" - ], - "f7075669-9c1b-47a9-825e-cdf5c86fc827": [ - "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96" - ], - "main": [ - "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc", - "5ac3de8f-c266-4d78-a1c4-02b413174ab6", - "27928f62-5265-4d23-a828-fc42c58572ac", - "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5", - "34c46b34-5b54-4a27-be7d-a55950a3398e" - ] - }, + "properties": {}, "scenes_ref": [ "main" - ], - "bitmaps": {}, - "images": {}, - "properties": {} - } + ] + }, + "version": "0.89.0-beta+20251219" } \ No newline at end of file diff --git a/crates/grida-canvas-wasm/example/rectangle.grida b/crates/grida-canvas-wasm/example/rectangle.grida index 27e0df3d2d..7dfdffb1f2 100644 --- a/crates/grida-canvas-wasm/example/rectangle.grida +++ b/crates/grida-canvas-wasm/example/rectangle.grida @@ -1,5 +1,5 @@ { - "version": "0.0.4-beta+20251209", + "version": "0.89.0-beta+20251219", "document": { "nodes": { "rectangle": { diff --git a/crates/grida-canvas-wasm/lib/bin/grida-canvas-wasm.js b/crates/grida-canvas-wasm/lib/bin/grida-canvas-wasm.js index 8c77dc414d..b43d07bd8d 100644 --- a/crates/grida-canvas-wasm/lib/bin/grida-canvas-wasm.js +++ b/crates/grida-canvas-wasm/lib/bin/grida-canvas-wasm.js @@ -5,7 +5,7 @@ var createGridaCanvas = (() => { async function(moduleArg = {}) { var moduleRtn; -var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();wasmExports["lf"]();FS.ignorePermissions=false}function preMain(){}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){return locateFile("grida_canvas_wasm.wasm")}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["kf"];updateMemoryViews();wasmTable=wasmExports["nf"];removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(mod,inst)=>{resolve(receiveInstance(mod,inst))})})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var exceptionLast=0;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>view=>crypto.getRandomValues(view);var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var zeroMemory=(ptr,size)=>HEAPU8.fill(0,ptr,ptr+size);var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(ptr)zeroMemory(ptr,size);return ptr};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url).then(processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,readFiles:{},ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);setattr(arg,attr)},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}if(Module["logReadFiles"]&&!(flags&1)){if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAP32[buf+4>>2]=stats.bsize;HEAP32[buf+40>>2]=stats.bsize;HEAP32[buf+8>>2]=stats.blocks;HEAP32[buf+12>>2]=stats.bfree;HEAP32[buf+16>>2]=stats.bavail;HEAP32[buf+20>>2]=stats.files;HEAP32[buf+24>>2]=stats.ffree;HEAP32[buf+28>>2]=stats.fsid;HEAP32[buf+44>>2]=stats.flags;HEAP32[buf+36>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>3]=BigInt(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_readlinkat(dirfd,path,buf,bufsize){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>abort("");var __emscripten_throw_longjmp=()=>{throw Infinity};var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function __gmtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __mmap_js(len,prot,flags,fd,offset,allocated,addr){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset){offset=bigintToI53Checked(offset);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetperformance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var _emscripten_get_heap_max=()=>getHeapMax();var GLctx;var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_EXT_polygon_offset_clamp=ctx=>!!(ctx.extPolygonOffsetClamp=ctx.getExtension("EXT_polygon_offset_clamp"));var webgl_enable_EXT_clip_control=ctx=>!!(ctx.extClipControl=ctx.getExtension("EXT_clip_control"));var webgl_enable_WEBGL_polygon_mode=ctx=>!!(ctx.webglPolygonMode=ctx.getExtension("WEBGL_polygon_mode"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_clip_control","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_polygon_offset_clamp","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw","WEBGL_polygon_mode"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,unpackRowLength:0,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module["ctx"]=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]?.GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_multi_draw(GLctx);webgl_enable_EXT_polygon_offset_clamp(GLctx);webgl_enable_EXT_clip_control(GLctx);webgl_enable_WEBGL_polygon_mode(GLctx);webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=(target,id)=>{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var _glClientWaitSync=(sync,flags,timeout)=>{timeout=Number(timeout);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glClipControlEXT=(origin,depth)=>{GLctx.extClipControl["clipControlEXT"](origin,depth)};var _emscripten_glClipControlEXT=_glClipControlEXT;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8.subarray(data,data+imageSize))};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8.subarray(data,data+imageSize))};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedBaseInstanceWEBGL=(mode,first,count,instanceCount,baseInstance)=>{GLctx.dibvbi["drawArraysInstancedBaseInstanceWEBGL"](mode,first,count,instanceCount,baseInstance)};var _emscripten_glDrawArraysInstancedBaseInstanceWEBGL=_glDrawArraysInstancedBaseInstanceWEBGL;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedBaseVertexBaseInstanceWEBGL=(mode,count,type,offset,instanceCount,baseVertex,baseinstance)=>{GLctx.dibvbi["drawElementsInstancedBaseVertexBaseInstanceWEBGL"](mode,count,type,offset,instanceCount,baseVertex,baseinstance)};var _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL=_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name);var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name);var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=()=>{var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){var numActiveUniforms=GLctx.getProgramParameter(program,35718);for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){var numActiveAttributes=GLctx.getProgramParameter(program,35721);for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){var numActiveUniformBlocks=GLctx.getProgramParameter(program,35382);for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var webGLVersion=GLctx.getParameter(7938);var glVersion=`OpenGL ES 2.0 (${webGLVersion})`;if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${webGLVersion})`;ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};var numActiveUniforms=GLctx.getProgramParameter(program,35718);for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=(x0,x1)=>GLctx.hint(x0,x1);var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsSync=_glIsSync;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=array=>{var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glMultiDrawArraysInstancedBaseInstanceWEBGL=(mode,firsts,counts,instanceCounts,baseInstances,drawCount)=>{GLctx.mdibvbi["multiDrawArraysInstancedBaseInstanceWEBGL"](mode,HEAP32,firsts>>2,HEAP32,counts>>2,HEAP32,instanceCounts>>2,HEAPU32,baseInstances>>2,drawCount)};var _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL=_glMultiDrawArraysInstancedBaseInstanceWEBGL;var _glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL=(mode,counts,type,offsets,instanceCounts,baseVertices,baseInstances,drawCount)=>{GLctx.mdibvbi["multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL"](mode,HEAP32,counts>>2,type,HEAP32,offsets>>2,HEAP32,instanceCounts>>2,HEAP32,baseVertices>>2,HEAPU32,baseInstances>>2,drawCount)};var _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL=_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL;var _glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}else if(pname==3314){GL.unpackRowLength=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonModeWEBGL=(face,mode)=>{GLctx.webglPolygonMode["polygonModeWEBGL"](face,mode)};var _emscripten_glPolygonModeWEBGL=_glPolygonModeWEBGL;var _glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffset=_glPolygonOffset;var _glPolygonOffsetClampEXT=(factor,units,clamp)=>{GLctx.extPolygonOffsetClamp["polygonOffsetClampEXT"](factor,units,clamp)};var _emscripten_glPolygonOffsetClampEXT=_glPolygonOffsetClampEXT;var _glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=x0=>GLctx.readBuffer(x0);var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=(width,height,sizePerPixel)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=(GL.unpackRowLength||width)*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,GL.unpackAlignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels);return}var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target);return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=()=>{};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);var index=toTypedArrayIndex(pixels,heap);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,index);return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null;GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixelData)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexStorage3D=_glTexStorage3D;var _glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){count*=2;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){count*=2;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){count*=3;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){count*=3;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count];var heap=HEAPF32;value=value>>2;count*=4;for(var i=0;i>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){count*=4;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){count*=4;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){count*=9;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count];var heap=HEAPF32;value=value>>2;count*=16;for(var i=0;i>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout)=>{timeout=Number(timeout);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var _emscripten_request_animation_frame_loop=(cb,userData)=>{function tick(timeStamp){if(getWasmTableEntry(cb)(timeStamp,userData)){requestAnimationFrame(tick)}}return requestAnimationFrame(tick)};var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _random_get(buffer,size){try{randomFill(HEAPU8.subarray(buffer,buffer+size));return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack="";for(let i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<=288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<=288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i)}{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"]}Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["GL"]=GL;var wasmImports={i:___cxa_find_matching_catch_2,p:___syscall_fcntl64,_a:___syscall_fstat64,Wa:___syscall_getcwd,Ma:___syscall_getdents64,$a:___syscall_ioctl,Xa:___syscall_lstat64,Ya:___syscall_newfstatat,q:___syscall_openat,La:___syscall_readlinkat,Za:___syscall_stat64,db:__abort_js,Ha:__emscripten_throw_longjmp,Qa:__gmtime_js,Oa:__mmap_js,Pa:__munmap_js,eb:__tzset_js,cb:_clock_time_get,bb:_emscripten_date_now,Ja:_emscripten_get_heap_max,F:_emscripten_glActiveTexture,G:_emscripten_glAttachShader,Wd:_emscripten_glBeginQuery,Pd:_emscripten_glBeginQueryEXT,nc:_emscripten_glBeginTransformFeedback,H:_emscripten_glBindAttribLocation,I:_emscripten_glBindBuffer,jc:_emscripten_glBindBufferBase,kc:_emscripten_glBindBufferRange,ue:_emscripten_glBindFramebuffer,we:_emscripten_glBindRenderbuffer,be:_emscripten_glBindSampler,J:_emscripten_glBindTexture,xb:_emscripten_glBindTransformFeedback,Re:_emscripten_glBindVertexArray,Ue:_emscripten_glBindVertexArrayOES,K:_emscripten_glBlendColor,L:_emscripten_glBlendEquation,wd:_emscripten_glBlendEquationSeparate,M:_emscripten_glBlendFunc,vd:_emscripten_glBlendFuncSeparate,oe:_emscripten_glBlitFramebuffer,N:_emscripten_glBufferData,O:_emscripten_glBufferSubData,xe:_emscripten_glCheckFramebufferStatus,P:_emscripten_glClear,Nb:_emscripten_glClearBufferfi,Ob:_emscripten_glClearBufferfv,Qb:_emscripten_glClearBufferiv,Pb:_emscripten_glClearBufferuiv,Q:_emscripten_glClearColor,ud:_emscripten_glClearDepthf,R:_emscripten_glClearStencil,le:_emscripten_glClientWaitSync,Kc:_emscripten_glClipControlEXT,S:_emscripten_glColorMask,T:_emscripten_glCompileShader,U:_emscripten_glCompressedTexImage2D,Ac:_emscripten_glCompressedTexImage3D,V:_emscripten_glCompressedTexSubImage2D,zc:_emscripten_glCompressedTexSubImage3D,ne:_emscripten_glCopyBufferSubData,td:_emscripten_glCopyTexImage2D,W:_emscripten_glCopyTexSubImage2D,Bc:_emscripten_glCopyTexSubImage3D,X:_emscripten_glCreateProgram,Z:_emscripten_glCreateShader,_:_emscripten_glCullFace,$:_emscripten_glDeleteBuffers,ye:_emscripten_glDeleteFramebuffers,aa:_emscripten_glDeleteProgram,Xd:_emscripten_glDeleteQueries,Rd:_emscripten_glDeleteQueriesEXT,ze:_emscripten_glDeleteRenderbuffers,ce:_emscripten_glDeleteSamplers,ba:_emscripten_glDeleteShader,me:_emscripten_glDeleteSync,ca:_emscripten_glDeleteTextures,wb:_emscripten_glDeleteTransformFeedbacks,Se:_emscripten_glDeleteVertexArrays,Ve:_emscripten_glDeleteVertexArraysOES,sd:_emscripten_glDepthFunc,da:_emscripten_glDepthMask,rd:_emscripten_glDepthRangef,qd:_emscripten_glDetachShader,ea:_emscripten_glDisable,fa:_emscripten_glDisableVertexAttribArray,ga:_emscripten_glDrawArrays,Pe:_emscripten_glDrawArraysInstanced,Ad:_emscripten_glDrawArraysInstancedANGLE,hb:_emscripten_glDrawArraysInstancedARB,Me:_emscripten_glDrawArraysInstancedBaseInstanceWEBGL,Gc:_emscripten_glDrawArraysInstancedEXT,ib:_emscripten_glDrawArraysInstancedNV,Ke:_emscripten_glDrawBuffers,Ec:_emscripten_glDrawBuffersEXT,Bd:_emscripten_glDrawBuffersWEBGL,ha:_emscripten_glDrawElements,Qe:_emscripten_glDrawElementsInstanced,zd:_emscripten_glDrawElementsInstancedANGLE,fb:_emscripten_glDrawElementsInstancedARB,Ne:_emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL,gb:_emscripten_glDrawElementsInstancedEXT,Fc:_emscripten_glDrawElementsInstancedNV,Ee:_emscripten_glDrawRangeElements,ia:_emscripten_glEnable,ja:_emscripten_glEnableVertexAttribArray,Yd:_emscripten_glEndQuery,Sd:_emscripten_glEndQueryEXT,mc:_emscripten_glEndTransformFeedback,he:_emscripten_glFenceSync,ka:_emscripten_glFinish,la:_emscripten_glFlush,Ae:_emscripten_glFramebufferRenderbuffer,Be:_emscripten_glFramebufferTexture2D,qc:_emscripten_glFramebufferTextureLayer,ma:_emscripten_glFrontFace,na:_emscripten_glGenBuffers,Ce:_emscripten_glGenFramebuffers,Zd:_emscripten_glGenQueries,Td:_emscripten_glGenQueriesEXT,De:_emscripten_glGenRenderbuffers,de:_emscripten_glGenSamplers,oa:_emscripten_glGenTextures,ub:_emscripten_glGenTransformFeedbacks,Oe:_emscripten_glGenVertexArrays,We:_emscripten_glGenVertexArraysOES,qe:_emscripten_glGenerateMipmap,pd:_emscripten_glGetActiveAttrib,od:_emscripten_glGetActiveUniform,Ib:_emscripten_glGetActiveUniformBlockName,Jb:_emscripten_glGetActiveUniformBlockiv,Lb:_emscripten_glGetActiveUniformsiv,nd:_emscripten_glGetAttachedShaders,ld:_emscripten_glGetAttribLocation,kd:_emscripten_glGetBooleanv,Cb:_emscripten_glGetBufferParameteri64v,pa:_emscripten_glGetBufferParameteriv,qa:_emscripten_glGetError,ra:_emscripten_glGetFloatv,_b:_emscripten_glGetFragDataLocation,re:_emscripten_glGetFramebufferAttachmentParameteriv,Db:_emscripten_glGetInteger64i_v,Fb:_emscripten_glGetInteger64v,oc:_emscripten_glGetIntegeri_v,sa:_emscripten_glGetIntegerv,mb:_emscripten_glGetInternalformativ,qb:_emscripten_glGetProgramBinary,ta:_emscripten_glGetProgramInfoLog,ua:_emscripten_glGetProgramiv,Md:_emscripten_glGetQueryObjecti64vEXT,Dd:_emscripten_glGetQueryObjectivEXT,Nd:_emscripten_glGetQueryObjectui64vEXT,_d:_emscripten_glGetQueryObjectuiv,Ud:_emscripten_glGetQueryObjectuivEXT,ae:_emscripten_glGetQueryiv,Vd:_emscripten_glGetQueryivEXT,se:_emscripten_glGetRenderbufferParameteriv,yb:_emscripten_glGetSamplerParameterfv,zb:_emscripten_glGetSamplerParameteriv,va:_emscripten_glGetShaderInfoLog,Jd:_emscripten_glGetShaderPrecisionFormat,jd:_emscripten_glGetShaderSource,wa:_emscripten_glGetShaderiv,xa:_emscripten_glGetString,Te:_emscripten_glGetStringi,Eb:_emscripten_glGetSynciv,id:_emscripten_glGetTexParameterfv,hd:_emscripten_glGetTexParameteriv,hc:_emscripten_glGetTransformFeedbackVarying,Kb:_emscripten_glGetUniformBlockIndex,Mb:_emscripten_glGetUniformIndices,ya:_emscripten_glGetUniformLocation,gd:_emscripten_glGetUniformfv,fd:_emscripten_glGetUniformiv,$b:_emscripten_glGetUniformuiv,gc:_emscripten_glGetVertexAttribIiv,fc:_emscripten_glGetVertexAttribIuiv,cd:_emscripten_glGetVertexAttribPointerv,ed:_emscripten_glGetVertexAttribfv,dd:_emscripten_glGetVertexAttribiv,ad:_emscripten_glHint,Kd:_emscripten_glInvalidateFramebuffer,Ld:_emscripten_glInvalidateSubFramebuffer,$c:_emscripten_glIsBuffer,_c:_emscripten_glIsEnabled,Zc:_emscripten_glIsFramebuffer,Yc:_emscripten_glIsProgram,yc:_emscripten_glIsQuery,Ed:_emscripten_glIsQueryEXT,Xc:_emscripten_glIsRenderbuffer,Bb:_emscripten_glIsSampler,Wc:_emscripten_glIsShader,ie:_emscripten_glIsSync,za:_emscripten_glIsTexture,tb:_emscripten_glIsTransformFeedback,pc:_emscripten_glIsVertexArray,Cd:_emscripten_glIsVertexArrayOES,Aa:_emscripten_glLineWidth,Ba:_emscripten_glLinkProgram,Ie:_emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL,Je:_emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL,sb:_emscripten_glPauseTransformFeedback,Ca:_emscripten_glPixelStorei,Jc:_emscripten_glPolygonModeWEBGL,Vc:_emscripten_glPolygonOffset,Lc:_emscripten_glPolygonOffsetClampEXT,pb:_emscripten_glProgramBinary,ob:_emscripten_glProgramParameteri,Od:_emscripten_glQueryCounterEXT,Le:_emscripten_glReadBuffer,Da:_emscripten_glReadPixels,Uc:_emscripten_glReleaseShaderCompiler,te:_emscripten_glRenderbufferStorage,pe:_emscripten_glRenderbufferStorageMultisample,rb:_emscripten_glResumeTransformFeedback,Tc:_emscripten_glSampleCoverage,ee:_emscripten_glSamplerParameterf,Ab:_emscripten_glSamplerParameterfv,fe:_emscripten_glSamplerParameteri,ge:_emscripten_glSamplerParameteriv,Ea:_emscripten_glScissor,Rc:_emscripten_glShaderBinary,Fa:_emscripten_glShaderSource,Ga:_emscripten_glStencilFunc,Ka:_emscripten_glStencilFuncSeparate,Va:_emscripten_glStencilMask,ab:_emscripten_glStencilMaskSeparate,kb:_emscripten_glStencilOp,vb:_emscripten_glStencilOpSeparate,Gb:_emscripten_glTexImage2D,Dc:_emscripten_glTexImage3D,Rb:_emscripten_glTexParameterf,ac:_emscripten_glTexParameterfv,lc:_emscripten_glTexParameteri,wc:_emscripten_glTexParameteriv,Fe:_emscripten_glTexStorage2D,nb:_emscripten_glTexStorage3D,Hc:_emscripten_glTexSubImage2D,Cc:_emscripten_glTexSubImage3D,ic:_emscripten_glTransformFeedbackVaryings,Sc:_emscripten_glUniform1f,bd:_emscripten_glUniform1fv,B:_emscripten_glUniform1i,C:_emscripten_glUniform1iv,Zb:_emscripten_glUniform1ui,Vb:_emscripten_glUniform1uiv,D:_emscripten_glUniform2f,E:_emscripten_glUniform2fv,A:_emscripten_glUniform2i,z:_emscripten_glUniform2iv,Yb:_emscripten_glUniform2ui,Ub:_emscripten_glUniform2uiv,y:_emscripten_glUniform3f,x:_emscripten_glUniform3fv,w:_emscripten_glUniform3i,v:_emscripten_glUniform3iv,Xb:_emscripten_glUniform3ui,Tb:_emscripten_glUniform3uiv,u:_emscripten_glUniform4f,hf:_emscripten_glUniform4fv,Xe:_emscripten_glUniform4i,Ye:_emscripten_glUniform4iv,Wb:_emscripten_glUniform4ui,Sb:_emscripten_glUniform4uiv,Hb:_emscripten_glUniformBlockBinding,Ze:_emscripten_glUniformMatrix2fv,xc:_emscripten_glUniformMatrix2x3fv,uc:_emscripten_glUniformMatrix2x4fv,_e:_emscripten_glUniformMatrix3fv,vc:_emscripten_glUniformMatrix3x2fv,sc:_emscripten_glUniformMatrix3x4fv,$e:_emscripten_glUniformMatrix4fv,tc:_emscripten_glUniformMatrix4x2fv,rc:_emscripten_glUniformMatrix4x3fv,af:_emscripten_glUseProgram,Qc:_emscripten_glValidateProgram,bf:_emscripten_glVertexAttrib1f,Pc:_emscripten_glVertexAttrib1fv,Oc:_emscripten_glVertexAttrib2f,cf:_emscripten_glVertexAttrib2fv,Nc:_emscripten_glVertexAttrib3f,df:_emscripten_glVertexAttrib3fv,Mc:_emscripten_glVertexAttrib4f,ef:_emscripten_glVertexAttrib4fv,Ge:_emscripten_glVertexAttribDivisor,yd:_emscripten_glVertexAttribDivisorANGLE,jb:_emscripten_glVertexAttribDivisorARB,Ic:_emscripten_glVertexAttribDivisorEXT,lb:_emscripten_glVertexAttribDivisorNV,ec:_emscripten_glVertexAttribI4i,cc:_emscripten_glVertexAttribI4iv,dc:_emscripten_glVertexAttribI4ui,bc:_emscripten_glVertexAttribI4uiv,He:_emscripten_glVertexAttribIPointer,ff:_emscripten_glVertexAttribPointer,gf:_emscripten_glViewport,je:_emscripten_glWaitSync,jf:_emscripten_request_animation_frame_loop,Ia:_emscripten_resize_heap,Sa:_environ_get,Ta:_environ_sizes_get,Qd:_exit,k:_fd_close,Na:_fd_pread,o:_fd_read,Ra:_fd_seek,m:_fd_write,md:_glGetIntegerv,r:_glGetString,xd:_glGetStringi,Hd:invoke_dd,Gd:invoke_ddd,Id:invoke_dddd,Fd:invoke_fff,a:invoke_ii,d:invoke_iii,c:invoke_iiii,h:invoke_iiiii,Y:invoke_iiiiii,s:invoke_iiiiiii,n:invoke_iiiiiiii,t:invoke_iiiiiiiiii,j:invoke_v,b:invoke_vi,g:invoke_vii,f:invoke_viii,e:invoke_viiii,ve:invoke_viiiii,$d:invoke_viiiiii,ke:invoke_viiiiiiiii,l:invoke_vijjjj,Ua:_random_get};var wasmExports=await createWasm();var ___wasm_call_ctors=wasmExports["lf"];var _malloc=wasmExports["mf"];var _allocate=Module["_allocate"]=wasmExports["of"];var _deallocate=Module["_deallocate"]=wasmExports["pf"];var _init=Module["_init"]=wasmExports["qf"];var _tick=Module["_tick"]=wasmExports["rf"];var _resize_surface=Module["_resize_surface"]=wasmExports["sf"];var _redraw=Module["_redraw"]=wasmExports["tf"];var _load_scene_json=Module["_load_scene_json"]=wasmExports["uf"];var _apply_scene_transactions=Module["_apply_scene_transactions"]=wasmExports["vf"];var _pointer_move=Module["_pointer_move"]=wasmExports["wf"];var _command=Module["_command"]=wasmExports["xf"];var _set_main_camera_transform=Module["_set_main_camera_transform"]=wasmExports["yf"];var _add_image=Module["_add_image"]=wasmExports["zf"];var _get_image_bytes=Module["_get_image_bytes"]=wasmExports["Af"];var _get_image_size=Module["_get_image_size"]=wasmExports["Bf"];var _add_font=Module["_add_font"]=wasmExports["Cf"];var _has_missing_fonts=Module["_has_missing_fonts"]=wasmExports["Df"];var _list_missing_fonts=Module["_list_missing_fonts"]=wasmExports["Ef"];var _list_available_fonts=Module["_list_available_fonts"]=wasmExports["Ff"];var _set_default_fallback_fonts=Module["_set_default_fallback_fonts"]=wasmExports["Gf"];var _get_default_fallback_fonts=Module["_get_default_fallback_fonts"]=wasmExports["Hf"];var _get_node_id_from_point=Module["_get_node_id_from_point"]=wasmExports["If"];var _get_node_ids_from_point=Module["_get_node_ids_from_point"]=wasmExports["Jf"];var _get_node_ids_from_envelope=Module["_get_node_ids_from_envelope"]=wasmExports["Kf"];var _get_node_absolute_bounding_box=Module["_get_node_absolute_bounding_box"]=wasmExports["Lf"];var _export_node_as=Module["_export_node_as"]=wasmExports["Mf"];var _to_vector_network=Module["_to_vector_network"]=wasmExports["Nf"];var _set_debug=Module["_set_debug"]=wasmExports["Of"];var _toggle_debug=Module["_toggle_debug"]=wasmExports["Pf"];var _set_verbose=Module["_set_verbose"]=wasmExports["Qf"];var _devtools_rendering_set_show_ruler=Module["_devtools_rendering_set_show_ruler"]=wasmExports["Rf"];var _devtools_rendering_set_show_tiles=Module["_devtools_rendering_set_show_tiles"]=wasmExports["Sf"];var _runtime_renderer_set_cache_tile=Module["_runtime_renderer_set_cache_tile"]=wasmExports["Tf"];var _devtools_rendering_set_show_fps_meter=Module["_devtools_rendering_set_show_fps_meter"]=wasmExports["Uf"];var _devtools_rendering_set_show_stats=Module["_devtools_rendering_set_show_stats"]=wasmExports["Vf"];var _devtools_rendering_set_show_hit_testing=Module["_devtools_rendering_set_show_hit_testing"]=wasmExports["Wf"];var _highlight_strokes=Module["_highlight_strokes"]=wasmExports["Xf"];var _load_dummy_scene=Module["_load_dummy_scene"]=wasmExports["Yf"];var _load_benchmark_scene=Module["_load_benchmark_scene"]=wasmExports["Zf"];var _grida_fonts_analyze_family=Module["_grida_fonts_analyze_family"]=wasmExports["_f"];var _grida_fonts_parse_font=Module["_grida_fonts_parse_font"]=wasmExports["$f"];var _grida_fonts_free=Module["_grida_fonts_free"]=wasmExports["ag"];var _grida_markdown_to_html=Module["_grida_markdown_to_html"]=wasmExports["bg"];var _grida_svg_optimize=Module["_grida_svg_optimize"]=wasmExports["cg"];var _grida_svg_pack=Module["_grida_svg_pack"]=wasmExports["dg"];var _main=Module["_main"]=wasmExports["eg"];var _emscripten_builtin_memalign=wasmExports["fg"];var _setThrew=wasmExports["gg"];var __emscripten_tempret_set=wasmExports["hg"];var __emscripten_stack_restore=wasmExports["ig"];var __emscripten_stack_alloc=wasmExports["jg"];var _emscripten_stack_get_current=wasmExports["kg"];var ___cxa_can_catch=wasmExports["lg"];function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vijjjj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dddd(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dd(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ddd(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fff(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();var noInitialRun=Module["noInitialRun"]||false;if(!noInitialRun)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}function preInit(){if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}preInit();run();moduleRtn=readyPromise; +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();wasmExports["Ng"]();FS.ignorePermissions=false}function preMain(){}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){return locateFile("grida_canvas_wasm.wasm")}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["Mg"];updateMemoryViews();wasmTable=wasmExports["Pg"];removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(mod,inst)=>{resolve(receiveInstance(mod,inst))})})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(ptr);return ___cxa_get_exception_ptr(ptr)};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_find_matching_catch_4=(arg0,arg1)=>findMatchingCatch([arg0,arg1]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>view=>crypto.getRandomValues(view);var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var zeroMemory=(ptr,size)=>HEAPU8.fill(0,ptr,ptr+size);var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(ptr)zeroMemory(ptr,size);return ptr};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url).then(processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,readFiles:{},ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);setattr(arg,attr)},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}if(Module["logReadFiles"]&&!(flags&1)){if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAP32[buf+4>>2]=stats.bsize;HEAP32[buf+40>>2]=stats.bsize;HEAP32[buf+8>>2]=stats.blocks;HEAP32[buf+12>>2]=stats.bfree;HEAP32[buf+16>>2]=stats.bavail;HEAP32[buf+20>>2]=stats.files;HEAP32[buf+24>>2]=stats.ffree;HEAP32[buf+28>>2]=stats.fsid;HEAP32[buf+44>>2]=stats.flags;HEAP32[buf+36>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>3]=BigInt(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_readlinkat(dirfd,path,buf,bufsize){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>abort("");var __emscripten_throw_longjmp=()=>{throw Infinity};var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function __gmtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __mmap_js(len,prot,flags,fd,offset,allocated,addr){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset){offset=bigintToI53Checked(offset);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetperformance.now();var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);return 0}var getHeapMax=()=>2147483648;var _emscripten_get_heap_max=()=>getHeapMax();var GLctx;var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_EXT_polygon_offset_clamp=ctx=>!!(ctx.extPolygonOffsetClamp=ctx.getExtension("EXT_polygon_offset_clamp"));var webgl_enable_EXT_clip_control=ctx=>!!(ctx.extClipControl=ctx.getExtension("EXT_clip_control"));var webgl_enable_WEBGL_polygon_mode=ctx=>!!(ctx.webglPolygonMode=ctx.getExtension("WEBGL_polygon_mode"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_clip_control","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_polygon_offset_clamp","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw","WEBGL_polygon_mode"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,unpackRowLength:0,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module["ctx"]=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]?.GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_multi_draw(GLctx);webgl_enable_EXT_polygon_offset_clamp(GLctx);webgl_enable_EXT_clip_control(GLctx);webgl_enable_WEBGL_polygon_mode(GLctx);webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=(target,id)=>{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var _glClientWaitSync=(sync,flags,timeout)=>{timeout=Number(timeout);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glClipControlEXT=(origin,depth)=>{GLctx.extClipControl["clipControlEXT"](origin,depth)};var _emscripten_glClipControlEXT=_glClipControlEXT;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8.subarray(data,data+imageSize))};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8.subarray(data,data+imageSize))};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedBaseInstanceWEBGL=(mode,first,count,instanceCount,baseInstance)=>{GLctx.dibvbi["drawArraysInstancedBaseInstanceWEBGL"](mode,first,count,instanceCount,baseInstance)};var _emscripten_glDrawArraysInstancedBaseInstanceWEBGL=_glDrawArraysInstancedBaseInstanceWEBGL;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedBaseVertexBaseInstanceWEBGL=(mode,count,type,offset,instanceCount,baseVertex,baseinstance)=>{GLctx.dibvbi["drawElementsInstancedBaseVertexBaseInstanceWEBGL"](mode,count,type,offset,instanceCount,baseVertex,baseinstance)};var _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL=_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name);var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name);var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=()=>{var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){var numActiveUniforms=GLctx.getProgramParameter(program,35718);for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){var numActiveAttributes=GLctx.getProgramParameter(program,35721);for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){var numActiveUniformBlocks=GLctx.getProgramParameter(program,35382);for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var webGLVersion=GLctx.getParameter(7938);var glVersion=`OpenGL ES 2.0 (${webGLVersion})`;if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${webGLVersion})`;ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};var numActiveUniforms=GLctx.getProgramParameter(program,35718);for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=(x0,x1)=>GLctx.hint(x0,x1);var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsSync=_glIsSync;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=array=>{var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glMultiDrawArraysInstancedBaseInstanceWEBGL=(mode,firsts,counts,instanceCounts,baseInstances,drawCount)=>{GLctx.mdibvbi["multiDrawArraysInstancedBaseInstanceWEBGL"](mode,HEAP32,firsts>>2,HEAP32,counts>>2,HEAP32,instanceCounts>>2,HEAPU32,baseInstances>>2,drawCount)};var _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL=_glMultiDrawArraysInstancedBaseInstanceWEBGL;var _glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL=(mode,counts,type,offsets,instanceCounts,baseVertices,baseInstances,drawCount)=>{GLctx.mdibvbi["multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL"](mode,HEAP32,counts>>2,type,HEAP32,offsets>>2,HEAP32,instanceCounts>>2,HEAP32,baseVertices>>2,HEAPU32,baseInstances>>2,drawCount)};var _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL=_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL;var _glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}else if(pname==3314){GL.unpackRowLength=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonModeWEBGL=(face,mode)=>{GLctx.webglPolygonMode["polygonModeWEBGL"](face,mode)};var _emscripten_glPolygonModeWEBGL=_glPolygonModeWEBGL;var _glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffset=_glPolygonOffset;var _glPolygonOffsetClampEXT=(factor,units,clamp)=>{GLctx.extPolygonOffsetClamp["polygonOffsetClampEXT"](factor,units,clamp)};var _emscripten_glPolygonOffsetClampEXT=_glPolygonOffsetClampEXT;var _glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=x0=>GLctx.readBuffer(x0);var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=(width,height,sizePerPixel)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=(GL.unpackRowLength||width)*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,GL.unpackAlignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels);return}var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target);return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=()=>{};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);var index=toTypedArrayIndex(pixels,heap);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,index);return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null;GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixelData)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexStorage3D=_glTexStorage3D;var _glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){count*=2;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){count*=2;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){count*=3;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){count*=3;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count];var heap=HEAPF32;value=value>>2;count*=4;for(var i=0;i>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){count*=4;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){count*=4;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){count*=9;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count];var heap=HEAPF32;value=value>>2;count*=16;for(var i=0;i>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout)=>{timeout=Number(timeout);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var _emscripten_request_animation_frame_loop=(cb,userData)=>{function tick(timeStamp){if(getWasmTableEntry(cb)(timeStamp,userData)){requestAnimationFrame(tick)}}return requestAnimationFrame(tick)};var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _llvm_eh_typeid_for=type=>type;function _random_get(buffer,size){try{randomFill(HEAPU8.subarray(buffer,buffer+size));return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack="";for(let i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<=288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<=288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i)}{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"]}Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["GL"]=GL;var wasmImports={F:___cxa_begin_catch,K:___cxa_end_catch,a:___cxa_find_matching_catch_2,n:___cxa_find_matching_catch_3,aa:___cxa_find_matching_catch_4,xa:___cxa_rethrow,H:___cxa_throw,bb:___cxa_uncaught_exceptions,e:___resumeException,Aa:___syscall_fcntl64,vb:___syscall_fstat64,rb:___syscall_getcwd,ib:___syscall_getdents64,wb:___syscall_ioctl,sb:___syscall_lstat64,tb:___syscall_newfstatat,Ba:___syscall_openat,gb:___syscall_readlinkat,ub:___syscall_stat64,zb:__abort_js,db:__emscripten_throw_longjmp,mb:__gmtime_js,kb:__mmap_js,lb:__munmap_js,Ab:__tzset_js,yb:_clock_time_get,xb:_emscripten_date_now,fb:_emscripten_get_heap_max,_:_emscripten_get_now,Ef:_emscripten_glActiveTexture,Ff:_emscripten_glAttachShader,ge:_emscripten_glBeginQuery,ae:_emscripten_glBeginQueryEXT,Gc:_emscripten_glBeginTransformFeedback,Gf:_emscripten_glBindAttribLocation,Hf:_emscripten_glBindBuffer,Cc:_emscripten_glBindBufferBase,Dc:_emscripten_glBindBufferRange,Ee:_emscripten_glBindFramebuffer,Fe:_emscripten_glBindRenderbuffer,me:_emscripten_glBindSampler,If:_emscripten_glBindTexture,Sb:_emscripten_glBindTransformFeedback,$e:_emscripten_glBindVertexArray,cf:_emscripten_glBindVertexArrayOES,Jf:_emscripten_glBlendColor,Kf:_emscripten_glBlendEquation,Kd:_emscripten_glBlendEquationSeparate,Lf:_emscripten_glBlendFunc,Jd:_emscripten_glBlendFuncSeparate,ye:_emscripten_glBlitFramebuffer,Mf:_emscripten_glBufferData,Nf:_emscripten_glBufferSubData,Ge:_emscripten_glCheckFramebufferStatus,Of:_emscripten_glClear,fc:_emscripten_glClearBufferfi,gc:_emscripten_glClearBufferfv,ic:_emscripten_glClearBufferiv,hc:_emscripten_glClearBufferuiv,Pf:_emscripten_glClearColor,Id:_emscripten_glClearDepthf,Qf:_emscripten_glClearStencil,ve:_emscripten_glClientWaitSync,$c:_emscripten_glClipControlEXT,Rf:_emscripten_glColorMask,Sf:_emscripten_glCompileShader,Tf:_emscripten_glCompressedTexImage2D,Sc:_emscripten_glCompressedTexImage3D,Uf:_emscripten_glCompressedTexSubImage2D,Rc:_emscripten_glCompressedTexSubImage3D,xe:_emscripten_glCopyBufferSubData,Hd:_emscripten_glCopyTexImage2D,Vf:_emscripten_glCopyTexSubImage2D,Tc:_emscripten_glCopyTexSubImage3D,Wf:_emscripten_glCreateProgram,Xf:_emscripten_glCreateShader,Zf:_emscripten_glCullFace,_f:_emscripten_glDeleteBuffers,He:_emscripten_glDeleteFramebuffers,$f:_emscripten_glDeleteProgram,he:_emscripten_glDeleteQueries,be:_emscripten_glDeleteQueriesEXT,Ie:_emscripten_glDeleteRenderbuffers,ne:_emscripten_glDeleteSamplers,ag:_emscripten_glDeleteShader,we:_emscripten_glDeleteSync,bg:_emscripten_glDeleteTextures,Rb:_emscripten_glDeleteTransformFeedbacks,af:_emscripten_glDeleteVertexArrays,df:_emscripten_glDeleteVertexArraysOES,Gd:_emscripten_glDepthFunc,cg:_emscripten_glDepthMask,Fd:_emscripten_glDepthRangef,Ed:_emscripten_glDetachShader,dg:_emscripten_glDisable,eg:_emscripten_glDisableVertexAttribArray,fg:_emscripten_glDrawArrays,Ye:_emscripten_glDrawArraysInstanced,Nd:_emscripten_glDrawArraysInstancedANGLE,Db:_emscripten_glDrawArraysInstancedARB,Ve:_emscripten_glDrawArraysInstancedBaseInstanceWEBGL,Yc:_emscripten_glDrawArraysInstancedEXT,Eb:_emscripten_glDrawArraysInstancedNV,Te:_emscripten_glDrawBuffers,Wc:_emscripten_glDrawBuffersEXT,Od:_emscripten_glDrawBuffersWEBGL,gg:_emscripten_glDrawElements,Ze:_emscripten_glDrawElementsInstanced,Md:_emscripten_glDrawElementsInstancedANGLE,Bb:_emscripten_glDrawElementsInstancedARB,We:_emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL,Cb:_emscripten_glDrawElementsInstancedEXT,Xc:_emscripten_glDrawElementsInstancedNV,Ne:_emscripten_glDrawRangeElements,hg:_emscripten_glEnable,ig:_emscripten_glEnableVertexAttribArray,ie:_emscripten_glEndQuery,ce:_emscripten_glEndQueryEXT,Fc:_emscripten_glEndTransformFeedback,se:_emscripten_glFenceSync,jg:_emscripten_glFinish,kg:_emscripten_glFlush,Je:_emscripten_glFramebufferRenderbuffer,Ke:_emscripten_glFramebufferTexture2D,Jc:_emscripten_glFramebufferTextureLayer,lg:_emscripten_glFrontFace,mg:_emscripten_glGenBuffers,Le:_emscripten_glGenFramebuffers,je:_emscripten_glGenQueries,de:_emscripten_glGenQueriesEXT,Me:_emscripten_glGenRenderbuffers,oe:_emscripten_glGenSamplers,ng:_emscripten_glGenTextures,Qb:_emscripten_glGenTransformFeedbacks,Xe:_emscripten_glGenVertexArrays,ef:_emscripten_glGenVertexArraysOES,Ae:_emscripten_glGenerateMipmap,Dd:_emscripten_glGetActiveAttrib,Cd:_emscripten_glGetActiveUniform,ac:_emscripten_glGetActiveUniformBlockName,bc:_emscripten_glGetActiveUniformBlockiv,dc:_emscripten_glGetActiveUniformsiv,Bd:_emscripten_glGetAttachedShaders,Ad:_emscripten_glGetAttribLocation,zd:_emscripten_glGetBooleanv,Xb:_emscripten_glGetBufferParameteri64v,og:_emscripten_glGetBufferParameteriv,pg:_emscripten_glGetError,qg:_emscripten_glGetFloatv,rc:_emscripten_glGetFragDataLocation,Be:_emscripten_glGetFramebufferAttachmentParameteriv,Yb:_emscripten_glGetInteger64i_v,_b:_emscripten_glGetInteger64v,Hc:_emscripten_glGetIntegeri_v,sg:_emscripten_glGetIntegerv,Ib:_emscripten_glGetInternalformativ,Mb:_emscripten_glGetProgramBinary,tg:_emscripten_glGetProgramInfoLog,ug:_emscripten_glGetProgramiv,Zd:_emscripten_glGetQueryObjecti64vEXT,Qd:_emscripten_glGetQueryObjectivEXT,_d:_emscripten_glGetQueryObjectui64vEXT,ke:_emscripten_glGetQueryObjectuiv,ee:_emscripten_glGetQueryObjectuivEXT,le:_emscripten_glGetQueryiv,fe:_emscripten_glGetQueryivEXT,Ce:_emscripten_glGetRenderbufferParameteriv,Tb:_emscripten_glGetSamplerParameterfv,Ub:_emscripten_glGetSamplerParameteriv,vg:_emscripten_glGetShaderInfoLog,Wd:_emscripten_glGetShaderPrecisionFormat,yd:_emscripten_glGetShaderSource,wg:_emscripten_glGetShaderiv,xg:_emscripten_glGetString,bf:_emscripten_glGetStringi,Zb:_emscripten_glGetSynciv,xd:_emscripten_glGetTexParameterfv,wd:_emscripten_glGetTexParameteriv,Ac:_emscripten_glGetTransformFeedbackVarying,cc:_emscripten_glGetUniformBlockIndex,ec:_emscripten_glGetUniformIndices,yg:_emscripten_glGetUniformLocation,vd:_emscripten_glGetUniformfv,ud:_emscripten_glGetUniformiv,sc:_emscripten_glGetUniformuiv,zc:_emscripten_glGetVertexAttribIiv,yc:_emscripten_glGetVertexAttribIuiv,rd:_emscripten_glGetVertexAttribPointerv,td:_emscripten_glGetVertexAttribfv,sd:_emscripten_glGetVertexAttribiv,qd:_emscripten_glHint,Xd:_emscripten_glInvalidateFramebuffer,Yd:_emscripten_glInvalidateSubFramebuffer,pd:_emscripten_glIsBuffer,od:_emscripten_glIsEnabled,nd:_emscripten_glIsFramebuffer,md:_emscripten_glIsProgram,Qc:_emscripten_glIsQuery,Rd:_emscripten_glIsQueryEXT,ld:_emscripten_glIsRenderbuffer,Wb:_emscripten_glIsSampler,kd:_emscripten_glIsShader,te:_emscripten_glIsSync,zg:_emscripten_glIsTexture,Pb:_emscripten_glIsTransformFeedback,Ic:_emscripten_glIsVertexArray,Pd:_emscripten_glIsVertexArrayOES,Ag:_emscripten_glLineWidth,Bg:_emscripten_glLinkProgram,Re:_emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL,Se:_emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL,Ob:_emscripten_glPauseTransformFeedback,Cg:_emscripten_glPixelStorei,_c:_emscripten_glPolygonModeWEBGL,jd:_emscripten_glPolygonOffset,ad:_emscripten_glPolygonOffsetClampEXT,Lb:_emscripten_glProgramBinary,Kb:_emscripten_glProgramParameteri,$d:_emscripten_glQueryCounterEXT,Ue:_emscripten_glReadBuffer,Dg:_emscripten_glReadPixels,id:_emscripten_glReleaseShaderCompiler,De:_emscripten_glRenderbufferStorage,ze:_emscripten_glRenderbufferStorageMultisample,Nb:_emscripten_glResumeTransformFeedback,hd:_emscripten_glSampleCoverage,pe:_emscripten_glSamplerParameterf,Vb:_emscripten_glSamplerParameterfv,qe:_emscripten_glSamplerParameteri,re:_emscripten_glSamplerParameteriv,Eg:_emscripten_glScissor,gd:_emscripten_glShaderBinary,Fg:_emscripten_glShaderSource,Gg:_emscripten_glStencilFunc,Hg:_emscripten_glStencilFuncSeparate,Ig:_emscripten_glStencilMask,Jg:_emscripten_glStencilMaskSeparate,Kg:_emscripten_glStencilOp,Lg:_emscripten_glStencilOpSeparate,Ha:_emscripten_glTexImage2D,Vc:_emscripten_glTexImage3D,Ia:_emscripten_glTexParameterf,Ja:_emscripten_glTexParameterfv,Ka:_emscripten_glTexParameteri,La:_emscripten_glTexParameteriv,Oe:_emscripten_glTexStorage2D,Jb:_emscripten_glTexStorage3D,Ma:_emscripten_glTexSubImage2D,Uc:_emscripten_glTexSubImage3D,Bc:_emscripten_glTransformFeedbackVaryings,Na:_emscripten_glUniform1f,Oa:_emscripten_glUniform1fv,Af:_emscripten_glUniform1i,Bf:_emscripten_glUniform1iv,qc:_emscripten_glUniform1ui,mc:_emscripten_glUniform1uiv,Cf:_emscripten_glUniform2f,Df:_emscripten_glUniform2fv,zf:_emscripten_glUniform2i,yf:_emscripten_glUniform2iv,pc:_emscripten_glUniform2ui,lc:_emscripten_glUniform2uiv,xf:_emscripten_glUniform3f,wf:_emscripten_glUniform3fv,vf:_emscripten_glUniform3i,uf:_emscripten_glUniform3iv,oc:_emscripten_glUniform3ui,kc:_emscripten_glUniform3uiv,tf:_emscripten_glUniform4f,sf:_emscripten_glUniform4fv,ff:_emscripten_glUniform4i,gf:_emscripten_glUniform4iv,nc:_emscripten_glUniform4ui,jc:_emscripten_glUniform4uiv,$b:_emscripten_glUniformBlockBinding,hf:_emscripten_glUniformMatrix2fv,Pc:_emscripten_glUniformMatrix2x3fv,Nc:_emscripten_glUniformMatrix2x4fv,jf:_emscripten_glUniformMatrix3fv,Oc:_emscripten_glUniformMatrix3x2fv,Lc:_emscripten_glUniformMatrix3x4fv,kf:_emscripten_glUniformMatrix4fv,Mc:_emscripten_glUniformMatrix4x2fv,Kc:_emscripten_glUniformMatrix4x3fv,lf:_emscripten_glUseProgram,fd:_emscripten_glValidateProgram,mf:_emscripten_glVertexAttrib1f,ed:_emscripten_glVertexAttrib1fv,dd:_emscripten_glVertexAttrib2f,nf:_emscripten_glVertexAttrib2fv,cd:_emscripten_glVertexAttrib3f,of:_emscripten_glVertexAttrib3fv,bd:_emscripten_glVertexAttrib4f,pf:_emscripten_glVertexAttrib4fv,Pe:_emscripten_glVertexAttribDivisor,Ld:_emscripten_glVertexAttribDivisorANGLE,Fb:_emscripten_glVertexAttribDivisorARB,Zc:_emscripten_glVertexAttribDivisorEXT,Hb:_emscripten_glVertexAttribDivisorNV,xc:_emscripten_glVertexAttribI4i,vc:_emscripten_glVertexAttribI4iv,wc:_emscripten_glVertexAttribI4ui,uc:_emscripten_glVertexAttribI4uiv,Qe:_emscripten_glVertexAttribIPointer,qf:_emscripten_glVertexAttribPointer,rf:_emscripten_glViewport,ue:_emscripten_glWaitSync,rg:_emscripten_request_animation_frame_loop,eb:_emscripten_resize_heap,ob:_environ_get,pb:_environ_sizes_get,Ra:_exit,$:_fd_close,jb:_fd_pread,za:_fd_read,nb:_fd_seek,ia:_fd_write,Pa:_glGetIntegerv,la:_glGetString,Qa:_glGetStringi,Ud:invoke_dd,Td:invoke_ddd,Vd:invoke_dddd,va:invoke_diii,Ua:invoke_fdiiii,Ta:invoke_fdiiiii,Sd:invoke_fff,Sa:invoke_fii,wa:invoke_fiii,r:invoke_fiiidi,O:invoke_fiiif,u:invoke_fiiiidi,q:invoke_i,j:invoke_ii,sa:invoke_iif,tc:invoke_iiffi,na:invoke_iiffiii,h:invoke_iii,Yf:invoke_iiiff,f:invoke_iiii,k:invoke_iiiii,ab:invoke_iiiiid,G:invoke_iiiiii,x:invoke_iiiiiii,D:invoke_iiiiiiii,s:invoke_iiiiiiiii,ma:invoke_iiiiiiiiii,Y:invoke_iiiiiiiiiiii,Ea:invoke_iiiiiiiiiiiifiij,qa:invoke_iijj,cb:invoke_j,da:invoke_ji,T:invoke_jiii,Z:invoke_jiiii,I:invoke_jjji,m:invoke_v,_e:invoke_vff,b:invoke_vi,N:invoke_vid,ca:invoke_vif,t:invoke_viff,A:invoke_viffff,R:invoke_vifffff,Va:invoke_viffffff,y:invoke_viffi,fa:invoke_viffiiiiiii,oa:invoke_vifi,c:invoke_vii,Ya:invoke_viidii,M:invoke_viif,E:invoke_viiff,z:invoke_viifiiifi,d:invoke_viii,ka:invoke_viiif,B:invoke_viiiffi,U:invoke_viiiffiffii,Za:invoke_viiifi,V:invoke_viiififiiiiiiiiiiii,i:invoke_viiii,Xa:invoke_viiiidididii,ua:invoke_viiiif,ra:invoke_viiiiff,Ca:invoke_viiiiffi,g:invoke_viiiii,Ga:invoke_viiiiiff,Wa:invoke_viiiiiffiii,Gb:invoke_viiiiifi,l:invoke_viiiiii,o:invoke_viiiiiii,P:invoke_viiiiiiii,S:invoke_viiiiiiiii,J:invoke_viiiiiiiiii,pa:invoke_viiiiiiiiiii,X:invoke_viiiiiiiiiiiiiii,Fa:invoke_viiiiiji,Ec:invoke_viiiijjiiiiff,Q:invoke_viiij,w:invoke_viiijii,v:invoke_viiijiii,ea:invoke_viij,p:invoke_viiji,ha:invoke_viijiff,ta:invoke_viijiiiif,ga:invoke_viijiiiiiiiiii,W:invoke_viijj,L:invoke_vij,$a:invoke_vijff,_a:invoke_viji,C:invoke_vijii,Da:invoke_vijiifi,ya:invoke_vijiii,ba:invoke_vijjjj,hb:invoke_vjii,ja:_llvm_eh_typeid_for,qb:_random_get};var wasmExports=await createWasm();var ___wasm_call_ctors=wasmExports["Ng"];var _malloc=wasmExports["Og"];var _allocate=Module["_allocate"]=wasmExports["Qg"];var _deallocate=Module["_deallocate"]=wasmExports["Rg"];var _init=Module["_init"]=wasmExports["Sg"];var _tick=Module["_tick"]=wasmExports["Tg"];var _resize_surface=Module["_resize_surface"]=wasmExports["Ug"];var _redraw=Module["_redraw"]=wasmExports["Vg"];var _load_scene_json=Module["_load_scene_json"]=wasmExports["Wg"];var _apply_scene_transactions=Module["_apply_scene_transactions"]=wasmExports["Xg"];var _pointer_move=Module["_pointer_move"]=wasmExports["Yg"];var _command=Module["_command"]=wasmExports["Zg"];var _set_main_camera_transform=Module["_set_main_camera_transform"]=wasmExports["_g"];var _add_image=Module["_add_image"]=wasmExports["$g"];var _get_image_bytes=Module["_get_image_bytes"]=wasmExports["ah"];var _get_image_size=Module["_get_image_size"]=wasmExports["bh"];var _add_font=Module["_add_font"]=wasmExports["ch"];var _has_missing_fonts=Module["_has_missing_fonts"]=wasmExports["dh"];var _list_missing_fonts=Module["_list_missing_fonts"]=wasmExports["eh"];var _list_available_fonts=Module["_list_available_fonts"]=wasmExports["fh"];var _set_default_fallback_fonts=Module["_set_default_fallback_fonts"]=wasmExports["gh"];var _get_default_fallback_fonts=Module["_get_default_fallback_fonts"]=wasmExports["hh"];var _get_node_id_from_point=Module["_get_node_id_from_point"]=wasmExports["ih"];var _get_node_ids_from_point=Module["_get_node_ids_from_point"]=wasmExports["jh"];var _get_node_ids_from_envelope=Module["_get_node_ids_from_envelope"]=wasmExports["kh"];var _get_node_absolute_bounding_box=Module["_get_node_absolute_bounding_box"]=wasmExports["lh"];var _export_node_as=Module["_export_node_as"]=wasmExports["mh"];var _to_vector_network=Module["_to_vector_network"]=wasmExports["nh"];var _set_debug=Module["_set_debug"]=wasmExports["oh"];var _toggle_debug=Module["_toggle_debug"]=wasmExports["ph"];var _set_verbose=Module["_set_verbose"]=wasmExports["qh"];var _devtools_rendering_set_show_ruler=Module["_devtools_rendering_set_show_ruler"]=wasmExports["rh"];var _devtools_rendering_set_show_tiles=Module["_devtools_rendering_set_show_tiles"]=wasmExports["sh"];var _runtime_renderer_set_cache_tile=Module["_runtime_renderer_set_cache_tile"]=wasmExports["th"];var _devtools_rendering_set_show_fps_meter=Module["_devtools_rendering_set_show_fps_meter"]=wasmExports["uh"];var _devtools_rendering_set_show_stats=Module["_devtools_rendering_set_show_stats"]=wasmExports["vh"];var _devtools_rendering_set_show_hit_testing=Module["_devtools_rendering_set_show_hit_testing"]=wasmExports["wh"];var _highlight_strokes=Module["_highlight_strokes"]=wasmExports["xh"];var _load_dummy_scene=Module["_load_dummy_scene"]=wasmExports["yh"];var _load_benchmark_scene=Module["_load_benchmark_scene"]=wasmExports["zh"];var _grida_fonts_analyze_family=Module["_grida_fonts_analyze_family"]=wasmExports["Ah"];var _grida_fonts_parse_font=Module["_grida_fonts_parse_font"]=wasmExports["Bh"];var _grida_fonts_free=Module["_grida_fonts_free"]=wasmExports["Ch"];var _grida_markdown_to_html=Module["_grida_markdown_to_html"]=wasmExports["Dh"];var _grida_svg_optimize=Module["_grida_svg_optimize"]=wasmExports["Eh"];var _grida_svg_pack=Module["_grida_svg_pack"]=wasmExports["Fh"];var _main=Module["_main"]=wasmExports["Gh"];var _emscripten_builtin_memalign=wasmExports["Hh"];var _setThrew=wasmExports["Ih"];var __emscripten_tempret_set=wasmExports["Jh"];var __emscripten_stack_restore=wasmExports["Kh"];var __emscripten_stack_alloc=wasmExports["Lh"];var _emscripten_stack_get_current=wasmExports["Mh"];var ___cxa_decrement_exception_refcount=wasmExports["Nh"];var ___cxa_increment_exception_refcount=wasmExports["Oh"];var ___cxa_can_catch=wasmExports["Ph"];var ___cxa_get_exception_ptr=wasmExports["Qh"];function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiff(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiff(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vij(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiff(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viij(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vff(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiji(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0);return 0n}}function invoke_viiij(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiiifiij(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vif(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiji(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiif(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jjji(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0);return 0n}}function invoke_viiiijjiiiiff(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiffi(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vijiifi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiffi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vijii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiifi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viifiiifi(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vijiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vjii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiffi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiif(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijiff(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiijiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vijff(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viji(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijj(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiififiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijiiiif(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiffiffii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iif(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiff(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiifi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viffi(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iijj(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viif(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0);return 0n}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiiidi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viffff(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viidii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiidididii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiiiidi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vifi(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viff(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viffffff(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiiif(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiffiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vifffff(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fdiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fdiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viffiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vijjjj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dddd(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dd(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ddd(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fff(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_j(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0);return 0n}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0);return 0n}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();var noInitialRun=Module["noInitialRun"]||false;if(!noInitialRun)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}function preInit(){if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}preInit();run();moduleRtn=readyPromise; return moduleRtn; diff --git a/crates/grida-canvas-wasm/lib/bin/grida_canvas_wasm.wasm b/crates/grida-canvas-wasm/lib/bin/grida_canvas_wasm.wasm index 9365bdf6f4..447c314b7c 100755 --- a/crates/grida-canvas-wasm/lib/bin/grida_canvas_wasm.wasm +++ b/crates/grida-canvas-wasm/lib/bin/grida_canvas_wasm.wasm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b45f3a45e1739c09eac7f083f0e581a60ba8b6d83fd2b4ab184c44ed41f5d08 -size 12140119 +oid sha256:9f407084367b2c17c24cf295388699aa55f9a21bd3dfadd30c7ddc455edb3a18 +size 12682139 diff --git a/crates/grida-canvas-wasm/package.json b/crates/grida-canvas-wasm/package.json index c7526f442f..118c96ce80 100644 --- a/crates/grida-canvas-wasm/package.json +++ b/crates/grida-canvas-wasm/package.json @@ -1,7 +1,7 @@ { "name": "@grida/canvas-wasm", "description": "WASM bindings for Grida Canvas", - "version": "0.0.88-canary.0", + "version": "0.89.0-canary.0", "keywords": [ "grida", "canvas", diff --git a/crates/grida-canvas/AGENTS.md b/crates/grida-canvas/AGENTS.md index f0a719a10a..f0116bd093 100644 --- a/crates/grida-canvas/AGENTS.md +++ b/crates/grida-canvas/AGENTS.md @@ -70,10 +70,6 @@ cargo run --example tool_io_grida **Example:** -```sh -cargo run --example tool_io_grida ../../editor/public/examples/canvas/instagram-post-01.grida -``` - See [examples/tool_io_grida.rs](./examples/tool_io_grida.rs) for full documentation. ## Package Docs diff --git a/crates/grida-canvas/examples/tool_convert_svgpath.rs b/crates/grida-canvas/examples/tool_convert_svgpath.rs deleted file mode 100644 index 610859b6f0..0000000000 --- a/crates/grida-canvas/examples/tool_convert_svgpath.rs +++ /dev/null @@ -1,283 +0,0 @@ -//! Grida SVGPath to Vector Conversion Tool -//! -//! Converts all `svgpath` nodes to `vector` nodes in a .grida file. -//! -//! ## Usage -//! -//! ```bash -//! cargo run --example tool_convert_svgpath [output-path] [--preserve-order] -//! ``` -//! -//! If `output-path` is not provided, the file will be modified in place. -//! Use `--preserve-order` to preserve JSON key order for minimal git diffs. - -use cg::io::io_grida::{ - parse, JSONCanvasFile, JSONNode, JSONPathNode, JSONUnknownNodeProperties, JSONVectorNetwork, - JSONVectorNode, -}; -use cg::vectornetwork::vn::{ - VectorNetwork, VectorNetworkLoop, VectorNetworkRegion, VectorNetworkSegment, -}; -use json_patch::{Patch, PatchOperation}; -use serde_json::{self, Value}; -use skia_safe::Path; -use std::{env, fs, process::exit}; - -fn main() { - let args: Vec = env::args().collect(); - if args.len() < 2 { - eprintln!("Usage: cargo run --example tool_convert_svgpath [output-path] [--preserve-order]"); - exit(1); - } - - let (file_path, output_path, preserve_order) = parse_args(&args[1..]); - let content = read_file(&file_path); - let json_value: Value = parse_json(&content); - let mut file: JSONCanvasFile = parse_file(&content); - - let svgpath_count = count_nodes(&file, |n| matches!(n, JSONNode::Path(_))); - println!( - "✓ Parsed {} nodes ({} svgpath)", - file.document.nodes.len(), - svgpath_count - ); - - if svgpath_count == 0 { - println!("✓ No svgpath nodes to convert"); - return; - } - - let (patch_operations, converted_count, failed_count) = convert_nodes(&mut file); - println!( - "✓ Converted {} svgpath nodes to vector nodes", - converted_count - ); - if failed_count > 0 { - eprintln!("⚠ {} nodes failed to convert", failed_count); - } - - let updated_content = if preserve_order && !patch_operations.is_empty() { - apply_patches(json_value, patch_operations) - } else { - serde_json::to_string_pretty(&json_value).unwrap_or_else(|e| fatal("serialize", e)) - }; - - write_file(&output_path, updated_content); - println!("✓ Successfully updated file: {}", output_path); -} - -fn parse_args(args: &[String]) -> (String, String, bool) { - let mut file_path = None; - let mut output_path = None; - let mut preserve_order = false; - - for arg in args { - match arg.as_str() { - "--preserve-order" => preserve_order = true, - path if file_path.is_none() => file_path = Some(path.to_string()), - path if output_path.is_none() => output_path = Some(path.to_string()), - _ => { - eprintln!("Unknown argument: {}", arg); - exit(1); - } - } - } - - let file_path = file_path.expect("File path is required"); - let output_path = output_path.unwrap_or_else(|| file_path.clone()); - (file_path, output_path, preserve_order) -} - -fn read_file(path: &str) -> String { - fs::read_to_string(path).unwrap_or_else(|e| fatal("read file", e)) -} - -fn parse_json(content: &str) -> Value { - serde_json::from_str(content).unwrap_or_else(|e| fatal("parse JSON", e)) -} - -fn parse_file(content: &str) -> JSONCanvasFile { - parse(content).unwrap_or_else(|e| fatal("parse file", e)) -} - -fn count_nodes(file: &JSONCanvasFile, pred: F) -> usize -where - F: Fn(&JSONNode) -> bool, -{ - file.document.nodes.values().filter(|n| pred(n)).count() -} - -fn convert_nodes(file: &mut JSONCanvasFile) -> (Vec, usize, usize) { - let mut patch_operations = Vec::new(); - let mut converted_count = 0; - let mut failed_count = 0; - let node_ids: Vec = file.document.nodes.keys().cloned().collect(); - - for node_id in node_ids { - let node = file.document.nodes.remove(&node_id).unwrap(); - if let JSONNode::Path(path_node) = node { - match convert_svgpath_to_vector(&path_node) { - Some(vector_node) => { - converted_count += 1; - patch_operations.extend(create_patch_ops(&node_id, &vector_node)); - file.document - .nodes - .insert(node_id, JSONNode::Vector(vector_node)); - } - None => { - eprintln!("⚠ Warning: Failed to convert svgpath node {}", node_id); - failed_count += 1; - file.document - .nodes - .insert(node_id, JSONNode::Path(path_node)); - } - } - } else { - file.document.nodes.insert(node_id, node); - } - } - - (patch_operations, converted_count, failed_count) -} - -fn create_patch_ops(node_id: &str, vector_node: &JSONVectorNode) -> Vec { - let node_path = format!("/document/nodes/{}", escape_json_pointer(node_id)); - let mut ops = Vec::new(); - - ops.push( - serde_json::from_value(serde_json::json!({ - "op": "replace", - "path": format!("{}/type", node_path), - "value": "vector" - })) - .expect("Failed to create replace operation"), - ); - - ops.push( - serde_json::from_value(serde_json::json!({ - "op": "remove", - "path": format!("{}/paths", node_path) - })) - .expect("Failed to create remove operation"), - ); - - if let Ok(vn_json) = serde_json::to_value(&vector_node.vector_network) { - ops.push( - serde_json::from_value(serde_json::json!({ - "op": "add", - "path": format!("{}/vectorNetwork", node_path), - "value": vn_json - })) - .expect("Failed to create add operation"), - ); - } - - ops -} - -fn apply_patches(mut json_value: Value, patch_operations: Vec) -> String { - let patch = Patch(patch_operations); - json_patch::patch(&mut json_value, &patch).unwrap_or_else(|e| fatal("apply JSON patches", e)); - serde_json::to_string_pretty(&json_value).unwrap_or_else(|e| fatal("serialize", e)) -} - -fn write_file(path: &str, content: String) { - fs::write(path, content).unwrap_or_else(|e| fatal("write file", e)); -} - -fn fatal(operation: &str, error: impl std::fmt::Display) -> ! { - eprintln!("✗ Failed to {}: {}", operation, error); - exit(1); -} - -fn escape_json_pointer(segment: &str) -> String { - segment.replace('~', "~0").replace('/', "~1") -} - -fn convert_svgpath_to_vector(path_node: &JSONPathNode) -> Option { - let paths = path_node.paths.as_ref()?; - if paths.is_empty() { - return None; - } - - let mut network = VectorNetwork { - vertices: vec![], - segments: vec![], - regions: vec![], - }; - let mut vertex_offset = 0; - let mut segment_offset = 0; - - for svg_path in paths { - let skia_path = Path::from_svg(&svg_path.d)?; - let path_network: VectorNetwork = (&skia_path).into(); - let is_stroke = svg_path.fill.as_deref() == Some("stroke"); - - // Append vertices and segments with offsets - network - .vertices - .extend(path_network.vertices.iter().cloned()); - network.segments.extend( - path_network - .segments - .iter() - .map(|seg| VectorNetworkSegment { - a: seg.a + vertex_offset, - b: seg.b + vertex_offset, - ta: seg.ta, - tb: seg.tb, - }), - ); - - // Create regions for fill paths - if !is_stroke { - if path_network.regions.is_empty() { - let offset_segments: Vec = (0..path_network.segments.len()) - .map(|i| i + segment_offset) - .collect(); - if !offset_segments.is_empty() { - network.regions.push(VectorNetworkRegion { - loops: vec![VectorNetworkLoop(offset_segments)], - fill_rule: svg_path.fill_rule, - fills: None, - }); - } - } else { - for region in path_network.regions { - let offset_loops: Vec = region - .loops - .iter() - .map(|loop_| { - VectorNetworkLoop( - loop_.0.iter().map(|&idx| idx + segment_offset).collect(), - ) - }) - .collect(); - network.regions.push(VectorNetworkRegion { - loops: offset_loops, - fill_rule: region.fill_rule, - fills: region.fills, - }); - } - } - } - - vertex_offset = network.vertices.len(); - segment_offset = network.segments.len(); - } - - if network.vertices.is_empty() { - return None; - } - - let json_network: JSONVectorNetwork = (&network).into(); - let base: JSONUnknownNodeProperties = serde_json::from_value(serde_json::json!({ - "id": path_node.base.id, - })) - .expect("Failed to create base properties"); - - Some(JSONVectorNode { - base, - vector_network: Some(json_network), - }) -} diff --git a/crates/grida-canvas/examples/tool_io_grida.rs b/crates/grida-canvas/examples/tool_io_grida.rs index 4eef29ec28..eac8964186 100644 --- a/crates/grida-canvas/examples/tool_io_grida.rs +++ b/crates/grida-canvas/examples/tool_io_grida.rs @@ -9,12 +9,6 @@ //! cargo run --example tool_io_grida //! ``` //! -//! ## Example -//! -//! ```bash -//! cargo run --example tool_io_grida ../../editor/public/examples/canvas/instagram-post-01.grida -//! ``` -//! //! ## Output //! //! On success, the tool prints: @@ -61,7 +55,6 @@ fn main() { let type_name = match node { cg::io::io_grida::JSONNode::Group(_) => "group", cg::io::io_grida::JSONNode::Container(_) => "container", - cg::io::io_grida::JSONNode::Path(_) => "svgpath", cg::io::io_grida::JSONNode::Vector(_) => "vector", cg::io::io_grida::JSONNode::Ellipse(_) => "ellipse", cg::io::io_grida::JSONNode::Rectangle(_) => "rectangle", diff --git a/crates/grida-canvas/src/io/id_converter.rs b/crates/grida-canvas/src/io/id_converter.rs index 117e537231..c462d7d1f0 100644 --- a/crates/grida-canvas/src/io/id_converter.rs +++ b/crates/grida-canvas/src/io/id_converter.rs @@ -137,8 +137,7 @@ impl IdConverter { match json_node { JSONNode::Group(group) => Node::Group(GroupNodeRec::from(group)), JSONNode::Container(container) => Node::Container(ContainerNodeRec::from(container)), - JSONNode::Path(path) => Node::from(JSONNode::Path(path)), - JSONNode::Vector(path) => Node::from(JSONNode::Vector(path)), + JSONNode::Vector(vector) => Node::from(JSONNode::Vector(vector)), JSONNode::Ellipse(ellipse) => Node::from(JSONNode::Ellipse(ellipse)), JSONNode::Rectangle(rectangle) => Node::from(JSONNode::Rectangle(rectangle)), JSONNode::RegularPolygon(polygon) => Node::from(JSONNode::RegularPolygon(polygon)), diff --git a/crates/grida-canvas/src/io/io_grida.rs b/crates/grida-canvas/src/io/io_grida.rs index 73c80fa004..80e2104a68 100644 --- a/crates/grida-canvas/src/io/io_grida.rs +++ b/crates/grida-canvas/src/io/io_grida.rs @@ -147,14 +147,6 @@ pub struct CSSBorder { pub border_style: Option, } -#[derive(Debug, Deserialize)] -pub struct JSONSVGPath { - pub d: String, - #[serde(rename = "fill_rule", alias = "fillRule", default)] - pub fill_rule: FillRule, - pub fill: Option, -} - #[derive(Debug, Deserialize, Clone)] pub struct JSONVariableWidthProfile { pub stops: Vec, @@ -868,8 +860,6 @@ pub enum JSONNode { Group(JSONGroupNode), #[serde(rename = "container", alias = "component")] Container(JSONContainerNode), - #[serde(rename = "path", alias = "svgpath")] - Path(JSONPathNode), #[serde(rename = "vector")] Vector(JSONVectorNode), #[serde(rename = "ellipse")] @@ -944,44 +934,6 @@ impl From for Axis { } } -/// JSON representation of padding - supports both uniform and non-uniform values -#[derive(Debug, Deserialize, Clone, Copy, PartialEq)] -#[serde(untagged)] -pub enum JSONPadding { - /// Uniform padding (all sides equal) - Uniform(f32), - /// Non-uniform padding with individual sides - NonUniform { - #[serde(rename = "padding_top", alias = "paddingTop")] - padding_top: f32, - #[serde(rename = "padding_right", alias = "paddingRight")] - padding_right: f32, - #[serde(rename = "padding_bottom", alias = "paddingBottom")] - padding_bottom: f32, - #[serde(rename = "padding_left", alias = "paddingLeft")] - padding_left: f32, - }, -} - -impl From for EdgeInsets { - fn from(padding: JSONPadding) -> Self { - match padding { - JSONPadding::Uniform(value) => EdgeInsets::all(value), - JSONPadding::NonUniform { - padding_top, - padding_right, - padding_bottom, - padding_left, - } => EdgeInsets { - top: padding_top, - right: padding_right, - bottom: padding_bottom, - left: padding_left, - }, - } - } -} - #[derive(Debug, Deserialize)] pub struct JSONContainerNode { #[serde(flatten)] @@ -993,8 +945,15 @@ pub struct JSONContainerNode { // layout #[serde(rename = "layout", default)] pub layout: JSONLayoutMode, - #[serde(rename = "padding")] - pub padding: Option, + // Flat padding properties + #[serde(rename = "padding_top", alias = "paddingTop", default)] + pub padding_top: f32, + #[serde(rename = "padding_right", alias = "paddingRight", default)] + pub padding_right: f32, + #[serde(rename = "padding_bottom", alias = "paddingBottom", default)] + pub padding_bottom: f32, + #[serde(rename = "padding_left", alias = "paddingLeft", default)] + pub padding_left: f32, #[serde(rename = "direction", default)] pub direction: JSONAxis, #[serde(rename = "layout_wrap", alias = "layoutWrap")] @@ -1096,14 +1055,6 @@ pub struct JSONTextNode { pub text_transform: TextTransform, } -#[derive(Debug, Deserialize)] -pub struct JSONPathNode { - #[serde(flatten)] - pub base: JSONUnknownNodeProperties, - - pub paths: Option>, -} - pub type JSONVectorNetworkVertex = (f32, f32); // TODO_REMOVE_IR: Identical to VectorNetworkSegment, can use VectorNetworkSegment directly with serde attributes @@ -1354,7 +1305,19 @@ impl From for ContainerNodeRec { layout_wrap: node.layout_wrap, layout_main_axis_alignment: node.main_axis_alignment, layout_cross_axis_alignment: node.cross_axis_alignment, - layout_padding: node.padding.map(|p| p.into()), + layout_padding: { + let padding = EdgeInsets { + top: node.padding_top, + right: node.padding_right, + bottom: node.padding_bottom, + left: node.padding_left, + }; + if padding.is_zero() { + None + } else { + Some(padding) + } + }, layout_gap: if node.main_axis_gap > 0.0 || node.cross_axis_gap > 0.0 { Some(LayoutGap { main_axis_gap: node.main_axis_gap, @@ -1817,62 +1780,6 @@ impl From for Node { } } -impl From for Node { - fn from(node: JSONPathNode) -> Self { - // Build stroke width early before any moves - let stroke_width: SingularStrokeWidth = build_unknown_stroke_width(&node.base).into(); - - let transform = AffineTransform::from_box_center( - node.base.left.unwrap_or(0.0), - node.base.top.unwrap_or(0.0), - node.base.width.length(0.0), - node.base.height.length(0.0), - node.base.rotation, - ); - - // For vector nodes, we'll create a path node with the path data - Node::Path(PathNodeRec { - active: node.base.active, - opacity: node.base.opacity, - blend_mode: node.base.blend_mode.into(), - mask: node.base.mask.map(|m| m.into()), - effects: merge_effects( - node.base.fe_shadows, - node.base.fe_blur, - node.base.fe_backdrop_blur, - node.base.fe_liquid_glass, - node.base.fe_noises, - ), - transform, - fills: merge_paints(node.base.fill, node.base.fill_paints), - data: node.paths.map_or("".to_string(), |paths| { - paths - .iter() - .map(|path| path.d.clone()) - .collect::>() - .join(" ") - }), - strokes: merge_paints(node.base.stroke, node.base.stroke_paints), - stroke_style: StrokeStyle { - stroke_align: node.base.stroke_align.unwrap_or(StrokeAlign::Inside), - stroke_cap: node.base.stroke_cap.unwrap_or_default(), - stroke_join: node.base.stroke_join.unwrap_or_default(), - stroke_miter_limit: node.base.stroke_miter_limit.unwrap_or_default(), - stroke_dash_array: node.base.stroke_dash_array.map(StrokeDashArray::from), - }, - stroke_width, - layout_child: Some(LayoutChildStyle { - layout_positioning: node - .base - .position - .map(|position| position.into()) - .unwrap_or_default(), - layout_grow: 0.0, - }), - }) - } -} - impl From for Node { fn from(node: JSONLineNode) -> Self { let transform = AffineTransform::from_box_center( @@ -2027,8 +1934,7 @@ impl From for Node { JSONNode::Group(group) => Node::Group(group.into()), JSONNode::Container(container) => Node::Container(container.into()), JSONNode::Text(text) => Node::TextSpan(text.into()), - JSONNode::Path(vector) => vector.into(), - JSONNode::Vector(path) => path.into(), + JSONNode::Vector(vector) => vector.into(), JSONNode::Ellipse(ellipse) => ellipse.into(), JSONNode::Rectangle(rectangle) => rectangle.into(), JSONNode::RegularPolygon(rpolygon) => rpolygon.into(), @@ -2228,36 +2134,8 @@ mod padding_tests { use serde_json::json; #[test] - fn test_uniform_padding_deserialize() { - let json = json!(20.0); - let padding: JSONPadding = serde_json::from_value(json).unwrap(); - - let edge_insets: EdgeInsets = padding.into(); - assert_eq!(edge_insets.top, 20.0); - assert_eq!(edge_insets.right, 20.0); - assert_eq!(edge_insets.bottom, 20.0); - assert_eq!(edge_insets.left, 20.0); - } - - #[test] - fn test_non_uniform_padding_deserialize() { - let json = json!({ - "padding_top": 10.0, - "padding_right": 20.0, - "padding_bottom": 30.0, - "padding_left": 40.0 - }); - let padding: JSONPadding = serde_json::from_value(json).unwrap(); - - let edge_insets: EdgeInsets = padding.into(); - assert_eq!(edge_insets.top, 10.0); - assert_eq!(edge_insets.right, 20.0); - assert_eq!(edge_insets.bottom, 30.0); - assert_eq!(edge_insets.left, 40.0); - } - - #[test] - fn test_container_with_uniform_padding() { + fn test_container_with_flat_padding_properties() { + // Test flat properties format let json = json!({ "type": "container", "id": "container-1", @@ -2273,7 +2151,10 @@ mod padding_tests { "rotation": 0, "width": 200, "height": 200, - "padding": 16.0, + "padding_top": 10.0, + "padding_right": 15.0, + "padding_bottom": 20.0, + "padding_left": 25.0, "layout": "flex" }); @@ -2281,14 +2162,15 @@ mod padding_tests { let container_rec: ContainerNodeRec = container.into(); let padding = container_rec.layout_container.layout_padding.unwrap(); - assert_eq!(padding.top, 16.0); - assert_eq!(padding.right, 16.0); - assert_eq!(padding.bottom, 16.0); - assert_eq!(padding.left, 16.0); + assert_eq!(padding.top, 10.0); + assert_eq!(padding.right, 15.0); + assert_eq!(padding.bottom, 20.0); + assert_eq!(padding.left, 25.0); } #[test] - fn test_container_with_non_uniform_padding() { + fn test_container_with_partial_padding() { + // Test that partial padding values default to 0 let json = json!({ "type": "container", "id": "container-2", @@ -2304,12 +2186,8 @@ mod padding_tests { "rotation": 0, "width": 200, "height": 200, - "padding": { - "padding_top": 10.0, - "padding_right": 15.0, - "padding_bottom": 20.0, - "padding_left": 25.0 - }, + "padding_top": 10.0, + "padding_left": 20.0, "layout": "flex" }); @@ -2318,9 +2196,9 @@ mod padding_tests { let padding = container_rec.layout_container.layout_padding.unwrap(); assert_eq!(padding.top, 10.0); - assert_eq!(padding.right, 15.0); - assert_eq!(padding.bottom, 20.0); - assert_eq!(padding.left, 25.0); + assert_eq!(padding.right, 0.0); + assert_eq!(padding.bottom, 0.0); + assert_eq!(padding.left, 20.0); } #[test] @@ -3206,7 +3084,7 @@ mod tests { #[test] fn parse_grida_file_new_format() { let json = r#"{ - "version": "0.0.4-beta+20251209", + "version": "0.89.0-beta+20251219", "document": { "nodes": { "main": { @@ -3263,7 +3141,7 @@ mod tests { fn parse_grida_file_with_container_children() { // Test that container nodes with children in links work correctly let json = r#"{ - "version": "0.0.4-beta+20251209", + "version": "0.89.0-beta+20251219", "document": { "nodes": { "main": { @@ -3330,7 +3208,7 @@ mod tests { fn test_nested_children_population() { // Test that deeply nested children get properly populated from links let json = r#"{ - "version": "0.0.4-beta+20251209", + "version": "0.89.0-beta+20251219", "document": { "nodes": { "main": { @@ -3924,7 +3802,10 @@ mod tests { "width": 400.0, "height": 300.0, "layout": "flex", - "padding": 20.0 + "padding_top": 20.0, + "padding_right": 20.0, + "padding_bottom": 20.0, + "padding_left": 20.0 }"#; let node: JSONNode = @@ -3932,8 +3813,11 @@ mod tests { match node { JSONNode::Container(container) => { - // Verify padding field - assert_eq!(container.padding, Some(JSONPadding::Uniform(20.0))); + // Verify padding fields + assert_eq!(container.padding_top, 20.0); + assert_eq!(container.padding_right, 20.0); + assert_eq!(container.padding_bottom, 20.0); + assert_eq!(container.padding_left, 20.0); // Verify conversion to EdgeInsets let converted: ContainerNodeRec = container.into(); @@ -3962,7 +3846,10 @@ mod tests { "height": 400.0, "layout": "flex", "direction": "vertical", - "padding": 15.0, + "padding_top": 15.0, + "padding_right": 15.0, + "padding_bottom": 15.0, + "padding_left": 15.0, "main_axis_alignment": "center", "cross_axis_alignment": "stretch" }"#; @@ -3975,7 +3862,10 @@ mod tests { // Verify all properties assert!(matches!(container.layout, JSONLayoutMode::Flex)); assert!(matches!(container.direction, JSONAxis::Vertical)); - assert_eq!(container.padding, Some(JSONPadding::Uniform(15.0))); + assert_eq!(container.padding_top, 15.0); + assert_eq!(container.padding_right, 15.0); + assert_eq!(container.padding_bottom, 15.0); + assert_eq!(container.padding_left, 15.0); assert!(matches!( container.main_axis_alignment, Some(MainAxisAlignment::Center) @@ -4212,7 +4102,10 @@ mod tests { "layout": "flex", "direction": "horizontal", "layout_wrap": "wrap", - "padding": 20.0, + "padding_top": 20.0, + "padding_right": 20.0, + "padding_bottom": 20.0, + "padding_left": 20.0, "main_axis_gap": 30.0, "cross_axis_gap": 15.0, "main_axis_alignment": "space-between", @@ -4228,7 +4121,10 @@ mod tests { assert!(matches!(container.layout, JSONLayoutMode::Flex)); assert!(matches!(container.direction, JSONAxis::Horizontal)); assert!(matches!(container.layout_wrap, Some(LayoutWrap::Wrap))); - assert_eq!(container.padding, Some(JSONPadding::Uniform(20.0))); + assert_eq!(container.padding_top, 20.0); + assert_eq!(container.padding_right, 20.0); + assert_eq!(container.padding_bottom, 20.0); + assert_eq!(container.padding_left, 20.0); assert_eq!(container.main_axis_gap, 30.0); assert_eq!(container.cross_axis_gap, 15.0); assert!(matches!( diff --git a/docs/wg/feat-fig/glossary/fig.kiwi.md b/docs/wg/feat-fig/glossary/fig.kiwi.md index ef161340d8..9d6a475885 100644 --- a/docs/wg/feat-fig/glossary/fig.kiwi.md +++ b/docs/wg/feat-fig/glossary/fig.kiwi.md @@ -263,6 +263,98 @@ This structure has been verified in: Both formats show the same pattern: component sets are FRAME nodes containing SYMBOL children, with distinguishing properties on both the FRAME and SYMBOL nodes. +### Vector + +**Node Type:** `VECTOR` + +VECTOR nodes represent vector graphics (paths/shapes) in Figma. The vector geometry is stored in a binary format within the `.fig` file. + +**VectorData Structure:** + +VECTOR nodes contain a `vectorData` field of type `VectorData`: + +| Field | Type | Description | +| -------------------- | --------------- | ---------------------------------------------- | +| `vectorNetworkBlob` | `number?` | Blob ID referencing binary vector network data | +| `normalizedSize` | `Vector?` | Normalized size (x, y) | +| `styleOverrideTable` | `NodeChange[]?` | Style overrides | + +**Vector Network Blob Format:** + +The `vectorNetworkBlob` field contains a blob ID (number) that references binary data stored in the message's `blobs` array. This binary data encodes the vector network in a specific little-endian format: + +**Header (12 bytes total):** + +| Field | Type | Offset | Description | +| -------------- | ---- | ------ | ------------------ | +| `vertexCount` | u32 | 0 | Number of vertices | +| `segmentCount` | u32 | 4 | Number of segments | +| `regionCount` | u32 | 8 | Number of regions | + +**Vertices (12 bytes each):** + +| Field | Type | Offset | Description | +| --------- | ---- | ------ | ------------------------------- | +| `styleID` | u32 | 0 | Style identifier for the vertex | +| `x` | f32 | 4 | X coordinate | +| `y` | f32 | 8 | Y coordinate | + +**Segments (28 bytes each):** + +| Field | Type | Offset | Description | +| ------------- | ---- | ------ | -------------------------------- | +| `styleID` | u32 | 0 | Style identifier for the segment | +| `startVertex` | u32 | 4 | Index of the start vertex | +| `start.dx` | f32 | 8 | Start tangent X component | +| `start.dy` | f32 | 12 | Start tangent Y component | +| `endVertex` | u32 | 16 | Index of the end vertex | +| `end.dx` | f32 | 20 | End tangent X component | +| `end.dy` | f32 | 24 | End tangent Y component | + +**Regions:** + +| Field | Type | Description | +| --------------------- | ------ | --------------------------------------------------------------- | +| `styleID+windingRule` | u32 | Style ID (bits 1-31) and winding rule (bit 0: 0=ODD, 1=NONZERO) | +| `loopCount` | u32 | Number of loops in this region | +| `loops` | Loop[] | Array of loops, where each loop contains: | +| `loops[].indexCount` | u32 | Number of segment indices in this loop | +| `loops[].indices` | u32[] | Array of segment indices forming the closed loop | + +**Parsed VectorNetwork Structure:** + +After parsing, the binary blob is converted to a structured `VectorNetwork` object: + +| Field | Type | Description | +| ---------- | -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | +| `vertices` | `Array<{ styleID: number; x: number; y: number }>` | Array of vertex positions and style IDs | +| `segments` | `Array<{ styleID: number; start: { vertex: number; dx: number; dy: number }; end: { vertex: number; dx: number; dy: number } }>` | Array of segments connecting vertices with tangent handles | +| `regions` | `Array<{ styleID: number; windingRule: "NONZERO" \| "ODD"; loops: Array<{ segments: number[] }> }>` | Array of regions defining closed shapes | + +**Parsing Example:** + +```typescript +// Get the blob bytes from the message +const blobBytes = getBlobBytes(vectorData.vectorNetworkBlob, message); + +// Parse the vector network +const vectorNetwork = parseVectorNetworkBlob(blobBytes); +// Returns: { +// vertices: [{ styleID: number, x: number, y: number }], +// segments: [{ styleID: number, start: { vertex: number, dx: number, dy: number }, end: { vertex: number, dx: number, dy: number } }], +// regions: [{ styleID: number, windingRule: "NONZERO" | "ODD", loops: [{ segments: number[] }] }] +// } +``` + +**Key Points:** + +- The vector network uses a **graph-based representation** with vertices, segments (edges with tangent handles), and regions (closed loops of segments) +- Segments connect vertices and include tangent handle information (`dx`, `dy`) for curved paths +- Regions define closed shapes using loops of segment indices +- Winding rules determine fill behavior: `NONZERO` or `ODD` (even-odd) +- Style IDs reference styles from the style system for fills, strokes, and effects +- The `normalizedSize` field provides the coordinate space dimensions for the vector + ## External Resources - [kiwi-schema][kiwi-schema] - The Kiwi protocol by Evan Wallace diff --git a/docs/wg/feat-schema/naming-conventions.md b/docs/wg/feat-schema/naming-conventions.md index 57ad82dc6d..c4c2136208 100644 --- a/docs/wg/feat-schema/naming-conventions.md +++ b/docs/wg/feat-schema/naming-conventions.md @@ -4,9 +4,9 @@ title: Grida document schema naming conventions # `.grida` Naming Conventions -| feature id | status | description | PRs | -| ----------------------------- | ------ | ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `.grida (naming conventions)` | draft | Naming conventions internals for the `.grida` file format. | [#456](https://github.com/gridaco/grida/pull/456), [#462](https://github.com/gridaco/grida/pull/462) | +| feature id | status | description | PRs | +| ----------------------------- | ------ | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `.grida (naming conventions)` | draft | Naming conventions internals for the `.grida` file format. | [#456](https://github.com/gridaco/grida/pull/456), [#462](https://github.com/gridaco/grida/pull/462), [#474](https://github.com/gridaco/grida/pull/474) | ## Purpose @@ -93,6 +93,9 @@ line_height ``` padding_top +padding_right +padding_bottom +padding_left main_axis_alignment cross_axis_gap ``` diff --git a/editor/grida-canvas-hosted/playground/examples.ts b/editor/grida-canvas-hosted/playground/examples.ts index 418e9cfc7b..4c2f39d8cb 100644 --- a/editor/grida-canvas-hosted/playground/examples.ts +++ b/editor/grida-canvas-hosted/playground/examples.ts @@ -9,31 +9,6 @@ export const canvas_examples = [ name: "Helloworld", url: `/examples/canvas/helloworld.grida`, }, - { - id: "slides-01", - name: "Slide 01", - url: `/examples/canvas/slides-01.grida`, - }, - { - id: "instagram-post-01", - name: "Instagram Post 01", - url: `/examples/canvas/instagram-post-01.grida`, - }, - { - id: "poster-01", - name: "Poster 01", - url: `/examples/canvas/poster-01.grida`, - }, - { - id: "resume-01", - name: "Resume 01", - url: `/examples/canvas/resume-01.grida`, - }, - { - id: "event-page-01", - name: "Event Page 01", - url: `/examples/canvas/event-page-01.grida`, - }, { id: "component-01", name: "Component 01", diff --git a/editor/grida-canvas-hosted/playground/widgets/index.ts b/editor/grida-canvas-hosted/playground/widgets/index.ts index 3d08c7b07a..1d53f40c54 100644 --- a/editor/grida-canvas-hosted/playground/widgets/index.ts +++ b/editor/grida-canvas-hosted/playground/widgets/index.ts @@ -21,7 +21,10 @@ export namespace prototypes { expanded: true, main_axis_gap: 16, cross_axis_gap: 16, - padding: 0, + padding_top: 0, + padding_right: 0, + padding_bottom: 0, + padding_left: 0, children: [ { type: "rectangle", @@ -151,7 +154,10 @@ export namespace prototypes { expanded: true, main_axis_gap: 8, cross_axis_gap: 8, - padding: 8, + padding_top: 8, + padding_right: 8, + padding_bottom: 8, + padding_left: 8, fill: { type: "solid", color: kolor.colorformats.RGBA32F.BLACK, @@ -203,7 +209,10 @@ export namespace prototypes { expanded: true, main_axis_gap: 8, cross_axis_gap: 8, - padding: 0, + padding_top: 0, + padding_right: 0, + padding_bottom: 0, + padding_left: 0, fill: { type: "solid", color: kolor.colorformats.RGBA32F.WHITE, diff --git a/editor/grida-canvas-react-renderer-dom/nodes/index.ts b/editor/grida-canvas-react-renderer-dom/nodes/index.ts index 1c91abb871..5e05550677 100644 --- a/editor/grida-canvas-react-renderer-dom/nodes/index.ts +++ b/editor/grida-canvas-react-renderer-dom/nodes/index.ts @@ -1,5 +1,4 @@ import { ContainerWidget } from "./container"; -import { SVGPathWidget } from "./svg-path"; import { TextWidget } from "./text"; import { ImageWidget } from "./image"; import { VideoWidget } from "./video"; @@ -18,7 +17,6 @@ export namespace ReactNodeRenderers { export const container = ContainerWidget; export const component = ContainerWidget; // TODO: export const iframe = IFrameWidget; - export const svgpath = SVGPathWidget; export const vector = VectorWidget; export const line = SVGLineWidget; export const polyline = SVGPolyLineWidget; diff --git a/editor/grida-canvas-react-renderer-dom/nodes/node.tsx b/editor/grida-canvas-react-renderer-dom/nodes/node.tsx index 4a6908eaa3..4b60e23db1 100644 --- a/editor/grida-canvas-react-renderer-dom/nodes/node.tsx +++ b/editor/grida-canvas-react-renderer-dom/nodes/node.tsx @@ -88,7 +88,6 @@ export function NodeElement

>({ case "video": case "text": case "bitmap": - case "svgpath": case "vector": case "line": case "rectangle": @@ -136,7 +135,6 @@ export function NodeElement

>({ loop: node.loop, muted: node.muted, autoplay: node.autoplay, - paths: node.paths, vector_network: node.vector_network, opacity: node.opacity, z_index: DEFAULT_ZINDEX ?? node.z_index, @@ -226,7 +224,6 @@ const fillings = { star: "none", template_instance: "none", instance: "none", - svgpath: "none", line: "none", vector: "none", polyline: "none", diff --git a/editor/grida-canvas-react-renderer-dom/nodes/svg-path.tsx b/editor/grida-canvas-react-renderer-dom/nodes/svg-path.tsx deleted file mode 100644 index 30f2d42007..0000000000 --- a/editor/grida-canvas-react-renderer-dom/nodes/svg-path.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import grida from "@grida/schema"; -import { svg } from "@/grida-canvas-utils/svg"; -import queryattributes from "./utils/attributes"; - -/** - * @deprecated - not ready - do not use in production - * @returns - */ -export function SVGPathWidget({ - width, - height, - fill, - style, - paths, - ...props -}: grida.program.document.IComputedNodeReactRenderProps) { - const { defs, ref: fillDef } = fill - ? svg.paint.defs(fill) - : { - defs: undefined, - ref: "none", - }; - - const style_without_size = { - ...style, - width: undefined, - height: undefined, - }; - - const fillpaths = paths.filter((p) => p.fill === "fill"); - const strokepaths = paths.filter((p) => p.fill === "stroke"); - // Combine all paths into a single composite shape - const fp_combinedPathD = fillpaths.map(({ d }) => d).join(" "); - const fp_fillrule = fillpaths[0]?.fill_rule; - - return ( - - {defs && } - {/* fill paths */} - {fp_combinedPathD && ( - - )} - - {/* stroke paths */} - {strokepaths.map(({ d, fill_rule }, i) => ( - - ))} - - ); -} diff --git a/editor/grida-canvas-react-starter-kit/starterkit-icons/node-type-icon.tsx b/editor/grida-canvas-react-starter-kit/starterkit-icons/node-type-icon.tsx index c06ead57f4..874799e01c 100644 --- a/editor/grida-canvas-react-starter-kit/starterkit-icons/node-type-icon.tsx +++ b/editor/grida-canvas-react-starter-kit/starterkit-icons/node-type-icon.tsx @@ -72,7 +72,6 @@ export function NodeTypeIcon({ return ; case "ellipse": return ; - case "svgpath": case "line": case "vector": return ; diff --git a/editor/grida-canvas-react/provider.tsx b/editor/grida-canvas-react/provider.tsx index 18680d99f1..c1bf80a448 100644 --- a/editor/grida-canvas-react/provider.tsx +++ b/editor/grida-canvas-react/provider.tsx @@ -235,7 +235,7 @@ export function useNodeActions(node_id: string | undefined) { border: (value: grida.program.css.Border | undefined) => instance.commands.changeNodePropertyBorder(node_id, value), - padding: (value: grida.program.nodes.i.IPadding["padding"]) => + padding: (value: grida.program.nodes.i.IPadding) => instance.commands.changeContainerNodePadding(node_id, value), // margin: (value?: number) => // changeNodeStyle(node_id, "margin", value), diff --git a/editor/grida-canvas-react/viewport/surface.tsx b/editor/grida-canvas-react/viewport/surface.tsx index 6c3df54068..14f2e55183 100644 --- a/editor/grida-canvas-react/viewport/surface.tsx +++ b/editor/grida-canvas-react/viewport/surface.tsx @@ -892,9 +892,15 @@ function SingleSelectionOverlay({ const { node, distribution, rotation, boundingSurfaceRect, size, object } = data; - // Get padding if this is a container const padding = - node.type === "container" && "padding" in node ? node.padding : undefined; + node.type === "container" || node.type === "component" + ? { + padding_top: node.padding_top ?? 0, + padding_right: node.padding_right ?? 0, + padding_bottom: node.padding_bottom ?? 0, + padding_left: node.padding_left ?? 0, + } + : undefined; // Calculate measurement rect for visibility checks const rect_ui_width = size[0] * scaleX; @@ -934,21 +940,12 @@ function SingleSelectionOverlay({ { editor.surface.surfaceStartPaddingGesture( node_id, diff --git a/editor/grida-canvas-utils/css.ts b/editor/grida-canvas-utils/css.ts index 5cdadddd89..71825366ae 100644 --- a/editor/grida-canvas-utils/css.ts +++ b/editor/grida-canvas-utils/css.ts @@ -85,7 +85,10 @@ export namespace css { // border, // - padding, + padding_top, + padding_right, + padding_bottom, + padding_left, // fe_shadows, // @@ -135,7 +138,12 @@ export namespace css { rectangular_corner_radius_bottom_right, }), // - padding: padding ? paddingToPaddingCSS(padding) : undefined, + padding: paddingToPaddingCSS({ + padding_top: padding_top ?? 0, + padding_right: padding_right ?? 0, + padding_bottom: padding_bottom ?? 0, + padding_left: padding_left ?? 0, + }), // boxShadow: _fb_first_boxShadow ? boxShadowToCSS( @@ -429,14 +437,28 @@ export namespace css { } export function paddingToPaddingCSS( - padding: grida.program.nodes.i.IPadding["padding"] + padding: + | { + padding_top?: number; + padding_right?: number; + padding_bottom?: number; + padding_left?: number; + } + | null + | undefined ): string { if (!padding) return "0"; - if (typeof padding === "number") { - return `${padding}px`; - } else { - return `${padding.padding_top}px ${padding.padding_right}px ${padding.padding_bottom}px ${padding.padding_left}px`; + const top = padding.padding_top ?? 0; + const right = padding.padding_right ?? 0; + const bottom = padding.padding_bottom ?? 0; + const left = padding.padding_left ?? 0; + + // If all sides are equal, return single value + if (top === right && right === bottom && bottom === left) { + return `${top}px`; } + + return `${top}px ${right}px ${bottom}px ${left}px`; } export function axisToFlexDirection(axis: cg.Axis): "row" | "column" { diff --git a/editor/grida-canvas/editor.i.ts b/editor/grida-canvas/editor.i.ts index 044f5bfda4..e95155a531 100644 --- a/editor/grida-canvas/editor.i.ts +++ b/editor/grida-canvas/editor.i.ts @@ -3228,7 +3228,7 @@ export namespace editor.api { changeContainerNodePadding( node_id: NodeID, - padding: grida.program.nodes.i.IPadding["padding"] + padding: grida.program.nodes.i.IPadding ): void; changeContainerNodeLayout( node_id: NodeID, diff --git a/editor/grida-canvas/editor.ts b/editor/grida-canvas/editor.ts index 1183e46fda..89cdf8114c 100644 --- a/editor/grida-canvas/editor.ts +++ b/editor/grida-canvas/editor.ts @@ -2231,12 +2231,12 @@ class EditorDocumentStore // changeContainerNodePadding( node_id: string, - padding: grida.program.nodes.i.IPadding["padding"] + padding: grida.program.nodes.i.IPadding ) { this.dispatch({ type: "node/change/*", node_id: node_id, - padding, + ...padding, }); } @@ -2651,7 +2651,7 @@ export class Editor public archive(): Blob { const documentData = { - version: "0.0.4-beta+20251209", + version: "0.89.0-beta+20251219", document: this.getSnapshot().document, } satisfies io.JSONDocumentFileModel; @@ -2813,7 +2813,7 @@ export class Editor : document; const p = JSON.stringify({ - version: "0.0.4-beta+20251209", + version: "0.89.0-beta+20251219", document: payloadDocument, }); surface.loadScene(p); diff --git a/editor/grida-canvas/policy.ts b/editor/grida-canvas/policy.ts index afe20fe3fd..dd78135386 100644 --- a/editor/grida-canvas/policy.ts +++ b/editor/grida-canvas/policy.ts @@ -46,7 +46,6 @@ export const EDITOR_GRAPH_POLICY: tree.graph.IGraphPolicy( cross_axis_gap: cmath.quantize(layout.spacing, 1), main_axis_alignment: layout.mainAxisAlignment, cross_axis_alignment: layout.crossAxisAlignment, - padding: children.length === 1 ? 16 : 0, + padding_top: children.length === 1 ? 16 : 0, + padding_right: children.length === 1 ? 16 : 0, + padding_bottom: children.length === 1 ? 16 : 0, + padding_left: children.length === 1 ? 16 : 0, // children (empty when init) children: [], // position diff --git a/editor/grida-canvas/reducers/event-target.reducer.ts b/editor/grida-canvas/reducers/event-target.reducer.ts index 63b95c2e98..f4cb40b242 100644 --- a/editor/grida-canvas/reducers/event-target.reducer.ts +++ b/editor/grida-canvas/reducers/event-target.reducer.ts @@ -13,6 +13,7 @@ import type { EditorEventTarget_DragStart, EditorEventTarget_DragEnd, EditorEventTarget_MultipleSelectionLayer_Click, + NodeChangeAction, } from "../action"; import { editor } from "@/grida-canvas"; import { dq } from "@/grida-canvas/query"; @@ -802,57 +803,40 @@ function __self_evt_on_drag( const container = dq.__getNodeById(draft, node_id); if ( container && - container.type === "container" && - "padding" in container + (container.type === "container" || container.type === "component") ) { - const currentPadding = container.padding; - let newPadding: grida.program.nodes.i.IPadding["padding"]; - - if (typeof currentPadding === "number") { - // Convert uniform padding to individual sides - newPadding = { - padding_top: currentPadding, - padding_right: currentPadding, - padding_bottom: currentPadding, - padding_left: currentPadding, - }; - } else { - // Use existing individual padding values - newPadding = { - padding_top: currentPadding.padding_top, - padding_right: currentPadding.padding_right, - padding_bottom: currentPadding.padding_bottom, - padding_left: currentPadding.padding_left, - }; - } - const mirroringEnabled = draft.gesture_modifiers.padding_with_axis_mirroring === "on"; // Update the specific side + const updates: Partial< + | grida.program.nodes.ContainerNode + | grida.program.nodes.ComponentNode + > = {}; + switch (side) { case "top": - newPadding.padding_top = padding; + updates.padding_top = padding; if (mirroringEnabled) { - newPadding.padding_bottom = padding; + updates.padding_bottom = padding; } break; case "right": - newPadding.padding_right = padding; + updates.padding_right = padding; if (mirroringEnabled) { - newPadding.padding_left = padding; + updates.padding_left = padding; } break; case "bottom": - newPadding.padding_bottom = padding; + updates.padding_bottom = padding; if (mirroringEnabled) { - newPadding.padding_top = padding; + updates.padding_top = padding; } break; case "left": - newPadding.padding_left = padding; + updates.padding_left = padding; if (mirroringEnabled) { - newPadding.padding_right = padding; + updates.padding_right = padding; } break; } @@ -860,8 +844,8 @@ function __self_evt_on_drag( draft.document.nodes[node_id] = nodeReducer(container, { type: "node/change/*", node_id: node_id, - padding: newPadding, - }); + ...updates, + } as NodeChangeAction); draft.gesture.padding = padding; } diff --git a/editor/grida-canvas/reducers/node.reducer.ts b/editor/grida-canvas/reducers/node.reducer.ts index 66e55a3c5a..7aa0b56d30 100644 --- a/editor/grida-canvas/reducers/node.reducer.ts +++ b/editor/grida-canvas/reducers/node.reducer.ts @@ -272,7 +272,6 @@ const safe_properties: Partial< }), fill: defineNodeProperty<"fill">({ assert: (node) => - node.type === "svgpath" || node.type === "vector" || node.type === "image" || node.type === "rectangle" || @@ -314,26 +313,30 @@ const safe_properties: Partial< (draft as UN).corner_radius = value; }, }), - rectangular_corner_radius_top_left: defineNodeProperty<"rectangular_corner_radius_top_left">({ - apply: (draft, value, prev) => { - (draft as UN).rectangular_corner_radius_top_left = value; - }, - }), - rectangular_corner_radius_top_right: defineNodeProperty<"rectangular_corner_radius_top_right">({ - apply: (draft, value, prev) => { - (draft as UN).rectangular_corner_radius_top_right = value; - }, - }), - rectangular_corner_radius_bottom_right: defineNodeProperty<"rectangular_corner_radius_bottom_right">({ - apply: (draft, value, prev) => { - (draft as UN).rectangular_corner_radius_bottom_right = value; - }, - }), - rectangular_corner_radius_bottom_left: defineNodeProperty<"rectangular_corner_radius_bottom_left">({ - apply: (draft, value, prev) => { - (draft as UN).rectangular_corner_radius_bottom_left = value; - }, - }), + rectangular_corner_radius_top_left: + defineNodeProperty<"rectangular_corner_radius_top_left">({ + apply: (draft, value, prev) => { + (draft as UN).rectangular_corner_radius_top_left = value; + }, + }), + rectangular_corner_radius_top_right: + defineNodeProperty<"rectangular_corner_radius_top_right">({ + apply: (draft, value, prev) => { + (draft as UN).rectangular_corner_radius_top_right = value; + }, + }), + rectangular_corner_radius_bottom_right: + defineNodeProperty<"rectangular_corner_radius_bottom_right">({ + apply: (draft, value, prev) => { + (draft as UN).rectangular_corner_radius_bottom_right = value; + }, + }), + rectangular_corner_radius_bottom_left: + defineNodeProperty<"rectangular_corner_radius_bottom_left">({ + apply: (draft, value, prev) => { + (draft as UN).rectangular_corner_radius_bottom_left = value; + }, + }), corner_smoothing: defineNodeProperty<"corner_smoothing">({ apply: (draft, value, prev) => { (draft as UN).corner_smoothing = cmath.clamp(value, 0, 1); @@ -423,46 +426,50 @@ const safe_properties: Partial< ); }, }), - rectangular_stroke_width_top: defineNodeProperty<"rectangular_stroke_width_top">({ - assert: (node) => node.type === "rectangle", - apply: (draft, value, prev) => { - (draft as UN).rectangular_stroke_width_top = ranged( - 0, - value, - editor.config.DEFAULT_MAX_STROKE_WIDTH - ); - }, - }), - rectangular_stroke_width_right: defineNodeProperty<"rectangular_stroke_width_right">({ - assert: (node) => node.type === "rectangle", - apply: (draft, value, prev) => { - (draft as UN).rectangular_stroke_width_right = ranged( - 0, - value, - editor.config.DEFAULT_MAX_STROKE_WIDTH - ); - }, - }), - rectangular_stroke_width_bottom: defineNodeProperty<"rectangular_stroke_width_bottom">({ - assert: (node) => node.type === "rectangle", - apply: (draft, value, prev) => { - (draft as UN).rectangular_stroke_width_bottom = ranged( - 0, - value, - editor.config.DEFAULT_MAX_STROKE_WIDTH - ); - }, - }), - rectangular_stroke_width_left: defineNodeProperty<"rectangular_stroke_width_left">({ - assert: (node) => node.type === "rectangle", - apply: (draft, value, prev) => { - (draft as UN).rectangular_stroke_width_left = ranged( - 0, - value, - editor.config.DEFAULT_MAX_STROKE_WIDTH - ); - }, - }), + rectangular_stroke_width_top: + defineNodeProperty<"rectangular_stroke_width_top">({ + assert: (node) => node.type === "rectangle", + apply: (draft, value, prev) => { + (draft as UN).rectangular_stroke_width_top = ranged( + 0, + value, + editor.config.DEFAULT_MAX_STROKE_WIDTH + ); + }, + }), + rectangular_stroke_width_right: + defineNodeProperty<"rectangular_stroke_width_right">({ + assert: (node) => node.type === "rectangle", + apply: (draft, value, prev) => { + (draft as UN).rectangular_stroke_width_right = ranged( + 0, + value, + editor.config.DEFAULT_MAX_STROKE_WIDTH + ); + }, + }), + rectangular_stroke_width_bottom: + defineNodeProperty<"rectangular_stroke_width_bottom">({ + assert: (node) => node.type === "rectangle", + apply: (draft, value, prev) => { + (draft as UN).rectangular_stroke_width_bottom = ranged( + 0, + value, + editor.config.DEFAULT_MAX_STROKE_WIDTH + ); + }, + }), + rectangular_stroke_width_left: + defineNodeProperty<"rectangular_stroke_width_left">({ + assert: (node) => node.type === "rectangle", + apply: (draft, value, prev) => { + (draft as UN).rectangular_stroke_width_left = ranged( + 0, + value, + editor.config.DEFAULT_MAX_STROKE_WIDTH + ); + }, + }), stroke_align: defineNodeProperty<"stroke_align">({ assert: (node) => node.type === "vector" || @@ -497,7 +504,6 @@ const safe_properties: Partial< node.type === "ellipse" || node.type === "polygon" || node.type === "star" || - node.type === "svgpath" || node.type === "image" || node.type === "container" || node.type === "boolean", @@ -649,10 +655,28 @@ const safe_properties: Partial< (draft as UN).fit = value; }, }), - padding: defineNodeProperty<"padding">({ + padding_top: defineNodeProperty<"padding_top">({ + assert: (node) => node.type === "container" || node.type === "component", + apply: (draft, value, prev) => { + (draft as UN).padding_top = value; + }, + }), + padding_right: defineNodeProperty<"padding_right">({ + assert: (node) => node.type === "container" || node.type === "component", + apply: (draft, value, prev) => { + (draft as UN).padding_right = value; + }, + }), + padding_bottom: defineNodeProperty<"padding_bottom">({ + assert: (node) => node.type === "container" || node.type === "component", + apply: (draft, value, prev) => { + (draft as UN).padding_bottom = value; + }, + }), + padding_left: defineNodeProperty<"padding_left">({ assert: (node) => node.type === "container" || node.type === "component", apply: (draft, value, prev) => { - (draft as UN).padding = value; + (draft as UN).padding_left = value; }, }), layout: defineNodeProperty<"layout">({ diff --git a/editor/grida-canvas/reducers/schema/schema.ts b/editor/grida-canvas/reducers/schema/schema.ts index 6fcb256e99..a4fa77be7d 100644 --- a/editor/grida-canvas/reducers/schema/schema.ts +++ b/editor/grida-canvas/reducers/schema/schema.ts @@ -244,23 +244,11 @@ export namespace schema.parametric_scale { scale_number_in_place(n, "rectangular_corner_radius_bottom_left", s); scale_number_in_place(n, "rectangular_corner_radius_bottom_right", s); - // Padding (number or per-side) - const padding = n.padding; - if (typeof padding === "number") { - n.padding = padding * s; - } else if (padding && typeof padding === "object") { - n.padding = { - ...padding, - padding_top: - scale_number(padding.padding_top, s) ?? padding.padding_top, - padding_right: - scale_number(padding.padding_right, s) ?? padding.padding_right, - padding_bottom: - scale_number(padding.padding_bottom, s) ?? padding.padding_bottom, - padding_left: - scale_number(padding.padding_left, s) ?? padding.padding_left, - }; - } + // Padding (flat properties) + scale_number_in_place(n, "padding_top", s); + scale_number_in_place(n, "padding_right", s); + scale_number_in_place(n, "padding_bottom", s); + scale_number_in_place(n, "padding_left", s); scale_number_in_place(n, "main_axis_gap", s); scale_number_in_place(n, "cross_axis_gap", s); @@ -304,8 +292,5 @@ export namespace schema.parametric_scale { if (node.type === "vector") { node.vector_network = _vector_network(node.vector_network, s); } - - // NOTE: `svgpath.paths` scaling is intentionally not implemented here yet. - // The `svgpath` node type is deprecated and rarely used in production. } } diff --git a/editor/grida-canvas/reducers/surface.reducer.ts b/editor/grida-canvas/reducers/surface.reducer.ts index 0e92b5b697..a809cb10d2 100644 --- a/editor/grida-canvas/reducers/surface.reducer.ts +++ b/editor/grida-canvas/reducers/surface.reducer.ts @@ -270,7 +270,6 @@ function __self_try_enter_content_edit_mode_auto( }; break; } - // case "svgpath": case "vector": // primitive shapes case "rectangle": @@ -834,30 +833,22 @@ function __self_start_gesture( "the selection is not a container" ); - const currentPadding = container.padding; + // Read padding from flat properties let currentValue: number = 0; // Default to 0 if padding is undefined - if (currentPadding === undefined || currentPadding === null) { - // Padding is not defined, use default - currentValue = 0; - } else if (typeof currentPadding === "number") { - currentValue = currentPadding; - } else { - // Padding is an object with per-side values - switch (side) { - case "top": - currentValue = currentPadding.padding_top ?? 0; - break; - case "right": - currentValue = currentPadding.padding_right ?? 0; - break; - case "bottom": - currentValue = currentPadding.padding_bottom ?? 0; - break; - case "left": - currentValue = currentPadding.padding_left ?? 0; - break; - } + switch (side) { + case "top": + currentValue = container.padding_top ?? 0; + break; + case "right": + currentValue = container.padding_right ?? 0; + break; + case "bottom": + currentValue = container.padding_bottom ?? 0; + break; + case "left": + currentValue = container.padding_left ?? 0; + break; } draft.gesture = { diff --git a/editor/grida-canvas/reducers/tools/initial-node.ts b/editor/grida-canvas/reducers/tools/initial-node.ts index 3f823c46dc..a3276f1b50 100644 --- a/editor/grida-canvas/reducers/tools/initial-node.ts +++ b/editor/grida-canvas/reducers/tools/initial-node.ts @@ -132,7 +132,10 @@ export default function initialNode( type: "container", expanded: false, corner_radius: 0, - padding: 0, + padding_top: 0, + padding_right: 0, + padding_bottom: 0, + padding_left: 0, layout: "flow", direction: "horizontal", main_axis_alignment: "start", diff --git a/editor/grida-canvas/utils/supports.ts b/editor/grida-canvas/utils/supports.ts index 496cf35b3b..4f28536f1b 100644 --- a/editor/grida-canvas/utils/supports.ts +++ b/editor/grida-canvas/utils/supports.ts @@ -58,7 +58,6 @@ const GRIDA_TCANVAS_RECTANGLE_NODE: INodePropertiesConfig = { const dom_supports: Record> = { arcData: [], fill: [ - "svgpath", "vector", "image", "rectangle", @@ -124,7 +123,6 @@ const canvas_supports: Record> = { arcData: ["ellipse"], fill: [], fill_paints: [ - "svgpath", "vector", "image", "rectangle", diff --git a/editor/public/examples/canvas/blank.grida b/editor/public/examples/canvas/blank.grida index b1569a89be..628dda1696 100644 --- a/editor/public/examples/canvas/blank.grida +++ b/editor/public/examples/canvas/blank.grida @@ -1,5 +1,5 @@ { - "version": "0.0.4-beta+20251209", + "version": "0.89.0-beta+20251219", "document": { "nodes": { "blank": { diff --git a/editor/public/examples/canvas/component-01.grida b/editor/public/examples/canvas/component-01.grida index df3196ff57..881aa01e32 100644 --- a/editor/public/examples/canvas/component-01.grida +++ b/editor/public/examples/canvas/component-01.grida @@ -1,5 +1,5 @@ { - "version": "0.0.4-beta+20251209", + "version": "0.89.0-beta+20251219", "document": { "nodes": { "component": { @@ -18,8 +18,7 @@ "width": 960, "height": 540, "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" + "overflow": "clip" }, "corner_radius": 0, "properties": { @@ -43,7 +42,11 @@ "a": 1.0 } } - ] + ], + "padding_top": 0.0, + "padding_right": 0.0, + "padding_bottom": 0.0, + "padding_left": 0.0 }, "title": { "id": "title", @@ -60,7 +63,6 @@ "top": 251, "width": "auto", "height": "auto", - "style": {}, "text_align": "left", "text_align_vertical": "top", "text_decoration_line": "none", @@ -97,7 +99,6 @@ "top": 305, "width": "auto", "height": "auto", - "style": {}, "text_align": "left", "text_align_vertical": "top", "text_decoration_line": "none", @@ -135,8 +136,7 @@ "width": 140, "height": 140, "corner_radius": 0, - "fit": "cover", - "style": {} + "fit": "cover" }, "454:345": { "id": "454:345", diff --git a/editor/public/examples/canvas/event-page-01.grida b/editor/public/examples/canvas/event-page-01.grida deleted file mode 100644 index 0c7ac2bece..0000000000 --- a/editor/public/examples/canvas/event-page-01.grida +++ /dev/null @@ -1,1069 +0,0 @@ -{ - "version": "0.0.4-beta+20251209", - "document": { - "nodes": { - "291:302": { - "id": "291:302", - "name": "iPhone 14 & 15 Pro - 28", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "relative", - "left": 0, - "top": 0, - "width": 393, - "height": 852, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 16, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "291:303": { - "id": "291:303", - "name": "- Transferring or selling admission tickets to others is strictly prohibited, and admission may be restricted if the ticket holder is not the original reservation holder. - Online reservation is available from 18:00 on Monday, 7 days before the desired admission date. Reservations can be made for dates up to one week in advance.", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "- Transferring or selling admission tickets to others is strictly prohibited, and admission may be restricted if the ticket holder is not the original reservation holder.\n- Online reservation is available from 18:00 on Monday, 7 days before the desired admission date. Reservations can be made for dates up to one week in advance.", - "position": "absolute", - "left": 20, - "top": 693, - "width": 350, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.800000011920929 - } - } - ] - }, - "291:304": { - "id": "291:304", - "name": "Frame 118", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 20, - "top": 707, - "width": 353, - "height": 63, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 8, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "291:305": { - "id": "291:305", - "name": "Buy Ticket", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Buy Ticket", - "position": "absolute", - "left": 139, - "top": 24, - "right": 140, - "bottom": 24, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "center", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 0.955227279663086, - "letter_spacing": -0.64, - "font_size": 16, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "291:306": { - "id": "291:306", - "name": "Frame 253", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": -10, - "width": 393, - "height": 464, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0, - "fill_paints": [ - { - "type": "linear_gradient", - "active": true, - "id": "4ca480b3-212d-48da-9b96-d6abead1eb27", - "stops": [ - { - "offset": 0, - "color": { - "r": 0.050980392156862744, - "g": 0.13725490196078433, - "b": 0.17647058823529413, - "a": 1.0 - } - }, - { - "offset": 0.36000001430511475, - "color": { - "r": 0.3137254901960784, - "g": 0.396078431372549, - "b": 0.42745098039215684, - "a": 1.0 - } - }, - { - "offset": 0.5400000214576721, - "color": { - "r": 0.6588235294117647, - "g": 0.7764705882352941, - "b": 0.8235294117647058, - "a": 1.0 - } - }, - { - "offset": 0.7099999785423279, - "color": { - "r": 1.0, - "g": 0.8705882352941177, - "b": 0.8, - "a": 0.800000011920929 - } - }, - { - "offset": 0.8999999761581421, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - } - ] - }, - "1485:6802": { - "id": "1485:6802", - "name": "Group 226", - "active": false, - "locked": true, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": -204.37942504882812, - "top": -177.099609375, - "width": 749.9979248046875, - "height": 731.7147827148438, - "style": {}, - "corner_radius": 0 - }, - "291:307": { - "id": "291:307", - "name": "7", - "active": true, - "locked": false, - "rotation": -1.3933632774646232, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/cde7/d414/7fba2f7f9da5d3b7ce3c93a6fbbf3c89?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=TurBlkLDkwooWaJ8S2oHy8LleX86WmDpdZ0j6oPkepTJUNmsWlS1Mp1HRcU3ztV3c9NmGg0TFjvErnAqeWG3Y5u4lhwL4XksdQ99jEtc3y~MrisUeYQLBkPsp0haPOPctPQ0cksQwhEnit90TTm4b9UlIHurYrJipAYnaO~a8Rx7gy8BnQPmWRrz3OOI2MQDlcLQaJ4Qy5dOo7PBLfE6-fTWFcQXV06tYvNw63lB0XxV-07-L88dCyZ-hHZFPvO5b4k659gVtt6Aw5ZSZphB4r2HKRZXu~pKCimQ9pPkkTLaJOhoHfEUqXrFv2fo0v~MoPD6hBsie-pd9YlqPIHf9w__", - "position": "absolute", - "left": 196.19534301757812, - "top": 534.46875, - "width": 176.48178100585938, - "height": 221.0870361328125, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "291:308": { - "id": "291:308", - "name": "40", - "active": true, - "locked": false, - "rotation": -0.8730446200421256, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/08fd/e777/c9fcc53938fed42adea7a38edd420029?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=mbBSDxJIVggZqVc8VFvqWTiiVLvTGOGtE76PspOu43btpduGK-q2iEQKnOnhmHuUMfAb5PZqRhc2kKVWkqjbblvh3KtRvIgPHmks3wdUFiO82hwcLg-p0CWwnQNDczMh1kY36KKii3ke~Tcfkps~wtc41XU0pPDBM1yE9UcBSgwuC632rRdGAjlzMIAlMkDFMZ70uOOmIA3uy9MFtzQc8CdY2mCE-l9r26tuomCWVnsRM26a76G4zOLJ6SUkssVinzo9v1gyYrcF6UANMT3TJ-SALqXdONeHEi4uU-cc1kHCjNMIdl71trI7u5jla44tFaGzubttrwYwHAL0ANul5A__", - "position": "absolute", - "left": 252.10012817382812, - "top": 335.755859375, - "width": 233.1793670654297, - "height": 246.8839569091797, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "291:309": { - "id": "291:309", - "name": "13", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/89fd/e6a6/e6fe82c91cf951def56baad1a1705a8b?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=RJIP2ibl48zC8z6WH3oylG3YuNXFb874PrxK-zsIK1SnCwc0gbC00jWUCtcKwlUtaASGA-gqXmmg8XGI0MX7O3IHMm3fZNmWyW8vENiX2A7w0pWqN4-O0Cr6ollgO8vy~ZCdNHNYi4RThT5r0xiFHXRjBXOnN9Z1fMRfdgpjBR~1BjkZBjXhufua39w2dydNIuWb4-psQbYAVxxgQiIes53DextprM77gLR4QR6PI5nK3BP2lUH8y9rlIR9fS-jXLxCBHH776TjluFnD5WFVL5pPs8zV3d2cBVgU7GrgvAviCKWEjjaINat5Oe0WuKpgg7jLUbjG~hIdIH9zrpPS7Q__", - "position": "absolute", - "left": 356.2041320800781, - "top": 118.005859375, - "width": 298.4877624511719, - "height": 298.6657409667969, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "291:310": { - "id": "291:310", - "name": "22", - "active": true, - "locked": false, - "rotation": 1.119994174535569, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/c907/c17d/fcc783d42051a31f5900c8439fec8e5c?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=GYe0ahGPwNgxYwjHw2qZ96KM6hhNfN2nzi6Ebls4jyU9cQr-7EgR0W6-NOqMJ9FvUpaw1D21claA0zf9lJE7FHUKkKHlMULeMXXJAxdgc6R8Qemaanx5F0gurj4j~FaRJOoeSHTCfiACt67FjNpTcnB1z-aoiioc91pnJfhe25I2rKI2NlJ39HjbOKbzCT0gLyRcLrhloDVSbNqEjW3AD9HfQnfNIruWnCpMdTQctXwlEVGnz71cWWR8B5Ofm~8U8OTI-HrsZJeWwgIEVuvRPGiA2HdyAweg856kflywWO8jA79dvMZm86lDNvemSh5Y7QK1r-JjMf15WNTyDqMRog__", - "position": "absolute", - "left": 579.7559204101562, - "top": 209.765625, - "width": 390.74322509765625, - "height": 390.74322509765625, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "291:311": { - "id": "291:311", - "name": "33", - "active": true, - "locked": false, - "rotation": 0.2617993898945194, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/1c1c/56c7/939a7cc5f3c08563d8726f9b23f59a5a?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=qOIXloGzZRxNVe3Ya6nUXIz15usrZIguYEZHOkVlX1xMbDXUDxmGjDsK1hlkO04cx~hvu04Ye7HLgjUXa1VmDt0GpDgugYltyEUGuqHiPYmhB6gKUfDfQzn0aOfDd~g33cDC0mKUnfwXY3gk1iL84XChtXJM8BtGX17bRHF1zsljy3aVbz7ScfFuAbDfbEBDYfIYyFEQWKvncKyxJCfxQGUC-tz8We7n9qmKx-F4M~4Fb9dsNIQF63AFSI-UpRX4wmPqpV7L-xx8HEe1C5eCdcQen05Zcl0qZzmB1wLoNDIikBpew7vr04S4Lh5D3C1UoouhqCfTex8xhYmzh21juw__", - "position": "absolute", - "left": 129.82180786132812, - "top": 0, - "width": 501.59295654296875, - "height": 501.59295654296875, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "1485:6804": { - "id": "1485:6804", - "name": "image 414", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/f856/69b4/06b400d1c660f0cd55b60ed810278b29?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=X4pGQ6nkZ2d7tVGWVzEZWxBy8n93WfreGENedDaOKSKfZWDUbT4nqSFTvB0V3eIW5k~2FLUdcnMuZeNtuNYOmrFlAoPib~qy9xSoAcq~DvYcwtTZb5jLZR23emvU3Qh2al4hCXs61ABqpDQ45vZEdnAVQrj8ekD16cjqKDqUvDOOLZqlmlrkCNnUvsUvbnSjvaUZRObboUIA0CW1lkjh15kYZaeyP1Ol~7~tfGOQe2SfWIhVBWTmnPoAmV707pv8yFAAE8lC5BX6ZU1g0FvWLMQwnlhGg7fKvsf~DCCwqG8s3opog~qDmY47VU8myxH~-BF~nP8NCowWFacM38bTDQ__", - "position": "absolute", - "left": 0, - "top": 5, - "width": 393, - "height": 454, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "291:312": { - "id": "291:312", - "name": "The Bundle", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "The Bundle", - "position": "absolute", - "left": 30, - "top": 40, - "right": 245, - "bottom": 799, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 17.798912048339844, - "font_family": "Dela Gothic One", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "291:313": { - "id": "291:313", - "name": "2024.05.17 - 08.18", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "2024.05.17 -\n08.18", - "position": "absolute", - "left": 30, - "top": 102, - "right": 223, - "bottom": 705, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.8, - "letter_spacing": 0, - "font_size": 17.798912048339844, - "font_family": "Dela Gothic One", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "291:314": { - "id": "291:314", - "name": "Grida art hall B1, Gallery 2", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Grida art hall\nB1, Gallery 2", - "position": "absolute", - "left": 271, - "top": 249, - "right": 30, - "bottom": 577, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "right", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Dela Gothic One", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "291:315": { - "id": "291:315", - "name": "The Bundle", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "The Bundle", - "position": "absolute", - "left": 20, - "top": 408, - "right": 172, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "center", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 0.955227279663086, - "letter_spacing": -1.28, - "font_size": 32, - "font_family": "Dela Gothic One", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "291:316": { - "id": "291:316", - "name": "Period", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "Period", - "position": "absolute", - "left": 22, - "top": 479, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "291:317": { - "id": "291:317", - "name": "17.May.2024.-18.sep.2024", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "17.May.2024.-18.sep.2024", - "position": "absolute", - "left": 116, - "top": 479, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.800000011920929 - } - } - ] - }, - "291:318": { - "id": "291:318", - "name": "Time", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "Time", - "position": "absolute", - "left": 22, - "top": 506, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "291:319": { - "id": "291:319", - "name": "Mon, Tue, Thu, Fri, Sun: 10:00-18:00", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "Mon, Tue, Thu, Fri, Sun: 10:00-18:00", - "position": "absolute", - "left": 116, - "top": 506, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.800000011920929 - } - } - ] - }, - "291:320": { - "id": "291:320", - "name": "Price", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "Price", - "position": "absolute", - "left": 22, - "top": 550, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "291:321": { - "id": "291:321", - "name": "Wed, Sat 10:00-21:00", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "Wed, Sat 10:00-21:00", - "position": "absolute", - "left": 116, - "top": 523, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.800000011920929 - } - } - ] - }, - "291:322": { - "id": "291:322", - "name": "Venue", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "Venue", - "position": "absolute", - "left": 22, - "top": 577, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "291:323": { - "id": "291:323", - "name": "20,000KRW", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "20,000KRW", - "position": "absolute", - "left": 116, - "top": 550, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.800000011920929 - } - } - ] - }, - "291:324": { - "id": "291:324", - "name": "Inquiries", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "Inquiries", - "position": "absolute", - "left": 22, - "top": 604, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "291:325": { - "id": "291:325", - "name": "Reservation and Admission Guide", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "Reservation and Admission Guide", - "position": "absolute", - "left": 22, - "top": 666, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "291:326": { - "id": "291:326", - "name": "Grida art hall B1, Gallery 2", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "Grida art hall B1, Gallery 2", - "position": "absolute", - "left": 116, - "top": 577, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.800000011920929 - } - } - ] - }, - "291:327": { - "id": "291:327", - "name": "82-2-1234-1535", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.800000011920929, - "z_index": 0, - "type": "text", - "text": "82-2-1234-1535", - "position": "absolute", - "left": 116, - "top": 604, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.800000011920929 - } - } - ] - }, - "291:328": { - "id": "291:328", - "name": "2d : 16h 24m 16s", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "2d : 16h 24m 16s", - "position": "absolute", - "left": 151, - "top": 799, - "right": 150, - "bottom": 42, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "center", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 0.955227279663086, - "letter_spacing": -0.44, - "font_size": 11, - "font_family": "Inter", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "main": { - "type": "scene", - "id": "main", - "name": "main", - "active": true, - "locked": false, - "constraints": { - "children": "single" - }, - "guides": [], - "edges": [], - "background_color": { - "r": 0.96, - "g": 0.96, - "b": 0.96, - "a": 1 - } - } - }, - "links": { - "291:302": [ - "291:303", - "291:304", - "291:306", - "291:312", - "291:313", - "291:314", - "291:315", - "291:316", - "291:317", - "291:318", - "291:319", - "291:320", - "291:321", - "291:322", - "291:323", - "291:324", - "291:325", - "291:326", - "291:327", - "291:328" - ], - "291:304": [ - "291:305" - ], - "291:306": [ - "1485:6802", - "1485:6804" - ], - "1485:6802": [ - "291:307", - "291:308", - "291:309", - "291:310", - "291:311" - ], - "main": [ - "291:302" - ] - }, - "scenes_ref": [ - "main" - ], - "bitmaps": {}, - "images": {}, - "properties": {} - } -} \ No newline at end of file diff --git a/editor/public/examples/canvas/globals-01.grida b/editor/public/examples/canvas/globals-01.grida index 6e3530210d..09a9ebb803 100644 --- a/editor/public/examples/canvas/globals-01.grida +++ b/editor/public/examples/canvas/globals-01.grida @@ -1,5 +1,5 @@ { - "version": "0.0.4-beta+20251209", + "version": "0.89.0-beta+20251219", "document": { "nodes": { "root": { diff --git a/editor/public/examples/canvas/helloworld.grida b/editor/public/examples/canvas/helloworld.grida index 7bff638b73..4f4a6def8d 100644 --- a/editor/public/examples/canvas/helloworld.grida +++ b/editor/public/examples/canvas/helloworld.grida @@ -1,5 +1,5 @@ { - "version": "0.0.4-beta+20251209", + "version": "0.89.0-beta+20251219", "document": { "nodes": { "454:341": { @@ -18,8 +18,7 @@ "width": 960, "height": 540, "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" + "overflow": "clip" }, "corner_radius": 0, "fill_paints": [ @@ -33,7 +32,11 @@ "a": 1.0 } } - ] + ], + "padding_top": 0.0, + "padding_right": 0.0, + "padding_bottom": 0.0, + "padding_left": 0.0 }, "454:342": { "id": "454:342", @@ -52,7 +55,6 @@ "bottom": 251, "width": "auto", "height": "auto", - "style": {}, "text_align": "left", "text_align_vertical": "top", "text_decoration_line": "none", @@ -91,7 +93,6 @@ "bottom": 216, "width": "auto", "height": "auto", - "style": {}, "text_align": "left", "text_align_vertical": "top", "text_decoration_line": "none", @@ -129,8 +130,7 @@ "width": 140, "height": 140, "corner_radius": 0, - "fit": "cover", - "style": {} + "fit": "cover" }, "454:345": { "id": "454:345", diff --git a/editor/public/examples/canvas/hero-main-demo.grida b/editor/public/examples/canvas/hero-main-demo.grida index acce2df460..45c6abda9c 100644 --- a/editor/public/examples/canvas/hero-main-demo.grida +++ b/editor/public/examples/canvas/hero-main-demo.grida @@ -1,3094 +1,9970 @@ { - "version": "0.0.4-beta+20251209", "document": { - "nodes": { - "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc": { - "name": "demo", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": -611, - "top": 632, - "width": 1080, - "height": 1080, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" - }, - "corner_radius": 30, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "fb5c188a-1ff8-4974-b2a2-97c691a6b517": { - "name": "Frame 945", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 1080, - "height": 150, - "style": { - "overflow": "clip" - }, - "corner_radius": [ - 30, - 30, - 0, - 0 - ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "fb5c188a-1ff8-4974-b2a2-97c691a6b517", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "7fa7152a-1aa6-432f-8a18-e06028407210": { - "name": "Vector 270", - "type": "svgpath", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 0, - "paths": [ - { - "d": "M0 0.5L1080 0.5L1080 -0.5L0 -0.5L0 0.5Z", - "fill_rule": "nonzero", - "fill": "stroke" - } - ], - "id": "7fa7152a-1aa6-432f-8a18-e06028407210" - }, - "36123500-0f85-4828-90d6-f7efe0465145": { - "name": "Frame 946", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 40, - "top": 25, - "width": 100, - "height": 100, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" - }, - "corner_radius": 100, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "36123500-0f85-4828-90d6-f7efe0465145", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "3cdaf947-0959-470b-9012-018e733d9f69": { - "name": "\blogo", - "type": "svgpath", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 32, - "top": 32, - "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" - }, - { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "3cdaf947-0959-470b-9012-018e733d9f69", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933": { - "name": "Canary", - "type": "text", + "bitmaps": {}, + "images": {}, + "links": { + "27928f62-5265-4d23-a828-fc42c58572ac": [ + "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f", + "d77358f4-748d-49fe-ae50-911f357c4a62", + "39121f18-a69b-4d0c-8a45-39548fb7d43b" + ], + "2c313df1-8090-4200-b114-38919c70045f": [ + "296499fb-b83a-4cf2-8589-d589a3426f4e", + "c83c9be1-62a3-40da-8037-a7ae14cc093e", + "79f25f6f-65bd-4dd8-8627-c4a5d773a218" + ], + "2c316d9f-4c8b-4af0-b367-b0f1b8901a88": [ + "cc64cd72-f5aa-489a-8570-8cdc4b20daca" + ], + "34c46b34-5b54-4a27-be7d-a55950a3398e": [ + "96c40aae-f303-4c9b-be20-39d6a5d9e9ef", + "d77fbae1-c379-4ffe-a524-887324617346" + ], + "36123500-0f85-4828-90d6-f7efe0465145": [ + "3cdaf947-0959-470b-9012-018e733d9f69" + ], + "3860c5b4-1987-436f-8113-63a1d3999d2e": [ + "135994ec-41b4-4d58-bf51-9dd6fd577e6c", + "c8655a4f-837f-4867-b7ee-81c9025fc188", + "0879aa63-70ad-4c47-ae56-b99462ce540c" + ], + "39121f18-a69b-4d0c-8a45-39548fb7d43b": [ + "e0e5300d-09e2-4afb-ad25-4e8b0b03624c", + "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6", + "b8277fa8-b221-4b5c-b05b-df375de91af2", + "aad05458-6b10-47b8-ab6b-f859b3b5e299" + ], + "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6": [ + "55067523-3d57-4636-91c7-3f1769f4747e" + ], + "3afd24ac-a789-4e3e-b626-f7d990eab72a": [ + "0eb99750-edad-4a0a-a886-6b7e505b62ab", + "9f5905c5-5e47-4d14-898f-18d4bb98025e", + "a3b4b1cd-ce66-4e36-abfa-a162d5676199", + "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa" + ], + "4b2cb61d-1925-4515-ad23-e15f08cc6626": [ + "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77" + ], + "5ac3de8f-c266-4d78-a1c4-02b413174ab6": [ + "79e82c91-9ed1-4eb0-8c33-89fe98219b7c", + "3afd24ac-a789-4e3e-b626-f7d990eab72a", + "97dafdc5-8004-4d73-890c-3c9ee68c688e" + ], + "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f": [ + "158c801e-d693-4ee1-b392-ef86c8e97864", + "755302fe-e073-4faa-881d-d561335f3068", + "ae565e52-976f-4909-b062-b8cd5ef26c30" + ], + "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc": [ + "fb5c188a-1ff8-4974-b2a2-97c691a6b517", + "b5131656-c058-447c-a93d-52d91ea30f6f" + ], + "755302fe-e073-4faa-881d-d561335f3068": [ + "60f4d6dd-6a18-47e4-8ec5-95445d429770" + ], + "79e82c91-9ed1-4eb0-8c33-89fe98219b7c": [ + "ff20ed51-2dce-4a17-816c-ca346983979e", + "f290578a-89d6-4141-b762-cf370d7392e0", + "94c3ba01-8de9-4a90-a0a8-05972ac52f44" + ], + "84347d1c-ca26-4d6d-b3d2-be770742e660": [ + "787f4515-a1cd-4cfc-990e-5199f7544975" + ], + "8d653755-953e-4a0d-9f06-c935dbdc659b": [ + "45bfea71-1399-42b0-8fa1-633305419119", + "9cae0b62-3130-4ecb-9aaf-302f82669aa3", + "2003aba6-81f4-438b-a9b0-d702c4d8e945" + ], + "96c40aae-f303-4c9b-be20-39d6a5d9e9ef": [ + "5786bd6e-498e-4090-b5b9-3d91ede365f6", + "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d", + "efc81eb0-403e-4ff3-aad6-ae88c55e1fd4" + ], + "b5131656-c058-447c-a93d-52d91ea30f6f": [ + "6db11f69-c5e4-43dd-adfb-ce93b013095b", + "29429cb3-52e5-4731-957b-4a37e7856fcb", + "e4891d1d-12bb-4a9f-9359-741a359ea39e", + "01182c94-a1f6-46f2-9b41-5cd622c480a6", + "2c316d9f-4c8b-4af0-b367-b0f1b8901a88", + "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9", + "2c313df1-8090-4200-b114-38919c70045f" + ], + "b8277fa8-b221-4b5c-b05b-df375de91af2": [ + "2a1ed781-06d1-4a4d-9908-5e807f3c2983", + "8927e413-8570-4259-891b-e36aa614a25d", + "14472868-d49c-4411-adc9-ab48beb4621c", + "3ac33bc3-743e-4eef-8011-ce8b6a1b740a", + "1044027a-8009-437b-8a4b-1c3ec006f8f9" + ], + "c1a07e06-f9e9-4023-b072-674edb9c680e": [ + "e430dc52-d4a4-4d99-95b5-baf1f09e68f6", + "470d42db-a5d6-4b45-8a0b-abcee1ad08d8" + ], + "c8655a4f-837f-4867-b7ee-81c9025fc188": [ + "e8655ffa-b4dc-4939-864d-77b9208e1f2e" + ], + "d77358f4-748d-49fe-ae50-911f357c4a62": [], + "d77fbae1-c379-4ffe-a524-887324617346": [ + "8d653755-953e-4a0d-9f06-c935dbdc659b", + "f7075669-9c1b-47a9-825e-cdf5c86fc827" + ], + "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d": [ + "4f8fa473-890a-49d0-8335-3b78ffaf31a5" + ], + "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5": [ + "3860c5b4-1987-436f-8113-63a1d3999d2e", + "4b2cb61d-1925-4515-ad23-e15f08cc6626" + ], + "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6": [ + "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1", + "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6" + ], + "f290578a-89d6-4141-b762-cf370d7392e0": [ + "8bd6d1b1-51bd-406a-9fa5-42956191dd2c" + ], + "f7075669-9c1b-47a9-825e-cdf5c86fc827": [ + "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96" + ], + "fb5c188a-1ff8-4974-b2a2-97c691a6b517": [ + "7fa7152a-1aa6-432f-8a18-e06028407210", + "36123500-0f85-4828-90d6-f7efe0465145", + "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933" + ], + "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77": [ + "8099fa98-1f01-4e85-be29-1c4ac50516a5", + "84347d1c-ca26-4d6d-b3d2-be770742e660", + "c1a07e06-f9e9-4023-b072-674edb9c680e", + "2f472276-c737-4757-bff1-6a22539a2cfa", + "540840f9-eca5-4975-8f05-3bcb7ff27f8c" + ], + "main": [ + "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc", + "5ac3de8f-c266-4d78-a1c4-02b413174ab6", + "27928f62-5265-4d23-a828-fc42c58572ac", + "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5", + "34c46b34-5b54-4a27-be7d-a55950a3398e" + ] + }, + "nodes": { + "01182c94-a1f6-46f2-9b41-5cd622c480a6": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "text": "Canary", - "left": 170, - "top": 54, - "bottom": 54, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 32, - "font_family": "Inter", - "font_weight": 500, - "id": "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933", + "bottom": 226, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "b5131656-c058-447c-a93d-52d91ea30f6f": { - "name": "Frame 947", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 930, - "style": { - "overflow": "clip" - }, - "corner_radius": [ - 0, - 0, - 30, - 30 ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "b5131656-c058-447c-a93d-52d91ea30f6f", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "6db11f69-c5e4-43dd-adfb-ce93b013095b": { - "name": "CANVAS", - "type": "text", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "text": "CANVAS", - "left": 60, - "top": 734, - "right": 523, - "bottom": 40, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 120, "font_family": "Inter", - "font_weight": 500, - "id": "6db11f69-c5e4-43dd-adfb-ce93b013095b", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } - } - ] - }, - "29429cb3-52e5-4731-957b-4a37e7856fcb": { - "name": "DRAW", - "type": "text", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "text": "DRAW", - "left": 60, - "top": 101, - "right": 662, - "bottom": 673, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, "font_size": 120, - "font_family": "Inter", "font_weight": 500, - "id": "29429cb3-52e5-4731-957b-4a37e7856fcb", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } - } - ] - }, - "e4891d1d-12bb-4a9f-9359-741a359ea39e": { - "name": "EVERYTHING", - "type": "text", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "text": "EVERYTHING", - "left": 60, - "top": 272, - "right": 250, - "bottom": 502, - "width": "auto", "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, + "id": "01182c94-a1f6-46f2-9b41-5cd622c480a6", + "left": 898, "letter_spacing": 0, - "font_size": 120, - "font_family": "Inter", - "font_weight": 500, - "id": "e4891d1d-12bb-4a9f-9359-741a359ea39e", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } - } - ] - }, - "01182c94-a1f6-46f2-9b41-5cd622c480a6": { - "name": "IN", - "type": "text", - "active": true, + "line_height": 1.3, "locked": false, + "name": "IN", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "IN", - "left": 898, - "top": 548, "right": 60, - "bottom": 226, - "width": "auto", - "height": "auto", + "rotation": 0, "style": {}, + "text": "IN", "text_align": "left", "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 120, - "font_family": "Inter", - "font_weight": 500, - "id": "01182c94-a1f6-46f2-9b41-5cd622c480a6", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } - } - ] - }, - "2c316d9f-4c8b-4af0-b367-b0f1b8901a88": { - "name": "oval-2", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": -7, - "top": -94.5, - "width": 542, - "height": 542, - "style": { - "overflow": "clip" - }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "2c316d9f-4c8b-4af0-b367-b0f1b8901a88" - }, - "cc64cd72-f5aa-489a-8570-8cdc4b20daca": { - "name": "circle-02", - "type": "svgpath", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 37.93999481201172, - "top": 159.8900146484375, - "width": 466.1200256347656, - "height": 222.22000122070312, - "paths": [ - { - "d": "M282.02 196.565C291.915 198.98 300.538 198.066 309.028 198.849C327.063 200.524 345.164 201.372 363.242 202.633C365.305 202.785 368.354 202.372 368.179 205.417C368.025 207.809 365.173 207.592 363.286 207.657C323.465 208.81 283.644 210.397 243.845 208.07C229.913 207.244 216.507 210.115 202.949 212.137C172.825 216.639 142.548 219.727 112.095 221.337C89.782 222.511 67.4909 222.25 45.178 222.032C41.6017 221.989 38.0475 221.532 34.4932 221.141C32.0798 220.88 29.1618 220.358 29.1398 217.465C29.1179 213.986 32.5186 214.181 34.9758 213.79C36.5336 213.551 38.1572 213.616 39.7368 213.725C89.6503 216.987 139.213 213.442 188.578 206.004C166.177 203.721 143.776 201.481 121.683 197.24C89.6284 191.085 58.4517 182.386 30.8292 164.204C20.0567 157.114 10.8857 148.415 5.11552 136.715C-4.80137 116.598 -0.128149 94.0668 17.6433 74.5805C35.5902 54.8985 58.2981 42.3716 82.6076 32.3892C121.222 16.5349 161.657 8.09666 203.058 3.59481C230.242 0.637071 257.491 -0.667813 284.785 0.332598C326.712 1.89846 368.201 6.72653 407.934 21.2325C422.414 26.5173 436.28 33.0635 447.777 43.5243C469.52 63.315 471.999 86.9334 454.864 110.769C443.784 126.189 428.777 137.28 412.673 147.002C381.781 165.64 348.06 177.623 313.614 187.779C303.697 190.694 293.714 193.325 282.086 196.565L282.02 196.565ZM275.021 12.294C266.443 12.4245 257.908 12.9465 249.352 13.251C224.823 14.0991 200.469 16.6654 176.335 20.841C136.47 27.7352 97.7023 38.1742 62.1376 57.9867C43.8835 68.1431 26.9458 80.0176 17.2922 99.3298C10.6005 112.727 11.895 125.71 20.8904 137.824C27.2969 146.458 35.8535 152.569 45.178 157.636C75.1919 173.947 107.97 181.32 141.451 186.257C167.077 190.019 192.878 192.238 218.723 193.999C234.41 195.087 250.054 196.718 265.434 191.455C271.05 189.541 277.018 188.606 282.81 187.105C320.635 177.21 357.911 165.683 392.686 147.502C412.563 137.106 431.125 124.819 444.815 106.702C460.502 85.933 457.54 65.2506 436.917 49.157C424.674 39.6096 410.611 33.6289 395.933 28.9096C356.638 16.2739 316.005 13.2075 275.065 12.3375L275.021 12.294Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "cc64cd72-f5aa-489a-8570-8cdc4b20daca", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } - } - ] + "top": 548, + "type": "text", + "width": "auto", + "z_index": 0 }, - "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9": { - "name": "arrow-27", - "type": "svgpath", + "0879aa63-70ad-4c47-ae56-b99462ce540c": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 609.6328735351562, - "top": 673.424072265625, - "width": 233.6844024658203, - "height": 117.1951675415039, - "paths": [ - { - "d": "M13.957 102.47C15.3467 95.6312 16.7804 89.3427 17.867 82.9892C18.461 79.4479 18.5805 75.8295 18.7349 72.1824C18.8378 69.7509 18.536 67.1848 15.4161 66.8896C12.1052 66.5763 11.1336 69.022 10.5956 71.6371C9.60754 76.6187 8.78162 81.5835 7.79353 86.565C6.29774 93.8434 4.43203 100.958 1.03365 107.639C-1.77511 113.187 1.40575 118.242 7.36952 117.008C19.2971 114.539 31.4461 114.468 43.3601 112.479C45.0231 112.219 47.5593 112.234 47.4651 109.848C47.3574 107.943 45.0122 107.946 43.519 107.773C37.2337 106.985 30.9302 106.389 24.6676 105.7C23.6201 105.568 22.2694 105.922 21.7357 104.78C21.0412 103.301 22.3996 102.53 23.2833 101.682C40.5704 84.7521 57.4831 67.369 76.9837 52.8326C89.502 43.4816 102.791 35.4882 118.341 32.0774C123.72 30.916 129.112 30.6232 134.458 31.8357C136.187 32.2242 138.48 32.4411 139.08 34.2324C139.749 36.3193 137.36 37.1211 136.092 38.286C123.692 49.7683 113.798 62.9331 109.05 79.4114C107.175 85.9473 106.389 92.5219 108.648 99.1598C111.462 107.392 117.984 111.093 126.493 109.103C135.002 107.114 141.348 101.869 146.668 95.2412C156.443 82.9966 162.337 69.3248 161.328 53.2653C161.025 48.3542 160.148 43.389 157.519 39.2857C154.188 34.1203 156.341 31.7543 160.799 29.1247C176.246 20.0507 192.919 14.3048 210.181 10.1244C216.69 8.55613 223.165 7.01671 229.629 5.25143C231.31 4.80021 234.275 4.69527 233.581 1.86717C233.012 -0.595697 230.374 0.11834 228.487 0.0361079C228.296 0.0180319 228.134 0.034881 227.937 0.0804737C202.055 6.40039 175.04 9.43311 152.367 25.2432C150.096 26.8271 148.194 27.5786 145.519 25.9764C135.862 20.116 125.39 19.4463 114.626 21.8326C94.0215 26.3713 77.1343 37.7502 61.7601 51.4564C44.8746 66.5293 29.6674 83.2064 15.8216 101.104C15.4957 101.491 14.9909 101.733 14.0268 102.412L13.957 102.47ZM134.31 96.8342C132.208 98.3377 130.389 99.9001 128.415 101.062C120.92 105.557 114.789 102.471 113.917 93.7482C113.495 89.4041 114.226 85.1048 115.488 80.9522C119.37 68.1821 127.063 57.8926 136.304 48.5526C139.502 45.322 142.725 39.1385 146.841 40.7807C151.419 42.6272 151.9 49.386 152.463 54.6107C152.602 55.8445 152.672 57.1359 152.586 58.3804C151.52 73.6332 145.137 86.3594 134.316 96.7705L134.31 96.8342Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9", + "bottom": 54, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "2c313df1-8090-4200-b114-38919c70045f": { - "name": "diamond-cluster", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 32, + "font_weight": 500, + "height": "auto", + "id": "0879aa63-70ad-4c47-ae56-b99462ce540c", + "left": 170, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Canary", "opacity": 1, - "z_index": 0, - "rotation": -0.08141034632793365, - "expanded": false, "position": "absolute", - "left": 23, - "top": 612.2640991210938, - "width": 200, - "height": 200, - "style": { - "overflow": "clip" - }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "2c313df1-8090-4200-b114-38919c70045f" + "rotation": 0, + "style": {}, + "text": "Canary", + "text_align": "left", + "text_align_vertical": "top", + "top": 54, + "type": "text", + "width": "auto", + "z_index": 0 }, - "296499fb-b83a-4cf2-8589-d589a3426f4e": { - "name": "misc-32", - "type": "svgpath", + "0eb99750-edad-4a0a-a886-6b7e505b62ab": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 79.6806640625, - "top": 66.437744140625, - "width": 49.59336853027344, - "height": 53.733787536621094, - "paths": [ - { - "d": "M19.123 9.31628C17.233 15.2863 14.883 20.7763 11.993 26.0263C10.673 28.4263 9.16297 30.6863 7.29297 32.6863C6.63297 33.3863 5.82299 34.3263 4.74299 33.5863C3.59299 32.7863 4.34299 31.7963 4.84299 30.9563C9.98299 22.3963 13.413 13.1563 15.833 3.49628C16.233 1.90628 16.593 0.136285 18.693 0.00628494C20.723 -0.113715 21.413 1.50628 22.113 3.01628C24.663 8.45628 28.383 12.8263 33.923 15.3363C37.513 16.9663 41.143 17.0163 44.403 14.2963C45.833 13.1063 47.453 12.2363 48.923 13.9963C50.363 15.7163 49.213 17.2263 48.003 18.5463C41.703 25.4463 38.073 33.6663 36.143 42.6963C35.593 45.2563 35.593 47.9363 35.163 50.5263C34.633 53.6363 31.843 54.8063 29.863 52.5863C24.433 46.5063 17.003 44.2763 9.76298 41.6563C7.02298 40.6663 4.27298 39.7363 1.73298 38.3163C0.972977 37.8963 -0.177014 37.5663 0.0229857 36.4663C0.252986 35.2063 1.49299 35.3163 2.46299 35.2763C11.563 34.8763 19.903 37.3763 27.563 42.1363C29.603 43.4063 30.183 43.1563 30.633 40.8463C31.753 34.9963 34.073 29.5663 37.093 24.4463C37.993 22.9263 38.493 22.0963 35.983 21.7363C30.303 20.9263 26.033 17.5463 22.353 13.3563C21.293 12.1463 20.333 10.8363 19.133 9.30627L19.123 9.31628Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "296499fb-b83a-4cf2-8589-d589a3426f4e", + "effects": [], "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "c83c9be1-62a3-40da-8037-a7ae14cc093e": { - "name": "misc-24", - "type": "svgpath", - "active": true, + ], + "height": 810, + "id": "0eb99750-edad-4a0a-a886-6b7e505b62ab", + "left": 135, "locked": false, + "name": "Ellipse 1", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 124.7919921875, - "top": 92.885498046875, - "width": 43.75392532348633, - "height": 40.73863983154297, - "paths": [ - { - "d": "M22.3616 40.7286C21.1616 40.6686 20.2716 40.2386 19.5216 39.5386C18.9916 39.0486 18.4616 38.5186 18.0616 37.9286C15.1416 33.5586 11.6216 30.4986 5.8316 31.9486C5.2516 32.0986 4.56162 31.9286 3.94162 31.8086C2.32162 31.4786 0.651622 31.1386 0.131622 29.2186C-0.388378 27.3286 0.711626 26.0786 2.04163 25.0386C5.77163 22.1286 9.32162 19.0386 12.1616 15.1986C14.9416 11.4486 17.3316 7.51863 18.6816 3.00863C19.0816 1.67863 19.5316 0.348638 21.1316 0.0486379C22.8016 -0.261362 23.5316 0.968616 24.3416 2.08862C28.3816 7.63862 33.6116 11.1786 40.6216 11.7386C41.9516 11.8486 43.1616 12.2986 43.6016 13.7186C44.0716 15.2286 43.4116 16.4086 42.2016 17.2586C39.5216 19.1286 36.9916 21.3586 34.0616 22.6886C29.7216 24.6486 27.9116 28.0786 26.9416 32.3186C26.5116 34.1786 26.2216 36.0686 25.7116 37.8986C25.2416 39.6186 24.1216 40.7286 22.3416 40.7386L22.3616 40.7286ZM34.9616 16.2886C30.4816 13.9886 26.4416 11.8186 23.1516 8.47863C22.0816 7.39863 21.7916 8.47861 21.4816 9.17861C20.2216 11.9986 18.7716 14.7186 16.9316 17.1986C15.0116 19.7786 12.9716 22.2786 10.9616 24.8486C15.3316 26.2886 17.3316 30.4786 21.2216 33.0586C22.2816 24.5086 26.9916 19.1386 34.9716 16.2986L34.9616 16.2886Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "c83c9be1-62a3-40da-8037-a7ae14cc093e", + "rotation": 0, + "stroke_cap": "butt", + "stroke_width": 1, + "top": 60, + "type": "ellipse", + "width": 810, + "z_index": 0 + }, + "1044027a-8009-437b-8a4b-1c3ec006f8f9": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1.0, + "b": 1.0, + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "79f25f6f-65bd-4dd8-8627-c4a5d773a218": { - "name": "misc-22", - "type": "svgpath", - "active": true, + ], + "height": 116.1629638671875, + "id": "1044027a-8009-437b-8a4b-1c3ec006f8f9", + "left": 0, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 30.4658203125, - "top": 83.214111328125, - "width": 39.131309509277344, - "height": 38.8399543762207, - "paths": [ - { - "d": "M14.7478 0.019989C16.3678 0.159989 17.3678 0.939979 18.3478 1.75998C20.8578 3.83998 23.1678 6.17 25.9578 7.91C28.8978 9.74 31.9678 10.8 35.5078 9.94C36.7978 9.63 38.3778 9.31999 38.9978 11.05C39.5678 12.62 38.1878 13.26 37.2078 14.02C31.3978 18.53 26.8678 23.9 25.4878 31.41C25.2078 32.96 25.2078 34.45 25.5178 35.99C25.7478 37.16 25.4078 38.21 24.2178 38.68C22.9578 39.18 22.1678 38.44 21.5778 37.4C20.0278 34.68 17.4078 33.41 14.6278 32.51C10.7478 31.26 6.80781 30.21 2.88781 29.08C1.65781 28.73 0.207816 28.47 0.0178157 26.98C-0.172184 25.56 1.19782 25.17 2.20782 24.55C4.49782 23.13 6.04782 21.02 7.30782 18.68C9.86782 13.89 10.9278 8.64997 11.8978 3.37997C12.2378 1.53997 12.8278 0.03 14.7778 0L14.7478 0.019989ZM15.6778 6.03C15.3578 6.86 15.1278 7.34998 14.9878 7.84998C13.4278 13.46 11.8078 19.04 7.73782 23.48C6.70782 24.6 7.63781 24.8 8.47781 25.03C12.3378 26.07 16.1978 27.11 19.6878 29.14C20.6978 29.73 21.2278 29.37 21.4778 28.38C22.6778 23.48 25.2778 19.39 28.7178 15.78C29.5678 14.89 29.3478 14.38 28.2478 14.1C23.3078 12.85 19.6478 9.55999 15.6778 6.01999L15.6778 6.03Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "79f25f6f-65bd-4dd8-8627-c4a5d773a218", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 + "rotation": 0, + "top": 131.5487060546875, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 75.82589721679688, + 71.80049896240234 + ], + [ + 122.60700225830078, + 71.80049896240234 + ], + [ + 84.82219696044922, + 44.36249923706055 + ], + [ + 99.21620178222656, + 0.0 + ], + [ + 61.431800842285156, + 27.438100814819336 + ], + [ + 23.64739990234375, + 0.0 + ], + [ + 38.041500091552734, + 44.36249923706055 + ], + [ + 0.0, + 71.80049896240234 + ], + [ + 47.03770065307617, + 71.80049896240234 + ], + [ + 61.431800842285156, + 116.16300201416016 + ], + [ + 75.82589721679688, + 71.80049896240234 + ] + ] + }, + "width": 122.60669708251952, + "z_index": 0 }, - "5ac3de8f-c266-4d78-a1c4-02b413174ab6": { - "name": "demo", - "type": "container", + "135994ec-41b4-4d58-bf51-9dd6fd577e6c": { "active": true, + "height": 0, + "id": "135994ec-41b4-4d58-bf51-9dd6fd577e6c", + "left": 0, "locked": false, + "name": "Vector 270", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 619, - "top": 34, - "width": 1080, - "height": 1080, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" + "rotation": 0, + "top": 150, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.5 + ], + [ + 1080.0, + 0.5 + ], + [ + 1080.0, + -0.5 + ], + [ + 0.0, + -0.5 + ], + [ + 0.0, + 0.5 + ] + ] }, - "corner_radius": 30, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "5ac3de8f-c266-4d78-a1c4-02b413174ab6", + "width": 1080, + "z_index": 0 + }, + "14472868-d49c-4411-adc9-ab48beb4621c": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "79e82c91-9ed1-4eb0-8c33-89fe98219b7c": { - "name": "Frame 945", - "type": "container", - "active": true, + ], + "height": 116.16287231445312, + "id": "14472868-d49c-4411-adc9-ab48beb4621c", + "left": 181.72520446777344, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, + "rotation": 0, "top": 0, - "width": 1080, - "height": 150, - "style": { - "overflow": "clip" - }, - "corner_radius": [ - 30, - 30, - 0, - 0 - ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "79e82c91-9ed1-4eb0-8c33-89fe98219b7c", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 75.82589721679688, + 71.80049896240234 + ], + [ + 122.60700225830078, + 71.80049896240234 + ], + [ + 84.56510162353516, + 44.36240005493164 + ], + [ + 99.21620178222656, + 0.0 + ], + [ + 61.174800872802734, + 27.437999725341797 + ], + [ + 23.390300750732422, + 0.0 + ], + [ + 37.7843017578125, + 44.36240005493164 + ], + [ + 0.0, + 71.80049896240234 + ], + [ + 46.780601501464844, + 71.80049896240234 + ], + [ + 61.174800872802734, + 116.16300201416016 + ], + [ + 75.82589721679688, + 71.80049896240234 + ] + ] + }, + "width": 122.60653686523438, + "z_index": 0 }, - "ff20ed51-2dce-4a17-816c-ca346983979e": { - "name": "Vector 270", - "type": "svgpath", + "158c801e-d693-4ee1-b392-ef86c8e97864": { "active": true, + "height": 0, + "id": "158c801e-d693-4ee1-b392-ef86c8e97864", + "left": 0, "locked": false, + "name": "Vector 270", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 0, + "rotation": 0, "top": 150, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.5 + ], + [ + 1080.0, + 0.5 + ], + [ + 1080.0, + -0.5 + ], + [ + 0.0, + -0.5 + ], + [ + 0.0, + 0.5 + ] + ] + }, "width": 1080, - "height": 0, - "paths": [ + "z_index": 0 + }, + "2003aba6-81f4-438b-a9b0-d702c4d8e945": { + "active": true, + "fill_paints": [ { - "d": "M0 0.5L1080 0.5L1080 -0.5L0 -0.5L0 0.5Z", - "fill_rule": "nonzero", - "fill": "stroke" + "active": true, + "color": { + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" } ], - "id": "ff20ed51-2dce-4a17-816c-ca346983979e" + "font_family": "Inter", + "font_size": 120, + "font_weight": 900, + "height": "auto", + "id": "2003aba6-81f4-438b-a9b0-d702c4d8e945", + "left": 0, + "letter_spacing": 0, + "line_height": 1.2, + "locked": false, + "name": "CREATING", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "style": {}, + "text": "CREATING", + "text_align": "left", + "text_align_vertical": "top", + "top": 290, + "type": "text", + "width": 629, + "z_index": 0 }, - "f290578a-89d6-4141-b762-cf370d7392e0": { - "name": "Frame 946", - "type": "container", + "27928f62-5265-4d23-a828-fc42c58572ac": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 40, - "top": 25, - "width": 100, - "height": 100, "border": { - "border_width": 1, "border_color": { - "r": 0, - "g": 0, + "a": 0.10000000149011612, "b": 0, - "a": 0.10000000149011612 + "g": 0, + "r": 0 }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" + "border_style": "solid", + "border_width": 1 }, - "corner_radius": 100, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "corner_radius": 30, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "f290578a-89d6-4141-b762-cf370d7392e0", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "8bd6d1b1-51bd-406a-9fa5-42956191dd2c": { - "name": "\blogo", - "type": "svgpath", - "active": true, + ], + "height": 1080, + "id": "27928f62-5265-4d23-a828-fc42c58572ac", + "layout": "flow", + "left": -611, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "demo", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 32, - "top": 32, - "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" - }, - { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "8bd6d1b1-51bd-406a-9fa5-42956191dd2c", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": -648, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "29429cb3-52e5-4731-957b-4a37e7856fcb": { + "active": true, + "bottom": 673, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "94c3ba01-8de9-4a90-a0a8-05972ac52f44": { - "name": "Canary", - "type": "text", - "active": true, + ], + "font_family": "Inter", + "font_size": 120, + "font_weight": 500, + "height": "auto", + "id": "29429cb3-52e5-4731-957b-4a37e7856fcb", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "DRAW", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "Canary", - "left": 170, - "top": 54, - "bottom": 54, - "width": "auto", - "height": "auto", + "right": 662, + "rotation": 0, "style": {}, + "text": "DRAW", "text_align": "left", "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 32, - "font_family": "Inter", - "font_weight": 500, - "id": "94c3ba01-8de9-4a90-a0a8-05972ac52f44", + "top": 101, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "296499fb-b83a-4cf2-8589-d589a3426f4e": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" + } + ], + "height": 53.733787536621094, + "id": "296499fb-b83a-4cf2-8589-d589a3426f4e", + "left": 79.6806640625, + "locked": false, + "name": "misc-32", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 66.437744140625, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + -1.8899993896484375, + 5.970019340515137 + ], + "tb": [ + 2.890000343322754, + -5.25 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + -1.3199996948242188, + 2.3999996185302734 + ], + "tb": [ + 1.8699994087219238, + -1.9999980926513672 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + -0.6600003242492676, + 0.7000007629394531 + ], + "tb": [ + 1.0799999237060547, + 0.7400016784667969 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + -1.1500000953674316, + -0.7999992370605469 + ], + "tb": [ + -0.5, + 0.8400001525878906 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 5.140000343322754, + -8.560001373291016 + ], + "tb": [ + -2.4200000762939453, + 9.660019874572754 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.39999961853027344, + -1.5899999141693115 + ], + "tb": [ + -2.1000003814697266, + 0.1300000697374344 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 2.029998779296875, + -0.11999993771314621 + ], + "tb": [ + -0.7000007629394531, + -1.5099999904632568 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 2.549999237060547, + 5.439999580383301 + ], + "tb": [ + -5.540000915527344, + -2.510000228881836 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 3.5900001525878906, + 1.6299991607666016 + ], + "tb": [ + -3.259998321533203, + 2.7200002670288086 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 1.4300003051757812, + -1.1899995803833008 + ], + "tb": [ + -1.470001220703125, + -1.7599992752075195 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 1.4399986267089844, + 1.7200002670288086 + ], + "tb": [ + 1.2100028991699219, + -1.3200016021728516 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + -6.299999237060547, + 6.899999618530273 + ], + "tb": [ + 1.9300003051757812, + -9.029998779296875 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + -0.5500030517578125, + 2.5600013732910156 + ], + "tb": [ + 0.43000030517578125, + -2.5900001525878906 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + -0.529998779296875, + 3.1100006103515625 + ], + "tb": [ + 1.9799995422363281, + 2.220001220703125 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + -5.430000305175781, + -6.079998016357422 + ], + "tb": [ + 7.240019798278809, + 2.6199989318847656 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + -2.7400002479553223, + -0.9899978637695312 + ], + "tb": [ + 2.5400002002716064, + 1.4200019836425781 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + -0.7600030303001404, + -0.4199981689453125 + ], + "tb": [ + -0.19999969005584717, + 1.0999984741210938 + ] + }, + { + "a": 17, + "b": 18, + "ta": [ + 0.2300003170967102, + -1.2600021362304688 + ], + "tb": [ + -0.9700000286102295, + 0.04000091552734375 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + 9.10000991821289, + -0.3999977111816406 + ], + "tb": [ + -7.659999847412109, + -4.759998321533203 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + 2.0400009155273438, + 1.2700004577636719 + ], + "tb": [ + -0.4499988555908203, + 2.3100013732910156 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + 1.1200008392333984, + -5.849998474121094 + ], + "tb": [ + -3.0199966430664062, + 5.119998931884766 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 0.9000015258789062, + -1.5200004577636719 + ], + "tb": [ + 2.509998321533203, + 0.3600006103515625 + ] + }, + { + "a": 22, + "b": 23, + "ta": [ + -5.680002212524414, + -0.8099994659423828 + ], + "tb": [ + 3.6800003051757812, + 4.190000534057617 + ] + }, + { + "a": 23, + "b": 24, + "ta": [ + -1.0600013732910156, + -1.2100000381469727 + ], + "tb": [ + 1.2000007629394531, + 1.5300302505493164 + ] + }, + { + "a": 24, + "b": 25, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 25, "b": 0, - "a": 1 + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 19.12299919128418, + 9.316280364990234 + ], + [ + 11.993000030517578, + 26.02630043029785 + ], + [ + 7.292970180511475, + 32.68629837036133 + ], + [ + 4.742990016937256, + 33.586299896240234 + ], + [ + 4.842989921569824, + 30.956300735473633 + ], + [ + 15.833000183105469, + 3.4962799549102783 + ], + [ + 18.69300079345703, + 0.006284940056502819 + ], + [ + 22.113000869750977, + 3.016279935836792 + ], + [ + 33.92300033569336, + 15.336299896240234 + ], + [ + 44.40299987792969, + 14.296299934387207 + ], + [ + 48.92300033569336, + 13.996299743652344 + ], + [ + 48.00299835205078, + 18.546300888061523 + ], + [ + 36.143001556396484, + 42.6963005065918 + ], + [ + 35.16299819946289, + 50.52629852294922 + ], + [ + 29.863000869750977, + 52.586299896240234 + ], + [ + 9.762980461120605, + 41.65629959106445 + ], + [ + 1.7329800128936768, + 38.31629943847656 + ], + [ + 0.022985700517892838, + 36.46630096435547 + ], + [ + 2.4629900455474854, + 35.27629852294922 + ], + [ + 27.562999725341797, + 42.13629913330078 + ], + [ + 30.632999420166016, + 40.84629821777344 + ], + [ + 37.09299850463867, + 24.446300506591797 + ], + [ + 35.983001708984375, + 21.736299514770508 + ], + [ + 22.35300064086914, + 13.356300354003906 + ], + [ + 19.132999420166016, + 9.306269645690918 + ], + [ + 19.12299919128418, + 9.316280364990234 + ] + ] + }, + "width": 49.59336853027344, + "z_index": 0 }, - "3afd24ac-a789-4e3e-b626-f7d990eab72a": { - "name": "Frame 947", - "type": "container", + "2a1ed781-06d1-4a4d-9908-5e807f3c2983": { "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 1.0, + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" + } + ], + "height": 116.16287231445312, + "id": "2a1ed781-06d1-4a4d-9908-5e807f3c2983", + "left": 112.32521057128906, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, + "position": "absolute", "rotation": 0, + "top": 212.83712768554688, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 75.82589721679688, + 71.80049896240234 + ], + [ + 122.60700225830078, + 71.80049896240234 + ], + [ + 84.82219696044922, + 44.36240005493164 + ], + [ + 99.21620178222656, + 0.0 + ], + [ + 61.431800842285156, + 27.437999725341797 + ], + [ + 23.390300750732422, + 0.0 + ], + [ + 37.7843017578125, + 44.36240005493164 + ], + [ + 0.0, + 71.80049896240234 + ], + [ + 46.780601501464844, + 71.80049896240234 + ], + [ + 61.431800842285156, + 116.16300201416016 + ], + [ + 75.82589721679688, + 71.80049896240234 + ] + ] + }, + "width": 122.60653686523438, + "z_index": 0 + }, + "2c313df1-8090-4200-b114-38919c70045f": { + "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", "expanded": false, + "height": 200, + "id": "2c313df1-8090-4200-b114-38919c70045f", + "layout": "flow", + "left": 23, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "diamond-cluster", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 930, + "rotation": -0.08141034632793365, "style": { "overflow": "clip" }, - "corner_radius": [ - 0, - 0, - 30, - 30 - ], - "padding": 0, - "layout": "flow", + "top": 612.2640991210938, + "type": "container", + "width": 200, + "z_index": 0 + }, + "2c316d9f-4c8b-4af0-b367-b0f1b8901a88": { + "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, "direction": "horizontal", + "expanded": false, + "height": 542, + "id": "2c316d9f-4c8b-4af0-b367-b0f1b8901a88", + "layout": "flow", + "left": -7, + "locked": false, "main_axis_alignment": "start", - "cross_axis_alignment": "start", "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "3afd24ac-a789-4e3e-b626-f7d990eab72a", + "name": "oval-2", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": -94.5, + "type": "container", + "width": 542, + "z_index": 0 + }, + "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, - "b": 1.0, - "a": 1.0 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] + ], + "height": 200, + "id": "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa", + "left": 111, + "locked": false, + "name": "Vector", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 415, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 17, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 22, + "b": 18, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.0 + ], + [ + 66.66670227050781, + 0.0 + ], + [ + 66.66670227050781, + 66.66670227050781 + ], + [ + 0.0, + 66.66670227050781 + ], + [ + 0.0, + 0.0 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 66.66670227050781, + 66.66670227050781 + ], + [ + 66.66670227050781, + 133.33299255371094 + ], + [ + 0.0, + 133.33299255371094 + ], + [ + 0.0, + 200.0 + ], + [ + 66.66670227050781, + 200.0 + ], + [ + 66.66670227050781, + 133.33299255371094 + ], + [ + 133.33299255371094, + 133.33299255371094 + ], + [ + 133.33299255371094, + 200.0 + ], + [ + 200.0, + 200.0 + ], + [ + 200.0, + 133.33299255371094 + ], + [ + 133.33299255371094, + 133.33299255371094 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 200.0, + 66.66670227050781 + ], + [ + 200.0, + 0.0 + ], + [ + 133.33299255371094, + 0.0 + ], + [ + 133.33299255371094, + 66.66670227050781 + ] + ] + }, + "width": 200, + "z_index": 0 }, - "0eb99750-edad-4a0a-a886-6b7e505b62ab": { - "name": "Ellipse 1", - "type": "ellipse", + "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933": { "active": true, + "bottom": 54, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" + } + ], + "font_family": "Inter", + "font_size": 32, + "font_weight": 500, + "height": "auto", + "id": "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933", + "left": 170, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Canary", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 135, - "top": 60, - "width": 810, - "height": 810, - "stroke_width": 1, - "stroke_cap": "butt", - "effects": [], - "id": "0eb99750-edad-4a0a-a886-6b7e505b62ab", + "rotation": 0, + "style": {}, + "text": "Canary", + "text_align": "left", + "text_align_vertical": "top", + "top": 54, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "2f472276-c737-4757-bff1-6a22539a2cfa": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "9f5905c5-5e47-4d14-898f-18d4bb98025e": { - "name": "Draw anything, anywhere, anytime.", - "type": "text", - "active": true, + ], + "font_family": "Inter", + "font_size": 100, + "font_weight": 200, + "height": "auto", + "id": "2f472276-c737-4757-bff1-6a22539a2cfa", + "left": 90, + "letter_spacing": 0, + "line_height": 1, "locked": false, + "name": "Meet your", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "Draw anything, \nanywhere, anytime.", - "left": 60, - "top": 60, - "right": 560, - "bottom": 740, - "width": "auto", - "height": "auto", + "rotation": 0, "style": {}, + "text": "Meet your", "text_align": "left", "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 50, - "font_family": "Inter", - "font_weight": 400, - "id": "9f5905c5-5e47-4d14-898f-18d4bb98025e", + "top": 80, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "34c46b34-5b54-4a27-be7d-a55950a3398e": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 30, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "a3b4b1cd-ce66-4e36-abfa-a162d5676199": { - "name": "Vector", - "type": "svgpath", - "active": true, + ], + "height": 1080, + "id": "34c46b34-5b54-4a27-be7d-a55950a3398e", + "layout": "flow", + "left": 619, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "demo", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 820, - "top": 60, - "width": 200, - "height": 200, - "paths": [ - { - "d": "M0 0L66.6667 0L66.6667 66.6667L0 66.6667L0 0ZM133.333 66.6667L66.6667 66.6667L66.6667 133.333L0 133.333L0 200L66.6667 200L66.6667 133.333L133.333 133.333L133.333 200L200 200L200 133.333L133.333 133.333L133.333 66.6667ZM133.333 66.6667L200 66.6667L200 0L133.333 0L133.333 66.6667Z", - "fill_rule": "evenodd", - "fill": "fill" - } - ], - "id": "a3b4b1cd-ce66-4e36-abfa-a162d5676199", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": -1246, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "36123500-0f85-4828-90d6-f7efe0465145": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 100, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa": { - "name": "Vector", - "type": "svgpath", - "active": true, + ], + "height": 100, + "id": "36123500-0f85-4828-90d6-f7efe0465145", + "layout": "flow", + "left": 40, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 946", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 111, - "top": 415, - "width": 200, - "height": 200, - "paths": [ - { - "d": "M0 0L66.6667 0L66.6667 66.6667L0 66.6667L0 0ZM133.333 66.6667L66.6667 66.6667L66.6667 133.333L0 133.333L0 200L66.6667 200L66.6667 133.333L133.333 133.333L133.333 200L200 200L200 133.333L133.333 133.333L133.333 66.6667ZM133.333 66.6667L200 66.6667L200 0L133.333 0L133.333 66.6667Z", - "fill_rule": "evenodd", - "fill": "fill" - } + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 25, + "type": "container", + "width": 100, + "z_index": 0 + }, + "3860c5b4-1987-436f-8113-63a1d3999d2e": { + "active": true, + "corner_radius": [ + 30, + 30, + 0, + 0 ], - "id": "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa", + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "97dafdc5-8004-4d73-890c-3c9ee68c688e": { - "name": "With Canvas, you’re not just creating visuals—you’re building experiences.", - "type": "text", - "active": true, + ], + "height": 150, + "id": "3860c5b4-1987-436f-8113-63a1d3999d2e", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 945", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "With Canvas, \nyou’re not just creating visuals—you’re building experiences.", - "left": 60, - "top": 825, - "right": 142, - "bottom": 60, - "width": 878, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 50, - "font_family": "Inter", - "font_weight": 400, - "id": "97dafdc5-8004-4d73-890c-3c9ee68c688e", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "39121f18-a69b-4d0c-8a45-39548fb7d43b": { + "active": true, + "corner_radius": [ + 0, + 0, + 400, + 400 + ], + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, + "a": 1.0, + "b": 0.4705882352941176, "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "r": 1.0 + }, + "type": "solid" } - ] - }, - "27928f62-5265-4d23-a828-fc42c58572ac": { - "name": "demo", - "type": "container", - "active": true, + ], + "height": 930, + "id": "39121f18-a69b-4d0c-8a45-39548fb7d43b", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": -611, - "top": -648, - "width": 1080, - "height": 1080, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, + "rotation": 0, "style": { "overflow": "clip" }, - "corner_radius": 30, - "padding": 0, - "layout": "flow", + "top": 150, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6": { + "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, "direction": "horizontal", + "expanded": false, + "height": 65, + "id": "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6", + "layout": "flow", + "left": 180, + "locked": false, "main_axis_alignment": "start", - "cross_axis_alignment": "start", "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "27928f62-5265-4d23-a828-fc42c58572ac", + "name": "icons/unicons-arrow-up-right", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 10, + "type": "container", + "width": 65, + "z_index": 0 + }, + "3ac33bc3-743e-4eef-8011-ce8b6a1b740a": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f": { - "name": "Frame 945", - "type": "container", - "active": true, + ], + "height": 116.16287231445312, + "id": "3ac33bc3-743e-4eef-8011-ce8b6a1b740a", + "left": 42.92522048950195, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, + "rotation": 0, "top": 0, - "width": 1080, - "height": 150, - "style": { - "overflow": "clip" + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 75.82589721679688, + 71.80049896240234 + ], + [ + 122.60700225830078, + 71.80049896240234 + ], + [ + 84.82219696044922, + 44.36240005493164 + ], + [ + 99.21620178222656, + 0.0 + ], + [ + 61.431800842285156, + 27.437999725341797 + ], + [ + 23.390300750732422, + 0.0 + ], + [ + 38.04140090942383, + 44.36240005493164 + ], + [ + 0.0, + 71.80049896240234 + ], + [ + 46.780601501464844, + 71.80049896240234 + ], + [ + 61.431800842285156, + 116.16300201416016 + ], + [ + 75.82589721679688, + 71.80049896240234 + ] + ] }, + "width": 122.60653686523438, + "z_index": 0 + }, + "3afd24ac-a789-4e3e-b626-f7d990eab72a": { + "active": true, "corner_radius": [ - 30, - 30, 0, - 0 + 0, + 30, + 30 ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "158c801e-d693-4ee1-b392-ef86c8e97864": { - "name": "Vector 270", - "type": "svgpath", - "active": true, + ], + "height": 930, + "id": "3afd24ac-a789-4e3e-b626-f7d990eab72a", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, + "rotation": 0, + "style": { + "overflow": "clip" + }, "top": 150, + "type": "container", "width": 1080, - "height": 0, - "paths": [ + "z_index": 0 + }, + "3cdaf947-0959-470b-9012-018e733d9f69": { + "active": true, + "fill_paints": [ { - "d": "M0 0.5L1080 0.5L1080 -0.5L0 -0.5L0 0.5Z", - "fill_rule": "nonzero", - "fill": "stroke" + "active": true, + "color": { + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } ], - "id": "158c801e-d693-4ee1-b392-ef86c8e97864" + "height": 36, + "id": "3cdaf947-0959-470b-9012-018e733d9f69", + "left": 32, + "locked": false, + "name": "\blogo", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 32, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] + }, + "width": 36.00001525878906, + "z_index": 0 }, - "755302fe-e073-4faa-881d-d561335f3068": { - "name": "Frame 946", - "type": "container", + "45bfea71-1399-42b0-8fa1-633305419119": { "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" + } + ], + "font_family": "Inter", + "font_size": 120, + "font_weight": 200, + "height": "auto", + "id": "45bfea71-1399-42b0-8fa1-633305419119", + "left": 0, + "letter_spacing": 0, + "line_height": 1.2, "locked": false, + "name": "JUMP IN", "opacity": 1, - "z_index": 0, + "position": "absolute", "rotation": 0, - "expanded": false, + "style": {}, + "text": "JUMP IN", + "text_align": "left", + "text_align_vertical": "top", + "top": 0, + "type": "text", + "width": 629, + "z_index": 0 + }, + "470d42db-a5d6-4b45-8a0b-abcee1ad08d8": { + "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" + } + ], + "height": 36, + "id": "470d42db-a5d6-4b45-8a0b-abcee1ad08d8", + "left": 246, + "locked": false, + "name": "\blogo", + "opacity": 1, "position": "absolute", - "left": 40, - "top": 25, - "width": 100, - "height": 100, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" + "rotation": 0, + "top": 6, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] }, - "corner_radius": 100, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "width": 36.00001525878906, + "z_index": 0 + }, + "4b2cb61d-1925-4515-ad23-e15f08cc6626": { + "active": true, + "corner_radius": 0, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "755302fe-e073-4faa-881d-d561335f3068", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] + ], + "height": 930, + "id": "4b2cb61d-1925-4515-ad23-e15f08cc6626", + "layout": "flow", + "left": 0, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 150, + "type": "container", + "width": 1080, + "z_index": 0 }, - "60f4d6dd-6a18-47e4-8ec5-95445d429770": { - "name": "\blogo", - "type": "svgpath", + "4f8fa473-890a-49d0-8335-3b78ffaf31a5": { "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" + } + ], + "height": 36, + "id": "4f8fa473-890a-49d0-8335-3b78ffaf31a5", + "left": 32, "locked": false, + "name": "\blogo", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 32, + "rotation": 0, "top": 32, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] + }, "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" - }, - { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "60f4d6dd-6a18-47e4-8ec5-95445d429770", + "z_index": 0 + }, + "540840f9-eca5-4975-8f05-3bcb7ff27f8c": { + "active": true, + "corner_radius": 0, + "effects": [], "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "ae565e52-976f-4909-b062-b8cd5ef26c30": { - "name": "Canary", - "type": "text", - "active": true, + ], + "height": 3, + "id": "540840f9-eca5-4975-8f05-3bcb7ff27f8c", + "left": 90, "locked": false, + "name": "Rectangle 2", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "Canary", - "left": 170, - "top": 54, - "bottom": 54, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 32, - "font_family": "Inter", - "font_weight": 500, - "id": "ae565e52-976f-4909-b062-b8cd5ef26c30", + "rotation": 0, + "stroke_cap": "butt", + "stroke_width": 1, + "top": 320, + "type": "rectangle", + "width": 900, + "z_index": 0 + }, + "55067523-3d57-4636-91c7-3f1769f4747e": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, + "a": 1, + "b": 0, "g": 0, + "r": 0 + }, + "type": "solid" + } + ], + "height": 32.5, + "id": "55067523-3d57-4636-91c7-3f1769f4747e", + "left": 16.249008178710938, + "locked": false, + "name": "Vector", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 16.25, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + -0.8194059729576111, + 0.0004958955105394125 + ], + "tb": [ + -0.0004958956269547343, + -0.8194130659103394 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0004958953359164298, + 0.8194098472595215 + ], + "tb": [ + -0.8194130659103394, + 0.0004999637603759766 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + -0.27803999185562134, + 0.27739906311035156 + ], + "tb": [ + -0.000661100260913372, + -0.3927001953125 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0013224799185991287, + 0.8152008056640625 + ], + "tb": [ + -0.8151150345802307, + 0.001300811767578125 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.39177000522613525, + 0.0010986328125 + ], + "tb": [ + -0.2770500183105469, + 0.27700042724609375 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0002994537353515625, + 0.8190994262695312 + ], + "tb": [ + -0.8191013336181641, + 0.000301361083984375 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.8190994262695312, + -0.000301361083984375 + ], + "tb": [ + 0.000301361083984375, + 0.8191013336181641 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + -0.00029754638671875, + -0.8190810084342957 + ], + "tb": [ + 0.8190994262695312, + -0.0003306875005364418 + ] + }, + { + "a": 14, "b": 0, - "a": 1 + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 31.017200469970703, + 1.2348999689493212e-7 + ], + [ + 1.4827699661254883, + 1.2348999689493212e-7 + ], + [ + 2.776409928628709e-7, + 1.484760046005249 + ], + [ + 1.484760046005249, + 2.9675300121307373 + ], + [ + 27.442899703979492, + 2.9675300121307373 + ], + [ + 0.4400379955768585, + 29.971500396728516 + ], + [ + 0.006612420082092285, + 31.01849937438965 + ], + [ + 1.484760046005249, + 32.49209976196289 + ], + [ + 2.52947998046875, + 32.06100082397461 + ], + [ + 29.53350067138672, + 5.05580997467041 + ], + [ + 29.53350067138672, + 31.01740074157715 + ], + [ + 31.017200469970703, + 32.5 + ], + [ + 32.500999450683594, + 31.016199111938477 + ], + [ + 32.500999450683594, + 1.4826099872589111 + ], + [ + 31.017200469970703, + 1.2348999689493212e-7 + ] + ] + }, + "width": 32.50099182128906, + "z_index": 0 }, - "d77358f4-748d-49fe-ae50-911f357c4a62": { - "name": "Frame 947", - "type": "container", + "5786bd6e-498e-4090-b5b9-3d91ede365f6": { "active": true, + "height": 0, + "id": "5786bd6e-498e-4090-b5b9-3d91ede365f6", + "left": 0, "locked": false, + "name": "Vector 270", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, + "rotation": 0, "top": 150, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.5 + ], + [ + 1080.0, + 0.5 + ], + [ + 1080.0, + -0.5 + ], + [ + 0.0, + -0.5 + ], + [ + 0.0, + 0.5 + ] + ] + }, "width": 1080, - "height": 930, - "style": { - "overflow": "clip" + "z_index": 0 + }, + "5ac3de8f-c266-4d78-a1c4-02b413174ab6": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "corner_radius": 30, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "d77358f4-748d-49fe-ae50-911f357c4a62", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "39121f18-a69b-4d0c-8a45-39548fb7d43b": { - "name": "Frame 947", - "type": "container", - "active": true, + ], + "height": 1080, + "id": "5ac3de8f-c266-4d78-a1c4-02b413174ab6", + "layout": "flow", + "left": 619, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "demo", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 930, + "rotation": 0, "style": { "overflow": "clip" }, + "top": 34, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f": { + "active": true, "corner_radius": [ + 30, + 30, 0, - 0, - 400, - 400 + 0 ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "39121f18-a69b-4d0c-8a45-39548fb7d43b", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.9607843137254902, - "b": 0.47058823529411764, - "a": 1.0 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "e0e5300d-09e2-4afb-ad25-4e8b0b03624c": { - "name": "We are looking for a new contributor for our team", - "type": "text", - "active": true, + ], + "height": 150, + "id": "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 945", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "We are looking for\na new contributor for our team", - "left": 60, - "top": 125, - "right": 216, - "bottom": 675, - "width": 804, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 50, - "font_family": "Inter", - "font_weight": 300, - "id": "e0e5300d-09e2-4afb-ad25-4e8b0b03624c", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 30, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6": { - "name": "Frame 1018", + ], + "height": 1080, + "id": "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc", + "layout": "flow", + "left": -611, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "demo", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 632, "type": "container", + "width": 1080, + "z_index": 0 + }, + "60f4d6dd-6a18-47e4-8ec5-95445d429770": { "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" + } + ], + "height": 36, + "id": "60f4d6dd-6a18-47e4-8ec5-95445d429770", + "left": 32, "locked": false, + "name": "\blogo", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 60, - "top": 322, - "width": 270, - "height": 85, - "border": { - "border_width": 2, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - }, - "border_style": "solid" - }, - "style": {}, - "corner_radius": 999, - "padding": { - "padding_top": 10, - "padding_right": 25, - "padding_bottom": 10, - "padding_left": 25 + "rotation": 0, + "top": 32, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] }, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 20, - "cross_axis_gap": 20, - "id": "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6" + "width": 36.00001525878906, + "z_index": 0 }, - "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1": { - "name": "about", - "type": "text", + "6db11f69-c5e4-43dd-adfb-ce93b013095b": { "active": true, + "bottom": 40, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" + } + ], + "font_family": "Inter", + "font_size": 120, + "font_weight": 500, + "height": "auto", + "id": "6db11f69-c5e4-43dd-adfb-ce93b013095b", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "CANVAS", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "about ", - "left": 25, - "top": 10, - "width": "auto", - "height": "auto", + "right": 523, + "rotation": 0, "style": {}, + "text": "CANVAS", "text_align": "left", "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 50, - "font_family": "Inter", - "font_weight": 300, - "id": "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1", + "top": 734, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "755302fe-e073-4faa-881d-d561335f3068": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 100, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6": { - "name": "icons/unicons-arrow-up-right", - "type": "container", - "active": true, + ], + "height": 100, + "id": "755302fe-e073-4faa-881d-d561335f3068", + "layout": "flow", + "left": 40, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 946", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 180, - "top": 10, - "width": 65, - "height": 65, + "rotation": 0, "style": { "overflow": "clip" }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6" + "top": 25, + "type": "container", + "width": 100, + "z_index": 0 }, - "55067523-3d57-4636-91c7-3f1769f4747e": { - "name": "Vector", - "type": "svgpath", + "787f4515-a1cd-4cfc-990e-5199f7544975": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 16.249008178710938, - "top": 16.25, - "width": 32.50099182128906, - "height": 32.5, - "paths": [ - { - "d": "M31.0172 1.2349e-07L1.48277 1.2349e-07C0.663364 0.000496019 -0.000495618 0.665347 2.77641e-07 1.48476C0.000496173 2.30417 0.665347 2.96803 1.48476 2.96753L27.4429 2.96753L0.440038 29.9715C0.161998 30.2489 0.00595132 30.6258 0.00661242 31.0185C0.0079349 31.8337 0.669645 32.4934 1.48476 32.4921C1.87653 32.4932 2.25243 32.338 2.52948 32.061L29.5335 5.05581L29.5335 31.0174C29.5338 31.8365 30.1981 32.5003 31.0172 32.5C31.8363 32.4997 32.5013 31.8353 32.501 31.0162L32.501 1.48261C32.5007 0.663529 31.8363 -0.000330564 31.0172 1.2349e-07Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "55067523-3d57-4636-91c7-3f1769f4747e", "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "b8277fa8-b221-4b5c-b05b-df375de91af2": { - "name": "D2", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 60, + "font_weight": 400, + "height": "auto", + "id": "787f4515-a1cd-4cfc-990e-5199f7544975", + "left": 30, + "letter_spacing": 0, + "line_height": 1.2, "locked": false, + "name": "Get started!", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 606, - "top": 481, - "width": 347, - "height": 329, + "rotation": 0, "style": {}, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "b8277fa8-b221-4b5c-b05b-df375de91af2" + "text": "Get started!", + "text_align": "left", + "text_align_vertical": "top", + "top": 10, + "type": "text", + "width": "auto", + "z_index": 0 }, - "2a1ed781-06d1-4a4d-9908-5e807f3c2983": { - "name": "Vector", - "type": "svgpath", + "79e82c91-9ed1-4eb0-8c33-89fe98219b7c": { "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "left": 112.32521057128906, - "top": 212.83712768554688, - "width": 122.60653686523438, - "height": 116.16287231445312, - "paths": [ - { - "d": "M75.8259 71.8005L122.607 71.8005L84.8222 44.3624L99.2162 0L61.4318 27.438L23.3903 0L37.7843 44.3624L0 71.8005L46.7806 71.8005L61.4318 116.163L75.8259 71.8005Z", - "fill_rule": "nonzero", - "fill": "fill" - } + "corner_radius": [ + 30, + 30, + 0, + 0 ], - "id": "2a1ed781-06d1-4a4d-9908-5e807f3c2983", + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "8927e413-8570-4259-891b-e36aa614a25d": { - "name": "Vector", - "type": "svgpath", - "active": true, + ], + "height": 150, + "id": "79e82c91-9ed1-4eb0-8c33-89fe98219b7c", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 945", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 224.65028381347656, - "top": 131.5487060546875, - "width": 122.34972381591797, - "height": 116.1629638671875, - "paths": [ - { - "d": "M75.569 71.8005L122.35 71.8005L84.5652 44.3625L98.9593 0L61.1749 27.4381L23.3905 0L37.7845 44.3625L0 71.8005L46.7808 71.8005L61.1749 116.163L75.569 71.8005Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "8927e413-8570-4259-891b-e36aa614a25d", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "79f25f6f-65bd-4dd8-8627-c4a5d773a218": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, - "b": 1.0, - "a": 1.0 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] + ], + "height": 38.8399543762207, + "id": "79f25f6f-65bd-4dd8-8627-c4a5d773a218", + "left": 30.4658203125, + "locked": false, + "name": "misc-22", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 83.214111328125, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 1.619999885559082, + 0.14000000059604645 + ], + "tb": [ + -0.9799995422363281, + -0.820000946521759 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 2.510000228881836, + 2.0799999237060547 + ], + "tb": [ + -2.789999008178711, + -1.739999771118164 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 2.940000534057617, + 1.8299999237060547 + ], + "tb": [ + -3.5400009155273438, + 0.8600006103515625 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 1.2899971008300781, + -0.3099994659423828 + ], + "tb": [ + -0.6199989318847656, + -1.7300100326538086 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.5699996948242188, + 1.5699996948242188 + ], + "tb": [ + 0.9799995422363281, + -0.7600002288818359 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + -5.810001373291016, + 4.510000228881836 + ], + "tb": [ + 1.3799991607666016, + -7.510000228881836 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.2800006866455078, + 1.5499992370605469 + ], + "tb": [ + -0.3099994659423828, + -1.5400009155273438 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.23000144958496094, + 1.1699981689453125 + ], + "tb": [ + 1.1900005340576172, + -0.470001220703125 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -1.260000228881836, + 0.5 + ], + "tb": [ + 0.5900001525878906, + 1.0399971008300781 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + -1.5500011444091797, + -2.720001220703125 + ], + "tb": [ + 2.780000686645508, + 0.9000015258789062 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + -3.880000114440918, + -1.2499980926513672 + ], + "tb": [ + 3.919999837875366, + 1.1299991607666016 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + -1.2300000190734863, + -0.35000038146972656 + ], + "tb": [ + 0.19000031054019928, + 1.489999771118164 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + -0.18999969959259033, + -1.4200000762939453 + ], + "tb": [ + -1.0099999904632568, + 0.6200008392333984 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 2.2899999618530273, + -1.4200000762939453 + ], + "tb": [ + -1.2599997520446777, + 2.3400001525878906 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 2.559999942779541, + -4.789999961853027 + ], + "tb": [ + -0.9700002670288086, + 5.269999980926514 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + 0.3399991989135742, + -1.840000033378601 + ], + "tb": [ + -1.9499998092651367, + 0.029999999329447746 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 17, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + -0.32000064849853516, + 0.8299999237060547 + ], + "tb": [ + 0.1400003433227539, + -0.5 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + -1.5599994659423828, + 5.610020160675049 + ], + "tb": [ + 4.069980144500732, + -4.439998626708984 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + -1.0300002098083496, + 1.1200008392333984 + ], + "tb": [ + -0.8399996757507324, + -0.23000144958496094 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 3.859990119934082, + 1.039999008178711 + ], + "tb": [ + -3.489999771118164, + -2.029998779296875 + ] + }, + { + "a": 22, + "b": 23, + "ta": [ + 1.010000228881836, + 0.5900001525878906 + ], + "tb": [ + -0.25, + 0.9900016784667969 + ] + }, + { + "a": 23, + "b": 24, + "ta": [ + 1.1999988555908203, + -4.899999618530273 + ], + "tb": [ + -3.440000534057617, + 3.609999656677246 + ] + }, + { + "a": 24, + "b": 25, + "ta": [ + 0.8500003814697266, + -0.8899993896484375 + ], + "tb": [ + 1.0999984741210938, + 0.2799997329711914 + ] + }, + { + "a": 25, + "b": 26, + "ta": [ + -4.940000534057617, + -1.25 + ], + "tb": [ + 3.9700002670288086, + 3.5399999618530273 + ] + }, + { + "a": 26, + "b": 27, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 27, + "b": 18, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 14.74779987335205, + 0.019989000633358955 + ], + [ + 18.34779930114746, + 1.7599799633026123 + ], + [ + 25.957799911499023, + 7.909999847412109 + ], + [ + 35.5078010559082, + 9.9399995803833 + ], + [ + 38.997798919677734, + 11.050000190734863 + ], + [ + 37.207801818847656, + 14.020000457763672 + ], + [ + 25.48780059814453, + 31.40999984741211 + ], + [ + 25.517799377441406, + 35.9900016784668 + ], + [ + 24.21780014038086, + 38.68000030517578 + ], + [ + 21.577800750732422, + 37.400001525878906 + ], + [ + 14.627799987792969, + 32.5099983215332 + ], + [ + 2.887809991836548, + 29.079999923706055 + ], + [ + 0.01781569980084896, + 26.979999542236328 + ], + [ + 2.207819938659668, + 24.549999237060547 + ], + [ + 7.307819843292236, + 18.68000030517578 + ], + [ + 11.89780044555664, + 3.379970073699951 + ], + [ + 14.777799606323242, + 0.0 + ], + [ + 14.74779987335205, + 0.019989000633358955 + ], + [ + 15.677800178527832, + 6.03000020980835 + ], + [ + 14.987799644470215, + 7.849979877471924 + ], + [ + 7.737820148468018, + 23.479999542236328 + ], + [ + 8.47780990600586, + 25.030000686645508 + ], + [ + 19.68779945373535, + 29.139999389648438 + ], + [ + 21.477800369262695, + 28.3799991607666 + ], + [ + 28.71780014038086, + 15.779999732971191 + ], + [ + 28.247800827026367, + 14.100000381469727 + ], + [ + 15.677800178527832, + 6.019989967346191 + ], + [ + 15.677800178527832, + 6.03000020980835 + ] + ] + }, + "width": 39.131309509277344, + "z_index": 0 }, - "14472868-d49c-4411-adc9-ab48beb4621c": { - "name": "Vector", - "type": "svgpath", + "7fa7152a-1aa6-432f-8a18-e06028407210": { "active": true, + "height": 0, + "id": "7fa7152a-1aa6-432f-8a18-e06028407210", + "left": 0, "locked": false, + "name": "Vector 270", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 181.72520446777344, - "top": 0, - "width": 122.60653686523438, - "height": 116.16287231445312, - "paths": [ - { - "d": "M75.8259 71.8005L122.607 71.8005L84.5651 44.3624L99.2162 0L61.1748 27.438L23.3903 0L37.7843 44.3624L0 71.8005L46.7806 71.8005L61.1748 116.163L75.8259 71.8005Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "14472868-d49c-4411-adc9-ab48beb4621c", + "rotation": 0, + "top": 150, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.5 + ], + [ + 1080.0, + 0.5 + ], + [ + 1080.0, + -0.5 + ], + [ + 0.0, + -0.5 + ], + [ + 0.0, + 0.5 + ] + ] + }, + "width": 1080, + "z_index": 0 + }, + "8099fa98-1f01-4e85-be29-1c4ac50516a5": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, - "b": 1.0, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "3ac33bc3-743e-4eef-8011-ce8b6a1b740a": { - "name": "Vector", - "type": "svgpath", - "active": true, + ], + "font_family": "Inter", + "font_size": 100, + "font_weight": 500, + "height": "auto", + "id": "8099fa98-1f01-4e85-be29-1c4ac50516a5", + "left": 90, + "letter_spacing": 0, + "line_height": 1, "locked": false, + "name": "new canvas", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 42.92522048950195, - "top": 0, - "width": 122.60653686523438, - "height": 116.16287231445312, - "paths": [ + "rotation": 0, + "style": {}, + "text": "new canvas", + "text_align": "left", + "text_align_vertical": "top", + "top": 180, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "84347d1c-ca26-4d6d-b3d2-be770742e660": { + "active": true, + "corner_radius": 999, + "cross_axis_alignment": "start", + "cross_axis_gap": 10, + "direction": "horizontal", + "expanded": false, + "fill_paints": [ { - "d": "M75.8259 71.8005L122.607 71.8005L84.8222 44.3624L99.2162 0L61.4318 27.438L23.3903 0L38.0414 44.3624L0 71.8005L46.7806 71.8005L61.4318 116.163L75.8259 71.8005Z", - "fill_rule": "nonzero", - "fill": "fill" + "active": true, + "color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } ], - "id": "3ac33bc3-743e-4eef-8011-ce8b6a1b740a", + "height": 93, + "id": "84347d1c-ca26-4d6d-b3d2-be770742e660", + "layout": "flow", + "left": 90, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 10, + "name": "Frame 1021", + "opacity": 1, + "padding_bottom": 10, + "padding_left": 30, + "padding_right": 30, + "padding_top": 10, + "position": "absolute", + "rotation": 0, + "style": {}, + "top": 360, + "type": "container", + "width": 400, + "z_index": 0 + }, + "8927e413-8570-4259-891b-e36aa614a25d": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "1044027a-8009-437b-8a4b-1c3ec006f8f9": { - "name": "Vector", - "type": "svgpath", - "active": true, + ], + "height": 116.1629638671875, + "id": "8927e413-8570-4259-891b-e36aa614a25d", + "left": 224.65028381347656, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 0, + "rotation": 0, "top": 131.5487060546875, - "width": 122.60669708251953, - "height": 116.1629638671875, - "paths": [ - { - "d": "M75.8259 71.8005L122.607 71.8005L84.8222 44.3625L99.2162 0L61.4318 27.4381L23.6474 0L38.0415 44.3625L0 71.8005L47.0377 71.8005L61.4318 116.163L75.8259 71.8005Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "1044027a-8009-437b-8a4b-1c3ec006f8f9", + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 75.56900024414062, + 71.80049896240234 + ], + [ + 122.3499984741211, + 71.80049896240234 + ], + [ + 84.56520080566406, + 44.36249923706055 + ], + [ + 98.95929718017578, + 0.0 + ], + [ + 61.17490005493164, + 27.438100814819336 + ], + [ + 23.390499114990234, + 0.0 + ], + [ + 37.78450012207031, + 44.36249923706055 + ], + [ + 0.0, + 71.80049896240234 + ], + [ + 46.780799865722656, + 71.80049896240234 + ], + [ + 61.17490005493164, + 116.16300201416016 + ], + [ + 75.56900024414062, + 71.80049896240234 + ] + ] + }, + "width": 122.34972381591795, + "z_index": 0 + }, + "8bd6d1b1-51bd-406a-9fa5-42956191dd2c": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0.28627450980392155, - "g": 0.3803921568627451, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] + ], + "height": 36, + "id": "8bd6d1b1-51bd-406a-9fa5-42956191dd2c", + "left": 32, + "locked": false, + "name": "\blogo", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 32, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] + }, + "width": 36.00001525878906, + "z_index": 0 }, - "aad05458-6b10-47b8-ab6b-f859b3b5e299": { - "name": "Join our team!", - "type": "text", + "8d653755-953e-4a0d-9f06-c935dbdc659b": { "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, + "height": 435, + "id": "8d653755-953e-4a0d-9f06-c935dbdc659b", + "layout": "flow", + "left": 60, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 1022", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "Join our team!", - "left": 60, - "top": 60, - "right": 216, - "bottom": 805, - "width": 804, - "height": "auto", + "rotation": 0, "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 50, - "font_family": "Inter", - "font_weight": 500, - "id": "aad05458-6b10-47b8-ab6b-f859b3b5e299", + "top": 60, + "type": "container", + "width": 629, + "z_index": 0 + }, + "94c3ba01-8de9-4a90-a0a8-05972ac52f44": { + "active": true, + "bottom": 54, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5": { - "name": "demo", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 32, + "font_weight": 500, + "height": "auto", + "id": "94c3ba01-8de9-4a90-a0a8-05972ac52f44", + "left": 170, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Canary", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 619, - "top": 1314, - "width": 1080, - "height": 1080, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" - }, - "corner_radius": 30, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5", + "rotation": 0, + "style": {}, + "text": "Canary", + "text_align": "left", + "text_align_vertical": "top", + "top": 54, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "3860c5b4-1987-436f-8113-63a1d3999d2e": { - "name": "Frame 945", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 50, + "font_weight": 300, + "height": "auto", + "id": "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1", + "left": 25, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "about", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, - "top": 0, - "width": 1080, - "height": 150, - "style": { - "overflow": "clip" - }, + "rotation": 0, + "style": {}, + "text": "about ", + "text_align": "left", + "text_align_vertical": "top", + "top": 10, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "96c40aae-f303-4c9b-be20-39d6a5d9e9ef": { + "active": true, "corner_radius": [ 30, 30, 0, 0 ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "3860c5b4-1987-436f-8113-63a1d3999d2e", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "135994ec-41b4-4d58-bf51-9dd6fd577e6c": { - "name": "Vector 270", - "type": "svgpath", - "active": true, + ], + "height": 150, + "id": "96c40aae-f303-4c9b-be20-39d6a5d9e9ef", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 945", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, - "top": 150, + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", "width": 1080, - "height": 0, - "paths": [ + "z_index": 0 + }, + "97dafdc5-8004-4d73-890c-3c9ee68c688e": { + "active": true, + "bottom": 60, + "fill_paints": [ { - "d": "M0 0.5L1080 0.5L1080 -0.5L0 -0.5L0 0.5Z", - "fill_rule": "nonzero", - "fill": "stroke" + "active": true, + "color": { + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } ], - "id": "135994ec-41b4-4d58-bf51-9dd6fd577e6c" - }, - "c8655a4f-837f-4867-b7ee-81c9025fc188": { - "name": "Frame 946", - "type": "container", - "active": true, + "font_family": "Inter", + "font_size": 50, + "font_weight": 400, + "height": "auto", + "id": "97dafdc5-8004-4d73-890c-3c9ee68c688e", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 40, - "top": 25, - "width": 100, - "height": 100, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" - }, - "corner_radius": 100, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "c8655a4f-837f-4867-b7ee-81c9025fc188", + "name": "With Canvas, you’re not just creating visuals—you’re building experiences.", + "opacity": 1, + "position": "absolute", + "right": 142, + "rotation": 0, + "style": {}, + "text": "With Canvas, \nyou’re not just creating visuals—you’re building experiences.", + "text_align": "left", + "text_align_vertical": "top", + "top": 825, + "type": "text", + "width": 878, + "z_index": 0 + }, + "9cae0b62-3130-4ecb-9aaf-302f82669aa3": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "e8655ffa-b4dc-4939-864d-77b9208e1f2e": { - "name": "\blogo", - "type": "svgpath", - "active": true, + ], + "font_family": "Inter", + "font_size": 120, + "font_weight": 300, + "height": "auto", + "id": "9cae0b62-3130-4ecb-9aaf-302f82669aa3", + "left": 0, + "letter_spacing": 0, + "line_height": 1.2, "locked": false, + "name": "START", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 32, - "top": 32, - "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" - }, - { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "e8655ffa-b4dc-4939-864d-77b9208e1f2e", + "rotation": 0, + "style": {}, + "text": "START ", + "text_align": "left", + "text_align_vertical": "top", + "top": 145, + "type": "text", + "width": 629, + "z_index": 0 + }, + "9f5905c5-5e47-4d14-898f-18d4bb98025e": { + "active": true, + "bottom": 740, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "0879aa63-70ad-4c47-ae56-b99462ce540c": { - "name": "Canary", - "type": "text", - "active": true, + ], + "font_family": "Inter", + "font_size": 50, + "font_weight": 400, + "height": "auto", + "id": "9f5905c5-5e47-4d14-898f-18d4bb98025e", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Draw anything, anywhere, anytime.", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "Canary", - "left": 170, - "top": 54, - "bottom": 54, - "width": "auto", - "height": "auto", + "right": 560, + "rotation": 0, "style": {}, + "text": "Draw anything, \nanywhere, anytime.", "text_align": "left", "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 32, - "font_family": "Inter", - "font_weight": 500, - "id": "0879aa63-70ad-4c47-ae56-b99462ce540c", + "top": 60, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "a3b4b1cd-ce66-4e36-abfa-a162d5676199": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "4b2cb61d-1925-4515-ad23-e15f08cc6626": { - "name": "Frame 947", - "type": "container", - "active": true, + ], + "height": 200, + "id": "a3b4b1cd-ce66-4e36-abfa-a162d5676199", + "left": 820, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 930, - "style": { - "overflow": "clip" + "rotation": 0, + "top": 60, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 17, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 22, + "b": 18, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 0.0, + 0.0 + ], + [ + 66.66670227050781, + 0.0 + ], + [ + 66.66670227050781, + 66.66670227050781 + ], + [ + 0.0, + 66.66670227050781 + ], + [ + 0.0, + 0.0 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 66.66670227050781, + 66.66670227050781 + ], + [ + 66.66670227050781, + 133.33299255371094 + ], + [ + 0.0, + 133.33299255371094 + ], + [ + 0.0, + 200.0 + ], + [ + 66.66670227050781, + 200.0 + ], + [ + 66.66670227050781, + 133.33299255371094 + ], + [ + 133.33299255371094, + 133.33299255371094 + ], + [ + 133.33299255371094, + 200.0 + ], + [ + 200.0, + 200.0 + ], + [ + 200.0, + 133.33299255371094 + ], + [ + 133.33299255371094, + 133.33299255371094 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 133.33299255371094, + 66.66670227050781 + ], + [ + 200.0, + 66.66670227050781 + ], + [ + 200.0, + 0.0 + ], + [ + 133.33299255371094, + 0.0 + ], + [ + 133.33299255371094, + 66.66670227050781 + ] + ] }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "4b2cb61d-1925-4515-ad23-e15f08cc6626", + "width": 200, + "z_index": 0 + }, + "aad05458-6b10-47b8-ab6b-f859b3b5e299": { + "active": true, + "bottom": 805, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77": { - "name": "Frame 947", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 50, + "font_weight": 500, + "height": "auto", + "id": "aad05458-6b10-47b8-ab6b-f859b3b5e299", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Join our team!", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, - "top": 0, - "width": 1080, - "height": 930, - "style": { - "overflow": "clip" - }, - "corner_radius": 200, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77", + "right": 216, + "rotation": 0, + "style": {}, + "text": "Join our team!", + "text_align": "left", + "text_align_vertical": "top", + "top": 60, + "type": "text", + "width": 804, + "z_index": 0 + }, + "ae565e52-976f-4909-b062-b8cd5ef26c30": { + "active": true, + "bottom": 54, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "8099fa98-1f01-4e85-be29-1c4ac50516a5": { - "name": "new canvas", - "type": "text", - "active": true, + ], + "font_family": "Inter", + "font_size": 32, + "font_weight": 500, + "height": "auto", + "id": "ae565e52-976f-4909-b062-b8cd5ef26c30", + "left": 170, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Canary", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "text": "new canvas", - "left": 90, - "top": 180, - "width": "auto", - "height": "auto", + "rotation": 0, "style": {}, + "text": "Canary", "text_align": "left", "text_align_vertical": "top", - "line_height": 1, - "letter_spacing": 0, - "font_size": 100, - "font_family": "Inter", - "font_weight": 500, - "id": "8099fa98-1f01-4e85-be29-1c4ac50516a5", + "top": 54, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "84347d1c-ca26-4d6d-b3d2-be770742e660": { - "name": "Frame 1021", - "type": "container", - "active": true, + ], + "height": 331, + "id": "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96", + "left": 0, "locked": false, + "name": "Vector", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 90, - "top": 360, - "width": 400, - "height": 93, - "style": {}, - "corner_radius": 999, - "padding": { - "padding_top": 10, - "padding_right": 30, - "padding_bottom": 10, - "padding_left": 30 + "rotation": 0, + "top": 0, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + -0.01800537109375, + -45.68659973144531 + ], + "tb": [ + 45.69099426269531, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + -45.701499938964844, + 0.0 + ], + "tb": [ + -1.997680101339938e-6, + -45.70100402832031 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 45.70098876953125 + ], + "tb": [ + -45.70100402832031, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + 45.68598937988281, + -0.01800537109375 + ], + "tb": [ + 0.0, + 45.69099426269531 + ] + }, + { + "a": 16, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 331.0, + 82.75 + ], + [ + 331.0, + 7.2342400017078035e-6 + ], + [ + 165.5, + 0.0 + ], + [ + 165.5, + 82.71739959716797 + ], + [ + 82.75, + 7.2342400017078035e-6 + ], + [ + 3.6171200008539017e-6, + 7.2342400017078035e-6 + ], + [ + 3.6171200008539017e-6, + 165.5 + ], + [ + 82.75, + 165.5 + ], + [ + 8.078750206785487e-14, + 248.25 + ], + [ + 3.6171200008539017e-6, + 331.0 + ], + [ + 165.5, + 331.0 + ], + [ + 165.5, + 248.25 + ], + [ + 248.25, + 331.0 + ], + [ + 331.0, + 331.0 + ], + [ + 331.0, + 165.5 + ], + [ + 248.2830047607422, + 165.5 + ], + [ + 331.0, + 82.75 + ] + ] }, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "width": 331, + "z_index": 0 + }, + "b5131656-c058-447c-a93d-52d91ea30f6f": { + "active": true, + "corner_radius": [ + 0, + 0, + 30, + 30 + ], "cross_axis_alignment": "start", - "main_axis_gap": 10, - "cross_axis_gap": 10, - "id": "84347d1c-ca26-4d6d-b3d2-be770742e660", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 1.0, + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] + ], + "height": 930, + "id": "b5131656-c058-447c-a93d-52d91ea30f6f", + "layout": "flow", + "left": 0, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 150, + "type": "container", + "width": 1080, + "z_index": 0 }, - "787f4515-a1cd-4cfc-990e-5199f7544975": { - "name": "Get started!", - "type": "text", + "b8277fa8-b221-4b5c-b05b-df375de91af2": { "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, + "height": 329, + "id": "b8277fa8-b221-4b5c-b05b-df375de91af2", + "layout": "flow", + "left": 606, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "D2", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "Get started!", - "left": 30, - "top": 10, - "width": "auto", - "height": "auto", + "rotation": 0, "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 60, - "font_family": "Inter", - "font_weight": 400, - "id": "787f4515-a1cd-4cfc-990e-5199f7544975", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 - } - } - ] + "top": 481, + "type": "container", + "width": 347, + "z_index": 0 }, "c1a07e06-f9e9-4023-b072-674edb9c680e": { - "name": "Frame 1020", - "type": "container", "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 20, + "direction": "horizontal", "expanded": false, - "position": "absolute", - "left": 708, - "top": 802, - "width": 282, "height": 48, - "style": {}, - "corner_radius": 0, - "padding": 0, + "id": "c1a07e06-f9e9-4023-b072-674edb9c680e", "layout": "flow", - "direction": "horizontal", + "left": 708, + "locked": false, "main_axis_alignment": "start", - "cross_axis_alignment": "start", "main_axis_gap": 20, - "cross_axis_gap": 20, - "id": "c1a07e06-f9e9-4023-b072-674edb9c680e" - }, - "e430dc52-d4a4-4d99-95b5-baf1f09e68f6": { - "name": "Powered by", - "type": "text", - "active": true, - "locked": false, + "name": "Frame 1020", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "Powered by ", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", + "rotation": 0, "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 40, - "font_family": "Inter", - "font_weight": 500, - "id": "e430dc52-d4a4-4d99-95b5-baf1f09e68f6", + "top": 802, + "type": "container", + "width": 282, + "z_index": 0 + }, + "c83c9be1-62a3-40da-8037-a7ae14cc093e": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "470d42db-a5d6-4b45-8a0b-abcee1ad08d8": { - "name": "\blogo", - "type": "svgpath", - "active": true, + ], + "height": 40.73863983154297, + "id": "c83c9be1-62a3-40da-8037-a7ae14cc093e", + "left": 124.7919921875, "locked": false, + "name": "misc-24", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 246, - "top": 6, - "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" + "rotation": 0, + "top": 92.885498046875, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + -1.2000007629394531, + -0.060001373291015625 + ], + "tb": [ + 0.75, + 0.7000007629394531 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + -0.5300006866455078, + -0.4900016784667969 + ], + "tb": [ + 0.39999961853027344, + 0.5900001525878906 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + -2.9200000762939453, + -4.369998931884766 + ], + "tb": [ + 5.789999961853027, + -1.4500007629394531 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + -0.5800004005432129, + 0.14999771118164062 + ], + "tb": [ + 0.6200001239776611, + 0.12000083923339844 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + -1.6200001239776611, + -0.3299999237060547 + ], + "tb": [ + 0.5199999809265137, + 1.9200000762939453 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + -0.5199999809265137, + -1.8899993896484375 + ], + "tb": [ + -1.3300039768218994, + 1.039999008178711 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + 3.7299997806549072, + -2.910001754760742 + ], + "tb": [ + -2.839980125427246, + 3.840001106262207 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 2.7799997329711914, + -3.75 + ], + "tb": [ + -1.3500003814697266, + 4.510000228881836 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 0.39999961853027344, + -1.3300000429153442 + ], + "tb": [ + -1.5999984741210938, + 0.3000001013278961 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 1.6700000762939453, + -0.30999988317489624 + ], + "tb": [ + -0.8099994659423828, + -1.1200039386749268 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 4.039999008178711, + 5.550000190734863 + ], + "tb": [ + -7.010002136230469, + -0.5599994659423828 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 1.3299980163574219, + 0.1100006103515625 + ], + "tb": [ + -0.44000244140625, + -1.4200000762939453 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.470001220703125, + 1.5099992752075195 + ], + "tb": [ + 1.2099990844726562, + -0.8500003814697266 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + -2.6800003051757812, + 1.8699989318847656 + ], + "tb": [ + 2.9300003051757812, + -1.3299999237060547 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + -4.340000152587891, + 1.9599990844726562 + ], + "tb": [ + 0.9699993133544922, + -4.239999771118164 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + -0.43000030517578125, + 1.8600006103515625 + ], + "tb": [ + 0.5100002288818359, + -1.8300018310546875 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + -0.4699993133544922, + 1.7199974060058594 + ], + "tb": [ + 1.779998779296875, + -0.01000213623046875 + ] + }, + { + "a": 17, + "b": 18, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 18, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + -4.480001449584961, + -2.3000011444091797 + ], + "tb": [ + 3.2900009155273438, + 3.3399696350097656 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + -1.0699996948242188, + -1.0799999237060547 + ], + "tb": [ + 0.3099994659423828, + -0.6999998092651367 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + -1.260000228881836, + 2.8199901580810547 + ], + "tb": [ + 1.8400001525878906, + -2.4800004959106445 + ] + }, + { + "a": 22, + "b": 23, + "ta": [ + -1.9200010299682617, + 2.5799999237060547 + ], + "tb": [ + 2.0099992752075195, + -2.5699996948242188 + ] + }, + { + "a": 23, + "b": 24, + "ta": [ + 4.369999885559082, + 1.4400005340576172 + ], + "tb": [ + -3.8899993896484375, + -2.5800018310546875 + ] + }, + { + "a": 24, + "b": 25, + "ta": [ + 1.0600013732910156, + -8.55000114440918 + ], + "tb": [ + -7.979999542236328, + 2.8400001525878906 + ] + }, + { + "a": 25, + "b": 26, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 26, + "b": 19, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 22.361600875854492, + 40.728599548339844 + ], + [ + 19.5216007232666, + 39.53860092163086 + ], + [ + 18.061599731445312, + 37.9286003112793 + ], + [ + 5.831600189208984, + 31.94860076904297 + ], + [ + 3.941620111465454, + 31.8085994720459 + ], + [ + 0.13162200152873993, + 29.218599319458008 + ], + [ + 2.0416300296783447, + 25.03860092163086 + ], + [ + 12.161600112915039, + 15.198599815368652 + ], + [ + 18.68160057067871, + 3.0086300373077393 + ], + [ + 21.13159942626953, + 0.04863790050148964 + ], + [ + 24.34160041809082, + 2.0886199474334717 + ], + [ + 40.62160110473633, + 11.73859977722168 + ], + [ + 43.601600646972656, + 13.718600273132324 + ], + [ + 42.20159912109375, + 17.25860023498535 + ], + [ + 34.06159973144531, + 22.688600540161133 + ], + [ + 26.941600799560547, + 32.318599700927734 + ], + [ + 25.711599349975586, + 37.89860153198242 + ], + [ + 22.34160041809082, + 40.73860168457031 + ], + [ + 22.361600875854492, + 40.728599548339844 + ], + [ + 34.96160125732422, + 16.28860092163086 + ], + [ + 23.151599884033203, + 8.478630065917969 + ], + [ + 21.481599807739258, + 9.178609848022461 + ], + [ + 16.93160057067871, + 17.19860076904297 + ], + [ + 10.961600303649902, + 24.848600387573242 + ], + [ + 21.221599578857422, + 33.05860137939453 + ], + [ + 34.97159957885742, + 16.298599243164062 + ], + [ + 34.96160125732422, + 16.28860092163086 + ] + ] + }, + "width": 43.75392532348633, + "z_index": 0 + }, + "c8655a4f-837f-4867-b7ee-81c9025fc188": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 }, - { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" - } - ], - "id": "470d42db-a5d6-4b45-8a0b-abcee1ad08d8", + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 100, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "2f472276-c737-4757-bff1-6a22539a2cfa": { - "name": "Meet your", - "type": "text", - "active": true, + ], + "height": 100, + "id": "c8655a4f-837f-4867-b7ee-81c9025fc188", + "layout": "flow", + "left": 40, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 946", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "Meet your", - "left": 90, - "top": 80, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1, - "letter_spacing": 0, - "font_size": 100, - "font_family": "Inter", - "font_weight": 200, - "id": "2f472276-c737-4757-bff1-6a22539a2cfa", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 25, + "type": "container", + "width": 100, + "z_index": 0 + }, + "cc64cd72-f5aa-489a-8570-8cdc4b20daca": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "540840f9-eca5-4975-8f05-3bcb7ff27f8c": { - "name": "Rectangle 2", - "type": "rectangle", - "active": true, + ], + "height": 222.22000122070312, + "id": "cc64cd72-f5aa-489a-8570-8cdc4b20daca", + "left": 37.93999481201172, "locked": false, + "name": "circle-02", "opacity": 1, - "z_index": 0, - "rotation": 0, - "width": 900, - "height": 3, "position": "absolute", - "top": 320, - "left": 90, - "corner_radius": 0, - "stroke_width": 1, - "stroke_cap": "butt", - "effects": [], - "id": "540840f9-eca5-4975-8f05-3bcb7ff27f8c", + "rotation": 0, + "top": 159.8900146484375, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 9.89501953125, + 2.4149932861328125 + ], + "tb": [ + -8.490020751953125, + -0.7830047607421875 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 18.03497314453125, + 1.6750030517578125 + ], + "tb": [ + -18.0780029296875, + -1.2610015869140625 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 2.06298828125, + 0.152008056640625 + ], + "tb": [ + 0.175018310546875, + -3.045013427734375 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + -0.15399169921875, + 2.391998291015625 + ], + "tb": [ + 1.886993408203125, + -0.06500244140625 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + -39.821014404296875, + 1.1529998779296875 + ], + "tb": [ + 39.79901123046875, + 2.326995849609375 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + -13.9320068359375, + -0.8260040283203125 + ], + "tb": [ + 13.557998657226562, + -2.0219879150390625 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -30.124008178710938, + 4.50201416015625 + ], + "tb": [ + 30.4530029296875, + -1.6100006103515625 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + -22.313003540039062, + 1.1739959716796875 + ], + "tb": [ + 22.312896728515625, + 0.2180023193359375 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -3.5763015747070312, + -0.042999267578125 + ], + "tb": [ + 3.554302215576172, + 0.3909912109375 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + -2.4133987426757812, + -0.2610015869140625 + ], + "tb": [ + 0.022001266479492188, + 2.89300537109375 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + -0.021898269653320312, + -3.47900390625 + ], + "tb": [ + -2.4571990966796875, + 0.3910064697265625 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 1.55780029296875, + -0.2389984130859375 + ], + "tb": [ + -1.5796012878417969, + -0.1090087890625 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 49.91349792480469, + 3.261993408203125 + ], + "tb": [ + -49.36500549316406, + 7.4380035400390625 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + -22.4010009765625, + -2.2830047607421875 + ], + "tb": [ + 22.093002319335938, + 4.240997314453125 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + -32.054595947265625, + -6.154998779296875 + ], + "tb": [ + 27.62249755859375, + 18.1820068359375 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + -10.772500991821289, + -7.089996337890625 + ], + "tb": [ + 5.7701802253723145, + 11.699996948242188 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + -9.916890144348145, + -20.11699676513672 + ], + "tb": [ + -17.771448135375977, + 19.486305236816406 + ] + }, + { + "a": 17, + "b": 18, + "ta": [ + 17.9468994140625, + -19.68199920654297 + ], + "tb": [ + -24.309497833251953, + 9.982402801513672 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + 38.614402770996094, + -15.854297637939453 + ], + "tb": [ + -41.4010009765625, + 4.50184965133667 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + 27.184005737304688, + -2.9577388763427734 + ], + "tb": [ + -27.29400634765625, + -1.000411033630371 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + 41.927001953125, + 1.5658620595932007 + ], + "tb": [ + -39.733001708984375, + -14.505970001220703 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 14.480010986328125, + 5.284799575805664 + ], + "tb": [ + -11.49700927734375, + -10.460800170898438 + ] + }, + { + "a": 22, + "b": 23, + "ta": [ + 21.74298095703125, + 19.790699005126953 + ], + "tb": [ + 17.134979248046875, + -23.835594177246094 + ] + }, + { + "a": 23, + "b": 24, + "ta": [ + -11.08001708984375, + 15.420005798339844 + ], + "tb": [ + 16.10400390625, + -9.722000122070312 + ] + }, + { + "a": 24, + "b": 25, + "ta": [ + -30.891998291015625, + 18.63800048828125 + ], + "tb": [ + 34.44598388671875, + -10.156005859375 + ] + }, + { + "a": 25, + "b": 26, + "ta": [ + -9.917022705078125, + 2.9149932861328125 + ], + "tb": [ + 11.62799072265625, + -3.2400054931640625 + ] + }, + { + "a": 26, + "b": 27, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 27, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 28, + "b": 29, + "ta": [ + -8.5780029296875, + 0.13050079345703125 + ], + "tb": [ + 8.555984497070312, + -0.3045005798339844 + ] + }, + { + "a": 29, + "b": 30, + "ta": [ + -24.529006958007812, + 0.8480997085571289 + ], + "tb": [ + 24.133987426757812, + -4.175600051879883 + ] + }, + { + "a": 30, + "b": 31, + "ta": [ + -39.86500549316406, + 6.894201278686523 + ], + "tb": [ + 35.564701080322266, + -19.8125 + ] + }, + { + "a": 31, + "b": 32, + "ta": [ + -18.254100799560547, + 10.15639877319336 + ], + "tb": [ + 9.653600692749023, + -19.31220245361328 + ] + }, + { + "a": 32, + "b": 33, + "ta": [ + -6.691699981689453, + 13.397193908691406 + ], + "tb": [ + -8.995399475097656, + -12.114006042480469 + ] + }, + { + "a": 33, + "b": 34, + "ta": [ + 6.406499862670898, + 8.633987426757812 + ], + "tb": [ + -9.324501037597656, + -5.0670013427734375 + ] + }, + { + "a": 34, + "b": 35, + "ta": [ + 30.013900756835938, + 16.311004638671875 + ], + "tb": [ + -33.48100280761719, + -4.9369964599609375 + ] + }, + { + "a": 35, + "b": 36, + "ta": [ + 25.625991821289062, + 3.761993408203125 + ], + "tb": [ + -25.845001220703125, + -1.760986328125 + ] + }, + { + "a": 36, + "b": 37, + "ta": [ + 15.686996459960938, + 1.0880126953125 + ], + "tb": [ + -15.379989624023438, + 5.26300048828125 + ] + }, + { + "a": 37, + "b": 38, + "ta": [ + 5.615997314453125, + -1.91400146484375 + ], + "tb": [ + -5.7919921875, + 1.501007080078125 + ] + }, + { + "a": 38, + "b": 39, + "ta": [ + 37.82501220703125, + -9.894989013671875 + ], + "tb": [ + -34.774993896484375, + 18.180999755859375 + ] + }, + { + "a": 39, + "b": 40, + "ta": [ + 19.876983642578125, + -10.39599609375 + ], + "tb": [ + -13.69000244140625, + 18.11699676513672 + ] + }, + { + "a": 40, + "b": 41, + "ta": [ + 15.68701171875, + -20.769004821777344 + ], + "tb": [ + 20.623016357421875, + 16.09360122680664 + ] + }, + { + "a": 41, + "b": 42, + "ta": [ + -12.24298095703125, + -9.547401428222656 + ], + "tb": [ + 14.677978515625, + 4.71929931640625 + ] + }, + { + "a": 42, + "b": 43, + "ta": [ + -39.295013427734375, + -12.635700225830078 + ], + "tb": [ + 40.94000244140625, + 0.8700008392333984 + ] + }, + { + "a": 43, + "b": 44, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 44, + "b": 28, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 282.0199890136719, + 196.56500244140625 + ], + [ + 309.02801513671875, + 198.8489990234375 + ], + [ + 363.24200439453125, + 202.63299560546875 + ], + [ + 368.1789855957031, + 205.41700744628906 + ], + [ + 363.2860107421875, + 207.65699768066406 + ], + [ + 243.84500122070312, + 208.07000732421875 + ], + [ + 202.94900512695312, + 212.13699340820312 + ], + [ + 112.09500122070312, + 221.33700561523438 + ], + [ + 45.178001403808594, + 222.03199768066406 + ], + [ + 34.49319839477539, + 221.14100646972656 + ], + [ + 29.139799118041992, + 217.46499633789062 + ], + [ + 34.975799560546875, + 213.7899932861328 + ], + [ + 39.73680114746094, + 213.72500610351562 + ], + [ + 188.5780029296875, + 206.00399780273438 + ], + [ + 121.68299865722656, + 197.24000549316406 + ], + [ + 30.829200744628906, + 164.20399475097656 + ], + [ + 5.115520000457764, + 136.71499633789062 + ], + [ + 17.643299102783203, + 74.58049774169922 + ], + [ + 82.60759735107422, + 32.389198303222656 + ], + [ + 203.05799865722656, + 3.5948100090026855 + ], + [ + 284.7850036621094, + 0.3325980007648468 + ], + [ + 407.9339904785156, + 21.232500076293945 + ], + [ + 447.7770080566406, + 43.52429962158203 + ], + [ + 454.864013671875, + 110.76899719238281 + ], + [ + 412.6730041503906, + 147.0019989013672 + ], + [ + 313.614013671875, + 187.7790069580078 + ], + [ + 282.08599853515625, + 196.56500244140625 + ], + [ + 282.0199890136719, + 196.56500244140625 + ], + [ + 275.02099609375, + 12.293999671936035 + ], + [ + 249.3520050048828, + 13.25100040435791 + ], + [ + 176.3350067138672, + 20.840999603271484 + ], + [ + 62.13759994506836, + 57.986698150634766 + ], + [ + 17.292200088500977, + 99.32980346679688 + ], + [ + 20.890399932861328, + 137.82400512695312 + ], + [ + 45.178001403808594, + 157.63600158691406 + ], + [ + 141.4510040283203, + 186.2570037841797 + ], + [ + 218.72300720214844, + 193.99899291992188 + ], + [ + 265.4339904785156, + 191.4550018310547 + ], + [ + 282.80999755859375, + 187.10499572753906 + ], + [ + 392.6860046386719, + 147.5019989013672 + ], + [ + 444.81500244140625, + 106.7020034790039 + ], + [ + 436.9169921875, + 49.15700149536133 + ], + [ + 395.9330139160156, + 28.90959930419922 + ], + [ + 275.06500244140625, + 12.337499618530273 + ], + [ + 275.02099609375, + 12.293999671936035 + ] + ] + }, + "width": 466.1200256347656, + "z_index": 0 + }, + "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "34c46b34-5b54-4a27-be7d-a55950a3398e": { - "name": "demo", - "type": "container", - "active": true, + ], + "height": 117.1951675415039, + "id": "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9", + "left": 609.6328735351562, "locked": false, + "name": "arrow-27", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 619, - "top": -1246, - "width": 1080, - "height": 1080, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.10000000149011612 - }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" + "rotation": 0, + "top": 673.424072265625, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 1.389699935913086, + -6.838798522949219 + ], + "tb": [ + -1.0866012573242188, + 6.3535003662109375 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.5939998626708984, + -3.5412979125976562 + ], + "tb": [ + -0.15439987182617188, + 3.6470947265625 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.10289955139160156, + -2.4315032958984375 + ], + "tb": [ + 3.1198997497558594, + 0.295196533203125 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + -3.3108997344970703, + -0.31330108642578125 + ], + "tb": [ + 0.5380001068115234, + -2.6150970458984375 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + -0.9880599975585938, + 4.981597900390625 + ], + "tb": [ + 0.9880900382995605, + -4.981498718261719 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + -1.4957900047302246, + 7.2783966064453125 + ], + "tb": [ + 3.3983802795410156, + -6.680999755859375 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -2.808760166168213, + 5.547996520996094 + ], + "tb": [ + -5.963769912719727, + 1.2339935302734375 + ] + }, + { + "a": 7, + "b": 8, + "ta": [ + 11.927579879760742, + -2.4690017700195312 + ], + "tb": [ + -11.913999557495117, + 1.9890060424804688 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + 1.6630020141601562, + -0.2599945068359375 + ], + "tb": [ + 0.09420013427734375, + 2.3860015869140625 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + -0.10770034790039062, + -1.904998779296875 + ], + "tb": [ + 1.4931983947753906, + 0.17299652099609375 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + -6.285301208496094, + -0.7880020141601562 + ], + "tb": [ + 6.262599945068359, + 0.6890029907226562 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + -1.0475006103515625, + -0.13199615478515625 + ], + "tb": [ + 0.5336990356445312, + 1.141998291015625 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + -0.6944999694824219, + -1.4789962768554688 + ], + "tb": [ + -0.8837013244628906, + 0.8479995727539062 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 17.287099838256836, + -16.929901123046875 + ], + "tb": [ + -19.50060272216797, + 14.53640365600586 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 12.518295288085938, + -9.350997924804688 + ], + "tb": [ + -15.550003051757812, + 3.4108009338378906 + ] + }, + { + "a": 15, + "b": 16, + "ta": [ + 5.378997802734375, + -1.1613998413085938 + ], + "tb": [ + -5.3459930419921875, + -1.2124996185302734 + ] + }, + { + "a": 16, + "b": 17, + "ta": [ + 1.72900390625, + 0.3885021209716797 + ], + "tb": [ + -0.600006103515625, + -1.7912979125976562 + ] + }, + { + "a": 17, + "b": 18, + "ta": [ + 0.6689910888671875, + 2.086902618408203 + ], + "tb": [ + 1.26800537109375, + -1.1648979187011719 + ] + }, + { + "a": 18, + "b": 19, + "ta": [ + -12.399993896484375, + 11.4822998046875 + ], + "tb": [ + 4.747993469238281, + -16.47829818725586 + ] + }, + { + "a": 19, + "b": 20, + "ta": [ + -1.875, + 6.5359039306640625 + ], + "tb": [ + -2.259002685546875, + -6.637901306152344 + ] + }, + { + "a": 20, + "b": 21, + "ta": [ + 2.813995361328125, + 8.232200622558594 + ], + "tb": [ + -8.508995056152344, + 1.9900054931640625 + ] + }, + { + "a": 21, + "b": 22, + "ta": [ + 8.509002685546875, + -1.9889984130859375 + ], + "tb": [ + -5.3199920654296875, + 6.627799987792969 + ] + }, + { + "a": 22, + "b": 23, + "ta": [ + 9.774993896484375, + -12.244606018066406 + ], + "tb": [ + 1.009002685546875, + 16.059497833251953 + ] + }, + { + "a": 23, + "b": 24, + "ta": [ + -0.303009033203125, + -4.911102294921875 + ], + "tb": [ + 2.628997802734375, + 4.103298187255859 + ] + }, + { + "a": 24, + "b": 25, + "ta": [ + -3.33099365234375, + -5.165401458740234 + ], + "tb": [ + -4.4579925537109375, + 2.629598617553711 + ] + }, + { + "a": 25, + "b": 26, + "ta": [ + 15.447006225585938, + -9.07400131225586 + ], + "tb": [ + -17.261993408203125, + 4.1803998947143555 + ] + }, + { + "a": 26, + "b": 27, + "ta": [ + 6.509002685546875, + -1.5682697296142578 + ], + "tb": [ + -6.4640045166015625, + 1.765279769897461 + ] + }, + { + "a": 27, + "b": 28, + "ta": [ + 1.680999755859375, + -0.4512200355529785 + ], + "tb": [ + 0.694000244140625, + 2.8281002044677734 + ] + }, + { + "a": 28, + "b": 29, + "ta": [ + -0.569000244140625, + -2.462867021560669 + ], + "tb": [ + 1.886993408203125, + 0.08223210275173187 + ] + }, + { + "a": 29, + "b": 30, + "ta": [ + -0.1909942626953125, + -0.01807600073516369 + ], + "tb": [ + 0.1970062255859375, + -0.04559269919991493 + ] + }, + { + "a": 30, + "b": 31, + "ta": [ + -25.882003784179688, + 6.319916248321533 + ], + "tb": [ + 22.672988891601562, + -15.810090065002441 + ] + }, + { + "a": 31, + "b": 32, + "ta": [ + -2.2710113525390625, + 1.5839004516601562 + ], + "tb": [ + 2.6750030517578125, + 1.6021995544433594 + ] + }, + { + "a": 32, + "b": 33, + "ta": [ + -9.656997680664062, + -5.860401153564453 + ], + "tb": [ + 10.763999938964844, + -2.3862991333007812 + ] + }, + { + "a": 33, + "b": 34, + "ta": [ + -20.60449981689453, + 4.538700103759766 + ], + "tb": [ + 15.374198913574219, + -13.70620346069336 + ] + }, + { + "a": 34, + "b": 35, + "ta": [ + -16.885501861572266, + 15.072895050048828 + ], + "tb": [ + 13.845800399780273, + -17.897598266601562 + ] + }, + { + "a": 35, + "b": 36, + "ta": [ + -0.3259000778198242, + 0.38700103759765625 + ], + "tb": [ + 0.9640998840332031, + -0.6790008544921875 + ] + }, + { + "a": 36, + "b": 37, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 37, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 38, + "b": 39, + "ta": [ + -2.1020050048828125, + 1.5035018920898438 + ], + "tb": [ + 1.9740142822265625, + -1.161895751953125 + ] + }, + { + "a": 39, + "b": 40, + "ta": [ + -7.4949951171875, + 4.495002746582031 + ], + "tb": [ + 0.8720016479492188, + 8.722801208496094 + ] + }, + { + "a": 40, + "b": 41, + "ta": [ + -0.4219970703125, + -4.3441009521484375 + ], + "tb": [ + -1.2620010375976562, + 4.152595520019531 + ] + }, + { + "a": 41, + "b": 42, + "ta": [ + 3.8820037841796875, + -12.770103454589844 + ], + "tb": [ + -9.240997314453125, + 9.34000015258789 + ] + }, + { + "a": 42, + "b": 43, + "ta": [ + 3.197998046875, + -3.230602264404297 + ], + "tb": [ + -4.115997314453125, + -1.6422004699707031 + ] + }, + { + "a": 43, + "b": 44, + "ta": [ + 4.5780029296875, + 1.8465003967285156 + ], + "tb": [ + -0.5630035400390625, + -5.224697113037109 + ] + }, + { + "a": 44, + "b": 45, + "ta": [ + 0.139007568359375, + 1.2338027954101562 + ], + "tb": [ + 0.08599853515625, + -1.2445030212402344 + ] + }, + { + "a": 45, + "b": 46, + "ta": [ + -1.0659942626953125, + 15.252799987792969 + ], + "tb": [ + 10.820999145507812, + -10.411102294921875 + ] + }, + { + "a": 46, + "b": 47, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 47, + "b": 38, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + } + ], + "vertices": [ + [ + 13.956999778747559, + 102.47000122070312 + ], + [ + 17.867000579833984, + 82.98919677734375 + ], + [ + 18.734899520874023, + 72.18240356445312 + ], + [ + 15.416099548339844, + 66.88960266113281 + ], + [ + 10.595600128173828, + 71.63710021972656 + ], + [ + 7.793529987335205, + 86.56500244140625 + ], + [ + 1.0336500406265259, + 107.63899993896484 + ], + [ + 7.36952018737793, + 117.00800323486328 + ], + [ + 43.36009979248047, + 112.47899627685547 + ], + [ + 47.4650993347168, + 109.8479995727539 + ], + [ + 43.51900100708008, + 107.77300262451172 + ], + [ + 24.667600631713867, + 105.69999694824219 + ], + [ + 21.735700607299805, + 104.77999877929688 + ], + [ + 23.283300399780273, + 101.68199920654297 + ], + [ + 76.98370361328125, + 52.83259963989258 + ], + [ + 118.34100341796875, + 32.07740020751953 + ], + [ + 134.45799255371094, + 31.8356990814209 + ], + [ + 139.0800018310547, + 34.232398986816406 + ], + [ + 136.0919952392578, + 38.2859992980957 + ], + [ + 109.05000305175781, + 79.4113998413086 + ], + [ + 108.64800262451172, + 99.15979766845703 + ], + [ + 126.49299621582031, + 109.10299682617188 + ], + [ + 146.66799926757812, + 95.24120330810547 + ], + [ + 161.3280029296875, + 53.26530075073242 + ], + [ + 157.5189971923828, + 39.285701751708984 + ], + [ + 160.7989959716797, + 29.12470054626465 + ], + [ + 210.18099975585938, + 10.12440013885498 + ], + [ + 229.62899780273438, + 5.251430034637451 + ], + [ + 233.58099365234375, + 1.867169976234436 + ], + [ + 228.48699951171875, + 0.036107901483774185 + ], + [ + 227.93699645996094, + 0.08047369867563248 + ], + [ + 152.36700439453125, + 25.243200302124023 + ], + [ + 145.5189971923828, + 25.97640037536621 + ], + [ + 114.6259994506836, + 21.832599639892578 + ], + [ + 61.760101318359375, + 51.45640182495117 + ], + [ + 15.821599960327148, + 101.10399627685547 + ], + [ + 14.026800155639648, + 102.41200256347656 + ], + [ + 13.956999778747559, + 102.47000122070312 + ], + [ + 134.30999755859375, + 96.83419799804688 + ], + [ + 128.4149932861328, + 101.06199645996094 + ], + [ + 113.91699981689453, + 93.74819946289062 + ], + [ + 115.48799896240234, + 80.95220184326172 + ], + [ + 136.3040008544922, + 48.5526008605957 + ], + [ + 146.84100341796875, + 40.78070068359375 + ], + [ + 152.46299743652344, + 54.61069869995117 + ], + [ + 152.58599853515625, + 58.380401611328125 + ], + [ + 134.3159942626953, + 96.77050018310547 + ], + [ + 134.30999755859375, + 96.83419799804688 + ] + ] }, - "corner_radius": 30, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "width": 233.6844024658203, + "z_index": 0 + }, + "d77358f4-748d-49fe-ae50-911f357c4a62": { + "active": true, + "corner_radius": 0, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "34c46b34-5b54-4a27-be7d-a55950a3398e", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 - } + "g": 0.3803921568627451, + "r": 0.28627450980392155 + }, + "type": "solid" } - ] - }, - "96c40aae-f303-4c9b-be20-39d6a5d9e9ef": { - "name": "Frame 945", - "type": "container", - "active": true, + ], + "height": 930, + "id": "d77358f4-748d-49fe-ae50-911f357c4a62", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, - "top": 0, - "width": 1080, - "height": 150, + "rotation": 0, "style": { "overflow": "clip" }, - "corner_radius": [ - 30, - 30, - 0, - 0 - ], - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "top": 150, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "d77fbae1-c379-4ffe-a524-887324617346": { + "active": true, + "corner_radius": 0, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "96c40aae-f303-4c9b-be20-39d6a5d9e9ef", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "5786bd6e-498e-4090-b5b9-3d91ede365f6": { - "name": "Vector 270", - "type": "svgpath", - "active": true, + ], + "height": 930, + "id": "d77fbae1-c379-4ffe-a524-887324617346", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 947", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "left": 0, + "rotation": 0, + "style": { + "overflow": "clip" + }, "top": 150, + "type": "container", "width": 1080, - "height": 0, - "paths": [ + "z_index": 0 + }, + "e0e5300d-09e2-4afb-ad25-4e8b0b03624c": { + "active": true, + "bottom": 675, + "fill_paints": [ { - "d": "M0 0.5L1080 0.5L1080 -0.5L0 -0.5L0 0.5Z", - "fill_rule": "nonzero", - "fill": "stroke" + "active": true, + "color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } ], - "id": "5786bd6e-498e-4090-b5b9-3d91ede365f6" - }, - "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d": { - "name": "Frame 946", - "type": "container", - "active": true, + "font_family": "Inter", + "font_size": 50, + "font_weight": 300, + "height": "auto", + "id": "e0e5300d-09e2-4afb-ad25-4e8b0b03624c", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "We are looking for a new contributor for our team", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 40, - "top": 25, - "width": 100, - "height": 100, + "right": 216, + "rotation": 0, + "style": {}, + "text": "We are looking for\na new contributor for our team", + "text_align": "left", + "text_align_vertical": "top", + "top": 125, + "type": "text", + "width": 804, + "z_index": 0 + }, + "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d": { + "active": true, "border": { - "border_width": 1, "border_color": { - "r": 0, - "g": 0, + "a": 0.10000000149011612, "b": 0, - "a": 0.10000000149011612 + "g": 0, + "r": 0 }, - "border_style": "solid" - }, - "style": { - "overflow": "clip" + "border_style": "solid", + "border_width": 1 }, "corner_radius": 100, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] + ], + "height": 100, + "id": "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d", + "layout": "flow", + "left": 40, + "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 946", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 25, + "type": "container", + "width": 100, + "z_index": 0 }, - "4f8fa473-890a-49d0-8335-3b78ffaf31a5": { - "name": "\blogo", - "type": "svgpath", + "e430dc52-d4a4-4d99-95b5-baf1f09e68f6": { "active": true, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" + } + ], + "font_family": "Inter", + "font_size": 40, + "font_weight": 500, + "height": "auto", + "id": "e430dc52-d4a4-4d99-95b5-baf1f09e68f6", + "left": 0, + "letter_spacing": 0, + "line_height": 1.2, "locked": false, + "name": "Powered by", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 32, - "top": 32, - "width": 36.00001525878906, - "height": 36, - "paths": [ - { - "d": "M23.9772 11.8875L23.9089 24.2477L36 35.9325L36 23.7749L36 23.7701L36 23.5723L35.9983 23.5706C35.888 17.0996 30.5482 11.8875 23.9772 11.8875Z", - "fill_rule": "nonzero", - "fill": "fill" - }, + "rotation": 0, + "style": {}, + "text": "Powered by ", + "text_align": "left", + "text_align_vertical": "top", + "top": 0, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "e4891d1d-12bb-4a9f-9359-741a359ea39e": { + "active": true, + "bottom": 502, + "fill_paints": [ { - "d": "M22.5568 6.15314C16.5533 6.81749 11.8861 11.853 11.8861 17.9662L11.8861 23.6398L12.0911 36L0 24.3152L0 11.8199C0.0366651 5.28563 5.4055 0 12.0228 0C16.5598 0 20.5098 2.48481 22.5568 6.15314Z", - "fill_rule": "nonzero", - "fill": "fill" + "active": true, + "color": { + "a": 1.0, + "b": 0.4705882352941176, + "g": 0.9607843137254902, + "r": 1.0 + }, + "type": "solid" } ], - "id": "4f8fa473-890a-49d0-8335-3b78ffaf31a5", + "font_family": "Inter", + "font_size": 120, + "font_weight": 500, + "height": "auto", + "id": "e4891d1d-12bb-4a9f-9359-741a359ea39e", + "left": 60, + "letter_spacing": 0, + "line_height": 1.3, + "locked": false, + "name": "EVERYTHING", + "opacity": 1, + "position": "absolute", + "right": 250, + "rotation": 0, + "style": {}, + "text": "EVERYTHING", + "text_align": "left", + "text_align_vertical": "top", + "top": 272, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "e8655ffa-b4dc-4939-864d-77b9208e1f2e": { + "active": true, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 1.0, + "a": 1.0, "b": 1.0, - "a": 1.0 + "g": 1.0, + "r": 1.0 + }, + "type": "solid" + } + ], + "height": 36, + "id": "e8655ffa-b4dc-4939-864d-77b9208e1f2e", + "left": 32, + "locked": false, + "name": "\blogo", + "opacity": 1, + "position": "absolute", + "rotation": 0, + "top": 32, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 5, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 5, + "b": 6, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 6, + "b": 7, + "ta": [ + -0.11029815673828125, + -6.471000671386719 + ], + "tb": [ + 6.571001052856445, + 0.0 + ] + }, + { + "a": 7, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 8, + "b": 9, + "ta": [ + -6.003499984741211, + 0.6643500328063965 + ], + "tb": [ + 0.0, + -6.1132001876831055 + ] + }, + { + "a": 9, + "b": 10, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 10, + "b": 11, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 11, + "b": 12, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 12, + "b": 13, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 13, + "b": 14, + "ta": [ + 0.03666510060429573, + -6.534269332885742 + ], + "tb": [ + -6.617300510406494, + 0.0 + ] + }, + { + "a": 14, + "b": 15, + "ta": [ + 4.536998748779297, + 0.0 + ], + "tb": [ + -2.0470008850097656, + -3.668329954147339 + ] + }, + { + "a": 15, + "b": 8, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 23.908899307250977, + 24.247699737548828 + ], + [ + 36.0, + 35.932498931884766 + ], + [ + 36.0, + 23.774900436401367 + ], + [ + 36.0, + 23.770099639892578 + ], + [ + 36.0, + 23.57229995727539 + ], + [ + 35.99829864501953, + 23.570600509643555 + ], + [ + 23.97719955444336, + 11.887499809265137 + ], + [ + 22.556800842285156, + 6.153140068054199 + ], + [ + 11.886099815368652, + 17.96619987487793 + ], + [ + 11.886099815368652, + 23.639799118041992 + ], + [ + 12.091099739074707, + 36.0 + ], + [ + 0.0, + 24.315200805664062 + ], + [ + 0.0, + 11.819899559020996 + ], + [ + 12.02280044555664, + 0.0 + ], + [ + 22.556800842285156, + 6.153140068054199 + ] + ] + }, + "width": 36.00001525878906, + "z_index": 0 }, "efc81eb0-403e-4ff3-aad6-ae88c55e1fd4": { - "name": "Canary", - "type": "text", "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "position": "absolute", - "text": "Canary", - "left": 170, - "top": 54, "bottom": 54, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.3, - "letter_spacing": 0, - "font_size": 32, - "font_family": "Inter", - "font_weight": 500, - "id": "efc81eb0-403e-4ff3-aad6-ae88c55e1fd4", "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, + "a": 1, "b": 0, - "a": 1 - } + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "d77fbae1-c379-4ffe-a524-887324617346": { - "name": "Frame 947", - "type": "container", - "active": true, + ], + "font_family": "Inter", + "font_size": 32, + "font_weight": 500, + "height": "auto", + "id": "efc81eb0-403e-4ff3-aad6-ae88c55e1fd4", + "left": 170, + "letter_spacing": 0, + "line_height": 1.3, "locked": false, + "name": "Canary", "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, "position": "absolute", - "left": 0, - "top": 150, - "width": 1080, - "height": 930, - "style": { - "overflow": "clip" + "rotation": 0, + "style": {}, + "text": "Canary", + "text_align": "left", + "text_align_vertical": "top", + "top": 54, + "type": "text", + "width": "auto", + "z_index": 0 + }, + "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 }, - "corner_radius": 0, - "padding": 0, - "layout": "flow", - "direction": "horizontal", - "main_axis_alignment": "start", + "corner_radius": 30, "cross_axis_alignment": "start", - "main_axis_gap": 0, "cross_axis_gap": 0, - "id": "d77fbae1-c379-4ffe-a524-887324617346", + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "8d653755-953e-4a0d-9f06-c935dbdc659b": { - "name": "Frame 1022", - "type": "container", - "active": true, - "locked": false, - "opacity": 1, - "z_index": 0, - "rotation": 0, - "expanded": false, - "position": "absolute", - "left": 60, - "top": 60, - "width": 629, - "height": 435, - "style": {}, - "corner_radius": 0, - "padding": 0, + ], + "height": 1080, + "id": "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5", "layout": "flow", - "direction": "horizontal", + "left": 619, + "locked": false, "main_axis_alignment": "start", - "cross_axis_alignment": "start", "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "8d653755-953e-4a0d-9f06-c935dbdc659b" + "name": "demo", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 1314, + "type": "container", + "width": 1080, + "z_index": 0 }, - "45bfea71-1399-42b0-8fa1-633305419119": { - "name": "JUMP IN", - "type": "text", + "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6": { "active": true, + "border": { + "border_color": { + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 2 + }, + "corner_radius": 999, + "cross_axis_alignment": "start", + "cross_axis_gap": 20, + "direction": "horizontal", + "expanded": false, + "height": 85, + "id": "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6", + "layout": "flow", + "left": 60, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 20, + "name": "Frame 1018", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 10, + "padding_left": 25, + "padding_right": 25, + "padding_top": 10, "position": "absolute", - "text": "JUMP IN", - "left": 0, - "top": 0, - "width": 629, - "height": "auto", + "rotation": 0, "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 120, - "font_family": "Inter", - "font_weight": 200, - "id": "45bfea71-1399-42b0-8fa1-633305419119", + "top": 322, + "type": "container", + "width": 270, + "z_index": 0 + }, + "f290578a-89d6-4141-b762-cf370d7392e0": { + "active": true, + "border": { + "border_color": { + "a": 0.10000000149011612, + "b": 0, + "g": 0, + "r": 0 + }, + "border_style": "solid", + "border_width": 1 + }, + "corner_radius": 100, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 - } + "a": 1, + "b": 0, + "g": 0, + "r": 0 + }, + "type": "solid" } - ] - }, - "9cae0b62-3130-4ecb-9aaf-302f82669aa3": { - "name": "START", - "type": "text", - "active": true, + ], + "height": 100, + "id": "f290578a-89d6-4141-b762-cf370d7392e0", + "layout": "flow", + "left": 40, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 946", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "START ", - "left": 0, - "top": 145, - "width": 629, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 120, - "font_family": "Inter", - "font_weight": 300, - "id": "9cae0b62-3130-4ecb-9aaf-302f82669aa3", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 - } - } - ] + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 25, + "type": "container", + "width": 100, + "z_index": 0 }, - "2003aba6-81f4-438b-a9b0-d702c4d8e945": { - "name": "CREATING", - "type": "text", + "f7075669-9c1b-47a9-825e-cdf5c86fc827": { "active": true, + "corner_radius": 0, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, + "height": 331, + "id": "f7075669-9c1b-47a9-825e-cdf5c86fc827", + "layout": "flow", + "left": 689, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Group", "opacity": 1, - "z_index": 0, - "rotation": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, "position": "absolute", - "text": "CREATING", - "left": 0, - "top": 290, - "width": 629, - "height": "auto", + "rotation": 0, "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 120, - "font_family": "Inter", - "font_weight": 900, - "id": "2003aba6-81f4-438b-a9b0-d702c4d8e945", + "top": 539, + "type": "container", + "width": 331, + "z_index": 0 + }, + "fb5c188a-1ff8-4974-b2a2-97c691a6b517": { + "active": true, + "corner_radius": [ + 30, + 30, + 0, + 0 + ], + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", + "expanded": false, "fill_paints": [ { - "type": "solid", "active": true, "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 - } + "a": 1.0, + "b": 1.0, + "g": 1.0, + "r": 1.0 + }, + "type": "solid" } - ] - }, - "f7075669-9c1b-47a9-825e-cdf5c86fc827": { - "name": "Group", - "type": "container", - "active": true, + ], + "height": 150, + "id": "fb5c188a-1ff8-4974-b2a2-97c691a6b517", + "layout": "flow", + "left": 0, "locked": false, + "main_axis_alignment": "start", + "main_axis_gap": 0, + "name": "Frame 945", "opacity": 1, - "z_index": 0, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", + "width": 1080, + "z_index": 0 + }, + "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77": { + "active": true, + "corner_radius": 200, + "cross_axis_alignment": "start", + "cross_axis_gap": 0, + "direction": "horizontal", "expanded": false, - "position": "absolute", - "left": 689, - "top": 539, - "width": 331, - "height": 331, - "style": {}, - "corner_radius": 0, - "padding": 0, + "fill_paints": [ + { + "active": true, + "color": { + "a": 1.0, + "b": 0.28627450980392155, + "g": 0.6313725490196078, + "r": 1.0 + }, + "type": "solid" + } + ], + "height": 930, + "id": "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77", "layout": "flow", - "direction": "horizontal", + "left": 0, + "locked": false, "main_axis_alignment": "start", - "cross_axis_alignment": "start", "main_axis_gap": 0, - "cross_axis_gap": 0, - "id": "f7075669-9c1b-47a9-825e-cdf5c86fc827" + "name": "Frame 947", + "opacity": 1, + "padding_bottom": 0, + "padding_left": 0, + "padding_right": 0, + "padding_top": 0, + "position": "absolute", + "rotation": 0, + "style": { + "overflow": "clip" + }, + "top": 0, + "type": "container", + "width": 1080, + "z_index": 0 }, - "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96": { - "name": "Vector", - "type": "svgpath", + "ff20ed51-2dce-4a17-816c-ca346983979e": { "active": true, + "height": 0, + "id": "ff20ed51-2dce-4a17-816c-ca346983979e", + "left": 0, "locked": false, + "name": "Vector 270", "opacity": 1, - "z_index": 0, - "rotation": 0, "position": "absolute", - "left": 0, - "top": 0, - "width": 331, - "height": 331, - "paths": [ - { - "d": "M331 82.75L331 7.23424e-06L165.5 0L165.5 82.7174C165.482 37.0308 128.441 7.23424e-06 82.75 7.23424e-06L3.61712e-06 7.23424e-06L3.61712e-06 165.5L82.75 165.5C37.0485 165.5 -1.99768e-06 202.549 8.07875e-14 248.25L3.61712e-06 331L165.5 331L165.5 248.25C165.5 293.951 202.549 331 248.25 331L331 331L331 165.5L248.283 165.5C293.969 165.482 331 128.441 331 82.75Z", - "fill_rule": "evenodd", - "fill": "fill" - } - ], - "id": "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96", - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.6313725490196078, - "b": 0.28627450980392155, - "a": 1.0 + "rotation": 0, + "top": 150, + "type": "vector", + "vector_network": { + "segments": [ + { + "a": 0, + "b": 1, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 1, + "b": 2, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 2, + "b": 3, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 3, + "b": 4, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] + }, + { + "a": 4, + "b": 0, + "ta": [ + 0.0, + 0.0 + ], + "tb": [ + 0.0, + 0.0 + ] } - } - ] + ], + "vertices": [ + [ + 0.0, + 0.5 + ], + [ + 1080.0, + 0.5 + ], + [ + 1080.0, + -0.5 + ], + [ + 0.0, + -0.5 + ], + [ + 0.0, + 0.5 + ] + ] + }, + "width": 1080, + "z_index": 0 }, "main": { - "type": "scene", - "id": "main", - "name": "main", "active": true, - "locked": false, + "background_color": { + "a": 1, + "b": 0.96, + "g": 0.96, + "r": 0.96 + }, "constraints": { "children": "multiple" }, - "guides": [], "edges": [], - "background_color": { - "r": 0.96, - "g": 0.96, - "b": 0.96, - "a": 1 - } + "guides": [], + "id": "main", + "locked": false, + "name": "main", + "type": "scene" } }, - "links": { - "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc": [ - "fb5c188a-1ff8-4974-b2a2-97c691a6b517", - "b5131656-c058-447c-a93d-52d91ea30f6f" - ], - "fb5c188a-1ff8-4974-b2a2-97c691a6b517": [ - "7fa7152a-1aa6-432f-8a18-e06028407210", - "36123500-0f85-4828-90d6-f7efe0465145", - "2f25877e-7a6c-40c2-a7f9-4ea31cd7d933" - ], - "36123500-0f85-4828-90d6-f7efe0465145": [ - "3cdaf947-0959-470b-9012-018e733d9f69" - ], - "b5131656-c058-447c-a93d-52d91ea30f6f": [ - "6db11f69-c5e4-43dd-adfb-ce93b013095b", - "29429cb3-52e5-4731-957b-4a37e7856fcb", - "e4891d1d-12bb-4a9f-9359-741a359ea39e", - "01182c94-a1f6-46f2-9b41-5cd622c480a6", - "2c316d9f-4c8b-4af0-b367-b0f1b8901a88", - "d5d23ac6-682c-40f0-ac47-9555d5a3f9d9", - "2c313df1-8090-4200-b114-38919c70045f" - ], - "2c316d9f-4c8b-4af0-b367-b0f1b8901a88": [ - "cc64cd72-f5aa-489a-8570-8cdc4b20daca" - ], - "2c313df1-8090-4200-b114-38919c70045f": [ - "296499fb-b83a-4cf2-8589-d589a3426f4e", - "c83c9be1-62a3-40da-8037-a7ae14cc093e", - "79f25f6f-65bd-4dd8-8627-c4a5d773a218" - ], - "5ac3de8f-c266-4d78-a1c4-02b413174ab6": [ - "79e82c91-9ed1-4eb0-8c33-89fe98219b7c", - "3afd24ac-a789-4e3e-b626-f7d990eab72a", - "97dafdc5-8004-4d73-890c-3c9ee68c688e" - ], - "79e82c91-9ed1-4eb0-8c33-89fe98219b7c": [ - "ff20ed51-2dce-4a17-816c-ca346983979e", - "f290578a-89d6-4141-b762-cf370d7392e0", - "94c3ba01-8de9-4a90-a0a8-05972ac52f44" - ], - "f290578a-89d6-4141-b762-cf370d7392e0": [ - "8bd6d1b1-51bd-406a-9fa5-42956191dd2c" - ], - "3afd24ac-a789-4e3e-b626-f7d990eab72a": [ - "0eb99750-edad-4a0a-a886-6b7e505b62ab", - "9f5905c5-5e47-4d14-898f-18d4bb98025e", - "a3b4b1cd-ce66-4e36-abfa-a162d5676199", - "2cfe6c93-53ca-46b4-923f-a022a2a8b4fa" - ], - "27928f62-5265-4d23-a828-fc42c58572ac": [ - "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f", - "d77358f4-748d-49fe-ae50-911f357c4a62", - "39121f18-a69b-4d0c-8a45-39548fb7d43b" - ], - "5bfa1fe9-cca4-4ca4-abc6-9691d3bb3f5f": [ - "158c801e-d693-4ee1-b392-ef86c8e97864", - "755302fe-e073-4faa-881d-d561335f3068", - "ae565e52-976f-4909-b062-b8cd5ef26c30" - ], - "755302fe-e073-4faa-881d-d561335f3068": [ - "60f4d6dd-6a18-47e4-8ec5-95445d429770" - ], - "d77358f4-748d-49fe-ae50-911f357c4a62": [], - "39121f18-a69b-4d0c-8a45-39548fb7d43b": [ - "e0e5300d-09e2-4afb-ad25-4e8b0b03624c", - "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6", - "b8277fa8-b221-4b5c-b05b-df375de91af2", - "aad05458-6b10-47b8-ab6b-f859b3b5e299" - ], - "f24c5ef8-060e-4b2f-ad29-2a0cdec188a6": [ - "964c0ba6-a0bf-4909-8dff-0686c4b2f6e1", - "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6" - ], - "3aaf1c4a-ff2e-4e5b-8db3-e238f8905be6": [ - "55067523-3d57-4636-91c7-3f1769f4747e" - ], - "b8277fa8-b221-4b5c-b05b-df375de91af2": [ - "2a1ed781-06d1-4a4d-9908-5e807f3c2983", - "8927e413-8570-4259-891b-e36aa614a25d", - "14472868-d49c-4411-adc9-ab48beb4621c", - "3ac33bc3-743e-4eef-8011-ce8b6a1b740a", - "1044027a-8009-437b-8a4b-1c3ec006f8f9" - ], - "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5": [ - "3860c5b4-1987-436f-8113-63a1d3999d2e", - "4b2cb61d-1925-4515-ad23-e15f08cc6626" - ], - "3860c5b4-1987-436f-8113-63a1d3999d2e": [ - "135994ec-41b4-4d58-bf51-9dd6fd577e6c", - "c8655a4f-837f-4867-b7ee-81c9025fc188", - "0879aa63-70ad-4c47-ae56-b99462ce540c" - ], - "c8655a4f-837f-4867-b7ee-81c9025fc188": [ - "e8655ffa-b4dc-4939-864d-77b9208e1f2e" - ], - "4b2cb61d-1925-4515-ad23-e15f08cc6626": [ - "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77" - ], - "fcdfde82-c363-4fea-a3d5-d3dab2ab9f77": [ - "8099fa98-1f01-4e85-be29-1c4ac50516a5", - "84347d1c-ca26-4d6d-b3d2-be770742e660", - "c1a07e06-f9e9-4023-b072-674edb9c680e", - "2f472276-c737-4757-bff1-6a22539a2cfa", - "540840f9-eca5-4975-8f05-3bcb7ff27f8c" - ], - "84347d1c-ca26-4d6d-b3d2-be770742e660": [ - "787f4515-a1cd-4cfc-990e-5199f7544975" - ], - "c1a07e06-f9e9-4023-b072-674edb9c680e": [ - "e430dc52-d4a4-4d99-95b5-baf1f09e68f6", - "470d42db-a5d6-4b45-8a0b-abcee1ad08d8" - ], - "34c46b34-5b54-4a27-be7d-a55950a3398e": [ - "96c40aae-f303-4c9b-be20-39d6a5d9e9ef", - "d77fbae1-c379-4ffe-a524-887324617346" - ], - "96c40aae-f303-4c9b-be20-39d6a5d9e9ef": [ - "5786bd6e-498e-4090-b5b9-3d91ede365f6", - "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d", - "efc81eb0-403e-4ff3-aad6-ae88c55e1fd4" - ], - "e3d9ca99-0fae-444c-88fc-3b18d5de6b8d": [ - "4f8fa473-890a-49d0-8335-3b78ffaf31a5" - ], - "d77fbae1-c379-4ffe-a524-887324617346": [ - "8d653755-953e-4a0d-9f06-c935dbdc659b", - "f7075669-9c1b-47a9-825e-cdf5c86fc827" - ], - "8d653755-953e-4a0d-9f06-c935dbdc659b": [ - "45bfea71-1399-42b0-8fa1-633305419119", - "9cae0b62-3130-4ecb-9aaf-302f82669aa3", - "2003aba6-81f4-438b-a9b0-d702c4d8e945" - ], - "f7075669-9c1b-47a9-825e-cdf5c86fc827": [ - "b430e9d4-bcea-4581-aebc-f9b5d3f9ff96" - ], - "main": [ - "5cf24c3b-93b1-477c-8d08-bb73d3c2f8dc", - "5ac3de8f-c266-4d78-a1c4-02b413174ab6", - "27928f62-5265-4d23-a828-fc42c58572ac", - "f024bb33-c4bb-4a3b-b9af-9191a96aa5f5", - "34c46b34-5b54-4a27-be7d-a55950a3398e" - ] - }, + "properties": {}, "scenes_ref": [ "main" - ], - "bitmaps": {}, - "images": {}, - "properties": {} - } + ] + }, + "version": "0.89.0-beta+20251219" } \ No newline at end of file diff --git a/editor/public/examples/canvas/instagram-post-01.grida b/editor/public/examples/canvas/instagram-post-01.grida deleted file mode 100644 index dc797ca9f3..0000000000 --- a/editor/public/examples/canvas/instagram-post-01.grida +++ /dev/null @@ -1,423 +0,0 @@ -{ - "version": "0.0.4-beta+20251209", - "document": { - "nodes": { - "202:2": { - "id": "202:2", - "name": "insta_post_4", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "relative", - "left": 0, - "top": 0, - "width": 540, - "height": 540, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.18823529411764706, - "g": 0.19607843137254902, - "b": 0.592156862745098, - "a": 1.0 - } - } - ] - }, - "202:3": { - "id": "202:3", - "name": "image 6", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/a49e/fb52/8341b0acefdd6387e3dec5b7da9d9361?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=ZO0A6hXI7GP9kGIEaiSyS9WmQtjXNHjP8hAaYFDVctHbhfPaGzhHo8t0nOMQco-0IhiHWV86xaAqNPV8u9CphZsDNxFpJBHSktgo7oRLBVeM8klNo~pH8tjxqXTy0ZHTFYusgHv-ncu-3FTKrfTtgpM~moQH0ndNBRqzJfivAxrtNmafp~Vi7vHl5UpSmvcfKuTY5QMealvyw-S9sEHPb0pL26BlkWuLA57gcrqgGowdRDqfeXGpYyBD-M1QmOzFfgUvBeqfDSxMQmwAql4iIVLHa-NXxL1iWQO5Jb1Pt1Ca3Q1Sj07PtVHBE9DBCOXxVvd~jNhscACfkKOJKWI7eQ__", - "position": "absolute", - "left": 0, - "top": 0, - "width": 540, - "height": 540, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "202:4": { - "id": "202:4", - "name": "# tag", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.7, - "z_index": 0, - "type": "text", - "text": "# our favorite question", - "position": "absolute", - "left": 60, - "bottom": 60, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.25, - "letter_spacing": 0, - "font_size": 16, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "202:5": { - "id": "202:5", - "name": "group", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 60, - "top": 196, - "width": 420, - "height": 124, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "202:6": { - "id": "202:6", - "name": "main", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "How to turn off \nthe TV correctly?", - "position": "absolute", - "left": 0, - "top": 0, - "width": 420, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.01, - "letter_spacing": 0, - "font_size": 44, - "font_family": "Inter", - "font_weight": 700, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "202:7": { - "id": "202:7", - "name": "counter", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.7, - "z_index": 0, - "type": "text", - "text": "1 of 10", - "position": "absolute", - "left": 0, - "bottom": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.43, - "letter_spacing": 0, - "font_size": 14, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "202:8": { - "id": "202:8", - "name": "overhead", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 0.7, - "z_index": 0, - "type": "text", - "text": "getting started", - "position": "absolute", - "left": 60, - "bottom": 360, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.43, - "letter_spacing": 1.5, - "font_size": 14, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "202:9": { - "id": "202:9", - "name": "category", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "cashier app", - "position": "absolute", - "right": 59.5, - "bottom": 460, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "right", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.43, - "letter_spacing": 1.5, - "font_size": 14, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "202:10": { - "id": "202:10", - "name": "logo", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 60, - "top": 60, - "width": 97, - "height": 20, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "202:11": { - "id": "202:11", - "name": "icons / face", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 20, - "height": 20, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "202:12": { - "id": "202:12", - "name": "Vector", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "svgpath", - "position": "absolute", - "left": 1.67, - "top": 1.67, - "width": 16.67, - "height": 16.67, - "paths": [ - { - "d": "M8.33333 0C3.725 0 0 3.75 0 8.33333C0 10.5435 0.877974 12.6631 2.44078 14.2259C3.2146 14.9997 4.13326 15.6135 5.1443 16.0323C6.15535 16.4511 7.23898 16.6667 8.33333 16.6667C10.5435 16.6667 12.6631 15.7887 14.2259 14.2259C15.7887 12.6631 16.6667 10.5435 16.6667 8.33333C16.6667 7.23898 16.4511 6.15535 16.0323 5.1443C15.6135 4.13326 14.9997 3.2146 14.2259 2.44078C13.4521 1.66696 12.5334 1.05313 11.5224 0.634337C10.5113 0.215548 9.42768 1.11022e-15 8.33333 0L8.33333 0ZM11.25 5C11.5815 5 11.8995 5.1317 12.1339 5.36612C12.3683 5.60054 12.5 5.91848 12.5 6.25C12.5 6.58152 12.3683 6.89946 12.1339 7.13388C11.8995 7.3683 11.5815 7.5 11.25 7.5C10.9185 7.5 10.6005 7.3683 10.3661 7.13388C10.1317 6.89946 10 6.58152 10 6.25C10 5.91848 10.1317 5.60054 10.3661 5.36612C10.6005 5.1317 10.9185 5 11.25 5L11.25 5ZM5.41667 5C5.74819 5 6.06613 5.1317 6.30055 5.36612C6.53497 5.60054 6.66667 5.91848 6.66667 6.25C6.66667 6.58152 6.53497 6.89946 6.30055 7.13388C6.06613 7.3683 5.74819 7.5 5.41667 7.5C5.08515 7.5 4.7672 7.3683 4.53278 7.13388C4.29836 6.89946 4.16667 6.58152 4.16667 6.25C4.16667 5.91848 4.29836 5.60054 4.53278 5.36612C4.7672 5.1317 5.08515 5 5.41667 5ZM8.33333 12.9167C6.39167 12.9167 4.74167 11.7 4.075 10L12.5917 10C11.9167 11.7 10.275 12.9167 8.33333 12.9167Z", - "fill_rule": "nonzero" - } - ], - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.30196078431372547, - "b": 0.30980392156862746, - "a": 1.0 - } - } - ] - }, - "202:13": { - "id": "202:13", - "name": "name", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "youami", - "position": "absolute", - "right": 0, - "bottom": 4, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 0.8, - "letter_spacing": 0, - "font_size": 20, - "font_family": "Inter", - "font_weight": 800, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "post": { - "type": "scene", - "id": "post", - "name": "post", - "active": true, - "locked": false, - "constraints": { - "children": "multiple" - }, - "guides": [], - "edges": [], - "background_color": { - "r": 0.96, - "g": 0.96, - "b": 0.96, - "a": 1 - } - } - }, - "links": { - "202:2": [ - "202:3", - "202:4", - "202:5", - "202:8", - "202:9", - "202:10" - ], - "202:5": [ - "202:6", - "202:7" - ], - "202:10": [ - "202:11", - "202:13" - ], - "202:11": [ - "202:12" - ], - "post": [ - "202:2" - ] - }, - "scenes_ref": [ - "post" - ], - "bitmaps": {}, - "images": {}, - "properties": {} - } -} \ No newline at end of file diff --git a/editor/public/examples/canvas/layout-01.grida b/editor/public/examples/canvas/layout-01.grida index 8c64035a0b..257606e771 100644 --- a/editor/public/examples/canvas/layout-01.grida +++ b/editor/public/examples/canvas/layout-01.grida @@ -1,5 +1,5 @@ { - "version": "0.0.4-beta+20251209", + "version": "0.89.0-beta+20251219", "document": { "nodes": { "173:49": { @@ -21,7 +21,10 @@ "overflow": "clip" }, "corner_radius": 0, - "padding": 0, + "padding_top": 0, + "padding_right": 0, + "padding_bottom": 0, + "padding_left": 0, "layout": "flow", "direction": "horizontal", "main_axis_alignment": "start", @@ -58,7 +61,10 @@ "height": "auto", "style": {}, "corner_radius": 0, - "padding": 0, + "padding_top": 0, + "padding_right": 0, + "padding_bottom": 0, + "padding_left": 0, "layout": "flex", "direction": "vertical", "main_axis_alignment": "start", @@ -164,7 +170,10 @@ "height": "auto", "style": {}, "corner_radius": 0, - "padding": 0, + "padding_top": 0, + "padding_right": 0, + "padding_bottom": 0, + "padding_left": 0, "layout": "flex", "direction": "horizontal", "main_axis_alignment": "start", diff --git a/editor/public/examples/canvas/poster-01.grida b/editor/public/examples/canvas/poster-01.grida deleted file mode 100644 index 7b815fd917..0000000000 --- a/editor/public/examples/canvas/poster-01.grida +++ /dev/null @@ -1,973 +0,0 @@ -{ - "version": "0.0.4-beta+20251209", - "document": { - "nodes": { - "102:2": { - "id": "102:2", - "name": "How I Met Your Mother", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "relative", - "left": 0, - "top": 0, - "width": 450, - "height": 675, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.9294117647058824, - "g": 0.9176470588235294, - "b": 0.8784313725490196, - "a": 1.0 - } - } - ] - }, - "102:3": { - "id": "102:3", - "name": "Auto Layout", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 450, - "height": 675, - "style": { - "padding": "29.999998092651367px 29.999998092651367px 29.999998092651367px 29.999998092651367px" - }, - "corner_radius": 0 - }, - "102:4": { - "id": "102:4", - "name": "Top", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 30, - "top": 30, - "width": 390, - "height": 130.375, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "102:5": { - "id": "102:5", - "name": "Heading", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 390, - "height": 37.5, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "102:6": { - "id": "102:6", - "name": "Left", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 109.625, - "height": 37.5, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "102:7": { - "id": "102:7", - "name": "Palette", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 90, - "height": 7.5, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "102:8": { - "id": "102:8", - "name": "Palette 3", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "rectangle", - "position": "absolute", - "left": 0, - "top": 0, - "width": 30, - "height": 7.5, - "effects": [], - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.00392156862745098, - "g": 0.3254901960784314, - "b": 0.6509803921568628, - "a": 1.0 - } - } - ] - }, - "102:9": { - "id": "102:9", - "name": "Palette 2", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "rectangle", - "position": "absolute", - "left": 30, - "top": 0, - "width": 30, - "height": 7.5, - "effects": [], - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.49411764705882355, - "g": 0.6470588235294118, - "b": 0.611764705882353, - "a": 1.0 - } - } - ] - }, - "102:10": { - "id": "102:10", - "name": "Palette 1", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "rectangle", - "position": "absolute", - "left": 60, - "top": 0, - "width": 30, - "height": 7.5, - "effects": [], - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.9686274509803922, - "g": 0.9019607843137255, - "b": 0.2549019607843137, - "a": 1.0 - } - } - ] - }, - "102:11": { - "id": "102:11", - "name": "Created by: Carter Bays and Craig Thomas", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Created by:\nCarter Bays and Craig Thomas", - "position": "absolute", - "left": 0, - "top": 19.75, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "center", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 7.499999523162842, - "font_family": "Sequel Sans", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "102:24": { - "id": "102:24", - "name": "How I Met Your Mother", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "How I Met\nYour Mother", - "position": "absolute", - "left": 0, - "top": 52.5, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "center", - "text_decoration_line": "none", - "line_height": 0.865, - "letter_spacing": 0, - "font_size": 45, - "font_family": "Sequel Sans", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "102:25": { - "id": "102:25", - "name": "Middle", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 30, - "top": 175.375, - "width": 390, - "height": 428, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.8745098039215686, - "g": 0.8666666666666667, - "b": 0.8156862745098039, - "a": 1.0 - } - } - ] - }, - "102:26": { - "id": "102:26", - "name": "Frame 1", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 390, - "height": 196.1875, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "102:43": { - "id": "102:43", - "name": "Palette 4", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "rectangle", - "position": "absolute", - "left": 130, - "top": 0.125, - "width": 130, - "height": 196, - "effects": [], - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.49411764705882355, - "g": 0.6470588235294118, - "b": 0.611764705882353, - "a": 1.0 - } - } - ] - }, - "102:28": { - "id": "102:28", - "name": "Ted", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/a438/1671/506145ee19e37af334eb14291afcac9d?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=iG-4OpAh8XBrsu7lEs2g3gHCMZAvBigSuv6JtubwX5uBO3pFZAqBPOiys0SRFAhN30jOJ5DqhTm7z3Vd6dbPWHTEPjNjBeFNfiWsDVoS2NrfVTyYDf-JA-IX0wedd-f0OUCkqFwHdGfCzKR0RfYuwKzHfMbCjruUW18lpBFd6bvv8CXReCde0MU3KrjmFCs0v-TDhJEtMy4mjTTXpwDzkqWRY4E1Hpni8Eu6Xe5lYgjvNCz6g6kgmJuvCXTatqrfBDXo4DXCGjrDIrZzBZGPbxl90n2uGVL60HHiNlrF0F6wFNmUxZzLv3QvT33hUkaPCoUt9k-c4uaBUXovQZEzKw__", - "position": "absolute", - "left": 130, - "top": 0, - "width": 130, - "height": 196.1875, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "102:42": { - "id": "102:42", - "name": "Palette 3", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "rectangle", - "position": "absolute", - "left": 0, - "top": 0.125, - "width": 130, - "height": 196, - "effects": [], - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.00392156862745098, - "g": 0.3254901960784314, - "b": 0.6509803921568628, - "a": 1.0 - } - } - ] - }, - "102:44": { - "id": "102:44", - "name": "Palette 5", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "rectangle", - "position": "absolute", - "left": 260, - "top": 0.125, - "width": 130, - "height": 196, - "effects": [], - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.9686274509803922, - "g": 0.9019607843137255, - "b": 0.2549019607843137, - "a": 1.0 - } - } - ] - }, - "102:27": { - "id": "102:27", - "name": "Robin", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/e1c6/b3a5/e0b8d210cb2b113ef4955fdd0af64d80?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=YDl1Zyz3aYFQR5UuWSYUIsHWrpzlPVhUyTNRmqlf1muC8V9VhxnDRxqcYqGy4P-rA8k3aWIhgIIeThOZSFDVExsauXj60r-MhChaKCZ2KzN-hoe4Iu~HlsagYOLN9SKbeZu5OmK7f75Ftr-ELF2aPo~8fOPSTzIEI8fF~ML2rhpN2aSoD9Nu8cWlA~pWMvs~~-7w1dvwdrIq~N4aby6QOWOfTdyoqGdgMUg5UXXEn7u5hDga3fIpntBffgpGksXrXsSLP9H06sN7IFPvJQ8jXieJKK9vG8BuRXXfov9IcqrJW8ILgo65apAri7Qq5s~d8~3D-AmENy1XvAiGscqTQw__", - "position": "absolute", - "left": 0, - "top": 0, - "width": 130, - "height": 196.1875, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "102:29": { - "id": "102:29", - "name": "Tracy", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/a82b/c5c0/15f6fb4736a5624f41932c24add65849?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=DwKgvG6svIBm4YCQBptYBxIGkG84~dso4JS7yNnkFyYaRZPkErOX9pZIHBXAGmQ~tJnhDMei6DD7uS5mEf1x~PfEx2hu21yv4vXa0j-HoLUxlnDwrwJvWIImf0au~8bIAStQQsnR1sJ6aE0jStSDBAa8iOC1knz7hGHP4aKvy9TmiXB9vcEFTAyfHW2muT6rOX2E4iLwrgWmN2GxJCda1ke4wM95kFzgGRHYHGZWG2QNzojcGmXUMAXKWYyG4mKqHWLjqMzp9Eaz7DmHuXw-ZQxtCv2LJFU232wn03PMtz85yGBaZ9KM3M3A5aHmcpqrD~lNyEe730OcU-E2iSbGwA__", - "position": "absolute", - "left": 260, - "top": 0, - "width": 130, - "height": 196.1875, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "102:30": { - "id": "102:30", - "name": "Frame 2", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 196.1875, - "width": 390, - "height": 35.625, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.9294117647058824, - "g": 0.9176470588235294, - "b": 0.8784313725490196, - "a": 1.0 - } - } - ] - }, - "102:31": { - "id": "102:31", - "name": "Frame 1", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 231.8125, - "width": 390, - "height": 196.1875, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "102:32": { - "id": "102:32", - "name": "Barney", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/a295/a83f/7be2c86791ac2916907f77026689eab8?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=mLU0LAuYes3uRKBKranP~tXUfqyzRZiBVQpg2QHEZTzK1QfRTeaX2mwJEKgnZGW1-T7p4lRSTgoD81cTmgjWnQCro0A2riyjq4EHk0m396iK6031dJ31bQUEXPa8xgMM8SfAzLqzzDDXEnW12HTmKPwaimswza6DbjmQg5y4TK3BGeQIfdbJvQlvYX3~mAPH5qlkTT5GIX8G5iaItiISWDz1qdgisU3m9I3g5d-mwK5M20YrH13BfnSEXihhV1YcIco~J~9Ku~VsEmaC8jVUStmEowfqTfha2A-dAxbaOxb9xbxJ~A2tgrDJOopeaVZqRAJTTtTXGhd5-AO~O96YBQ__", - "position": "absolute", - "left": 0, - "top": 0, - "width": 130, - "height": 196.1875, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "102:33": { - "id": "102:33", - "name": "Lily", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/c0c2/bf35/baacaabc4aa7b6aa2229211655b5b40e?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=I5Y6ojI7--TnD8y~ohV85DWAwZnBSq1iw6eafaimNc1o48ngbj~3mgWitl1XSc~ljnbTNI0mprMPIDfp1bnwmbVb5oQKPTLJh5PYOrCFZmif0KPpzpBXGt7USMPc2WGTvar0CXGv4Cc4Q3zEBZe7HwyYNrmXtbFj5Lu1x~rZSey0nlbpA-UZJHFWMzl9y4~axXf~kB9Nwf4kMvDa7WZOx1qLSNdqmvWIYW7fgBw-LxFCzkiuN6~wLrdVUW82~fIYT10Y1dV8AFzY0dFbKxLeLuMcbU~2n~6KHO2Xa6zLamR3LmGTV5RNeiPmFikckSnD~w7vpBiYCLhE7tSXFoMOMA__", - "position": "absolute", - "left": 130, - "top": 0, - "width": 130, - "height": 196.1875, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "102:34": { - "id": "102:34", - "name": "Marshall", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/1a1f/2e12/9bb844a5e4f6fded25c7a5a9af512de2?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=Khqz4ZsVA4oA0FCqUxJmFtU2w~HcV2ygx30qHwY~LuxdJj-ytWFqbFAdrpys-Q6Vgo~xfOQ6c82k4IoHHU-PEn4uxtmFeqhQIcUja5Kca30x3JTln0CITmDZDsrZfvwroHnrlizO5YrVRVO-IixD1VJkBOJCVnAV39EkpgqAoSJf5Gf0koDdKvVCuv1GqCjdG74a6dkemPZ8dP3nW0pXowZi-d8gF85SV245z3G3lorHyiLVipFrMyJLlKFeaSn6waQVwRApnDhNwi3H41bwZ~dW899IM8uVVmP-CluWO-4MUUneYlItzWcRQEzXUGNTmfSPQeTrBcjT3Qe-mUUHXA__", - "position": "absolute", - "left": 260, - "top": 0, - "width": 130, - "height": 196.1875, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "102:35": { - "id": "102:35", - "name": "Bottom", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 30, - "top": 618.375, - "width": 390, - "height": 26.625, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "102:36": { - "id": "102:36", - "name": "CBS", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/c582/fe08/0d04bb98a11a500a0c0b2824df87c1d6?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=k~RY725MTo9uIYJFH3Pii1Wfi~XUQF2GT4thkOe0R6uNwRdq7CfEsZiGVhqn6HkglbAXdyJfggJn60-w0it1PIePwZoXEox4~w0og2w-MNrv2CujRbyv-nzSJqQOrUpf5AgbfcM4-vPqkUj4R1KFrkvkSAHeUgmqRW77teU9xTlWvJyvUJedFjeS1pSY6wXmhCkRMpLoFi~pMSncqW1qIrf6umLeyuXbZTDHtELDwoK1wZYkKYLLyRefQ6se4Z~LoxVexAfvlhP8nYv3x2PzT7piTo-x-qdMMjzyT5b4X2mJGGBu9VAHhtVGp8yDQStUnVNZM5SlAhprX-h-yTTrhw__", - "position": "absolute", - "left": 0, - "top": 3.9375, - "width": 61.25, - "height": 18.75, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "102:37": { - "id": "102:37", - "name": "Cast", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 183.125, - "top": 0, - "width": 206.875, - "height": 26.625, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "102:38": { - "id": "102:38", - "name": "Josh Radnor Neil Patrick Harris Jason Segel", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Josh Radnor\nNeil Patrick Harris\nJason Segel", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "center", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 7.499999523162842, - "font_family": "Sequel Sans", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "102:39": { - "id": "102:39", - "name": "Cobie Smulders Alyson Hannigan Cristin Milioti", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Cobie Smulders\nAlyson Hannigan\nCristin Milioti", - "position": "absolute", - "left": 74.6875, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "center", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 7.499999523162842, - "font_family": "Sequel Sans", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "102:40": { - "id": "102:40", - "name": "Lyndsy Fonseca David Henrie Marshall Manesh", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Lyndsy Fonseca\nDavid Henrie\nMarshall Manesh", - "position": "absolute", - "left": 144.5625, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "center", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 7.499999523162842, - "font_family": "Sequel Sans", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "102:41": { - "id": "102:41", - "name": "Love is the best thing we do", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "svgpath", - "position": "absolute", - "left": 30, - "top": 385.3125, - "width": 390, - "height": 27.813730239868164, - "paths": [ - { - "d": "M0 21.8644L16.2685 21.8644L16.2685 17.6063L5.13106 17.6063L5.13106 0.301995L0 0.301995L0 21.8644Z", - "fill_rule": "nonzero" - }, - { - "d": "M25.8065 5.49631C20.5547 5.49631 17.4157 8.69745 17.4157 13.8918C17.4157 19.0559 20.5547 22.257 25.8065 22.257C31.0281 22.257 34.1671 19.0559 34.1671 13.8918C34.1671 8.69745 31.0281 5.49631 25.8065 5.49631ZM25.8065 18.7539C23.6635 18.7539 22.3053 17.2439 22.3053 13.8918C22.3053 10.5396 23.6635 8.99945 25.8065 8.99945C27.9494 8.99945 29.3076 10.5396 29.3076 13.8918C29.3076 17.2439 27.9494 18.7539 25.8065 18.7539Z", - "fill_rule": "nonzero" - }, - { - "d": "M45.4993 21.8644L51.2642 5.8587L46.1935 5.8587L42.7526 16.6701L42.6319 16.6701L39.2213 5.8587L34.0298 5.8587L39.7947 21.8644L45.4993 21.8644Z", - "fill_rule": "nonzero" - }, - { - "d": "M62.4997 16.7607C62.228 17.7573 61.4433 19.0257 59.3607 19.0257C57.3384 19.0257 56.0406 17.3949 56.0104 14.8581L67.5402 14.8581C67.9326 8.72765 64.5521 5.49631 59.3305 5.49631C54.1391 5.49631 51.0906 8.72765 51.0906 13.8918C51.0906 19.0559 54.2296 22.257 59.3607 22.257C64.5823 22.257 66.8158 19.3277 67.3893 17.0929L62.4997 16.7607ZM59.3305 8.63705C61.3829 8.63705 62.5299 10.0866 62.6506 11.959L56.0406 11.959C56.1613 10.0866 57.3082 8.63705 59.3305 8.63705Z", - "fill_rule": "nonzero" - }, - { - "d": "M75.5497 0L75.5497 3.77494L80.3487 3.77494L80.3487 0L75.5497 0ZM75.5497 5.8587L75.5497 21.8644L80.3487 21.8644L80.3487 5.8587L75.5497 5.8587Z", - "fill_rule": "nonzero" - }, - { - "d": "M96.637 10.2376C96.0937 7.24788 93.166 5.49631 89.3328 5.49631C85.56 5.49631 82.2097 7.24788 82.2097 10.449C82.2097 13.9522 84.9563 14.8883 87.552 15.2809L89.3932 15.5829C91.1136 15.8547 92.2303 16.3077 92.2303 17.3043C92.2303 18.4821 91.174 19.2069 89.5139 19.2069C87.6728 19.2069 86.4654 18.3915 86.1334 16.6701L81.6362 17.2137C82.1795 20.4451 85.228 22.257 89.4837 22.257C93.7999 22.257 97.1199 20.6866 97.1199 17.0929C97.1199 13.4388 94.2526 12.563 91.3249 12.0798L89.6346 11.808C88.035 11.5664 86.9786 11.2342 86.9786 10.2074C86.9786 9.12025 87.9746 8.51626 89.363 8.51626C90.8118 8.51626 91.9285 9.33164 92.2002 10.751L96.637 10.2376Z", - "fill_rule": "nonzero" - }, - { - "d": "M113.349 18.2707C111.99 18.2707 111.447 18.1197 111.447 16.7003L111.447 8.96925L114.707 8.96925L114.707 5.8587L111.447 5.8587L111.447 1.41938L106.648 1.41938L106.648 5.8587L104.143 5.8587L104.143 8.96925L106.648 8.96925L106.648 17.8781C106.648 21.2 108.097 21.9248 111.598 21.9248C112.775 21.9248 114.164 21.9248 114.616 21.8644L114.616 18.2405C114.254 18.2707 113.832 18.2707 113.349 18.2707Z", - "fill_rule": "nonzero" - }, - { - "d": "M121.141 8.00286L121.141 0L116.342 0L116.342 21.8644L121.141 21.8644L121.141 13.3482C121.141 10.6906 122.65 9.33164 124.249 9.33164C126 9.33164 126.966 10.1772 126.966 12.5328L126.966 21.8644L131.765 21.8644L131.765 11.3852C131.765 7.30828 129.32 5.49631 126.242 5.49631C123.887 5.49631 122.288 6.58349 121.261 8.03306L121.141 8.00286Z", - "fill_rule": "nonzero" - }, - { - "d": "M144.933 16.7607C144.661 17.7573 143.876 19.0257 141.794 19.0257C139.771 19.0257 138.474 17.3949 138.443 14.8581L149.973 14.8581C150.366 8.72765 146.985 5.49631 141.763 5.49631C136.572 5.49631 133.524 8.72765 133.524 13.8918C133.524 19.0559 136.663 22.257 141.794 22.257C147.015 22.257 149.249 19.3277 149.822 17.0929L144.933 16.7607ZM141.763 8.63705C143.816 8.63705 144.963 10.0866 145.084 11.959L138.474 11.959C138.594 10.0866 139.741 8.63705 141.763 8.63705Z", - "fill_rule": "nonzero" - }, - { - "d": "M167.671 5.49631C165.408 5.49631 163.778 6.34189 162.872 7.76127L162.752 7.76127L162.752 0.0301991L157.952 0.0301991L157.952 21.8946L162.54 21.8946L162.54 19.7505L162.661 19.7505C163.687 21.5624 165.559 22.257 167.551 22.257C171.535 22.257 174.462 19.0559 174.462 13.8918C174.462 8.69745 171.535 5.49631 167.671 5.49631ZM166.041 18.6633C163.898 18.6633 162.51 17.1231 162.51 13.8918C162.51 10.6302 163.898 9.09005 166.041 9.09005C168.184 9.09005 169.573 10.6302 169.573 13.8918C169.573 17.1231 168.184 18.6633 166.041 18.6633Z", - "fill_rule": "nonzero" - }, - { - "d": "M187.339 16.7607C187.068 17.7573 186.283 19.0257 184.2 19.0257C182.178 19.0257 180.88 17.3949 180.85 14.8581L192.38 14.8581C192.772 8.72765 189.392 5.49631 184.17 5.49631C178.979 5.49631 175.93 8.72765 175.93 13.8918C175.93 19.0559 179.069 22.257 184.2 22.257C189.422 22.257 191.656 19.3277 192.229 17.0929L187.339 16.7607ZM184.17 8.63705C186.223 8.63705 187.37 10.0866 187.49 11.959L180.88 11.959C181.001 10.0866 182.148 8.63705 184.17 8.63705Z", - "fill_rule": "nonzero" - }, - { - "d": "M208.405 10.2376C207.862 7.24788 204.934 5.49631 201.101 5.49631C197.328 5.49631 193.978 7.24788 193.978 10.449C193.978 13.9522 196.724 14.8883 199.32 15.2809L201.161 15.5829C202.882 15.8547 203.998 16.3077 203.998 17.3043C203.998 18.4821 202.942 19.2069 201.282 19.2069C199.441 19.2069 198.233 18.3915 197.901 16.6701L193.404 17.2137C193.947 20.4451 196.996 22.257 201.252 22.257C205.568 22.257 208.888 20.6866 208.888 17.0929C208.888 13.4388 206.021 12.563 203.093 12.0798L201.403 11.808C199.803 11.5664 198.747 11.2342 198.747 10.2074C198.747 9.12025 199.743 8.51626 201.131 8.51626C202.58 8.51626 203.697 9.33164 203.968 10.751L208.405 10.2376Z", - "fill_rule": "nonzero" - }, - { - "d": "M218.654 18.2707C217.296 18.2707 216.753 18.1197 216.753 16.7003L216.753 8.96925L220.013 8.96925L220.013 5.8587L216.753 5.8587L216.753 1.41938L211.954 1.41938L211.954 5.8587L209.449 5.8587L209.449 8.96925L211.954 8.96925L211.954 17.8781C211.954 21.2 213.403 21.9248 216.904 21.9248C218.081 21.9248 219.469 21.9248 219.922 21.8644L219.922 18.2405C219.56 18.2707 219.137 18.2707 218.654 18.2707Z", - "fill_rule": "nonzero" - }, - { - "d": "M236.118 18.2707C234.76 18.2707 234.216 18.1197 234.216 16.7003L234.216 8.96925L237.476 8.96925L237.476 5.8587L234.216 5.8587L234.216 1.41938L229.417 1.41938L229.417 5.8587L226.912 5.8587L226.912 8.96925L229.417 8.96925L229.417 17.8781C229.417 21.2 230.866 21.9248 234.367 21.9248C235.544 21.9248 236.933 21.9248 237.386 21.8644L237.386 18.2405C237.023 18.2707 236.601 18.2707 236.118 18.2707Z", - "fill_rule": "nonzero" - }, - { - "d": "M243.91 8.00286L243.91 0L239.111 0L239.111 21.8644L243.91 21.8644L243.91 13.3482C243.91 10.6906 245.419 9.33164 247.019 9.33164C248.769 9.33164 249.735 10.1772 249.735 12.5328L249.735 21.8644L254.534 21.8644L254.534 11.3852C254.534 7.30828 252.09 5.49631 249.011 5.49631C246.657 5.49631 245.057 6.58349 244.031 8.03306L243.91 8.00286Z", - "fill_rule": "nonzero" - }, - { - "d": "M256.716 0L256.716 3.77494L261.515 3.77494L261.515 0L256.716 0ZM256.716 5.8587L256.716 21.8644L261.515 21.8644L261.515 5.8587L256.716 5.8587Z", - "fill_rule": "nonzero" - }, - { - "d": "M268.295 8.00286L268.295 5.8587L263.708 5.8587L263.708 21.8644L268.507 21.8644L268.507 13.1972C268.507 10.5698 269.986 9.33164 271.615 9.33164C273.366 9.33164 274.332 10.1772 274.332 12.5328L274.332 21.8644L279.131 21.8644L279.131 11.3852C279.131 7.30828 276.686 5.49631 273.517 5.49631C271.042 5.49631 269.412 6.58349 268.416 8.03306L268.295 8.00286Z", - "fill_rule": "nonzero" - }, - { - "d": "M297.309 5.8587L292.721 5.8587L292.721 7.82167L292.6 7.82167C291.574 6.1003 289.763 5.49631 287.771 5.49631C283.847 5.49631 280.92 8.45586 280.92 13.2576C280.92 18.0895 283.847 21.049 287.65 21.049C289.914 21.049 291.453 20.3243 292.389 18.9955L292.51 18.9955L292.51 20.5357C292.51 23.314 291.121 24.3408 289.099 24.3408C287.349 24.3408 286.262 23.6764 285.779 22.0456L281.01 22.4986C282.006 26.3038 285.175 27.8137 289.099 27.8137C293.687 27.8137 297.309 26.0018 297.309 20.6263L297.309 5.8587ZM289.28 17.5157C287.168 17.5157 285.809 15.8849 285.809 13.2576C285.809 10.6906 287.168 9.09005 289.28 9.09005C291.363 9.09005 292.751 10.6906 292.751 13.2576C292.751 15.8849 291.363 17.5157 289.28 17.5157Z", - "fill_rule": "nonzero" - }, - { - "d": "M331.12 5.8587L326.05 5.8587L323.243 16.5493L323.122 16.5493L320.466 5.8587L315.214 5.8587L312.558 16.5493L312.437 16.5493L309.63 5.8587L304.379 5.8587L309.57 21.8644L314.822 21.8644L317.629 11.355L317.749 11.355L320.587 21.8644L325.929 21.8644L331.12 5.8587Z", - "fill_rule": "nonzero" - }, - { - "d": "M342.369 16.7607C342.097 17.7573 341.312 19.0257 339.23 19.0257C337.208 19.0257 335.91 17.3949 335.88 14.8581L347.409 14.8581C347.802 8.72765 344.421 5.49631 339.2 5.49631C334.008 5.49631 330.96 8.72765 330.96 13.8918C330.96 19.0559 334.099 22.257 339.23 22.257C344.451 22.257 346.685 19.3277 347.258 17.0929L342.369 16.7607ZM339.2 8.63705C341.252 8.63705 342.399 10.0866 342.52 11.959L335.91 11.959C336.03 10.0866 337.177 8.63705 339.2 8.63705Z", - "fill_rule": "nonzero" - }, - { - "d": "M361.818 5.49631C357.924 5.49631 354.996 8.69745 354.996 13.8918C354.996 19.0559 357.924 22.257 361.908 22.257C363.93 22.257 365.772 21.5624 366.798 19.7505L366.919 19.7505L366.919 21.8644L371.506 21.8644L371.506 0L366.737 0L366.737 7.76127L366.617 7.76127C365.681 6.34189 364.081 5.49631 361.818 5.49631ZM363.447 18.6633C361.274 18.6633 359.886 17.1231 359.886 13.8918C359.886 10.6302 361.274 9.09005 363.447 9.09005C365.56 9.09005 366.979 10.6302 366.979 13.8918C366.979 17.1231 365.56 18.6633 363.447 18.6633Z", - "fill_rule": "nonzero" - }, - { - "d": "M381.639 5.49631C376.388 5.49631 373.249 8.69745 373.249 13.8918C373.249 19.0559 376.388 22.257 381.639 22.257C386.861 22.257 390 19.0559 390 13.8918C390 8.69745 386.861 5.49631 381.639 5.49631ZM381.639 18.7539C379.496 18.7539 378.138 17.2439 378.138 13.8918C378.138 10.5396 379.496 8.99945 381.639 8.99945C383.782 8.99945 385.141 10.5396 385.141 13.8918C385.141 17.2439 383.782 18.7539 381.639 18.7539Z", - "fill_rule": "nonzero" - } - ], - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.8745098039215686, - "g": 0.8666666666666667, - "b": 0.8156862745098039, - "a": 1.0 - } - } - ] - }, - "hymym": { - "type": "scene", - "id": "hymym", - "name": "How I Met Your Mother", - "active": true, - "locked": false, - "constraints": { - "children": "multiple" - }, - "guides": [], - "edges": [], - "background_color": { - "r": 0.96, - "g": 0.96, - "b": 0.96, - "a": 1 - } - } - }, - "links": { - "102:2": [ - "102:3", - "102:41" - ], - "102:3": [ - "102:4", - "102:25", - "102:35" - ], - "102:4": [ - "102:5", - "102:24" - ], - "102:5": [ - "102:6" - ], - "102:6": [ - "102:7", - "102:11" - ], - "102:7": [ - "102:8", - "102:9", - "102:10" - ], - "102:25": [ - "102:26", - "102:30", - "102:31" - ], - "102:26": [ - "102:43", - "102:28", - "102:42", - "102:44", - "102:27", - "102:29" - ], - "102:31": [ - "102:32", - "102:33", - "102:34" - ], - "102:35": [ - "102:36", - "102:37" - ], - "102:37": [ - "102:38", - "102:39", - "102:40" - ], - "hymym": [ - "102:2" - ] - }, - "scenes_ref": [ - "hymym" - ], - "bitmaps": {}, - "images": {}, - "properties": {} - } -} \ No newline at end of file diff --git a/editor/public/examples/canvas/resume-01.grida b/editor/public/examples/canvas/resume-01.grida deleted file mode 100644 index 15c23ba473..0000000000 --- a/editor/public/examples/canvas/resume-01.grida +++ /dev/null @@ -1,2284 +0,0 @@ -{ - "version": "0.0.4-beta+20251209", - "document": { - "nodes": { - "1:475": { - "id": "1:475", - "name": "root", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "relative", - "left": 0, - "top": 0, - "width": 698, - "height": 923, - "style": { - "overflow": "clip", - "padding": "32px 33px 32px 33px" - }, - "corner_radius": 0, - "layout": "flex", - "direction": "horizontal", - "main_axis_alignment": "center", - "cross_axis_alignment": "center", - "main_axis_gap": 0, - "cross_axis_gap": 0, - "padding": 32, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "1:476": { - "id": "1:476", - "name": "body", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "relative", - "width": 632, - "height": 859, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:477": { - "id": "1:477", - "name": "header", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 433, - "height": 51, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:478": { - "id": "1:478", - "name": "name-and-role", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 139, - "height": "auto", - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0, - "layout": "flex", - "direction": "vertical", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 4, - "cross_axis_gap": 4 - }, - "1:479": { - "id": "1:479", - "name": "name", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Madhu sudhan", - "position": "relative", - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": -0.42, - "font_size": 21, - "font_family": "General Sans", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:480": { - "id": "1:480", - "name": "role", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Product Designer", - "position": "relative", - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": -0.24, - "font_size": 12, - "font_family": "General Sans", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:481": { - "id": "1:481", - "name": "contacts", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 340, - "top": 0, - "width": 93, - "height": "auto", - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0, - "layout": "flex", - "direction": "vertical", - "main_axis_alignment": "start", - "cross_axis_alignment": "start", - "main_axis_gap": 4, - "cross_axis_gap": 4 - }, - "1:482": { - "id": "1:482", - "name": "yourwebsite.com", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "yourwebsite.com", - "position": "relative", - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": -0.24, - "font_size": 12, - "font_family": "Inter", - "font_weight": 300, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:483": { - "id": "1:483", - "name": "your@gmail.com", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "your@gmail.com", - "position": "relative", - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": -0.24, - "font_size": 12, - "font_family": "Inter", - "font_weight": 300, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:484": { - "id": "1:484", - "name": "LinkedIn : @id", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "LinkedIn : @id", - "position": "relative", - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": -0.24, - "font_size": 12, - "font_family": "Inter", - "font_weight": 300, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:485": { - "id": "1:485", - "name": "Frame 78", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 93, - "width": 632, - "height": 555, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:486": { - "id": "1:486", - "name": "Vector 3", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "svgpath", - "position": "absolute", - "left": 2, - "top": 0, - "width": 630, - "height": 0, - "paths": [] - }, - "1:487": { - "id": "1:487", - "name": "Frame 76", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 24, - "width": 632, - "height": 531, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:488": { - "id": "1:488", - "name": "Frame 75", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 244, - "height": 239, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:489": { - "id": "1:489", - "name": "Education", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Education", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": -0.36, - "font_size": 18, - "font_family": "General Sans", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:490": { - "id": "1:490", - "name": "Frame 59", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 44, - "width": 244, - "height": 195, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:491": { - "id": "1:491", - "name": "Frame 51", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 244, - "height": 90, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:492": { - "id": "1:492", - "name": "Frame 50", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 115, - "height": 36, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:493": { - "id": "1:493", - "name": "University", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "University", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.3, - "font_size": 15, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:494": { - "id": "1:494", - "name": "Aug 2022 | Location", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Aug 2022 | Location", - "position": "absolute", - "left": 0, - "top": 21, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:495": { - "id": "1:495", - "name": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces ", - "position": "absolute", - "left": 0, - "top": 42, - "width": 244, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.22, - "font_size": 11, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:496": { - "id": "1:496", - "name": "Frame 52", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 105, - "width": 244, - "height": 90, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:497": { - "id": "1:497", - "name": "Frame 50", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 115, - "height": 36, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:498": { - "id": "1:498", - "name": "College", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "College", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.3, - "font_size": 15, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:499": { - "id": "1:499", - "name": "Aug 2022 | Location", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Aug 2022 | Location", - "position": "absolute", - "left": 0, - "top": 21, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:500": { - "id": "1:500", - "name": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces ", - "position": "absolute", - "left": 0, - "top": 42, - "width": 244, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.22, - "font_size": 11, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:501": { - "id": "1:501", - "name": "Frame 74", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 334, - "top": 0, - "width": 298, - "height": 531, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:502": { - "id": "1:502", - "name": "Experience", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Experience", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": -0.36, - "font_size": 18, - "font_family": "General Sans", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:503": { - "id": "1:503", - "name": "Frame 72", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 41, - "width": 298, - "height": 490, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:504": { - "id": "1:504", - "name": "Frame 50", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 298, - "height": 106, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:505": { - "id": "1:505", - "name": "Frame 44", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 188, - "height": 37, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:506": { - "id": "1:506", - "name": "Frame 43", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 188, - "height": 20, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:507": { - "id": "1:507", - "name": "Company", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Company", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.28, - "font_size": 14, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:508": { - "id": "1:508", - "name": "Vector 2", - "active": true, - "locked": false, - "rotation": 4.3711384734024224e-08, - "opacity": 1, - "z_index": 0, - "type": "svgpath", - "position": "absolute", - "left": 69, - "top": 1.5, - "width": 0, - "height": 17, - "paths": [] - }, - "1:509": { - "id": "1:509", - "name": "Product Designer", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Product Designer", - "position": "absolute", - "left": 75, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.28, - "font_size": 14, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:510": { - "id": "1:510", - "name": "Aug 2022 - Present", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Aug 2022 - Present", - "position": "absolute", - "left": 0, - "top": 22, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:511": { - "id": "1:511", - "name": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces for web applications, and developers to create user-friendly interfaces for web applications.", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces for web applications, and developers to create user-friendly interfaces for web applications.", - "position": "absolute", - "left": 0, - "top": 42, - "width": 298, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.22, - "font_size": 11, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:512": { - "id": "1:512", - "name": "Frame 69", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 128, - "width": 298, - "height": 106, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:513": { - "id": "1:513", - "name": "Frame 44", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 188, - "height": 37, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:514": { - "id": "1:514", - "name": "Frame 43", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 188, - "height": 20, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:515": { - "id": "1:515", - "name": "Company", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Company", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.28, - "font_size": 14, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:516": { - "id": "1:516", - "name": "Vector 2", - "active": true, - "locked": false, - "rotation": 4.3711384734024224e-08, - "opacity": 1, - "z_index": 0, - "type": "svgpath", - "position": "absolute", - "left": 69, - "top": 1.5, - "width": 0, - "height": 17, - "paths": [] - }, - "1:517": { - "id": "1:517", - "name": "Product Designer", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Product Designer", - "position": "absolute", - "left": 75, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.28, - "font_size": 14, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:518": { - "id": "1:518", - "name": "Aug 2022 - Present", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Aug 2022 - Present", - "position": "absolute", - "left": 0, - "top": 22, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:519": { - "id": "1:519", - "name": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces for web applications, and developers to create user-friendly interfaces for web applications.", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces for web applications, and developers to create user-friendly interfaces for web applications.", - "position": "absolute", - "left": 0, - "top": 42, - "width": 298, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.22, - "font_size": 11, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:520": { - "id": "1:520", - "name": "Frame 70", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 256, - "width": 298, - "height": 106, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:521": { - "id": "1:521", - "name": "Frame 44", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 188, - "height": 37, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:522": { - "id": "1:522", - "name": "Frame 43", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 188, - "height": 20, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:523": { - "id": "1:523", - "name": "Company", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Company", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.28, - "font_size": 14, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:524": { - "id": "1:524", - "name": "Vector 2", - "active": true, - "locked": false, - "rotation": 4.3711384734024224e-08, - "opacity": 1, - "z_index": 0, - "type": "svgpath", - "position": "absolute", - "left": 69, - "top": 1.5, - "width": 0, - "height": 17, - "paths": [] - }, - "1:525": { - "id": "1:525", - "name": "Product Designer", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Product Designer", - "position": "absolute", - "left": 75, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.28, - "font_size": 14, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:526": { - "id": "1:526", - "name": "Aug 2022 - Present", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Aug 2022 - Present", - "position": "absolute", - "left": 0, - "top": 22, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:527": { - "id": "1:527", - "name": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces for web applications, and developers to create user-friendly interfaces for web applications.", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces for web applications, and developers to create user-friendly interfaces for web applications.", - "position": "absolute", - "left": 0, - "top": 42, - "width": 298, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.22, - "font_size": 11, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:528": { - "id": "1:528", - "name": "Frame 71", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 384, - "width": 298, - "height": 106, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:529": { - "id": "1:529", - "name": "Frame 44", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 188, - "height": 37, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:530": { - "id": "1:530", - "name": "Frame 43", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 188, - "height": 20, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:531": { - "id": "1:531", - "name": "Company", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Company", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.28, - "font_size": 14, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:532": { - "id": "1:532", - "name": "Vector 2", - "active": true, - "locked": false, - "rotation": 4.3711384734024224e-08, - "opacity": 1, - "z_index": 0, - "type": "svgpath", - "position": "absolute", - "left": 69, - "top": 1.5, - "width": 0, - "height": 17, - "paths": [] - }, - "1:533": { - "id": "1:533", - "name": "Product Designer", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Product Designer", - "position": "absolute", - "left": 75, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.28, - "font_size": 14, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:534": { - "id": "1:534", - "name": "Aug 2022 - Present", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Aug 2022 - Present", - "position": "absolute", - "left": 0, - "top": 22, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:535": { - "id": "1:535", - "name": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces for web applications, and developers to create user-friendly interfaces for web applications.", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Collaborated with cross-functional teams including product managers and developers to create user-friendly interfaces for web applications, and developers to create user-friendly interfaces for web applications.", - "position": "absolute", - "left": 0, - "top": 42, - "width": 298, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.22, - "font_size": 11, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:536": { - "id": "1:536", - "name": "Frame 77", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 690, - "width": 631, - "height": 169, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:537": { - "id": "1:537", - "name": "Vector 4", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "svgpath", - "position": "absolute", - "left": 1, - "top": 0, - "width": 630, - "height": 0, - "paths": [] - }, - "1:538": { - "id": "1:538", - "name": "Frame 73", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 31, - "width": 631, - "height": 138, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:539": { - "id": "1:539", - "name": "Skills", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Skills", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": -0.36, - "font_size": 18, - "font_family": "General Sans", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:540": { - "id": "1:540", - "name": "Frame 36", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 281, - "top": 0, - "width": 350, - "height": 138, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:541": { - "id": "1:541", - "name": "Frame 32", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 0, - "top": 0, - "width": 121, - "height": 138, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:542": { - "id": "1:542", - "name": "Design", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Design", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.3, - "font_size": 15, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:543": { - "id": "1:543", - "name": "User Interviews Affinity Diagramming Card Sorting Information Architecture A/B Testing Design Handoff", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "User Interviews\nAffinity Diagramming\nCard Sorting\nInformation Architecture\nA/B Testing\nDesign Handoff", - "position": "absolute", - "left": 0, - "top": 32, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.22, - "font_size": 11, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:544": { - "id": "1:544", - "name": "Frame 33", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 168, - "top": 0, - "width": 58, - "height": 128, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:545": { - "id": "1:545", - "name": "Tools", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Tools", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.3, - "font_size": 15, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:546": { - "id": "1:546", - "name": "Framer Webflow Sketch Adobe XD HTML/CSS Zeplin", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Framer\nWebflow\nSketch\nAdobe XD\nHTML/CSS\nZeplin", - "position": "absolute", - "left": 0, - "top": 32, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.465, - "letter_spacing": 0, - "font_size": 11, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "1:547": { - "id": "1:547", - "name": "Frame 34", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 273, - "top": 0, - "width": 77, - "height": 80, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "1:548": { - "id": "1:548", - "name": "Languages", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Languages", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.4202273559570313, - "letter_spacing": -0.3, - "font_size": 15, - "font_family": "Inter", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "1:549": { - "id": "1:549", - "name": "English Telugu Hindi", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "English\nTelugu\nHindi", - "position": "absolute", - "left": 0, - "top": 32, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.465, - "letter_spacing": 0, - "font_size": 11, - "font_family": "Inter", - "font_weight": 400, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.6823529411764706, - "g": 0.6823529411764706, - "b": 0.6823529411764706, - "a": 1.0 - } - } - ] - }, - "resume": { - "type": "scene", - "id": "resume", - "name": "resume", - "active": true, - "locked": false, - "constraints": { - "children": "single" - }, - "guides": [], - "edges": [], - "background_color": { - "r": 0.2, - "g": 0.2, - "b": 0.2, - "a": 1 - } - } - }, - "links": { - "1:475": [ - "1:476" - ], - "1:476": [ - "1:477", - "1:485", - "1:536" - ], - "1:477": [ - "1:478", - "1:481" - ], - "1:478": [ - "1:479", - "1:480" - ], - "1:481": [ - "1:482", - "1:483", - "1:484" - ], - "1:485": [ - "1:486", - "1:487" - ], - "1:487": [ - "1:488", - "1:501" - ], - "1:488": [ - "1:489", - "1:490" - ], - "1:490": [ - "1:491", - "1:496" - ], - "1:491": [ - "1:492", - "1:495" - ], - "1:492": [ - "1:493", - "1:494" - ], - "1:496": [ - "1:497", - "1:500" - ], - "1:497": [ - "1:498", - "1:499" - ], - "1:501": [ - "1:502", - "1:503" - ], - "1:503": [ - "1:504", - "1:512", - "1:520", - "1:528" - ], - "1:504": [ - "1:505", - "1:511" - ], - "1:505": [ - "1:506", - "1:510" - ], - "1:506": [ - "1:507", - "1:508", - "1:509" - ], - "1:512": [ - "1:513", - "1:519" - ], - "1:513": [ - "1:514", - "1:518" - ], - "1:514": [ - "1:515", - "1:516", - "1:517" - ], - "1:520": [ - "1:521", - "1:527" - ], - "1:521": [ - "1:522", - "1:526" - ], - "1:522": [ - "1:523", - "1:524", - "1:525" - ], - "1:528": [ - "1:529", - "1:535" - ], - "1:529": [ - "1:530", - "1:534" - ], - "1:530": [ - "1:531", - "1:532", - "1:533" - ], - "1:536": [ - "1:537", - "1:538" - ], - "1:538": [ - "1:539", - "1:540" - ], - "1:540": [ - "1:541", - "1:544", - "1:547" - ], - "1:541": [ - "1:542", - "1:543" - ], - "1:544": [ - "1:545", - "1:546" - ], - "1:547": [ - "1:548", - "1:549" - ], - "resume": [ - "1:475" - ] - }, - "scenes_ref": [ - "resume" - ], - "bitmaps": {}, - "images": {}, - "properties": {} - } -} \ No newline at end of file diff --git a/editor/public/examples/canvas/slides-01.grida b/editor/public/examples/canvas/slides-01.grida deleted file mode 100644 index c1e1215da2..0000000000 --- a/editor/public/examples/canvas/slides-01.grida +++ /dev/null @@ -1,1644 +0,0 @@ -{ - "version": "0.0.4-beta+20251209", - "document": { - "nodes": { - "1": { - "type": "scene", - "id": "1", - "name": "Slide 1", - "active": true, - "locked": false, - "constraints": { - "children": "single" - }, - "guides": [], - "edges": [], - "background_color": { - "r": 0.96, - "g": 0.96, - "b": 0.96, - "a": 1 - } - }, - "2": { - "type": "scene", - "id": "2", - "name": "Slide 2", - "active": true, - "locked": false, - "constraints": { - "children": "single" - }, - "guides": [], - "edges": [], - "background_color": { - "r": 0.96, - "g": 0.96, - "b": 0.96, - "a": 1 - } - }, - "422:1966": { - "id": "422:1966", - "name": "root", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "relative", - "left": 0, - "top": 0, - "width": 960, - "height": 540, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9764705882352941, - "b": 0.9058823529411765, - "a": 1.0 - } - } - ] - }, - "422:1967": { - "id": "422:1967", - "name": "texture", - "active": true, - "locked": true, - "rotation": 0, - "opacity": 0.20000000298023224, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/7126/029c/b3aaa2ad36f9ef2ed47a54094e63527a?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=nvkC4xwQX1KZyTw1NH1hLrWkLi5fCbadEtJdK~Zw4L141iq0bH03PbglaOnYpGOMHmhKjag4IsTD2AXJezHzLiYrx1avcmUKhE7DcflBQCglmyPcqiShrtJciyfz5ps6H8l3Srd3lk4kEwixDG76yAREoTe4LJ4dNhS1Faw8A9pO2ZepfXMeL9~yzy~ijeYdeMF9pYG-fZDB9bc4CZYtSDJ6CgY1mTnu3Pcl~3h6WJvugQFXrC7qKVfUvr9NzZx6cTU-Vy3dsKDFT8XpBEYg-jgODsJn5SGBrBUbjUh7w1wHwz3Gw2607DfmD5O3ZqEEUvBgCg3PUtig96YoUSYQAA__", - "position": "absolute", - "left": 0, - "top": 0, - "width": 960, - "height": 540, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "422:1968": { - "id": "422:1968", - "name": "title", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "XYZ 스타트업 \n제품 론칭 디지털 캠페인", - "position": "absolute", - "left": 137, - "top": 40, - "right": 635, - "bottom": 450, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.25, - "letter_spacing": 0, - "font_size": 20, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.4980392156862745, - "b": 0.0, - "a": 1.0 - } - } - ] - }, - "422:1969": { - "id": "422:1969", - "name": "date", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "2022.01 - 2022.06", - "position": "absolute", - "left": 137, - "top": 97.5, - "right": 737, - "bottom": 426.5, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.6059999084472656, - "letter_spacing": 0, - "font_size": 10, - "font_family": "Pretendard", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.5 - } - } - ] - }, - "422:1970": { - "id": "422:1970", - "name": "badge", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 50, - "top": 40, - "width": 54, - "height": 16, - "style": { - "padding": "1px 6px 1px 6px" - }, - "corner_radius": 499.5, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.17647058823529413, - "g": 0.17647058823529413, - "b": 0.17647058823529413, - "a": 1.0 - } - } - ] - }, - "422:1971": { - "id": "422:1971", - "name": "label", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "CASE 2", - "position": "absolute", - "left": 6, - "top": 1, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9764705882352941, - "b": 0.9058823529411765, - "a": 1.0 - } - } - ] - }, - "422:1972": { - "id": "422:1972", - "name": "header-description", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "XYZ 스타트업은 신제품인 기능성 음료를 출시하며 초기 고객층 확보를 목표로 디지털 캠페인을 기획했습니다. 기존 브랜드 인지도가 낮아 초기 고객 유치가 중요한 과제였으며, 제품의 기능성 및 트렌디함을 강조해야 했습니다.", - "position": "absolute", - "top": 40, - "right": 50, - "width": 280.5, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.65, - "letter_spacing": 0.1, - "font_size": 10, - "font_family": "Pretendard", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.8999999761581421 - } - } - ] - }, - "422:1973": { - "id": "422:1973", - "name": "picture", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "top": 166, - "width": 280.5, - "height": 324, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0, - "right": 50.8046875, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "422:2015": { - "id": "422:2015", - "name": "img", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/579e/a586/638fcd3addb03e7c0eeed0bd1293d302?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=nEtYEaifvPkisDLEtjNr4DGZrfsMthK-MJRtEpM6Dhdra84kN0aSj0ppj7YyE~qXSChXbJFvYPp2k4iJp7NEleF4WHfn0I-ZZ5bKsQC0FHeFKZVv5Hqvl-it6kocqILyoj9t8OH77acB3lHthGTQzertJaTr2zuPN5LTZgnyJ3FnOnMfShmzucqjRiKajjTGTebCILFKN6LwB4QSeY~aLpBtKbGNFhwDEVhNkozFVdT~mbwvJ2R-8jbQQtxaabOk4qZrgcqj6qX-5soAFCn7mcnD4Hts6uAcqfowyr14KEtBqqwfRXtnqbEQMYT4xKVzOQp5GWWCItbBoHRZjUJm7w__", - "position": "absolute", - "left": 0.5, - "top": -13, - "width": 280, - "height": 350, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "422:1974": { - "id": "422:1974", - "name": "card-1", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 56, - "top": 166, - "width": 236, - "height": 132, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - }, - "border_style": "dashed" - }, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 20 - }, - "422:1975": { - "id": "422:1975", - "name": "content", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "트렌드 분석과 주요 경쟁사 분석을 통해 젊은 소비자들이 어떤 브랜드 이미지를 선호하는지 파악했습니다. 설문조사와 포커스 그룹 인터뷰를 통해 타겟 고객의 니즈를 확인했습니다.", - "position": "absolute", - "left": 19, - "top": 46, - "right": 19, - "bottom": 20, - "width": 198, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.5, - "letter_spacing": 0.11, - "font_size": 11, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "422:1976": { - "id": "422:1976", - "name": "badge", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 77, - "top": 12.5, - "width": 82, - "height": 16, - "style": { - "padding": "1px 6px 1px 6px" - }, - "corner_radius": 499.5, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.17647058823529413, - "g": 0.17647058823529413, - "b": 0.17647058823529413, - "a": 1.0 - } - } - ] - }, - "422:1977": { - "id": "422:1977", - "name": "label", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "STRATEGY 1", - "position": "absolute", - "left": 6, - "top": 1, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9764705882352941, - "b": 0.9058823529411765, - "a": 1.0 - } - } - ] - }, - "422:1978": { - "id": "422:1978", - "name": "card-2", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 313, - "top": 166, - "width": 236, - "height": 132, - "border": { - "border_width": 1, - "border_color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - }, - "border_style": "dashed" - }, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 20 - }, - "422:1979": { - "id": "422:1979", - "name": "content", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "로고 및 패키지 디자인을 현대적이고 미니멀한 스타일로 재구성하여 트렌디한 이미지로 변화시키고, 이를 SNS에 노출했습니다.", - "position": "absolute", - "left": 19, - "top": 62.5, - "right": 19, - "bottom": 19.5, - "width": 198, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.5, - "letter_spacing": 0.11, - "font_size": 11, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "422:1980": { - "id": "422:1980", - "name": "badge", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 76.5, - "top": 12.5, - "width": 83, - "height": 16, - "style": { - "padding": "1px 6px 1px 6px" - }, - "corner_radius": 499.5, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.17647058823529413, - "g": 0.17647058823529413, - "b": 0.17647058823529413, - "a": 1.0 - } - } - ] - }, - "422:1981": { - "id": "422:1981", - "name": "label", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "STRATEGY 2", - "position": "absolute", - "left": 6, - "top": 1, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9764705882352941, - "b": 0.9058823529411765, - "a": 1.0 - } - } - ] - }, - "422:1982": { - "id": "422:1982", - "name": "icon", - "active": true, - "locked": false, - "rotation": 1.5707963705062848, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 310.66650390625, - "top": 318, - "width": 16.66666603088379, - "height": 16.66666603088379, - "style": {}, - "corner_radius": 0 - }, - "422:1983": { - "id": "422:1983", - "name": "Vector", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "svgpath", - "position": "absolute", - "left": 0, - "top": 0, - "width": 16.66666603088379, - "height": 16.66666603088379, - "paths": [ - { - "d": "M16.6667 8.33333C16.6667 3.73333 12.9333 0 8.33333 0C3.73333 0 0 3.73333 0 8.33333C0 12.9333 3.73333 16.6667 8.33333 16.6667C12.9333 16.6667 16.6667 12.9333 16.6667 8.33333ZM8.33333 9.16667L5 9.16667L5 7.5L8.33333 7.5L8.33333 5L11.6667 8.33333L8.33333 11.6667L8.33333 9.16667Z", - "fill_rule": "nonzero" - } - ], - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.17647058823529413, - "g": 0.17647058823529413, - "b": 0.17647058823529413, - "a": 1.0 - } - } - ] - }, - "422:1984": { - "id": "422:1984", - "name": "card-3", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 149, - "top": 358, - "width": 307, - "height": 132, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 20, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.17647058823529413, - "g": 0.17647058823529413, - "b": 0.17647058823529413, - "a": 1.0 - } - } - ] - }, - "422:1985": { - "id": "422:1985", - "name": "content", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "리브랜딩 방향을 설정하고, 데이터 기반의 시장 조사를 통해 핵심 메시지를 도출했습니다. 인스타그램 광고 캠페인을 설계하여 광고의 타겟팅과 고객 도달율을 최적화하는 역할을 맡았습니다. ", - "position": "absolute", - "left": 29, - "top": 45, - "right": 29, - "bottom": 21, - "width": 249, - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.5, - "letter_spacing": 0.11, - "font_size": 11, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 0.8999999761581421 - } - } - ] - }, - "422:1986": { - "id": "422:1986", - "name": "badge", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 103.5, - "top": 12.5, - "width": 100, - "height": 16, - "style": { - "padding": "1px 6px 1px 6px" - }, - "corner_radius": 499.5, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 0.9764705882352941, - "b": 0.9058823529411765, - "a": 1.0 - } - } - ] - }, - "422:1987": { - "id": "422:1987", - "name": "label", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "PERFORMANCE", - "position": "absolute", - "left": 6, - "top": 1, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.17647058823529413, - "g": 0.17647058823529413, - "b": 0.17647058823529413, - "a": 1.0 - } - } - ] - }, - "421:293": { - "id": "421:293", - "name": "01-화려한-T60-cover", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "relative", - "left": 0, - "top": 0, - "width": 960, - "height": 540, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:294": { - "id": "421:294", - "name": "Frame 268", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 65, - "top": 145, - "width": 250, - "height": 250, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": { - "top_left_radius": 30, - "top_right_radius": 5, - "bottom_right_radius": 5, - "bottom_left_radius": 5 - }, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.9725490196078431, - "g": 0.9725490196078431, - "b": 0.9725490196078431, - "a": 1.0 - } - } - ] - }, - "421:295": { - "id": "421:295", - "name": "ABC 화장품 리브랜딩 캠페인", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "ABC 화장품 \n리브랜딩 캠페인", - "position": "absolute", - "left": 25, - "top": 164.5, - "right": 124, - "bottom": 47.5, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 16, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.09803921568627451, - "g": 0.5058823529411764, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:296": { - "id": "421:296", - "name": "Case 1", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Case 1", - "position": "absolute", - "left": 25, - "top": 25, - "right": 186, - "bottom": 210, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12.5, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.09803921568627451, - "g": 0.5058823529411764, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:297": { - "id": "421:297", - "name": "2022.01 - 2022.06", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "2022.01 - 2022.06", - "position": "absolute", - "left": 25, - "top": 209, - "right": 139, - "bottom": 25, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.6059999084472656, - "letter_spacing": 0, - "font_size": 10, - "font_family": "Pretendard", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.5 - } - } - ] - }, - "421:298": { - "id": "421:298", - "name": "Frame 397", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 119.5, - "top": 25, - "width": 105.5, - "height": 105.5, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 5, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:299": { - "id": "421:299", - "name": "person holding blue plastic container", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/506f/d6fc/5fea7fd595c785b552d7bc8d58fd9a65?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=glgjrjDQ8zkIU2AwIThGaut7Yj3410~dTDLuFgaG~OGlsYcMKsPoWLZuVdUMKwxr97AT5urYURm0iQmgS1MKrcGFRVXGPlO3p4mmerJRdmHqHph5l5cVzkIZDQwzeoCdoZaoNLm8vpWYfvIP5R26c8oBIJ85Ar9bfwEwTXvrVpPz6tZIoij8kTjYrzbiBQ3eeLjT5HDankHD3Wx0lPXckHfowcvl3WTcCy9eWKjyUY6IYdBLDQAkObO67J3ACvgXbhcsN7X2JvdmZsSQcPMchHCEMGiIrbtPX5NSj7aQDW026zL48~psBfjxnXmQOs1X6v2n2xd1iNE7OSG95jEZ5g__", - "position": "absolute", - "left": -70, - "top": -74.5, - "width": 175.5, - "height": 254, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "421:300": { - "id": "421:300", - "name": "Frame 270", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 645, - "top": 145, - "width": 250, - "height": 250, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": { - "top_left_radius": 30, - "top_right_radius": 5, - "bottom_right_radius": 5, - "bottom_left_radius": 5 - }, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.9725490196078431, - "g": 0.9725490196078431, - "b": 0.9725490196078431, - "a": 1.0 - } - } - ] - }, - "421:301": { - "id": "421:301", - "name": "XYZ 스타트업 제품 론칭 디지털 캠페인", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "XYZ 스타트업 \n제품 론칭 디지털 캠페인", - "position": "absolute", - "left": 25, - "top": 164.5, - "right": 75, - "bottom": 47.5, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 16, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.09803921568627451, - "g": 0.5058823529411764, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:302": { - "id": "421:302", - "name": "2022.01 - 2022.06", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "2022.01 - 2022.06", - "position": "absolute", - "left": 25, - "top": 209, - "right": 139, - "bottom": 25, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.6059999084472656, - "letter_spacing": 0, - "font_size": 10, - "font_family": "Pretendard", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 0.5 - } - } - ] - }, - "421:303": { - "id": "421:303", - "name": "Frame 397", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 119.5, - "top": 25, - "width": 105.5, - "height": 105.5, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 5, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:304": { - "id": "421:304", - "name": "black LG monitor and white keyboard", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/579e/a586/638fcd3addb03e7c0eeed0bd1293d302?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=nEtYEaifvPkisDLEtjNr4DGZrfsMthK-MJRtEpM6Dhdra84kN0aSj0ppj7YyE~qXSChXbJFvYPp2k4iJp7NEleF4WHfn0I-ZZ5bKsQC0FHeFKZVv5Hqvl-it6kocqILyoj9t8OH77acB3lHthGTQzertJaTr2zuPN5LTZgnyJ3FnOnMfShmzucqjRiKajjTGTebCILFKN6LwB4QSeY~aLpBtKbGNFhwDEVhNkozFVdT~mbwvJ2R-8jbQQtxaabOk4qZrgcqj6qX-5soAFCn7mcnD4Hts6uAcqfowyr14KEtBqqwfRXtnqbEQMYT4xKVzOQp5GWWCItbBoHRZjUJm7w__", - "position": "absolute", - "left": -39, - "top": -62.5, - "width": 184, - "height": 230, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "421:305": { - "id": "421:305", - "name": "Case 3", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Case 3", - "position": "absolute", - "left": 25, - "top": 25, - "right": 184, - "bottom": 210, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12.5, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.09803921568627451, - "g": 0.5058823529411764, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:306": { - "id": "421:306", - "name": "Frame 269", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 355, - "top": 145, - "width": 250, - "height": 250, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": { - "top_left_radius": 30, - "top_right_radius": 5, - "bottom_right_radius": 5, - "bottom_left_radius": 5 - }, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0.09803921568627451, - "g": 0.5058823529411764, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:307": { - "id": "421:307", - "name": "DEF 식품 브랜드 ‘건강한 간식’ 캠페인", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "DEF 식품 브랜드 \n‘건강한 간식’ 캠페인", - "position": "absolute", - "left": 25, - "top": 164.5, - "right": 98, - "bottom": 47.5, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 16, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:308": { - "id": "421:308", - "name": "2022.01 - 2022.06", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "2022.01 - 2022.06", - "position": "absolute", - "left": 25, - "top": 209, - "right": 139, - "bottom": 25, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.6059999084472656, - "letter_spacing": 0, - "font_size": 10, - "font_family": "Pretendard", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 0.5 - } - } - ] - }, - "421:309": { - "id": "421:309", - "name": "Frame 397", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 119.5, - "top": 25, - "width": 105.5, - "height": 105.5, - "style": { - "overflow": "clip", - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 5, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:310": { - "id": "421:310", - "name": "a bowl of chips falling into the air", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "image", - "src": "https://s3-alpha-sig.figma.com/img/43b8/ba3a/178f5701a86515269063a4c2694ac6c8?Expires=1733097600&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4&Signature=DwN1t2BvIqop6zl-aGhNkJv6DIx8upRwV5OBdftLaa7d9k9P82xeslSPp4yTJVc9p9IirNtn8eg-eClvcD1yKV5OCOI2SBRbqIwXQBTOdntFY~TvIvlxNP8VKwqVElC~88TfzBypqP9ZHH1toGxi~MQwDIeTvLNXOImlrxS1-qhhak8xiLGiAZqXem4svC2orNY4V6rVDmLviRf6P7C-ge5QDctqVE4wz01cGHwJo~422QHZbTRwh7BwRarg84sZXLy3bwXm7prtGg7AYVO8t4j5uDkkHepbpf-sqRG3zF7eTRU1PzDt3NmLSCkG-WDn0Xb9Ky2A71YYC~7KsIdLmQ__", - "position": "absolute", - "left": -58.5, - "top": -94.5, - "width": 222, - "height": 333, - "corner_radius": 0, - "fit": "cover", - "style": {} - }, - "421:311": { - "id": "421:311", - "name": "Case 2", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Case 2", - "position": "absolute", - "left": 25, - "top": 25, - "right": 185, - "bottom": 210, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12.5, - "font_family": "Pretendard", - "font_weight": 600, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - } - } - ] - }, - "421:312": { - "id": "421:312", - "name": "Frame 11", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "container", - "expanded": false, - "position": "absolute", - "left": 45, - "top": 40, - "width": 63.5, - "height": 15, - "style": { - "padding": "0px 0px 0px 0px" - }, - "corner_radius": 0 - }, - "421:313": { - "id": "421:313", - "name": "Preview", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "Preview", - "position": "absolute", - "left": 0, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12.5, - "font_family": "Pretendard", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - }, - "421:314": { - "id": "421:314", - "name": "/", - "active": true, - "locked": false, - "rotation": 0, - "opacity": 1, - "z_index": 0, - "type": "text", - "text": "/", - "position": "absolute", - "left": 58.5, - "top": 0, - "width": "auto", - "height": "auto", - "style": {}, - "text_align": "left", - "text_align_vertical": "top", - "text_decoration_line": "none", - "line_height": 1.2, - "letter_spacing": 0, - "font_size": 12.5, - "font_family": "Pretendard", - "font_weight": 500, - "fill_paints": [ - { - "type": "solid", - "active": true, - "color": { - "r": 0, - "g": 0, - "b": 0, - "a": 1 - } - } - ] - } - }, - "links": { - "1": [ - "422:1966" - ], - "2": [ - "421:293" - ], - "422:1966": [ - "422:1967", - "422:1968", - "422:1969", - "422:1970", - "422:1972", - "422:1973", - "422:1974", - "422:1978", - "422:1982", - "422:1984" - ], - "422:1970": [ - "422:1971" - ], - "422:1973": [ - "422:2015" - ], - "422:1974": [ - "422:1975", - "422:1976" - ], - "422:1976": [ - "422:1977" - ], - "422:1978": [ - "422:1979", - "422:1980" - ], - "422:1980": [ - "422:1981" - ], - "422:1982": [ - "422:1983" - ], - "422:1984": [ - "422:1985", - "422:1986" - ], - "422:1986": [ - "422:1987" - ], - "421:293": [ - "421:294", - "421:300", - "421:306", - "421:312" - ], - "421:294": [ - "421:295", - "421:296", - "421:297", - "421:298" - ], - "421:298": [ - "421:299" - ], - "421:300": [ - "421:301", - "421:302", - "421:303", - "421:305" - ], - "421:303": [ - "421:304" - ], - "421:306": [ - "421:307", - "421:308", - "421:309", - "421:311" - ], - "421:309": [ - "421:310" - ], - "421:312": [ - "421:313", - "421:314" - ] - }, - "scenes_ref": [ - "1", - "2" - ], - "entry_scene_id": "1", - "bitmaps": {}, - "images": {}, - "properties": {} - } -} \ No newline at end of file diff --git a/editor/scaffolds/editor/editor.tsx b/editor/scaffolds/editor/editor.tsx index cc72720287..8f30fc9ef8 100644 --- a/editor/scaffolds/editor/editor.tsx +++ b/editor/scaffolds/editor/editor.tsx @@ -159,7 +159,7 @@ async function saveHostedGridaCanvasDocument( .update({ data: document ? ({ - __schema_version: "0.0.4-beta+20251209", + __schema_version: "0.89.0-beta+20251219", ...document, } satisfies CanvasDocumentSnapshotSchema as {}) : null, diff --git a/editor/scaffolds/editor/init.ts b/editor/scaffolds/editor/init.ts index 09c7078447..0fcda9779f 100644 --- a/editor/scaffolds/editor/init.ts +++ b/editor/scaffolds/editor/init.ts @@ -316,7 +316,7 @@ function __init_canvas( // check the version if ( (data as SchemaMayVaryDocumentServerObject).__schema_version !== - "0.0.4-beta+20251209" + "0.89.0-beta+20251219" ) { return { __schema_version: (data as SchemaMayVaryDocumentServerObject) @@ -349,7 +349,7 @@ function __init_form_start_page_state( // check the version if ( - (data as FormStartPageSchema).__schema_version !== "0.0.4-beta+20251209" + (data as FormStartPageSchema).__schema_version !== "0.89.0-beta+20251219" ) { return { __schema_version: (data as FormStartPageSchema).__schema_version, diff --git a/editor/scaffolds/editor/sync/agent-startpage.sync.tsx b/editor/scaffolds/editor/sync/agent-startpage.sync.tsx index 54fceda4f0..88487f6c2f 100644 --- a/editor/scaffolds/editor/sync/agent-startpage.sync.tsx +++ b/editor/scaffolds/editor/sync/agent-startpage.sync.tsx @@ -30,7 +30,7 @@ export function useSyncFormAgentStartPage() { .update({ start_page: debounced ? ({ - __schema_version: "0.0.4-beta+20251209", + __schema_version: "0.89.0-beta+20251219", template_id: startpagestate!.template_id, ...debounced, } satisfies FormStartPageSchema as {}) diff --git a/editor/scaffolds/sidecontrol/controls/padding.tsx b/editor/scaffolds/sidecontrol/controls/padding.tsx index 0d3358b43e..c33b876743 100644 --- a/editor/scaffolds/sidecontrol/controls/padding.tsx +++ b/editor/scaffolds/sidecontrol/controls/padding.tsx @@ -1,4 +1,4 @@ -import React, { useState, useMemo } from "react"; +import React, { useState } from "react"; import InputPropertyNumber from "../ui/number"; import { WorkbenchUI } from "@/components/workbench"; import { AllSidesIcon } from "@radix-ui/react-icons"; @@ -6,61 +6,41 @@ import { Toggle } from "@/components/ui/toggle"; import { cn } from "@/components/lib/utils"; import grida from "@grida/schema"; -type Padding = grida.program.nodes.i.IPadding["padding"]; +type Padding = grida.program.nodes.i.IPadding; export function PaddingControl({ - value = 0, + value, onValueCommit, }: { - value: Padding; + value?: Padding; onValueCommit?: (value: Padding) => void; }) { const [showIndividual, setShowIndividual] = useState(false); - // Determine if current value is uniform or individual - const isUniform = typeof value === "number"; - - // Get individual padding values - const paddingValues = useMemo(() => { - if (typeof value === "number") { - return { - top: value, - right: value, - bottom: value, - left: value, - }; - } - return { - top: value.padding_top ?? 0, - right: value.padding_right ?? 0, - bottom: value.padding_bottom ?? 0, - left: value.padding_left ?? 0, - }; - }, [value]); + const paddingValues = { + top: value?.padding_top ?? 0, + right: value?.padding_right ?? 0, + bottom: value?.padding_bottom ?? 0, + left: value?.padding_left ?? 0, + }; - // Get uniform value (if all sides are equal) - const uniformValue = useMemo(() => { - if (isUniform) return value as number; - const { top, right, bottom, left } = paddingValues; - if (top === right && right === bottom && bottom === left) { - return top; - } - return undefined; - }, [isUniform, value, paddingValues]); + const { top, right, bottom, left } = paddingValues; + const uniformValue = + top === right && right === bottom && bottom === left ? top : undefined; - const placeholder = useMemo(() => { - if (isUniform) return String(uniformValue ?? 0); - return [ - paddingValues.left ?? 0, - paddingValues.top ?? 0, - paddingValues.right ?? 0, - paddingValues.bottom ?? 0, - ].join(", "); - }, [isUniform, uniformValue, paddingValues]); + const placeholder = + uniformValue !== undefined + ? String(uniformValue) + : [left, top, right, bottom].join(", "); const handleUniformChange = (newValue: number | undefined) => { if (newValue === undefined) return; - onValueCommit?.(newValue); + onValueCommit?.({ + padding_top: newValue, + padding_right: newValue, + padding_bottom: newValue, + padding_left: newValue, + }); }; const handleIndividualChange = ( diff --git a/editor/scaffolds/sidecontrol/sidecontrol-node-selection.tsx b/editor/scaffolds/sidecontrol/sidecontrol-node-selection.tsx index 3887ec7af1..73faa48a07 100644 --- a/editor/scaffolds/sidecontrol/sidecontrol-node-selection.tsx +++ b/editor/scaffolds/sidecontrol/sidecontrol-node-selection.tsx @@ -925,9 +925,6 @@ function ModeNodeProperties({ // border: node.border, - // - padding: node.padding, - // layout: node.layout, direction: node.direction, @@ -969,8 +966,6 @@ function ModeNodeProperties({ // border, // - padding, - // layout, direction, main_axis_alignment, @@ -1120,10 +1115,7 @@ function ModeNodeProperties({ onValueCommit={actions.gap} /> - + @@ -1658,6 +1650,42 @@ function SectionText({ node_id }: { node_id: string }) { ); } +function PropertyPaddingLine({ node_id }: { node_id: string }) { + const actions = useNodeActions(node_id)!; + const { + padding_top, + padding_right, + padding_bottom, + padding_left, + type, + layout, + } = useNodeState(node_id, (node) => ({ + padding_top: node.padding_top ?? 0, + padding_right: node.padding_right ?? 0, + padding_bottom: node.padding_bottom ?? 0, + padding_left: node.padding_left ?? 0, + type: node.type, + layout: node.layout, + })); + + const is_flex_container = type === "container" && layout === "flex"; + + return ( + + ); +} + function SectionDimension({ node_id }: { node_id: string }) { const instance = useCurrentEditor(); const { width, height, layout_target_aspect_ratio } = useNodeState( diff --git a/fixtures/test-figma/rest-api/L0/vector-frame.md b/fixtures/test-figma/rest-api/L0/vector-frame.md new file mode 100644 index 0000000000..50b4377567 --- /dev/null +++ b/fixtures/test-figma/rest-api/L0/vector-frame.md @@ -0,0 +1,109 @@ +![vector-frame](./vector-frame.png) + +## Overview + +This fixture contains a Figma REST API response for a **FRAME** node containing a single **VECTOR** node. The vector path has **self-intersection**, which ensures that both `fillGeometry` and `strokeGeometry` are present in the API response and contain different SVG path data. + +## API Request + +To obtain this response, the Figma REST API request must include the `geometry=paths` parameter: + +``` +GET /v1/files/{file_key}/nodes?ids={node_id}&geometry=paths +``` + +Without this parameter, the `fillGeometry` and `strokeGeometry` fields will not be present in the response. + +## Structure + +- **Root Node**: `FRAME` (500×500px, white background) + - **Child Node**: `VECTOR` ("Vector 1") + - Position: `(59, 80)` relative to frame + - Size: `382.95 × 339.63` px + - Fill: Light gray solid (`rgb(217, 217, 217)`) + - Stroke: Black solid (`rgb(0, 0, 0)`, 1px weight, center aligned) + +## Key Characteristics + +### HasGeometryTrait Implementation + +This fixture demonstrates the `HasGeometryTrait` pattern from the Figma REST API spec. Nodes with this trait (VECTOR, STAR, REGULAR_POLYGON, etc.) can have: + +- `fillGeometry`: Array of SVG path strings representing fill regions +- `strokeGeometry`: Array of SVG path strings representing stroke outlines + +### Self-Intersecting Path + +The vector path self-intersects, which causes Figma to generate **different** SVG paths for fill and stroke: + +- **Fill Geometry**: Single path representing the filled region + + ```svg + M114.167 250.184C204.314 75.195 337.941 -115.992 377 88.1324C417.62 300.417 241.402 290.622 114.167 250.184Z + ``` + +- **Stroke Geometry**: More complex path representing the stroked outline (accounts for stroke width) + ```svg + M377 88.1324L377.491 88.0384L377 88.1324ZM71 339.632L71.4559 339.838C83.9517 312.08... + ``` + +### Original Vector Network Data + +The original vector network data (vertices, segments, regions) is **not included** in the REST API response. This data is only available through: + +- Figma Plugin API (`vectorNetwork` property) +- Figma `.fig` file format (Kiwi schema) + +For reference, here is the original vector network structure that would be present in other Figma APIs: + +```json +{ + "vertices": [ + { + "x": 71, + "y": 339.63238525390625, + "strokeCap": "NONE", + "strokeJoin": "MITER", + "cornerRadius": 0, + "handleMirroring": "NONE" + }, + { + "x": 377, + "y": 88.13240051269531, + "strokeCap": "NONE", + "strokeJoin": "MITER", + "cornerRadius": 0, + "handleMirroring": "ANGLE" + }, + { + "x": 0, + "y": 197.63232421875, + "strokeCap": "NONE", + "strokeJoin": "MITER", + "cornerRadius": 0, + "handleMirroring": "NONE" + } + ], + "segments": [ + { + "start": 0, + "end": 1, + "tangentStart": { "x": 82.83333587646484, "y": -184 }, + "tangentEnd": { "x": -46, "y": -240.39999389648438 } + }, + { + "start": 1, + "end": 2, + "tangentStart": { "x": 57.5, "y": 300.5 }, + "tangentEnd": { "x": 57.5, "y": 46.5 } + } + ], + "regions": [] +} +``` + +## Notes + +- The REST API response does not include the original vector network data (vertices, segments, regions) +- Both `fillGeometry` and `strokeGeometry` are present due to the self-intersecting path +- The frame also implements `HasGeometryTrait` (has its own `fillGeometry` for the rectangular frame) diff --git a/fixtures/test-figma/rest-api/L0/vector-frame.png b/fixtures/test-figma/rest-api/L0/vector-frame.png new file mode 100644 index 0000000000..63d76b52b9 Binary files /dev/null and b/fixtures/test-figma/rest-api/L0/vector-frame.png differ diff --git a/fixtures/test-figma/rest-api/L0/vector-frame.response.json b/fixtures/test-figma/rest-api/L0/vector-frame.response.json new file mode 100644 index 0000000000..64122d3e54 --- /dev/null +++ b/fixtures/test-figma/rest-api/L0/vector-frame.response.json @@ -0,0 +1,166 @@ +{ + "name": "dummy", + "lastModified": "2025-12-19T14:13:50Z", + "version": "2299265164375452531", + "role": "owner", + "editorType": "figma", + "linkAccess": "view", + "nodes": { + "1038:24": { + "document": { + "id": "1038:24", + "name": "vector-frame", + "type": "FRAME", + "scrollBehavior": "SCROLLS", + "children": [ + { + "id": "1038:25", + "name": "Vector 1", + "type": "VECTOR", + "scrollBehavior": "SCROLLS", + "blendMode": "PASS_THROUGH", + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.85098040103912354, + "g": 0.85098040103912354, + "b": 0.85098040103912354, + "a": 1.0 + } + } + ], + "fillOverrideTable": { + "1": null + }, + "fillGeometry": [ + { + "path": "M114.167 250.184C204.314 75.195 337.941 -115.992 377 88.1324C417.62 300.417 241.402 290.622 114.167 250.184Z", + "windingRule": "NONZERO" + } + ], + "strokes": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } + } + ], + "strokeWeight": 1.0, + "strokeAlign": "CENTER", + "strokeGeometry": [ + { + "path": "M377 88.1324L377.491 88.0384L377 88.1324ZM71 339.632L71.4559 339.838C83.9517 312.08 98.5951 281.502 114.611 250.413L114.167 250.184L113.722 249.955C97.6978 281.06 83.0468 311.654 70.5441 339.427L71 339.632ZM114.167 250.184L114.611 250.413C159.687 162.915 215.594 71.45 265.074 27.3639C289.842 5.29598 312.808 -4.73206 331.94 3.19206C341.514 7.15753 350.216 15.6473 357.75 29.5504C365.285 43.4544 371.632 62.7384 376.509 88.2264L377 88.1324L377.491 88.0384C372.603 62.4952 366.231 43.1016 358.629 29.074C351.027 15.0455 342.177 6.34971 332.323 2.26817C312.597 -5.90175 289.198 4.53043 264.409 26.6173C214.774 70.8409 158.795 162.463 113.722 249.955L114.167 250.184ZM377 88.1324L376.509 88.2264C386.653 141.24 383.244 180.317 370.506 208.491C357.775 236.649 335.698 253.978 308.365 263.457C253.646 282.432 177.919 269.921 114.318 249.707L114.167 250.184L114.015 250.66C177.65 270.885 253.649 283.49 308.693 264.402C336.241 254.848 358.555 237.35 371.417 208.903C384.271 180.473 387.657 141.167 377.491 88.0384L377 88.1324ZM114.167 250.184L114.318 249.707C61.4649 232.909 17.1215 210.835 0.314405 197.244L0 197.632L-0.314405 198.021C16.6382 211.731 61.123 233.85 114.015 250.66L114.167 250.184Z", + "windingRule": "NONZERO" + } + ], + "absoluteBoundingBox": { + "x": 5353.0, + "y": -3429.0, + "width": 382.94674682617188, + "height": 339.63238525390625 + }, + "absoluteRenderBounds": { + "x": 5352.685546875, + "y": -3429.50146484375, + "width": 383.76123046875, + "height": 340.339111328125 + }, + "constraints": { + "vertical": "CENTER", + "horizontal": "CENTER" + }, + "relativeTransform": [ + [1.0, 0.0, 59.0], + [0.0, 1.0, 80.0] + ], + "size": { + "x": 382.94674682617188, + "y": 339.63238525390625 + }, + "effects": [], + "interactions": [] + } + ], + "blendMode": "PASS_THROUGH", + "clipsContent": true, + "background": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "fills": [ + { + "blendMode": "NORMAL", + "type": "SOLID", + "color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } + } + ], + "strokes": [], + "strokeWeight": 1.0, + "strokeAlign": "INSIDE", + "backgroundColor": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "fillGeometry": [ + { + "path": "M0 0L500 0L500 500L0 500L0 0Z", + "windingRule": "NONZERO" + } + ], + "strokeGeometry": [], + "absoluteBoundingBox": { + "x": 5294.0, + "y": -3509.0, + "width": 500.0, + "height": 500.0 + }, + "absoluteRenderBounds": { + "x": 5294.0, + "y": -3509.0, + "width": 500.0, + "height": 500.0 + }, + "constraints": { + "vertical": "TOP", + "horizontal": "LEFT" + }, + "relativeTransform": [ + [1.0, 0.0, 5294.0], + [0.0, 1.0, -3509.0] + ], + "size": { + "x": 500.0, + "y": 500.0 + }, + "effects": [], + "interactions": [] + }, + "components": {}, + "componentSets": {}, + "schemaVersion": 0, + "styles": {} + } + } +} diff --git a/fixtures/test-grida/README.md b/fixtures/test-grida/README.md index 99c3a8fd73..dde33cfcec 100644 --- a/fixtures/test-grida/README.md +++ b/fixtures/test-grida/README.md @@ -6,7 +6,7 @@ This directory contains **meaningful** `.grida` files used for **testing**. - **Prefix**: `d[n]` is a simple counter (`d1`, `d2`, `d3`, ...). - **Schema version specifier**: we encode the schema version **build metadata date** as `yyyymmdd`. - - Example: schema version `0.0.4-beta+20251209` → version specifier `20251209` + - Example: schema version `0.89.0-beta+20251219` → version specifier `20251219` - **Note**: this `yyyymmdd` is **not** the authoring date of the file. ### Support expectations (important) @@ -15,4 +15,4 @@ This directory contains **meaningful** `.grida` files used for **testing**. - Some fixtures here may be **legacy** and can become **permanently unsupported**. They are kept for **historical context** and **current-version regression testing only**. - **Do not use these files in production**, and **do not assume** every file in this folder will load in the latest version. -> Current Version: `0.0.4-beta+20251209` (last updated: 2025-12-15) +> Current Version: `0.89.0-beta+20251219` (last updated: 2025-12-19) diff --git a/package.json b/package.json index 3f1c230c32..8c547ff185 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "ts-jest": "^29.3.2", "tsup": "^8.4.0", "turbo": "^2.6.3", - "typescript": "^5" + "typescript": "^5", + "vitest": "^4" }, "pnpm": { "overrides": { diff --git a/packages/grida-canvas-color/jest.config.ts b/packages/grida-canvas-color/jest.config.ts deleted file mode 100644 index 3ec4049761..0000000000 --- a/packages/grida-canvas-color/jest.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { Config } from "jest"; - -const config: Config = { - preset: "ts-jest", - testEnvironment: "node", - testMatch: ["**/*.test.ts"], - collectCoverageFrom: ["**/*.ts", "!**/*.d.ts", "!**/node_modules/**"], -}; - -export default config; diff --git a/packages/grida-canvas-color/package.json b/packages/grida-canvas-color/package.json index f9888d6f69..f143400206 100644 --- a/packages/grida-canvas-color/package.json +++ b/packages/grida-canvas-color/package.json @@ -15,11 +15,18 @@ "scripts": { "dev": "tsup index.ts --format cjs,esm --dts --watch", "build": "tsup index.ts --format cjs,esm --dts", - "test": "jest" + "test": "vitest run" }, "main": "./dist/index.js", "module": "./dist/index.mjs", "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } + }, "files": [ "dist" ] diff --git a/packages/grida-canvas-color/tsconfig.json b/packages/grida-canvas-color/tsconfig.json index ba53118373..e647c1f9bf 100644 --- a/packages/grida-canvas-color/tsconfig.json +++ b/packages/grida-canvas-color/tsconfig.json @@ -3,7 +3,8 @@ "moduleResolution": "bundler", "esModuleInterop": true, "noImplicitAny": true, - "strict": true + "strict": true, + "skipLibCheck": true }, "exclude": ["dist"] } diff --git a/packages/grida-canvas-color/vitest.config.ts b/packages/grida-canvas-color/vitest.config.ts new file mode 100644 index 0000000000..e2ec332940 --- /dev/null +++ b/packages/grida-canvas-color/vitest.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + globals: true, + }, +}); diff --git a/packages/grida-canvas-io-figma/__tests__/iofigma.rest-api.vector.test.ts b/packages/grida-canvas-io-figma/__tests__/iofigma.rest-api.vector.test.ts new file mode 100644 index 0000000000..b86eb3c21a --- /dev/null +++ b/packages/grida-canvas-io-figma/__tests__/iofigma.rest-api.vector.test.ts @@ -0,0 +1,166 @@ +import { readFileSync } from "fs"; +import { iofigma } from "../lib"; +import type * as figrest from "@figma/rest-api-spec"; +import type grida from "@grida/schema"; + +const FIXTURES_BASE = __dirname + "/../../../fixtures/test-figma/rest-api/L0"; +const VECTOR_FRAME_FIXTURE = FIXTURES_BASE + "/vector-frame.response.json"; + +describe("iofigma.restful.factory.document", () => { + describe("HasGeometryTrait conversion (geometry=paths)", () => { + it("should convert VECTOR node with fillGeometry and strokeGeometry to GroupNode with child VectorNodes", () => { + const responseJson = readFileSync(VECTOR_FRAME_FIXTURE, "utf-8"); + const response = JSON.parse(responseJson) as figrest.GetFileNodesResponse; + + const nodeId = Object.keys(response.nodes)[0]; + const nodeData = response.nodes[nodeId]; + + // The response structure has a 'document' property which is the root node + const frameNode = nodeData.document as figrest.FrameNode; + expect(frameNode.type).toBe("FRAME"); + expect(frameNode.children).toBeDefined(); + expect(frameNode.children!.length).toBeGreaterThan(0); + + const vectorNode = frameNode.children![0] as figrest.VectorNode; + expect(vectorNode.type).toBe("VECTOR"); + expect(vectorNode.fillGeometry).toBeDefined(); + expect(vectorNode.fillGeometry?.length).toBeGreaterThan(0); + expect(vectorNode.strokeGeometry).toBeDefined(); + expect(vectorNode.strokeGeometry?.length).toBeGreaterThan(0); + + // Convert using the factory - convert the frame node (not document) + const context: iofigma.restful.factory.FactoryContext = { + gradient_id_generator: () => `gradient_${Math.random()}`, + }; + const gridaDocument = iofigma.restful.factory.document( + frameNode, + {}, + context + ); + + expect(gridaDocument).toBeDefined(); + expect(gridaDocument.scene).toBeDefined(); + expect(gridaDocument.nodes).toBeDefined(); + + // Find the frame node (frames are converted to container nodes) + const frameGridaNode = Object.values(gridaDocument.nodes).find( + (n): n is grida.program.nodes.ContainerNode => + n.type === "container" && n.name === "vector-frame" + ); + expect(frameGridaNode).toBeDefined(); + expect(frameGridaNode?.type).toBe("container"); + + // Find the vector group node (VECTOR converted to GroupNode) + const vectorGroupNode = Object.values(gridaDocument.nodes).find( + (n): n is grida.program.nodes.GroupNode => + n.type === "group" && n.name === "Vector 1" + ); + expect(vectorGroupNode).toBeDefined(); + expect(vectorGroupNode?.type).toBe("group"); + + // Check that the group has children (fill and stroke VectorNodes) + expect(vectorGroupNode).toBeDefined(); + const groupChildren = gridaDocument.links[vectorGroupNode!.id]; + expect(groupChildren).toBeDefined(); + expect(groupChildren!.length).toBeGreaterThan(0); + + // Verify child nodes are VectorNodes + const childNodes = groupChildren! + .map((id) => gridaDocument.nodes[id]) + .filter( + (n): n is grida.program.nodes.VectorNode => n.type === "vector" + ); + expect(childNodes.length).toBeGreaterThan(0); + + // Verify we have both fill and stroke children + const fillChildren = childNodes.filter((n) => n.name.includes("Fill")); + const strokeChildren = childNodes.filter((n) => + n.name.includes("Stroke") + ); + expect(fillChildren.length).toBeGreaterThan(0); + expect(strokeChildren.length).toBeGreaterThan(0); + + // Verify fill children have fills + fillChildren.forEach((child) => { + expect(child.type).toBe("vector"); + expect(child.fill || child.fill_paints?.length).toBeTruthy(); + }); + + // Verify stroke children have strokes + strokeChildren.forEach((child) => { + expect(child.type).toBe("vector"); + expect(child.stroke || child.stroke_paints?.length).toBeTruthy(); + expect(child.stroke_width).toBeGreaterThan(0); + }); + }); + + it("should position child VectorNodes correctly relative to parent GroupNode", () => { + const responseJson = readFileSync(VECTOR_FRAME_FIXTURE, "utf-8"); + const response = JSON.parse(responseJson) as figrest.GetFileNodesResponse; + + const nodeId = Object.keys(response.nodes)[0]; + const nodeData = response.nodes[nodeId]; + const frameNode = nodeData.document as figrest.FrameNode; + const vectorNode = frameNode.children![0] as figrest.VectorNode; + + // Get original vector node positioning + const originalTransform = vectorNode.relativeTransform; + const originalSize = vectorNode.size; + + // Convert + const context: iofigma.restful.factory.FactoryContext = { + gradient_id_generator: () => `gradient_${Math.random()}`, + }; + const gridaDocument = iofigma.restful.factory.document( + frameNode, + {}, + context + ); + + // Find the vector group node + const vectorGroupNode = Object.values(gridaDocument.nodes).find( + (n): n is grida.program.nodes.GroupNode => + n.type === "group" && n.name === "Vector 1" + ); + + expect(vectorGroupNode).toBeDefined(); + + // Verify parent group positioning matches original vector node + expect(vectorGroupNode).toBeDefined(); + expect(vectorGroupNode!.left).toBeCloseTo(originalTransform![0][2], 1); + expect(vectorGroupNode!.top).toBeCloseTo(originalTransform![1][2], 1); + + // Get child nodes + const childIds = gridaDocument.links[vectorGroupNode!.id]; + expect(childIds).toBeDefined(); + expect(childIds!.length).toBeGreaterThan(0); + + const childNodes = childIds! + .map((id) => gridaDocument.nodes[id]) + .filter( + (n): n is grida.program.nodes.VectorNode => n.type === "vector" + ); + + expect(childNodes.length).toBeGreaterThan(0); + + // Verify all child nodes are positioned correctly relative to the parent + // The SVG paths are in the parent's coordinate space, so children are positioned + // at their bbox origin to maintain correct spatial relationships + // Note: In test environment with mocked svg-pathdata, vector networks may be empty, + // but we can still verify the positioning logic is correct + childNodes.forEach((child) => { + expect(child.type).toBe("vector"); + // Child nodes should be positioned at their bbox origin relative to parent + // (not at 0,0, which would cause misalignment) + expect(child.left).toBeDefined(); + expect(child.top).toBeDefined(); + expect(typeof child.left).toBe("number"); + expect(typeof child.top).toBe("number"); + + // The positioning should use bbox.x and bbox.y, not 0,0 + // This ensures fill and stroke geometries align correctly + // (In mocked environment, bbox may be 0,0, but the logic is correct) + }); + }); + }); +}); diff --git a/packages/grida-canvas-io-figma/jest.config.ts b/packages/grida-canvas-io-figma/jest.config.ts deleted file mode 100644 index 47d5147bea..0000000000 --- a/packages/grida-canvas-io-figma/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Config } from "jest"; - -const config: Config = { - preset: "ts-jest", - testEnvironment: "node", - testMatch: ["**/*.test.ts"], - collectCoverageFrom: ["**/*.ts", "!**/*.d.ts", "!**/node_modules/**"], -}; - -export default config; - diff --git a/packages/grida-canvas-io-figma/lib.ts b/packages/grida-canvas-io-figma/lib.ts index 292efe5ca2..4ab922a112 100644 --- a/packages/grida-canvas-io-figma/lib.ts +++ b/packages/grida-canvas-io-figma/lib.ts @@ -1,6 +1,6 @@ import cg from "@grida/cg"; import type grida from "@grida/schema"; -import type { vn } from "@grida/schema"; +import vn from "@grida/vn"; import type * as figrest from "@figma/rest-api-spec"; import type * as figkiwi from "./fig-kiwi/schema"; import cmath from "@grida/cmath"; @@ -687,6 +687,213 @@ export namespace iofigma { return gridaId; }; + /** + * Type guard to check if a node implements HasGeometryTrait. + * Nodes with fillGeometry or strokeGeometry need special handling. + */ + function hasGeometryTrait( + node: InputNode + ): node is InputNode & figrest.HasGeometryTrait { + return "fillGeometry" in node || "strokeGeometry" in node; + } + + /** + * Creates a VectorNode from SVG path data. + * Used for converting nodes with HasGeometryTrait (REST API with geometry=paths). + * Applies to VECTOR, STAR, REGULAR_POLYGON, and other shape nodes. + */ + function createVectorNodeFromPath( + pathData: string, + geometry: { + windingRule: figrest.Path["windingRule"]; + }, + parentNode: InputNode & figrest.HasGeometryTrait, + childId: string, + name: string, + options: { + useFill: boolean; + useStroke: boolean; + } + ): grida.program.nodes.VectorNode | null { + if (!pathData) return null; + + try { + const vectorNetwork = vn.fromSVGPathData(pathData); + const bbox = vn.getBBox(vectorNetwork); + + // Note: In test environment with mocked svg-pathdata, vector networks may be empty. + // This is expected and the positioning logic will still work correctly. + + // The SVG path coordinates are already in the parent VECTOR node's coordinate space. + // We keep the vector network coordinates as-is and position the child at its bbox origin + // relative to the parent GroupNode. This preserves the correct spatial relationships + // between fill and stroke geometries. + return { + id: childId, + ...base_node_trait({ + name, + visible: "visible" in parentNode ? parentNode.visible : true, + locked: "locked" in parentNode ? parentNode.locked : false, + rotation: 0, + opacity: + "opacity" in parentNode && parentNode.opacity !== undefined + ? parentNode.opacity + : 1, + blendMode: + "blendMode" in parentNode && parentNode.blendMode + ? parentNode.blendMode + : "NORMAL", + }), + ...positioning_trait({ + relativeTransform: [ + [1, 0, bbox.x], + [0, 1, bbox.y], + ], + size: { x: bbox.width, y: bbox.height }, + }), + ...(options.useFill ? fills_trait(parentNode.fills) : {}), + ...(options.useStroke + ? stroke_trait(parentNode) + : stroke_trait({ + strokes: [], + strokeWeight: 0, + })), + ...("effects" in parentNode && parentNode.effects + ? effects_trait(parentNode.effects) + : effects_trait(undefined)), + type: "vector", + vector_network: vectorNetwork, + width: bbox.width, + height: bbox.height, + fill_rule: map.windingRuleMap[geometry.windingRule] ?? "nonzero", + }; + } catch (e) { + console.warn( + `Failed to convert path to vector network (${name}):`, + e + ); + return null; + } + } + + /** + * Processes fill geometries from a node with HasGeometryTrait. + * Returns array of child node IDs that were successfully created. + */ + function processFillGeometries( + node: InputNode & figrest.HasGeometryTrait, + parentGridaId: string, + nodeTypeName: string + ): string[] { + if (!node.fillGeometry?.length) return []; + + const childIds: string[] = []; + + node.fillGeometry.forEach((geometry, idx) => { + const childId = `${parentGridaId}_fill_${idx}`; + const name = `${node.name || nodeTypeName} Fill ${idx + 1}`; + + const childNode = createVectorNodeFromPath( + geometry.path ?? "", + geometry, + node, + childId, + name, + { useFill: true, useStroke: false } + ); + + if (childNode) { + nodes[childId] = childNode; + childIds.push(childId); + } + }); + + return childIds; + } + + /** + * Processes stroke geometries from a node with HasGeometryTrait. + * Returns array of child node IDs that were successfully created. + */ + function processStrokeGeometries( + node: InputNode & figrest.HasGeometryTrait, + parentGridaId: string, + nodeTypeName: string + ): string[] { + if (!node.strokeGeometry?.length) return []; + + const childIds: string[] = []; + + node.strokeGeometry.forEach((geometry, idx) => { + const childId = `${parentGridaId}_stroke_${idx}`; + const name = `${node.name || nodeTypeName} Stroke ${idx + 1}`; + + const childNode = createVectorNodeFromPath( + geometry.path ?? "", + geometry, + node, + childId, + name, + { useFill: false, useStroke: true } + ); + + if (childNode) { + nodes[childId] = childNode; + childIds.push(childId); + } + }); + + return childIds; + } + + /** + * Processes nodes with HasGeometryTrait from REST API (with geometry=paths parameter). + * Converts fill/stroke geometries to child VectorNodes under a GroupNode. + * Applies to VECTOR, STAR, REGULAR_POLYGON, and other shape nodes. + */ + function processNodeWithGeometryTrait( + node: InputNode & figrest.HasGeometryTrait, + groupNode: grida.program.nodes.GroupNode + ): void { + const nodeTypeName = + "type" in node ? node.type.replace("_", " ") : "Shape"; + + const fillChildIds = processFillGeometries( + node, + groupNode.id, + nodeTypeName + ); + const strokeChildIds = processStrokeGeometries( + node, + groupNode.id, + nodeTypeName + ); + + const allChildIds = [...fillChildIds, ...strokeChildIds]; + + if (allChildIds.length > 0) { + graph[groupNode.id] = allChildIds; + } + } + + function attachGeometryChildrenIfPresent( + currentNode: InputNode, + processedNode: grida.program.nodes.Node + ): void { + if (processedNode.type !== "group") return; + if (!hasGeometryTrait(currentNode)) return; + + const hasAnyGeometry = + (currentNode.fillGeometry?.length ?? 0) > 0 || + (currentNode.strokeGeometry?.length ?? 0) > 0; + if (!hasAnyGeometry) return; + + processNodeWithGeometryTrait( + currentNode, + processedNode as grida.program.nodes.GroupNode + ); + } + function processNode( currentNode: InputNode, parent?: FigmaParentNode @@ -708,6 +915,8 @@ export namespace iofigma { // Add the node to the flat structure nodes[processedNode.id] = processedNode; + attachGeometryChildrenIfPresent(currentNode, processedNode); + // If the node has children, process them recursively if ("children" in currentNode && currentNode.children?.length) { graph[processedNode.id] = currentNode.children @@ -956,26 +1165,16 @@ export namespace iofigma { case "REGULAR_POLYGON": case "STAR": case "VECTOR": { + // Nodes with HasGeometryTrait (REST API with geometry=paths) don't have + // vector network data, only fillGeometry and strokeGeometry (SVG path strings). + // We'll create a GroupNode with child VectorNodes in processNode. return { id: gridaId, ...base_node_trait(node), ...positioning_trait(node), - ...fills_trait(node.fills), - ...effects_trait(node.effects), - type: "svgpath", - paths: [ - ...(node.fillGeometry?.map((p) => ({ - d: p.path ?? "", - fill_rule: map.windingRuleMap[p.windingRule], - fill: "fill" as const, - })) ?? []), - ...(node.strokeGeometry?.map((p) => ({ - d: p.path ?? "", - fill_rule: map.windingRuleMap[p.windingRule], - fill: "stroke" as const, - })) ?? []), - ], - } satisfies grida.program.nodes.SVGPathNode; + type: "group", + expanded: false, + } satisfies grida.program.nodes.GroupNode; } // IR nodes - extended types with additional data diff --git a/packages/grida-canvas-io-figma/package.json b/packages/grida-canvas-io-figma/package.json index d487dea6c4..769635afbb 100644 --- a/packages/grida-canvas-io-figma/package.json +++ b/packages/grida-canvas-io-figma/package.json @@ -3,12 +3,13 @@ "description": "Figma I/O for Grida Canvas", "private": true, "scripts": { - "test": "jest", - "typecheck": "tsc --noEmit" + "typecheck": "tsc --noEmit", + "test": "vitest run" }, "dependencies": { "@grida/cmath": "workspace:*", "@grida/color": "workspace:*", + "@grida/vn": "workspace:*", "base64-js": "^1.5.1", "fflate": "^0.8.2", "fzstd": "^0.1.1", diff --git a/packages/grida-canvas-io-figma/tsconfig.json b/packages/grida-canvas-io-figma/tsconfig.json index 5573f1044f..401b3ec859 100644 --- a/packages/grida-canvas-io-figma/tsconfig.json +++ b/packages/grida-canvas-io-figma/tsconfig.json @@ -6,6 +6,7 @@ "lib": ["dom", "dom.iterable", "esnext"], "noImplicitAny": true, "strict": true, - "esModuleInterop": true + "esModuleInterop": true, + "skipLibCheck": true } } diff --git a/packages/grida-canvas-io-figma/vitest.config.ts b/packages/grida-canvas-io-figma/vitest.config.ts new file mode 100644 index 0000000000..e2ec332940 --- /dev/null +++ b/packages/grida-canvas-io-figma/vitest.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + globals: true, + }, +}); diff --git a/packages/grida-canvas-io/__tests__/README.md b/packages/grida-canvas-io/__tests__/README.md index 9045a71808..9591e815d4 100644 --- a/packages/grida-canvas-io/__tests__/README.md +++ b/packages/grida-canvas-io/__tests__/README.md @@ -180,8 +180,6 @@ The tests require: - `fast-png` - For PNG encoding/decoding - `fast-xml-parser` - For XML parsing - `image-size` - For image dimension detection and type inference -- `jest` - Test framework -- `@types/jest` - Jest type definitions All dependencies are already included in the package. diff --git a/packages/grida-canvas-io/__tests__/archive.test.ts b/packages/grida-canvas-io/__tests__/archive.test.ts index 6dffac27be..86b2137f3b 100644 --- a/packages/grida-canvas-io/__tests__/archive.test.ts +++ b/packages/grida-canvas-io/__tests__/archive.test.ts @@ -69,7 +69,7 @@ describe("archive comprehensive", () => { // Simple document data for testing const mockDocumentData: io.JSONDocumentFileModel = { - version: "0.0.4-beta+20251209", + version: "0.89.0-beta+20251219", document: { nodes: { scene1: { @@ -96,7 +96,7 @@ describe("archive comprehensive", () => { // Complex document data for testing (without bitmaps for now) const complexDocumentData: io.JSONDocumentFileModel = { - version: "0.0.4-beta+20251209", + version: "0.89.0-beta+20251219", document: { nodes: { scene1: { diff --git a/packages/grida-canvas-io/package.json b/packages/grida-canvas-io/package.json index 988f3af2e7..742e5166a9 100644 --- a/packages/grida-canvas-io/package.json +++ b/packages/grida-canvas-io/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "typecheck": "tsc --noEmit", - "test": "jest" + "test": "vitest run" }, "dependencies": { "@grida/cmath": "workspace:*", @@ -17,10 +17,5 @@ "devDependencies": { "@grida/cg": "workspace:*", "@grida/schema": "workspace:*" - }, - "jest": { - "preset": "ts-jest", - "testTimeout": 120000, - "maxWorkers": 1 } } diff --git a/packages/grida-canvas-io/tsconfig.json b/packages/grida-canvas-io/tsconfig.json index 3da8c431f7..66903b32a6 100644 --- a/packages/grida-canvas-io/tsconfig.json +++ b/packages/grida-canvas-io/tsconfig.json @@ -2,6 +2,7 @@ "compilerOptions": { "noImplicitAny": true, "strict": true, - "esModuleInterop": true + "esModuleInterop": true, + "skipLibCheck": true } } diff --git a/packages/grida-canvas-io/vitest.config.ts b/packages/grida-canvas-io/vitest.config.ts new file mode 100644 index 0000000000..32b0448b5f --- /dev/null +++ b/packages/grida-canvas-io/vitest.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + globals: true, + testTimeout: 120000, + }, +}); diff --git a/packages/grida-canvas-schema/grida.ts b/packages/grida-canvas-schema/grida.ts index 9696fd3aab..5a930b9ad1 100644 --- a/packages/grida-canvas-schema/grida.ts +++ b/packages/grida-canvas-schema/grida.ts @@ -530,7 +530,7 @@ export namespace grida { } export namespace grida.program.document { - export const SCHEMA_VERSION = "0.0.4-beta+20251209"; + export const SCHEMA_VERSION = "0.89.0-beta+20251219"; /** * Simple Node Selector @@ -1112,7 +1112,6 @@ export namespace grida.program.nodes { | HTMLIFrameNode | HTMLRichTextNode | BitmapNode - | SVGPathNode | VectorNode | LineNode | RectangleNode @@ -1131,7 +1130,6 @@ export namespace grida.program.nodes { | ComputedContainerNode | ComputedHTMLIFrameNode | ComputedHTMLRichTextNode - | ComputedSVGPathNode | ComputedVectorNode | ComputedLineNode | ComputedRectangleNode @@ -1151,7 +1149,6 @@ export namespace grida.program.nodes { Partial & Partial & Partial & - Partial & Partial & Partial & Partial & @@ -1178,7 +1175,6 @@ export namespace grida.program.nodes { Partial & Partial & Partial & - Partial & Partial & Partial & Partial & @@ -1261,7 +1257,6 @@ export namespace grida.program.nodes { Omit, __base_scene_node_properties> > | __TPrototypeNode, __base_scene_node_properties>> - | __TPrototypeNode, __base_scene_node_properties>> | PathNodePrototype | LineNodePrototype | RectangleNodePrototype @@ -1484,17 +1479,31 @@ export namespace grida.program.nodes { } /** - * padding + * padding - flat properties (no shorthand) + * + * All properties default to 0 when not specified. */ export interface IPadding { - padding: - | number - | { - padding_top: number; - padding_right: number; - padding_bottom: number; - padding_left: number; - }; + /** + * Padding on the top edge. + * @default 0 + */ + padding_top: number; + /** + * Padding on the right edge. + * @default 0 + */ + padding_right: number; + /** + * Padding on the bottom edge. + * @default 0 + */ + padding_bottom: number; + /** + * Padding on the left edge. + * @default 0 + */ + padding_left: number; } /** @@ -2195,7 +2204,7 @@ export namespace grida.program.nodes { i.ICornerRadius, i.IRectangularCornerRadius, i.IRectangularStrokeWidth, - i.IPadding, + Partial, i.IFlexContainer { readonly type: "container"; // @@ -2254,44 +2263,6 @@ export namespace grida.program.nodes { export type ComputedBitmapNode = BitmapNode; - /** - * @deprecated - not ready - do not use in production - */ - export interface SVGPathNode - extends i.IBaseNode, - i.ISceneNode, - i.IHrefable, - i.IMouseCursor, - i.IPositioning, - // i.ICSSDimension, - i.IFixedDimension, - i.ILayoutTargetAspectRatio, - i.IBlend, - i.ILayerMaskType, - i.IZIndex, - i.IRotation, - i.IFill { - type: "svgpath"; - - /** - * @deprecated - use vectorNetwork instead - */ - paths: (cg.Path & { - /** - * specifies which property to use to fill the path - * this is to support compatibility with figma rest api, where it returns a vector stroke as a path individually - * - * @default "fill" - */ - fill: "fill" | "stroke"; - })[]; - } - - /** - * @deprecated - not ready - do not use in production - */ - export type ComputedSVGPathNode = SVGPathNode; - export interface RegularPolygonNode extends i.IBaseNode, i.ISceneNode, @@ -2481,7 +2452,7 @@ export namespace grida.program.nodes { i.IExpandable, i.ICornerRadius, i.IRectangularCornerRadius, - i.IPadding, + Partial, i.IFlexContainer, i.IProperties { readonly type: "component"; @@ -2642,7 +2613,6 @@ export namespace grida.program.nodes { case "richtext": case "text": case "vector": - case "svgpath": case "polygon": case "star": case "video": { @@ -2822,7 +2792,10 @@ export namespace grida.program.nodes { main_axis_gap: 0, cross_axis_alignment: "start", cross_axis_gap: 0, - padding: 0, + padding_top: 0, + padding_right: 0, + padding_bottom: 0, + padding_left: 0, width: 100, height: 100, corner_radius: 0, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d4201f399d..915d53f6b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,6 +47,9 @@ importers: typescript: specifier: ^5 version: 5.8.3 + vitest: + specifier: ^4 + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(jiti@2.4.2)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.1)(terser@5.39.0)(yaml@2.7.0) apps/backgrounds: dependencies: @@ -119,10 +122,10 @@ importers: dependencies: '@docusaurus/core': specifier: 3.7.0 - version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/preset-classic': specifier: 3.7.0 - version: 3.7.0(@algolia/client-search@5.20.2)(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3)(typescript@5.8.3) + version: 3.7.0(@algolia/client-search@5.20.2)(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3)(typescript@5.8.3) '@mdx-js/react': specifier: ^3.1.0 version: 3.1.0(@types/react@19.1.3)(react@19.2.1) @@ -156,19 +159,19 @@ importers: dependencies: '@docusaurus/core': specifier: 3.7.0 - version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/plugin-client-redirects': specifier: 3.7.0 - version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/plugin-google-gtag': specifier: 3.7.0 - version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/plugin-sitemap': specifier: 3.7.0 - version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/preset-classic': specifier: 3.7.0 - version: 3.7.0(@algolia/client-search@5.20.2)(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3)(typescript@5.8.3) + version: 3.7.0(@algolia/client-search@5.20.2)(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3)(typescript@5.8.3) '@mdx-js/react': specifier: ^3.1.0 version: 3.1.0(@types/react@19.1.3)(react@19.2.1) @@ -1139,6 +1142,9 @@ importers: '@grida/color': specifier: workspace:* version: link:../grida-canvas-color + '@grida/vn': + specifier: workspace:* + version: link:../grida-canvas-vn base64-js: specifier: ^1.5.1 version: 1.5.1 @@ -2176,10 +2182,6 @@ packages: resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.27.4': - resolution: {integrity: sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.4': resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} @@ -2907,150 +2909,306 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.4': resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.4': resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.4': resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.4': resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.4': resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.4': resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.4': resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.4': resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.4': resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.4': resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.4': resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.4': resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.4': resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.4': resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.4': resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.4': resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.4': resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.4': resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.4': resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.4': resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.4': resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.4': resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.4': resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.4': resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4889,51 +5047,106 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.53.5': + resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.35.0': resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.53.5': + resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.35.0': resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.53.5': + resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.35.0': resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.53.5': + resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.35.0': resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.53.5': + resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.35.0': resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.53.5': + resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.35.0': resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.35.0': resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.53.5': + resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.35.0': resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.53.5': + resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.35.0': resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.53.5': + resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.53.5': + resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.35.0': resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} cpu: [loong64] @@ -4944,41 +5157,96 @@ packages: cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-ppc64-gnu@4.53.5': + resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.35.0': resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.53.5': + resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.53.5': + resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.35.0': resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.53.5': + resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.35.0': resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.53.5': + resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.35.0': resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.53.5': + resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.53.5': + resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.35.0': resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.53.5': + resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.35.0': resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.53.5': + resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.53.5': + resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.35.0': resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.53.5': + resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} + cpu: [x64] + os: [win32] + '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} @@ -5756,6 +6024,9 @@ packages: '@types/canvas-confetti@1.9.0': resolution: {integrity: sha512-aBGj/dULrimR1XDZLtG9JwxX1b4HPRF6CX9Yfwh3NvstZEm1ZL7RBnel4keCPSqs1ANRu1u2Aoz9R+VmtjYuTg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@types/connect-history-api-fallback@1.5.4': resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} @@ -5897,6 +6168,9 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/deep-equal@1.0.4': resolution: {integrity: sha512-tqdiS4otQP4KmY0PR3u6KbZ5EWvhNdUoS/jc93UuK23C220lOZ/9TvjfxdPcKvqwwDVtmtSCrnr0p/2dirAxkA==} @@ -6545,6 +6819,35 @@ packages: peerDependencies: react: 19.2.1 + '@vitest/expect@4.0.16': + resolution: {integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==} + + '@vitest/mocker@4.0.16': + resolution: {integrity: sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.0.16': + resolution: {integrity: sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==} + + '@vitest/runner@4.0.16': + resolution: {integrity: sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==} + + '@vitest/snapshot@4.0.16': + resolution: {integrity: sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==} + + '@vitest/spy@4.0.16': + resolution: {integrity: sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==} + + '@vitest/utils@4.0.16': + resolution: {integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==} + '@vue/compiler-core@3.5.13': resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} @@ -6881,6 +7184,10 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + assign-symbols@1.0.0: resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} engines: {node: '>=0.10.0'} @@ -7188,6 +7495,10 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@6.2.1: + resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} + engines: {node: '>=18'} + chalk-template@0.4.0: resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} engines: {node: '>=12'} @@ -8340,6 +8651,9 @@ packages: es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -8367,6 +8681,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -8604,6 +8923,10 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8700,6 +9023,15 @@ packages: picomatch: optional: true + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + feed@4.2.2: resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} engines: {node: '>=0.4.0'} @@ -11009,6 +11341,9 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} @@ -11284,6 +11619,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -12636,6 +12975,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.53.5: + resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rope-sequence@1.3.4: resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} @@ -12848,6 +13192,9 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -12996,6 +13343,9 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} @@ -13029,8 +13379,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} @@ -13345,6 +13695,9 @@ packages: tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} @@ -13359,12 +13712,20 @@ packages: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + tinyqueue@1.2.3: resolution: {integrity: sha512-Qz9RgWuO9l8lT+Y9xvbzhPT2efIUIFd69N7eF7tJ9lnQl0iLj1M7peK7IoUGZL9DJHw9XftqLreccfxcQgYLxA==} tinyqueue@3.0.0: resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==} + tinyrainbow@3.0.3: + resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} + engines: {node: '>=14.0.0'} + tippy.js@6.3.7: resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} @@ -13907,6 +14268,80 @@ packages: victory-vendor@36.9.2: resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} + vite@7.3.0: + resolution: {integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.0.16: + resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.16 + '@vitest/browser-preview': 4.0.16 + '@vitest/browser-webdriverio': 4.0.16 + '@vitest/ui': 4.0.16 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} @@ -14095,6 +14530,11 @@ packages: engines: {node: '>= 8'} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} @@ -15506,8 +15946,6 @@ snapshots: '@babel/runtime@7.27.1': {} - '@babel/runtime@7.27.4': {} - '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': @@ -16186,7 +16624,7 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.7.0(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/bundler@3.7.0(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: '@babel/core': 7.27.1 '@docusaurus/babel': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -16198,7 +16636,7 @@ snapshots: clean-css: 5.3.3 copy-webpack-plugin: 11.0.0(webpack@5.98.0(esbuild@0.25.4)) css-loader: 6.11.0(webpack@5.98.0(esbuild@0.25.4)) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.25.4)(webpack@5.98.0(esbuild@0.25.4)) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.25.4)(lightningcss@1.30.1)(webpack@5.98.0(esbuild@0.25.4)) cssnano: 6.1.2(postcss@8.5.6) file-loader: 6.2.0(webpack@5.98.0(esbuild@0.25.4)) html-minifier-terser: 7.2.0 @@ -16231,10 +16669,10 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/core@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/core@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: '@docusaurus/babel': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@docusaurus/bundler': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/bundler': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/logger': 3.7.0 '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -16365,9 +16803,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-client-redirects@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/plugin-client-redirects@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/logger': 3.7.0 '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -16399,13 +16837,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-blog@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/plugin-content-blog@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/logger': 3.7.0 '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -16443,13 +16881,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/logger': 3.7.0 '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/module-type-aliases': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -16485,9 +16923,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/plugin-content-pages@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -16518,9 +16956,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/plugin-debug@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) fs-extra: 11.3.0 @@ -16549,9 +16987,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/plugin-google-analytics@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) react: 19.2.1 @@ -16578,9 +17016,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/plugin-google-gtag@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@types/gtag.js': 0.0.12 @@ -16608,9 +17046,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/plugin-google-tag-manager@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) react: 19.2.1 @@ -16637,9 +17075,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/plugin-sitemap@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/logger': 3.7.0 '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -16671,9 +17109,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-svgr@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/plugin-svgr@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -16704,21 +17142,21 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.7.0(@algolia/client-search@5.20.2)(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3)(typescript@5.8.3)': - dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-debug': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-google-analytics': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-google-gtag': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-google-tag-manager': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-sitemap': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-svgr': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/theme-classic': 3.7.0(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@docusaurus/theme-search-algolia': 3.7.0(@algolia/client-search@5.20.2)(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3)(typescript@5.8.3) + '@docusaurus/preset-classic@3.7.0(@algolia/client-search@5.20.2)(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3)(typescript@5.8.3)': + dependencies: + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-debug': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-google-analytics': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-google-gtag': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-google-tag-manager': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-sitemap': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-svgr': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/theme-classic': 3.7.0(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@docusaurus/theme-search-algolia': 3.7.0(@algolia/client-search@5.20.2)(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3)(typescript@5.8.3) '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) react: 19.2.1 react-dom: 19.2.1(react@19.2.1) @@ -16751,16 +17189,16 @@ snapshots: '@types/react': 19.1.3 react: 19.2.1 - '@docusaurus/theme-classic@3.7.0(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': + '@docusaurus/theme-classic@3.7.0(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/logger': 3.7.0 '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/module-type-aliases': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/theme-translations': 3.7.0 '@docusaurus/types': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -16802,11 +17240,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@docusaurus/theme-common@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': dependencies: '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/module-type-aliases': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@types/history': 4.7.11 @@ -16827,13 +17265,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.7.0(@algolia/client-search@5.20.2)(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3)(typescript@5.8.3)': + '@docusaurus/theme-search-algolia@3.7.0(@algolia/client-search@5.20.2)(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(@types/react@19.1.3)(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3)(typescript@5.8.3)': dependencies: '@docsearch/react': 3.8.3(@algolia/client-search@5.20.2)(@types/react@19.1.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(search-insights@2.17.3) - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) '@docusaurus/logger': 3.7.0 - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.3)(react@19.2.1))(acorn@8.15.0)(esbuild@0.25.4)(eslint@9.27.0(jiti@2.4.2))(lightningcss@1.30.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.8.3))(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/theme-translations': 3.7.0 '@docusaurus/utils': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(esbuild@0.25.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) @@ -16981,7 +17419,7 @@ snapshots: '@emotion/core@10.3.1(react@19.2.1)': dependencies: - '@babel/runtime': 7.27.4 + '@babel/runtime': 7.28.4 '@emotion/cache': 10.0.29 '@emotion/css': 10.0.27 '@emotion/serialize': 0.11.16 @@ -17054,78 +17492,156 @@ snapshots: '@esbuild/aix-ppc64@0.25.4': optional: true + '@esbuild/aix-ppc64@0.27.2': + optional: true + '@esbuild/android-arm64@0.25.4': optional: true + '@esbuild/android-arm64@0.27.2': + optional: true + '@esbuild/android-arm@0.25.4': optional: true + '@esbuild/android-arm@0.27.2': + optional: true + '@esbuild/android-x64@0.25.4': optional: true + '@esbuild/android-x64@0.27.2': + optional: true + '@esbuild/darwin-arm64@0.25.4': optional: true + '@esbuild/darwin-arm64@0.27.2': + optional: true + '@esbuild/darwin-x64@0.25.4': optional: true + '@esbuild/darwin-x64@0.27.2': + optional: true + '@esbuild/freebsd-arm64@0.25.4': optional: true + '@esbuild/freebsd-arm64@0.27.2': + optional: true + '@esbuild/freebsd-x64@0.25.4': optional: true + '@esbuild/freebsd-x64@0.27.2': + optional: true + '@esbuild/linux-arm64@0.25.4': optional: true + '@esbuild/linux-arm64@0.27.2': + optional: true + '@esbuild/linux-arm@0.25.4': optional: true + '@esbuild/linux-arm@0.27.2': + optional: true + '@esbuild/linux-ia32@0.25.4': optional: true + '@esbuild/linux-ia32@0.27.2': + optional: true + '@esbuild/linux-loong64@0.25.4': optional: true + '@esbuild/linux-loong64@0.27.2': + optional: true + '@esbuild/linux-mips64el@0.25.4': optional: true + '@esbuild/linux-mips64el@0.27.2': + optional: true + '@esbuild/linux-ppc64@0.25.4': optional: true + '@esbuild/linux-ppc64@0.27.2': + optional: true + '@esbuild/linux-riscv64@0.25.4': optional: true + '@esbuild/linux-riscv64@0.27.2': + optional: true + '@esbuild/linux-s390x@0.25.4': optional: true + '@esbuild/linux-s390x@0.27.2': + optional: true + '@esbuild/linux-x64@0.25.4': optional: true + '@esbuild/linux-x64@0.27.2': + optional: true + '@esbuild/netbsd-arm64@0.25.4': optional: true + '@esbuild/netbsd-arm64@0.27.2': + optional: true + '@esbuild/netbsd-x64@0.25.4': optional: true + '@esbuild/netbsd-x64@0.27.2': + optional: true + '@esbuild/openbsd-arm64@0.25.4': optional: true + '@esbuild/openbsd-arm64@0.27.2': + optional: true + '@esbuild/openbsd-x64@0.25.4': optional: true + '@esbuild/openbsd-x64@0.27.2': + optional: true + + '@esbuild/openharmony-arm64@0.27.2': + optional: true + '@esbuild/sunos-x64@0.25.4': optional: true + '@esbuild/sunos-x64@0.27.2': + optional: true + '@esbuild/win32-arm64@0.25.4': optional: true + '@esbuild/win32-arm64@0.27.2': + optional: true + '@esbuild/win32-ia32@0.25.4': optional: true + '@esbuild/win32-ia32@0.27.2': + optional: true + '@esbuild/win32-x64@0.25.4': optional: true + '@esbuild/win32-x64@0.27.2': + optional: true + '@eslint-community/eslint-utils@4.4.1(eslint@9.27.0(jiti@2.4.2))': dependencies: eslint: 9.27.0(jiti@2.4.2) @@ -17644,7 +18160,7 @@ snapshots: '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@leichtgewicht/ip-codec@2.0.5': {} @@ -19142,67 +19658,133 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.35.0 '@rollup/rollup-android-arm-eabi@4.35.0': optional: true + '@rollup/rollup-android-arm-eabi@4.53.5': + optional: true + '@rollup/rollup-android-arm64@4.35.0': optional: true + '@rollup/rollup-android-arm64@4.53.5': + optional: true + '@rollup/rollup-darwin-arm64@4.35.0': optional: true + '@rollup/rollup-darwin-arm64@4.53.5': + optional: true + '@rollup/rollup-darwin-x64@4.35.0': optional: true + '@rollup/rollup-darwin-x64@4.53.5': + optional: true + '@rollup/rollup-freebsd-arm64@4.35.0': optional: true + '@rollup/rollup-freebsd-arm64@4.53.5': + optional: true + '@rollup/rollup-freebsd-x64@4.35.0': optional: true + '@rollup/rollup-freebsd-x64@4.53.5': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.35.0': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.35.0': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.53.5': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.35.0': optional: true + '@rollup/rollup-linux-arm64-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-arm64-musl@4.35.0': optional: true + '@rollup/rollup-linux-arm64-musl@4.53.5': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.35.0': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.35.0': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.53.5': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.53.5': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.35.0': optional: true + '@rollup/rollup-linux-s390x-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-x64-gnu@4.35.0': optional: true + '@rollup/rollup-linux-x64-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-x64-musl@4.35.0': optional: true + '@rollup/rollup-linux-x64-musl@4.53.5': + optional: true + + '@rollup/rollup-openharmony-arm64@4.53.5': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.35.0': optional: true + '@rollup/rollup-win32-arm64-msvc@4.53.5': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.35.0': optional: true + '@rollup/rollup-win32-ia32-msvc@4.53.5': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.53.5': + optional: true + '@rollup/rollup-win32-x64-msvc@4.35.0': optional: true + '@rollup/rollup-win32-x64-msvc@4.53.5': + optional: true + '@rtsao/scc@1.1.0': {} '@rushstack/eslint-patch@1.10.5': {} @@ -20126,6 +20708,11 @@ snapshots: '@types/canvas-confetti@1.9.0': {} + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.6 @@ -20292,6 +20879,8 @@ snapshots: dependencies: '@types/ms': 2.1.0 + '@types/deep-eql@4.0.2': {} + '@types/deep-equal@1.0.4': {} '@types/diff-match-patch@1.0.36': {} @@ -21131,6 +21720,45 @@ snapshots: prop-types: 15.8.1 react: 19.2.1 + '@vitest/expect@4.0.16': + dependencies: + '@standard-schema/spec': 1.0.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.0.16 + '@vitest/utils': 4.0.16 + chai: 6.2.1 + tinyrainbow: 3.0.3 + + '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@22.19.1)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.0)(yaml@2.7.0))': + dependencies: + '@vitest/spy': 4.0.16 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.0(@types/node@22.19.1)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.0)(yaml@2.7.0) + + '@vitest/pretty-format@4.0.16': + dependencies: + tinyrainbow: 3.0.3 + + '@vitest/runner@4.0.16': + dependencies: + '@vitest/utils': 4.0.16 + pathe: 2.0.3 + + '@vitest/snapshot@4.0.16': + dependencies: + '@vitest/pretty-format': 4.0.16 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.0.16': {} + + '@vitest/utils@4.0.16': + dependencies: + '@vitest/pretty-format': 4.0.16 + tinyrainbow: 3.0.3 + '@vue/compiler-core@3.5.13': dependencies: '@babel/parser': 7.28.5 @@ -21572,6 +22200,8 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + assertion-error@2.0.1: {} + assign-symbols@1.0.0: {} ast-types-flow@0.0.8: {} @@ -22019,6 +22649,8 @@ snapshots: ccount@2.0.1: {} + chai@6.2.1: {} + chalk-template@0.4.0: dependencies: chalk: 4.1.2 @@ -22459,7 +23091,7 @@ snapshots: optionalDependencies: webpack: 5.98.0(esbuild@0.25.4) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.25.4)(webpack@5.98.0(esbuild@0.25.4)): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.25.4)(lightningcss@1.30.1)(webpack@5.98.0(esbuild@0.25.4)): dependencies: '@jridgewell/trace-mapping': 0.3.31 cssnano: 6.1.2(postcss@8.5.6) @@ -22471,6 +23103,7 @@ snapshots: optionalDependencies: clean-css: 5.3.3 esbuild: 0.25.4 + lightningcss: 1.30.1 css-prefers-color-scheme@10.0.0(postcss@8.5.6): dependencies: @@ -23151,7 +23784,7 @@ snapshots: emotion-theming@10.3.0(@emotion/core@10.3.1(react@19.2.1))(react@19.2.1): dependencies: - '@babel/runtime': 7.27.4 + '@babel/runtime': 7.28.4 '@emotion/core': 10.3.1(react@19.2.1) '@emotion/weak-memoize': 0.2.5 hoist-non-react-statics: 3.3.2 @@ -23290,6 +23923,8 @@ snapshots: es-module-lexer@1.6.0: {} + es-module-lexer@1.7.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -23353,6 +23988,35 @@ snapshots: '@esbuild/win32-ia32': 0.25.4 '@esbuild/win32-x64': 0.25.4 + esbuild@0.27.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 + escalade@3.2.0: {} escape-goat@4.0.0: {} @@ -23383,8 +24047,8 @@ snapshots: '@typescript-eslint/parser': 5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) eslint: 9.27.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.8.0(eslint-plugin-import@2.31.0)(eslint@9.27.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.8.0)(eslint@9.27.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.8.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.8.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-react: 7.37.4(eslint@9.27.0(jiti@2.4.2)) eslint-plugin-react-hooks: 5.1.0(eslint@9.27.0(jiti@2.4.2)) @@ -23403,7 +24067,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.8.0(eslint-plugin-import@2.31.0)(eslint@9.27.0(jiti@2.4.2)): + eslint-import-resolver-typescript@3.8.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 @@ -23414,22 +24078,22 @@ snapshots: stable-hash: 0.0.4 tinyglobby: 0.2.13 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.8.0)(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.8.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.0)(eslint@9.27.0(jiti@2.4.2)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) eslint: 9.27.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.8.0(eslint-plugin-import@2.31.0)(eslint@9.27.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.8.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.8.0)(eslint@9.27.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.8.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -23440,7 +24104,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.27.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.0)(eslint@9.27.0(jiti@2.4.2)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -23660,6 +24324,8 @@ snapshots: expand-template@2.0.3: optional: true + expect-type@1.3.0: {} + expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 @@ -23791,6 +24457,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + feed@4.2.2: dependencies: xml-js: 1.6.11 @@ -26773,6 +27443,8 @@ snapshots: obuf@1.1.2: {} + obug@2.1.1: {} + ohash@2.0.11: {} on-finished@2.4.1: @@ -27046,6 +27718,8 @@ snapshots: picomatch@4.0.2: {} + picomatch@4.0.3: {} + pify@4.0.1: {} pirates@4.0.6: {} @@ -27969,7 +28643,7 @@ snapshots: react-inspector@5.1.1(react@19.2.1): dependencies: - '@babel/runtime': 7.27.4 + '@babel/runtime': 7.28.4 is-dom: 1.1.0 prop-types: 15.8.1 react: 19.2.1 @@ -28668,6 +29342,34 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.35.0 fsevents: 2.3.3 + rollup@4.53.5: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.53.5 + '@rollup/rollup-android-arm64': 4.53.5 + '@rollup/rollup-darwin-arm64': 4.53.5 + '@rollup/rollup-darwin-x64': 4.53.5 + '@rollup/rollup-freebsd-arm64': 4.53.5 + '@rollup/rollup-freebsd-x64': 4.53.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.5 + '@rollup/rollup-linux-arm-musleabihf': 4.53.5 + '@rollup/rollup-linux-arm64-gnu': 4.53.5 + '@rollup/rollup-linux-arm64-musl': 4.53.5 + '@rollup/rollup-linux-loong64-gnu': 4.53.5 + '@rollup/rollup-linux-ppc64-gnu': 4.53.5 + '@rollup/rollup-linux-riscv64-gnu': 4.53.5 + '@rollup/rollup-linux-riscv64-musl': 4.53.5 + '@rollup/rollup-linux-s390x-gnu': 4.53.5 + '@rollup/rollup-linux-x64-gnu': 4.53.5 + '@rollup/rollup-linux-x64-musl': 4.53.5 + '@rollup/rollup-openharmony-arm64': 4.53.5 + '@rollup/rollup-win32-arm64-msvc': 4.53.5 + '@rollup/rollup-win32-ia32-msvc': 4.53.5 + '@rollup/rollup-win32-x64-gnu': 4.53.5 + '@rollup/rollup-win32-x64-msvc': 4.53.5 + fsevents: 2.3.3 + rope-sequence@1.3.4: {} roughjs@4.6.6: @@ -29002,6 +29704,8 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -29169,6 +29873,8 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 + stackback@0.0.2: {} + stackframe@1.3.4: {} stacktrace-gps@3.1.2: @@ -29199,7 +29905,7 @@ snapshots: statuses@2.0.1: {} - std-env@3.8.0: {} + std-env@3.10.0: {} stop-iteration-iterator@1.1.0: dependencies: @@ -29590,6 +30296,8 @@ snapshots: tiny-warning@1.0.3: {} + tinybench@2.9.0: {} + tinycolor2@1.6.0: {} tinyexec@0.3.2: {} @@ -29601,10 +30309,17 @@ snapshots: fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + tinyqueue@1.2.3: {} tinyqueue@3.0.0: {} + tinyrainbow@3.0.3: {} + tippy.js@6.3.7: dependencies: '@popperjs/core': 2.11.8 @@ -30169,6 +30884,61 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 + vite@7.3.0(@types/node@22.19.1)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.0)(yaml@2.7.0): + dependencies: + esbuild: 0.27.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.53.5 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 22.19.1 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.30.1 + terser: 5.39.0 + yaml: 2.7.0 + + vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(jiti@2.4.2)(jsdom@20.0.3(canvas@2.11.2))(lightningcss@1.30.1)(terser@5.39.0)(yaml@2.7.0): + dependencies: + '@vitest/expect': 4.0.16 + '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@22.19.1)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.0)(yaml@2.7.0)) + '@vitest/pretty-format': 4.0.16 + '@vitest/runner': 4.0.16 + '@vitest/snapshot': 4.0.16 + '@vitest/spy': 4.0.16 + '@vitest/utils': 4.0.16 + es-module-lexer: 1.7.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vite: 7.3.0(@types/node@22.19.1)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.39.0)(yaml@2.7.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.0 + '@types/node': 22.19.1 + jsdom: 20.0.3(canvas@2.11.2(encoding@0.1.13)) + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + void-elements@3.1.0: {} vscode-jsonrpc@8.2.0: {} @@ -30365,7 +31135,7 @@ snapshots: figures: 3.2.0 markdown-table: 2.0.0 pretty-time: 1.1.0 - std-env: 3.8.0 + std-env: 3.10.0 webpack: 5.98.0(esbuild@0.25.4) wrap-ansi: 7.0.0 @@ -30447,6 +31217,11 @@ snapshots: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + wide-align@1.1.5: dependencies: string-width: 4.2.3