vector_salad 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc23021a759973f72595a9b083f0c14557a81ee1
4
- data.tar.gz: de57bf043d59f32f38f9c85a4ec54d4b1347c4b2
3
+ metadata.gz: e4dde75c02c0519d7173bc4b031c1252ba2c8318
4
+ data.tar.gz: be321d0c4c3ce6815d32e12073cf8b55dca0ba2b
5
5
  SHA512:
6
- metadata.gz: e9b18624730aab10da1463714ae2b6da737ffdcf168a205205fe48f668cdfacebe9c9f6d60cae3220472f19267857a6d5650cf1a1162536c3ab167c83afbd429
7
- data.tar.gz: 78df56043bb2ad3d9f5ad54bbd8413705c8d2432315477a5af4b449c0febeb954973f89b9a35b00546469cb9d150985417f2e2f3d878c56e0c30e25d3d0c2de8
6
+ metadata.gz: 56e94c00c3ae2883fb1cd3018d13edb4a1810dde55c8a1ae973ebb8e780947ad949f1ee204bcd22260aa610d2aba35cd07ee0cd9c64b8ed8c86e24e082001f32
7
+ data.tar.gz: d7ab5d6298a47b361edab6fed5c851a3af054848aabec962261e722cbdb74b39196b929cceeac62463dbcce59de0f43f267e695e57fbf9797a362ab00093aa5f
Binary file
@@ -0,0 +1,50 @@
1
+ SIZE = 256
2
+ BOXES = 8
3
+ BOX_SIZE = SIZE / BOXES
4
+ FORCE = 0.31
5
+
6
+ square(SIZE)
7
+
8
+ custom(:eyebox) do |x, y, **options|
9
+ middle = SIZE / 2
10
+ xm = x + BOX_SIZE / 2
11
+ ym = y + BOX_SIZE / 2
12
+
13
+ dx = middle - xm
14
+ dy = middle - ym
15
+
16
+ h = Math.sqrt(dx**2 + dy**2)
17
+ a = Math.atan2(dx, dy)
18
+
19
+ r = (h * FORCE)**1.3
20
+ x2 = -r * Math.sin(a)
21
+ y2 = -r * Math.cos(a)
22
+
23
+ r = (h * (FORCE - 0.01))**1.3
24
+ x3 = -r * Math.sin(a)
25
+ y3 = -r * Math.cos(a)
26
+
27
+ c = 255.0 / SIZE
28
+ c2 = 200.0 / SIZE
29
+ col1 = "rgb(#{50 + c2 * x}, 0, #{50 + c2 * y})"
30
+ col2 = "rgb(#{205 - c * x}, 0, #{c * y})"
31
+
32
+ group do
33
+ square(BOX_SIZE, fill: col1)[x, y]
34
+ # circle(BOX_SIZE / 3, fill: "rgb(#{c * x}, 0, #{c * y})")[x2 + middle, y2 + middle]
35
+ intersection(fill: "white") do
36
+ square(BOX_SIZE, fill: "rgb(#{c * x}, 0, #{c * y})")[x, y]
37
+ circle(BOX_SIZE / 2.5, fill: "white")[x2 + middle, y2 + middle]
38
+ end
39
+ intersection(fill: col2) do
40
+ square(BOX_SIZE, fill: "rgb(#{c * x}, 0, #{c * y})")[x, y]
41
+ circle(BOX_SIZE / 6, fill: "black")[x3 + middle, y3 + middle]
42
+ end
43
+ end
44
+ end
45
+
46
+ BOXES.times do |x|
47
+ BOXES.times do |y|
48
+ eyebox(x * BOX_SIZE, y * BOX_SIZE)
49
+ end
50
+ end
@@ -0,0 +1,199 @@
1
+ <svg version="1.1"
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="256"
4
+ height="256">
5
+
6
+ <rect x="0" y="0" width="256" height="256"/>
7
+ <rect x="0" y="0" width="32" height="32" fill="rgb(50.0, 0, 50.0)"/>
8
+ <path d=" M 16.33729839 29.13729763 L 14.79442883 29.04397202 L 13.27405739 28.7653532 L 11.7983551 28.30550575 L 10.38884163 27.67113495 L 9.0660696 26.87149143 L 7.84932804 25.91823578 L 6.75636005 24.82526779 L 5.8031044 23.60852718 L 5.00346088 22.2857542 L 4.36909008 20.87624073 L 3.90924263 19.40053844 L 3.63062477 17.88016796 L 3.5372982 16.33729839 L 3.63062477 14.79442883 L 3.90924263 13.27405739 L 4.36909008 11.7983551 L 5.00346088 10.38884163 L 5.8031044 9.0660696 L 6.75636005 7.84932804 L 7.84932804 6.75636005 L 9.0660696 5.8031044 L 10.38884163 5.00346088 L 11.7983551 4.36909008 L 13.27405739 3.90924263 L 14.79442883 3.63062477 L 16.33729839 3.5372982 L 17.88016796 3.63062477 L 19.40053844 3.90924263 L 20.87624073 4.36909008 L 22.2857542 5.00346088 L 23.60852718 5.8031044 L 24.82526779 6.75636005 L 25.91823578 7.84932804 L 26.87149143 9.0660696 L 27.67113495 10.38884163 L 28.30550575 11.7983551 L 28.7653532 13.27405739 L 29.04397202 14.79442883 L 29.13729763 16.33729839 L 29.04397202 17.88016796 L 28.7653532 19.40053844 L 28.30550575 20.87624073 L 27.67113495 22.2857542 L 26.87149143 23.60852718 L 25.91823578 24.82526779 L 24.82526779 25.91823578 L 23.60852718 26.87149143 L 22.2857542 27.67113495 L 20.87624073 28.30550575 L 19.40053844 28.7653532 L 17.88016796 29.04397202 Z" fill="white"/>
9
+ <path d=" M 20.99709702 25.99709702 L 19.45201206 25.75237942 L 18.05817032 25.04218197 L 16.95201206 23.93602276 L 16.24181366 22.54218197 L 15.99709702 20.99709702 L 16.24181366 19.45201206 L 16.95201206 18.05817032 L 18.05817032 16.95201206 L 19.45201206 16.24181366 L 20.99709702 15.99709702 L 22.54218197 16.24181366 L 23.93602276 16.95201206 L 25.04218197 18.05817032 L 25.75237942 19.45201206 L 25.99709702 20.99709702 L 25.75237942 22.54218197 L 25.04218197 23.93602276 L 23.93602276 25.04218197 L 22.54218197 25.75237942 Z" fill="rgb(205.0, 0, 0.0)"/>
10
+ <rect x="0" y="32" width="32" height="32" fill="rgb(50.0, 0, 75.0)"/>
11
+ <path d=" M 18.10039806 64.0 L 17.88126087 63.95984173 L 16.40555859 63.49999428 L 14.99604416 62.86562347 L 13.67327213 62.06597996 L 12.45653152 61.1127243 L 11.36356354 60.01975632 L 10.41030788 58.80301476 L 9.61066437 57.48024273 L 8.97629356 56.07072926 L 8.51644611 54.59502697 L 8.2378273 53.07465553 L 8.14450073 51.53178596 L 8.2378273 49.98891735 L 8.51644611 48.46854591 L 8.97629356 46.99284363 L 9.61066437 45.58333015 L 10.41030788 44.26055813 L 11.36356354 43.04381657 L 12.45653152 41.95084858 L 13.67327213 40.99759293 L 14.99604416 40.19794941 L 16.40555859 39.56357861 L 17.88126087 39.10373116 L 19.40163136 38.8251133 L 20.94450092 38.73178673 L 22.48737049 38.8251133 L 24.00774193 39.10373116 L 25.48344421 39.56357861 L 26.89295769 40.19794941 L 28.21572971 40.99759293 L 29.43247128 41.95084858 L 30.52543831 43.04381657 L 31.47869492 44.26055813 L 32.0 45.12290192 L 32.0 57.94067097 L 31.47869492 58.80301476 L 30.52543831 60.01975632 L 29.43247128 61.1127243 L 28.21572971 62.06597996 L 26.89295769 62.86562347 L 25.48344421 63.49999428 L 24.00774193 63.95984173 L 23.78860474 64.0 Z" fill="white"/>
12
+ <path d=" M 25.4120369 59.72288322 L 23.86695194 59.47816563 L 22.4731102 58.76796818 L 21.36695194 57.66180897 L 20.65675354 56.26796818 L 20.4120369 54.72288322 L 20.65675354 53.17779827 L 21.36695194 51.78395653 L 22.4731102 50.67779827 L 23.86695194 49.96760082 L 25.4120369 49.72288322 L 26.95712185 49.96760082 L 28.35096264 50.67779827 L 29.45712185 51.78395653 L 30.1673193 53.17779827 L 30.4120369 54.72288322 L 30.1673193 56.26796818 L 29.45712185 57.66180897 L 28.35096264 58.76796818 L 26.95712185 59.47816563 Z" fill="rgb(205.0, 0, 31.875)"/>
13
+ <rect x="0" y="64" width="32" height="32" fill="rgb(50.0, 0, 100.0)"/>
14
+ <path d=" M 21.10183334 96.0 L 20.24710274 95.73365498 L 18.83758831 95.09928513 L 17.51481628 94.29964066 L 16.29807472 93.346385 L 15.20510769 92.25341797 L 14.25185108 91.03667641 L 13.45220757 89.71390438 L 12.81783676 88.30438995 L 12.35798931 86.82868767 L 12.07937145 85.30831718 L 11.98604488 83.76544762 L 12.07937145 82.22257805 L 12.35798931 80.70220661 L 12.81783676 79.22650528 L 13.45220757 77.81699085 L 14.25185108 76.49421883 L 15.20510769 75.27747726 L 16.29807472 74.18451023 L 17.51481628 73.23125362 L 18.83758831 72.43161011 L 20.24710274 71.7972393 L 21.72280407 71.33739185 L 23.24317551 71.05877399 L 24.78604507 70.96544743 L 26.32891464 71.05877399 L 27.84928513 71.33739185 L 29.32498741 71.7972393 L 30.73450184 72.43161011 L 32.0 73.19663048 L 32.0 94.3342638 L 30.73450184 95.09928513 L 29.32498741 95.73365498 L 28.47025585 96.0 Z" fill="white"/>
15
+ <path d=" M 29.09326839 90.6114006 L 27.54818344 90.36668301 L 26.15434265 89.65648556 L 25.04818344 88.5503273 L 24.33798599 87.15648556 L 24.09326839 85.6114006 L 24.33798599 84.06631565 L 25.04818344 82.67247391 L 26.15434265 81.56631565 L 27.54818344 80.8561182 L 29.09326839 80.6114006 L 30.63835335 80.8561182 L 32.0 81.5499115 L 32.0 89.67288971 L 30.63835335 90.36668301 Z" fill="rgb(205.0, 0, 63.75)"/>
16
+ <rect x="0" y="96" width="32" height="32" fill="rgb(50.0, 0, 125.0)"/>
17
+ <path d=" M 27.05850697 126.37978649 L 25.51563835 126.28645992 L 23.99526691 126.00784206 L 22.51956463 125.54799461 L 21.11005116 124.91362381 L 19.78727913 124.11398029 L 18.57053757 123.16072369 L 17.47756958 122.06775665 L 16.52431393 120.85101509 L 15.72467041 119.52824306 L 15.09029961 118.11872864 L 14.63045216 116.64302731 L 14.3518343 115.12265587 L 14.25850773 113.5797863 L 14.3518343 112.03691673 L 14.63045216 110.51654625 L 15.09029961 109.04084396 L 15.72467041 107.63132954 L 16.52431393 106.30855751 L 17.47756958 105.09181595 L 18.57053757 103.99884892 L 19.78727913 103.04559326 L 21.11005116 102.24594879 L 22.51956463 101.61157799 L 23.99526691 101.15173149 L 25.51563835 100.87311268 L 27.05850697 100.77978611 L 28.60137653 100.87311268 L 30.12174797 101.15173149 L 31.59745026 101.61157799 L 32.0 101.79275131 L 32.0 125.36682129 L 31.59745026 125.54799461 L 30.12174797 126.00784206 L 28.60137653 126.28645992 Z" fill="white"/>
18
+ <path d=" M 31.27089882 119.1815567 L 29.72581387 118.9368391 L 28.33197308 118.22664165 L 27.22581387 117.12048244 L 26.51561642 115.72664165 L 26.27089882 114.1815567 L 26.51561642 112.63647175 L 27.22581387 111.24263 L 28.33197308 110.13647175 L 29.72581387 109.4262743 L 31.27089882 109.1815567 L 32.0 109.29703522 L 32.0 119.06607819 Z" fill="rgb(205.0, 0, 95.625)"/>
19
+ <rect x="0" y="128" width="32" height="32" fill="rgb(50.0, 0, 150.0)"/>
20
+ <path d=" M 27.05850697 155.22021294 L 25.51563835 155.12688637 L 23.99526691 154.84826756 L 22.51956463 154.38842106 L 21.11005116 153.75405025 L 19.78727913 152.95440578 L 18.57053757 152.00115013 L 17.47756958 150.9081831 L 16.52431393 149.69144154 L 15.72467041 148.36866951 L 15.09029961 146.95915508 L 14.63045216 145.4834528 L 14.3518343 143.96308231 L 14.25850773 142.42021275 L 14.3518343 140.87734318 L 14.63045216 139.35697174 L 15.09029961 137.88127041 L 15.72467041 136.47175598 L 16.52431393 135.14898396 L 17.47756958 133.93224239 L 18.57053757 132.83927536 L 19.78727913 131.88601875 L 21.11005116 131.08637524 L 22.51956463 130.45200443 L 23.99526691 129.99215698 L 25.51563835 129.71353912 L 27.05850697 129.62021255 L 28.60137653 129.71353912 L 30.12174797 129.99215698 L 31.59745026 130.45200443 L 32.0 130.63317776 L 32.0 154.20724773 L 31.59745026 154.38842106 L 30.12174797 154.84826756 L 28.60137653 155.12688637 Z" fill="white"/>
21
+ <path d=" M 31.27089882 146.81844234 L 29.72581387 146.57372475 L 28.33197308 145.8635273 L 27.22581387 144.75736904 L 26.51561642 143.3635273 L 26.27089882 141.81844234 L 26.51561642 140.27335739 L 27.22581387 138.8795166 L 28.33197308 137.77335739 L 29.72581387 137.06315994 L 31.27089882 136.81844234 L 32.0 136.93392086 L 32.0 146.70296383 Z" fill="rgb(205.0, 0, 127.5)"/>
22
+ <rect x="0" y="160" width="32" height="32" fill="rgb(50.0, 0, 175.0)"/>
23
+ <path d=" M 24.78604507 185.03455162 L 23.24317551 184.94122505 L 21.72280407 184.66260719 L 20.24710274 184.20275974 L 18.83758831 183.56838894 L 17.51481628 182.76874542 L 16.29807472 181.81548882 L 15.20510769 180.72252178 L 14.25185108 179.50578022 L 13.45220757 178.18300819 L 12.81783676 176.77349377 L 12.35798931 175.29779243 L 12.07937145 173.777421 L 11.98604488 172.23455143 L 12.07937145 170.69168186 L 12.35798931 169.17131138 L 12.81783676 167.69560909 L 13.45220757 166.28609467 L 14.25185108 164.96332264 L 15.20510769 163.74658108 L 16.29807472 162.65361404 L 17.51481628 161.70035839 L 18.83758831 160.90071392 L 20.24710274 160.26634407 L 21.10183048 160.0 L 28.47025967 160.0 L 29.32498741 160.26634407 L 30.73450184 160.90071392 L 32.0 161.66573524 L 32.0 182.80336857 L 30.73450184 183.56838894 L 29.32498741 184.20275974 L 27.84928513 184.66260719 L 26.32891464 184.94122505 Z" fill="white"/>
24
+ <path d=" M 29.09326839 175.38859844 L 27.54818344 175.14388084 L 26.15434265 174.4336834 L 25.04818344 173.32752514 L 24.33798599 171.9336834 L 24.09326839 170.38859844 L 24.33798599 168.84351349 L 25.04818344 167.44967175 L 26.15434265 166.34351349 L 27.54818344 165.63331604 L 29.09326839 165.38859844 L 30.63835335 165.63331604 L 32.0 166.32710934 L 32.0 174.45008755 L 30.63835335 175.14388084 Z" fill="rgb(205.0, 0, 159.375)"/>
25
+ <rect x="0" y="192" width="32" height="32" fill="rgb(50.0, 0, 200.0)"/>
26
+ <path d=" M 20.94450092 217.26821232 L 19.40163136 217.17488575 L 17.88126087 216.89626789 L 16.40555859 216.43642044 L 14.99604416 215.80204964 L 13.67327213 215.00240612 L 12.45653152 214.04915047 L 11.36356354 212.95618248 L 10.41030788 211.73944092 L 9.61066437 210.41666889 L 8.97629356 209.00715542 L 8.51644611 207.53145313 L 8.2378273 206.0110817 L 8.14450073 204.46821308 L 8.2378273 202.92534351 L 8.51644611 201.40497208 L 8.97629356 199.92926979 L 9.61066437 198.51975632 L 10.41030788 197.19698429 L 11.36356354 195.98024273 L 12.45653152 194.88727474 L 13.67327213 193.93401909 L 14.99604416 193.13437557 L 16.40555859 192.50000477 L 17.88126087 192.04015732 L 18.10039234 192.0 L 23.78861046 192.0 L 24.00774193 192.04015732 L 25.48344421 192.50000477 L 26.89295769 193.13437557 L 28.21572971 193.93401909 L 29.43247128 194.88727474 L 30.52543831 195.98024273 L 31.47869492 197.19698429 L 32.0 198.05932808 L 32.0 210.87709713 L 31.47869492 211.73944092 L 30.52543831 212.95618248 L 29.43247128 214.04915047 L 28.21572971 215.00240612 L 26.89295769 215.80204964 L 25.48344421 216.43642044 L 24.00774193 216.89626789 L 22.48737049 217.17488575 Z" fill="white"/>
27
+ <path d=" M 25.4120369 206.27711582 L 23.86695194 206.03239822 L 22.4731102 205.32220078 L 21.36695194 204.21604252 L 20.65675354 202.82220078 L 20.4120369 201.27711582 L 20.65675354 199.73203087 L 21.36695194 198.33819008 L 22.4731102 197.23203087 L 23.86695194 196.52183342 L 25.4120369 196.27711582 L 26.95712185 196.52183342 L 28.35096264 197.23203087 L 29.45712185 198.33819008 L 30.1673193 199.73203087 L 30.4120369 201.27711582 L 30.1673193 202.82220078 L 29.45712185 204.21604252 L 28.35096264 205.32220078 L 26.95712185 206.03239822 Z" fill="rgb(205.0, 0, 191.25)"/>
28
+ <rect x="0" y="224" width="32" height="32" fill="rgb(50.0, 0, 225.0)"/>
29
+ <path d=" M 16.33729839 252.46270084 L 14.79442883 252.36937428 L 13.27405739 252.09075642 L 11.7983551 251.63090897 L 10.38884163 250.99653816 L 9.0660696 250.19689465 L 7.84932804 249.24363899 L 6.75636005 248.15067101 L 5.8031044 246.93392944 L 5.00346088 245.61115742 L 4.36909008 244.20164394 L 3.90924263 242.72594166 L 3.63062477 241.20557022 L 3.5372982 239.66270065 L 3.63062477 238.11983109 L 3.90924263 236.5994606 L 4.36909008 235.12375832 L 5.00346088 233.71424484 L 5.8031044 232.39147186 L 6.75636005 231.17473125 L 7.84932804 230.08176327 L 9.0660696 229.12850761 L 10.38884163 228.3288641 L 11.7983551 227.69449329 L 13.27405739 227.23464584 L 14.79442883 226.95602703 L 16.33729839 226.86270142 L 17.88016796 226.95602703 L 19.40053844 227.23464584 L 20.87624073 227.69449329 L 22.2857542 228.3288641 L 23.60852718 229.12850761 L 24.82526779 230.08176327 L 25.91823578 231.17473125 L 26.87149143 232.39147186 L 27.67113495 233.71424484 L 28.30550575 235.12375832 L 28.7653532 236.5994606 L 29.04397202 238.11983109 L 29.13729763 239.66270065 L 29.04397202 241.20557022 L 28.7653532 242.72594166 L 28.30550575 244.20164394 L 27.67113495 245.61115742 L 26.87149143 246.93392944 L 25.91823578 248.15067101 L 24.82526779 249.24363899 L 23.60852718 250.19689465 L 22.2857542 250.99653816 L 20.87624073 251.63090897 L 19.40053844 252.09075642 L 17.88016796 252.36937428 Z" fill="white"/>
30
+ <path d=" M 20.99709702 240.00290203 L 19.45201206 239.75818539 L 18.05817032 239.04798698 L 16.95201206 237.94182873 L 16.24181366 236.54798698 L 15.99709702 235.00290203 L 16.24181366 233.45781708 L 16.95201206 232.06397629 L 18.05817032 230.95781708 L 19.45201206 230.24761963 L 20.99709702 230.00290203 L 22.54218197 230.24761963 L 23.93602276 230.95781708 L 25.04218197 232.06397629 L 25.75237942 233.45781708 L 25.99709702 235.00290203 L 25.75237942 236.54798698 L 25.04218197 237.94182873 L 23.93602276 239.04798698 L 22.54218197 239.75818539 Z" fill="rgb(205.0, 0, 223.125)"/>
31
+ <rect x="32" y="0" width="32" height="32" fill="rgb(75.0, 0, 50.0)"/>
32
+ <path d=" M 45.12290192 32.0 L 44.26055813 31.47869492 L 43.04381657 30.52543831 L 41.95084858 29.43247128 L 40.99759293 28.21572971 L 40.19794941 26.89295769 L 39.56357861 25.48344421 L 39.10373116 24.00774193 L 38.8251133 22.48737049 L 38.73178673 20.94450092 L 38.8251133 19.40163136 L 39.10373116 17.88126087 L 39.56357861 16.40555859 L 40.19794941 14.99604416 L 40.99759293 13.67327213 L 41.95084858 12.45653152 L 43.04381657 11.36356354 L 44.26055813 10.41030788 L 45.58333015 9.61066437 L 46.99284363 8.97629356 L 48.46854591 8.51644611 L 49.98891735 8.2378273 L 51.53178596 8.14450073 L 53.07465553 8.2378273 L 54.59502697 8.51644611 L 56.07072926 8.97629356 L 57.48024273 9.61066437 L 58.80301476 10.41030788 L 60.01975632 11.36356354 L 61.1127243 12.45653152 L 62.06597996 13.67327213 L 62.86562347 14.99604416 L 63.49999428 16.40555859 L 63.95984173 17.88126087 L 64.0 18.10039806 L 64.0 23.78860474 L 63.95984173 24.00774193 L 63.49999428 25.48344421 L 62.86562347 26.89295769 L 62.06597996 28.21572971 L 61.1127243 29.43247128 L 60.01975632 30.52543831 L 58.80301476 31.47869492 L 57.94067097 32.0 Z" fill="white"/>
33
+ <path d=" M 54.72288322 30.4120369 L 53.17779827 30.1673193 L 51.78395653 29.45712185 L 50.67779827 28.35096264 L 49.96760082 26.95712185 L 49.72288322 25.4120369 L 49.96760082 23.86695194 L 50.67779827 22.4731102 L 51.78395653 21.36695194 L 53.17779827 20.65675354 L 54.72288322 20.4120369 L 56.26796818 20.65675354 L 57.66180897 21.36695194 L 58.76796818 22.4731102 L 59.47816563 23.86695194 L 59.72288322 25.4120369 L 59.47816563 26.95712185 L 58.76796818 28.35096264 L 57.66180897 29.45712185 L 56.26796818 30.1673193 Z" fill="rgb(173.125, 0, 0.0)"/>
34
+ <rect x="32" y="32" width="32" height="32" fill="rgb(75.0, 0, 75.0)"/>
35
+ <path d=" M 46.01487637 64.0 L 45.36474037 63.1701622 L 44.56509686 61.84739017 L 43.93072605 60.4378767 L 43.4708786 58.96217442 L 43.19225979 57.44180298 L 43.09893417 55.89893341 L 43.19225979 54.35606384 L 43.4708786 52.83569336 L 43.93072605 51.35999107 L 44.56509686 49.9504776 L 45.36474037 48.62770462 L 46.31799603 47.41096401 L 47.41096401 46.31799603 L 48.62770462 45.36474037 L 49.9504776 44.56509686 L 51.35999107 43.93072605 L 52.83569336 43.4708786 L 54.35606384 43.19225979 L 55.89893341 43.09893417 L 57.44180298 43.19225979 L 58.96217442 43.4708786 L 60.4378767 43.93072605 L 61.84739017 44.56509686 L 63.1701622 45.36474037 L 64.0 46.01487637 L 64.0 64.0 Z" fill="white"/>
36
+ <path d=" M 58.90778446 63.90778446 L 57.36269951 63.66306782 L 55.96885872 62.95286942 L 54.86269951 61.84671116 L 54.15250206 60.45286942 L 53.90778446 58.90778446 L 54.15250206 57.36269951 L 54.86269951 55.96885872 L 55.96885872 54.86269951 L 57.36269951 54.15250206 L 58.90778446 53.90778446 L 60.45286942 54.15250206 L 61.84671116 54.86269951 L 62.95286942 55.96885872 L 63.66306782 57.36269951 L 63.90778446 58.90778446 L 63.66306782 60.45286942 L 62.95286942 61.84671116 L 61.84671116 62.95286942 L 60.45286942 63.66306782 Z" fill="rgb(173.125, 0, 31.875)"/>
37
+ <rect x="32" y="64" width="32" height="32" fill="rgb(75.0, 0, 100.0)"/>
38
+ <path d=" M 50.71172523 96.0 L 50.37064552 95.65892029 L 49.41738987 94.44217873 L 48.61774635 93.1194067 L 47.98337555 91.70989227 L 47.5235281 90.23418999 L 47.24491024 88.7138195 L 47.15158367 87.17094994 L 47.24491024 85.62808037 L 47.5235281 84.10770893 L 47.98337555 82.6320076 L 48.61774635 81.22249317 L 49.41738987 79.89972115 L 50.37064552 78.68297958 L 51.46361351 77.59001255 L 52.68035507 76.63675594 L 54.0031271 75.83711243 L 55.41264057 75.20274162 L 56.88834286 74.74289417 L 58.40871429 74.46427631 L 59.95158291 74.37094975 L 61.49445248 74.46427631 L 63.01482391 74.74289417 L 64.0 75.04988766 L 64.0 96.0 Z" fill="white"/>
39
+ <path d=" M 62.79131317 93.87478733 L 61.24622822 93.63007069 L 59.85238743 92.91987228 L 58.74622822 91.81371403 L 58.03603077 90.41987228 L 57.79131317 88.87478733 L 58.03603077 87.32970238 L 58.74622822 85.93586159 L 59.85238743 84.82970238 L 61.24622822 84.11950493 L 62.79131317 83.87478733 L 64.0 84.06622505 L 64.0 93.68335056 Z" fill="rgb(173.125, 0, 63.75)"/>
40
+ <rect x="32" y="96" width="32" height="32" fill="rgb(75.0, 0, 125.0)"/>
41
+ <path d=" M 62.63546276 127.72709179 L 61.09259319 127.63376617 L 59.57222271 127.35514736 L 58.09652042 126.89529991 L 56.687006 126.26092911 L 55.36423397 125.46128559 L 54.14749336 124.50802994 L 53.05452538 123.41506195 L 52.10126972 122.19832134 L 51.30162621 120.87554836 L 50.6672554 119.46603489 L 50.20740795 117.9903326 L 49.92878914 116.46996212 L 49.83546257 114.92709255 L 49.92878914 113.38422298 L 50.20740795 111.86385155 L 50.6672554 110.38814926 L 51.30162621 108.97863579 L 52.10126972 107.65586376 L 53.05452538 106.4391222 L 54.14749336 105.34615421 L 55.36423397 104.39289856 L 56.687006 103.59325504 L 58.09652042 102.95888424 L 59.57222271 102.49903679 L 61.09259319 102.22041893 L 62.63546276 102.12709236 L 64.0 102.20963192 L 64.0 127.64455318 Z" fill="white"/>
42
+ <path d=" M 64.0 120.25673008 L 63.81810665 120.22792053 L 62.42426586 119.51772308 L 61.31810665 118.41156387 L 60.6079092 117.01772308 L 60.3631916 115.47263813 L 60.6079092 113.92755318 L 61.31810665 112.53371143 L 62.42426586 111.42755318 L 63.81810665 110.71735573 L 64.0 110.68854618 Z" fill="rgb(173.125, 0, 95.625)"/>
43
+ <rect x="32" y="128" width="32" height="32" fill="rgb(75.0, 0, 150.0)"/>
44
+ <path d=" M 62.63546276 153.87290668 L 61.09259319 153.77958012 L 59.57222271 153.50096226 L 58.09652042 153.04111481 L 56.687006 152.406744 L 55.36423397 151.60710049 L 54.14749336 150.65384483 L 53.05452538 149.56087685 L 52.10126972 148.34413528 L 51.30162621 147.02136326 L 50.6672554 145.61184978 L 50.20740795 144.1361475 L 49.92878914 142.61577606 L 49.83546257 141.07290649 L 49.92878914 139.53003693 L 50.20740795 138.00966644 L 50.6672554 136.53396416 L 51.30162621 135.12445068 L 52.10126972 133.8016777 L 53.05452538 132.5849371 L 54.14749336 131.49196911 L 55.36423397 130.53871346 L 56.687006 129.73906994 L 58.09652042 129.10469913 L 59.57222271 128.64485168 L 61.09259319 128.36623287 L 62.63546276 128.27290726 L 64.0 128.35544586 L 64.0 153.79036713 Z" fill="white"/>
45
+ <path d=" M 64.0 145.31145287 L 63.81810665 145.28264332 L 62.42426586 144.57244587 L 61.31810665 143.46628761 L 60.6079092 142.07244587 L 60.3631916 140.52736092 L 60.6079092 138.98227596 L 61.31810665 137.58843517 L 62.42426586 136.48227596 L 63.81810665 135.77207851 L 64.0 135.74326897 Z" fill="rgb(173.125, 0, 127.5)"/>
46
+ <rect x="32" y="160" width="32" height="32" fill="rgb(75.0, 0, 175.0)"/>
47
+ <path d=" M 59.95158291 181.6290493 L 58.40871429 181.53572273 L 56.88834286 181.25710487 L 55.41264057 180.79725742 L 54.0031271 180.16288662 L 52.68035507 179.3632431 L 51.46361351 178.4099865 L 50.37064552 177.31701946 L 49.41738987 176.1002779 L 48.61774635 174.77750587 L 47.98337555 173.36799145 L 47.5235281 171.89229012 L 47.24491024 170.37191868 L 47.15158367 168.82904911 L 47.24491024 167.28617954 L 47.5235281 165.76580906 L 47.98337555 164.29010677 L 48.61774635 162.88059235 L 49.41738987 161.55782032 L 50.37064552 160.34107876 L 50.71172428 160.0 L 64.0 160.0 L 64.0 180.95011139 L 63.01482391 181.25710487 L 61.49445248 181.53572273 Z" fill="white"/>
48
+ <path d=" M 62.79131317 172.12521172 L 61.24622822 171.88049412 L 59.85238743 171.17029667 L 58.74622822 170.06413746 L 58.03603077 168.67029667 L 57.79131317 167.12521172 L 58.03603077 165.58012676 L 58.74622822 164.18628502 L 59.85238743 163.08012676 L 61.24622822 162.36992836 L 62.79131317 162.12521172 L 64.0 162.31664848 L 64.0 171.93377399 Z" fill="rgb(173.125, 0, 159.375)"/>
49
+ <rect x="32" y="192" width="32" height="32" fill="rgb(75.0, 0, 200.0)"/>
50
+ <path d=" M 55.89893341 212.90106487 L 54.35606384 212.80773926 L 52.83569336 212.52912045 L 51.35999107 212.06927299 L 49.9504776 211.43490219 L 48.62770462 210.63525867 L 47.41096401 209.68200302 L 46.31799603 208.58903503 L 45.36474037 207.37229443 L 44.56509686 206.04952145 L 43.93072605 204.64000797 L 43.4708786 203.16430569 L 43.19225979 201.6439352 L 43.09893417 200.10106564 L 43.19225979 198.55819607 L 43.4708786 197.03782463 L 43.93072605 195.56212234 L 44.56509686 194.15260887 L 45.36474037 192.82983685 L 46.01487541 192.0 L 64.0 192.0 L 64.0 209.98512268 L 63.1701622 210.63525867 L 61.84739017 211.43490219 L 60.4378767 212.06927299 L 58.96217442 212.52912045 L 57.44180298 212.80773926 Z" fill="white"/>
51
+ <path d=" M 58.90778446 202.09221458 L 57.36269951 201.84749699 L 55.96885872 201.13729954 L 54.86269951 200.03114033 L 54.15250206 198.63729954 L 53.90778446 197.09221458 L 54.15250206 195.54712963 L 54.86269951 194.15328789 L 55.96885872 193.04712963 L 57.36269951 192.33693123 L 58.90778446 192.09221458 L 60.45286942 192.33693123 L 61.84671116 193.04712963 L 62.95286942 194.15328789 L 63.66306782 195.54712963 L 63.90778446 197.09221458 L 63.66306782 198.63729954 L 62.95286942 200.03114033 L 61.84671116 201.13729954 L 60.45286942 201.84749699 Z" fill="rgb(173.125, 0, 191.25)"/>
52
+ <rect x="32" y="224" width="32" height="32" fill="rgb(75.0, 0, 225.0)"/>
53
+ <path d=" M 51.53178596 247.85549831 L 49.98891735 247.76217175 L 48.46854591 247.48355293 L 46.99284363 247.02370548 L 45.58333015 246.38933468 L 44.26055813 245.58969116 L 43.04381657 244.63643551 L 41.95084858 243.54346752 L 40.99759293 242.32672691 L 40.19794941 241.00395489 L 39.56357861 239.59444046 L 39.10373116 238.11873817 L 38.8251133 236.59836769 L 38.73178673 235.05549812 L 38.8251133 233.51262856 L 39.10373116 231.99225712 L 39.56357861 230.51655483 L 40.19794941 229.10704136 L 40.99759293 227.78426933 L 41.95084858 226.56752777 L 43.04381657 225.47456074 L 44.26055813 224.52130413 L 45.12290096 224.0 L 57.94067192 224.0 L 58.80301476 224.52130413 L 60.01975632 225.47456074 L 61.1127243 226.56752777 L 62.06597996 227.78426933 L 62.86562347 229.10704136 L 63.49999428 230.51655483 L 63.95984173 231.99225712 L 64.0 232.21139431 L 64.0 237.89960098 L 63.95984173 238.11873817 L 63.49999428 239.59444046 L 62.86562347 241.00395489 L 62.06597996 242.32672691 L 61.1127243 243.54346752 L 60.01975632 244.63643551 L 58.80301476 245.58969116 L 57.48024273 246.38933468 L 56.07072926 247.02370548 L 54.59502697 247.48355293 L 53.07465553 247.76217175 Z" fill="white"/>
54
+ <path d=" M 54.72288322 235.58796215 L 53.17779827 235.34324551 L 51.78395653 234.6330471 L 50.67779827 233.52688885 L 49.96760082 232.1330471 L 49.72288322 230.58796215 L 49.96760082 229.0428772 L 50.67779827 227.64903641 L 51.78395653 226.5428772 L 53.17779827 225.83267975 L 54.72288322 225.58796215 L 56.26796818 225.83267975 L 57.66180897 226.5428772 L 58.76796818 227.64903641 L 59.47816563 229.0428772 L 59.72288322 230.58796215 L 59.47816563 232.1330471 L 58.76796818 233.52688885 L 57.66180897 234.6330471 L 56.26796818 235.34324551 Z" fill="rgb(173.125, 0, 223.125)"/>
55
+ <rect x="64" y="0" width="32" height="32" fill="rgb(100.0, 0, 50.0)"/>
56
+ <path d=" M 73.19663048 32.0 L 72.43161011 30.73450184 L 71.7972393 29.32498741 L 71.33739185 27.84928513 L 71.05877399 26.32891464 L 70.96544743 24.78604507 L 71.05877399 23.24317551 L 71.33739185 21.72280407 L 71.7972393 20.24710274 L 72.43161011 18.83758831 L 73.23125362 17.51481628 L 74.18451023 16.29807472 L 75.27747726 15.20510769 L 76.49421883 14.25185108 L 77.81699085 13.45220757 L 79.22650528 12.81783676 L 80.70220661 12.35798931 L 82.22257805 12.07937145 L 83.76544762 11.98604488 L 85.30831718 12.07937145 L 86.82868767 12.35798931 L 88.30438995 12.81783676 L 89.71390438 13.45220757 L 91.03667641 14.25185108 L 92.25341797 15.20510769 L 93.346385 16.29807472 L 94.29964066 17.51481628 L 95.09928513 18.83758831 L 95.73365498 20.24710274 L 96.0 21.10183334 L 96.0 28.47025585 L 95.73365498 29.32498741 L 95.09928513 30.73450184 L 94.3342638 32.0 Z" fill="white"/>
57
+ <path d=" M 81.5499115 32.0 L 80.8561182 30.63835335 L 80.6114006 29.09326839 L 80.8561182 27.54818344 L 81.56631565 26.15434265 L 82.67247391 25.04818344 L 84.06631565 24.33798599 L 85.6114006 24.09326839 L 87.15648556 24.33798599 L 88.5503273 25.04818344 L 89.65648556 26.15434265 L 90.36668301 27.54818344 L 90.6114006 29.09326839 L 90.36668301 30.63835335 L 89.67288971 32.0 Z" fill="rgb(141.25, 0, 0.0)"/>
58
+ <rect x="64" y="32" width="32" height="32" fill="rgb(100.0, 0, 75.0)"/>
59
+ <path d=" M 75.04988766 64.0 L 74.74289417 63.01482391 L 74.46427631 61.49445248 L 74.37094975 59.95158291 L 74.46427631 58.40871429 L 74.74289417 56.88834286 L 75.20274162 55.41264057 L 75.83711243 54.0031271 L 76.63675594 52.68035507 L 77.59001255 51.46361351 L 78.68297958 50.37064552 L 79.89972115 49.41738987 L 81.22249317 48.61774635 L 82.6320076 47.98337555 L 84.10770893 47.5235281 L 85.62808037 47.24491024 L 87.17094994 47.15158367 L 88.7138195 47.24491024 L 90.23418999 47.5235281 L 91.70989227 47.98337555 L 93.1194067 48.61774635 L 94.44217873 49.41738987 L 95.65892029 50.37064552 L 96.0 50.71172523 L 96.0 64.0 Z" fill="white"/>
60
+ <path d=" M 84.06622505 64.0 L 83.87478733 62.79131317 L 84.11950493 61.24622822 L 84.82970238 59.85238743 L 85.93586159 58.74622822 L 87.32970238 58.03603077 L 88.87478733 57.79131317 L 90.41987228 58.03603077 L 91.81371403 58.74622822 L 92.91987228 59.85238743 L 93.63007069 61.24622822 L 93.87478733 62.79131317 L 93.68335056 64.0 Z" fill="rgb(141.25, 0, 31.875)"/>
61
+ <rect x="64" y="64" width="32" height="32" fill="rgb(100.0, 0, 100.0)"/>
62
+ <path d=" M 79.17657852 96.0 L 78.91774464 95.42489529 L 78.45789719 93.949193 L 78.17927933 92.42882252 L 78.08595276 90.88595295 L 78.17927933 89.34308338 L 78.45789719 87.82271194 L 78.91774464 86.34701061 L 79.55211544 84.93749619 L 80.35175896 83.61472416 L 81.30501556 82.3979826 L 82.3979826 81.30501556 L 83.61472416 80.35175896 L 84.93749619 79.55211544 L 86.34701061 78.91774464 L 87.82271194 78.45789719 L 89.34308338 78.17927933 L 90.88595295 78.08595276 L 92.42882252 78.17927933 L 93.949193 78.45789719 L 95.42489529 78.91774464 L 96.0 79.17657852 L 96.0 96.0 Z" fill="white"/>
63
+ <path d=" M 89.01598835 96.0 L 88.38967514 95.37368584 L 87.67947769 93.97984505 L 87.43476009 92.43476009 L 87.67947769 90.88967514 L 88.38967514 89.4958334 L 89.4958334 88.38967514 L 90.88967514 87.67947769 L 92.43476009 87.43476009 L 93.97984505 87.67947769 L 95.37368584 88.38967514 L 96.0 89.01598835 L 96.0 95.85353088 L 95.85353088 96.0 Z" fill="rgb(141.25, 0, 63.75)"/>
64
+ <rect x="64" y="96" width="32" height="32" fill="rgb(100.0, 0, 125.0)"/>
65
+ <path d=" M 88.05883789 128.0 L 86.74688816 127.20689869 L 85.5301466 126.25364304 L 84.43717957 125.16067505 L 83.48392391 123.94393444 L 82.68427944 122.62116241 L 82.04990864 121.21164799 L 81.59006214 119.7359457 L 81.31144333 118.21557522 L 81.21811676 116.67270565 L 81.31144333 115.12983608 L 81.59006214 113.60946465 L 82.04990864 112.13376236 L 82.68427944 110.72424889 L 83.48392391 109.40147686 L 84.43717957 108.1847353 L 85.5301466 107.09176731 L 86.74688816 106.13851166 L 88.06966019 105.33886814 L 89.47917461 104.70449734 L 90.9548769 104.24464989 L 92.47524738 103.96603203 L 94.01811695 103.87270546 L 95.56098652 103.96603203 L 96.0 104.04648399 L 96.0 128.0 Z" fill="white"/>
66
+ <path d=" M 95.4362154 122.14540482 L 93.89113045 121.90068722 L 92.49728966 121.19048977 L 91.39113045 120.08433151 L 90.680933 118.69048977 L 90.4362154 117.14540482 L 90.680933 115.60031986 L 91.39113045 114.20647907 L 92.49728966 113.10031986 L 93.89113045 112.39012241 L 95.4362154 112.14540482 L 96.0 112.23469925 L 96.0 122.05611038 Z" fill="rgb(141.25, 0, 95.625)"/>
67
+ <rect x="64" y="128" width="32" height="32" fill="rgb(100.0, 0, 150.0)"/>
68
+ <path d=" M 94.01811695 152.12729359 L 92.47524738 152.03396702 L 90.9548769 151.75534916 L 89.47917461 151.29550171 L 88.06966019 150.66113091 L 86.74688816 149.86148739 L 85.5301466 148.90823174 L 84.43717957 147.81526375 L 83.48392391 146.59852219 L 82.68427944 145.27575016 L 82.04990864 143.86623669 L 81.59006214 142.3905344 L 81.31144333 140.87016296 L 81.21811676 139.3272934 L 81.31144333 137.78442383 L 81.59006214 136.26405334 L 82.04990864 134.78835106 L 82.68427944 133.37883663 L 83.48392391 132.05606461 L 84.43717957 130.839324 L 85.5301466 129.74635601 L 86.74688816 128.79310036 L 88.05883694 128.0 L 96.0 128.0 L 96.0 151.95351505 L 95.56098652 152.03396702 Z" fill="white"/>
69
+ <path d=" M 95.4362154 143.85459423 L 93.89113045 143.60987663 L 92.49728966 142.89967918 L 91.39113045 141.79351997 L 90.680933 140.39967918 L 90.4362154 138.85459423 L 90.680933 137.30950928 L 91.39113045 135.91566753 L 92.49728966 134.80950928 L 93.89113045 134.09931183 L 95.4362154 133.85459423 L 96.0 133.94388866 L 96.0 143.7652998 Z" fill="rgb(141.25, 0, 127.5)"/>
70
+ <rect x="64" y="160" width="32" height="32" fill="rgb(100.0, 0, 175.0)"/>
71
+ <path d=" M 90.88595295 177.91404629 L 89.34308338 177.82071972 L 87.82271194 177.54210186 L 86.34701061 177.08225441 L 84.93749619 176.44788361 L 83.61472416 175.64824009 L 82.3979826 174.69498348 L 81.30501556 173.60201645 L 80.35175896 172.38527489 L 79.55211544 171.06250286 L 78.91774464 169.65298843 L 78.45789719 168.1772871 L 78.17927933 166.65691566 L 78.08595276 165.1140461 L 78.17927933 163.57117653 L 78.45789719 162.05080605 L 78.91774464 160.57510376 L 79.17657757 160.0 L 96.0 160.0 L 96.0 176.82342052 L 95.42489529 177.08225441 L 93.949193 177.54210186 L 92.42882252 177.82071972 Z" fill="white"/>
72
+ <path d=" M 92.43476009 168.56523895 L 90.88967514 168.32052135 L 89.4958334 167.61032391 L 88.38967514 166.50416565 L 87.67947769 165.11032391 L 87.43476009 163.56523895 L 87.67947769 162.020154 L 88.38967514 160.62631321 L 89.0159874 160.0 L 95.85353184 160.0 L 96.0 160.14646816 L 96.0 166.9840107 L 95.37368584 167.61032391 L 93.97984505 168.32052135 Z" fill="rgb(141.25, 0, 159.375)"/>
73
+ <rect x="64" y="192" width="32" height="32" fill="rgb(100.0, 0, 200.0)"/>
74
+ <path d=" M 87.17094994 208.84841537 L 85.62808037 208.75508881 L 84.10770893 208.47647095 L 82.6320076 208.0166235 L 81.22249317 207.38225269 L 79.89972115 206.58260918 L 78.68297958 205.62935352 L 77.59001255 204.53638554 L 76.63675594 203.31964397 L 75.83711243 201.99687195 L 75.20274162 200.58735847 L 74.74289417 199.11165619 L 74.46427631 197.59128475 L 74.37094975 196.04841614 L 74.46427631 194.50554657 L 74.74289417 192.98517513 L 75.0498867 192.0 L 96.0 192.0 L 96.0 205.28827381 L 95.65892029 205.62935352 L 94.44217873 206.58260918 L 93.1194067 207.38225269 L 91.70989227 208.0166235 L 90.23418999 208.47647095 L 88.7138195 208.75508881 Z" fill="white"/>
75
+ <path d=" M 88.87478733 198.20868587 L 87.32970238 197.96396828 L 85.93586159 197.25377083 L 84.82970238 196.14761162 L 84.11950493 194.75377083 L 83.87478733 193.20868587 L 84.0662241 192.0 L 93.68335056 192.0 L 93.87478733 193.20868587 L 93.63007069 194.75377083 L 92.91987228 196.14761162 L 91.81371403 197.25377083 L 90.41987228 197.96396828 Z" fill="rgb(141.25, 0, 191.25)"/>
76
+ <rect x="64" y="224" width="32" height="32" fill="rgb(100.0, 0, 225.0)"/>
77
+ <path d=" M 83.76544762 244.01395416 L 82.22257805 243.92062759 L 80.70220661 243.64200974 L 79.22650528 243.18216228 L 77.81699085 242.54779148 L 76.49421883 241.74814796 L 75.27747726 240.79489136 L 74.18451023 239.70192432 L 73.23125362 238.48518276 L 72.43161011 237.16241074 L 71.7972393 235.75289631 L 71.33739185 234.27719498 L 71.05877399 232.75682354 L 70.96544743 231.21395397 L 71.05877399 229.6710844 L 71.33739185 228.15071392 L 71.7972393 226.67501163 L 72.43161011 225.26549721 L 73.19662952 224.0 L 94.33426476 224.0 L 95.09928513 225.26549721 L 95.73365498 226.67501163 L 96.0 227.52974319 L 96.0 234.8981657 L 95.73365498 235.75289631 L 95.09928513 237.16241074 L 94.29964066 238.48518276 L 93.346385 239.70192432 L 92.25341797 240.79489136 L 91.03667641 241.74814796 L 89.71390438 242.54779148 L 88.30438995 243.18216228 L 86.82868767 243.64200974 L 85.30831718 243.92062759 Z" fill="white"/>
78
+ <path d=" M 85.6114006 231.90673065 L 84.06631565 231.66201305 L 82.67247391 230.95181561 L 81.56631565 229.84565639 L 80.8561182 228.45181561 L 80.6114006 226.90673065 L 80.8561182 225.3616457 L 81.54991055 224.0 L 89.67289066 224.0 L 90.36668301 225.3616457 L 90.6114006 226.90673065 L 90.36668301 228.45181561 L 89.65648556 229.84565639 L 88.5503273 230.95181561 L 87.15648556 231.66201305 Z" fill="rgb(141.25, 0, 223.125)"/>
79
+ <rect x="96" y="0" width="32" height="32" fill="rgb(125.0, 0, 50.0)"/>
80
+ <path d=" M 101.79275131 32.0 L 101.61157799 31.59745026 L 101.15173149 30.12174797 L 100.87311268 28.60137653 L 100.77978611 27.05850697 L 100.87311268 25.51563835 L 101.15173149 23.99526691 L 101.61157799 22.51956463 L 102.24594879 21.11005116 L 103.04559326 19.78727913 L 103.99884892 18.57053757 L 105.09181595 17.47756958 L 106.30855751 16.52431393 L 107.63132954 15.72467041 L 109.04084396 15.09029961 L 110.51654625 14.63045216 L 112.03691673 14.3518343 L 113.5797863 14.25850773 L 115.12265587 14.3518343 L 116.64302731 14.63045216 L 118.11872864 15.09029961 L 119.52824306 15.72467041 L 120.85101509 16.52431393 L 122.06775665 17.47756958 L 123.16072369 18.57053757 L 124.11398029 19.78727913 L 124.91362381 21.11005116 L 125.54799461 22.51956463 L 126.00784206 23.99526691 L 126.28645992 25.51563835 L 126.37978649 27.05850697 L 126.28645992 28.60137653 L 126.00784206 30.12174797 L 125.54799461 31.59745026 L 125.36682129 32.0 Z" fill="white"/>
81
+ <path d=" M 109.29703522 32.0 L 109.1815567 31.27089882 L 109.4262743 29.72581387 L 110.13647175 28.33197308 L 111.24263 27.22581387 L 112.63647175 26.51561642 L 114.1815567 26.27089882 L 115.72664165 26.51561642 L 117.12048244 27.22581387 L 118.22664165 28.33197308 L 118.9368391 29.72581387 L 119.1815567 31.27089882 L 119.06607819 32.0 Z" fill="rgb(109.375, 0, 0.0)"/>
82
+ <rect x="96" y="32" width="32" height="32" fill="rgb(125.0, 0, 75.0)"/>
83
+ <path d=" M 102.20963192 64.0 L 102.12709236 62.63546276 L 102.22041893 61.09259319 L 102.49903679 59.57222271 L 102.95888424 58.09652042 L 103.59325504 56.687006 L 104.39289856 55.36423397 L 105.34615421 54.14749336 L 106.4391222 53.05452538 L 107.65586376 52.10126972 L 108.97863579 51.30162621 L 110.38814926 50.6672554 L 111.86385155 50.20740795 L 113.38422298 49.92878914 L 114.92709255 49.83546257 L 116.46996212 49.92878914 L 117.9903326 50.20740795 L 119.46603489 50.6672554 L 120.87554836 51.30162621 L 122.19832134 52.10126972 L 123.41506195 53.05452538 L 124.50802994 54.14749336 L 125.46128559 55.36423397 L 126.26092911 56.687006 L 126.89529991 58.09652042 L 127.35514736 59.57222271 L 127.63376617 61.09259319 L 127.72709179 62.63546276 L 127.64455318 64.0 Z" fill="white"/>
84
+ <path d=" M 110.68854618 64.0 L 110.71735573 63.81810665 L 111.42755318 62.42426586 L 112.53371143 61.31810665 L 113.92755318 60.6079092 L 115.47263813 60.3631916 L 117.01772308 60.6079092 L 118.41156387 61.31810665 L 119.51772308 62.42426586 L 120.22792053 63.81810665 L 120.25673008 64.0 Z" fill="rgb(109.375, 0, 31.875)"/>
85
+ <rect x="96" y="64" width="32" height="32" fill="rgb(125.0, 0, 100.0)"/>
86
+ <path d=" M 104.04648399 96.0 L 103.96603203 95.56098652 L 103.87270546 94.01811695 L 103.96603203 92.47524738 L 104.24464989 90.9548769 L 104.70449734 89.47917461 L 105.33886814 88.06966019 L 106.13851166 86.74688816 L 107.09176731 85.5301466 L 108.1847353 84.43717957 L 109.40147686 83.48392391 L 110.72424889 82.68427944 L 112.13376236 82.04990864 L 113.60946465 81.59006214 L 115.12983608 81.31144333 L 116.67270565 81.21811676 L 118.21557522 81.31144333 L 119.7359457 81.59006214 L 121.21164799 82.04990864 L 122.62116241 82.68427944 L 123.94393444 83.48392391 L 125.16067505 84.43717957 L 126.25364304 85.5301466 L 127.20689869 86.74688816 L 128.0 88.05883789 L 128.0 96.0 Z" fill="white"/>
87
+ <path d=" M 112.23469925 96.0 L 112.14540482 95.4362154 L 112.39012241 93.89113045 L 113.10031986 92.49728966 L 114.20647907 91.39113045 L 115.60031986 90.680933 L 117.14540482 90.4362154 L 118.69048977 90.680933 L 120.08433151 91.39113045 L 121.19048977 92.49728966 L 121.90068722 93.89113045 L 122.14540482 95.4362154 L 122.05611038 96.0 Z" fill="rgb(109.375, 0, 63.75)"/>
88
+ <rect x="96" y="96" width="32" height="32" fill="rgb(125.0, 0, 125.0)"/>
89
+ <path d=" M 109.93109226 128.0 L 109.52130222 127.59020996 L 108.56804657 126.3734684 L 107.7684021 125.05069637 L 107.13403225 123.64118195 L 106.6741848 122.16548061 L 106.39556599 120.64510918 L 106.30223942 119.10223961 L 106.39556599 117.55937004 L 106.6741848 116.03899956 L 107.13403225 114.56329727 L 107.7684021 113.15378284 L 108.56804657 111.83101082 L 109.52130222 110.61426926 L 110.61426926 109.52130222 L 111.83101082 108.56804657 L 113.15378284 107.7684021 L 114.56329727 107.13403225 L 116.03899956 106.6741848 L 117.55937004 106.39556599 L 119.10223961 106.30223942 L 120.64510918 106.39556599 L 122.16548061 106.6741848 L 123.64118195 107.13403225 L 125.05069637 107.7684021 L 126.3734684 108.56804657 L 127.59020996 109.52130222 L 128.0 109.93109226 L 128.0 128.0 Z" fill="white"/>
90
+ <path d=" M 119.4735527 124.4735527 L 117.92846775 124.22883511 L 116.53462601 123.51863766 L 115.42846775 122.41247845 L 114.71826935 121.01863766 L 114.4735527 119.4735527 L 114.71826935 117.92846775 L 115.42846775 116.53462601 L 116.53462601 115.42846775 L 117.92846775 114.71826935 L 119.4735527 114.4735527 L 121.01863766 114.71826935 L 122.41247845 115.42846775 L 123.51863766 116.53462601 L 124.22883511 117.92846775 L 124.4735527 119.4735527 L 124.22883511 121.01863766 L 123.51863766 122.41247845 L 122.41247845 123.51863766 L 121.01863766 124.22883511 Z" fill="rgb(109.375, 0, 95.625)"/>
91
+ <rect x="96" y="128" width="32" height="32" fill="rgb(125.0, 0, 150.0)"/>
92
+ <path d=" M 119.10223961 149.69775963 L 117.55937004 149.60443306 L 116.03899956 149.32581425 L 114.56329727 148.8659668 L 113.15378284 148.23159695 L 111.83101082 147.43195248 L 110.61426926 146.47869682 L 109.52130222 145.38572979 L 108.56804657 144.16898823 L 107.7684021 142.8462162 L 107.13403225 141.43670177 L 106.6741848 139.96099949 L 106.39556599 138.44062901 L 106.30223942 136.89775944 L 106.39556599 135.35488987 L 106.6741848 133.83451843 L 107.13403225 132.3588171 L 107.7684021 130.94930267 L 108.56804657 129.62653065 L 109.52130222 128.40978909 L 109.93109131 128.0 L 128.0 128.0 L 128.0 146.06890678 L 127.59020996 146.47869682 L 126.3734684 147.43195248 L 125.05069637 148.23159695 L 123.64118195 148.8659668 L 122.16548061 149.32581425 L 120.64510918 149.60443306 Z" fill="white"/>
93
+ <path d=" M 119.4735527 141.52644634 L 117.92846775 141.2817297 L 116.53462601 140.5715313 L 115.42846775 139.46537304 L 114.71826935 138.0715313 L 114.4735527 136.52644634 L 114.71826935 134.98136139 L 115.42846775 133.5875206 L 116.53462601 132.48136139 L 117.92846775 131.77116394 L 119.4735527 131.52644634 L 121.01863766 131.77116394 L 122.41247845 132.48136139 L 123.51863766 133.5875206 L 124.22883511 134.98136139 L 124.4735527 136.52644634 L 124.22883511 138.0715313 L 123.51863766 139.46537304 L 122.41247845 140.5715313 L 121.01863766 141.2817297 Z" fill="rgb(109.375, 0, 127.5)"/>
94
+ <rect x="96" y="160" width="32" height="32" fill="rgb(125.0, 0, 175.0)"/>
95
+ <path d=" M 116.67270565 174.78188229 L 115.12983608 174.68855572 L 113.60946465 174.4099369 L 112.13376236 173.95009041 L 110.72424889 173.3157196 L 109.40147686 172.51607513 L 108.1847353 171.56281948 L 107.09176731 170.46985245 L 106.13851166 169.25311089 L 105.33886814 167.93033886 L 104.70449734 166.52082443 L 104.24464989 165.04512215 L 103.96603203 163.52475166 L 103.87270546 161.9818821 L 103.96603203 160.43901253 L 104.04648399 160.0 L 128.0 160.0 L 128.0 167.94116116 L 127.20689869 169.25311089 L 126.25364304 170.46985245 L 125.16067505 171.56281948 L 123.94393444 172.51607513 L 122.62116241 173.3157196 L 121.21164799 173.95009041 L 119.7359457 174.4099369 L 118.21557522 174.68855572 Z" fill="white"/>
96
+ <path d=" M 117.14540482 165.56378365 L 115.60031986 165.31906605 L 114.20647907 164.6088686 L 113.10031986 163.50270939 L 112.39012241 162.1088686 L 112.14540482 160.56378365 L 112.23469925 160.0 L 122.05611038 160.0 L 122.14540482 160.56378365 L 121.90068722 162.1088686 L 121.19048977 163.50270939 L 120.08433151 164.6088686 L 118.69048977 165.31906605 Z" fill="rgb(109.375, 0, 159.375)"/>
97
+ <rect x="96" y="192" width="32" height="32" fill="rgb(125.0, 0, 200.0)"/>
98
+ <path d=" M 114.92709255 206.16453648 L 113.38422298 206.07120991 L 111.86385155 205.79259109 L 110.38814926 205.33274364 L 108.97863579 204.69837284 L 107.65586376 203.89872932 L 106.4391222 202.94547367 L 105.34615421 201.85250568 L 104.39289856 200.63576508 L 103.59325504 199.31299305 L 102.95888424 197.90347862 L 102.49903679 196.42777634 L 102.22041893 194.90740585 L 102.12709236 193.36453629 L 102.20963192 192.0 L 127.64455318 192.0 L 127.72709179 193.36453629 L 127.63376617 194.90740585 L 127.35514736 196.42777634 L 126.89529991 197.90347862 L 126.26092911 199.31299305 L 125.46128559 200.63576508 L 124.50802994 201.85250568 L 123.41506195 202.94547367 L 122.19832134 203.89872932 L 120.87554836 204.69837284 L 119.46603489 205.33274364 L 117.9903326 205.79259109 L 116.46996212 206.07120991 Z" fill="white"/>
99
+ <path d=" M 115.47263813 195.63680744 L 113.92755318 195.39208984 L 112.53371143 194.6818924 L 111.42755318 193.57573318 L 110.71735573 192.1818924 L 110.68854713 192.0 L 120.25672913 192.0 L 120.22792053 192.1818924 L 119.51772308 193.57573318 L 118.41156387 194.6818924 L 117.01772308 195.39208984 Z" fill="rgb(109.375, 0, 191.25)"/>
100
+ <rect x="96" y="224" width="32" height="32" fill="rgb(125.0, 0, 225.0)"/>
101
+ <path d=" M 113.5797863 241.74149132 L 112.03691673 241.64816475 L 110.51654625 241.36954689 L 109.04084396 240.90969944 L 107.63132954 240.27532864 L 106.30855751 239.47568512 L 105.09181595 238.52242947 L 103.99884892 237.42946148 L 103.04559326 236.21271992 L 102.24594879 234.88994789 L 101.61157799 233.48043442 L 101.15173149 232.00473213 L 100.87311268 230.48436069 L 100.77978611 228.94149208 L 100.87311268 227.39862251 L 101.15173149 225.87825108 L 101.61157799 224.40254879 L 101.79275036 224.0 L 125.36682224 224.0 L 125.54799461 224.40254879 L 126.00784206 225.87825108 L 126.28645992 227.39862251 L 126.37978649 228.94149208 L 126.28645992 230.48436069 L 126.00784206 232.00473213 L 125.54799461 233.48043442 L 124.91362381 234.88994789 L 124.11398029 236.21271992 L 123.16072369 237.42946148 L 122.06775665 238.52242947 L 120.85101509 239.47568512 L 119.52824306 240.27532864 L 118.11872864 240.90969944 L 116.64302731 241.36954689 L 115.12265587 241.64816475 Z" fill="white"/>
102
+ <path d=" M 114.1815567 229.72910023 L 112.63647175 229.48438263 L 111.24263 228.77418518 L 110.13647175 227.66802597 L 109.4262743 226.27418518 L 109.1815567 224.72910023 L 109.29703522 224.0 L 119.06607819 224.0 L 119.1815567 224.72910023 L 118.9368391 226.27418518 L 118.22664165 227.66802597 L 117.12048244 228.77418518 L 115.72664165 229.48438263 Z" fill="rgb(109.375, 0, 223.125)"/>
103
+ <rect x="128" y="0" width="32" height="32" fill="rgb(150.0, 0, 50.0)"/>
104
+ <path d=" M 130.63317776 32.0 L 130.45200443 31.59745026 L 129.99215698 30.12174797 L 129.71353912 28.60137653 L 129.62021255 27.05850697 L 129.71353912 25.51563835 L 129.99215698 23.99526691 L 130.45200443 22.51956463 L 131.08637524 21.11005116 L 131.88601875 19.78727913 L 132.83927536 18.57053757 L 133.93224239 17.47756958 L 135.14898396 16.52431393 L 136.47175598 15.72467041 L 137.88127041 15.09029961 L 139.35697174 14.63045216 L 140.87734318 14.3518343 L 142.42021275 14.25850773 L 143.96308231 14.3518343 L 145.4834528 14.63045216 L 146.95915508 15.09029961 L 148.36866951 15.72467041 L 149.69144154 16.52431393 L 150.9081831 17.47756958 L 152.00115013 18.57053757 L 152.95440578 19.78727913 L 153.75405025 21.11005116 L 154.38842106 22.51956463 L 154.84826756 23.99526691 L 155.12688637 25.51563835 L 155.22021294 27.05850697 L 155.12688637 28.60137653 L 154.84826756 30.12174797 L 154.38842106 31.59745026 L 154.20724773 32.0 Z" fill="white"/>
105
+ <path d=" M 136.93392086 32.0 L 136.81844234 31.27089882 L 137.06315994 29.72581387 L 137.77335739 28.33197308 L 138.8795166 27.22581387 L 140.27335739 26.51561642 L 141.81844234 26.27089882 L 143.3635273 26.51561642 L 144.75736904 27.22581387 L 145.8635273 28.33197308 L 146.57372475 29.72581387 L 146.81844234 31.27089882 L 146.70296383 32.0 Z" fill="rgb(77.5, 0, 0.0)"/>
106
+ <rect x="128" y="32" width="32" height="32" fill="rgb(150.0, 0, 75.0)"/>
107
+ <path d=" M 128.35544586 64.0 L 128.27290726 62.63546276 L 128.36623287 61.09259319 L 128.64485168 59.57222271 L 129.10469913 58.09652042 L 129.73906994 56.687006 L 130.53871346 55.36423397 L 131.49196911 54.14749336 L 132.5849371 53.05452538 L 133.8016777 52.10126972 L 135.12445068 51.30162621 L 136.53396416 50.6672554 L 138.00966644 50.20740795 L 139.53003693 49.92878914 L 141.07290649 49.83546257 L 142.61577606 49.92878914 L 144.1361475 50.20740795 L 145.61184978 50.6672554 L 147.02136326 51.30162621 L 148.34413528 52.10126972 L 149.56087685 53.05452538 L 150.65384483 54.14749336 L 151.60710049 55.36423397 L 152.406744 56.687006 L 153.04111481 58.09652042 L 153.50096226 59.57222271 L 153.77958012 61.09259319 L 153.87290668 62.63546276 L 153.79036713 64.0 Z" fill="white"/>
108
+ <path d=" M 135.74326897 64.0 L 135.77207851 63.81810665 L 136.48227596 62.42426586 L 137.58843517 61.31810665 L 138.98227596 60.6079092 L 140.52736092 60.3631916 L 142.07244587 60.6079092 L 143.46628761 61.31810665 L 144.57244587 62.42426586 L 145.28264332 63.81810665 L 145.31145287 64.0 Z" fill="rgb(77.5, 0, 31.875)"/>
109
+ <rect x="128" y="64" width="32" height="32" fill="rgb(150.0, 0, 100.0)"/>
110
+ <path d=" M 128.0 96.0 L 128.0 88.05883694 L 128.79310036 86.74688816 L 129.74635601 85.5301466 L 130.839324 84.43717957 L 132.05606461 83.48392391 L 133.37883663 82.68427944 L 134.78835106 82.04990864 L 136.26405334 81.59006214 L 137.78442383 81.31144333 L 139.3272934 81.21811676 L 140.87016296 81.31144333 L 142.3905344 81.59006214 L 143.86623669 82.04990864 L 145.27575016 82.68427944 L 146.59852219 83.48392391 L 147.81526375 84.43717957 L 148.90823174 85.5301466 L 149.86148739 86.74688816 L 150.66113091 88.06966019 L 151.29550171 89.47917461 L 151.75534916 90.9548769 L 152.03396702 92.47524738 L 152.12729359 94.01811695 L 152.03396702 95.56098652 L 151.95351505 96.0 Z" fill="white"/>
111
+ <path d=" M 133.94388866 96.0 L 133.85459423 95.4362154 L 134.09931183 93.89113045 L 134.80950928 92.49728966 L 135.91566753 91.39113045 L 137.30950928 90.680933 L 138.85459423 90.4362154 L 140.39967918 90.680933 L 141.79351997 91.39113045 L 142.89967918 92.49728966 L 143.60987663 93.89113045 L 143.85459423 95.4362154 L 143.7652998 96.0 Z" fill="rgb(77.5, 0, 63.75)"/>
112
+ <rect x="128" y="96" width="32" height="32" fill="rgb(150.0, 0, 125.0)"/>
113
+ <path d=" M 128.0 128.0 L 128.0 109.93109131 L 128.40978909 109.52130222 L 129.62653065 108.56804657 L 130.94930267 107.7684021 L 132.3588171 107.13403225 L 133.83451843 106.6741848 L 135.35488987 106.39556599 L 136.89775944 106.30223942 L 138.44062901 106.39556599 L 139.96099949 106.6741848 L 141.43670177 107.13403225 L 142.8462162 107.7684021 L 144.16898823 108.56804657 L 145.38572979 109.52130222 L 146.47869682 110.61426926 L 147.43195248 111.83101082 L 148.23159695 113.15378284 L 148.8659668 114.56329727 L 149.32581425 116.03899956 L 149.60443306 117.55937004 L 149.69775963 119.10223961 L 149.60443306 120.64510918 L 149.32581425 122.16548061 L 148.8659668 123.64118195 L 148.23159695 125.05069637 L 147.43195248 126.3734684 L 146.47869682 127.59020996 L 146.06890678 128.0 Z" fill="white"/>
114
+ <path d=" M 136.52644634 124.4735527 L 134.98136139 124.22883511 L 133.5875206 123.51863766 L 132.48136139 122.41247845 L 131.77116394 121.01863766 L 131.52644634 119.4735527 L 131.77116394 117.92846775 L 132.48136139 116.53462601 L 133.5875206 115.42846775 L 134.98136139 114.71826935 L 136.52644634 114.4735527 L 138.0715313 114.71826935 L 139.46537304 115.42846775 L 140.5715313 116.53462601 L 141.2817297 117.92846775 L 141.52644634 119.4735527 L 141.2817297 121.01863766 L 140.5715313 122.41247845 L 139.46537304 123.51863766 L 138.0715313 124.22883511 Z" fill="rgb(77.5, 0, 95.625)"/>
115
+ <rect x="128" y="128" width="32" height="32" fill="rgb(150.0, 0, 150.0)"/>
116
+ <path d=" M 136.89775944 149.69775963 L 135.35488987 149.60443306 L 133.83451843 149.32581425 L 132.3588171 148.8659668 L 130.94930267 148.23159695 L 129.62653065 147.43195248 L 128.40978909 146.47869682 L 128.0 146.06890774 L 128.0 128.0 L 146.06890774 128.0 L 146.47869682 128.40978909 L 147.43195248 129.62653065 L 148.23159695 130.94930267 L 148.8659668 132.3588171 L 149.32581425 133.83451843 L 149.60443306 135.35488987 L 149.69775963 136.89775944 L 149.60443306 138.44062901 L 149.32581425 139.96099949 L 148.8659668 141.43670177 L 148.23159695 142.8462162 L 147.43195248 144.16898823 L 146.47869682 145.38572979 L 145.38572979 146.47869682 L 144.16898823 147.43195248 L 142.8462162 148.23159695 L 141.43670177 148.8659668 L 139.96099949 149.32581425 L 138.44062901 149.60443306 Z" fill="white"/>
117
+ <path d=" M 136.52644634 141.52644634 L 134.98136139 141.2817297 L 133.5875206 140.5715313 L 132.48136139 139.46537304 L 131.77116394 138.0715313 L 131.52644634 136.52644634 L 131.77116394 134.98136139 L 132.48136139 133.5875206 L 133.5875206 132.48136139 L 134.98136139 131.77116394 L 136.52644634 131.52644634 L 138.0715313 131.77116394 L 139.46537304 132.48136139 L 140.5715313 133.5875206 L 141.2817297 134.98136139 L 141.52644634 136.52644634 L 141.2817297 138.0715313 L 140.5715313 139.46537304 L 139.46537304 140.5715313 L 138.0715313 141.2817297 Z" fill="rgb(77.5, 0, 127.5)"/>
118
+ <rect x="128" y="160" width="32" height="32" fill="rgb(150.0, 0, 175.0)"/>
119
+ <path d=" M 139.3272934 174.78188229 L 137.78442383 174.68855572 L 136.26405334 174.4099369 L 134.78835106 173.95009041 L 133.37883663 173.3157196 L 132.05606461 172.51607513 L 130.839324 171.56281948 L 129.74635601 170.46985245 L 128.79310036 169.25311089 L 128.0 167.94116211 L 128.0 160.0 L 151.95351505 160.0 L 152.03396702 160.43901253 L 152.12729359 161.9818821 L 152.03396702 163.52475166 L 151.75534916 165.04512215 L 151.29550171 166.52082443 L 150.66113091 167.93033886 L 149.86148739 169.25311089 L 148.90823174 170.46985245 L 147.81526375 171.56281948 L 146.59852219 172.51607513 L 145.27575016 173.3157196 L 143.86623669 173.95009041 L 142.3905344 174.4099369 L 140.87016296 174.68855572 Z" fill="white"/>
120
+ <path d=" M 138.85459423 165.56378365 L 137.30950928 165.31906605 L 135.91566753 164.6088686 L 134.80950928 163.50270939 L 134.09931183 162.1088686 L 133.85459423 160.56378365 L 133.94388866 160.0 L 143.7652998 160.0 L 143.85459423 160.56378365 L 143.60987663 162.1088686 L 142.89967918 163.50270939 L 141.79351997 164.6088686 L 140.39967918 165.31906605 Z" fill="rgb(77.5, 0, 159.375)"/>
121
+ <rect x="128" y="192" width="32" height="32" fill="rgb(150.0, 0, 200.0)"/>
122
+ <path d=" M 141.07290649 206.16453648 L 139.53003693 206.07120991 L 138.00966644 205.79259109 L 136.53396416 205.33274364 L 135.12445068 204.69837284 L 133.8016777 203.89872932 L 132.5849371 202.94547367 L 131.49196911 201.85250568 L 130.53871346 200.63576508 L 129.73906994 199.31299305 L 129.10469913 197.90347862 L 128.64485168 196.42777634 L 128.36623287 194.90740585 L 128.27290726 193.36453629 L 128.35544586 192.0 L 153.79036713 192.0 L 153.87290668 193.36453629 L 153.77958012 194.90740585 L 153.50096226 196.42777634 L 153.04111481 197.90347862 L 152.406744 199.31299305 L 151.60710049 200.63576508 L 150.65384483 201.85250568 L 149.56087685 202.94547367 L 148.34413528 203.89872932 L 147.02136326 204.69837284 L 145.61184978 205.33274364 L 144.1361475 205.79259109 L 142.61577606 206.07120991 Z" fill="white"/>
123
+ <path d=" M 140.52736092 195.63680744 L 138.98227596 195.39208984 L 137.58843517 194.6818924 L 136.48227596 193.57573318 L 135.77207851 192.1818924 L 135.74326992 192.0 L 145.31145191 192.0 L 145.28264332 192.1818924 L 144.57244587 193.57573318 L 143.46628761 194.6818924 L 142.07244587 195.39208984 Z" fill="rgb(77.5, 0, 191.25)"/>
124
+ <rect x="128" y="224" width="32" height="32" fill="rgb(150.0, 0, 225.0)"/>
125
+ <path d=" M 142.42021275 241.74149132 L 140.87734318 241.64816475 L 139.35697174 241.36954689 L 137.88127041 240.90969944 L 136.47175598 240.27532864 L 135.14898396 239.47568512 L 133.93224239 238.52242947 L 132.83927536 237.42946148 L 131.88601875 236.21271992 L 131.08637524 234.88994789 L 130.45200443 233.48043442 L 129.99215698 232.00473213 L 129.71353912 230.48436069 L 129.62021255 228.94149208 L 129.71353912 227.39862251 L 129.99215698 225.87825108 L 130.45200443 224.40254879 L 130.6331768 224.0 L 154.20724869 224.0 L 154.38842106 224.40254879 L 154.84826756 225.87825108 L 155.12688637 227.39862251 L 155.22021294 228.94149208 L 155.12688637 230.48436069 L 154.84826756 232.00473213 L 154.38842106 233.48043442 L 153.75405025 234.88994789 L 152.95440578 236.21271992 L 152.00115013 237.42946148 L 150.9081831 238.52242947 L 149.69144154 239.47568512 L 148.36866951 240.27532864 L 146.95915508 240.90969944 L 145.4834528 241.36954689 L 143.96308231 241.64816475 Z" fill="white"/>
126
+ <path d=" M 141.81844234 229.72910023 L 140.27335739 229.48438263 L 138.8795166 228.77418518 L 137.77335739 227.66802597 L 137.06315994 226.27418518 L 136.81844234 224.72910023 L 136.93392086 224.0 L 146.70296383 224.0 L 146.81844234 224.72910023 L 146.57372475 226.27418518 L 145.8635273 227.66802597 L 144.75736904 228.77418518 L 143.3635273 229.48438263 Z" fill="rgb(77.5, 0, 223.125)"/>
127
+ <rect x="160" y="0" width="32" height="32" fill="rgb(175.0, 0, 50.0)"/>
128
+ <path d=" M 161.66573524 32.0 L 160.90071392 30.73450184 L 160.26634407 29.32498741 L 160.0 28.47025967 L 160.0 21.10183048 L 160.26634407 20.24710274 L 160.90071392 18.83758831 L 161.70035839 17.51481628 L 162.65361404 16.29807472 L 163.74658108 15.20510769 L 164.96332264 14.25185108 L 166.28609467 13.45220757 L 167.69560909 12.81783676 L 169.17131138 12.35798931 L 170.69168186 12.07937145 L 172.23455143 11.98604488 L 173.777421 12.07937145 L 175.29779243 12.35798931 L 176.77349377 12.81783676 L 178.18300819 13.45220757 L 179.50578022 14.25185108 L 180.72252178 15.20510769 L 181.81548882 16.29807472 L 182.76874542 17.51481628 L 183.56838894 18.83758831 L 184.20275974 20.24710274 L 184.66260719 21.72280407 L 184.94122505 23.24317551 L 185.03455162 24.78604507 L 184.94122505 26.32891464 L 184.66260719 27.84928513 L 184.20275974 29.32498741 L 183.56838894 30.73450184 L 182.80336857 32.0 Z" fill="white"/>
129
+ <path d=" M 166.32710934 32.0 L 165.63331604 30.63835335 L 165.38859844 29.09326839 L 165.63331604 27.54818344 L 166.34351349 26.15434265 L 167.44967175 25.04818344 L 168.84351349 24.33798599 L 170.38859844 24.09326839 L 171.9336834 24.33798599 L 173.32752514 25.04818344 L 174.4336834 26.15434265 L 175.14388084 27.54818344 L 175.38859844 29.09326839 L 175.14388084 30.63835335 L 174.45008755 32.0 Z" fill="rgb(45.625, 0, 0.0)"/>
130
+ <rect x="160" y="32" width="32" height="32" fill="rgb(175.0, 0, 75.0)"/>
131
+ <path d=" M 160.0 64.0 L 160.0 50.71172428 L 160.34107876 50.37064552 L 161.55782032 49.41738987 L 162.88059235 48.61774635 L 164.29010677 47.98337555 L 165.76580906 47.5235281 L 167.28617954 47.24491024 L 168.82904911 47.15158367 L 170.37191868 47.24491024 L 171.89229012 47.5235281 L 173.36799145 47.98337555 L 174.77750587 48.61774635 L 176.1002779 49.41738987 L 177.31701946 50.37064552 L 178.4099865 51.46361351 L 179.3632431 52.68035507 L 180.16288662 54.0031271 L 180.79725742 55.41264057 L 181.25710487 56.88834286 L 181.53572273 58.40871429 L 181.6290493 59.95158291 L 181.53572273 61.49445248 L 181.25710487 63.01482391 L 180.95011139 64.0 Z" fill="white"/>
132
+ <path d=" M 162.31664848 64.0 L 162.12521172 62.79131317 L 162.36992836 61.24622822 L 163.08012676 59.85238743 L 164.18628502 58.74622822 L 165.58012676 58.03603077 L 167.12521172 57.79131317 L 168.67029667 58.03603077 L 170.06413746 58.74622822 L 171.17029667 59.85238743 L 171.88049412 61.24622822 L 172.12521172 62.79131317 L 171.93377399 64.0 Z" fill="rgb(45.625, 0, 31.875)"/>
133
+ <rect x="160" y="64" width="32" height="32" fill="rgb(175.0, 0, 100.0)"/>
134
+ <path d=" M 160.0 96.0 L 160.0 79.17657757 L 160.57510376 78.91774464 L 162.05080605 78.45789719 L 163.57117653 78.17927933 L 165.1140461 78.08595276 L 166.65691566 78.17927933 L 168.1772871 78.45789719 L 169.65298843 78.91774464 L 171.06250286 79.55211544 L 172.38527489 80.35175896 L 173.60201645 81.30501556 L 174.69498348 82.3979826 L 175.64824009 83.61472416 L 176.44788361 84.93749619 L 177.08225441 86.34701061 L 177.54210186 87.82271194 L 177.82071972 89.34308338 L 177.91404629 90.88595295 L 177.82071972 92.42882252 L 177.54210186 93.949193 L 177.08225441 95.42489529 L 176.82342052 96.0 Z" fill="white"/>
135
+ <path d=" M 160.14646816 96.0 L 160.0 95.85353184 L 160.0 89.0159874 L 160.62631321 88.38967514 L 162.020154 87.67947769 L 163.56523895 87.43476009 L 165.11032391 87.67947769 L 166.50416565 88.38967514 L 167.61032391 89.4958334 L 168.32052135 90.88967514 L 168.56523895 92.43476009 L 168.32052135 93.97984505 L 167.61032391 95.37368584 L 166.9840107 96.0 Z" fill="rgb(45.625, 0, 63.75)"/>
136
+ <rect x="160" y="96" width="32" height="32" fill="rgb(175.0, 0, 125.0)"/>
137
+ <path d=" M 160.0 128.0 L 160.0 104.04648399 L 160.43901253 103.96603203 L 161.9818821 103.87270546 L 163.52475166 103.96603203 L 165.04512215 104.24464989 L 166.52082443 104.70449734 L 167.93033886 105.33886814 L 169.25311089 106.13851166 L 170.46985245 107.09176731 L 171.56281948 108.1847353 L 172.51607513 109.40147686 L 173.3157196 110.72424889 L 173.95009041 112.13376236 L 174.4099369 113.60946465 L 174.68855572 115.12983608 L 174.78188229 116.67270565 L 174.68855572 118.21557522 L 174.4099369 119.7359457 L 173.95009041 121.21164799 L 173.3157196 122.62116241 L 172.51607513 123.94393444 L 171.56281948 125.16067505 L 170.46985245 126.25364304 L 169.25311089 127.20689869 L 167.94116116 128.0 Z" fill="white"/>
138
+ <path d=" M 160.56378365 122.14540482 L 160.0 122.05611038 L 160.0 112.23469925 L 160.56378365 112.14540482 L 162.1088686 112.39012241 L 163.50270939 113.10031986 L 164.6088686 114.20647907 L 165.31906605 115.60031986 L 165.56378365 117.14540482 L 165.31906605 118.69048977 L 164.6088686 120.08433151 L 163.50270939 121.19048977 L 162.1088686 121.90068722 Z" fill="rgb(45.625, 0, 95.625)"/>
139
+ <rect x="160" y="128" width="32" height="32" fill="rgb(175.0, 0, 150.0)"/>
140
+ <path d=" M 161.9818821 152.12729359 L 160.43901253 152.03396702 L 160.0 151.95351505 L 160.0 128.0 L 167.94116211 128.0 L 169.25311089 128.79310036 L 170.46985245 129.74635601 L 171.56281948 130.839324 L 172.51607513 132.05606461 L 173.3157196 133.37883663 L 173.95009041 134.78835106 L 174.4099369 136.26405334 L 174.68855572 137.78442383 L 174.78188229 139.3272934 L 174.68855572 140.87016296 L 174.4099369 142.3905344 L 173.95009041 143.86623669 L 173.3157196 145.27575016 L 172.51607513 146.59852219 L 171.56281948 147.81526375 L 170.46985245 148.90823174 L 169.25311089 149.86148739 L 167.93033886 150.66113091 L 166.52082443 151.29550171 L 165.04512215 151.75534916 L 163.52475166 152.03396702 Z" fill="white"/>
141
+ <path d=" M 160.56378365 143.85459423 L 160.0 143.7652998 L 160.0 133.94388866 L 160.56378365 133.85459423 L 162.1088686 134.09931183 L 163.50270939 134.80950928 L 164.6088686 135.91566753 L 165.31906605 137.30950928 L 165.56378365 138.85459423 L 165.31906605 140.39967918 L 164.6088686 141.79351997 L 163.50270939 142.89967918 L 162.1088686 143.60987663 Z" fill="rgb(45.625, 0, 127.5)"/>
142
+ <rect x="160" y="160" width="32" height="32" fill="rgb(175.0, 0, 175.0)"/>
143
+ <path d=" M 165.1140461 177.91404629 L 163.57117653 177.82071972 L 162.05080605 177.54210186 L 160.57510376 177.08225441 L 160.0 176.82342148 L 160.0 160.0 L 176.82342148 160.0 L 177.08225441 160.57510376 L 177.54210186 162.05080605 L 177.82071972 163.57117653 L 177.91404629 165.1140461 L 177.82071972 166.65691566 L 177.54210186 168.1772871 L 177.08225441 169.65298843 L 176.44788361 171.06250286 L 175.64824009 172.38527489 L 174.69498348 173.60201645 L 173.60201645 174.69498348 L 172.38527489 175.64824009 L 171.06250286 176.44788361 L 169.65298843 177.08225441 L 168.1772871 177.54210186 L 166.65691566 177.82071972 Z" fill="white"/>
144
+ <path d=" M 163.56523895 168.56523895 L 162.020154 168.32052135 L 160.62631321 167.61032391 L 160.0 166.98401165 L 160.0 160.14646721 L 160.14646721 160.0 L 166.98401165 160.0 L 167.61032391 160.62631321 L 168.32052135 162.020154 L 168.56523895 163.56523895 L 168.32052135 165.11032391 L 167.61032391 166.50416565 L 166.50416565 167.61032391 L 165.11032391 168.32052135 Z" fill="rgb(45.625, 0, 159.375)"/>
145
+ <rect x="160" y="192" width="32" height="32" fill="rgb(175.0, 0, 200.0)"/>
146
+ <path d=" M 168.82904911 208.84841537 L 167.28617954 208.75508881 L 165.76580906 208.47647095 L 164.29010677 208.0166235 L 162.88059235 207.38225269 L 161.55782032 206.58260918 L 160.34107876 205.62935352 L 160.0 205.28827477 L 160.0 192.0 L 180.95011234 192.0 L 181.25710487 192.98517513 L 181.53572273 194.50554657 L 181.6290493 196.04841614 L 181.53572273 197.59128475 L 181.25710487 199.11165619 L 180.79725742 200.58735847 L 180.16288662 201.99687195 L 179.3632431 203.31964397 L 178.4099865 204.53638554 L 177.31701946 205.62935352 L 176.1002779 206.58260918 L 174.77750587 207.38225269 L 173.36799145 208.0166235 L 171.89229012 208.47647095 L 170.37191868 208.75508881 Z" fill="white"/>
147
+ <path d=" M 167.12521172 198.20868587 L 165.58012676 197.96396828 L 164.18628502 197.25377083 L 163.08012676 196.14761162 L 162.36992836 194.75377083 L 162.12521172 193.20868587 L 162.31664848 192.0 L 171.93377495 192.0 L 172.12521172 193.20868587 L 171.88049412 194.75377083 L 171.17029667 196.14761162 L 170.06413746 197.25377083 L 168.67029667 197.96396828 Z" fill="rgb(45.625, 0, 191.25)"/>
148
+ <rect x="160" y="224" width="32" height="32" fill="rgb(175.0, 0, 225.0)"/>
149
+ <path d=" M 172.23455143 244.01395416 L 170.69168186 243.92062759 L 169.17131138 243.64200974 L 167.69560909 243.18216228 L 166.28609467 242.54779148 L 164.96332264 241.74814796 L 163.74658108 240.79489136 L 162.65361404 239.70192432 L 161.70035839 238.48518276 L 160.90071392 237.16241074 L 160.26634407 235.75289631 L 160.0 234.89816856 L 160.0 227.52973938 L 160.26634407 226.67501163 L 160.90071392 225.26549721 L 161.66573429 224.0 L 182.80336952 224.0 L 183.56838894 225.26549721 L 184.20275974 226.67501163 L 184.66260719 228.15071392 L 184.94122505 229.6710844 L 185.03455162 231.21395397 L 184.94122505 232.75682354 L 184.66260719 234.27719498 L 184.20275974 235.75289631 L 183.56838894 237.16241074 L 182.76874542 238.48518276 L 181.81548882 239.70192432 L 180.72252178 240.79489136 L 179.50578022 241.74814796 L 178.18300819 242.54779148 L 176.77349377 243.18216228 L 175.29779243 243.64200974 L 173.777421 243.92062759 Z" fill="white"/>
150
+ <path d=" M 170.38859844 231.90673065 L 168.84351349 231.66201305 L 167.44967175 230.95181561 L 166.34351349 229.84565639 L 165.63331604 228.45181561 L 165.38859844 226.90673065 L 165.63331604 225.3616457 L 166.32710838 224.0 L 174.4500885 224.0 L 175.14388084 225.3616457 L 175.38859844 226.90673065 L 175.14388084 228.45181561 L 174.4336834 229.84565639 L 173.32752514 230.95181561 L 171.9336834 231.66201305 Z" fill="rgb(45.625, 0, 223.125)"/>
151
+ <rect x="192" y="0" width="32" height="32" fill="rgb(200.0, 0, 50.0)"/>
152
+ <path d=" M 198.05932808 32.0 L 197.19698429 31.47869492 L 195.98024273 30.52543831 L 194.88727474 29.43247128 L 193.93401909 28.21572971 L 193.13437557 26.89295769 L 192.50000477 25.48344421 L 192.04015732 24.00774193 L 192.0 23.78861046 L 192.0 18.10039234 L 192.04015732 17.88126087 L 192.50000477 16.40555859 L 193.13437557 14.99604416 L 193.93401909 13.67327213 L 194.88727474 12.45653152 L 195.98024273 11.36356354 L 197.19698429 10.41030788 L 198.51975632 9.61066437 L 199.92926979 8.97629356 L 201.40497208 8.51644611 L 202.92534351 8.2378273 L 204.46821308 8.14450073 L 206.0110817 8.2378273 L 207.53145313 8.51644611 L 209.00715542 8.97629356 L 210.41666889 9.61066437 L 211.73944092 10.41030788 L 212.95618248 11.36356354 L 214.04915047 12.45653152 L 215.00240612 13.67327213 L 215.80204964 14.99604416 L 216.43642044 16.40555859 L 216.89626789 17.88126087 L 217.17488575 19.40163136 L 217.26821232 20.94450092 L 217.17488575 22.48737049 L 216.89626789 24.00774193 L 216.43642044 25.48344421 L 215.80204964 26.89295769 L 215.00240612 28.21572971 L 214.04915047 29.43247128 L 212.95618248 30.52543831 L 211.73944092 31.47869492 L 210.87709713 32.0 Z" fill="white"/>
153
+ <path d=" M 201.27711582 30.4120369 L 199.73203087 30.1673193 L 198.33819008 29.45712185 L 197.23203087 28.35096264 L 196.52183342 26.95712185 L 196.27711582 25.4120369 L 196.52183342 23.86695194 L 197.23203087 22.4731102 L 198.33819008 21.36695194 L 199.73203087 20.65675354 L 201.27711582 20.4120369 L 202.82220078 20.65675354 L 204.21604252 21.36695194 L 205.32220078 22.4731102 L 206.03239822 23.86695194 L 206.27711582 25.4120369 L 206.03239822 26.95712185 L 205.32220078 28.35096264 L 204.21604252 29.45712185 L 202.82220078 30.1673193 Z" fill="rgb(13.75, 0, 0.0)"/>
154
+ <rect x="192" y="32" width="32" height="32" fill="rgb(200.0, 0, 75.0)"/>
155
+ <path d=" M 192.0 64.0 L 192.0 46.01487541 L 192.82983685 45.36474037 L 194.15260887 44.56509686 L 195.56212234 43.93072605 L 197.03782463 43.4708786 L 198.55819607 43.19225979 L 200.10106564 43.09893417 L 201.6439352 43.19225979 L 203.16430569 43.4708786 L 204.64000797 43.93072605 L 206.04952145 44.56509686 L 207.37229443 45.36474037 L 208.58903503 46.31799603 L 209.68200302 47.41096401 L 210.63525867 48.62770462 L 211.43490219 49.9504776 L 212.06927299 51.35999107 L 212.52912045 52.83569336 L 212.80773926 54.35606384 L 212.90106487 55.89893341 L 212.80773926 57.44180298 L 212.52912045 58.96217442 L 212.06927299 60.4378767 L 211.43490219 61.84739017 L 210.63525867 63.1701622 L 209.98512268 64.0 Z" fill="white"/>
156
+ <path d=" M 197.09221458 63.90778446 L 195.54712963 63.66306782 L 194.15328789 62.95286942 L 193.04712963 61.84671116 L 192.33693123 60.45286942 L 192.09221458 58.90778446 L 192.33693123 57.36269951 L 193.04712963 55.96885872 L 194.15328789 54.86269951 L 195.54712963 54.15250206 L 197.09221458 53.90778446 L 198.63729954 54.15250206 L 200.03114033 54.86269951 L 201.13729954 55.96885872 L 201.84749699 57.36269951 L 202.09221458 58.90778446 L 201.84749699 60.45286942 L 201.13729954 61.84671116 L 200.03114033 62.95286942 L 198.63729954 63.66306782 Z" fill="rgb(13.75, 0, 31.875)"/>
157
+ <rect x="192" y="64" width="32" height="32" fill="rgb(200.0, 0, 100.0)"/>
158
+ <path d=" M 192.0 96.0 L 192.0 75.0498867 L 192.98517513 74.74289417 L 194.50554657 74.46427631 L 196.04841614 74.37094975 L 197.59128475 74.46427631 L 199.11165619 74.74289417 L 200.58735847 75.20274162 L 201.99687195 75.83711243 L 203.31964397 76.63675594 L 204.53638554 77.59001255 L 205.62935352 78.68297958 L 206.58260918 79.89972115 L 207.38225269 81.22249317 L 208.0166235 82.6320076 L 208.47647095 84.10770893 L 208.75508881 85.62808037 L 208.84841537 87.17094994 L 208.75508881 88.7138195 L 208.47647095 90.23418999 L 208.0166235 91.70989227 L 207.38225269 93.1194067 L 206.58260918 94.44217873 L 205.62935352 95.65892029 L 205.28827381 96.0 Z" fill="white"/>
159
+ <path d=" M 193.20868587 93.87478733 L 192.0 93.68335056 L 192.0 84.0662241 L 193.20868587 83.87478733 L 194.75377083 84.11950493 L 196.14761162 84.82970238 L 197.25377083 85.93586159 L 197.96396828 87.32970238 L 198.20868587 88.87478733 L 197.96396828 90.41987228 L 197.25377083 91.81371403 L 196.14761162 92.91987228 L 194.75377083 93.63007069 Z" fill="rgb(13.75, 0, 63.75)"/>
160
+ <rect x="192" y="96" width="32" height="32" fill="rgb(200.0, 0, 125.0)"/>
161
+ <path d=" M 193.36453629 127.72709179 L 192.0 127.64455318 L 192.0 102.20963192 L 193.36453629 102.12709236 L 194.90740585 102.22041893 L 196.42777634 102.49903679 L 197.90347862 102.95888424 L 199.31299305 103.59325504 L 200.63576508 104.39289856 L 201.85250568 105.34615421 L 202.94547367 106.4391222 L 203.89872932 107.65586376 L 204.69837284 108.97863579 L 205.33274364 110.38814926 L 205.79259109 111.86385155 L 206.07120991 113.38422298 L 206.16453648 114.92709255 L 206.07120991 116.46996212 L 205.79259109 117.9903326 L 205.33274364 119.46603489 L 204.69837284 120.87554836 L 203.89872932 122.19832134 L 202.94547367 123.41506195 L 201.85250568 124.50802994 L 200.63576508 125.46128559 L 199.31299305 126.26092911 L 197.90347862 126.89529991 L 196.42777634 127.35514736 L 194.90740585 127.63376617 Z" fill="white"/>
162
+ <path d=" M 192.0 120.25672913 L 192.0 110.68854713 L 192.1818924 110.71735573 L 193.57573318 111.42755318 L 194.6818924 112.53371143 L 195.39208984 113.92755318 L 195.63680744 115.47263813 L 195.39208984 117.01772308 L 194.6818924 118.41156387 L 193.57573318 119.51772308 L 192.1818924 120.22792053 Z" fill="rgb(13.75, 0, 95.625)"/>
163
+ <rect x="192" y="128" width="32" height="32" fill="rgb(200.0, 0, 150.0)"/>
164
+ <path d=" M 193.36453629 153.87290668 L 192.0 153.79036713 L 192.0 128.35544586 L 193.36453629 128.27290726 L 194.90740585 128.36623287 L 196.42777634 128.64485168 L 197.90347862 129.10469913 L 199.31299305 129.73906994 L 200.63576508 130.53871346 L 201.85250568 131.49196911 L 202.94547367 132.5849371 L 203.89872932 133.8016777 L 204.69837284 135.12445068 L 205.33274364 136.53396416 L 205.79259109 138.00966644 L 206.07120991 139.53003693 L 206.16453648 141.07290649 L 206.07120991 142.61577606 L 205.79259109 144.1361475 L 205.33274364 145.61184978 L 204.69837284 147.02136326 L 203.89872932 148.34413528 L 202.94547367 149.56087685 L 201.85250568 150.65384483 L 200.63576508 151.60710049 L 199.31299305 152.406744 L 197.90347862 153.04111481 L 196.42777634 153.50096226 L 194.90740585 153.77958012 Z" fill="white"/>
165
+ <path d=" M 192.0 145.31145191 L 192.0 135.74326992 L 192.1818924 135.77207851 L 193.57573318 136.48227596 L 194.6818924 137.58843517 L 195.39208984 138.98227596 L 195.63680744 140.52736092 L 195.39208984 142.07244587 L 194.6818924 143.46628761 L 193.57573318 144.57244587 L 192.1818924 145.28264332 Z" fill="rgb(13.75, 0, 127.5)"/>
166
+ <rect x="192" y="160" width="32" height="32" fill="rgb(200.0, 0, 175.0)"/>
167
+ <path d=" M 196.04841614 181.6290493 L 194.50554657 181.53572273 L 192.98517513 181.25710487 L 192.0 180.95011234 L 192.0 160.0 L 205.28827477 160.0 L 205.62935352 160.34107876 L 206.58260918 161.55782032 L 207.38225269 162.88059235 L 208.0166235 164.29010677 L 208.47647095 165.76580906 L 208.75508881 167.28617954 L 208.84841537 168.82904911 L 208.75508881 170.37191868 L 208.47647095 171.89229012 L 208.0166235 173.36799145 L 207.38225269 174.77750587 L 206.58260918 176.1002779 L 205.62935352 177.31701946 L 204.53638554 178.4099865 L 203.31964397 179.3632431 L 201.99687195 180.16288662 L 200.58735847 180.79725742 L 199.11165619 181.25710487 L 197.59128475 181.53572273 Z" fill="white"/>
168
+ <path d=" M 193.20868587 172.12521172 L 192.0 171.93377495 L 192.0 162.31664848 L 193.20868587 162.12521172 L 194.75377083 162.36992836 L 196.14761162 163.08012676 L 197.25377083 164.18628502 L 197.96396828 165.58012676 L 198.20868587 167.12521172 L 197.96396828 168.67029667 L 197.25377083 170.06413746 L 196.14761162 171.17029667 L 194.75377083 171.88049412 Z" fill="rgb(13.75, 0, 159.375)"/>
169
+ <rect x="192" y="192" width="32" height="32" fill="rgb(200.0, 0, 200.0)"/>
170
+ <path d=" M 200.10106564 212.90106487 L 198.55819607 212.80773926 L 197.03782463 212.52912045 L 195.56212234 212.06927299 L 194.15260887 211.43490219 L 192.82983685 210.63525867 L 192.0 209.98512363 L 192.0 192.0 L 209.98512363 192.0 L 210.63525867 192.82983685 L 211.43490219 194.15260887 L 212.06927299 195.56212234 L 212.52912045 197.03782463 L 212.80773926 198.55819607 L 212.90106487 200.10106564 L 212.80773926 201.6439352 L 212.52912045 203.16430569 L 212.06927299 204.64000797 L 211.43490219 206.04952145 L 210.63525867 207.37229443 L 209.68200302 208.58903503 L 208.58903503 209.68200302 L 207.37229443 210.63525867 L 206.04952145 211.43490219 L 204.64000797 212.06927299 L 203.16430569 212.52912045 L 201.6439352 212.80773926 Z" fill="white"/>
171
+ <path d=" M 197.09221458 202.09221458 L 195.54712963 201.84749699 L 194.15328789 201.13729954 L 193.04712963 200.03114033 L 192.33693123 198.63729954 L 192.09221458 197.09221458 L 192.33693123 195.54712963 L 193.04712963 194.15328789 L 194.15328789 193.04712963 L 195.54712963 192.33693123 L 197.09221458 192.09221458 L 198.63729954 192.33693123 L 200.03114033 193.04712963 L 201.13729954 194.15328789 L 201.84749699 195.54712963 L 202.09221458 197.09221458 L 201.84749699 198.63729954 L 201.13729954 200.03114033 L 200.03114033 201.13729954 L 198.63729954 201.84749699 Z" fill="rgb(13.75, 0, 191.25)"/>
172
+ <rect x="192" y="224" width="32" height="32" fill="rgb(200.0, 0, 225.0)"/>
173
+ <path d=" M 204.46821308 247.85549831 L 202.92534351 247.76217175 L 201.40497208 247.48355293 L 199.92926979 247.02370548 L 198.51975632 246.38933468 L 197.19698429 245.58969116 L 195.98024273 244.63643551 L 194.88727474 243.54346752 L 193.93401909 242.32672691 L 193.13437557 241.00395489 L 192.50000477 239.59444046 L 192.04015732 238.11873817 L 192.0 237.8996067 L 192.0 232.21138859 L 192.04015732 231.99225712 L 192.50000477 230.51655483 L 193.13437557 229.10704136 L 193.93401909 227.78426933 L 194.88727474 226.56752777 L 195.98024273 225.47456074 L 197.19698429 224.52130413 L 198.05932713 224.0 L 210.87709808 224.0 L 211.73944092 224.52130413 L 212.95618248 225.47456074 L 214.04915047 226.56752777 L 215.00240612 227.78426933 L 215.80204964 229.10704136 L 216.43642044 230.51655483 L 216.89626789 231.99225712 L 217.17488575 233.51262856 L 217.26821232 235.05549812 L 217.17488575 236.59836769 L 216.89626789 238.11873817 L 216.43642044 239.59444046 L 215.80204964 241.00395489 L 215.00240612 242.32672691 L 214.04915047 243.54346752 L 212.95618248 244.63643551 L 211.73944092 245.58969116 L 210.41666889 246.38933468 L 209.00715542 247.02370548 L 207.53145313 247.48355293 L 206.0110817 247.76217175 Z" fill="white"/>
174
+ <path d=" M 201.27711582 235.58796215 L 199.73203087 235.34324551 L 198.33819008 234.6330471 L 197.23203087 233.52688885 L 196.52183342 232.1330471 L 196.27711582 230.58796215 L 196.52183342 229.0428772 L 197.23203087 227.64903641 L 198.33819008 226.5428772 L 199.73203087 225.83267975 L 201.27711582 225.58796215 L 202.82220078 225.83267975 L 204.21604252 226.5428772 L 205.32220078 227.64903641 L 206.03239822 229.0428772 L 206.27711582 230.58796215 L 206.03239822 232.1330471 L 205.32220078 233.52688885 L 204.21604252 234.6330471 L 202.82220078 235.34324551 Z" fill="rgb(13.75, 0, 223.125)"/>
175
+ <rect x="224" y="0" width="32" height="32" fill="rgb(225.0, 0, 50.0)"/>
176
+ <path d=" M 239.66270065 29.13729763 L 238.11983109 29.04397202 L 236.5994606 28.7653532 L 235.12375832 28.30550575 L 233.71424484 27.67113495 L 232.39147186 26.87149143 L 231.17473125 25.91823578 L 230.08176327 24.82526779 L 229.12850761 23.60852718 L 228.3288641 22.2857542 L 227.69449329 20.87624073 L 227.23464584 19.40053844 L 226.95602703 17.88016796 L 226.86270142 16.33729839 L 226.95602703 14.79442883 L 227.23464584 13.27405739 L 227.69449329 11.7983551 L 228.3288641 10.38884163 L 229.12850761 9.0660696 L 230.08176327 7.84932804 L 231.17473125 6.75636005 L 232.39147186 5.8031044 L 233.71424484 5.00346088 L 235.12375832 4.36909008 L 236.5994606 3.90924263 L 238.11983109 3.63062477 L 239.66270065 3.5372982 L 241.20557022 3.63062477 L 242.72594166 3.90924263 L 244.20164394 4.36909008 L 245.61115742 5.00346088 L 246.93392944 5.8031044 L 248.15067101 6.75636005 L 249.24363899 7.84932804 L 250.19689465 9.0660696 L 250.99653816 10.38884163 L 251.63090897 11.7983551 L 252.09075642 13.27405739 L 252.36937428 14.79442883 L 252.46270084 16.33729839 L 252.36937428 17.88016796 L 252.09075642 19.40053844 L 251.63090897 20.87624073 L 250.99653816 22.2857542 L 250.19689465 23.60852718 L 249.24363899 24.82526779 L 248.15067101 25.91823578 L 246.93392944 26.87149143 L 245.61115742 27.67113495 L 244.20164394 28.30550575 L 242.72594166 28.7653532 L 241.20557022 29.04397202 Z" fill="white"/>
177
+ <path d=" M 235.00290203 25.99709702 L 233.45781708 25.75237942 L 232.06397629 25.04218197 L 230.95781708 23.93602276 L 230.24761963 22.54218197 L 230.00290203 20.99709702 L 230.24761963 19.45201206 L 230.95781708 18.05817032 L 232.06397629 16.95201206 L 233.45781708 16.24181366 L 235.00290203 15.99709702 L 236.54798698 16.24181366 L 237.94182873 16.95201206 L 239.04798698 18.05817032 L 239.75818539 19.45201206 L 240.00290203 20.99709702 L 239.75818539 22.54218197 L 239.04798698 23.93602276 L 237.94182873 25.04218197 L 236.54798698 25.75237942 Z" fill="rgb(-18.125, 0, 0.0)"/>
178
+ <rect x="224" y="32" width="32" height="32" fill="rgb(225.0, 0, 75.0)"/>
179
+ <path d=" M 232.21139431 64.0 L 231.99225712 63.95984173 L 230.51655483 63.49999428 L 229.10704136 62.86562347 L 227.78426933 62.06597996 L 226.56752777 61.1127243 L 225.47456074 60.01975632 L 224.52130413 58.80301476 L 224.0 57.94067192 L 224.0 45.12290096 L 224.52130413 44.26055813 L 225.47456074 43.04381657 L 226.56752777 41.95084858 L 227.78426933 40.99759293 L 229.10704136 40.19794941 L 230.51655483 39.56357861 L 231.99225712 39.10373116 L 233.51262856 38.8251133 L 235.05549812 38.73178673 L 236.59836769 38.8251133 L 238.11873817 39.10373116 L 239.59444046 39.56357861 L 241.00395489 40.19794941 L 242.32672691 40.99759293 L 243.54346752 41.95084858 L 244.63643551 43.04381657 L 245.58969116 44.26055813 L 246.38933468 45.58333015 L 247.02370548 46.99284363 L 247.48355293 48.46854591 L 247.76217175 49.98891735 L 247.85549831 51.53178596 L 247.76217175 53.07465553 L 247.48355293 54.59502697 L 247.02370548 56.07072926 L 246.38933468 57.48024273 L 245.58969116 58.80301476 L 244.63643551 60.01975632 L 243.54346752 61.1127243 L 242.32672691 62.06597996 L 241.00395489 62.86562347 L 239.59444046 63.49999428 L 238.11873817 63.95984173 L 237.89960098 64.0 Z" fill="white"/>
180
+ <path d=" M 230.58796215 59.72288322 L 229.0428772 59.47816563 L 227.64903641 58.76796818 L 226.5428772 57.66180897 L 225.83267975 56.26796818 L 225.58796215 54.72288322 L 225.83267975 53.17779827 L 226.5428772 51.78395653 L 227.64903641 50.67779827 L 229.0428772 49.96760082 L 230.58796215 49.72288322 L 232.1330471 49.96760082 L 233.52688885 50.67779827 L 234.6330471 51.78395653 L 235.34324551 53.17779827 L 235.58796215 54.72288322 L 235.34324551 56.26796818 L 234.6330471 57.66180897 L 233.52688885 58.76796818 L 232.1330471 59.47816563 Z" fill="rgb(-18.125, 0, 31.875)"/>
181
+ <rect x="224" y="64" width="32" height="32" fill="rgb(225.0, 0, 100.0)"/>
182
+ <path d=" M 227.52974319 96.0 L 226.67501163 95.73365498 L 225.26549721 95.09928513 L 224.0 94.33426476 L 224.0 73.19662952 L 225.26549721 72.43161011 L 226.67501163 71.7972393 L 228.15071392 71.33739185 L 229.6710844 71.05877399 L 231.21395397 70.96544743 L 232.75682354 71.05877399 L 234.27719498 71.33739185 L 235.75289631 71.7972393 L 237.16241074 72.43161011 L 238.48518276 73.23125362 L 239.70192432 74.18451023 L 240.79489136 75.27747726 L 241.74814796 76.49421883 L 242.54779148 77.81699085 L 243.18216228 79.22650528 L 243.64200974 80.70220661 L 243.92062759 82.22257805 L 244.01395416 83.76544762 L 243.92062759 85.30831718 L 243.64200974 86.82868767 L 243.18216228 88.30438995 L 242.54779148 89.71390438 L 241.74814796 91.03667641 L 240.79489136 92.25341797 L 239.70192432 93.346385 L 238.48518276 94.29964066 L 237.16241074 95.09928513 L 235.75289631 95.73365498 L 234.8981657 96.0 Z" fill="white"/>
183
+ <path d=" M 226.90673065 90.6114006 L 225.3616457 90.36668301 L 224.0 89.67289066 L 224.0 81.54991055 L 225.3616457 80.8561182 L 226.90673065 80.6114006 L 228.45181561 80.8561182 L 229.84565639 81.56631565 L 230.95181561 82.67247391 L 231.66201305 84.06631565 L 231.90673065 85.6114006 L 231.66201305 87.15648556 L 230.95181561 88.5503273 L 229.84565639 89.65648556 L 228.45181561 90.36668301 Z" fill="rgb(-18.125, 0, 63.75)"/>
184
+ <rect x="224" y="96" width="32" height="32" fill="rgb(225.0, 0, 125.0)"/>
185
+ <path d=" M 228.94149208 126.37978649 L 227.39862251 126.28645992 L 225.87825108 126.00784206 L 224.40254879 125.54799461 L 224.0 125.36682224 L 224.0 101.79275036 L 224.40254879 101.61157799 L 225.87825108 101.15173149 L 227.39862251 100.87311268 L 228.94149208 100.77978611 L 230.48436069 100.87311268 L 232.00473213 101.15173149 L 233.48043442 101.61157799 L 234.88994789 102.24594879 L 236.21271992 103.04559326 L 237.42946148 103.99884892 L 238.52242947 105.09181595 L 239.47568512 106.30855751 L 240.27532864 107.63132954 L 240.90969944 109.04084396 L 241.36954689 110.51654625 L 241.64816475 112.03691673 L 241.74149132 113.5797863 L 241.64816475 115.12265587 L 241.36954689 116.64302731 L 240.90969944 118.11872864 L 240.27532864 119.52824306 L 239.47568512 120.85101509 L 238.52242947 122.06775665 L 237.42946148 123.16072369 L 236.21271992 124.11398029 L 234.88994789 124.91362381 L 233.48043442 125.54799461 L 232.00473213 126.00784206 L 230.48436069 126.28645992 Z" fill="white"/>
186
+ <path d=" M 224.72910023 119.1815567 L 224.0 119.06607819 L 224.0 109.29703522 L 224.72910023 109.1815567 L 226.27418518 109.4262743 L 227.66802597 110.13647175 L 228.77418518 111.24263 L 229.48438263 112.63647175 L 229.72910023 114.1815567 L 229.48438263 115.72664165 L 228.77418518 117.12048244 L 227.66802597 118.22664165 L 226.27418518 118.9368391 Z" fill="rgb(-18.125, 0, 95.625)"/>
187
+ <rect x="224" y="128" width="32" height="32" fill="rgb(225.0, 0, 150.0)"/>
188
+ <path d=" M 228.94149208 155.22021294 L 227.39862251 155.12688637 L 225.87825108 154.84826756 L 224.40254879 154.38842106 L 224.0 154.20724869 L 224.0 130.6331768 L 224.40254879 130.45200443 L 225.87825108 129.99215698 L 227.39862251 129.71353912 L 228.94149208 129.62021255 L 230.48436069 129.71353912 L 232.00473213 129.99215698 L 233.48043442 130.45200443 L 234.88994789 131.08637524 L 236.21271992 131.88601875 L 237.42946148 132.83927536 L 238.52242947 133.93224239 L 239.47568512 135.14898396 L 240.27532864 136.47175598 L 240.90969944 137.88127041 L 241.36954689 139.35697174 L 241.64816475 140.87734318 L 241.74149132 142.42021275 L 241.64816475 143.96308231 L 241.36954689 145.4834528 L 240.90969944 146.95915508 L 240.27532864 148.36866951 L 239.47568512 149.69144154 L 238.52242947 150.9081831 L 237.42946148 152.00115013 L 236.21271992 152.95440578 L 234.88994789 153.75405025 L 233.48043442 154.38842106 L 232.00473213 154.84826756 L 230.48436069 155.12688637 Z" fill="white"/>
189
+ <path d=" M 224.72910023 146.81844234 L 224.0 146.70296383 L 224.0 136.93392086 L 224.72910023 136.81844234 L 226.27418518 137.06315994 L 227.66802597 137.77335739 L 228.77418518 138.8795166 L 229.48438263 140.27335739 L 229.72910023 141.81844234 L 229.48438263 143.3635273 L 228.77418518 144.75736904 L 227.66802597 145.8635273 L 226.27418518 146.57372475 Z" fill="rgb(-18.125, 0, 127.5)"/>
190
+ <rect x="224" y="160" width="32" height="32" fill="rgb(225.0, 0, 175.0)"/>
191
+ <path d=" M 231.21395397 185.03455162 L 229.6710844 184.94122505 L 228.15071392 184.66260719 L 226.67501163 184.20275974 L 225.26549721 183.56838894 L 224.0 182.80336952 L 224.0 161.66573429 L 225.26549721 160.90071392 L 226.67501163 160.26634407 L 227.52973938 160.0 L 234.89816856 160.0 L 235.75289631 160.26634407 L 237.16241074 160.90071392 L 238.48518276 161.70035839 L 239.70192432 162.65361404 L 240.79489136 163.74658108 L 241.74814796 164.96332264 L 242.54779148 166.28609467 L 243.18216228 167.69560909 L 243.64200974 169.17131138 L 243.92062759 170.69168186 L 244.01395416 172.23455143 L 243.92062759 173.777421 L 243.64200974 175.29779243 L 243.18216228 176.77349377 L 242.54779148 178.18300819 L 241.74814796 179.50578022 L 240.79489136 180.72252178 L 239.70192432 181.81548882 L 238.48518276 182.76874542 L 237.16241074 183.56838894 L 235.75289631 184.20275974 L 234.27719498 184.66260719 L 232.75682354 184.94122505 Z" fill="white"/>
192
+ <path d=" M 226.90673065 175.38859844 L 225.3616457 175.14388084 L 224.0 174.4500885 L 224.0 166.32710838 L 225.3616457 165.63331604 L 226.90673065 165.38859844 L 228.45181561 165.63331604 L 229.84565639 166.34351349 L 230.95181561 167.44967175 L 231.66201305 168.84351349 L 231.90673065 170.38859844 L 231.66201305 171.9336834 L 230.95181561 173.32752514 L 229.84565639 174.4336834 L 228.45181561 175.14388084 Z" fill="rgb(-18.125, 0, 159.375)"/>
193
+ <rect x="224" y="192" width="32" height="32" fill="rgb(225.0, 0, 200.0)"/>
194
+ <path d=" M 235.05549812 217.26821232 L 233.51262856 217.17488575 L 231.99225712 216.89626789 L 230.51655483 216.43642044 L 229.10704136 215.80204964 L 227.78426933 215.00240612 L 226.56752777 214.04915047 L 225.47456074 212.95618248 L 224.52130413 211.73944092 L 224.0 210.87709808 L 224.0 198.05932713 L 224.52130413 197.19698429 L 225.47456074 195.98024273 L 226.56752777 194.88727474 L 227.78426933 193.93401909 L 229.10704136 193.13437557 L 230.51655483 192.50000477 L 231.99225712 192.04015732 L 232.21138859 192.0 L 237.8996067 192.0 L 238.11873817 192.04015732 L 239.59444046 192.50000477 L 241.00395489 193.13437557 L 242.32672691 193.93401909 L 243.54346752 194.88727474 L 244.63643551 195.98024273 L 245.58969116 197.19698429 L 246.38933468 198.51975632 L 247.02370548 199.92926979 L 247.48355293 201.40497208 L 247.76217175 202.92534351 L 247.85549831 204.46821308 L 247.76217175 206.0110817 L 247.48355293 207.53145313 L 247.02370548 209.00715542 L 246.38933468 210.41666889 L 245.58969116 211.73944092 L 244.63643551 212.95618248 L 243.54346752 214.04915047 L 242.32672691 215.00240612 L 241.00395489 215.80204964 L 239.59444046 216.43642044 L 238.11873817 216.89626789 L 236.59836769 217.17488575 Z" fill="white"/>
195
+ <path d=" M 230.58796215 206.27711582 L 229.0428772 206.03239822 L 227.64903641 205.32220078 L 226.5428772 204.21604252 L 225.83267975 202.82220078 L 225.58796215 201.27711582 L 225.83267975 199.73203087 L 226.5428772 198.33819008 L 227.64903641 197.23203087 L 229.0428772 196.52183342 L 230.58796215 196.27711582 L 232.1330471 196.52183342 L 233.52688885 197.23203087 L 234.6330471 198.33819008 L 235.34324551 199.73203087 L 235.58796215 201.27711582 L 235.34324551 202.82220078 L 234.6330471 204.21604252 L 233.52688885 205.32220078 L 232.1330471 206.03239822 Z" fill="rgb(-18.125, 0, 191.25)"/>
196
+ <rect x="224" y="224" width="32" height="32" fill="rgb(225.0, 0, 225.0)"/>
197
+ <path d=" M 239.66270065 252.46270084 L 238.11983109 252.36937428 L 236.5994606 252.09075642 L 235.12375832 251.63090897 L 233.71424484 250.99653816 L 232.39147186 250.19689465 L 231.17473125 249.24363899 L 230.08176327 248.15067101 L 229.12850761 246.93392944 L 228.3288641 245.61115742 L 227.69449329 244.20164394 L 227.23464584 242.72594166 L 226.95602703 241.20557022 L 226.86270142 239.66270065 L 226.95602703 238.11983109 L 227.23464584 236.5994606 L 227.69449329 235.12375832 L 228.3288641 233.71424484 L 229.12850761 232.39147186 L 230.08176327 231.17473125 L 231.17473125 230.08176327 L 232.39147186 229.12850761 L 233.71424484 228.3288641 L 235.12375832 227.69449329 L 236.5994606 227.23464584 L 238.11983109 226.95602703 L 239.66270065 226.86270142 L 241.20557022 226.95602703 L 242.72594166 227.23464584 L 244.20164394 227.69449329 L 245.61115742 228.3288641 L 246.93392944 229.12850761 L 248.15067101 230.08176327 L 249.24363899 231.17473125 L 250.19689465 232.39147186 L 250.99653816 233.71424484 L 251.63090897 235.12375832 L 252.09075642 236.5994606 L 252.36937428 238.11983109 L 252.46270084 239.66270065 L 252.36937428 241.20557022 L 252.09075642 242.72594166 L 251.63090897 244.20164394 L 250.99653816 245.61115742 L 250.19689465 246.93392944 L 249.24363899 248.15067101 L 248.15067101 249.24363899 L 246.93392944 250.19689465 L 245.61115742 250.99653816 L 244.20164394 251.63090897 L 242.72594166 252.09075642 L 241.20557022 252.36937428 Z" fill="white"/>
198
+ <path d=" M 235.00290203 240.00290203 L 233.45781708 239.75818539 L 232.06397629 239.04798698 L 230.95781708 237.94182873 L 230.24761963 236.54798698 L 230.00290203 235.00290203 L 230.24761963 233.45781708 L 230.95781708 232.06397629 L 232.06397629 230.95781708 L 233.45781708 230.24761963 L 235.00290203 230.00290203 L 236.54798698 230.24761963 L 237.94182873 230.95781708 L 239.04798698 232.06397629 L 239.75818539 233.45781708 L 240.00290203 235.00290203 L 239.75818539 236.54798698 L 239.04798698 237.94182873 L 237.94182873 239.04798698 L 236.54798698 239.75818539 Z" fill="rgb(-18.125, 0, 223.125)"/>
199
+ </svg>
@@ -24,21 +24,37 @@ module VectorSalad
24
24
  end
25
25
 
26
26
  # Loop over the shapes in the canvas.
27
- def each(&block)
27
+ def each(&_)
28
28
  @canvas.each do |shape|
29
- shape = shape.shape if shape.class == VectorSalad::ShapeProxy
30
- unless shape.class == VectorSalad::StandardShapes::Custom ||
31
- !shape.kind_of?(VectorSalad::StandardShapes::BasicShape)
29
+ shape = to_shape(shape)
30
+ next if shape.class == VectorSalad::StandardShapes::Custom ||
31
+ !shape.is_a?(VectorSalad::StandardShapes::BasicShape)
32
+
33
+ if shape.is_a?(VectorSalad::StandardShapes::Group) ||
34
+ (shape.is_a?(VectorSalad::StandardShapes::Custom) &&
35
+ shape.to_path.class == VectorSalad::StandardShapes::Group)
36
+ shape.canvas.each { |s| yield(s) }
37
+ else
32
38
  yield(shape)
33
39
  end
34
40
  end
35
41
  end
36
42
 
43
+ def length
44
+ @canvas.length
45
+ end
46
+
37
47
  # Access a specific shape in the canvas.
38
48
  # Often used to get the first shape [0] for situations where only
39
49
  # a single shape is allowed.
40
50
  def [](i)
41
- @canvas[i].class==VectorSalad::ShapeProxy ? @canvas[i].shape : @canvas[i]
51
+ to_shape @canvas[i]
52
+ end
53
+
54
+ private
55
+
56
+ def to_shape(shape)
57
+ shape.class == VectorSalad::ShapeProxy ? shape.shape : shape
42
58
  end
43
59
  end
44
60
  end
@@ -33,8 +33,8 @@ module VectorSalad
33
33
  def header; end
34
34
 
35
35
  def body
36
- format = self.class.name.split('::').last.gsub(/Exporter/, '')
37
- .gsub(/(.)([A-Z])/,'\1_\2').downcase
36
+ format = self.class.name.split("::").last.gsub(/Exporter/, "")
37
+ .gsub(/(.)([A-Z])/, '\1_\2').downcase
38
38
  convert_method = "to_#{format}".to_sym
39
39
  canvas.each do |shape|
40
40
  begin
@@ -58,6 +58,7 @@ module VectorSalad
58
58
  end
59
59
 
60
60
  private
61
+
61
62
  # This method is long and repetetive, for speed. There was a shorter
62
63
  # version that converted every shape to a MultiPath but the performance
63
64
  # was really terrible. This way is a ton faster.
@@ -0,0 +1,36 @@
1
+ require "contracts"
2
+ require "contracts_builtin"
3
+
4
+ module VectorSalad
5
+ module Mixins
6
+ # Mixin for transforming shapes.
7
+ module Transforms
8
+ include Contracts::Core
9
+ include Contracts::Builtin
10
+
11
+ # Move the shape absolutely.
12
+ Contract Num, Num => Any
13
+ def [](x, y)
14
+ each_send(:[], x, y)
15
+ end
16
+
17
+ # Move the shape relatively.
18
+ Contract Num, Num => Any
19
+ def move(x, y)
20
+ each_send(:move, x, y)
21
+ end
22
+
23
+ # Rotates the shape by the specified angle about the origin.
24
+ Contract Num => Any
25
+ def rotate(angle)
26
+ each_send(:rotate, angle)
27
+ end
28
+
29
+ # Scale a shape by multiplier about the origin.
30
+ Contract Num => Any
31
+ def scale(multiplier)
32
+ each_send(:scale, multiplier)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,16 +1,19 @@
1
+ require "fancy_to_proc"
1
2
  require "vector_salad/dsl"
2
3
  require "vector_salad/canvas"
3
4
  require "vector_salad/standard_shapes/basic_shape"
5
+ require "vector_salad/standard_shapes/transform"
4
6
 
5
7
  module VectorSalad
6
8
  module StandardShapes
7
9
  # Make your own custom shape.
8
10
  class Custom < BasicShape
9
11
  # You must name your custom shape to be able to use it later.
10
- # The block passed to custom shape is what will create your shape,
11
- # it should create just a single shape or MultiPath.
12
- # This means you should use {MultiPath} or one of the {Clip} operations
13
- # which return MultiPaths to create complex shapes.
12
+ # The block passed to custom shape is what will create your shape.
13
+ # If you create just 1 shape (e.g. with {MultiPath} or
14
+ # one of the {Clip} operations which return a {MultiPath})
15
+ # then that's what's added to the canvas,
16
+ # but if you create multiple shapes they will be wrapped in a {Group}.
14
17
  #
15
18
  # @example Using DSL:
16
19
  # custom(:donut) do |size| # name shape and specify parameters
@@ -25,7 +28,8 @@ module VectorSalad
25
28
  # @param name The name of your shape in snake_case
26
29
  Contract Symbol, {}, Proc => Any
27
30
  def initialize(name, **options, &block)
28
- ::VectorSalad::StandardShapes.const_set(name.to_s.capitalize.to_sym, Class.new(BasicShape) do
31
+ const = name.to_s.capitalize.to_sym
32
+ ::VectorSalad::StandardShapes.const_set(const, Class.new(Custom) do
29
33
  include VectorSalad::DSL
30
34
  include VectorSalad::StandardShapes
31
35
 
@@ -36,7 +40,11 @@ module VectorSalad
36
40
  end
37
41
 
38
42
  def to_path
39
- canvas[0]
43
+ if canvas.length == 1
44
+ canvas[0]
45
+ else
46
+ Group.new.tap(&:canvas=.(@canvas))
47
+ end
40
48
  end
41
49
  end)
42
50
  end
@@ -0,0 +1,56 @@
1
+ # require "contracts"
2
+ # require "contracts_builtin"
3
+ # require "vector_salad/dsl"
4
+ # require "vector_salad/canvas"
5
+
6
+ # module VectorSalad
7
+ # module StandardShapes
8
+ # # @api private
9
+ # class Transform
10
+ # include VectorSalad::DSL
11
+ # include VectorSalad::StandardShapes
12
+ # include Contracts::Core
13
+ # include Contracts::Builtin
14
+ # end
15
+ # end
16
+ # end
17
+
18
+ # require "vector_salad/standard_shapes/group_dsl"
19
+ require "vector_salad/standard_shapes/transform"
20
+ require "vector_salad/canvas"
21
+ require "vector_salad/mixins/transforms"
22
+
23
+ module VectorSalad
24
+ module StandardShapes
25
+ # Move the contained shapes.
26
+ class Group < BasicShape
27
+ include VectorSalad::Mixins::Transforms
28
+ include VectorSalad::DSL
29
+ include VectorSalad::StandardShapes
30
+
31
+ attr_accessor :canvas
32
+
33
+ def initialize(**_options, &block)
34
+ # @canvas = GroupDSL.new(&block).canvas if block
35
+ instance_eval(&block) if block # inner_canvas is populated
36
+ end
37
+
38
+ def canvas
39
+ @canvas ||= VectorSalad::Canvas.new
40
+ end
41
+
42
+ def to_path
43
+ self
44
+ end
45
+
46
+ private
47
+
48
+ def each_send(method, *args, &block)
49
+ @canvas.each do |shape|
50
+ shape.send(method, *args, &block)
51
+ end
52
+ self
53
+ end
54
+ end
55
+ end
56
+ end
@@ -1,12 +1,15 @@
1
1
  require "vector_salad/standard_shapes/basic_shape"
2
2
  require "vector_salad/standard_shapes/n"
3
3
  require "vector_salad/interpolate"
4
+ require "vector_salad/mixins/transforms"
4
5
 
5
6
  module VectorSalad
6
7
  module StandardShapes
7
8
  # MultiPath shape is a collection of Paths.
8
9
  # It is mainly to store the result of {Clip} operations.
9
10
  class MultiPath < BasicShape
11
+ include VectorSalad::Mixins::Transforms
12
+
10
13
  attr_reader :paths, :closed
11
14
 
12
15
  # See {Path} for details on constructing paths.
@@ -33,30 +36,6 @@ module VectorSalad
33
36
  self
34
37
  end
35
38
 
36
- # Move the MultiPath absolutely.
37
- Contract Num, Num => MultiPath
38
- def [](x, y)
39
- each_send(:[], x, y)
40
- end
41
-
42
- # Move the MultiPath relatively.
43
- Contract Num, Num => MultiPath
44
- def move(x, y)
45
- each_send(:move, x, y)
46
- end
47
-
48
- # Rotates the MultiPath by the specified angle about the origin.
49
- Contract Num => MultiPath
50
- def rotate(angle)
51
- each_send(:rotate, angle)
52
- end
53
-
54
- # Scale a MultiPath by multiplier about the origin.
55
- Contract Num => MultiPath
56
- def scale(multiplier)
57
- each_send(:scale, multiplier)
58
- end
59
-
60
39
  # Convert the shape to a path
61
40
  def to_path
62
41
  self
@@ -1,3 +1,3 @@
1
1
  module VectorSalad
2
- VERSION = "0.2.0" # Version of VectorSalad
2
+ VERSION = "0.3.0" # Version of VectorSalad
3
3
  end
data/vector_salad.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency "ruby_clipper", "~> 5.0"
27
27
  spec.add_dependency "spiro", "~> 0.0.3"
28
28
  spec.add_dependency "contracts", "~> 0.12"
29
+ spec.add_dependency "fancy_to_proc", "~> 0.1"
29
30
 
30
31
  #spec.add_development_dependency "yard", "~> 0.8"
31
32
  #spec.add_development_dependency "yard-contracts"#, "~> 0.1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vector_salad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon George
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-26 00:00:00.000000000 Z
11
+ date: 2015-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pretty_backtrace
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.12'
69
+ - !ruby/object:Gem::Dependency
70
+ name: fancy_to_proc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.1'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -161,6 +175,9 @@ files:
161
175
  - examples/cubic_circle.png
162
176
  - examples/cubic_circle.rb
163
177
  - examples/cubic_circle.svg
178
+ - examples/eye_box.png
179
+ - examples/eye_box.rb
180
+ - examples/eye_box.svg
164
181
  - examples/face.png
165
182
  - examples/face.rb
166
183
  - examples/face.svg
@@ -220,6 +237,7 @@ files:
220
237
  - lib/vector_salad/magic.rb
221
238
  - lib/vector_salad/mixins/at.rb
222
239
  - lib/vector_salad/mixins/mixins.rb
240
+ - lib/vector_salad/mixins/transforms.rb
223
241
  - lib/vector_salad/monkeypatches.rb
224
242
  - lib/vector_salad/optparse.rb
225
243
  - lib/vector_salad/shape_proxy.rb
@@ -230,6 +248,7 @@ files:
230
248
  - lib/vector_salad/standard_shapes/difference.rb
231
249
  - lib/vector_salad/standard_shapes/exclusion.rb
232
250
  - lib/vector_salad/standard_shapes/flip.rb
251
+ - lib/vector_salad/standard_shapes/group.rb
233
252
  - lib/vector_salad/standard_shapes/heart.rb
234
253
  - lib/vector_salad/standard_shapes/hexagon.rb
235
254
  - lib/vector_salad/standard_shapes/intersection.rb