-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdsshow-shapes.lua
763 lines (709 loc) · 51.9 KB
/
dsshow-shapes.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
local shapes = {}
function shapes.rotate_vector(x, y, angle)
local cos_theta = math.cos(angle)
local sin_theta = math.sin(angle)
local x_rotated = x * cos_theta - y * sin_theta
local y_rotated = x * sin_theta + y * cos_theta
return x_rotated, y_rotated
end
function shapes.rotate_bezier(bezier, angle)
local bezier_rotated = {}
for i = 1, #bezier - 1, 2 do
local x = bezier[i]
local y = bezier[i+1]
local x_rotated, y_rotated = shapes.rotate_vector(x, y, angle)
table.insert(bezier_rotated, x_rotated)
table.insert(bezier_rotated, y_rotated)
end
return table.unpack(bezier_rotated)
end
function shapes.pitchRollTo(vec, lookat)
local x, y, z = table.unpack(vec)
local tox, toy, toz = table.unpack(lookat)
local roll = -math.asin(tox)
local pitch = math.atan(toz, toy)
local outx, outy, outz = 0, 0, 0
outx, outz = shapes.rotate_vector(x, z, roll)
outy, outz = shapes.rotate_vector(outz, y, pitch)
return {outx, outy, outz}
end
function shapes.normalizeQuaternion(quat)
local length = math.sqrt(quat[1]^2 + quat[2]^2 + quat[3]^2 + quat[4]^2)
return {quat[1] / length, quat[2] / length, quat[3] / length, quat[4] / length}
end
function shapes.normalize(vec)
local length = math.sqrt(vec[1]^2 + vec[2]^2 + vec[3]^2)
return {vec[1] / length, vec[2] / length, vec[3] / length}
end
function shapes.dot(vec1, vec2)
return vec1[1] * vec2[1] + vec1[2] * vec2[2] + vec1[3] * vec2[3]
end
function shapes.cross(vec1, vec2)
return {
vec1[2] * vec2[3] - vec1[3] * vec2[2],
vec1[3] * vec2[1] - vec1[1] * vec2[3],
vec1[1] * vec2[2] - vec1[2] * vec2[1]
}
end
function shapes.quaternionFromAxisAngle(axis, angle)
local halfAngle = angle / 2
local sinHalfAngle = math.sin(halfAngle)
return shapes.normalizeQuaternion({
math.cos(halfAngle),
axis[1] * sinHalfAngle,
axis[2] * sinHalfAngle,
axis[3] * sinHalfAngle
})
end
function shapes.quaternionMultiply(q1, q2)
return {
q1[1] * q2[1] - q1[2] * q2[2] - q1[3] * q2[3] - q1[4] * q2[4],
q1[1] * q2[2] + q1[2] * q2[1] + q1[3] * q2[4] - q1[4] * q2[3],
q1[1] * q2[3] - q1[2] * q2[4] + q1[3] * q2[1] + q1[4] * q2[2],
q1[1] * q2[4] + q1[2] * q2[3] - q1[3] * q2[2] + q1[4] * q2[1]
}
end
function shapes.quaternionScale(q, f)
return {q[1] * f, q[2] * f, q[3] * f, q[4] * f}
end
function shapes.quaternionAdd(q1, q2)
return {
q1[1] + q2[1],
q1[1] + q2[2],
q1[1] + q2[3],
q1[1] + q2[4]
}
end
function shapes.rotateVectorByQuaternion(vec, quat)
local vecQuat = {0, vec[1], vec[2], vec[3]}
local quatConjugate = {quat[1], -quat[2], -quat[3], -quat[4]}
local rotatedQuat = shapes.quaternionMultiply(shapes.quaternionMultiply(quat, vecQuat), quatConjugate)
return {rotatedQuat[2], rotatedQuat[3], rotatedQuat[4]}
end
function shapes.lookAt(input, target)
local dotProd = shapes.dot(input, target)
-- Check if vectors are already aligned (or close enough)
if dotProd > 0.9999 then
return nil -- No rotation needed
end
-- Check if vectors are opposite (or close to opposite)
if dotProd < -0.9999 then
-- Find a perpendicular axis
local perpAxis = cross(input, {1, 0, 0})
if perpAxis[1] == 0 and perpAxis[2] == 0 and perpAxis[3] == 0 then
perpAxis = cross(input, {0, 1, 0})
end
-- Rotate 180 degrees around the perpendicular axis
return shapes.quaternionFromAxisAngle(perpAxis, math.pi)
end
-- Calculate the axis of rotation
local rotationAxis = shapes.cross(input, target)
-- Calculate the angle between input and target
local angle = math.acos(dotProd)
-- Create and return the rotation quaternion
return shapes.quaternionFromAxisAngle(rotationAxis, angle)
end
shapes.paths = {}
shapes.path_groups = {}
local curve = Path(570.9662, 240.2889)
curve:cubic_to(568.0663999999999, 167.78220000000002, 547.2706999999999, 97.13810000000001, 514.8884999999999, 32.558100000000024)
curve:cubic_to(513.0965999999999, 28.681300000000025, 509.6394999999999, 25.983000000000025, 505.3590999999999, 25.598100000000024)
curve:cubic_to(433.9771, 13.4576, 352.7758, 5.9084, 288.0297, 5.9084)
curve:cubic_to(223.28359999999998, 5.9084, 141.7228, 13.402, 70.7012, 25.599)
curve:cubic_to(66.508, 26.0567, 62.8816, 28.6199, 61.1713, 32.5584)
curve:cubic_to(19.4706, 115.5467, -2.81, 210.0422, 6.3001, 303.1091)
curve:cubic_to(10.192599999999999, 328.5756, 16.4256, 361.9836, 44.9906, 369.6358)
curve:cubic_to(56.6938, 372.90770000000003, 69.5299, 376.5337, 81.656, 374.0638)
curve:cubic_to(89.86800000000001, 370.47880000000004, 93.3832, 355.8677, 97.44130000000001, 348.2454)
curve:cubic_to(107.55600000000001, 325.1585, 117.13060000000002, 299.6763, 125.35880000000002, 275.83770000000004)
curve:cubic_to(131.66150000000002, 256.10420000000005, 146.27470000000002, 241.18410000000006, 167.9516, 241.18410000000006)
curve:cubic_to(186.4344, 241.18410000000006, 188.1441, 244.10480000000007, 227.90570000000002, 244.10480000000007)
curve:cubic_to(227.90570000000002, 244.10480000000007, 348.1549, 244.10480000000007, 348.1549, 244.10480000000007)
curve:cubic_to(388.5822, 244.10480000000007, 389.2961, 241.18140000000008, 408.1098, 241.18140000000008)
curve:cubic_to(422.5759, 241.18140000000008, 436.5356, 248.04850000000008, 443.7308, 260.99070000000006)
curve:cubic_to(451.76259999999996, 274.6657000000001, 456.2291, 293.22270000000003, 462.1706, 307.87570000000005)
curve:cubic_to(469.6896, 326.9648, 477.8026, 347.88130000000007, 486.95, 366.249)
curve:cubic_to(492.9906, 381.9024, 518.8772, 372.57410000000004, 531.0702, 369.6367)
curve:cubic_to(575.7562, 356.6631, 572.4789, 277.9886, 570.9662, 240.2889)
curve:cubic_to(570.9662, 240.2889, 570.9662, 240.2889, 570.9662, 240.2889)
shapes.paths.background = curve
curve = Path(395.4958, 12.6305)
curve:cubic_to(387.18289999999996, 11.5252, 188.78869999999998, 11.5252, 180.47579999999996, 12.6305)
curve:cubic_to(163.15429999999998, 14.9336, 169.05059999999997, 32.4896, 171.27309999999997, 43.6134)
curve:cubic_to(172.86149999999998, 51.5638, 179.71029999999996, 84.33959999999999, 182.62239999999997, 98.2983)
curve:cubic_to(185.53459999999998, 112.257, 186.77129999999997, 116.12, 192.48569999999998, 122.6742)
curve:cubic_to(198.2001, 129.2284, 206.92069999999998, 132.4021, 217.49379999999996, 132.4021)
curve:cubic_to(222.35389999999995, 132.4021, 353.6175999999999, 132.4021, 358.47769999999997, 132.4021)
curve:cubic_to(369.0508, 132.4021, 377.77139999999997, 129.2284, 383.4858, 122.67419999999998)
curve:cubic_to(389.2002, 116.11989999999999, 390.437, 112.25699999999999, 393.34909999999996, 98.29829999999998)
curve:cubic_to(396.2612, 84.33959999999999, 403.10999999999996, 51.56389999999998, 404.6984, 43.613399999999984)
curve:cubic_to(406.921, 32.4896, 412.8173, 14.9336, 395.4958, 12.6305)
curve:cubic_to(395.4958, 12.6305, 395.4958, 12.6305, 395.4958, 12.6305)
shapes.paths.led = curve
shapes.path_groups.cover = {}
curve = Path(539.9827, 366.8081)
curve:cubic_to(587.1957, 343.0944, 572.6218, 221.99840000000003, 565.5447, 177.32750000000001)
curve:cubic_to(556.6359, 126.61390000000002, 538.0309000000001, 77.82620000000001, 516.3279, 31.30510000000001)
curve:cubic_to(515.0798, 28.78350000000001, 513.3797, 26.29470000000001, 510.8129, 24.98810000000001)
curve:cubic_to(488.3926, 19.61810000000001, 462.5698, 13.78460000000001, 439.737, 11.26480000000001)
curve:cubic_to(430.2214, 10.65570000000001, 412.5038, 5.90840000000001, 406.95590000000004, 32.06730000000001)
curve:cubic_to(404.72600000000006, 42.58160000000001, 397.19450000000006, 78.88610000000001, 392.77840000000003, 100.63500000000002)
curve:cubic_to(390.3672, 112.50990000000002, 396.1313, 122.45520000000002, 402.2114, 129.358)
curve:cubic_to(413.47990000000004, 143.05610000000001, 428.2223, 161.0418, 437.73290000000003, 175.7793)
curve:cubic_to(454.6548, 201.7613, 469.16200000000003, 230.1129, 481.57300000000004, 258.5081)
curve:cubic_to(495.67690000000005, 289.1005, 505.55850000000004, 329.0163, 518.7487, 360.0885)
curve:cubic_to(523.2425, 369.2517, 530.6622, 372.3896, 539.9827, 366.8081)
curve:cubic_to(539.9827, 366.8081, 539.9827, 366.8081, 539.9827, 366.8081)
table.insert(shapes.path_groups.cover, curve)
curve = Path(57.2229, 360.0885)
curve:cubic_to(70.4131, 329.0163, 80.2947, 289.10040000000004, 94.3986, 258.5081)
curve:cubic_to(106.8096, 230.11290000000002, 121.3168, 201.7613, 138.2387, 175.7793)
curve:cubic_to(147.7493, 161.0417, 162.49169999999998, 143.05610000000001, 173.7602, 129.358)
curve:cubic_to(179.8404, 122.4552, 185.6044, 112.5099, 183.1932, 100.635)
curve:cubic_to(178.7772, 78.8861, 171.2457, 42.5816, 169.01569999999998, 32.0673)
curve:cubic_to(163.46769999999998, 5.908500000000004, 145.75019999999998, 10.655700000000003, 136.23459999999997, 11.264800000000005)
curve:cubic_to(113.40179999999998, 13.784700000000004, 87.57899999999998, 19.618200000000005, 65.15869999999997, 24.988100000000003)
curve:cubic_to(62.59189999999997, 26.294700000000002, 60.891699999999965, 28.783500000000004, 59.64369999999997, 31.305100000000003)
curve:cubic_to(37.940699999999964, 77.8262, 19.335699999999967, 126.6139, 10.426899999999968, 177.32750000000001)
curve:cubic_to(3.349799999999968, 221.9984, -11.224100000000032, 343.0944, 35.98889999999997, 366.8081)
curve:cubic_to(45.3093, 372.3896, 52.729, 369.2517, 57.2229, 360.0885)
curve:cubic_to(57.2229, 360.0885, 57.2229, 360.0885, 57.2229, 360.0885)
table.insert(shapes.path_groups.cover, curve)
shapes.path_groups.inlays = {}
curve = Path(267.3942, 139.2167)
curve:cubic_to(268.9468, 139.2167, 270.2054, 140.4753, 270.2054, 142.0278)
curve:cubic_to(270.2054, 143.58030000000002, 268.9468, 144.83900000000003, 267.3942, 144.83900000000003)
curve:cubic_to(265.8416, 144.83900000000003, 264.5831, 143.58040000000003, 264.5831, 142.0278)
curve:cubic_to(264.5831, 140.4752, 265.8417, 139.2167, 267.3942, 139.2167)
curve:cubic_to(267.3942, 139.2167, 267.3942, 139.2167, 267.3942, 139.2167)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(277.6919, 139.2167)
curve:cubic_to(279.24449999999996, 139.2167, 280.50309999999996, 140.4753, 280.50309999999996, 142.0278)
curve:cubic_to(280.50309999999996, 143.58030000000002, 279.24449999999996, 144.83900000000003, 277.6919, 144.83900000000003)
curve:cubic_to(276.1393, 144.83900000000003, 274.88079999999997, 143.58040000000003, 274.88079999999997, 142.0278)
curve:cubic_to(274.88079999999997, 140.4752, 276.1393, 139.2167, 277.6919, 139.2167)
curve:cubic_to(277.6919, 139.2167, 277.6919, 139.2167, 277.6919, 139.2167)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(287.9858, 139.2167)
curve:cubic_to(289.5383, 139.2167, 290.79699999999997, 140.4753, 290.79699999999997, 142.0278)
curve:cubic_to(290.79699999999997, 143.58030000000002, 289.53839999999997, 144.83900000000003, 287.9858, 144.83900000000003)
curve:cubic_to(286.4332, 144.83900000000003, 285.1746, 143.58040000000003, 285.1746, 142.0278)
curve:cubic_to(285.1746, 140.4752, 286.4332, 139.2167, 287.9858, 139.2167)
curve:cubic_to(287.9858, 139.2167, 287.9858, 139.2167, 287.9858, 139.2167)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(298.2834, 139.2167)
curve:cubic_to(299.83599999999996, 139.2167, 301.09459999999996, 140.4753, 301.09459999999996, 142.0278)
curve:cubic_to(301.09459999999996, 143.58030000000002, 299.83599999999996, 144.83900000000003, 298.2834, 144.83900000000003)
curve:cubic_to(296.7308, 144.83900000000003, 295.4722, 143.58040000000003, 295.4722, 142.0278)
curve:cubic_to(295.4722, 140.4752, 296.7308, 139.2167, 298.2834, 139.2167)
curve:cubic_to(298.2834, 139.2167, 298.2834, 139.2167, 298.2834, 139.2167)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(308.5773, 139.2167)
curve:cubic_to(310.12989999999996, 139.2167, 311.38849999999996, 140.4753, 311.38849999999996, 142.0278)
curve:cubic_to(311.38849999999996, 143.58030000000002, 310.12989999999996, 144.83900000000003, 308.5773, 144.83900000000003)
curve:cubic_to(307.0247, 144.83900000000003, 305.7661, 143.58040000000003, 305.7661, 142.0278)
curve:cubic_to(305.7661, 140.4752, 307.0247, 139.2167, 308.5773, 139.2167)
curve:cubic_to(308.5773, 139.2167, 308.5773, 139.2167, 308.5773, 139.2167)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(272.543, 148.1535)
curve:cubic_to(274.0956, 148.1535, 275.3542, 149.4121, 275.3542, 150.96460000000002)
curve:cubic_to(275.3542, 152.51710000000003, 274.0956, 153.77570000000003, 272.543, 153.77570000000003)
curve:cubic_to(270.9904, 153.77570000000003, 269.7319, 152.51710000000003, 269.7319, 150.96460000000002)
curve:cubic_to(269.7319, 149.4121, 270.9905, 148.1535, 272.543, 148.1535)
curve:cubic_to(272.543, 148.1535, 272.543, 148.1535, 272.543, 148.1535)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(282.8407, 148.1535)
curve:cubic_to(284.3933, 148.1535, 285.6519, 149.4121, 285.6519, 150.96460000000002)
curve:cubic_to(285.6519, 152.51710000000003, 284.3933, 153.77570000000003, 282.8407, 153.77570000000003)
curve:cubic_to(281.28810000000004, 153.77570000000003, 280.02950000000004, 152.51710000000003, 280.02950000000004, 150.96460000000002)
curve:cubic_to(280.02950000000004, 149.4121, 281.2881, 148.1535, 282.8407, 148.1535)
curve:cubic_to(282.8407, 148.1535, 282.8407, 148.1535, 282.8407, 148.1535)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(293.1346, 148.1535)
curve:cubic_to(294.68719999999996, 148.1535, 295.94579999999996, 149.4121, 295.94579999999996, 150.96460000000002)
curve:cubic_to(295.94579999999996, 152.51710000000003, 294.68719999999996, 153.77570000000003, 293.1346, 153.77570000000003)
curve:cubic_to(291.582, 153.77570000000003, 290.3234, 152.51710000000003, 290.3234, 150.96460000000002)
curve:cubic_to(290.3234, 149.4121, 291.582, 148.1535, 293.1346, 148.1535)
curve:cubic_to(293.1346, 148.1535, 293.1346, 148.1535, 293.1346, 148.1535)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(303.4285, 148.1535)
curve:cubic_to(304.981, 148.1535, 306.23969999999997, 149.4121, 306.23969999999997, 150.96460000000002)
curve:cubic_to(306.23969999999997, 152.51710000000003, 304.98109999999997, 153.77570000000003, 303.4285, 153.77570000000003)
curve:cubic_to(301.8759, 153.77570000000003, 300.6173, 152.51710000000003, 300.6173, 150.96460000000002)
curve:cubic_to(300.6173, 149.4121, 301.8759, 148.1535, 303.4285, 148.1535)
curve:cubic_to(303.4285, 148.1535, 303.4285, 148.1535, 303.4285, 148.1535)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(370.4618, 135.0117)
curve:cubic_to(399.2356, 135.0117, 422.56129999999996, 158.33749999999998, 422.56129999999996, 187.1112)
curve:cubic_to(422.56129999999996, 215.88490000000002, 399.2356, 239.2108, 370.4618, 239.2108)
curve:cubic_to(341.688, 239.2108, 318.3623, 215.885, 318.3623, 187.1112)
curve:cubic_to(318.3623, 158.3374, 341.688, 135.0117, 370.4618, 135.0117)
curve:cubic_to(370.4618, 135.0117, 370.4618, 135.0117, 370.4618, 135.0117)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(205.2688, 135.0117)
curve:cubic_to(234.0426, 135.0117, 257.3683, 158.33749999999998, 257.3683, 187.1112)
curve:cubic_to(257.3683, 215.88490000000002, 234.04249999999996, 239.2108, 205.26879999999997, 239.2108)
curve:cubic_to(176.49509999999998, 239.2108, 153.16919999999996, 215.885, 153.16919999999996, 187.1112)
curve:cubic_to(153.16919999999996, 158.3374, 176.495, 135.0117, 205.2688, 135.0117)
curve:cubic_to(205.2688, 135.0117, 205.2688, 135.0117, 205.2688, 135.0117)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(163.8528, 48.6543)
curve:cubic_to(163.8528, 48.6543, 161.0131, 35.3799, 161.0131, 35.3799)
curve:cubic_to(160.1087, 31.1523, 155.93370000000002, 28.4488, 151.70610000000002, 29.3532)
curve:cubic_to(147.47850000000003, 30.2576, 144.77550000000002, 34.432500000000005, 145.67980000000003, 38.6601)
curve:cubic_to(145.67980000000003, 38.6601, 148.51950000000002, 51.9345, 148.51950000000002, 51.9345)
curve:cubic_to(149.42390000000003, 56.1621, 153.59840000000003, 58.8657, 157.82600000000002, 57.9613)
curve:cubic_to(162.05360000000002, 57.056900000000006, 164.7572, 52.8818, 163.8528, 48.6543)
curve:cubic_to(163.8528, 48.6543, 163.8528, 48.6543, 163.8528, 48.6543)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(418.1454, 57.9612)
curve:cubic_to(422.373, 58.8656, 426.5475, 56.162, 427.4519, 51.9344)
curve:cubic_to(427.4519, 51.9344, 430.2916, 38.66, 430.2916, 38.66)
curve:cubic_to(431.196, 34.432399999999994, 428.4929, 30.257499999999997, 424.2654, 29.353099999999998)
curve:cubic_to(420.0378, 28.4487, 415.8628, 31.152199999999997, 414.9584, 35.379799999999996)
curve:cubic_to(414.9584, 35.379799999999996, 412.1187, 48.654199999999996, 412.1187, 48.654199999999996)
curve:cubic_to(411.2143, 52.8818, 413.9178, 57.0569, 418.1454, 57.9612)
curve:cubic_to(418.1454, 57.9612, 418.1454, 57.9612, 418.1454, 57.9612)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(300.5722, 219.4772)
curve:cubic_to(300.5722, 219.4772, 275.39930000000004, 219.4772, 275.39930000000004, 219.4772)
curve:cubic_to(272.5966, 219.4772, 270.3163, 217.1964, 270.3163, 214.39370000000002)
curve:cubic_to(270.3163, 214.39370000000002, 270.3163, 213.0783, 270.3163, 213.0783)
curve:cubic_to(270.3163, 210.2761, 272.5966, 207.9958, 275.39930000000004, 207.9958)
curve:cubic_to(275.39930000000004, 207.9958, 300.57220000000007, 207.9958, 300.57220000000007, 207.9958)
curve:cubic_to(303.3749000000001, 207.9958, 305.6552000000001, 210.2761, 305.6552000000001, 213.0783)
curve:cubic_to(305.6552000000001, 213.0783, 305.6552000000001, 214.39370000000002, 305.6552000000001, 214.39370000000002)
curve:cubic_to(305.6552, 217.1964, 303.3749, 219.4772, 300.5722, 219.4772)
curve:cubic_to(300.5722, 219.4772, 300.5722, 219.4772, 300.5722, 219.4772)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(68.7354, 123.5449)
curve:cubic_to(62.6843, 123.5966, 58.612899999999996, 119.8147, 58.544, 113.6269)
curve:cubic_to(58.465799999999994, 109.8306, 58.5029, 103.00540000000001, 58.523399999999995, 99.32520000000001)
curve:cubic_to(58.4492, 95.86720000000001, 59.45889999999999, 93.03710000000001, 61.443299999999994, 91.1401)
curve:cubic_to(63.403299999999994, 89.268, 66.2177, 88.4013, 69.5908, 88.6294)
curve:cubic_to(70.4277, 88.6362, 85.1367, 90.2026, 85.2676, 90.2183)
curve:cubic_to(88.9336, 91.2874, 88.4603, 92.4031, 92.968, 96.3537)
curve:cubic_to(98.3418, 101.5684, 99.1143, 102.3184, 99.1465, 102.3506)
curve:cubic_to(101.18430000000001, 104.2227, 101.1506, 108.0207, 99.0566, 109.8608)
curve:cubic_to(99.0567, 109.8608, 88.1104, 120.4853, 88.1104, 120.4853)
curve:cubic_to(87.2709, 121.3027, 86.1459, 121.82939999999999, 84.9815, 121.94529999999999)
curve:cubic_to(83.4738, 122.0771, 69.8938, 123.5896, 68.7354, 123.5449)
curve:cubic_to(68.7354, 123.5449, 68.7354, 123.5449, 68.7354, 123.5449)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(90.0988, 67.2312)
curve:cubic_to(90.0471, 61.1801, 93.829, 57.1087, 100.01679999999999, 57.0398)
curve:cubic_to(103.81309999999999, 56.9616, 110.63829999999999, 56.9987, 114.31849999999999, 57.0192)
curve:cubic_to(117.77649999999998, 56.945, 120.60659999999999, 57.954699999999995, 122.50359999999999, 59.939099999999996)
curve:cubic_to(124.3757, 61.8991, 125.24239999999999, 64.7135, 125.01429999999999, 68.0866)
curve:cubic_to(125.0075, 68.9235, 123.44109999999999, 83.63250000000001, 123.4254, 83.7634)
curve:cubic_to(122.35629999999999, 87.4294, 121.2406, 86.9561, 117.28999999999999, 91.4638)
curve:cubic_to(112.0753, 96.83760000000001, 111.3253, 97.6101, 111.2931, 97.6423)
curve:cubic_to(109.42099999999999, 99.68010000000001, 105.62299999999999, 99.6464, 103.7829, 97.5524)
curve:cubic_to(103.7829, 97.55250000000001, 93.1584, 86.6062, 93.1584, 86.6062)
curve:cubic_to(92.341, 85.7667, 91.8143, 84.6417, 91.6984, 83.4773)
curve:cubic_to(91.5666, 81.9697, 90.0541, 68.3897, 90.0988, 67.2312)
curve:cubic_to(90.0988, 67.2312, 90.0988, 67.2312, 90.0988, 67.2312)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(146.4124, 88.5946)
curve:cubic_to(152.46349999999998, 88.5429, 156.5349, 92.3248, 156.60379999999998, 98.51259999999999)
curve:cubic_to(156.682, 102.3089, 156.64489999999998, 109.13409999999999, 156.62439999999998, 112.81429999999999)
curve:cubic_to(156.69859999999997, 116.27229999999999, 155.6889, 119.10239999999999, 153.70449999999997, 120.9994)
curve:cubic_to(151.74449999999996, 122.8715, 148.93009999999998, 123.73819999999999, 145.55699999999996, 123.5101)
curve:cubic_to(144.72009999999995, 123.5033, 130.01109999999997, 121.9369, 129.88019999999995, 121.9212)
curve:cubic_to(126.21419999999995, 120.8521, 126.68749999999994, 119.7364, 122.17979999999994, 115.7858)
curve:cubic_to(116.80599999999994, 110.5711, 116.03359999999995, 109.8211, 116.00129999999994, 109.7889)
curve:cubic_to(113.96349999999994, 107.9168, 113.99719999999995, 104.1188, 116.09119999999994, 102.2787)
curve:cubic_to(116.09109999999994, 102.2787, 127.03739999999995, 91.6542, 127.03739999999995, 91.6542)
curve:cubic_to(127.87689999999995, 90.8368, 129.00189999999995, 90.3101, 130.16629999999995, 90.19420000000001)
curve:cubic_to(131.674, 90.0625, 145.254, 88.55, 146.4124, 88.5946)
curve:cubic_to(146.4124, 88.5946, 146.4124, 88.5946, 146.4124, 88.5946)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(125.0491, 144.9083)
curve:cubic_to(125.10079999999999, 150.9594, 121.3189, 155.0308, 115.1311, 155.09969999999998)
curve:cubic_to(111.3348, 155.1779, 104.5096, 155.14079999999998, 100.8294, 155.1203)
curve:cubic_to(97.37140000000001, 155.19449999999998, 94.5413, 154.1848, 92.6443, 152.20039999999997)
curve:cubic_to(90.7722, 150.24039999999997, 89.9055, 147.426, 90.1336, 144.05289999999997)
curve:cubic_to(90.1404, 143.21599999999995, 91.7068, 128.50699999999998, 91.7225, 128.37609999999995)
curve:cubic_to(92.7916, 124.71009999999995, 93.90729999999999, 125.18339999999995, 97.8579, 120.67569999999995)
curve:cubic_to(103.0726, 115.30189999999995, 103.8226, 114.52939999999995, 103.8548, 114.49719999999995)
curve:cubic_to(105.7269, 112.45939999999995, 109.5249, 112.49309999999996, 111.365, 114.58709999999995)
curve:cubic_to(111.365, 114.58699999999995, 121.98949999999999, 125.53329999999995, 121.98949999999999, 125.53329999999995)
curve:cubic_to(122.8069, 126.37279999999996, 123.33359999999999, 127.49779999999996, 123.44949999999999, 128.66219999999996)
curve:cubic_to(123.5812, 130.1698, 125.0937, 143.7498, 125.0491, 144.9083)
curve:cubic_to(125.0491, 144.9083, 125.0491, 144.9083, 125.0491, 144.9083)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(488.1866, 64.0241)
curve:cubic_to(488.1866, 52.25410000000001, 478.6104, 42.6784, 466.8409, 42.6784)
curve:cubic_to(455.07039999999995, 42.6784, 445.4942, 52.2541, 445.4942, 64.0241)
curve:cubic_to(445.4942, 75.79410000000001, 455.07039999999995, 85.3698, 466.8409, 85.3698)
curve:cubic_to(478.6104, 85.3698, 488.1866, 75.7941, 488.1866, 64.0241)
curve:cubic_to(488.1866, 64.0241, 488.1866, 64.0241, 488.1866, 64.0241)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(489.6895, 147.6388)
curve:cubic_to(489.6895, 135.04070000000002, 479.4395, 124.7911, 466.84090000000003, 124.7911)
curve:cubic_to(454.24230000000006, 124.7911, 443.99230000000006, 135.0406, 443.99230000000006, 147.6388)
curve:cubic_to(443.99230000000006, 160.2374, 454.24230000000006, 170.4869, 466.84090000000003, 170.4869)
curve:cubic_to(479.4395, 170.4869, 489.6895, 160.2374, 489.6895, 147.6388)
curve:cubic_to(489.6895, 147.6388, 489.6895, 147.6388, 489.6895, 147.6388)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(529.9922, 105.8331)
curve:cubic_to(529.9922, 94.0631, 520.416, 84.4879, 508.6465, 84.4879)
curve:cubic_to(496.876, 84.4879, 487.2998, 94.06309999999999, 487.2998, 105.8331)
curve:cubic_to(487.2998, 117.60310000000001, 496.876, 127.1788, 508.6465, 127.1788)
curve:cubic_to(520.416, 127.1788, 529.9922, 117.6032, 529.9922, 105.8331)
curve:cubic_to(529.9922, 105.8331, 529.9922, 105.8331, 529.9922, 105.8331)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(447.8799, 105.8331)
curve:cubic_to(447.8799, 93.235, 437.6299, 82.9854, 425.03130000000004, 82.9854)
curve:cubic_to(412.43270000000007, 82.9854, 402.18270000000007, 93.2349, 402.18270000000007, 105.8331)
curve:cubic_to(402.18270000000007, 118.4317, 412.43270000000007, 128.6812, 425.03130000000004, 128.6812)
curve:cubic_to(437.6299, 128.6812, 447.8799, 118.4318, 447.8799, 105.8331)
curve:cubic_to(447.8799, 105.8331, 447.8799, 105.8331, 447.8799, 105.8331)
table.insert(shapes.path_groups.inlays, curve)
curve = Path(289.2407, 194.5298)
curve:cubic_to(289.2407, 194.5298, 282.9994, 192.51059999999998, 282.9994, 192.51059999999998)
curve:cubic_to(282.9994, 192.51059999999998, 282.0917, 191.2626, 282.0917, 191.2626)
curve:cubic_to(276.5448, 192.5652, 263.91110000000003, 188.65099999999998, 270.4922, 182.2396)
curve:cubic_to(273.6111, 180.1188, 277.9576, 179.2103, 281.0375, 177.90709999999999)
curve:cubic_to(281.0375, 177.90709999999999, 281.0375, 165.48659999999998, 281.0375, 165.48659999999998)
curve:cubic_to(281.0375, 163.7309, 282.69960000000003, 162.451, 284.39610000000005, 162.90339999999998)
curve:cubic_to(294.24390000000005, 164.96159999999998, 302.54580000000004, 168.28979999999999, 299.65860000000004, 179.0965)
curve:cubic_to(303.8946, 179.5383, 309.59420000000006, 182.76909999999998, 306.40110000000004, 187.2198)
curve:cubic_to(304.2291, 190.0765, 292.2684, 193.0575, 289.2407, 194.5298)
curve:cubic_to(289.2407, 194.5298, 289.2407, 194.5298, 289.2407, 194.5298)
shapes.paths.inlay_ps = curve
curve = Path(294.2409, 165.1219)
curve:cubic_to(293.4611, 165.1219, 292.82890000000003, 165.75410000000002, 292.82890000000003, 166.53400000000002)
curve:cubic_to(292.82890000000003, 166.53400000000002, 292.82890000000003, 169.53500000000003, 292.82890000000003, 169.53500000000003)
curve:cubic_to(292.74300000000005, 169.5321, 292.65700000000004, 169.53010000000003, 292.5701, 169.53010000000003)
curve:cubic_to(291.9409, 169.53010000000003, 291.3437, 169.60360000000003, 290.7798, 169.74380000000002)
curve:cubic_to(290.1519, 169.89990000000003, 289.51410000000004, 169.64820000000003, 289.1673, 169.10210000000004)
curve:cubic_to(288.7588, 168.45880000000002, 288.2968, 167.97400000000005, 287.863, 167.62190000000004)
curve:cubic_to(286.3552, 166.39730000000003, 284.2038, 165.80160000000004, 281.2849, 165.80160000000004)
curve:cubic_to(281.2849, 165.80160000000004, 275.4972, 165.80160000000004, 275.4972, 165.80160000000004)
curve:cubic_to(274.7174, 165.80160000000004, 274.08520000000004, 166.43380000000005, 274.08520000000004, 167.21370000000005)
curve:cubic_to(274.08520000000004, 167.21370000000005, 274.08520000000004, 186.15030000000004, 274.08520000000004, 186.15030000000004)
curve:cubic_to(274.08520000000004, 186.93020000000004, 274.71740000000005, 187.56240000000005, 275.4972, 187.56240000000005)
curve:cubic_to(275.4972, 187.56240000000005, 281.5217, 187.56240000000005, 281.5217, 187.56240000000005)
curve:cubic_to(282.30150000000003, 187.56240000000005, 282.9337, 186.93020000000004, 282.9337, 186.15030000000004)
curve:cubic_to(282.9337, 186.15030000000004, 282.9337, 182.69340000000005, 282.9337, 182.69340000000005)
curve:cubic_to(282.9337, 182.00640000000004, 283.4332, 181.43160000000006, 284.10839999999996, 181.30480000000006)
curve:cubic_to(284.1169, 181.30320000000006, 284.12539999999996, 181.30160000000006, 284.13379999999995, 181.30000000000007)
curve:cubic_to(284.86289999999997, 181.16150000000007, 285.54729999999995, 181.63890000000006, 285.74039999999997, 182.35540000000006)
curve:cubic_to(286.00839999999994, 183.34960000000007, 286.39639999999997, 184.23310000000006, 286.91569999999996, 184.98820000000006)
curve:cubic_to(288.21599999999995, 186.87690000000006, 290.13399999999996, 187.87490000000005, 292.46259999999995, 187.87490000000005)
curve:cubic_to(293.11639999999994, 187.87490000000005, 293.73749999999995, 187.78790000000006, 294.32159999999993, 187.61680000000004)
curve:cubic_to(294.43929999999995, 187.58230000000003, 294.5593999999999, 187.56240000000005, 294.68199999999996, 187.56240000000005)
curve:cubic_to(294.68199999999996, 187.56240000000005, 300.2331, 187.56240000000005, 300.2331, 187.56240000000005)
curve:cubic_to(301.0129, 187.56240000000005, 301.64509999999996, 186.93020000000004, 301.64509999999996, 186.15030000000004)
curve:cubic_to(301.64509999999996, 186.15030000000004, 301.64509999999996, 166.534, 301.64509999999996, 166.534)
curve:cubic_to(301.64509999999996, 165.7541, 301.01289999999995, 165.12189999999998, 300.2331, 165.12189999999998)
curve:cubic_to(300.2331, 165.12189999999998, 294.2409, 165.12189999999998, 294.2409, 165.12189999999998)
curve:cubic_to(294.2409, 165.12189999999998, 294.2409, 165.1219, 294.2409, 165.1219)
shapes.paths.inlay_pd = curve
shapes.path_groups.button_pd = {}
curve = Path(276.9199, 168.6361)
curve:cubic_to(276.9199, 168.6361, 281.28479999999996, 168.6361, 281.28479999999996, 168.6361)
curve:cubic_to(283.50489999999996, 168.6361, 285.10179999999997, 169.0311, 286.07559999999995, 169.8216)
curve:cubic_to(287.049, 170.6121, 287.53599999999994, 171.89479999999998, 287.53599999999994, 173.6694)
curve:cubic_to(287.53599999999994, 175.44400000000002, 287.04889999999995, 176.7268, 286.07559999999995, 177.5168)
curve:cubic_to(285.10179999999997, 178.30769999999998, 283.50489999999996, 178.7027, 281.28479999999996, 178.7027)
curve:cubic_to(281.28479999999996, 178.7027, 280.09929999999997, 178.7027, 280.09929999999997, 178.7027)
curve:cubic_to(280.09929999999997, 178.7027, 280.09929999999997, 184.7274, 280.09929999999997, 184.7274)
curve:cubic_to(280.09929999999997, 184.7274, 276.9199, 184.7274, 276.9199, 184.7274)
curve:cubic_to(276.9199, 184.7274, 276.9199, 168.6361, 276.9199, 168.6361)
curve:cubic_to(276.9199, 168.6361, 276.9199, 168.6361, 276.9199, 168.6361)
table.insert(shapes.path_groups.button_pd, curve)
curve = Path(295.6636, 174.3699)
curve:cubic_to(295.6636, 174.3699, 295.6636, 167.957, 295.6636, 167.957)
curve:cubic_to(295.6636, 167.957, 298.81059999999997, 167.957, 298.81059999999997, 167.957)
curve:cubic_to(298.81059999999997, 167.957, 298.81059999999997, 184.7275, 298.81059999999997, 184.7275)
curve:cubic_to(298.81059999999997, 184.7275, 295.6636, 184.7275, 295.6636, 184.7275)
curve:cubic_to(295.6636, 184.7275, 295.6636, 182.9385, 295.6636, 182.9385)
curve:cubic_to(295.32579999999996, 183.6353, 294.88919999999996, 184.16, 294.354, 184.5118)
curve:cubic_to(293.8185, 184.864, 293.18809999999996, 185.0401, 292.4625, 185.0401)
curve:cubic_to(291.0829, 185.0401, 290.0123, 184.487, 289.25059999999996, 183.3803)
curve:cubic_to(288.489, 182.27370000000002, 288.10839999999996, 180.7148, 288.10839999999996, 178.7028)
curve:cubic_to(288.10839999999996, 176.662, 288.4942, 175.0959, 289.26669999999996, 174.0037)
curve:cubic_to(290.03919999999994, 172.91150000000002, 291.14059999999995, 172.36520000000002, 292.57019999999994, 172.36520000000002)
curve:cubic_to(293.2169999999999, 172.36520000000002, 293.79729999999995, 172.53250000000003, 294.3107999999999, 172.8667)
curve:cubic_to(294.8247, 173.2004, 295.2754, 173.7019, 295.6636, 174.3699)
curve:cubic_to(295.6636, 174.3699, 295.6636, 174.3699, 295.6636, 174.3699)
table.insert(shapes.path_groups.button_pd, curve)
shapes.path_groups.button_pd_content = {}
curve = Path(280.0993, 171.3089)
curve:cubic_to(280.0993, 171.3089, 280.0993, 176.0296, 280.0993, 176.0296)
curve:cubic_to(280.0993, 176.0296, 281.4033, 176.0296, 281.4033, 176.0296)
curve:cubic_to(282.4451, 176.0296, 283.1763, 175.85389999999998, 283.5966, 175.5017)
curve:cubic_to(284.0169, 175.1495, 284.22700000000003, 174.5387, 284.22700000000003, 173.6694)
curve:cubic_to(284.22700000000003, 172.8001, 284.0169, 172.1893, 283.5966, 171.8371)
curve:cubic_to(283.1764, 171.48489999999998, 282.4451, 171.3088, 281.4033, 171.3088)
curve:cubic_to(281.4033, 171.3088, 280.0993, 171.3088, 280.0993, 171.3088)
curve:cubic_to(280.0993, 171.3088, 280.0993, 171.3089, 280.0993, 171.3089)
table.insert(shapes.path_groups.button_pd_content, curve)
curve = Path(291.2662, 178.7244)
curve:cubic_to(291.2662, 179.88830000000002, 291.4603, 180.8008, 291.84810000000004, 181.462)
curve:cubic_to(292.2359000000001, 182.12279999999998, 292.7714, 182.4534, 293.45380000000006, 182.4534)
curve:cubic_to(294.13660000000004, 182.4534, 294.67530000000005, 182.12279999999998, 295.07070000000004, 181.462)
curve:cubic_to(295.4657, 180.80079999999998, 295.6634, 179.8883, 295.6634, 178.7244)
curve:cubic_to(295.6634, 177.5601, 295.4657, 176.6476, 295.07070000000004, 175.98680000000002)
curve:cubic_to(294.67530000000005, 175.3256, 294.13660000000004, 174.995, 293.45380000000006, 174.995)
curve:cubic_to(292.7714000000001, 174.995, 292.2359000000001, 175.3256, 291.84810000000004, 175.98680000000002)
curve:cubic_to(291.4603, 176.6476, 291.2662, 177.5601, 291.2662, 178.7244)
curve:cubic_to(291.2662, 178.7244, 291.2662, 178.7244, 291.2662, 178.7244)
table.insert(shapes.path_groups.button_pd_content, curve)
shapes.path_groups.button_ps = {}
curve = Path(283.8719, 165.6899)
curve:cubic_to(286.14869999999996, 166.1203, 289.4661, 167.1384, 291.25, 167.75119999999998)
curve:cubic_to(295.7857, 169.33739999999997, 297.323, 171.31199999999998, 297.323, 175.761)
curve:cubic_to(297.3447, 180.1971, 294.53729999999996, 181.7072, 291.35769999999997, 180.0991)
curve:cubic_to(291.35769999999997, 180.0991, 291.35769999999997, 172.0189, 291.35769999999997, 172.0189)
curve:cubic_to(291.35769999999997, 171.0708, 291.1858, 170.1972, 290.3123, 169.9497)
curve:cubic_to(289.6143, 169.73510000000002, 289.2343, 170.37820000000002, 289.227, 171.312)
curve:cubic_to(289.227, 171.312, 289.227, 191.5456, 289.227, 191.5456)
curve:cubic_to(289.227, 191.5456, 283.8719, 189.8133, 283.8719, 189.8133)
curve:cubic_to(283.8719, 189.8133, 283.8719, 165.6899, 283.8719, 165.6899)
curve:cubic_to(283.8719, 165.6899, 283.8719, 165.6899, 283.8719, 165.6899)
table.insert(shapes.path_groups.button_ps, curve)
curve = Path(282.8312, 180.2715)
curve:cubic_to(282.8312, 180.2715, 282.8312, 183.4433, 282.8312, 183.4433)
curve:cubic_to(282.8312, 183.4433, 277.30530000000005, 185.4589, 277.30530000000005, 185.4589)
curve:cubic_to(274.54320000000007, 186.8161, 279.38860000000005, 186.9809, 280.17960000000005, 186.4174)
curve:cubic_to(280.1797, 186.4176, 282.83020000000005, 185.43789999999998, 282.83020000000005, 185.43789999999998)
curve:cubic_to(282.83020000000005, 185.43789999999998, 282.83020000000005, 188.27599999999998, 282.83020000000005, 188.27599999999998)
curve:cubic_to(280.66760000000005, 189.10649999999998, 268.9392, 188.26919999999998, 272.20070000000004, 184.5022)
curve:cubic_to(274.7969, 182.7996, 280.2143, 181.373, 282.8312, 180.2715)
curve:cubic_to(282.8312, 180.2715, 282.8312, 180.2715, 282.8312, 180.2715)
table.insert(shapes.path_groups.button_ps, curve)
curve = Path(296.2697, 181.6479)
curve:cubic_to(298.488, 181.5631, 305.8103, 182.6893, 304.163, 185.4799)
curve:cubic_to(303.5205, 186.3055, 301.9464, 186.8947, 301.9464, 186.8947)
curve:cubic_to(301.9464, 186.8947, 290.24129999999997, 191.1792, 290.24129999999997, 191.1792)
curve:cubic_to(290.24129999999997, 191.1792, 290.24129999999997, 188.0205, 290.24129999999997, 188.0205)
curve:cubic_to(290.24129999999997, 188.0205, 298.85549999999995, 184.8933, 298.85549999999995, 184.8933)
curve:cubic_to(301.61979999999994, 183.53820000000002, 296.77239999999995, 183.37120000000002, 295.98119999999994, 183.937)
curve:cubic_to(295.98109999999997, 183.9368, 290.24129999999997, 185.99650000000003, 290.24129999999997, 185.99650000000003)
curve:cubic_to(290.24129999999997, 185.99650000000003, 290.24129999999997, 182.71740000000003, 290.24129999999997, 182.71740000000003)
curve:cubic_to(290.24129999999997, 182.71740000000003, 290.57189999999997, 182.60340000000002, 290.57189999999997, 182.60340000000002)
curve:cubic_to(290.57189999999997, 182.60340000000002, 292.2306, 182.00480000000002, 294.5626, 181.74250000000004)
curve:cubic_to(295.1087, 181.6784, 295.6826, 181.6479, 296.2697, 181.6479)
curve:cubic_to(296.2697, 181.6479, 296.2697, 181.6479, 296.2697, 181.6479)
table.insert(shapes.path_groups.button_ps, curve)
curve = Path(97.1572, 104.3701)
curve:cubic_to(96.5119, 104.0401, 86.0814, 92.92099999999999, 84.8606, 93.0222)
curve:cubic_to(83.1025, 92.8333, 69.65, 91.3791, 68.58600000000001, 91.4302)
curve:cubic_to(63.70010000000001, 91.409, 61.23000000000001, 94.39789999999999, 61.357500000000016, 99.3213)
curve:cubic_to(61.338000000000015, 102.9844, 61.30090000000001, 109.80229999999999, 61.378000000000014, 113.5693)
curve:cubic_to(61.42780000000001, 116.02289999999999, 62.161200000000015, 117.87689999999999, 63.55960000000002, 119.0805)
curve:cubic_to(65.15530000000001, 120.4545, 67.59670000000001, 120.9706, 70.62110000000001, 120.581)
curve:cubic_to(71.30280000000002, 120.3455, 86.15960000000001, 119.4274, 86.07520000000001, 118.5082)
curve:cubic_to(86.2181, 118.4503, 96.96770000000001, 107.8816, 97.10470000000001, 107.805)
curve:cubic_to(98.0505, 106.9763, 98.0692, 105.2111, 97.1572, 104.3701)
curve:cubic_to(97.1572, 104.3701, 97.1572, 104.3701, 97.1572, 104.3701)
shapes.paths.button_digital_left = curve
curve = Path(69.6854, 110.8837)
curve:cubic_to(69.6854, 110.8837, 65.5175, 106.072, 65.5175, 106.072)
curve:cubic_to(65.5175, 106.072, 69.6854, 101.2559, 69.6854, 101.2559)
curve:cubic_to(69.6854, 101.2559, 69.6854, 110.8837, 69.6854, 110.8837)
curve:cubic_to(69.6854, 110.8837, 69.6854, 110.8837, 69.6854, 110.8837)
shapes.paths.button_digital_left_content = curve
curve = Path(105.8743, 116.4865)
curve:cubic_to(105.5443, 117.13180000000001, 94.4252, 127.56230000000001, 94.52640000000001, 128.78310000000002)
curve:cubic_to(94.3375, 130.54120000000003, 92.8833, 143.99370000000002, 92.93440000000001, 145.0577)
curve:cubic_to(92.91320000000002, 149.9436, 95.9021, 152.4137, 100.8255, 152.2862)
curve:cubic_to(104.4886, 152.3057, 111.3065, 152.3428, 115.07350000000001, 152.2657)
curve:cubic_to(117.5271, 152.2159, 119.3811, 151.48250000000002, 120.58470000000001, 150.0841)
curve:cubic_to(121.95870000000001, 148.4884, 122.47480000000002, 146.047, 122.08520000000001, 143.0226)
curve:cubic_to(121.84970000000001, 142.3409, 120.93160000000002, 127.48410000000001, 120.01240000000001, 127.56850000000001)
curve:cubic_to(119.95450000000001, 127.42560000000002, 109.38580000000002, 116.67600000000002, 109.30920000000002, 116.53900000000002)
curve:cubic_to(108.4805, 115.5932, 106.7153, 115.5745, 105.8743, 116.4865)
curve:cubic_to(105.8743, 116.4865, 105.8743, 116.4865, 105.8743, 116.4865)
shapes.paths.button_digital_down = curve
curve = Path(112.3878, 143.9583)
curve:cubic_to(112.3878, 143.9583, 107.5761, 148.1262, 107.5761, 148.1262)
curve:cubic_to(107.5761, 148.1262, 102.75999999999999, 143.9583, 102.75999999999999, 143.9583)
curve:cubic_to(102.75999999999999, 143.9583, 112.3878, 143.9583, 112.3878, 143.9583)
curve:cubic_to(112.3878, 143.9583, 112.3878, 143.9583, 112.3878, 143.9583)
shapes.paths.button_digital_down_content = curve
curve = Path(109.2736, 95.6531)
curve:cubic_to(109.6036, 95.00779999999999, 120.7227, 84.5773, 120.6215, 83.3565)
curve:cubic_to(120.8104, 81.5984, 122.2646, 68.1459, 122.2135, 67.08189999999999)
curve:cubic_to(122.23469999999999, 62.19599999999999, 119.2458, 59.72589999999999, 114.3224, 59.85339999999999)
curve:cubic_to(110.6593, 59.83389999999999, 103.84140000000001, 59.79679999999999, 100.0744, 59.87389999999999)
curve:cubic_to(97.6208, 59.92369999999999, 95.7668, 60.65709999999999, 94.5632, 62.055499999999995)
curve:cubic_to(93.1892, 63.651199999999996, 92.67309999999999, 66.09259999999999, 93.06269999999999, 69.11699999999999)
curve:cubic_to(93.2982, 69.7987, 94.21629999999999, 84.65549999999999, 95.1355, 84.57109999999999)
curve:cubic_to(95.1934, 84.71399999999998, 105.76209999999999, 95.46359999999999, 105.83869999999999, 95.60059999999999)
curve:cubic_to(106.6674, 96.5464, 108.4326, 96.565, 109.2736, 95.6531)
curve:cubic_to(109.2736, 95.6531, 109.2736, 95.6531, 109.2736, 95.6531)
shapes.paths.button_digital_up = curve
curve = Path(102.76, 68.1813)
curve:cubic_to(102.76, 68.1813, 107.5717, 64.01339999999999, 107.5717, 64.01339999999999)
curve:cubic_to(107.5717, 64.01339999999999, 112.38780000000001, 68.1813, 112.38780000000001, 68.1813)
curve:cubic_to(112.38780000000001, 68.1813, 102.76, 68.1813, 102.76, 68.1813)
curve:cubic_to(102.76, 68.1813, 102.76, 68.1813, 102.76, 68.1813)
shapes.paths.button_digital_up_content = curve
curve = Path(117.9906, 107.7694)
curve:cubic_to(118.6359, 108.0994, 129.0664, 119.2185, 130.2872, 119.1173)
curve:cubic_to(132.04530000000003, 119.3062, 145.4978, 120.7604, 146.5618, 120.7093)
curve:cubic_to(151.4477, 120.73049999999999, 153.9178, 117.7416, 153.7903, 112.8182)
curve:cubic_to(153.8098, 109.1551, 153.8469, 102.33720000000001, 153.7698, 98.5702)
curve:cubic_to(153.72, 96.1166, 152.9866, 94.2626, 151.5882, 93.059)
curve:cubic_to(149.9925, 91.685, 147.5511, 91.1689, 144.5267, 91.5585)
curve:cubic_to(143.845, 91.794, 128.9882, 92.71209999999999, 129.0726, 93.6313)
curve:cubic_to(128.9297, 93.6892, 118.1802, 104.25789999999999, 118.0431, 104.33449999999999)
curve:cubic_to(117.0973, 105.1632, 117.0787, 106.9284, 117.9906, 107.7694)
curve:cubic_to(117.9906, 107.7694, 117.9906, 107.7694, 117.9906, 107.7694)
shapes.paths.button_digital_right = curve
curve = Path(145.4624, 101.2559)
curve:cubic_to(145.4624, 101.2559, 149.6303, 106.0676, 149.6303, 106.0676)
curve:cubic_to(149.6303, 106.0676, 145.4624, 110.8837, 145.4624, 110.8837)
curve:cubic_to(145.4624, 110.8837, 145.4624, 101.2559, 145.4624, 101.2559)
curve:cubic_to(145.4624, 101.2559, 145.4624, 101.2559, 145.4624, 101.2559)
shapes.paths.button_digital_right_content = curve
curve = Path(370.4618, 157.3725)
curve:cubic_to(354.03749999999997, 157.3725, 340.72299999999996, 170.687, 340.72299999999996, 187.1112)
curve:cubic_to(340.72299999999996, 203.53539999999998, 354.03749999999997, 216.85, 370.4618, 216.85)
curve:cubic_to(386.8861, 216.85, 400.2006, 203.53549999999998, 400.2006, 187.1112)
curve:cubic_to(400.2006, 170.6869, 386.886, 157.3725, 370.4618, 157.3725)
curve:cubic_to(370.4618, 157.3725, 370.4618, 157.3725, 370.4618, 157.3725)
shapes.paths.analog_r = curve
curve = Path(370.4618, 205.9456)
curve:cubic_to(360.05989999999997, 205.9456, 351.6275, 197.5132, 351.6275, 187.11120000000003)
curve:cubic_to(351.6275, 176.7093, 360.05989999999997, 168.2769, 370.4618, 168.2769)
curve:cubic_to(380.8637, 168.2769, 389.29609999999997, 176.7093, 389.29609999999997, 187.1112)
curve:cubic_to(389.2961, 197.5131, 380.8637, 205.9456, 370.4618, 205.9456)
curve:cubic_to(370.4618, 205.9456, 370.4618, 205.9456, 370.4618, 205.9456)
shapes.paths.analog_r_content = curve
curve = Path(205.2688, 157.3725)
curve:cubic_to(188.8445, 157.3725, 175.53, 170.687, 175.53, 187.1112)
curve:cubic_to(175.53, 203.53539999999998, 188.8445, 216.85, 205.2688, 216.85)
curve:cubic_to(221.6931, 216.85, 235.0075, 203.53549999999998, 235.0075, 187.1112)
curve:cubic_to(235.0075, 170.6869, 221.6931, 157.3725, 205.2688, 157.3725)
curve:cubic_to(205.2688, 157.3725, 205.2688, 157.3725, 205.2688, 157.3725)
shapes.paths.analog_l = curve
curve = Path(205.2688, 205.9456)
curve:cubic_to(194.8669, 205.9456, 186.4345, 197.5132, 186.4345, 187.11120000000003)
curve:cubic_to(186.4345, 176.7093, 194.86690000000002, 168.2769, 205.2688, 168.2769)
curve:cubic_to(215.67069999999998, 168.2769, 224.10309999999998, 176.7093, 224.10309999999998, 187.1112)
curve:cubic_to(224.1031, 197.5131, 215.6707, 205.9456, 205.2688, 205.9456)
curve:cubic_to(205.2688, 205.9456, 205.2688, 205.9456, 205.2688, 205.9456)
shapes.paths.analog_l_content = curve
curve = Path(425.031, 85.8197)
curve:cubic_to(413.9951, 85.8197, 405.0173, 94.7975, 405.0173, 105.8333)
curve:cubic_to(405.0173, 116.86909999999999, 413.9951, 125.847, 425.03099999999995, 125.847)
curve:cubic_to(436.0669, 125.847, 445.04459999999995, 116.86919999999999, 445.04459999999995, 105.8333)
curve:cubic_to(445.04459999999995, 94.7974, 436.0669, 85.8197, 425.031, 85.8197)
curve:cubic_to(425.031, 85.8197, 425.031, 85.8197, 425.031, 85.8197)
shapes.paths.button_action_square = curve
curve = Path(466.8404, 127.6254)
curve:cubic_to(455.80449999999996, 127.6254, 446.82669999999996, 136.6032, 446.82669999999996, 147.639)
curve:cubic_to(446.82669999999996, 158.67480000000003, 455.80449999999996, 167.6526, 466.84039999999993, 167.6526)
curve:cubic_to(477.87629999999996, 167.6526, 486.8540999999999, 158.6748, 486.8540999999999, 147.639)
curve:cubic_to(486.8540999999999, 136.60320000000002, 477.8763, 127.6254, 466.8404, 127.6254)
curve:cubic_to(466.8404, 127.6254, 466.8404, 127.6254, 466.8404, 127.6254)
shapes.paths.button_action_cross = curve
curve = Path(508.6461, 87.3222)
curve:cubic_to(498.438, 87.3222, 490.135, 95.62519999999999, 490.135, 105.8333)
curve:cubic_to(490.135, 116.0415, 498.438, 124.3445, 508.6461, 124.3445)
curve:cubic_to(518.8542, 124.3445, 527.1572, 116.0415, 527.1572, 105.8333)
curve:cubic_to(527.1572, 95.6252, 518.8542, 87.3222, 508.6461, 87.3222)
curve:cubic_to(508.6461, 87.3222, 508.6461, 87.3222, 508.6461, 87.3222)
shapes.paths.button_action_circle = curve
curve = Path(466.8404, 45.5128)
curve:cubic_to(456.6323, 45.5128, 448.3293, 53.815799999999996, 448.3293, 64.0239)
curve:cubic_to(448.3293, 74.232, 456.6323, 82.535, 466.8404, 82.535)
curve:cubic_to(477.0485, 82.535, 485.3515, 74.232, 485.3515, 64.0239)
curve:cubic_to(485.3515, 53.815799999999996, 477.0485, 45.5128, 466.8404, 45.5128)
curve:cubic_to(466.8404, 45.5128, 466.8404, 45.5128, 466.8404, 45.5128)
shapes.paths.button_action_triangle = curve
curve = Path(476.5859, 70.209)
curve:cubic_to(476.5859, 70.209, 466.83689999999996, 53.324200000000005, 466.83689999999996, 53.324200000000005)
curve:cubic_to(466.83689999999996, 53.324200000000005, 457.08689999999996, 70.209, 457.08689999999996, 70.209)
curve:cubic_to(457.08689999999996, 70.209, 476.5859, 70.209, 476.5859, 70.209)
curve:cubic_to(476.5859, 70.209, 476.5859, 70.209, 476.5859, 70.209)
shapes.paths.button_action_triangle_content = curve
curve = Path(217.4336, 123.7439)
curve:cubic_to(194.21200000000002, 123.7439, 190.4917, 106.7452, 188.4872, 97.3082)
curve:cubic_to(180.0048, 57.373, 173.2139, 26.464100000000002, 173.2099, 19.9366)
curve:cubic_to(173.205, 11.977699999999999, 178.0123, 8.620299999999999, 186.6556, 7.743199999999998)
curve:cubic_to(224.1162, 3.941999999999998, 246.35199999999998, 1.4910999999999976, 287.9857, 1.4910999999999976)
curve:cubic_to(329.61940000000004, 1.4910999999999976, 351.8552, 3.9419999999999975, 389.3158, 7.743199999999998)
curve:cubic_to(397.95910000000003, 8.620199999999999, 402.76640000000003, 11.977699999999999, 402.7615, 19.9366)
curve:cubic_to(402.7575, 26.464199999999998, 395.9666, 57.3731, 387.4842, 97.3082)
curve:cubic_to(385.4797, 106.7452, 381.75939999999997, 123.7439, 358.5378, 123.7439)
curve:cubic_to(341.9275, 123.7439, 234.0441, 123.7439, 217.4336, 123.7439)
curve:cubic_to(217.4336, 123.7439, 217.4336, 123.7439, 217.4336, 123.7439)
shapes.paths.pad = curve
curve = Path(275.3994, 210.8307)
curve:cubic_to(274.1592, 210.8307, 273.1504, 211.839, 273.1504, 213.0783)
curve:cubic_to(273.1504, 213.0783, 273.1504, 214.39370000000002, 273.1504, 214.39370000000002)
curve:cubic_to(273.1504, 215.63340000000002, 274.1592, 216.64220000000003, 275.3994, 216.64220000000003)
curve:cubic_to(275.3994, 216.64220000000003, 300.57230000000004, 216.64220000000003, 300.57230000000004, 216.64220000000003)
curve:cubic_to(301.81250000000006, 216.64220000000003, 302.82130000000006, 215.63340000000002, 302.82130000000006, 214.39370000000002)
curve:cubic_to(302.82130000000006, 214.39370000000002, 302.82130000000006, 213.0783, 302.82130000000006, 213.0783)
curve:cubic_to(302.82130000000006, 211.839, 301.81250000000006, 210.8307, 300.57230000000004, 210.8307)
curve:cubic_to(300.57230000000004, 210.8307, 275.3994, 210.8307, 275.3994, 210.8307)
curve:cubic_to(275.3994, 210.8307, 275.3994, 210.8307, 275.3994, 210.8307)
shapes.paths.button_mute = curve
curve = Path(423.6723, 32.1249)
curve:cubic_to(426.3757, 32.703199999999995, 428.0985, 35.3636, 427.5201, 38.06699999999999)
curve:cubic_to(427.5201, 38.06699999999999, 424.6803, 51.34169999999999, 424.6803, 51.34169999999999)
curve:cubic_to(424.102, 54.04509999999999, 421.4416, 55.76789999999999, 418.7382, 55.18949999999999)
curve:cubic_to(416.0348, 54.61119999999999, 414.3121, 51.95079999999999, 414.8904, 49.247399999999985)
curve:cubic_to(414.8904, 49.247399999999985, 417.7302, 35.97269999999999, 417.7302, 35.97269999999999)
curve:cubic_to(418.3085, 33.2693, 420.9689, 31.5466, 423.6723, 32.1249)
curve:cubic_to(423.6723, 32.1249, 423.6723, 32.1249, 423.6723, 32.1249)
shapes.paths.button_options = curve
curve = Path(152.2993, 32.1249)
curve:cubic_to(149.5959, 32.703199999999995, 147.8731, 35.3636, 148.45149999999998, 38.06699999999999)
curve:cubic_to(148.45149999999998, 38.06699999999999, 151.29129999999998, 51.34169999999999, 151.29129999999998, 51.34169999999999)
curve:cubic_to(151.8696, 54.04509999999999, 154.52999999999997, 55.76789999999999, 157.2335, 55.18949999999999)
curve:cubic_to(159.93689999999998, 54.61119999999999, 161.65959999999998, 51.95079999999999, 161.0813, 49.247399999999985)
curve:cubic_to(161.0813, 49.247399999999985, 158.2415, 35.97269999999999, 158.2415, 35.97269999999999)
curve:cubic_to(157.663, 33.2693, 155.0026, 31.5466, 152.2993, 32.1249)
curve:cubic_to(152.2993, 32.1249, 152.2993, 32.1249, 152.2993, 32.1249)
shapes.paths.button_create = curve
curve = Path(70.4139, 16.2983)
curve:cubic_to(70.4139, 16.2983, 70.4139, 16.2983, 70.4139, 16.2983)
curve:cubic_to(70.4139, 16.2983, 69.6854, 31.585700000000003, 69.6854, 31.585700000000003)
curve:cubic_to(69.6854, 31.585700000000003, 149.0215, 18.557300000000005, 149.0215, 18.557300000000005)
curve:cubic_to(149.0215, 18.557300000000005, 147.78900000000002, 4.346300000000005, 147.78900000000002, 4.346300000000005)
curve:cubic_to(128.15890000000002, -5.194199999999995, 84.86250000000001, 1.9482000000000048, 70.42200000000001, 16.283800000000006)
curve:cubic_to(70.42200000000001, 16.283800000000006, 70.4139, 16.2983, 70.4139, 16.2983)
curve:cubic_to(70.4139, 16.2983, 70.4139, 16.2983, 70.4139, 16.2983)
shapes.paths.button_l1 = curve
curve = Path(505.7771, 16.2838)
curve:cubic_to(491.33660000000003, 1.9482999999999997, 448.0402, -5.194200000000002, 428.4101, 4.346299999999999)
curve:cubic_to(428.4101, 4.346299999999999, 427.1776, 18.557299999999998, 427.1776, 18.557299999999998)
curve:cubic_to(427.1776, 18.557299999999998, 506.5137, 31.585699999999996, 506.5137, 31.585699999999996)
curve:cubic_to(506.5137, 31.585699999999996, 505.7852, 16.298299999999998, 505.7852, 16.298299999999998)
curve:cubic_to(505.7852, 16.298299999999998, 505.7852, 16.298299999999998, 505.7852, 16.298299999999998)
curve:cubic_to(505.7852, 16.298299999999998, 505.7771, 16.2838, 505.7771, 16.2838)
curve:cubic_to(505.7771, 16.2838, 505.7771, 16.2838, 505.7771, 16.2838)
shapes.paths.button_r1 = curve
function shapes.path_button_l2(angle)
angle = angle or 0
local curve = Path(shapes.rotate_vector(0.0238, 0, angle))
curve:cubic_to(shapes.rotate_bezier({13.5062, -17.6067, -5.1088000000000005, -22.5701, -18.9304, -27.6343}, angle))
curve:cubic_to(shapes.rotate_bezier({-26.77, -30.5553, -34.7732, -33.9036, -40.8454, -39.8315}, angle))
curve:cubic_to(shapes.rotate_bezier({-43.923199999999994, -42.525, -48.0639, -48.663, -52.459199999999996, -44.7083}, angle))
curve:cubic_to(shapes.rotate_bezier({-54.075399999999995, -43.4794, -55.116699999999994, -41.4487, -54.5064, -39.4209}, angle))
curve:cubic_to(shapes.rotate_bezier({-45.6722, -19.1936, -60.8276, -24.1852, -67.9857, 0}, angle))
curve:cubic_to(shapes.rotate_bezier({-67.9857, 0, 0.0238, 0, 0.0238, 0}, angle))
curve:cubic_to(shapes.rotate_bezier({0.0238, 0, 0.0238, 0, 0.0238, 0}, angle))
return curve
end
function shapes.path_button_r2(angle)
angle = angle or 0
local curve = Path(shapes.rotate_vector(68.0091, 0, angle))
curve:cubic_to(shapes.rotate_bezier({60.851, -24.1852, 45.6956, -19.1936, 54.5297, -39.4209}, angle))
curve:cubic_to(shapes.rotate_bezier({55.1401, -41.448600000000006, 54.0988, -43.479400000000005, 52.4825, -44.7083}, angle))
curve:cubic_to(shapes.rotate_bezier({48.0873, -48.663000000000004, 43.9465, -42.525, 40.868700000000004, -39.8315}, angle))
curve:cubic_to(shapes.rotate_bezier({34.7965, -33.9036, 26.793300000000002, -30.5553, 18.953700000000005, -27.634299999999996}, angle))
curve:cubic_to(shapes.rotate_bezier({5.1321, -22.5701, -13.4829, -17.6067, -0.0005, 0}, angle))
curve:cubic_to(shapes.rotate_bezier({-0.0005, 0, 68.0091, 0, 68.0091, 0}, angle))
curve:cubic_to(shapes.rotate_bezier({68.0091, 0, 68.0091, 0, 68.0091, 0}, angle))
return curve
end
return shapes