1 /*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7 #include "include/core/SkPath.h"
8 #include "include/core/SkPathTypes.h"
9 #include "include/core/SkPoint.h"
10 #include "include/core/SkRect.h"
11 #include "include/core/SkScalar.h"
12 #include "include/core/SkString.h"
13 #include "include/core/SkTypes.h"
14 #include "include/pathops/SkPathOps.h"
15 #include "include/private/base/SkDebug.h"
16 #include "include/utils/SkParsePath.h"
17 #include "src/base/SkFloatBits.h"
18 #include "src/core/SkGeometry.h"
19 #include "src/pathops/SkPathOpsCubic.h"
20 #include "src/pathops/SkPathOpsPoint.h"
21 #include "src/pathops/SkPathOpsQuad.h"
22 #include "tests/PathOpsDebug.h"
23 #include "tests/PathOpsExtendedTest.h"
24 #include "tests/PathOpsTestCommon.h"
25 #include "tests/Test.h"
26
27 #include <cstddef>
28 #include <iterator>
29
30 class PathTest_Private {
31 public:
PathTest_Private(SkPath * path)32 PathTest_Private(SkPath* path)
33 : fPath(path) {}
34
setPt(int index,SkScalar x,SkScalar y)35 void setPt(int index, SkScalar x, SkScalar y) {
36 fPath->setPt(index, x, y);
37 }
38
39 SkPath* fPath;
40 };
41
path_edit(const SkPoint & from,const SkPoint & to,SkPath * path)42 static void path_edit(const SkPoint& from, const SkPoint& to, SkPath* path) {
43 PathTest_Private testPath(path);
44 for (int index = 0; index < path->countPoints(); ++index) {
45 if (SkDPoint::ApproximatelyEqual(path->getPoint(index), from)) {
46 testPath.setPt(index, to.fX, to.fY);
47 return;
48 }
49 }
50 }
51
cubicOp1d(skiatest::Reporter * reporter,const char * filename)52 static void cubicOp1d(skiatest::Reporter* reporter, const char* filename) {
53 SkPath path, pathB;
54 path.setFillType(SkPathFillType::kWinding);
55 path.moveTo(0,1);
56 path.cubicTo(0,2, 1,0, 1,0);
57 path.close();
58 pathB.setFillType(SkPathFillType::kWinding);
59 pathB.moveTo(0,1);
60 pathB.cubicTo(0,1, 1,0, 2,0);
61 pathB.close();
62 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
63 }
64
cubicOp2d(skiatest::Reporter * reporter,const char * filename)65 static void cubicOp2d(skiatest::Reporter* reporter, const char* filename) {
66 SkPath path, pathB;
67 path.setFillType(SkPathFillType::kWinding);
68 path.moveTo(0,2);
69 path.cubicTo(0,1, 1,0, 1,0);
70 path.close();
71 pathB.setFillType(SkPathFillType::kWinding);
72 pathB.moveTo(0,1);
73 pathB.cubicTo(0,1, 2,0, 1,0);
74 pathB.close();
75 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
76 }
77
cubicOp3d(skiatest::Reporter * reporter,const char * filename)78 static void cubicOp3d(skiatest::Reporter* reporter, const char* filename) {
79 SkPath path, pathB;
80 path.setFillType(SkPathFillType::kWinding);
81 path.moveTo(0,1);
82 path.cubicTo(2,3, 1,0, 1,0);
83 path.close();
84 pathB.setFillType(SkPathFillType::kWinding);
85 pathB.moveTo(0,1);
86 pathB.cubicTo(0,1, 1,0, 3,2);
87 pathB.close();
88 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
89 }
90
cubicOp5d(skiatest::Reporter * reporter,const char * filename)91 static void cubicOp5d(skiatest::Reporter* reporter, const char* filename) {
92 SkPath path, pathB;
93 path.setFillType(SkPathFillType::kWinding);
94 path.moveTo(0,1);
95 path.cubicTo(0,2, 1,0, 2,0);
96 path.close();
97 pathB.setFillType(SkPathFillType::kWinding);
98 pathB.moveTo(0,1);
99 pathB.cubicTo(0,2, 1,0, 2,0);
100 pathB.close();
101 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
102 }
103
cubicOp6d(skiatest::Reporter * reporter,const char * filename)104 static void cubicOp6d(skiatest::Reporter* reporter, const char* filename) {
105 SkPath path, pathB;
106 path.setFillType(SkPathFillType::kWinding);
107 path.moveTo(0,1);
108 path.cubicTo(0,6, 1,0, 3,0);
109 path.close();
110 pathB.setFillType(SkPathFillType::kWinding);
111 pathB.moveTo(0,1);
112 pathB.cubicTo(0,3, 1,0, 6,0);
113 pathB.close();
114 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
115 }
116
cubicOp7d(skiatest::Reporter * reporter,const char * filename)117 static void cubicOp7d(skiatest::Reporter* reporter, const char* filename) {
118 SkPath path, pathB;
119 path.setFillType(SkPathFillType::kWinding);
120 path.moveTo(0,1);
121 path.cubicTo(3,4, 1,0, 3,0);
122 path.close();
123 pathB.setFillType(SkPathFillType::kWinding);
124 pathB.moveTo(0,1);
125 pathB.cubicTo(0,3, 1,0, 4,3);
126 pathB.close();
127 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
128 }
129
cubicOp8d(skiatest::Reporter * reporter,const char * filename)130 static void cubicOp8d(skiatest::Reporter* reporter, const char* filename) {
131 SkPath path, pathB;
132 path.setFillType(SkPathFillType::kWinding);
133 path.moveTo(0,1);
134 path.cubicTo(0,5, 1,0, 4,0);
135 path.close();
136 pathB.setFillType(SkPathFillType::kWinding);
137 pathB.moveTo(0,1);
138 pathB.cubicTo(0,4, 1,0, 5,0);
139 pathB.close();
140 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
141 }
142
cubicOp9d(skiatest::Reporter * reporter,const char * filename)143 static void cubicOp9d(skiatest::Reporter* reporter, const char* filename) {
144 SkPath path, pathB;
145 path.setFillType(SkPathFillType::kWinding);
146 path.moveTo(0,1);
147 path.cubicTo(1,6, 1,0, 2,1);
148 path.close();
149 pathB.setFillType(SkPathFillType::kWinding);
150 pathB.moveTo(0,1);
151 pathB.cubicTo(1,2, 1,0, 6,1);
152 pathB.close();
153 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
154 }
155
quadOp9d(skiatest::Reporter * reporter,const char * filename)156 static void quadOp9d(skiatest::Reporter* reporter, const char* filename) {
157 SkPath path, pathB;
158 path.setFillType(SkPathFillType::kWinding);
159 path.moveTo(0,1);
160 path.quadTo(1,6, 1.5f,1);
161 path.quadTo(1.5f,0.5f, 2,1);
162 path.close();
163 pathB.setFillType(SkPathFillType::kWinding);
164 pathB.moveTo(0,1);
165 pathB.quadTo(1,2, 1.4f,1);
166 pathB.quadTo(3,0.4f, 6,1);
167 pathB.close();
168 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
169 }
170
lineOp9d(skiatest::Reporter * reporter,const char * filename)171 static void lineOp9d(skiatest::Reporter* reporter, const char* filename) {
172 SkPath path, pathB;
173 path.setFillType(SkPathFillType::kWinding);
174 path.moveTo(0,1);
175 path.lineTo(1,6);
176 path.lineTo(1.5f,1);
177 path.lineTo(1.8f,0.8f);
178 path.lineTo(2,1);
179 path.close();
180 pathB.setFillType(SkPathFillType::kWinding);
181 pathB.moveTo(0,1);
182 pathB.lineTo(1,2);
183 pathB.lineTo(1.4f,1);
184 pathB.lineTo(3,0.4f);
185 pathB.lineTo(6,1);
186 pathB.close();
187 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
188 }
189
cubicOp1i(skiatest::Reporter * reporter,const char * filename)190 static void cubicOp1i(skiatest::Reporter* reporter, const char* filename) {
191 SkPath path, pathB;
192 path.setFillType(SkPathFillType::kWinding);
193 path.moveTo(0,1);
194 path.cubicTo(1,2, 1,0, 2,1);
195 path.close();
196 pathB.setFillType(SkPathFillType::kWinding);
197 pathB.moveTo(0,1);
198 pathB.cubicTo(1,2, 1,0, 2,1);
199 pathB.close();
200 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
201 }
202
cubicOp10d(skiatest::Reporter * reporter,const char * filename)203 static void cubicOp10d(skiatest::Reporter* reporter, const char* filename) {
204 SkPath path, pathB;
205 path.setFillType(SkPathFillType::kWinding);
206 path.moveTo(0,1);
207 path.cubicTo(1,3, 1,0, 4,1);
208 path.close();
209 pathB.setFillType(SkPathFillType::kWinding);
210 pathB.moveTo(0,1);
211 pathB.cubicTo(1,4, 1,0, 3,1);
212 pathB.close();
213 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
214 }
215
cubicOp11d(skiatest::Reporter * reporter,const char * filename)216 static void cubicOp11d(skiatest::Reporter* reporter, const char* filename) {
217 SkPath path, pathB;
218 path.setFillType(SkPathFillType::kWinding);
219 path.moveTo(0,1);
220 path.cubicTo(3,4, 1,0, 5,1);
221 path.close();
222 pathB.setFillType(SkPathFillType::kWinding);
223 pathB.moveTo(0,1);
224 pathB.cubicTo(1,5, 1,0, 4,3);
225 pathB.close();
226 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
227 }
228
cubicOp12d(skiatest::Reporter * reporter,const char * filename)229 static void cubicOp12d(skiatest::Reporter* reporter, const char* filename) {
230 SkPath path, pathB;
231 path.setFillType(SkPathFillType::kWinding);
232 path.moveTo(0,1);
233 path.cubicTo(1,6, 1,0, 1,0);
234 path.close();
235 pathB.setFillType(SkPathFillType::kWinding);
236 pathB.moveTo(0,1);
237 pathB.cubicTo(0,1, 1,0, 6,1);
238 pathB.close();
239 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
240 }
241
cubicOp13d(skiatest::Reporter * reporter,const char * filename)242 static void cubicOp13d(skiatest::Reporter* reporter, const char* filename) {
243 SkPath path, pathB;
244 path.setFillType(SkPathFillType::kWinding);
245 path.moveTo(0,1);
246 path.cubicTo(4,5, 1,0, 5,3);
247 path.close();
248 pathB.setFillType(SkPathFillType::kWinding);
249 pathB.moveTo(0,1);
250 pathB.cubicTo(3,5, 1,0, 5,4);
251 pathB.close();
252 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
253 }
254
cubicOp14d(skiatest::Reporter * reporter,const char * filename)255 static void cubicOp14d(skiatest::Reporter* reporter, const char* filename) {
256 SkPath path, pathB;
257 path.setFillType(SkPathFillType::kWinding);
258 path.moveTo(0,1);
259 path.cubicTo(0,2, 2,0, 2,1);
260 path.close();
261 pathB.setFillType(SkPathFillType::kWinding);
262 pathB.moveTo(0,2);
263 pathB.cubicTo(1,2, 1,0, 2,0);
264 pathB.close();
265 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
266 }
267
cubicOp15d(skiatest::Reporter * reporter,const char * filename)268 static void cubicOp15d(skiatest::Reporter* reporter, const char* filename) {
269 SkPath path, pathB;
270 path.setFillType(SkPathFillType::kWinding);
271 path.moveTo(0,1);
272 path.cubicTo(3,6, 2,0, 2,1);
273 path.close();
274 pathB.setFillType(SkPathFillType::kWinding);
275 pathB.moveTo(0,2);
276 pathB.cubicTo(1,2, 1,0, 6,3);
277 pathB.close();
278 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
279 }
280
cubicOp16d(skiatest::Reporter * reporter,const char * filename)281 static void cubicOp16d(skiatest::Reporter* reporter, const char* filename) {
282 SkPath path, pathB;
283 path.setFillType(SkPathFillType::kWinding);
284 path.moveTo(0,2);
285 path.cubicTo(0,1, 3,0, 1,0);
286 path.close();
287 pathB.setFillType(SkPathFillType::kWinding);
288 pathB.moveTo(0,3);
289 pathB.cubicTo(0,1, 2,0, 1,0);
290 pathB.close();
291 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
292 }
293
cubicOp17d(skiatest::Reporter * reporter,const char * filename)294 static void cubicOp17d(skiatest::Reporter* reporter, const char* filename) {
295 SkPath path, pathB;
296 path.setFillType(SkPathFillType::kWinding);
297 path.moveTo(0,2);
298 path.cubicTo(0,2, 4,0, 2,1);
299 path.close();
300 pathB.setFillType(SkPathFillType::kWinding);
301 pathB.moveTo(0,4);
302 pathB.cubicTo(1,2, 2,0, 2,0);
303 pathB.close();
304 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
305 }
306
cubicOp18d(skiatest::Reporter * reporter,const char * filename)307 static void cubicOp18d(skiatest::Reporter* reporter, const char* filename) {
308 SkPath path, pathB;
309 path.setFillType(SkPathFillType::kWinding);
310 path.moveTo(0,1);
311 path.cubicTo(3,5, 2,0, 2,1);
312 path.close();
313 pathB.setFillType(SkPathFillType::kWinding);
314 pathB.moveTo(0,2);
315 pathB.cubicTo(1,2, 1,0, 5,3);
316 pathB.close();
317 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
318 }
319
cubicOp19i(skiatest::Reporter * reporter,const char * filename)320 static void cubicOp19i(skiatest::Reporter* reporter, const char* filename) {
321 SkPath path, pathB;
322 path.setFillType(SkPathFillType::kWinding);
323 path.moveTo(0,2);
324 path.cubicTo(0,1, 2,1, 6,2);
325 path.close();
326 pathB.setFillType(SkPathFillType::kWinding);
327 pathB.moveTo(1,2);
328 pathB.cubicTo(2,6, 2,0, 1,0);
329 pathB.close();
330 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
331 }
332
cubicOp20d(skiatest::Reporter * reporter,const char * filename)333 static void cubicOp20d(skiatest::Reporter* reporter, const char* filename) {
334 SkPath path, pathB;
335 path.setFillType(SkPathFillType::kWinding);
336 path.moveTo(0,1);
337 path.cubicTo(0,1, 6,0, 2,1);
338 path.close();
339 pathB.setFillType(SkPathFillType::kWinding);
340 pathB.moveTo(0,6);
341 pathB.cubicTo(1,2, 1,0, 1,0);
342 pathB.close();
343 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
344 }
345
cubicOp21d(skiatest::Reporter * reporter,const char * filename)346 static void cubicOp21d(skiatest::Reporter* reporter, const char* filename) {
347 SkPath path, pathB;
348 path.setFillType(SkPathFillType::kWinding);
349 path.moveTo(0,1);
350 path.cubicTo(0,1, 2,1, 6,5);
351 path.close();
352 pathB.setFillType(SkPathFillType::kWinding);
353 pathB.moveTo(1,2);
354 pathB.cubicTo(5,6, 1,0, 1,0);
355 pathB.close();
356 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
357 }
358
cubicOp22d(skiatest::Reporter * reporter,const char * filename)359 static void cubicOp22d(skiatest::Reporter* reporter, const char* filename) {
360 SkPath path, pathB;
361 path.setFillType(SkPathFillType::kWinding);
362 path.moveTo(0,1);
363 path.cubicTo(2,3, 3,0, 2,1);
364 path.close();
365 pathB.setFillType(SkPathFillType::kWinding);
366 pathB.moveTo(0,3);
367 pathB.cubicTo(1,2, 1,0, 3,2);
368 pathB.close();
369 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
370 }
371
cubicOp23d(skiatest::Reporter * reporter,const char * filename)372 static void cubicOp23d(skiatest::Reporter* reporter, const char* filename) {
373 SkPath path, pathB;
374 path.setFillType(SkPathFillType::kWinding);
375 path.moveTo(0,1);
376 path.cubicTo(1,2, 4,0, 2,1);
377 path.close();
378 pathB.setFillType(SkPathFillType::kWinding);
379 pathB.moveTo(0,4);
380 pathB.cubicTo(1,2, 1,0, 2,1);
381 pathB.close();
382 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
383 }
384
cubicOp24d(skiatest::Reporter * reporter,const char * filename)385 static void cubicOp24d(skiatest::Reporter* reporter, const char* filename) {
386 SkPath path, pathB;
387 path.setFillType(SkPathFillType::kWinding);
388 path.moveTo(0,1);
389 path.cubicTo(1,2, 2,0, 3,2);
390 path.close();
391 pathB.setFillType(SkPathFillType::kWinding);
392 pathB.moveTo(0,2);
393 pathB.cubicTo(2,3, 1,0, 2,1);
394 pathB.close();
395 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
396 }
397
testIntersect1(skiatest::Reporter * reporter,const char * filename)398 static void testIntersect1(skiatest::Reporter* reporter, const char* filename) {
399 SkPath one, two;
400 one.addRect(0, 0, 6, 6, SkPathDirection::kCW);
401 two.addRect(3, 3, 9, 9, SkPathDirection::kCW);
402 testPathOp(reporter, one, two, kIntersect_SkPathOp, filename);
403 }
404
testUnion1(skiatest::Reporter * reporter,const char * filename)405 static void testUnion1(skiatest::Reporter* reporter, const char* filename) {
406 SkPath one, two;
407 one.addRect(0, 0, 6, 6, SkPathDirection::kCW);
408 two.addRect(3, 3, 9, 9, SkPathDirection::kCW);
409 testPathOp(reporter, one, two, kUnion_SkPathOp, filename);
410 }
411
testDiff1(skiatest::Reporter * reporter,const char * filename)412 static void testDiff1(skiatest::Reporter* reporter, const char* filename) {
413 SkPath one, two;
414 one.addRect(0, 0, 6, 6, SkPathDirection::kCW);
415 two.addRect(3, 3, 9, 9, SkPathDirection::kCW);
416 testPathOp(reporter, one, two, kDifference_SkPathOp, filename);
417 }
418
testXor1(skiatest::Reporter * reporter,const char * filename)419 static void testXor1(skiatest::Reporter* reporter, const char* filename) {
420 SkPath one, two;
421 one.addRect(0, 0, 6, 6, SkPathDirection::kCW);
422 two.addRect(3, 3, 9, 9, SkPathDirection::kCW);
423 testPathOp(reporter, one, two, kXOR_SkPathOp, filename);
424 }
425
testIntersect2(skiatest::Reporter * reporter,const char * filename)426 static void testIntersect2(skiatest::Reporter* reporter, const char* filename) {
427 SkPath one, two;
428 one.addRect(0, 0, 6, 6, SkPathDirection::kCW);
429 two.addRect(0, 3, 9, 9, SkPathDirection::kCW);
430 testPathOp(reporter, one, two, kIntersect_SkPathOp, filename);
431 }
432
testUnion2(skiatest::Reporter * reporter,const char * filename)433 static void testUnion2(skiatest::Reporter* reporter, const char* filename) {
434 SkPath one, two;
435 one.addRect(0, 0, 6, 6, SkPathDirection::kCW);
436 two.addRect(0, 3, 9, 9, SkPathDirection::kCW);
437 testPathOp(reporter, one, two, kUnion_SkPathOp, filename);
438 }
439
testDiff2(skiatest::Reporter * reporter,const char * filename)440 static void testDiff2(skiatest::Reporter* reporter, const char* filename) {
441 SkPath one, two;
442 one.addRect(0, 0, 6, 6, SkPathDirection::kCW);
443 two.addRect(0, 3, 9, 9, SkPathDirection::kCW);
444 testPathOp(reporter, one, two, kDifference_SkPathOp, filename);
445 }
446
testXor2(skiatest::Reporter * reporter,const char * filename)447 static void testXor2(skiatest::Reporter* reporter, const char* filename) {
448 SkPath one, two;
449 one.addRect(0, 0, 6, 6, SkPathDirection::kCW);
450 two.addRect(0, 3, 9, 9, SkPathDirection::kCW);
451 testPathOp(reporter, one, two, kXOR_SkPathOp, filename);
452 }
453
testOp1d(skiatest::Reporter * reporter,const char * filename)454 static void testOp1d(skiatest::Reporter* reporter, const char* filename) {
455 SkPath path, pathB;
456 path.setFillType(SkPathFillType::kWinding);
457 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
458 path.addRect(0, 0, 2, 2, SkPathDirection::kCW);
459 pathB.setFillType(SkPathFillType::kWinding);
460 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
461 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
462 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
463 }
464
testOp2d(skiatest::Reporter * reporter,const char * filename)465 static void testOp2d(skiatest::Reporter* reporter, const char* filename) {
466 SkPath path, pathB;
467 path.setFillType(SkPathFillType::kWinding);
468 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
469 path.addRect(0, 0, 2, 2, SkPathDirection::kCW);
470 pathB.setFillType(SkPathFillType::kEvenOdd);
471 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
472 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
473 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
474 }
475
testOp3d(skiatest::Reporter * reporter,const char * filename)476 static void testOp3d(skiatest::Reporter* reporter, const char* filename) {
477 SkPath path, pathB;
478 path.setFillType(SkPathFillType::kWinding);
479 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
480 path.addRect(1, 1, 2, 2, SkPathDirection::kCW);
481 pathB.setFillType(SkPathFillType::kWinding);
482 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
483 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
484 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
485 }
486
testOp1u(skiatest::Reporter * reporter,const char * filename)487 static void testOp1u(skiatest::Reporter* reporter, const char* filename) {
488 SkPath path, pathB;
489 path.setFillType(SkPathFillType::kWinding);
490 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
491 path.addRect(0, 0, 3, 3, SkPathDirection::kCW);
492 pathB.setFillType(SkPathFillType::kWinding);
493 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
494 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
495 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
496 }
497
testOp4d(skiatest::Reporter * reporter,const char * filename)498 static void testOp4d(skiatest::Reporter* reporter, const char* filename) {
499 SkPath path, pathB;
500 path.setFillType(SkPathFillType::kWinding);
501 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
502 path.addRect(2, 2, 4, 4, SkPathDirection::kCW);
503 pathB.setFillType(SkPathFillType::kWinding);
504 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
505 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
506 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
507 }
508
testOp5d(skiatest::Reporter * reporter,const char * filename)509 static void testOp5d(skiatest::Reporter* reporter, const char* filename) {
510 SkPath path, pathB;
511 path.setFillType(SkPathFillType::kEvenOdd);
512 path.addRect(0, 0, 2, 2, SkPathDirection::kCW);
513 path.addRect(0, 0, 3, 3, SkPathDirection::kCW);
514 pathB.setFillType(SkPathFillType::kEvenOdd);
515 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
516 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
517 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
518 }
519
testOp6d(skiatest::Reporter * reporter,const char * filename)520 static void testOp6d(skiatest::Reporter* reporter, const char* filename) {
521 SkPath path, pathB;
522 path.setFillType(SkPathFillType::kEvenOdd);
523 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
524 path.addRect(0, 0, 3, 3, SkPathDirection::kCW);
525 pathB.setFillType(SkPathFillType::kWinding);
526 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
527 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
528 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
529 }
530
testOp7d(skiatest::Reporter * reporter,const char * filename)531 static void testOp7d(skiatest::Reporter* reporter, const char* filename) {
532 SkPath path, pathB;
533 path.setFillType(SkPathFillType::kEvenOdd);
534 path.addRect(0, 0, 2, 2, SkPathDirection::kCW);
535 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
536 pathB.setFillType(SkPathFillType::kEvenOdd);
537 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
538 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
539 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
540 }
541
testOp2u(skiatest::Reporter * reporter,const char * filename)542 static void testOp2u(skiatest::Reporter* reporter, const char* filename) {
543 SkPath path, pathB;
544 path.setFillType(SkPathFillType::kEvenOdd);
545 path.addRect(0, 0, 2, 2, SkPathDirection::kCW);
546 path.addRect(0, 0, 2, 2, SkPathDirection::kCW);
547 pathB.setFillType(SkPathFillType::kWinding);
548 pathB.addRect(0, 0, 3, 3, SkPathDirection::kCW);
549 pathB.addRect(1, 1, 2, 2, SkPathDirection::kCW);
550 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
551 }
552
testOp8d(skiatest::Reporter * reporter,const char * filename)553 static void testOp8d(skiatest::Reporter* reporter, const char* filename) {
554 SkPath path, pathB;
555 path.addRect(0, 0, 640, 480);
556 pathB.moveTo(577330, 1971.72f);
557 pathB.cubicTo(10.7082f, -116.596f, 262.057f, 45.6468f, 294.694f, 1.96237f);
558 pathB.close();
559 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
560 }
cubicOp25i(skiatest::Reporter * reporter,const char * filename)561 static void cubicOp25i(skiatest::Reporter* reporter, const char* filename) {
562 SkPath path, pathB;
563 path.setFillType(SkPathFillType::kWinding);
564 path.moveTo(0,1);
565 path.cubicTo(2,4, 5,0, 3,2);
566 path.close();
567 pathB.setFillType(SkPathFillType::kWinding);
568 pathB.moveTo(0,5);
569 pathB.cubicTo(2,3, 1,0, 4,2);
570 pathB.close();
571 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
572 }
573
cubicOp26d(skiatest::Reporter * reporter,const char * filename)574 static void cubicOp26d(skiatest::Reporter* reporter, const char* filename) {
575 SkPath path, pathB;
576 path.setFillType(SkPathFillType::kWinding);
577 path.moveTo(0,1);
578 path.cubicTo(3,4, 4,0, 3,2);
579 path.close();
580 pathB.setFillType(SkPathFillType::kWinding);
581 pathB.moveTo(0,4);
582 pathB.cubicTo(2,3, 1,0, 4,3);
583 pathB.close();
584 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
585 }
586
cubicOp27d(skiatest::Reporter * reporter,const char * filename)587 static void cubicOp27d(skiatest::Reporter* reporter, const char* filename) {
588 SkPath path, pathB;
589 path.setFillType(SkPathFillType::kWinding);
590 path.moveTo(0,1);
591 path.cubicTo(3,6, 1,0, 5,2);
592 path.close();
593 pathB.setFillType(SkPathFillType::kWinding);
594 pathB.moveTo(0,1);
595 pathB.cubicTo(2,5, 1,0, 6,3);
596 pathB.close();
597 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
598 }
599
cubicOp28u(skiatest::Reporter * reporter,const char * filename)600 static void cubicOp28u(skiatest::Reporter* reporter, const char* filename) {
601 SkPath path, pathB;
602 path.setFillType(SkPathFillType::kWinding);
603 path.moveTo(0,1);
604 path.cubicTo(1,4, 6,0, 3,2);
605 path.close();
606 pathB.setFillType(SkPathFillType::kWinding);
607 pathB.moveTo(0,6);
608 pathB.cubicTo(2,3, 1,0, 4,1);
609 pathB.close();
610 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
611 }
612
cubicOp29d(skiatest::Reporter * reporter,const char * filename)613 static void cubicOp29d(skiatest::Reporter* reporter, const char* filename) {
614 SkPath path, pathB;
615 path.setFillType(SkPathFillType::kWinding);
616 path.moveTo(0,1);
617 path.cubicTo(2,5, 6,0, 4,2);
618 path.close();
619 pathB.setFillType(SkPathFillType::kWinding);
620 pathB.moveTo(0,6);
621 pathB.cubicTo(2,4, 1,0, 5,2);
622 pathB.close();
623 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
624 }
625
cubicOp30d(skiatest::Reporter * reporter,const char * filename)626 static void cubicOp30d(skiatest::Reporter* reporter, const char* filename) {
627 SkPath path, pathB;
628 path.setFillType(SkPathFillType::kWinding);
629 path.moveTo(0,1);
630 path.cubicTo(2,5, 6,0, 5,3);
631 path.close();
632 pathB.setFillType(SkPathFillType::kWinding);
633 pathB.moveTo(0,6);
634 pathB.cubicTo(3,5, 1,0, 5,2);
635 pathB.close();
636 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
637 }
638
cubicOp31d(skiatest::Reporter * reporter,const char * filename)639 static void cubicOp31d(skiatest::Reporter* reporter, const char* filename) {
640 SkPath path, pathB;
641 path.setFillType(SkPathFillType::kWinding);
642 path.moveTo(0,2);
643 path.cubicTo(0,3, 2,1, 4,0);
644 path.close();
645 pathB.setFillType(SkPathFillType::kWinding);
646 pathB.moveTo(1,2);
647 pathB.cubicTo(0,4, 2,0, 3,0);
648 pathB.close();
649 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
650 }
651
cubicOp31u(skiatest::Reporter * reporter,const char * filename)652 static void cubicOp31u(skiatest::Reporter* reporter, const char* filename) {
653 SkPath path, pathB;
654 path.setFillType(SkPathFillType::kWinding);
655 path.moveTo(0,2);
656 path.cubicTo(0,3, 2,1, 4,0);
657 path.close();
658 pathB.setFillType(SkPathFillType::kWinding);
659 pathB.moveTo(1,2);
660 pathB.cubicTo(0,4, 2,0, 3,0);
661 pathB.close();
662 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
663 }
664
cubicOp31x(skiatest::Reporter * reporter,const char * filename)665 static void cubicOp31x(skiatest::Reporter* reporter, const char* filename) {
666 SkPath path, pathB;
667 path.setFillType(SkPathFillType::kWinding);
668 path.moveTo(0,2);
669 path.cubicTo(0,3, 2,1, 4,0);
670 path.close();
671 pathB.setFillType(SkPathFillType::kWinding);
672 pathB.moveTo(1,2);
673 pathB.cubicTo(0,4, 2,0, 3,0);
674 pathB.close();
675 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
676 }
677
cubicOp32d(skiatest::Reporter * reporter,const char * filename)678 static void cubicOp32d(skiatest::Reporter* reporter, const char* filename) {
679 SkPath path, pathB;
680 path.setFillType(SkPathFillType::kWinding);
681 path.moveTo(0,1);
682 path.cubicTo(1,2, 6,0, 3,1);
683 path.close();
684 pathB.setFillType(SkPathFillType::kWinding);
685 pathB.moveTo(0,6);
686 pathB.cubicTo(1,3, 1,0, 2,1);
687 pathB.close();
688 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
689 }
690
cubicOp33i(skiatest::Reporter * reporter,const char * filename)691 static void cubicOp33i(skiatest::Reporter* reporter, const char* filename) {
692 SkPath path, pathB;
693 path.setFillType(SkPathFillType::kWinding);
694 path.moveTo(0,1);
695 path.cubicTo(1,2, 6,0, 3,1);
696 path.close();
697 pathB.setFillType(SkPathFillType::kWinding);
698 pathB.moveTo(0,6);
699 pathB.cubicTo(1,3, 1,0, 2,1);
700 pathB.close();
701 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
702 }
703
cubicOp34d(skiatest::Reporter * reporter,const char * filename)704 static void cubicOp34d(skiatest::Reporter* reporter, const char* filename) {
705 SkPath path, pathB;
706 path.setFillType(SkPathFillType::kWinding);
707 path.moveTo(0,1);
708 path.cubicTo(3,5, 2,1, 3,1);
709 path.close();
710 pathB.setFillType(SkPathFillType::kWinding);
711 pathB.moveTo(1,2);
712 pathB.cubicTo(1,3, 1,0, 5,3);
713 pathB.close();
714 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
715 }
716
cubicOp35d(skiatest::Reporter * reporter,const char * filename)717 static void cubicOp35d(skiatest::Reporter* reporter, const char* filename) {
718 SkPath path, pathB;
719 path.setFillType(SkPathFillType::kWinding);
720 path.moveTo(0,1);
721 path.cubicTo(1,5, 2,1, 4,0);
722 path.close();
723 pathB.setFillType(SkPathFillType::kWinding);
724 pathB.moveTo(1,2);
725 pathB.cubicTo(0,4, 1,0, 5,1);
726 pathB.close();
727 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
728 }
729
cubicOp36u(skiatest::Reporter * reporter,const char * filename)730 static void cubicOp36u(skiatest::Reporter* reporter, const char* filename) {
731 SkPath path, pathB;
732 path.setFillType(SkPathFillType::kWinding);
733 path.moveTo(0,1);
734 path.cubicTo(1,6, 2,0, 5,1);
735 path.close();
736 pathB.setFillType(SkPathFillType::kWinding);
737 pathB.moveTo(0,2);
738 pathB.cubicTo(1,5, 1,0, 6,1);
739 pathB.close();
740 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
741 }
742
cubicOp37d(skiatest::Reporter * reporter,const char * filename)743 static void cubicOp37d(skiatest::Reporter* reporter, const char* filename) {
744 SkPath path, pathB;
745 path.setFillType(SkPathFillType::kWinding);
746 path.moveTo(0,1);
747 path.cubicTo(2,6, 6,1, 4,3);
748 path.close();
749 pathB.setFillType(SkPathFillType::kWinding);
750 pathB.moveTo(1,6);
751 pathB.cubicTo(3,4, 1,0, 6,2);
752 pathB.close();
753 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
754 }
755
cubicOp38d(skiatest::Reporter * reporter,const char * filename)756 static void cubicOp38d(skiatest::Reporter* reporter, const char* filename) {
757 SkPath path, pathB;
758 path.setFillType(SkPathFillType::kWinding);
759 path.moveTo(0,1);
760 path.cubicTo(0,6, 3,2, 4,1);
761 path.close();
762 pathB.setFillType(SkPathFillType::kWinding);
763 pathB.moveTo(2,3);
764 pathB.cubicTo(1,4, 1,0, 6,0);
765 pathB.close();
766 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
767 }
768
cubicOp39d(skiatest::Reporter * reporter,const char * filename)769 static void cubicOp39d(skiatest::Reporter* reporter, const char* filename) {
770 SkPath path, pathB;
771 path.setFillType(SkPathFillType::kWinding);
772 path.moveTo(0,1);
773 path.cubicTo(2,3, 5,1, 4,3);
774 path.close();
775 pathB.setFillType(SkPathFillType::kWinding);
776 pathB.moveTo(1,5);
777 pathB.cubicTo(3,4, 1,0, 3,2);
778 pathB.close();
779 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
780 }
781
cubicOp40d(skiatest::Reporter * reporter,const char * filename)782 static void cubicOp40d(skiatest::Reporter* reporter, const char* filename) {
783 SkPath path, pathB;
784 path.setFillType(SkPathFillType::kWinding);
785 path.moveTo(0,1);
786 path.cubicTo(1,5, 3,2, 4,2);
787 path.close();
788 pathB.setFillType(SkPathFillType::kWinding);
789 pathB.moveTo(2,3);
790 pathB.cubicTo(2,4, 1,0, 5,1);
791 pathB.close();
792 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
793 }
794
cubicOp41i(skiatest::Reporter * reporter,const char * filename)795 static void cubicOp41i(skiatest::Reporter* reporter, const char* filename) {
796 SkPath path, pathB;
797 path.setFillType(SkPathFillType::kWinding);
798 path.moveTo(0,1);
799 path.cubicTo(2,6, 4,3, 6,4);
800 path.close();
801 pathB.setFillType(SkPathFillType::kWinding);
802 pathB.moveTo(3,4);
803 pathB.cubicTo(4,6, 1,0, 6,2);
804 pathB.close();
805 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
806 }
807
cubicOp42d(skiatest::Reporter * reporter,const char * filename)808 static void cubicOp42d(skiatest::Reporter* reporter, const char* filename) {
809 SkPath path, pathB;
810 path.setFillType(SkPathFillType::kWinding);
811 path.moveTo(0,1);
812 path.cubicTo(1,2, 6,5, 5,4);
813 path.close();
814 pathB.setFillType(SkPathFillType::kWinding);
815 pathB.moveTo(5,6);
816 pathB.cubicTo(4,5, 1,0, 2,1);
817 pathB.close();
818 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
819 }
820
cubicOp43d(skiatest::Reporter * reporter,const char * filename)821 static void cubicOp43d(skiatest::Reporter* reporter, const char* filename) {
822 SkPath path, pathB;
823 path.setFillType(SkPathFillType::kWinding);
824 path.moveTo(0,2);
825 path.cubicTo(1,2, 4,0, 3,1);
826 path.close();
827 pathB.setFillType(SkPathFillType::kWinding);
828 pathB.moveTo(0,4);
829 pathB.cubicTo(1,3, 2,0, 2,1);
830 pathB.close();
831 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
832 }
833
cubicOp44d(skiatest::Reporter * reporter,const char * filename)834 static void cubicOp44d(skiatest::Reporter* reporter, const char* filename) {
835 SkPath path, pathB;
836 path.setFillType(SkPathFillType::kWinding);
837 path.moveTo(0,2);
838 path.cubicTo(3,6, 4,0, 3,2);
839 path.close();
840 pathB.setFillType(SkPathFillType::kWinding);
841 pathB.moveTo(0,4);
842 pathB.cubicTo(2,3, 2,0, 6,3);
843 pathB.close();
844 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
845 }
846
cubicOp45d(skiatest::Reporter * reporter,const char * filename)847 static void cubicOp45d(skiatest::Reporter* reporter, const char* filename) {
848 SkPath path, pathB;
849 path.setFillType(SkPathFillType::kWinding);
850 path.moveTo(0,2);
851 path.cubicTo(2,4, 4,0, 3,2);
852 path.close();
853 pathB.setFillType(SkPathFillType::kWinding);
854 pathB.moveTo(0,4);
855 pathB.cubicTo(2,3, 2,0, 4,2);
856 pathB.close();
857 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
858 }
859
cubicOp46d(skiatest::Reporter * reporter,const char * filename)860 static void cubicOp46d(skiatest::Reporter* reporter, const char* filename) {
861 SkPath path, pathB;
862 path.setFillType(SkPathFillType::kWinding);
863 path.moveTo(0,2);
864 path.cubicTo(3,5, 5,0, 4,2);
865 path.close();
866 pathB.setFillType(SkPathFillType::kWinding);
867 pathB.moveTo(0,5);
868 pathB.cubicTo(2,4, 2,0, 5,3);
869 pathB.close();
870 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
871 }
872
cubicOp47d(skiatest::Reporter * reporter,const char * filename)873 static void cubicOp47d(skiatest::Reporter* reporter, const char* filename) {
874 SkPath path, pathB;
875 path.setFillType(SkPathFillType::kWinding);
876 path.moveTo(0,1);
877 path.cubicTo(1,6, 6,2, 5,4);
878 path.close();
879 pathB.setFillType(SkPathFillType::kWinding);
880 pathB.moveTo(2,6);
881 pathB.cubicTo(4,5, 1,0, 6,1);
882 pathB.close();
883 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
884 }
885
cubicOp48d(skiatest::Reporter * reporter,const char * filename)886 static void cubicOp48d(skiatest::Reporter* reporter, const char* filename) {
887 SkPath path, pathB;
888 path.setFillType(SkPathFillType::kWinding);
889 path.moveTo(0,2);
890 path.cubicTo(2,3, 5,1, 3,2);
891 path.close();
892 pathB.setFillType(SkPathFillType::kWinding);
893 pathB.moveTo(1,5);
894 pathB.cubicTo(2,3, 2,0, 3,2);
895 pathB.close();
896 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
897 }
898
cubicOp49d(skiatest::Reporter * reporter,const char * filename)899 static void cubicOp49d(skiatest::Reporter* reporter, const char* filename) {
900 SkPath path, pathB;
901 path.setFillType(SkPathFillType::kWinding);
902 path.moveTo(0,2);
903 path.cubicTo(1,5, 3,2, 4,1);
904 path.close();
905 pathB.setFillType(SkPathFillType::kWinding);
906 pathB.moveTo(2,3);
907 pathB.cubicTo(1,4, 2,0, 5,1);
908 pathB.close();
909 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
910 }
911
cubicOp50d(skiatest::Reporter * reporter,const char * filename)912 static void cubicOp50d(skiatest::Reporter* reporter, const char* filename) {
913 SkPath path, pathB;
914 path.setFillType(SkPathFillType::kWinding);
915 path.moveTo(0,3);
916 path.cubicTo(1,6, 5,0, 5,1);
917 path.close();
918 pathB.setFillType(SkPathFillType::kWinding);
919 pathB.moveTo(0,5);
920 pathB.cubicTo(1,5, 3,0, 6,1);
921 pathB.close();
922 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
923 }
924
cubicOp51d(skiatest::Reporter * reporter,const char * filename)925 static void cubicOp51d(skiatest::Reporter* reporter, const char* filename) {
926 SkPath path, pathB;
927 path.setFillType(SkPathFillType::kWinding);
928 path.moveTo(0,3);
929 path.cubicTo(1,2, 4,1, 6,0);
930 path.close();
931 pathB.setFillType(SkPathFillType::kWinding);
932 pathB.moveTo(1,4);
933 pathB.cubicTo(0,6, 3,0, 2,1);
934 pathB.close();
935 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
936 }
937
cubicOp52d(skiatest::Reporter * reporter,const char * filename)938 static void cubicOp52d(skiatest::Reporter* reporter, const char* filename) {
939 SkPath path, pathB;
940 path.setFillType(SkPathFillType::kWinding);
941 path.moveTo(0,2);
942 path.cubicTo(1,2, 5,4, 4,3);
943 path.close();
944 pathB.setFillType(SkPathFillType::kWinding);
945 pathB.moveTo(4,5);
946 pathB.cubicTo(3,4, 2,0, 2,1);
947 pathB.close();
948 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
949 }
950
cubicOp53d(skiatest::Reporter * reporter,const char * filename)951 static void cubicOp53d(skiatest::Reporter* reporter, const char* filename) {
952 SkPath path, pathB;
953 path.setFillType(SkPathFillType::kWinding);
954 path.moveTo(0,3);
955 path.cubicTo(1,2, 5,3, 2,1);
956 path.close();
957 pathB.setFillType(SkPathFillType::kWinding);
958 pathB.moveTo(3,5);
959 pathB.cubicTo(1,2, 3,0, 2,1);
960 pathB.close();
961 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
962 }
963
cubicOp54d(skiatest::Reporter * reporter,const char * filename)964 static void cubicOp54d(skiatest::Reporter* reporter, const char* filename) {
965 SkPath path, pathB;
966 path.setFillType(SkPathFillType::kWinding);
967 path.moveTo(0,4);
968 path.cubicTo(1,3, 5,4, 4,2);
969 path.close();
970 pathB.setFillType(SkPathFillType::kWinding);
971 pathB.moveTo(4,5);
972 pathB.cubicTo(2,4, 4,0, 3,1);
973 pathB.close();
974 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
975 }
976
cubicOp55d(skiatest::Reporter * reporter,const char * filename)977 static void cubicOp55d(skiatest::Reporter* reporter, const char* filename) {
978 SkPath path, pathB;
979 path.setFillType(SkPathFillType::kWinding);
980 path.moveTo(0,5);
981 path.cubicTo(1,3, 3,2, 5,0);
982 path.close();
983 pathB.setFillType(SkPathFillType::kWinding);
984 pathB.moveTo(2,3);
985 pathB.cubicTo(0,5, 5,0, 3,1);
986 pathB.close();
987 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
988 }
989
cubicOp56d(skiatest::Reporter * reporter,const char * filename)990 static void cubicOp56d(skiatest::Reporter* reporter, const char* filename) {
991 SkPath path, pathB;
992 path.setFillType(SkPathFillType::kWinding);
993 path.moveTo(0,1);
994 path.cubicTo(2,6, 5,0, 2,1);
995 path.close();
996 pathB.setFillType(SkPathFillType::kWinding);
997 pathB.moveTo(0,5);
998 pathB.cubicTo(1,2, 1,0, 6,2);
999 pathB.close();
1000 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1001 }
1002
cubicOp57d(skiatest::Reporter * reporter,const char * filename)1003 static void cubicOp57d(skiatest::Reporter* reporter, const char* filename) {
1004 SkPath path, pathB;
1005 path.setFillType(SkPathFillType::kWinding);
1006 path.moveTo(0,5);
1007 path.cubicTo(0,5, 5,4, 6,4);
1008 path.close();
1009 pathB.setFillType(SkPathFillType::kWinding);
1010 pathB.moveTo(4,5);
1011 pathB.cubicTo(4,6, 5,0, 5,0);
1012 pathB.close();
1013 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1014 }
1015
cubicOp58d(skiatest::Reporter * reporter,const char * filename)1016 static void cubicOp58d(skiatest::Reporter* reporter, const char* filename) {
1017 SkPath path, pathB;
1018 path.setFillType(SkPathFillType::kWinding);
1019 path.moveTo(0,5);
1020 path.cubicTo(3,4, 6,5, 5,3);
1021 path.close();
1022 pathB.setFillType(SkPathFillType::kWinding);
1023 pathB.moveTo(5,6);
1024 pathB.cubicTo(3,5, 5,0, 4,3);
1025 pathB.close();
1026 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1027 }
1028
cubicOp59d(skiatest::Reporter * reporter,const char * filename)1029 static void cubicOp59d(skiatest::Reporter* reporter, const char* filename) {
1030 SkPath path, pathB;
1031 path.setFillType(SkPathFillType::kWinding);
1032 path.moveTo(0,1);
1033 path.cubicTo(5,6, 4,0, 4,1);
1034 path.close();
1035 pathB.setFillType(SkPathFillType::kWinding);
1036 pathB.moveTo(0,4);
1037 pathB.cubicTo(1,4, 1,0, 6,5);
1038 pathB.close();
1039 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1040 }
1041
cubicOp60d(skiatest::Reporter * reporter,const char * filename)1042 static void cubicOp60d(skiatest::Reporter* reporter, const char* filename) {
1043 SkPath path, pathB;
1044 path.setFillType(SkPathFillType::kWinding);
1045 path.moveTo(0,2);
1046 path.cubicTo(4,6, 6,0, 5,2);
1047 path.close();
1048 pathB.setFillType(SkPathFillType::kWinding);
1049 pathB.moveTo(0,6);
1050 pathB.cubicTo(2,5, 2,0, 6,4);
1051 pathB.close();
1052 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1053 }
1054
cubicOp61d(skiatest::Reporter * reporter,const char * filename)1055 static void cubicOp61d(skiatest::Reporter* reporter, const char* filename) {
1056 SkPath path, pathB;
1057 path.setFillType(SkPathFillType::kWinding);
1058 path.moveTo(1,2);
1059 path.cubicTo(0,5, 3,2, 6,1);
1060 path.close();
1061 pathB.setFillType(SkPathFillType::kWinding);
1062 pathB.moveTo(2,3);
1063 pathB.cubicTo(1,6, 2,1, 5,0);
1064 pathB.close();
1065 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1066 }
1067
cubicOp62d(skiatest::Reporter * reporter,const char * filename)1068 static void cubicOp62d(skiatest::Reporter* reporter, const char* filename) {
1069 SkPath path, pathB;
1070 path.setFillType(SkPathFillType::kWinding);
1071 path.moveTo(1,3);
1072 path.cubicTo(5,6, 5,3, 5,4);
1073 path.close();
1074 pathB.setFillType(SkPathFillType::kWinding);
1075 pathB.moveTo(3,5);
1076 pathB.cubicTo(4,5, 3,1, 6,5);
1077 pathB.close();
1078 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1079 }
1080
cubicOp63d(skiatest::Reporter * reporter,const char * filename)1081 static void cubicOp63d(skiatest::Reporter* reporter, const char* filename) {
1082 SkPath path, pathB;
1083 path.setFillType(SkPathFillType::kWinding);
1084 path.moveTo(2,3);
1085 path.cubicTo(0,4, 3,2, 5,3);
1086 path.close();
1087 pathB.setFillType(SkPathFillType::kWinding);
1088 pathB.moveTo(2,3);
1089 pathB.cubicTo(3,5, 3,2, 4,0);
1090 pathB.close();
1091 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1092 }
1093
cubicOp64d(skiatest::Reporter * reporter,const char * filename)1094 static void cubicOp64d(skiatest::Reporter* reporter, const char* filename) {
1095 SkPath path, pathB;
1096 path.moveTo(0,1);
1097 path.cubicTo(0,1, 1,0, 3,0);
1098 path.lineTo(0,1);
1099 path.close();
1100 pathB.moveTo(0,1);
1101 pathB.cubicTo(0,3, 1,0, 1,0);
1102 pathB.lineTo(0,1);
1103 pathB.close();
1104 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1105 }
1106
cubicOp65d(skiatest::Reporter * reporter,const char * filename)1107 static void cubicOp65d(skiatest::Reporter* reporter, const char* filename) {
1108 SkPath path, pathB;
1109 path.moveTo(0,1);
1110 path.cubicTo(1,5, 1,0, 1,0);
1111 path.lineTo(0,1);
1112 path.close();
1113 pathB.moveTo(0,1);
1114 pathB.cubicTo(0,1, 1,0, 5,1);
1115 pathB.lineTo(0,1);
1116 pathB.close();
1117 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1118 }
1119
rectOp1d(skiatest::Reporter * reporter,const char * filename)1120 static void rectOp1d(skiatest::Reporter* reporter, const char* filename) {
1121 SkPath path, pathB;
1122 path.moveTo(0,1);
1123 path.cubicTo(0,1, 1,0, 3,0);
1124 path.lineTo(0,1);
1125 path.close();
1126 pathB.moveTo(0,1);
1127 pathB.cubicTo(0,3, 1,0, 1,0);
1128 pathB.lineTo(0,1);
1129 pathB.close();
1130 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1131 }
1132
cubicOp66u(skiatest::Reporter * reporter,const char * filename)1133 static void cubicOp66u(skiatest::Reporter* reporter, const char* filename) {
1134 SkPath path, pathB;
1135 path.setFillType(SkPathFillType::kWinding);
1136 path.moveTo(0,1);
1137 path.cubicTo(2,6, 4,2, 5,3);
1138 path.close();
1139 pathB.setFillType(SkPathFillType::kWinding);
1140 pathB.moveTo(2,4);
1141 pathB.cubicTo(3,5, 1,0, 6,2);
1142 pathB.close();
1143 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1144 }
1145
cubicOp67u(skiatest::Reporter * reporter,const char * filename)1146 static void cubicOp67u(skiatest::Reporter* reporter, const char* filename) {
1147 SkPath path, pathB;
1148 path.moveTo(3,5);
1149 path.cubicTo(1,6, 5,0, 3,1);
1150 path.lineTo(3,5);
1151 path.close();
1152 pathB.moveTo(0,5);
1153 pathB.cubicTo(1,3, 5,3, 6,1);
1154 pathB.lineTo(0,5);
1155 pathB.close();
1156 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1157 }
1158
cubicOp68u(skiatest::Reporter * reporter,const char * filename)1159 static void cubicOp68u(skiatest::Reporter* reporter, const char* filename) {
1160 SkPath path, pathB;
1161 path.moveTo(0,5);
1162 path.cubicTo(4,5, 4,1, 5,0);
1163 path.close();
1164 pathB.moveTo(1,4);
1165 pathB.cubicTo(0,5, 5,0, 5,4);
1166 pathB.close();
1167 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1168 }
1169
cubicOp69d(skiatest::Reporter * reporter,const char * filename)1170 static void cubicOp69d(skiatest::Reporter* reporter, const char* filename) {
1171 SkPath path, pathB;
1172 path.moveTo(1,3);
1173 path.cubicTo(0,1, 3,1, 2,0);
1174 path.close();
1175 pathB.moveTo(1,3);
1176 pathB.cubicTo(0,2, 3,1, 1,0);
1177 pathB.close();
1178 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1179 }
1180
1181 SkPathOp ops[] = {
1182 kUnion_SkPathOp,
1183 kXOR_SkPathOp,
1184 kReverseDifference_SkPathOp,
1185 kXOR_SkPathOp,
1186 kReverseDifference_SkPathOp,
1187 };
1188
rRect1(skiatest::Reporter * reporter,const char * filename)1189 static void rRect1(skiatest::Reporter* reporter, const char* filename) {
1190 SkScalar xA = 0.65f;
1191 SkScalar xB = 10.65f;
1192 SkScalar xC = 20.65f;
1193 SkScalar xD = 30.65f;
1194 SkScalar xE = 40.65f;
1195 SkScalar xF = 50.65f;
1196
1197 SkScalar yA = 0.65f;
1198 SkScalar yB = 10.65f;
1199 SkScalar yC = 20.65f;
1200 SkScalar yD = 30.65f;
1201 SkScalar yE = 40.65f;
1202 SkScalar yF = 50.65f;
1203 SkPath paths[5];
1204 SkRect rects[5];
1205 rects[0].setLTRB(xB, yB, xE, yE);
1206 paths[0].addRoundRect(rects[0], SkIntToScalar(5), SkIntToScalar(5)); // red
1207 rects[1].setLTRB(xA, yA, xD, yD);
1208 paths[1].addRoundRect(rects[1], SkIntToScalar(5), SkIntToScalar(5)); // green
1209 rects[2].setLTRB(xC, yA, xF, yD);
1210 paths[2].addRoundRect(rects[2], SkIntToScalar(5), SkIntToScalar(5)); // blue
1211 rects[3].setLTRB(xA, yC, xD, yF);
1212 paths[3].addRoundRect(rects[3], SkIntToScalar(5), SkIntToScalar(5)); // yellow
1213 rects[4].setLTRB(xC, yC, xF, yF);
1214 paths[4].addRoundRect(rects[4], SkIntToScalar(5), SkIntToScalar(5)); // cyan
1215 SkPath path;
1216 path.setFillType(SkPathFillType::kInverseEvenOdd);
1217 for (int index = 0; index < 5; ++index) {
1218 SkString uniqueName;
1219 uniqueName.printf("%s%d", filename, index);
1220 testPathOp(reporter, path, paths[index], ops[index], uniqueName.c_str());
1221 REPORTER_ASSERT(reporter, Op(path, paths[index], ops[index], &path));
1222 }
1223 }
1224
skp1(skiatest::Reporter * reporter,const char * filename)1225 static void skp1(skiatest::Reporter* reporter, const char* filename) {
1226 SkPath path;
1227 path.setFillType(SkPathFillType::kEvenOdd);
1228 path.moveTo(189,7);
1229 path.cubicTo(189,5.34314585f, 190.34314f,4, 192,4);
1230 path.lineTo(243,4);
1231 path.cubicTo(244.65686f,4, 246,5.34314585f, 246,7);
1232 path.lineTo(246,21);
1233 path.cubicTo(246,22.6568546f, 244.65686f,24, 243,24);
1234 path.lineTo(192,24);
1235 path.cubicTo(190.34314f,24, 189,22.6568546f, 189,21);
1236 path.lineTo(189,7);
1237 path.close();
1238 path.moveTo(191,8);
1239 path.cubicTo(191,6.89543009f, 191.895432f,6, 193,6);
1240 path.lineTo(242,6);
1241 path.cubicTo(243.104568f,6, 244,6.89543009f, 244,8);
1242 path.lineTo(244,20);
1243 path.cubicTo(244,21.1045704f, 243.104568f,22, 242,22);
1244 path.lineTo(193,22);
1245 path.cubicTo(191.895432f,22, 191,21.1045704f, 191,20);
1246 path.lineTo(191,8);
1247 path.close();
1248 SkPath pathB;
1249 pathB.setFillType(SkPathFillType::kWinding);
1250 pathB.moveTo(189,4);
1251 pathB.lineTo(199,14);
1252 pathB.lineTo(236,14);
1253 pathB.lineTo(246,4);
1254 pathB.lineTo(189,4);
1255 pathB.close();
1256 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1257 }
1258
skp2(skiatest::Reporter * reporter,const char * filename)1259 static void skp2(skiatest::Reporter* reporter, const char* filename) {
1260 SkPath path;
1261 path.setFillType(SkPathFillType::kEvenOdd);
1262 path.moveTo(253.000000f, 11757.0000f);
1263 path.lineTo(253.000000f, 222.000000f);
1264 path.lineTo(823.000000f, 222.000000f);
1265 path.lineTo(823.000000f, 11757.0000f);
1266 path.lineTo(253.000000f, 11757.0000f);
1267 path.close();
1268 SkPath pathB;
1269 pathB.setFillType(SkPathFillType::kWinding);
1270 pathB.moveTo(258.000000f, 1028.00000f);
1271 pathB.lineTo(258.000000f, 1027.00000f);
1272 pathB.lineTo(823.000000f, 1027.00000f);
1273 pathB.lineTo(823.000000f, 1028.00000f);
1274 pathB.lineTo(258.000000f, 1028.00000f);
1275 pathB.close();
1276 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1277 }
1278
skp3(skiatest::Reporter * reporter,const char * filename)1279 static void skp3(skiatest::Reporter* reporter, const char* filename) {
1280 SkPath path;
1281 path.setFillType(SkPathFillType::kEvenOdd);
1282 path.moveTo(717.000000f, 507.000000f);
1283 path.lineTo(717.000000f, 425.000000f);
1284 path.lineTo(973.000000f, 425.000000f);
1285 path.lineTo(973.000000f, 507.000000f);
1286 path.quadTo(973.000000f, 508.242645f, 972.121582f, 509.121613f);
1287 path.quadTo(971.242615f, 510.000000f, 970.000000f, 510.000000f);
1288 path.lineTo(720.000000f, 510.000000f);
1289 path.quadTo(718.757385f, 510.000000f, 717.878418f, 509.121613f);
1290 path.quadTo(717.000000f, 508.242645f, 717.000000f, 507.000000f);
1291 path.close();
1292 path.moveTo(719.000000f, 426.000000f);
1293 path.lineTo(971.000000f, 426.000000f);
1294 path.lineTo(971.000000f, 506.000000f);
1295 path.cubicTo(971.000000f, 507.104584f, 970.104553f, 508.000000f, 969.000000f, 508.000000f);
1296 path.lineTo(721.000000f, 508.000000f);
1297 path.cubicTo(719.895447f, 508.000000f, 719.000000f, 507.104584f, 719.000000f, 506.000000f);
1298 path.lineTo(719.000000f, 426.000000f);
1299 path.close();
1300 SkPath pathB;
1301 pathB.setFillType(SkPathFillType::kWinding);
1302 pathB.moveTo(717.000000f, 510.000000f);
1303 pathB.lineTo(760.000000f, 467.000000f);
1304 pathB.lineTo(930.000000f, 467.000000f);
1305 pathB.lineTo(973.000000f, 510.000000f);
1306 pathB.lineTo(717.000000f, 510.000000f);
1307 pathB.close();
1308 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1309 }
1310
skp4(skiatest::Reporter * reporter,const char * filename)1311 static void skp4(skiatest::Reporter* reporter, const char* filename) {
1312 SkPath path;
1313 path.setFillType(SkPathFillType::kEvenOdd);
1314 path.moveTo(230.756805f, 591.756775f);
1315 path.quadTo(232.514725f, 590.000000f, 235.000000f, 590.000000f);
1316 path.lineTo(300.000000f, 590.000000f);
1317 path.quadTo(302.485291f, 590.000000f, 304.243195f, 591.756775f);
1318 path.quadTo(306.000000f, 593.514709f, 306.000000f, 596.000000f);
1319 path.lineTo(306.000000f, 617.000000f);
1320 path.lineTo(229.000000f, 617.000000f);
1321 path.lineTo(229.000000f, 596.000000f);
1322 path.quadTo(229.000000f, 593.514709f, 230.756805f, 591.756775f);
1323 path.close();
1324 path.moveTo(231.000000f, 597.000000f);
1325 path.cubicTo(231.000000f, 594.238586f, 233.238571f, 592.000000f, 236.000000f, 592.000000f);
1326 path.lineTo(299.000000f, 592.000000f);
1327 path.cubicTo(301.761414f, 592.000000f, 304.000000f, 594.238586f, 304.000000f, 597.000000f);
1328 path.lineTo(304.000000f, 616.000000f);
1329 path.lineTo(231.000000f, 616.000000f);
1330 path.lineTo(231.000000f, 597.000000f);
1331 path.close();
1332 SkPath pathB;
1333 pathB.setFillType(SkPathFillType::kWinding);
1334 pathB.moveTo(306.000000f, 590.000000f);
1335 pathB.lineTo(292.000000f, 604.000000f);
1336 pathB.lineTo(305.000000f, 617.000000f);
1337 pathB.lineTo(306.000000f, 617.000000f);
1338 pathB.lineTo(306.000000f, 590.000000f);
1339 pathB.close();
1340 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1341 }
1342
skp5(skiatest::Reporter * reporter,const char * filename)1343 static void skp5(skiatest::Reporter* reporter, const char* filename) {
1344 SkPath path;
1345 path.setFillType(SkPathFillType::kEvenOdd);
1346 path.moveTo(18.0000000f, 226.000000f);
1347 path.quadTo(14.6862917f, 226.000000f, 12.3423996f, 228.342407f);
1348 path.quadTo(10.0000000f, 230.686295f, 10.0000000f, 234.000000f);
1349 path.lineTo(10.0000000f, 253.000000f);
1350 path.lineTo(1247.00000f, 253.000000f);
1351 path.lineTo(1247.00000f, 234.000000f);
1352 path.quadTo(1247.00000f, 230.686295f, 1244.65759f, 228.342407f);
1353 path.quadTo(1242.31372f, 226.000000f, 1239.00000f, 226.000000f);
1354 path.lineTo(18.0000000f, 226.000000f);
1355 path.close();
1356 SkPath pathB;
1357 pathB.setFillType(SkPathFillType::kInverseWinding);
1358 pathB.moveTo(18.0000000f, 226.000000f);
1359 pathB.lineTo(1239.00000f, 226.000000f);
1360 pathB.cubicTo(1243.41833f, 226.000000f, 1247.00000f, 229.581726f, 1247.00000f, 234.000000f);
1361 pathB.lineTo(1247.00000f, 252.000000f);
1362 pathB.lineTo(10.0000000f, 252.000000f);
1363 pathB.lineTo(10.0000000f, 234.000000f);
1364 pathB.cubicTo(10.0000000f, 229.581726f, 13.5817204f, 226.000000f, 18.0000000f, 226.000000f);
1365 pathB.close();
1366 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1367 }
1368
cubicOp70d(skiatest::Reporter * reporter,const char * filename)1369 static void cubicOp70d(skiatest::Reporter* reporter, const char* filename) {
1370 SkPath path, pathB;
1371 path.setFillType(SkPathFillType::kWinding);
1372 path.moveTo(0,1);
1373 path.cubicTo(0,5, 4,0, 5,0);
1374 path.close();
1375 pathB.setFillType(SkPathFillType::kWinding);
1376 pathB.moveTo(0,4);
1377 pathB.cubicTo(0,5, 1,0, 5,0);
1378 pathB.close();
1379 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1380 }
1381
cubicOp71d(skiatest::Reporter * reporter,const char * filename)1382 static void cubicOp71d(skiatest::Reporter* reporter, const char* filename) {
1383 SkPath path, pathB;
1384 path.setFillType(SkPathFillType::kWinding);
1385 path.moveTo(0,1);
1386 path.cubicTo(0,5, 4,1, 6,4);
1387 path.close();
1388 pathB.setFillType(SkPathFillType::kWinding);
1389 pathB.moveTo(1,4);
1390 pathB.cubicTo(4,6, 1,0, 5,0);
1391 pathB.close();
1392 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1393 }
1394
cubicOp72i(skiatest::Reporter * reporter,const char * filename)1395 static void cubicOp72i(skiatest::Reporter* reporter, const char* filename) {
1396 SkPath path, pathB;
1397 path.setFillType(SkPathFillType::kWinding);
1398 path.moveTo(0,1);
1399 path.cubicTo(0,5, 5,2, 5,4);
1400 path.close();
1401 pathB.setFillType(SkPathFillType::kWinding);
1402 pathB.moveTo(2,5);
1403 pathB.cubicTo(4,5, 1,0, 5,0);
1404 pathB.close();
1405 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1406 }
1407
cubicOp73d(skiatest::Reporter * reporter,const char * filename)1408 static void cubicOp73d(skiatest::Reporter* reporter, const char* filename) {
1409 SkPath path, pathB;
1410 path.setFillType(SkPathFillType::kWinding);
1411 path.moveTo(0,1);
1412 path.cubicTo(3,4, 4,0, 6,4);
1413 path.lineTo(0,1);
1414 path.close();
1415 pathB.setFillType(SkPathFillType::kWinding);
1416 pathB.moveTo(0,4);
1417 pathB.cubicTo(4,6, 1,0, 4,3);
1418 pathB.lineTo(0,4);
1419 pathB.close();
1420 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1421 }
1422
cubicOp74d(skiatest::Reporter * reporter,const char * filename)1423 static void cubicOp74d(skiatest::Reporter* reporter, const char* filename) {
1424 SkPath path, pathB;
1425 path.setFillType(SkPathFillType::kWinding);
1426 path.moveTo(0,1);
1427 path.cubicTo(1,5, 5,1, 5,1);
1428 path.lineTo(0,1);
1429 path.close();
1430 pathB.setFillType(SkPathFillType::kWinding);
1431 pathB.moveTo(1,5);
1432 pathB.cubicTo(1,5, 1,0, 5,1);
1433 pathB.lineTo(1,5);
1434 pathB.close();
1435 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1436 }
1437
cubicOp75d(skiatest::Reporter * reporter,const char * filename)1438 static void cubicOp75d(skiatest::Reporter* reporter, const char* filename) {
1439 SkPath path, pathB;
1440 path.setFillType(SkPathFillType::kWinding);
1441 path.moveTo(0,1);
1442 path.cubicTo(0,4, 5,1, 6,4);
1443 path.lineTo(0,1);
1444 path.close();
1445 pathB.setFillType(SkPathFillType::kWinding);
1446 pathB.moveTo(1,5);
1447 pathB.cubicTo(4,6, 1,0, 4,0);
1448 pathB.lineTo(1,5);
1449 pathB.close();
1450 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1451 }
1452
cubicOp76u(skiatest::Reporter * reporter,const char * filename)1453 static void cubicOp76u(skiatest::Reporter* reporter, const char* filename) {
1454 SkPath path, pathB;
1455 path.setFillType(SkPathFillType::kWinding);
1456 path.moveTo(0,1);
1457 path.cubicTo(0,2, 2,0, 5,3);
1458 path.close();
1459 pathB.setFillType(SkPathFillType::kWinding);
1460 pathB.moveTo(0,2);
1461 pathB.cubicTo(3,5, 1,0, 2,0);
1462 pathB.close();
1463 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1464 }
1465
cubicOp77i(skiatest::Reporter * reporter,const char * filename)1466 static void cubicOp77i(skiatest::Reporter* reporter, const char* filename) {
1467 SkPath path, pathB;
1468 path.setFillType(SkPathFillType::kEvenOdd);
1469 path.moveTo(0,1);
1470 path.cubicTo(1,3, 2,0, 3,2);
1471 path.lineTo(0,1);
1472 path.close();
1473 pathB.setFillType(SkPathFillType::kEvenOdd);
1474 pathB.moveTo(0,2);
1475 pathB.cubicTo(2,3, 1,0, 3,1);
1476 pathB.lineTo(0,2);
1477 pathB.close();
1478 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1479 }
1480
cubicOp78u(skiatest::Reporter * reporter,const char * filename)1481 static void cubicOp78u(skiatest::Reporter* reporter, const char* filename) {
1482 SkPath path, pathB;
1483 path.setFillType(SkPathFillType::kEvenOdd);
1484 path.moveTo(1,6);
1485 path.cubicTo(1,6, 5,0, 6,1);
1486 path.lineTo(1,6);
1487 path.close();
1488 pathB.setFillType(SkPathFillType::kEvenOdd);
1489 pathB.moveTo(0,5);
1490 pathB.cubicTo(1,6, 6,1, 6,1);
1491 pathB.lineTo(0,5);
1492 pathB.close();
1493 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1494 }
1495
cubicOp79u(skiatest::Reporter * reporter,const char * filename)1496 static void cubicOp79u(skiatest::Reporter* reporter, const char* filename) {
1497 SkPath path, pathB;
1498 path.setFillType(SkPathFillType::kWinding);
1499 path.moveTo(0,1);
1500 path.cubicTo(1,3, 1,0, 6,4);
1501 path.close();
1502 pathB.setFillType(SkPathFillType::kWinding);
1503 pathB.moveTo(0,1);
1504 pathB.cubicTo(4,6, 1,0, 3,1);
1505 pathB.close();
1506 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1507 }
1508
cubicOp80i(skiatest::Reporter * reporter,const char * filename)1509 static void cubicOp80i(skiatest::Reporter* reporter, const char* filename) {
1510 SkPath path, pathB;
1511 path.setFillType(SkPathFillType::kWinding);
1512 path.moveTo(0,1);
1513 path.cubicTo(2,3, 2,1, 4,3);
1514 path.lineTo(0,1);
1515 path.close();
1516 pathB.setFillType(SkPathFillType::kWinding);
1517 pathB.moveTo(1,2);
1518 pathB.cubicTo(3,4, 1,0, 3,2);
1519 pathB.lineTo(1,2);
1520 pathB.close();
1521 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1522 }
1523
cubicOp81d(skiatest::Reporter * reporter,const char * filename)1524 static void cubicOp81d(skiatest::Reporter* reporter, const char* filename) {
1525 SkPath path, pathB;
1526 path.setFillType(SkPathFillType::kWinding);
1527 path.moveTo(0,1);
1528 path.cubicTo(4,6, 4,3, 5,4);
1529 path.close();
1530 pathB.setFillType(SkPathFillType::kWinding);
1531 pathB.moveTo(3,4);
1532 pathB.cubicTo(4,5, 1,0, 6,4);
1533 pathB.close();
1534 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1535 }
1536
cubicOp82i(skiatest::Reporter * reporter,const char * filename)1537 static void cubicOp82i(skiatest::Reporter* reporter, const char* filename) {
1538 SkPath path, pathB;
1539 path.setFillType(SkPathFillType::kEvenOdd);
1540 path.moveTo(0,1);
1541 path.cubicTo(2,3, 5,2, 3,0);
1542 path.lineTo(0,1);
1543 path.close();
1544 pathB.setFillType(SkPathFillType::kWinding);
1545 pathB.moveTo(2,5);
1546 pathB.cubicTo(0,3, 1,0, 3,2);
1547 pathB.lineTo(2,5);
1548 pathB.close();
1549 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1550 }
1551
cubicOp83i(skiatest::Reporter * reporter,const char * filename)1552 static void cubicOp83i(skiatest::Reporter* reporter, const char* filename) {
1553 SkPath path, pathB;
1554 path.setFillType(SkPathFillType::kWinding);
1555 path.moveTo(0,1);
1556 path.cubicTo(0,3, 2,1, 4,1);
1557 path.lineTo(0,1);
1558 path.close();
1559 pathB.setFillType(SkPathFillType::kWinding);
1560 pathB.moveTo(1,2);
1561 pathB.cubicTo(1,4, 1,0, 3,0);
1562 pathB.lineTo(1,2);
1563 pathB.close();
1564 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1565 }
1566
cubicOp84d(skiatest::Reporter * reporter,const char * filename)1567 static void cubicOp84d(skiatest::Reporter* reporter, const char* filename) {
1568 SkPath path, pathB;
1569 path.setFillType(SkPathFillType::kWinding);
1570 path.moveTo(0,4);
1571 path.cubicTo(2,3, 6,3, 3,2);
1572 path.close();
1573 pathB.setFillType(SkPathFillType::kWinding);
1574 pathB.moveTo(3,6);
1575 pathB.cubicTo(2,3, 4,0, 3,2);
1576 pathB.close();
1577 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1578 }
1579
skpClip1(skiatest::Reporter * reporter,const char * filename)1580 static void skpClip1(skiatest::Reporter* reporter, const char* filename) {
1581 SkPath path;
1582 path.setFillType(SkPathFillType::kEvenOdd);
1583 path.moveTo(1126.17114f, 877.171204f);
1584 path.quadTo(1127.34314f, 876.000000f, 1129.00000f, 876.000000f);
1585 path.lineTo(1243.00000f, 876.000000f);
1586 path.quadTo(1244.65686f, 876.000000f, 1245.82886f, 877.171204f);
1587 path.quadTo(1247.00000f, 878.343140f, 1247.00000f, 880.000000f);
1588 path.lineTo(1247.00000f, 907.000000f);
1589 path.lineTo(1246.00000f, 907.000000f);
1590 path.lineTo(1246.00000f, 880.000000f);
1591 path.cubicTo(1246.00000f, 878.343140f, 1244.65686f, 877.000000f, 1243.00000f, 877.000000f);
1592 path.lineTo(1129.00000f, 877.000000f);
1593 path.cubicTo(1127.34314f, 877.000000f, 1126.00000f, 878.343140f, 1126.00000f, 880.000000f);
1594 path.lineTo(1126.00000f, 907.000000f);
1595 path.lineTo(1125.00000f, 907.000000f);
1596 path.lineTo(1125.00000f, 880.000000f);
1597 path.quadTo(1125.00000f, 878.343140f, 1126.17114f, 877.171204f);
1598 path.close();
1599 SkPath pathB;
1600 pathB.setFillType(SkPathFillType::kWinding);
1601 pathB.moveTo(1247.00000f, 876.000000f);
1602 pathB.lineTo(1231.00000f, 892.000000f);
1603 pathB.lineTo(1246.00000f, 907.000000f);
1604 pathB.lineTo(1247.00000f, 907.000000f);
1605 pathB.lineTo(1247.00000f, 876.000000f);
1606 pathB.close();
1607 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1608 }
1609
skpClip2(skiatest::Reporter * reporter,const char * filename)1610 static void skpClip2(skiatest::Reporter* reporter, const char* filename) {
1611 SkPath path;
1612 path.setFillType(SkPathFillType::kEvenOdd);
1613 path.moveTo(134.000000f, 11414.0000f);
1614 path.cubicTo(131.990234f, 11414.0000f, 130.326660f, 11415.4824f, 130.042755f, 11417.4131f);
1615 path.cubicTo(130.233124f, 11418.3193f, 131.037079f, 11419.0000f, 132.000000f, 11419.0000f);
1616 path.lineTo(806.000000f, 11419.0000f);
1617 path.cubicTo(806.962891f, 11419.0000f, 807.766907f, 11418.3193f, 807.957275f, 11417.4131f);
1618 path.cubicTo(807.673401f, 11415.4824f, 806.009766f, 11414.0000f, 804.000000f, 11414.0000f);
1619 path.lineTo(134.000000f, 11414.0000f);
1620 path.close();
1621 SkPath pathB;
1622 pathB.setFillType(SkPathFillType::kInverseWinding);
1623 pathB.moveTo(132.000000f, 11415.0000f);
1624 pathB.lineTo(806.000000f, 11415.0000f);
1625 pathB.cubicTo(807.104553f, 11415.0000f, 808.000000f, 11415.4473f, 808.000000f, 11416.0000f);
1626 pathB.lineTo(808.000000f, 11417.0000f);
1627 pathB.cubicTo(808.000000f, 11418.1045f, 807.104553f, 11419.0000f, 806.000000f, 11419.0000f);
1628 pathB.lineTo(132.000000f, 11419.0000f);
1629 pathB.cubicTo(130.895432f, 11419.0000f, 130.000000f, 11418.1045f, 130.000000f, 11417.0000f);
1630 pathB.lineTo(130.000000f, 11416.0000f);
1631 pathB.cubicTo(130.000000f, 11415.4473f, 130.895432f, 11415.0000f, 132.000000f, 11415.0000f);
1632 pathB.close();
1633 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1634 }
1635
skp96prezzi1(skiatest::Reporter * reporter,const char * filename)1636 static void skp96prezzi1(skiatest::Reporter* reporter, const char* filename) {
1637 SkPath path;
1638 path.setFillType(SkPathFillType::kEvenOdd);
1639 path.moveTo(157.464005f, 670.463989f);
1640 path.quadTo(158.928925f, 669.000000f, 161.000000f, 669.000000f);
1641 path.lineTo(248.000000f, 669.000000f);
1642 path.quadTo(250.071075f, 669.000000f, 251.535995f, 670.463989f);
1643 path.quadTo(253.000000f, 671.928955f, 253.000000f, 674.000000f);
1644 path.lineTo(253.000000f, 706.000000f);
1645 path.lineTo(251.000000f, 706.000000f);
1646 path.lineTo(251.000000f, 675.000000f);
1647 path.cubicTo(251.000000f, 672.790833f, 249.209137f, 671.000000f, 247.000000f, 671.000000f);
1648 path.lineTo(162.000000f, 671.000000f);
1649 path.cubicTo(159.790863f, 671.000000f, 158.000000f, 672.790833f, 158.000000f, 675.000000f);
1650 path.lineTo(158.000000f, 706.000000f);
1651 path.lineTo(156.000000f, 706.000000f);
1652 path.lineTo(156.000000f, 674.000000f);
1653 path.quadTo(156.000000f, 671.928955f, 157.464005f, 670.463989f);
1654 path.close();
1655 SkPath pathB;
1656 pathB.setFillType(SkPathFillType::kWinding);
1657 pathB.moveTo(156.000000f, 669.000000f);
1658 pathB.lineTo(178.500000f, 691.500000f);
1659 pathB.lineTo(230.500000f, 691.500000f);
1660 pathB.lineTo(253.000000f, 669.000000f);
1661 pathB.lineTo(156.000000f, 669.000000f);
1662 pathB.close();
1663 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1664 }
1665
skpancestry_com1(skiatest::Reporter * reporter,const char * filename)1666 static void skpancestry_com1(skiatest::Reporter* reporter, const char* filename) {
1667 SkPath path;
1668 path.setFillType(SkPathFillType::kEvenOdd);
1669 path.moveTo(161.000000f, 925.000000f);
1670 path.cubicTo(159.874390f, 925.000000f, 158.835663f, 925.371948f, 158.000000f, 925.999634f);
1671 path.lineTo(158.000000f, 926.000000f);
1672 path.lineTo(1108.00000f, 926.000000f);
1673 path.lineTo(1108.00000f, 925.999634f);
1674 path.cubicTo(1107.16443f, 925.371948f, 1106.12561f, 925.000000f, 1105.00000f, 925.000000f);
1675 path.lineTo(161.000000f, 925.000000f);
1676 path.close();
1677 SkPath pathB;
1678 pathB.setFillType(SkPathFillType::kEvenOdd);
1679 pathB.moveTo(161.000000f, 926.000000f);
1680 pathB.lineTo(1105.00000f, 926.000000f);
1681 pathB.cubicTo(1107.20911f, 926.000000f, 1109.00000f, 927.790833f, 1109.00000f, 930.000000f);
1682 pathB.lineTo(1109.00000f, 956.000000f);
1683 pathB.cubicTo(1109.00000f, 958.209167f, 1107.20911f, 960.000000f, 1105.00000f, 960.000000f);
1684 pathB.lineTo(161.000000f, 960.000000f);
1685 pathB.cubicTo(158.790863f, 960.000000f, 157.000000f, 958.209167f, 157.000000f, 956.000000f);
1686 pathB.lineTo(157.000000f, 930.000000f);
1687 pathB.cubicTo(157.000000f, 927.790833f, 158.790863f, 926.000000f, 161.000000f, 926.000000f);
1688 pathB.close();
1689 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1690 }
1691
skpeldorado_com_ua1(skiatest::Reporter * reporter,const char * filename)1692 static void skpeldorado_com_ua1(skiatest::Reporter* reporter, const char* filename) {
1693 SkPath path;
1694 path.setFillType(SkPathFillType::kEvenOdd);
1695 path.moveTo(286.695129f, 291.000000f);
1696 path.lineTo(229.304855f, 561.000000f);
1697 path.lineTo(979.304871f, 561.000000f);
1698 path.lineTo(1036.69507f, 291.000000f);
1699 path.lineTo(286.695129f, 291.000000f);
1700 path.close();
1701 SkPath pathB;
1702 pathB.setFillType(SkPathFillType::kWinding);
1703 pathB.moveTo(1006.69513f, 291.000000f);
1704 pathB.cubicTo(1023.26367f, 291.000000f, 1033.84021f, 304.431458f, 1030.31836f, 321.000000f);
1705 pathB.lineTo(985.681519f, 531.000000f);
1706 pathB.cubicTo(982.159790f, 547.568542f, 965.873413f, 561.000000f, 949.304871f, 561.000000f);
1707 pathB.lineTo(259.304871f, 561.000000f);
1708 pathB.cubicTo(242.736313f, 561.000000f, 232.159805f, 547.568542f, 235.681549f, 531.000000f);
1709 pathB.lineTo(280.318420f, 321.000000f);
1710 pathB.cubicTo(283.840179f, 304.431458f, 300.126587f, 291.000000f, 316.695129f, 291.000000f);
1711 pathB.lineTo(1006.69513f, 291.000000f);
1712 pathB.close();
1713 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1714 }
1715
skpbyte_com1(skiatest::Reporter * reporter,const char * filename)1716 static void skpbyte_com1(skiatest::Reporter* reporter, const char* filename) {
1717 SkPath path;
1718 path.setFillType(SkPathFillType::kEvenOdd);
1719 path.moveTo(968.000000f, 14.0000000f);
1720 path.cubicTo(965.238586f, 14.0000000f, 963.000000f, 16.2385769f, 963.000000f, 19.0000000f);
1721 path.lineTo(963.000000f, 32.0000000f);
1722 path.cubicTo(963.000000f, 34.7614250f, 965.238586f, 37.0000000f, 968.000000f, 37.0000000f);
1723 path.lineTo(1034.00000f, 37.0000000f);
1724 path.cubicTo(1036.76147f, 37.0000000f, 1039.00000f, 34.7614250f, 1039.00000f, 32.0000000f);
1725 path.lineTo(1039.00000f, 19.0000000f);
1726 path.cubicTo(1039.00000f, 16.2385769f, 1036.76147f, 14.0000000f, 1034.00000f, 14.0000000f);
1727 path.lineTo(968.000000f, 14.0000000f);
1728 path.close();
1729 SkPath pathB;
1730 pathB.setFillType(SkPathFillType::kInverseWinding);
1731 pathB.moveTo(968.000000f, 14.0000000f);
1732 pathB.lineTo(1034.00000f, 14.0000000f);
1733 pathB.cubicTo(1036.76147f, 14.0000000f, 1039.00000f, 16.2385750f, 1039.00000f, 19.0000000f);
1734 pathB.lineTo(1039.00000f, 32.0000000f);
1735 pathB.cubicTo(1039.00000f, 34.2091408f, 1036.76147f, 36.0000000f, 1034.00000f, 36.0000000f);
1736 pathB.lineTo(968.000000f, 36.0000000f);
1737 pathB.cubicTo(965.238586f, 36.0000000f, 963.000000f, 34.2091408f, 963.000000f, 32.0000000f);
1738 pathB.lineTo(963.000000f, 19.0000000f);
1739 pathB.cubicTo(963.000000f, 16.2385750f, 965.238586f, 14.0000000f, 968.000000f, 14.0000000f);
1740 pathB.close();
1741 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1742 }
1743
skphealth_com76(skiatest::Reporter * reporter,const char * filename)1744 static void skphealth_com76(skiatest::Reporter* reporter, const char* filename) {
1745 SkPath path;
1746 path.setFillType(SkPathFillType::kEvenOdd);
1747 path.moveTo(708.099182f, 7.09919119f);
1748 path.lineTo(708.099182f, 7.09920025f);
1749 path.quadTo(704.000000f, 11.2010098f, 704.000000f, 17.0000000f);
1750 path.lineTo(704.000000f, 33.0000000f);
1751 path.lineTo(705.000000f, 33.0000000f);
1752 path.lineTo(705.000000f, 17.0000000f);
1753 path.cubicTo(705.000000f, 13.4101496f, 706.455078f, 10.1601505f, 708.807617f, 7.80761385f);
1754 path.lineTo(708.099182f, 7.09919119f);
1755 path.close();
1756 SkPath pathB;
1757 pathB.setFillType(SkPathFillType::kWinding);
1758 pathB.moveTo(704.000000f, 3.00000000f);
1759 pathB.lineTo(704.000000f, 33.0000000f);
1760 pathB.lineTo(705.000000f, 33.0000000f);
1761 pathB.lineTo(719.500000f, 3.00000000f);
1762 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1763 }
1764
skpahrefs_com88(skiatest::Reporter * reporter,const char * filename)1765 static void skpahrefs_com88(skiatest::Reporter* reporter, const char* filename) {
1766 SkPath path;
1767 path.setFillType(SkPathFillType::kEvenOdd);
1768 path.moveTo(1099.82886f, 7.17117119f);
1769 path.lineTo(1099.12134f, 7.87867832f);
1770 path.cubicTo(1099.66418f, 8.42157173f, 1100.00000f, 9.17157173f, 1100.00000f, 10.0000000f);
1771 path.lineTo(1100.00000f, 28.0000000f);
1772 path.cubicTo(1100.00000f, 29.6568546f, 1098.65686f, 31.0000000f, 1097.00000f, 31.0000000f);
1773 path.lineTo(1088.00000f, 31.0000000f);
1774 path.lineTo(1088.00000f, 32.0000000f);
1775 path.lineTo(1097.00000f, 32.0000000f);
1776 path.quadTo(1098.65686f, 32.0000000f, 1099.82886f, 30.8288002f);
1777 path.quadTo(1101.00000f, 29.6568546f, 1101.00000f, 28.0000000f);
1778 path.lineTo(1101.00000f, 10.0000000f);
1779 path.quadTo(1101.00000f, 8.34314537f, 1099.82886f, 7.17119980f);
1780 path.lineTo(1099.82886f, 7.17117119f);
1781 path.close();
1782 SkPath pathB;
1783 pathB.setFillType(SkPathFillType::kWinding);
1784 pathB.moveTo(1101.00000f, 6.00000000f);
1785 pathB.lineTo(1088.00000f, 6.00000000f);
1786 pathB.lineTo(1088.00000f, 19.0000000f);
1787 pathB.lineTo(1101.00000f, 32.0000000f);
1788 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1789 }
1790
skpahrefs_com29(skiatest::Reporter * reporter,const char * filename)1791 static void skpahrefs_com29(skiatest::Reporter* reporter, const char* filename) {
1792 SkPath path;
1793 path.setFillType(SkPathFillType::kEvenOdd);
1794 path.moveTo(1037.17114f, 7.17119980f);
1795 path.quadTo(1038.34314f, 6.00000000f, 1040.00000f, 6.00000000f);
1796 path.lineTo(1074.00000f, 6.00000000f);
1797 path.lineTo(1074.00000f, 32.0000000f);
1798 path.lineTo(1040.00000f, 32.0000000f);
1799 path.quadTo(1038.34314f, 32.0000000f, 1037.17114f, 30.8288002f);
1800 path.quadTo(1036.00000f, 29.6568546f, 1036.00000f, 28.0000000f);
1801 path.lineTo(1036.00000f, 10.0000000f);
1802 path.quadTo(1036.00000f, 8.34314537f, 1037.17114f, 7.17119980f);
1803 path.close();
1804 path.moveTo(1037.00000f, 10.0000000f);
1805 path.cubicTo(1037.00000f, 8.34314537f, 1038.34314f, 7.00000000f, 1040.00000f, 7.00000000f);
1806 path.lineTo(1073.00000f, 7.00000000f);
1807 path.lineTo(1073.00000f, 31.0000000f);
1808 path.lineTo(1040.00000f, 31.0000000f);
1809 path.cubicTo(1038.34314f, 31.0000000f, 1037.00000f, 29.6568546f, 1037.00000f, 28.0000000f);
1810 path.lineTo(1037.00000f, 10.0000000f);
1811 path.close();
1812 SkPath pathB;
1813 pathB.setFillType(SkPathFillType::kWinding);
1814 pathB.moveTo(1036.00000f, 32.0000000f);
1815 pathB.lineTo(1049.00000f, 19.0000000f);
1816 pathB.lineTo(1073.00000f, 31.0000000f);
1817 pathB.lineTo(1074.00000f, 32.0000000f);
1818 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1819 }
1820
cubicOp85d(skiatest::Reporter * reporter,const char * filename)1821 static void cubicOp85d(skiatest::Reporter* reporter, const char* filename) {
1822 SkPath path;
1823 path.setFillType(SkPathFillType::kWinding);
1824 path.moveTo(0,1);
1825 path.cubicTo(1,6, 1,0, 6,2);
1826 path.close();
1827 SkPath pathB;
1828 pathB.setFillType(SkPathFillType::kWinding);
1829 pathB.moveTo(0,1);
1830 pathB.cubicTo(2,6, 1,0, 6,1);
1831 pathB.close();
1832 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1833 }
1834
skpkkiste_to98(skiatest::Reporter * reporter,const char * filename)1835 static void skpkkiste_to98(skiatest::Reporter* reporter, const char* filename) {
1836 SkPath path;
1837 path.setFillType(SkPathFillType::kEvenOdd);
1838 path.moveTo(96, 122);
1839 path.cubicTo(94.6192932f, 122, 93.3692932f, 122.559647f, 92.4644699f, 123.46447f);
1840 path.lineTo(94.1715698f, 125.17157f);
1841 path.cubicTo(94.8954315f, 124.447708f, 95.8954315f, 124, 97, 124);
1842 path.lineTo(257, 124);
1843 path.cubicTo(258.104553f, 124, 259.104584f, 124.447708f, 259.82843f, 125.17157f);
1844 path.lineTo(261.535522f, 123.46447f);
1845 path.cubicTo(260.630707f, 122.559647f, 259.380707f, 122, 258, 122);
1846 path.lineTo(96, 122);
1847 path.close();
1848 SkPath pathB;
1849 pathB.setFillType(SkPathFillType::kWinding);
1850 pathB.moveTo(258, 122);
1851 pathB.cubicTo(260.761414f, 122, 263, 124.238579f, 263, 127);
1852 pathB.lineTo(263, 284);
1853 pathB.cubicTo(263, 286.761414f, 260.761414f, 289, 258, 289);
1854 pathB.lineTo(96, 289);
1855 pathB.cubicTo(93.2385788f, 289, 91, 286.761414f, 91, 284);
1856 pathB.lineTo(91, 127);
1857 pathB.cubicTo(91, 124.238579f, 93.2385788f, 122, 96, 122);
1858 pathB.lineTo(258, 122);
1859 pathB.close();
1860 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1861 }
1862
issue1417(skiatest::Reporter * reporter,const char * filename)1863 static void issue1417(skiatest::Reporter* reporter, const char* filename) {
1864 SkPath path1;
1865 path1.moveTo(122.58908843994140625f, 82.2836456298828125f);
1866 path1.quadTo(129.8215789794921875f, 80, 138, 80);
1867 path1.quadTo(147.15692138671875f, 80, 155.1280364990234375f, 82.86279296875f);
1868 path1.lineTo(161.1764678955078125f, 100);
1869 path1.lineTo(161.1764678955078125f, 100);
1870 path1.lineTo(115.29412078857421875f, 100);
1871 path1.lineTo(115.29412078857421875f, 100);
1872 path1.lineTo(122.58908843994140625f, 82.2836456298828125f);
1873 path1.lineTo(122.58908843994140625f, 82.2836456298828125f);
1874 path1.close();
1875 path1.moveTo(98.68194580078125f, 140.343841552734375f);
1876 path1.lineTo(115.29412078857421875f, 100);
1877 path1.lineTo(115.29412078857421875f, 100);
1878 path1.lineTo(97.9337615966796875f, 100);
1879 path1.lineTo(97.9337615966796875f, 100);
1880 path1.quadTo(88, 112.94264984130859375f, 88, 130);
1881 path1.quadTo(88, 131.544830322265625f, 88.08148956298828125f, 133.0560302734375f);
1882 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1883 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1884 path1.close();
1885 path1.moveTo(136.969696044921875f, 166.6666717529296875f);
1886 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1887 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1888 path1.lineTo(93.45894622802734375f, 153.02825927734375f);
1889 path1.lineTo(93.45894622802734375f, 153.02825927734375f);
1890 path1.quadTo(96.94116973876953125f, 159.65185546875f, 102.64466094970703125f, 165.3553466796875f);
1891 path1.quadTo(110.7924652099609375f, 173.503143310546875f, 120.8179779052734375f, 177.1177825927734375f);
1892 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1893 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1894 path1.close();
1895 path1.moveTo(175.8309783935546875f, 141.5211334228515625f);
1896 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1897 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1898 path1.lineTo(153.15728759765625f, 177.7956390380859375f);
1899 path1.lineTo(153.15728759765625f, 177.7956390380859375f);
1900 path1.quadTo(164.392425537109375f, 174.318267822265625f, 173.3553466796875f, 165.3553466796875f);
1901 path1.quadTo(177.805816650390625f, 160.9048614501953125f, 180.90380859375f, 155.8941650390625f);
1902 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1903 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1904 path1.close();
1905 path1.moveTo(175.8309783935546875f, 141.5211334228515625f);
1906 path1.lineTo(187.8782806396484375f, 133.7258148193359375f);
1907 path1.lineTo(187.8782806396484375f, 133.7258148193359375f);
1908 path1.quadTo(188, 131.8880615234375f, 188, 130);
1909 path1.quadTo(188, 112.942657470703125f, 178.0662384033203125f, 100);
1910 path1.lineTo(161.1764678955078125f, 100);
1911 path1.lineTo(161.1764678955078125f, 100);
1912 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1913 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1914 path1.close();
1915
1916 SkPath path2;
1917 path2.moveTo(174.117645263671875f, 100);
1918 path2.lineTo(161.1764678955078125f, 100);
1919 path2.lineTo(161.1764678955078125f, 100);
1920 path2.lineTo(155.1280364990234375f, 82.86279296875f);
1921 path2.lineTo(155.1280364990234375f, 82.86279296875f);
1922 path2.quadTo(153.14971923828125f, 82.15229034423828125f, 151.098419189453125f, 81.618133544921875f);
1923 path2.lineTo(143.5294189453125f, 100);
1924 path2.lineTo(143.5294189453125f, 100);
1925 path2.lineTo(161.1764678955078125f, 100);
1926 path2.lineTo(161.1764678955078125f, 100);
1927 path2.lineTo(168.23529052734375f, 120);
1928 path2.lineTo(168.23529052734375f, 120);
1929 path2.lineTo(181.1764678955078125f, 120);
1930 path2.lineTo(181.1764678955078125f, 120);
1931 path2.lineTo(186.3661956787109375f, 134.7042236328125f);
1932 path2.lineTo(186.3661956787109375f, 134.7042236328125f);
1933 path2.lineTo(187.8782806396484375f, 133.7258148193359375f);
1934 path2.lineTo(187.8782806396484375f, 133.7258148193359375f);
1935 path2.quadTo(188, 131.8880615234375f, 188, 130);
1936 path2.quadTo(188, 124.80947113037109375f, 187.080169677734375f, 120);
1937 path2.lineTo(181.1764678955078125f, 120);
1938 path2.lineTo(181.1764678955078125f, 120);
1939 path2.lineTo(174.117645263671875f, 100);
1940 path2.lineTo(174.117645263671875f, 100);
1941 path2.close();
1942 path2.moveTo(88.91983795166015625f, 120);
1943 path2.lineTo(107.0588226318359375f, 120);
1944 path2.lineTo(107.0588226318359375f, 120);
1945 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1946 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1947 path2.lineTo(88.08148956298828125f, 133.0560302734375f);
1948 path2.lineTo(88.08148956298828125f, 133.0560302734375f);
1949 path2.quadTo(88, 131.544830322265625f, 88, 130);
1950 path2.quadTo(88, 124.80951690673828125f, 88.91983795166015625f, 120);
1951 path2.close();
1952 path2.moveTo(96.67621612548828125f, 145.21490478515625f);
1953 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1954 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1955 path2.lineTo(120.68767547607421875f, 155.4727783203125f);
1956 path2.lineTo(120.68767547607421875f, 155.4727783203125f);
1957 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1958 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1959 path2.lineTo(96.67621612548828125f, 145.21490478515625f);
1960 path2.lineTo(96.67621612548828125f, 145.21490478515625f);
1961 path2.close();
1962 path2.moveTo(113.232177734375f, 173.5789947509765625f);
1963 path2.quadTo(116.8802642822265625f, 175.69805908203125f, 120.8179779052734375f, 177.1177825927734375f);
1964 path2.lineTo(132.2864990234375f, 169.6969757080078125f);
1965 path2.lineTo(132.2864990234375f, 169.6969757080078125f);
1966 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1967 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1968 path2.lineTo(113.232177734375f, 173.5789947509765625f);
1969 path2.lineTo(113.232177734375f, 173.5789947509765625f);
1970 path2.close();
1971 // FIXME : difficult data, circle back later
1972 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
1973 }
1974
issue1418(skiatest::Reporter * reporter,const char * filename)1975 static void issue1418(skiatest::Reporter* reporter, const char* filename) {
1976 SkPath path1;
1977 path1.moveTo(0, 0);
1978 path1.lineTo(1, 0);
1979 path1.lineTo(1, 0);
1980 path1.lineTo(1, 1);
1981 path1.lineTo(1, 1);
1982 path1.lineTo(0, 1);
1983 path1.lineTo(0, 1);
1984 path1.lineTo(0, 0);
1985 path1.lineTo(0, 0);
1986 path1.close();
1987
1988 SkPath path2;
1989 path2.moveTo(0.64644664525985717773f, -0.35355341434478759766f);
1990 path2.quadTo(0.79289329051971435547f, -0.50000005960464477539f, 1.0000001192092895508f, -0.50000005960464477539f);
1991 path2.quadTo(1.2071068286895751953f, -0.50000005960464477539f, 1.3535535335540771484f, -0.35355341434478759766f);
1992 path2.quadTo(1.5000001192092895508f, -0.20710679888725280762f, 1.5000001192092895508f, 0);
1993 path2.quadTo(1.5000001192092895508f, 0.20710679888725280762f, 1.3535535335540771484f, 0.35355341434478759766f);
1994 path2.quadTo(1.2071068286895751953f, 0.50000005960464477539f, 1.0000001192092895508f, 0.50000005960464477539f);
1995 path2.quadTo(0.79289329051971435547f, 0.50000005960464477539f, 0.64644664525985717773f, 0.35355341434478759766f);
1996 path2.quadTo(0.50000005960464477539f, 0.20710679888725280762f, 0.50000005960464477539f, 0);
1997 path2.quadTo(0.50000005960464477539f, -0.20710679888725280762f, 0.64644664525985717773f, -0.35355341434478759766f);
1998 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
1999 }
2000
cubicOp85i(skiatest::Reporter * reporter,const char * filename)2001 static void cubicOp85i(skiatest::Reporter* reporter, const char* filename) {
2002 SkPath path, pathB;
2003 path.setFillType(SkPathFillType::kWinding);
2004 path.moveTo(3, 4);
2005 path.cubicTo(1, 5, 4, 3, 6, 4);
2006 path.close();
2007 pathB.setFillType(SkPathFillType::kWinding);
2008 pathB.moveTo(3, 4);
2009 pathB.cubicTo(4, 6, 4, 3, 5, 1);
2010 pathB.close();
2011 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2012 }
2013
issue1418b(skiatest::Reporter * reporter,const char * filename)2014 static void issue1418b(skiatest::Reporter* reporter, const char* filename) {
2015 SkPath path1;
2016 path1.moveTo(0, 0);
2017 path1.lineTo(1, 0);
2018 path1.lineTo(1, 1);
2019 path1.lineTo(0, 1);
2020 path1.lineTo(0, 0);
2021 path1.close();
2022 path1.setFillType(SkPathFillType::kWinding);
2023 SkPath path2;
2024 path2.moveTo(0.646446645f, -0.353553414f);
2025 path2.quadTo(0.792893291f, -0.50000006f, 1.00000012f, -0.50000006f);
2026 path2.quadTo(1.20710683f, -0.50000006f, 1.35355353f, -0.353553414f);
2027 path2.quadTo(1.50000012f, -0.207106799f, 1.50000012f, 0);
2028 path2.quadTo(1.50000012f, 0.207106799f, 1.35355353f, 0.353553414f);
2029 path2.quadTo(1.20710683f, 0.50000006f, 1.00000012f, 0.50000006f);
2030 path2.quadTo(0.792893291f, 0.50000006f, 0.646446645f, 0.353553414f);
2031 path2.quadTo(0.50000006f, 0.207106799f, 0.50000006f, 0);
2032 path2.quadTo(0.50000006f, -0.207106799f, 0.646446645f, -0.353553414f);
2033 path2.close();
2034 path2.moveTo(1.00000012f, 0.50000006f);
2035 path2.lineTo(1.00000012f, 1.00000012f);
2036 path2.lineTo(0.50000006f, 1.00000012f);
2037 path2.quadTo(0.50000006f, 0.792893291f, 0.646446645f, 0.646446645f);
2038 path2.quadTo(0.792893291f, 0.50000006f, 1.00000012f, 0.50000006f);
2039 path2.close();
2040 path2.setFillType(SkPathFillType::kEvenOdd);
2041 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
2042 }
2043
rectOp1i(skiatest::Reporter * reporter,const char * filename)2044 static void rectOp1i(skiatest::Reporter* reporter, const char* filename) {
2045 SkPath path, pathB;
2046 path.setFillType(SkPathFillType::kWinding);
2047 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
2048 path.addRect(2, 2, 4, 4, SkPathDirection::kCW);
2049 pathB.setFillType(SkPathFillType::kWinding);
2050 pathB.addRect(0, 0, 1, 1, SkPathDirection::kCW);
2051 pathB.addRect(0, 0, 2, 2, SkPathDirection::kCW);
2052 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2053 }
2054
rectOp2i(skiatest::Reporter * reporter,const char * filename)2055 static void rectOp2i(skiatest::Reporter* reporter, const char* filename) {
2056 SkPath path, pathB;
2057 path.setFillType(SkPathFillType::kEvenOdd);
2058 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
2059 path.addRect(0, 0, 3, 3, SkPathDirection::kCW);
2060 pathB.setFillType(SkPathFillType::kWinding);
2061 pathB.addRect(0, 0, 2, 2, SkPathDirection::kCW);
2062 pathB.addRect(0, 0, 2, 2, SkPathDirection::kCW);
2063 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2064 }
2065
rectOp3x(skiatest::Reporter * reporter,const char * filename)2066 static void rectOp3x(skiatest::Reporter* reporter, const char* filename) {
2067 SkPath path, pathB;
2068 path.setFillType(SkPathFillType::kEvenOdd);
2069 path.moveTo(0, 0);
2070 path.lineTo(3, 0);
2071 path.lineTo(3, 3);
2072 path.lineTo(0, 3);
2073 path.close();
2074 path.moveTo(2, 2);
2075 path.lineTo(3, 2);
2076 path.lineTo(3, 3);
2077 path.lineTo(2, 3);
2078 path.close();
2079 pathB.setFillType(SkPathFillType::kWinding);
2080 pathB.moveTo(1, 1);
2081 pathB.lineTo(3, 1);
2082 pathB.lineTo(3, 3);
2083 pathB.lineTo(1, 3);
2084 pathB.close();
2085 pathB.moveTo(2, 2);
2086 pathB.lineTo(3, 2);
2087 pathB.lineTo(3, 3);
2088 pathB.lineTo(2, 3);
2089 pathB.close();
2090 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
2091 }
2092
issue1435(skiatest::Reporter * reporter,const char * filename)2093 static void issue1435(skiatest::Reporter* reporter, const char* filename) {
2094 SkPath path1;
2095 path1.moveTo(160, 60);
2096 path1.lineTo(220, 230);
2097 path1.lineTo(60, 120);
2098 path1.lineTo(260, 120);
2099 path1.lineTo(90, 230);
2100 path1.lineTo(160, 60);
2101 path1.close();
2102 path1.setFillType(SkPathFillType::kEvenOdd);
2103
2104 SkPath path2;
2105 path2.moveTo(142.589081f, 102.283646f);
2106 path2.quadTo(149.821579f, 100, 158, 100);
2107 path2.quadTo(167.156921f, 100, 175.128036f, 102.862793f);
2108 path2.lineTo(181.176468f, 120);
2109 path2.lineTo(135.294128f, 120);
2110 path2.lineTo(142.589081f, 102.283646f);
2111 path2.close();
2112 path2.moveTo(118.681946f, 160.343842f);
2113 path2.lineTo(135.294128f, 120);
2114 path2.lineTo(117.933762f, 120);
2115 path2.quadTo(108, 132.942657f, 108, 150);
2116 path2.quadTo(108, 151.54483f, 108.08149f, 153.05603f);
2117 path2.lineTo(118.681946f, 160.343842f);
2118 path2.close();
2119 path2.moveTo(156.969696f, 186.666672f);
2120 path2.lineTo(118.681946f, 160.343842f);
2121 path2.lineTo(113.458946f, 173.028259f);
2122 path2.quadTo(116.94117f, 179.651855f, 122.644661f, 185.355347f);
2123 path2.quadTo(130.792465f, 193.503143f, 140.817978f, 197.117783f);
2124 path2.lineTo(156.969696f, 186.666672f);
2125 path2.close();
2126 path2.moveTo(195.830978f, 161.521133f);
2127 path2.lineTo(156.969696f, 186.666672f);
2128 path2.lineTo(173.157288f, 197.795639f);
2129 path2.quadTo(184.392426f, 194.318268f, 193.355347f, 185.355347f);
2130 path2.quadTo(197.805817f, 180.904861f, 200.903809f, 175.894165f);
2131 path2.lineTo(195.830978f, 161.521133f);
2132 path2.close();
2133 path2.moveTo(195.830978f, 161.521133f);
2134 path2.lineTo(207.878281f, 153.725815f);
2135 path2.quadTo(208, 151.888062f, 208, 150);
2136 path2.quadTo(208, 132.942657f, 198.066238f, 120);
2137 path2.lineTo(181.176468f, 120);
2138 path2.lineTo(195.830978f, 161.521133f);
2139 path2.close();
2140 path2.setFillType(SkPathFillType::kEvenOdd);
2141 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
2142 }
2143
skpkkiste_to716(skiatest::Reporter * reporter,const char * filename)2144 static void skpkkiste_to716(skiatest::Reporter* reporter, const char* filename) {
2145 SkPath path;
2146 path.setFillType(SkPathFillType::kEvenOdd);
2147 path.moveTo(1173, 284);
2148 path.cubicTo(1173, 285.125824f, 1173.37207f, 286.164734f, 1174, 287.000488f);
2149 path.lineTo(1174, 123.999496f);
2150 path.cubicTo(1173.37207f, 124.835243f, 1173, 125.874168f, 1173, 127);
2151 path.lineTo(1173, 284);
2152 path.close();
2153 SkPath pathB;
2154 pathB.setFillType(SkPathFillType::kWinding);
2155 pathB.moveTo(1340, 122);
2156 pathB.cubicTo(1342.76147f, 122, 1345, 124.238579f, 1345, 127);
2157 pathB.lineTo(1345, 284);
2158 pathB.cubicTo(1345, 286.761414f, 1342.76147f, 289, 1340, 289);
2159 pathB.lineTo(1178, 289);
2160 pathB.cubicTo(1175.23853f, 289, 1173, 286.761414f, 1173, 284);
2161 pathB.lineTo(1173, 127);
2162 pathB.cubicTo(1173, 124.238579f, 1175.23853f, 122, 1178, 122);
2163 pathB.lineTo(1340, 122);
2164 pathB.close();
2165 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2166 }
2167
loopEdge1(skiatest::Reporter * reporter,const char * filename)2168 static void loopEdge1(skiatest::Reporter* reporter, const char* filename) {
2169 SkPath path;
2170 path.setFillType(SkPathFillType::kEvenOdd);
2171 path.moveTo(0,0);
2172 path.lineTo(3,0);
2173 path.lineTo(3,2);
2174 path.lineTo(1,2);
2175 path.lineTo(1,1);
2176 path.lineTo(2,1);
2177 path.lineTo(2,3);
2178 path.lineTo(0,3);
2179 path.close();
2180 SkPath pathB;
2181 pathB.setFillType(SkPathFillType::kEvenOdd);
2182 pathB.moveTo(1,2);
2183 pathB.lineTo(2,2);
2184 pathB.lineTo(2,4);
2185 pathB.lineTo(1,4);
2186 pathB.close();
2187 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2188 }
2189
loopEdge2(skiatest::Reporter * reporter,const char * filename)2190 static void loopEdge2(skiatest::Reporter* reporter, const char* filename) {
2191 SkPath path;
2192 path.setFillType(SkPathFillType::kEvenOdd);
2193 path.moveTo(0,0);
2194 path.lineTo(3,0);
2195 path.lineTo(3,2);
2196 path.lineTo(1,2);
2197 path.lineTo(1,1);
2198 path.lineTo(2,1);
2199 path.lineTo(2,3);
2200 path.lineTo(0,3);
2201 path.close();
2202 SkPath pathB;
2203 pathB.setFillType(SkPathFillType::kEvenOdd);
2204 pathB.moveTo(1 - 1e-6f,2);
2205 pathB.lineTo(2 - 1e-6f,2);
2206 pathB.lineTo(2 - 1e-6f,4);
2207 pathB.lineTo(1 - 1e-6f,4);
2208 pathB.close();
2209 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2210 }
2211
cubicOp86i(skiatest::Reporter * reporter,const char * filename)2212 static void cubicOp86i(skiatest::Reporter* reporter, const char* filename) {
2213 SkPath path, pathB;
2214 path.setFillType(SkPathFillType::kWinding);
2215 path.moveTo(0, 4);
2216 path.cubicTo(3, 4, 6, 2, 5, 2);
2217 path.close();
2218 pathB.setFillType(SkPathFillType::kEvenOdd);
2219 pathB.moveTo(2, 6);
2220 pathB.cubicTo(2, 5, 4, 0, 4, 3);
2221 pathB.close();
2222 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2223 }
2224
cubicOp87u(skiatest::Reporter * reporter,const char * filename)2225 static void cubicOp87u(skiatest::Reporter* reporter, const char* filename) {
2226 SkPath path, pathB;
2227 path.setFillType(SkPathFillType::kWinding);
2228 path.moveTo(0,1);
2229 path.cubicTo(0,2, 2,0, 6,4);
2230 path.close();
2231 pathB.setFillType(SkPathFillType::kWinding);
2232 pathB.moveTo(0,2);
2233 pathB.cubicTo(4,6, 1,0, 2,0);
2234 pathB.close();
2235 markTestFlakyForPathKit();
2236 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2237 }
2238
cubicOp88u(skiatest::Reporter * reporter,const char * filename)2239 static void cubicOp88u(skiatest::Reporter* reporter, const char* filename) {
2240 SkPath path, pathB;
2241 path.setFillType(SkPathFillType::kWinding);
2242 path.moveTo(0,1);
2243 path.cubicTo(2,5, 5,0, 6,4);
2244 path.close();
2245 pathB.setFillType(SkPathFillType::kWinding);
2246 pathB.moveTo(0,5);
2247 pathB.cubicTo(4,6, 1,0, 5,2);
2248 pathB.close();
2249 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2250 }
2251
cubicOp89u(skiatest::Reporter * reporter,const char * filename)2252 static void cubicOp89u(skiatest::Reporter* reporter, const char* filename) {
2253 SkPath path, pathB;
2254 path.setFillType(SkPathFillType::kWinding);
2255 path.moveTo(0, 3);
2256 path.cubicTo(1, 6, 5, 0, 6, 3);
2257 path.close();
2258 pathB.setFillType(SkPathFillType::kWinding);
2259 pathB.moveTo(0, 5);
2260 pathB.cubicTo(3, 6, 3, 0, 6, 1);
2261 pathB.close();
2262 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2263 }
2264
cubicOp90u(skiatest::Reporter * reporter,const char * filename)2265 static void cubicOp90u(skiatest::Reporter* reporter, const char* filename) {
2266 SkPath path, pathB;
2267 path.setFillType(SkPathFillType::kEvenOdd);
2268 path.moveTo(0, 5);
2269 path.cubicTo(1, 2, 5, 2, 4, 1);
2270 path.close();
2271 pathB.setFillType(SkPathFillType::kEvenOdd);
2272 pathB.moveTo(2, 5);
2273 pathB.cubicTo(1, 4, 5, 0, 2, 1);
2274 pathB.close();
2275 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2276 }
2277
cubicOp91u(skiatest::Reporter * reporter,const char * filename)2278 static void cubicOp91u(skiatest::Reporter* reporter, const char* filename) {
2279 SkPath path, pathB;
2280 path.setFillType(SkPathFillType::kWinding);
2281 path.moveTo(1, 6);
2282 path.cubicTo(0, 3, 6, 3, 5, 0);
2283 path.close();
2284 pathB.setFillType(SkPathFillType::kWinding);
2285 pathB.moveTo(3, 6);
2286 pathB.cubicTo(0, 5, 6, 1, 3, 0);
2287 pathB.close();
2288 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2289 }
2290
skpaaalgarve_org53(skiatest::Reporter * reporter,const char * filename)2291 static void skpaaalgarve_org53(skiatest::Reporter* reporter, const char* filename) {
2292 SkPath path;
2293 path.setFillType(SkPathFillType::kEvenOdd);
2294 path.moveTo(-1.24344979e-014f, 348);
2295 path.lineTo(258, 348);
2296 path.lineTo(258, 322);
2297 path.quadTo(258, 317.857849f, 255.072006f, 314.928009f);
2298 path.quadTo(252.142136f, 312, 248, 312);
2299 path.lineTo(1.77635684e-015f, 312);
2300 path.lineTo(-1.24344979e-014f, 348);
2301 path.close();
2302 SkPath pathB;
2303 pathB.setFillType(SkPathFillType::kWinding);
2304 pathB.moveTo(0, 312);
2305 pathB.lineTo(258, 312);
2306 pathB.lineTo(258, 348);
2307 pathB.lineTo(0, 348);
2308 pathB.close();
2309 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2310 }
2311
skpabcspark_ca103(skiatest::Reporter * reporter,const char * filename)2312 static void skpabcspark_ca103(skiatest::Reporter* reporter, const char* filename) {
2313 SkPath path;
2314 path.setFillType(SkPathFillType::kEvenOdd);
2315 path.moveTo(1.99840144e-015f, 494);
2316 path.lineTo(97, 494);
2317 path.quadTo(100.313705f, 494, 102.6576f, 491.657593f);
2318 path.quadTo(105, 489.313721f, 105, 486);
2319 path.lineTo(105, 425);
2320 path.quadTo(105, 421.686279f, 102.6576f, 419.342407f);
2321 path.quadTo(100.313705f, 417, 97, 417);
2322 path.lineTo(2.22044605e-016f, 417);
2323 path.lineTo(1.99840144e-015f, 494);
2324 path.close();
2325 SkPath pathB;
2326 pathB.setFillType(SkPathFillType::kWinding);
2327 pathB.moveTo(0, 417);
2328 pathB.lineTo(105, 417);
2329 pathB.lineTo(105, 494);
2330 pathB.lineTo(0, 494);
2331 pathB.close();
2332 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2333 }
2334
skpacesoftech_com47(skiatest::Reporter * reporter,const char * filename)2335 static void skpacesoftech_com47(skiatest::Reporter* reporter, const char* filename) {
2336 SkPath path;
2337 path.setFillType(SkPathFillType::kEvenOdd);
2338 path.moveTo(670.537415f, 285);
2339 path.lineTo(670.387451f, 285);
2340 path.lineTo(596.315186f, 314.850708f);
2341 path.lineTo(626.19696f, 389);
2342 path.lineTo(626.346863f, 389);
2343 path.lineTo(700.419189f, 359.149261f);
2344 path.lineTo(670.537415f, 285);
2345 path.close();
2346 SkPath pathB;
2347 pathB.setFillType(SkPathFillType::kWinding);
2348 pathB.moveTo(663.318542f, 374.100616f);
2349 pathB.quadTo(647.950989f, 380.293671f, 632.705322f, 373.806305f);
2350 pathB.quadTo(617.459595f, 367.318909f, 611.266541f, 351.951355f);
2351 pathB.quadTo(605.073486f, 336.58374f, 611.560913f, 321.338074f);
2352 pathB.quadTo(618.048279f, 306.092407f, 633.415833f, 299.899353f);
2353 pathB.quadTo(648.783447f, 293.706299f, 664.029114f, 300.193665f);
2354 pathB.quadTo(679.27478f, 306.68103f, 685.467834f, 322.048645f);
2355 pathB.quadTo(691.660889f, 337.416199f, 685.173523f, 352.661896f);
2356 pathB.quadTo(678.686157f, 367.907562f, 663.318542f, 374.100616f);
2357 pathB.close();
2358 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2359 }
2360
skpact_com43(skiatest::Reporter * reporter,const char * filename)2361 static void skpact_com43(skiatest::Reporter* reporter, const char* filename) {
2362 SkPath path;
2363 path.setFillType(SkPathFillType::kEvenOdd);
2364 path.moveTo(1.45716772e-016f, 924.336121f);
2365 path.lineTo(-1.11022302e-016f, 920);
2366 path.lineTo(6, 920);
2367 path.lineTo(6, 926);
2368 path.lineTo(1.66389287f, 926);
2369 path.quadTo(1.18842196f, 925.674561f, 0.756800175f, 925.243225f);
2370 path.quadTo(0.325406998f, 924.811523f, 1.45716772e-016f, 924.336121f);
2371 path.close();
2372 path.moveTo(1, 921);
2373 path.lineTo(5, 921);
2374 path.lineTo(5, 925);
2375 path.cubicTo(2.79086018f, 925, 1, 923.209167f, 1, 921);
2376 path.close();
2377 SkPath pathB;
2378 pathB.setFillType(SkPathFillType::kWinding);
2379 pathB.moveTo(-1, 920);
2380 pathB.lineTo(0, 920);
2381 pathB.lineTo(3, 927);
2382 pathB.lineTo(-1, 927);
2383 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2384 }
2385
skpadbox_lt8(skiatest::Reporter * reporter,const char * filename)2386 static void skpadbox_lt8(skiatest::Reporter* reporter, const char* filename) {
2387 SkPath path;
2388 path.setFillType(SkPathFillType::kEvenOdd);
2389 path.moveTo(320.097229f, 628.573669f);
2390 path.lineTo(610.227173f, 85.7786865f);
2391 path.lineTo(946.652588f, 265.601807f);
2392 path.lineTo(656.522644f, 808.39679f);
2393 path.lineTo(320.097229f, 628.573669f);
2394 path.close();
2395 SkPath pathB;
2396 pathB.setFillType(SkPathFillType::kInverseWinding);
2397 pathB.moveTo(333.866608f, 623.496155f);
2398 pathB.lineTo(613.368042f, 100.585754f);
2399 pathB.cubicTo(613.685303f, 99.9921265f, 614.423767f, 99.7681885f, 615.017395f, 100.085449f);
2400 pathB.lineTo(932.633057f, 269.854553f);
2401 pathB.cubicTo(933.226685f, 270.171875f, 933.450623f, 270.910278f, 933.133301f, 271.503906f);
2402 pathB.lineTo(653.631897f, 794.414307f);
2403 pathB.cubicTo(653.314636f, 795.007935f, 652.576172f, 795.231934f, 651.982544f, 794.914612f);
2404 pathB.lineTo(334.366943f, 625.145508f);
2405 pathB.cubicTo(333.773315f, 624.828247f, 333.549286f, 624.089783f, 333.866608f, 623.496155f);
2406 pathB.close();
2407 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2408 }
2409
skpadindex_de4(skiatest::Reporter * reporter,const char * filename)2410 static void skpadindex_de4(skiatest::Reporter* reporter, const char* filename) {
2411 SkPath path;
2412 path.setFillType(SkPathFillType::kEvenOdd);
2413 path.moveTo(0, 926);
2414 path.lineTo(0, 0);
2415 path.lineTo(1280, 0);
2416 path.lineTo(1280, 926);
2417 path.lineTo(0, 926);
2418 path.close();
2419 SkPath pathB;
2420 pathB.setFillType(SkPathFillType::kWinding);
2421 pathB.moveTo(0, 312);
2422 pathB.lineTo(8.20486257e-015f, 178);
2423 pathB.lineTo(49, 178);
2424 pathB.lineTo(49, 312);
2425 pathB.close();
2426 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2427 }
2428
skpadithya_putr4_blogspot_com551(skiatest::Reporter * reporter,const char * filename)2429 static void skpadithya_putr4_blogspot_com551(skiatest::Reporter* reporter, const char* filename) {
2430 SkPath path;
2431 path.setFillType(SkPathFillType::kEvenOdd);
2432 path.moveTo(205.605804f, 142.334625f);
2433 path.lineTo(254.665359f, 85.6058044f);
2434 path.lineTo(311.394196f, 134.665359f);
2435 path.lineTo(262.334625f, 191.39418f);
2436 path.lineTo(205.605804f, 142.334625f);
2437 path.close();
2438 SkPath pathB;
2439 pathB.setFillType(SkPathFillType::kWinding);
2440 pathB.moveTo(283.407959f, 110.462646f);
2441 pathB.cubicTo(298.864319f, 123.829437f, 300.558258f, 147.195221f, 287.191467f, 162.651581f);
2442 pathB.lineTo(286.537354f, 163.407959f);
2443 pathB.cubicTo(273.170563f, 178.864334f, 249.804779f, 180.558258f, 234.348419f, 167.191467f);
2444 pathB.lineTo(233.592026f, 166.537338f);
2445 pathB.cubicTo(218.135666f, 153.170547f, 216.441727f, 129.804779f, 229.808517f, 114.348412f);
2446 pathB.lineTo(230.462646f, 113.592026f);
2447 pathB.cubicTo(243.829437f, 98.1356659f, 267.195221f, 96.4417267f, 282.651581f, 109.808517f);
2448 pathB.lineTo(283.407959f, 110.462646f);
2449 pathB.close();
2450 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2451 }
2452
skpadspert_de11(skiatest::Reporter * reporter,const char * filename)2453 static void skpadspert_de11(skiatest::Reporter* reporter, const char* filename) {
2454 SkPath path;
2455 path.setFillType(SkPathFillType::kEvenOdd);
2456 path.moveTo(-4.4408921e-016f, 682.5f);
2457 path.lineTo(30.5f, 682.5f);
2458 path.cubicTo(32.709137f, 682.5f, 34.5f, 680.709167f, 34.5f, 678.5f);
2459 path.lineTo(34.5f, 486.5f);
2460 path.cubicTo(34.5f, 484.290863f, 32.709137f, 482.5f, 30.5f, 482.5f);
2461 path.lineTo(0, 482.5f);
2462 path.lineTo(-4.4408921e-016f, 682.5f);
2463 path.close();
2464 SkPath pathB;
2465 pathB.setFillType(SkPathFillType::kWinding);
2466 pathB.moveTo(0, 482);
2467 pathB.lineTo(35, 482);
2468 pathB.lineTo(35, 683);
2469 pathB.lineTo(0, 683);
2470 pathB.close();
2471 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2472 }
2473
skpaiaigames_com870(skiatest::Reporter * reporter,const char * filename)2474 static void skpaiaigames_com870(skiatest::Reporter* reporter, const char* filename) {
2475 SkPath path;
2476 path.setFillType(SkPathFillType::kEvenOdd);
2477 path.moveTo(324.071075f, 845.071045f);
2478 path.cubicTo(324.405151f, 844.737f, 324.715668f, 844.379395f, 325, 844.000977f);
2479 path.lineTo(325, 842.127197f);
2480 path.cubicTo(324.571411f, 842.956238f, 324.017761f, 843.710144f, 323.363953f, 844.363953f);
2481 path.lineTo(324.071075f, 845.071045f);
2482 path.close();
2483 path.moveTo(323.363953f, 714.636047f);
2484 path.lineTo(324.071075f, 713.928955f);
2485 path.cubicTo(324.405151f, 714.263f, 324.715668f, 714.620605f, 325, 714.999023f);
2486 path.lineTo(325, 716.872803f);
2487 path.cubicTo(324.571411f, 716.043762f, 324.017761f, 715.289856f, 323.363953f, 714.636047f);
2488 path.close();
2489 SkPath pathB;
2490 pathB.setFillType(SkPathFillType::kWinding);
2491 pathB.moveTo(317, 711);
2492 pathB.cubicTo(322.522858f, 711, 327, 715.477173f, 327, 721);
2493 pathB.lineTo(327, 838);
2494 pathB.cubicTo(327, 843.522827f, 322.522858f, 848, 317, 848);
2495 pathB.lineTo(155, 848);
2496 pathB.cubicTo(149.477158f, 848, 145, 843.522827f, 145, 838);
2497 pathB.lineTo(145, 721);
2498 pathB.cubicTo(145, 715.477173f, 149.477158f, 711, 155, 711);
2499 pathB.lineTo(317, 711);
2500 pathB.close();
2501 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2502 }
2503
cubicOp92i(skiatest::Reporter * reporter,const char * filename)2504 static void cubicOp92i(skiatest::Reporter* reporter, const char* filename) {
2505 SkPath path, pathB;
2506 path.setFillType(SkPathFillType::kWinding);
2507 path.moveTo(0, 1);
2508 path.cubicTo(2, 6, 4, 1, 5, 4);
2509 path.close();
2510 pathB.setFillType(SkPathFillType::kWinding);
2511 pathB.moveTo(1, 4);
2512 pathB.cubicTo(4, 5, 1, 0, 6, 2);
2513 pathB.close();
2514 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2515 }
2516
cubicOp93d(skiatest::Reporter * reporter,const char * filename)2517 static void cubicOp93d(skiatest::Reporter* reporter, const char* filename) {
2518 SkPath path, pathB;
2519 path.setFillType(SkPathFillType::kWinding);
2520 path.moveTo(0, 1);
2521 path.cubicTo(1, 6, 4, 1, 4, 3);
2522 path.close();
2523 pathB.setFillType(SkPathFillType::kWinding);
2524 pathB.moveTo(1, 4);
2525 pathB.cubicTo(3, 4, 1, 0, 6, 1);
2526 pathB.close();
2527 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
2528 }
2529
cubicOp94u(skiatest::Reporter * reporter,const char * filename)2530 static void cubicOp94u(skiatest::Reporter* reporter, const char* filename) {
2531 SkPath path, pathB;
2532 path.setFillType(SkPathFillType::kEvenOdd);
2533 path.moveTo(0, 3);
2534 path.cubicTo(2, 3, 5, 0, 5, 3);
2535 path.close();
2536 pathB.setFillType(SkPathFillType::kEvenOdd);
2537 pathB.moveTo(0, 5);
2538 pathB.cubicTo(3, 5, 3, 0, 3, 2);
2539 pathB.close();
2540 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2541 }
2542
skpadbox_lt15(skiatest::Reporter * reporter,const char * filename)2543 static void skpadbox_lt15(skiatest::Reporter* reporter, const char* filename) {
2544 SkPath path;
2545 path.setFillType(SkPathFillType::kEvenOdd);
2546 path.moveTo(333.292084f, 624.570984f);
2547 path.lineTo(614.229797f, 98.9735107f);
2548 path.lineTo(933.457764f, 269.604431f);
2549 path.lineTo(652.52002f, 795.201904f);
2550 path.lineTo(333.292084f, 624.570984f);
2551 path.close();
2552 SkPath pathB;
2553 pathB.setFillType(SkPathFillType::kWinding);
2554 pathB.moveTo(613.368042f, 100.585754f);
2555 pathB.cubicTo(613.685303f, 99.9921265f, 614.423767f, 99.7681885f, 615.017395f, 100.085449f);
2556 pathB.lineTo(932.633057f, 269.854553f);
2557 pathB.cubicTo(933.226685f, 270.171875f, 933.450623f, 270.910278f, 933.133301f, 271.503906f);
2558 pathB.lineTo(653.631897f, 794.414307f);
2559 pathB.cubicTo(653.314636f, 795.007935f, 652.576172f, 795.231934f, 651.982544f, 794.914612f);
2560 pathB.lineTo(334.366943f, 625.145508f);
2561 pathB.cubicTo(333.773315f, 624.828247f, 333.549286f, 624.089783f, 333.866608f, 623.496155f);
2562 pathB.lineTo(613.368042f, 100.585754f);
2563 pathB.close();
2564 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2565 }
2566
skpadoption_org196(skiatest::Reporter * reporter,const char * filename)2567 static void skpadoption_org196(skiatest::Reporter* reporter, const char* filename) {
2568 SkPath path;
2569 path.setFillType(SkPathFillType::kEvenOdd);
2570 path.moveTo(802, 367);
2571 path.lineTo(802, 324);
2572 path.lineTo(956, 324);
2573 path.lineTo(956, 371);
2574 path.quadTo(956, 373.071075f, 954.536011f, 374.536011f);
2575 path.quadTo(953.071045f, 376, 951, 376);
2576 path.lineTo(811, 376);
2577 path.cubicTo(806.029419f, 376, 802, 371.970551f, 802, 367);
2578 path.close();
2579 SkPath pathB;
2580 pathB.setFillType(SkPathFillType::kInverseWinding);
2581 pathB.moveTo(803, 326);
2582 pathB.lineTo(955, 326);
2583 pathB.lineTo(955, 370);
2584 pathB.cubicTo(955, 372.761414f, 952.761414f, 375, 950, 375);
2585 pathB.lineTo(808, 375);
2586 pathB.cubicTo(805.238586f, 375, 803, 372.761414f, 803, 370);
2587 pathB.lineTo(803, 326);
2588 pathB.close();
2589 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2590 }
2591
skpadspert_net23(skiatest::Reporter * reporter,const char * filename)2592 static void skpadspert_net23(skiatest::Reporter* reporter, const char* filename) {
2593 SkPath path;
2594 path.setFillType(SkPathFillType::kEvenOdd);
2595 path.moveTo(-2.220446e-018f, 483.5f);
2596 path.lineTo(0, 482.5f);
2597 path.lineTo(30.5f, 482.5f);
2598 path.cubicTo(32.709137f, 482.5f, 34.5f, 484.290863f, 34.5f, 486.5f);
2599 path.lineTo(34.5f, 678.5f);
2600 path.cubicTo(34.5f, 680.709167f, 32.709137f, 682.5f, 30.5f, 682.5f);
2601 path.lineTo(-4.4408921e-016f, 682.5f);
2602 path.lineTo(-4.41868766e-016f, 681.5f);
2603 path.lineTo(30.5f, 681.5f);
2604 path.cubicTo(32.1568565f, 681.5f, 33.5f, 680.15686f, 33.5f, 678.5f);
2605 path.lineTo(33.5f, 486.5f);
2606 path.cubicTo(33.5f, 484.84314f, 32.1568565f, 483.5f, 30.5f, 483.5f);
2607 path.lineTo(-2.220446e-018f, 483.5f);
2608 path.close();
2609 SkPath pathB;
2610 pathB.setFillType(SkPathFillType::kWinding);
2611 pathB.moveTo(0, 482);
2612 pathB.lineTo(35, 482);
2613 pathB.lineTo(35, 683);
2614 pathB.lineTo(0, 683);
2615 pathB.close();
2616 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2617 }
2618
skpadventistmission_org572(skiatest::Reporter * reporter,const char * filename)2619 static void skpadventistmission_org572(skiatest::Reporter* reporter, const char* filename) {
2620 SkPath path;
2621 path.setFillType(SkPathFillType::kEvenOdd);
2622 path.moveTo(1182.00037f, 926);
2623 path.cubicTo(1181.08813f, 924.785583f, 1179.63586f, 924, 1178, 924);
2624 path.lineTo(938, 924);
2625 path.cubicTo(936.364197f, 924, 934.911865f, 924.785583f, 933.999634f, 926);
2626 path.lineTo(1182.00037f, 926);
2627 path.close();
2628 SkPath pathB;
2629 pathB.setFillType(SkPathFillType::kWinding);
2630 pathB.moveTo(934, 924);
2631 pathB.lineTo(1182, 924);
2632 pathB.lineTo(1182, 926);
2633 pathB.lineTo(934, 926);
2634 pathB.close();
2635 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2636 }
2637
skpagentxsites_com55(skiatest::Reporter * reporter,const char * filename)2638 static void skpagentxsites_com55(skiatest::Reporter* reporter, const char* filename) {
2639 SkPath path;
2640 path.setFillType(SkPathFillType::kEvenOdd);
2641 path.moveTo(925, 27);
2642 path.cubicTo(924.447693f, 27, 924, 27.4477158f, 924, 28);
2643 path.lineTo(924, 55);
2644 path.cubicTo(924, 55.5522842f, 924.447693f, 56, 925, 56);
2645 path.lineTo(1103, 56);
2646 path.cubicTo(1103.55225f, 56, 1104, 55.5522842f, 1104, 55);
2647 path.lineTo(1104, 28);
2648 path.cubicTo(1104, 27.4477158f, 1103.55225f, 27, 1103, 27);
2649 path.lineTo(925, 27);
2650 path.close();
2651 SkPath pathB;
2652 pathB.setFillType(SkPathFillType::kWinding);
2653 pathB.moveTo(1103, 27);
2654 pathB.cubicTo(1104.10461f, 27, 1105, 27.8954315f, 1105, 29);
2655 pathB.lineTo(1105, 54);
2656 pathB.cubicTo(1105, 55.1045685f, 1104.10461f, 56, 1103, 56);
2657 pathB.lineTo(926, 56);
2658 pathB.cubicTo(924.895447f, 56, 924, 55.1045685f, 924, 54);
2659 pathB.lineTo(924, 29);
2660 pathB.cubicTo(924, 27.8954315f, 924.895447f, 27, 926, 27);
2661 pathB.lineTo(1103, 27);
2662 pathB.close();
2663 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2664 }
2665
skpbakosoft_com10(skiatest::Reporter * reporter,const char * filename)2666 static void skpbakosoft_com10(skiatest::Reporter* reporter, const char* filename) {
2667 SkPath path;
2668 path.setFillType(SkPathFillType::kEvenOdd);
2669 path.moveTo(190, 170);
2670 path.cubicTo(178.9543f, 170, 170, 178.9543f, 170, 190);
2671 path.cubicTo(170, 201.0457f, 178.9543f, 210, 190, 210);
2672 path.lineTo(370, 210);
2673 path.cubicTo(381.045685f, 210, 390, 201.0457f, 390, 190);
2674 path.cubicTo(390, 178.9543f, 381.045685f, 170, 370, 170);
2675 path.lineTo(190, 170);
2676 path.close();
2677 SkPath pathB;
2678 pathB.setFillType(SkPathFillType::kWinding);
2679 pathB.moveTo(210, 190);
2680 pathB.quadTo(210, 198.284271f, 204.142136f, 204.142136f);
2681 pathB.quadTo(198.284271f, 210, 190, 210);
2682 pathB.quadTo(181.715729f, 210, 175.857864f, 204.142136f);
2683 pathB.quadTo(170, 198.284271f, 170, 190);
2684 pathB.quadTo(170, 181.715729f, 175.857864f, 175.857864f);
2685 pathB.quadTo(181.715729f, 170, 190, 170);
2686 pathB.quadTo(198.284271f, 170, 204.142136f, 175.857864f);
2687 pathB.quadTo(210, 181.715729f, 210, 190);
2688 pathB.close();
2689 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2690 }
2691
skpbambootheme_com12(skiatest::Reporter * reporter,const char * filename)2692 static void skpbambootheme_com12(skiatest::Reporter* reporter, const char* filename) {
2693 SkPath path;
2694 path.setFillType(SkPathFillType::kEvenOdd);
2695 path.moveTo(47.8780937f, 58);
2696 path.lineTo(0, 58);
2697 path.lineTo(-8.65973959e-015f, 96.9914017f);
2698 path.quadTo(20.0654926f, 96.6451874f, 34.3553391f, 82.3553391f);
2699 path.quadTo(44.9466133f, 71.764061f, 47.8780937f, 58);
2700 path.close();
2701 SkPath pathB;
2702 pathB.setFillType(SkPathFillType::kEvenOdd);
2703 pathB.moveTo(-1, -3);
2704 pathB.lineTo(-1, -3);
2705 pathB.cubicTo(26.6142502f, -3, 49, 19.3857498f, 49, 47);
2706 pathB.lineTo(49, 47);
2707 pathB.cubicTo(49, 74.6142502f, 26.6142502f, 97, -1, 97);
2708 pathB.lineTo(-1, 97);
2709 pathB.cubicTo(-28.6142502f, 97, -51, 74.6142502f, -51, 47);
2710 pathB.lineTo(-51, 47);
2711 pathB.cubicTo(-51, 19.3857498f, -28.6142502f, -3, -1, -3);
2712 pathB.close();
2713 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2714 }
2715
skpakmmos_ru100(skiatest::Reporter * reporter,const char * filename)2716 static void skpakmmos_ru100(skiatest::Reporter* reporter, const char* filename) {
2717 SkPath path;
2718 path.setFillType(SkPathFillType::kEvenOdd);
2719 path.moveTo(693.000488f, 926);
2720 path.cubicTo(692.164734f, 925.37207f, 691.125793f, 925, 690, 925);
2721 path.lineTo(578, 925);
2722 path.cubicTo(576.874207f, 925, 575.835266f, 925.37207f, 574.999512f, 926);
2723 path.lineTo(693.000488f, 926);
2724 path.close();
2725 SkPath pathB;
2726 pathB.setFillType(SkPathFillType::kWinding);
2727 pathB.moveTo(575, 925);
2728 pathB.lineTo(693, 925);
2729 pathB.lineTo(693, 926);
2730 pathB.lineTo(575, 926);
2731 pathB.close();
2732 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2733 }
2734
skpcarpetplanet_ru22(skiatest::Reporter * reporter,const char * filename)2735 static void skpcarpetplanet_ru22(skiatest::Reporter* reporter, const char* filename) {
2736 SkPath path;
2737 path.setFillType(SkPathFillType::kEvenOdd);
2738 path.moveTo(195, 785);
2739 path.cubicTo(124.307556f, 785, 67, 841.859863f, 67, 912);
2740 path.lineTo(67, 913);
2741 path.cubicTo(67, 917.388916f, 67.2243805f, 921.725769f, 67.662384f, 926);
2742 path.lineTo(322, 926);
2743 path.lineTo(322, 896.048035f);
2744 path.cubicTo(314.09201f, 833.437622f, 260.247131f, 785, 195, 785);
2745 path.close();
2746 SkPath pathB;
2747 pathB.setFillType(SkPathFillType::kWinding);
2748 pathB.moveTo(195, 785);
2749 pathB.cubicTo(265.140167f, 785, 322, 842.307556f, 322, 913);
2750 pathB.cubicTo(322, 983.692444f, 265.140167f, 1041, 195, 1041);
2751 pathB.lineTo(194, 1041);
2752 pathB.cubicTo(123.85984f, 1041, 67, 983.692444f, 67, 913);
2753 pathB.cubicTo(67, 842.307556f, 123.85984f, 785, 194, 785);
2754 pathB.lineTo(195, 785);
2755 pathB.close();
2756 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2757 }
2758
skpcarrot_is24(skiatest::Reporter * reporter,const char * filename)2759 static void skpcarrot_is24(skiatest::Reporter* reporter, const char* filename) {
2760 SkPath path;
2761 path.setFillType(SkPathFillType::kEvenOdd);
2762 path.moveTo(945, 597);
2763 path.quadTo(913.93396f, 597, 891.96698f, 618.96698f);
2764 path.quadTo(870, 640.93396f, 870, 672);
2765 path.quadTo(870, 703.06604f, 891.96698f, 725.03302f);
2766 path.quadTo(913.93396f, 747, 945, 747);
2767 path.quadTo(976.06604f, 747, 998.03302f, 725.03302f);
2768 path.quadTo(1020, 703.06604f, 1020, 672);
2769 path.quadTo(1020, 640.93396f, 998.03302f, 618.96698f);
2770 path.quadTo(976.06604f, 597, 945, 597);
2771 path.close();
2772 SkPath pathB;
2773 pathB.setFillType(SkPathFillType::kWinding);
2774 pathB.moveTo(945.080994f, 597.161987f);
2775 pathB.cubicTo(903.659973f, 597.161987f, 870.080994f, 630.73999f, 870.080994f, 672.161987f);
2776 pathB.cubicTo(870.080994f, 676.096008f, 870.387024f, 679.957031f, 870.971008f, 683.726013f);
2777 pathB.cubicTo(876.53302f, 719.656006f, 907.593994f, 747.161987f, 945.080994f, 747.161987f);
2778 pathB.cubicTo(982.567993f, 747.161987f, 1013.62903f, 719.656006f, 1019.19104f, 683.726013f);
2779 pathB.cubicTo(1019.77502f, 679.955017f, 1020.08099f, 676.094971f, 1020.08099f, 672.161987f);
2780 pathB.cubicTo(1020.08002f, 630.73999f, 986.502014f, 597.161987f, 945.080994f, 597.161987f);
2781 pathB.close();
2782 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2783 }
2784
skpbangalorenest_com4(skiatest::Reporter * reporter,const char * filename)2785 static void skpbangalorenest_com4(skiatest::Reporter* reporter, const char* filename) {
2786 SkPath path;
2787 path.setFillType(SkPathFillType::kEvenOdd);
2788 path.moveTo(0, 926);
2789 path.lineTo(0, 0);
2790 path.lineTo(1265, 0);
2791 path.lineTo(1265, 926);
2792 path.lineTo(0, 926);
2793 path.close();
2794 SkPath pathB;
2795 pathB.setFillType(SkPathFillType::kWinding);
2796 pathB.moveTo(0, 290);
2797 pathB.lineTo(-2.64514972e-014f, 146);
2798 pathB.lineTo(30, 146);
2799 pathB.lineTo(30, 290);
2800 pathB.close();
2801 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2802 }
2803
skpbenzoteh_ru152(skiatest::Reporter * reporter,const char * filename)2804 static void skpbenzoteh_ru152(skiatest::Reporter* reporter, const char* filename) {
2805 SkPath path;
2806 path.setFillType(SkPathFillType::kEvenOdd);
2807 path.moveTo(883, 23);
2808 path.lineTo(883, 0);
2809 path.lineTo(1122.5f, 0);
2810 path.lineTo(1122.5f, 25.2136822f);
2811 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2812 path.quadTo(1120.07104f, 28, 1118, 28);
2813 path.lineTo(888, 28);
2814 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2815 path.quadTo(883, 25.0710678f, 883, 23);
2816 path.close();
2817 SkPath pathB;
2818 pathB.setFillType(SkPathFillType::kWinding);
2819 pathB.moveTo(883, 0);
2820 pathB.lineTo(1123, 0);
2821 pathB.lineTo(1123, 23);
2822 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2823 pathB.quadTo(1120.07104f, 28, 1118, 28);
2824 pathB.lineTo(888, 28);
2825 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2826 pathB.quadTo(883, 25.0710678f, 883, 23);
2827 pathB.close();
2828 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2829 }
2830
skpbestred_ru37(skiatest::Reporter * reporter,const char * filename)2831 static void skpbestred_ru37(skiatest::Reporter* reporter, const char* filename) {
2832 SkPath path;
2833 path.setFillType(SkPathFillType::kEvenOdd);
2834 path.moveTo(883, 23);
2835 path.lineTo(883, 0);
2836 path.lineTo(1122.5f, 0);
2837 path.lineTo(1122.5f, 25.2136822f);
2838 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2839 path.quadTo(1120.07104f, 28, 1118, 28);
2840 path.lineTo(888, 28);
2841 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2842 path.quadTo(883, 25.0710678f, 883, 23);
2843 path.close();
2844 SkPath pathB;
2845 pathB.setFillType(SkPathFillType::kWinding);
2846 pathB.moveTo(883, 0);
2847 pathB.lineTo(1123, 0);
2848 pathB.lineTo(1123, 23);
2849 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2850 pathB.quadTo(1120.07104f, 28, 1118, 28);
2851 pathB.lineTo(888, 28);
2852 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2853 pathB.quadTo(883, 25.0710678f, 883, 23);
2854 pathB.close();
2855 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2856 }
2857
skpbingoentertainment_net189(skiatest::Reporter * reporter,const char * filename)2858 static void skpbingoentertainment_net189(skiatest::Reporter* reporter, const char* filename) {
2859 SkPath path;
2860 path.setFillType(SkPathFillType::kEvenOdd);
2861 path.moveTo(896, 745.38678f);
2862 path.lineTo(896, 873.38678f);
2863 path.lineTo(922.567993f, 876.683716f);
2864 path.lineTo(922.567993f, 748.683716f);
2865 path.lineTo(896, 745.38678f);
2866 path.close();
2867 SkPath pathB;
2868 pathB.setFillType(SkPathFillType::kWinding);
2869 pathB.moveTo(899.200928f, 745.783997f);
2870 pathB.cubicTo(897.119385f, 745.525696f, 895.432007f, 752.031982f, 895.432007f, 760.316284f);
2871 pathB.lineTo(895.432007f, 858.316284f);
2872 pathB.cubicTo(895.432007f, 866.600586f, 897.119385f, 873.525696f, 899.200928f, 873.783997f);
2873 pathB.lineTo(918.799133f, 876.216003f);
2874 pathB.cubicTo(920.880615f, 876.474304f, 922.567993f, 869.968018f, 922.567993f, 861.683716f);
2875 pathB.lineTo(922.567993f, 763.683716f);
2876 pathB.cubicTo(922.567993f, 755.399414f, 920.880615f, 748.474304f, 918.799133f, 748.216003f);
2877 pathB.lineTo(899.200928f, 745.783997f);
2878 pathB.close();
2879 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2880 }
2881
skpcarrefour_ro62(skiatest::Reporter * reporter,const char * filename)2882 static void skpcarrefour_ro62(skiatest::Reporter* reporter, const char* filename) {
2883 SkPath path;
2884 path.setFillType(SkPathFillType::kEvenOdd);
2885 path.moveTo(1104, 453);
2886 path.lineTo(399, 453);
2887 path.lineTo(399, 657);
2888 path.cubicTo(399, 661.970581f, 403.029449f, 666, 408, 666);
2889 path.lineTo(1095, 666);
2890 path.cubicTo(1099.97058f, 666, 1104, 661.970581f, 1104, 657);
2891 path.lineTo(1104, 453);
2892 path.close();
2893 SkPath pathB;
2894 pathB.setFillType(SkPathFillType::kInverseWinding);
2895 pathB.moveTo(400, 453);
2896 pathB.lineTo(1103, 453);
2897 pathB.lineTo(1103, 666);
2898 pathB.lineTo(406, 666);
2899 pathB.cubicTo(402.686279f, 666, 400, 663.313721f, 400, 660);
2900 pathB.lineTo(400, 453);
2901 pathB.close();
2902 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2903 }
2904
skpcaffelavazzait_com_ua21(skiatest::Reporter * reporter,const char * filename)2905 static void skpcaffelavazzait_com_ua21(skiatest::Reporter* reporter, const char* filename) {
2906 SkPath path;
2907 path.setFillType(SkPathFillType::kEvenOdd);
2908 path.moveTo(883, 23);
2909 path.lineTo(883, 0);
2910 path.lineTo(1122.5f, 0);
2911 path.lineTo(1122.5f, 25.2136822f);
2912 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2913 path.quadTo(1120.07104f, 28, 1118, 28);
2914 path.lineTo(888, 28);
2915 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2916 path.quadTo(883, 25.0710678f, 883, 23);
2917 path.close();
2918 SkPath pathB;
2919 pathB.setFillType(SkPathFillType::kWinding);
2920 pathB.moveTo(883, 0);
2921 pathB.lineTo(1123, 0);
2922 pathB.lineTo(1123, 23);
2923 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2924 pathB.quadTo(1120.07104f, 28, 1118, 28);
2925 pathB.lineTo(888, 28);
2926 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2927 pathB.quadTo(883, 25.0710678f, 883, 23);
2928 pathB.close();
2929 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2930 }
2931
skpcamcorder_kz21(skiatest::Reporter * reporter,const char * filename)2932 static void skpcamcorder_kz21(skiatest::Reporter* reporter, const char* filename) {
2933 SkPath path;
2934 path.setFillType(SkPathFillType::kEvenOdd);
2935 path.moveTo(883, 23);
2936 path.lineTo(883, 0);
2937 path.lineTo(1122.5f, 0);
2938 path.lineTo(1122.5f, 25.2136822f);
2939 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2940 path.quadTo(1120.07104f, 28, 1118, 28);
2941 path.lineTo(888, 28);
2942 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2943 path.quadTo(883, 25.0710678f, 883, 23);
2944 path.close();
2945 SkPath pathB;
2946 pathB.setFillType(SkPathFillType::kWinding);
2947 pathB.moveTo(883, 0);
2948 pathB.lineTo(1123, 0);
2949 pathB.lineTo(1123, 23);
2950 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2951 pathB.quadTo(1120.07104f, 28, 1118, 28);
2952 pathB.lineTo(888, 28);
2953 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2954 pathB.quadTo(883, 25.0710678f, 883, 23);
2955 pathB.close();
2956 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2957 }
2958
skpcavablar_net563(skiatest::Reporter * reporter,const char * filename)2959 static void skpcavablar_net563(skiatest::Reporter* reporter, const char* filename) {
2960 SkPath path;
2961 path.setFillType(SkPathFillType::kEvenOdd);
2962 path.moveTo(160.000488f, 918);
2963 path.cubicTo(159.164749f, 917.37207f, 158.125824f, 917, 157, 917);
2964 path.lineTo(94, 917);
2965 path.cubicTo(92.874176f, 917, 91.8352661f, 917.37207f, 90.9995193f, 918);
2966 path.lineTo(160.000488f, 918);
2967 path.close();
2968 SkPath pathB;
2969 pathB.setFillType(SkPathFillType::kWinding);
2970 pathB.moveTo(91, 917);
2971 pathB.lineTo(160, 917);
2972 pathB.lineTo(160, 918);
2973 pathB.lineTo(91, 918);
2974 pathB.close();
2975 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2976 }
2977
skpinsomnia_gr72(skiatest::Reporter * reporter,const char * filename)2978 static void skpinsomnia_gr72(skiatest::Reporter* reporter, const char* filename) {
2979 SkPath path;
2980 path.setFillType(SkPathFillType::kEvenOdd);
2981 path.moveTo(1138, 231);
2982 path.lineTo(1137, 243.625748f);
2983 path.lineTo(1137, 926);
2984 path.lineTo(1139, 926);
2985 path.lineTo(1139, 231);
2986 path.lineTo(1138, 231);
2987 path.close();
2988 SkPath pathB;
2989 pathB.setFillType(SkPathFillType::kWinding);
2990 pathB.moveTo(1139, 231);
2991 pathB.lineTo(1138, 231);
2992 pathB.lineTo(633, 6101);
2993 pathB.lineTo(1139, 6607);
2994 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2995 }
2996
cubicOp95u(skiatest::Reporter * reporter,const char * filename)2997 static void cubicOp95u(skiatest::Reporter* reporter, const char* filename) {
2998 SkPath path, pathB;
2999 path.setFillType(SkPathFillType::kEvenOdd);
3000 path.moveTo(0, 2);
3001 path.cubicTo(2, 3, 5, 1, 3, 2);
3002 path.close();
3003 pathB.setFillType(SkPathFillType::kEvenOdd);
3004 pathB.moveTo(1, 5);
3005 pathB.cubicTo(2, 3, 2, 0, 3, 2);
3006 pathB.close();
3007 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3008 }
3009
cubicOp96d(skiatest::Reporter * reporter,const char * filename)3010 static void cubicOp96d(skiatest::Reporter* reporter, const char* filename) {
3011 SkPath path, pathB;
3012 path.setFillType(SkPathFillType::kEvenOdd);
3013 path.moveTo(1, 6);
3014 path.cubicTo(0, 3, 6, 3, 5, 0);
3015 path.close();
3016 pathB.setFillType(SkPathFillType::kEvenOdd);
3017 pathB.moveTo(3, 6);
3018 pathB.cubicTo(0, 5, 6, 1, 3, 0);
3019 pathB.close();
3020 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3021 }
3022
cubicOp97x(skiatest::Reporter * reporter,const char * filename)3023 static void cubicOp97x(skiatest::Reporter* reporter, const char* filename) {
3024 SkPath path, pathB;
3025 path.setFillType(SkPathFillType::kEvenOdd);
3026 path.moveTo(0, 2);
3027 path.cubicTo(0, 6, 2, 1, 2, 1);
3028 path.close();
3029 pathB.setFillType(SkPathFillType::kEvenOdd);
3030 pathB.moveTo(1, 2);
3031 pathB.cubicTo(1, 2, 2, 0, 6, 0);
3032 pathB.close();
3033 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
3034 }
3035
cubicOp98x(skiatest::Reporter * reporter,const char * filename)3036 static void cubicOp98x(skiatest::Reporter* reporter, const char* filename) {
3037 SkPath path, pathB;
3038 path.setFillType(SkPathFillType::kEvenOdd);
3039 path.moveTo(0, 3);
3040 path.cubicTo(3, 6, 4, 1, 6, 3);
3041 path.close();
3042 pathB.setFillType(SkPathFillType::kEvenOdd);
3043 pathB.moveTo(1, 4);
3044 pathB.cubicTo(3, 6, 3, 0, 6, 3);
3045 pathB.close();
3046 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
3047 }
3048
cubicOp99(skiatest::Reporter * reporter,const char * filename)3049 static void cubicOp99(skiatest::Reporter* reporter, const char* filename) {
3050 SkPath path, pathB;
3051 path.setFillType(SkPathFillType::kWinding);
3052 path.moveTo(3,6);
3053 path.cubicTo(0,3, 6,5, 5,4);
3054 path.close();
3055 pathB.setFillType(SkPathFillType::kWinding);
3056 pathB.moveTo(5,6);
3057 pathB.cubicTo(4,5, 6,3, 3,0);
3058 pathB.close();
3059 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3060 }
3061
cubicOp100(skiatest::Reporter * reporter,const char * filename)3062 static void cubicOp100(skiatest::Reporter* reporter, const char* filename) {
3063 SkPath path, pathB;
3064 path.setFillType(SkPathFillType::kWinding);
3065 path.moveTo(0,1);
3066 path.cubicTo(0,2, 2,1, 4,2);
3067 path.close();
3068 pathB.setFillType(SkPathFillType::kWinding);
3069 pathB.moveTo(1,2);
3070 pathB.cubicTo(2,4, 1,0, 2,0);
3071 pathB.close();
3072 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3073 }
3074
cubicOp101(skiatest::Reporter * reporter,const char * filename)3075 static void cubicOp101(skiatest::Reporter* reporter, const char* filename) {
3076 SkPath path, pathB;
3077 path.setFillType(SkPathFillType::kWinding);
3078 path.moveTo(0, 1);
3079 path.cubicTo(2, 3, 2, 1, 5, 3);
3080 path.close();
3081 pathB.setFillType(SkPathFillType::kWinding);
3082 pathB.moveTo(1, 2);
3083 pathB.cubicTo(3, 5, 1, 0, 3, 2);
3084 pathB.close();
3085 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3086 }
3087
cubicOp102(skiatest::Reporter * reporter,const char * filename)3088 static void cubicOp102(skiatest::Reporter* reporter, const char* filename) {
3089 SkPath path, pathB;
3090 path.setFillType(SkPathFillType::kWinding);
3091 path.moveTo(0,1);
3092 path.cubicTo(1,2, 1,0, 3,0);
3093 path.close();
3094 pathB.setFillType(SkPathFillType::kWinding);
3095 pathB.moveTo(0,1);
3096 pathB.cubicTo(0,3, 1,0, 2,1);
3097 pathB.close();
3098 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3099 }
3100
cubicOp103(skiatest::Reporter * reporter,const char * filename)3101 static void cubicOp103(skiatest::Reporter* reporter, const char* filename) {
3102 SkPath path, pathB;
3103 path.setFillType(SkPathFillType::kWinding);
3104 path.moveTo(0,1);
3105 path.cubicTo(1,5, 2,0, 2,1);
3106 path.close();
3107 pathB.setFillType(SkPathFillType::kWinding);
3108 pathB.moveTo(0,2);
3109 pathB.cubicTo(1,2, 1,0, 5,1);
3110 pathB.close();
3111 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3112 }
3113
cubicOp104(skiatest::Reporter * reporter,const char * filename)3114 static void cubicOp104(skiatest::Reporter* reporter, const char* filename) {
3115 SkPath path, pathB;
3116 path.setFillType(SkPathFillType::kWinding);
3117 path.moveTo(0,1);
3118 path.cubicTo(0,6, 4,0, 6,1);
3119 path.close();
3120 pathB.setFillType(SkPathFillType::kWinding);
3121 pathB.moveTo(0,4);
3122 pathB.cubicTo(1,6, 1,0, 6,0);
3123 pathB.close();
3124 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3125 }
3126
cubicOp105(skiatest::Reporter * reporter,const char * filename)3127 static void cubicOp105(skiatest::Reporter* reporter, const char* filename) {
3128 SkPath path, pathB;
3129 path.setFillType(SkPathFillType::kWinding);
3130 path.moveTo(0,1);
3131 path.cubicTo(0,4, 6,5, 2,0);
3132 path.close();
3133 pathB.setFillType(SkPathFillType::kWinding);
3134 pathB.moveTo(5,6);
3135 pathB.cubicTo(0,2, 1,0, 4,0);
3136 pathB.close();
3137 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3138 }
3139
cubicOp106(skiatest::Reporter * reporter,const char * filename)3140 static void cubicOp106(skiatest::Reporter* reporter, const char* filename) {
3141 SkPath path, pathB;
3142 path.setFillType(SkPathFillType::kWinding);
3143 path.moveTo(0, 1);
3144 path.cubicTo(4, 6, 2, 1, 2, 0);
3145 path.close();
3146 pathB.setFillType(SkPathFillType::kWinding);
3147 pathB.moveTo(1, 2);
3148 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3149 pathB.close();
3150 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3151 }
3152
cubicOp107(skiatest::Reporter * reporter,const char * filename)3153 static void cubicOp107(skiatest::Reporter* reporter, const char* filename) {
3154 SkPath path, pathB;
3155 path.setFillType(SkPathFillType::kWinding);
3156 path.moveTo(0, 1);
3157 path.cubicTo(4, 6, 2, 1, 2, 0);
3158 path.close();
3159 pathB.setFillType(SkPathFillType::kWinding);
3160 pathB.moveTo(1, 2);
3161 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3162 pathB.close();
3163 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3164 }
3165
cubicOp108(skiatest::Reporter * reporter,const char * filename)3166 static void cubicOp108(skiatest::Reporter* reporter, const char* filename) {
3167 SkPath path, pathB;
3168 path.setFillType(SkPathFillType::kWinding);
3169 path.moveTo(0, 1);
3170 path.cubicTo(4, 6, 2, 1, 2, 0);
3171 path.close();
3172 pathB.setFillType(SkPathFillType::kWinding);
3173 pathB.moveTo(1, 2);
3174 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3175 pathB.close();
3176 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3177 }
3178
cubicOp109(skiatest::Reporter * reporter,const char * filename)3179 static void cubicOp109(skiatest::Reporter* reporter, const char* filename) {
3180 SkPath path, pathB;
3181 path.setFillType(SkPathFillType::kWinding);
3182 path.moveTo(0,1);
3183 path.cubicTo(4,5, 6,3, 5,4);
3184 path.close();
3185 pathB.setFillType(SkPathFillType::kWinding);
3186 pathB.moveTo(3,6);
3187 pathB.cubicTo(4,5, 1,0, 5,4);
3188 pathB.close();
3189 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3190 }
3191
cubicOp110(skiatest::Reporter * reporter,const char * filename)3192 static void cubicOp110(skiatest::Reporter* reporter, const char* filename) {
3193 SkPath path, pathB;
3194 path.setFillType(SkPathFillType::kEvenOdd);
3195 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
3196 path.addRect(0, 0, 4, 4, SkPathDirection::kCW);
3197 pathB.setFillType(SkPathFillType::kEvenOdd);
3198 pathB.addRect(0, 0, 2, 2, SkPathDirection::kCW);
3199 pathB.addRect(0, 0, 2, 2, SkPathDirection::kCW);
3200 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3201 }
3202
cubicOp111(skiatest::Reporter * reporter,const char * filename)3203 static void cubicOp111(skiatest::Reporter* reporter, const char* filename) {
3204 SkPath path, pathB;
3205 path.setFillType(SkPathFillType::kWinding);
3206 path.moveTo(1,4);
3207 path.cubicTo(0,5, 4,1, 3,1);
3208 path.close();
3209 pathB.setFillType(SkPathFillType::kWinding);
3210 pathB.moveTo(1,4);
3211 pathB.cubicTo(1,3, 4,1, 5,0);
3212 pathB.close();
3213 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3214 }
3215
xOp1u(skiatest::Reporter * reporter,const char * filename)3216 static void xOp1u(skiatest::Reporter* reporter, const char* filename) {
3217 SkPath path, pathB;
3218 path.setFillType(SkPathFillType::kEvenOdd);
3219 path.moveTo(1, 4);
3220 path.cubicTo(4, 5, 3, 2, 6, 3);
3221 path.close();
3222 pathB.setFillType(SkPathFillType::kEvenOdd);
3223 pathB.moveTo(2, 3);
3224 pathB.cubicTo(3, 6, 4, 1, 5, 4);
3225 pathB.close();
3226 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3227 }
3228
xOp1i(skiatest::Reporter * reporter,const char * filename)3229 static void xOp1i(skiatest::Reporter* reporter, const char* filename) {
3230 SkPath path, pathB;
3231 path.setFillType(SkPathFillType::kEvenOdd);
3232 path.moveTo(1, 4);
3233 path.cubicTo(1, 5, 6, 0, 5, 1);
3234 path.close();
3235 pathB.setFillType(SkPathFillType::kEvenOdd);
3236 pathB.moveTo(0, 6);
3237 pathB.cubicTo(1, 5, 4, 1, 5, 1);
3238 pathB.close();
3239 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3240 }
3241
xOp2i(skiatest::Reporter * reporter,const char * filename)3242 static void xOp2i(skiatest::Reporter* reporter, const char* filename) {
3243 SkPath path, pathB;
3244 path.setFillType(SkPathFillType::kEvenOdd);
3245 path.moveTo(1, 5);
3246 path.cubicTo(0, 4, 3, 2, 6, 1);
3247 path.close();
3248 pathB.setFillType(SkPathFillType::kEvenOdd);
3249 pathB.moveTo(2, 3);
3250 pathB.cubicTo(1, 6, 5, 1, 4, 0);
3251 pathB.close();
3252 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3253 }
3254
xOp3i(skiatest::Reporter * reporter,const char * filename)3255 static void xOp3i(skiatest::Reporter* reporter, const char* filename) {
3256 SkPath path, pathB;
3257 path.setFillType(SkPathFillType::kWinding);
3258 path.moveTo(1,4);
3259 path.cubicTo(0,5, 4,1, 3,1);
3260 path.close();
3261 pathB.setFillType(SkPathFillType::kWinding);
3262 pathB.moveTo(1,4);
3263 pathB.cubicTo(1,3, 4,1, 5,0);
3264 pathB.close();
3265 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3266 }
3267
findFirst1(skiatest::Reporter * reporter,const char * filename)3268 static void findFirst1(skiatest::Reporter* reporter, const char* filename) {
3269 SkPath path, pathB;
3270 path.setFillType(SkPathFillType::kWinding);
3271 path.moveTo(0,1);
3272 path.cubicTo(1,6, 5,0, 2,1);
3273 path.close();
3274 pathB.setFillType(SkPathFillType::kWinding);
3275 pathB.moveTo(0,5);
3276 pathB.cubicTo(1,2, 1,0, 6,1);
3277 pathB.close();
3278 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3279 }
3280
cubicOp112(skiatest::Reporter * reporter,const char * filename)3281 static void cubicOp112(skiatest::Reporter* reporter, const char* filename) {
3282 SkPath path, pathB;
3283 path.setFillType(SkPathFillType::kWinding);
3284 path.moveTo(2,4);
3285 path.cubicTo(2,3, 6,4, 1,0);
3286 path.close();
3287 pathB.setFillType(SkPathFillType::kWinding);
3288 pathB.moveTo(4,6);
3289 pathB.cubicTo(0,1, 4,2, 3,2);
3290 pathB.close();
3291 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3292 }
3293
cubicOp113(skiatest::Reporter * reporter,const char * filename)3294 static void cubicOp113(skiatest::Reporter* reporter, const char* filename) {
3295 SkPath path, pathB;
3296 path.moveTo(2,4);
3297 path.cubicTo(3,5, 2.33333325f,4.33333349f, 3.83333325f,3.83333349f);
3298 path.close();
3299 pathB.moveTo(3,5);
3300 pathB.cubicTo(2.33333325f,4.33333349f, 3.83333325f,3.83333349f, 2,4);
3301 pathB.close();
3302 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3303 }
3304
cubicOp114(skiatest::Reporter * reporter,const char * filename)3305 static void cubicOp114(skiatest::Reporter* reporter, const char* filename) {
3306 SkPath path, pathB;
3307 path.setFillType(SkPathFillType::kWinding);
3308 path.moveTo(0, 1);
3309 path.cubicTo(1, 3, -1, 2, 3.5f, 1.33333337f);
3310 path.close();
3311 pathB.setFillType(SkPathFillType::kWinding);
3312 pathB.moveTo(1, 3);
3313 pathB.cubicTo(-1, 2, 3.5f, 1.33333337f, 0, 1);
3314 pathB.close();
3315 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3316 }
3317
cubicOp114asQuad(skiatest::Reporter * reporter,const char * filename)3318 static void cubicOp114asQuad(skiatest::Reporter* reporter, const char* filename) {
3319 SkPath path, pathB;
3320 path.setFillType(SkPathFillType::kWinding);
3321 path.moveTo(0, 1);
3322 path.cubicTo(1, 3, -1, 2, 3.5f, 1.33333337f);
3323 path.close();
3324 pathB.setFillType(SkPathFillType::kWinding);
3325 pathB.moveTo(1, 3);
3326 pathB.cubicTo(-1, 2, 3.5f, 1.33333337f, 0, 1);
3327 pathB.close();
3328 SkPath qPath, qPathB;
3329 CubicPathToQuads(path, &qPath);
3330 CubicPathToQuads(pathB, &qPathB);
3331 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
3332 }
3333
quadOp10i(skiatest::Reporter * reporter,const char * filename)3334 static void quadOp10i(skiatest::Reporter* reporter, const char* filename) {
3335 SkPath path, pathB;
3336 path.moveTo(0, 0);
3337 path.quadTo(1, 8, 3, 5);
3338 path.lineTo(8, 1);
3339 path.close();
3340 pathB.moveTo(0, 0);
3341 pathB.quadTo(8, 1, 4, 8);
3342 pathB.close();
3343 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3344 }
3345
kari1(skiatest::Reporter * reporter,const char * filename)3346 static void kari1(skiatest::Reporter* reporter, const char* filename) {
3347 SkPath path1;
3348 path1.moveTo(39.9375, -5.8359375);
3349 path1.lineTo(40.625, -5.7890625);
3350 path1.lineTo(37.7109375, 1.3515625);
3351 path1.lineTo(37.203125, 0.9609375);
3352 path1.close();
3353
3354 SkPath path2;
3355 path2.moveTo(37.52734375f, -1.44140625f);
3356 path2.cubicTo(37.8736991882324f, -1.69921875f, 38.1640625f, -2.140625f, 38.3984375f, -2.765625f);
3357 path2.lineTo(38.640625f, -2.609375f);
3358 path2.cubicTo(38.53125f, -1.89583337306976f, 38.0664443969727f, -0.154893040657043f, 38.0664443969727f, -0.154893040657043f);
3359 path2.cubicTo(38.0664443969727f, -0.154893040657043f, 37.1809883117676f, -1.18359375f, 37.52734375, -1.44140625f);
3360 path2.close();
3361
3362 testPathOp(reporter, path1, path2, kDifference_SkPathOp, filename);
3363 }
3364
issue2504(skiatest::Reporter * reporter,const char * filename)3365 static void issue2504(skiatest::Reporter* reporter, const char* filename) {
3366 SkPath path1;
3367 path1.moveTo(34.2421875, -5.976562976837158203125);
3368 path1.lineTo(35.453121185302734375, 0);
3369 path1.lineTo(31.9375, 0);
3370 path1.close();
3371
3372 SkPath path2;
3373 path2.moveTo(36.71843719482421875, 0.8886508941650390625);
3374 path2.cubicTo(36.71843719482421875, 0.8886508941650390625,
3375 35.123386383056640625, 0.554015457630157470703125,
3376 34.511409759521484375, -0.1152553558349609375);
3377 path2.cubicTo(33.899425506591796875, -0.7845261096954345703125,
3378 34.53484344482421875, -5.6777553558349609375,
3379 34.53484344482421875, -5.6777553558349609375);
3380 path2.close();
3381 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3382 }
3383
issue2540(skiatest::Reporter * reporter,const char * filename)3384 static void issue2540(skiatest::Reporter* reporter, const char* filename) {
3385 SkPath path1;
3386 path1.moveTo(26.5054988861083984375, 85.73960113525390625);
3387 path1.cubicTo(84.19739532470703125, 17.77140045166015625, 16.93920135498046875, 101.86199951171875, 12.631000518798828125, 105.24700164794921875);
3388 path1.cubicTo(11.0819997787475585937500000, 106.46399688720703125, 11.5260000228881835937500000, 104.464996337890625, 11.5260000228881835937500000, 104.464996337890625);
3389 path1.lineTo(23.1654987335205078125, 89.72879791259765625);
3390 path1.cubicTo(23.1654987335205078125, 89.72879791259765625, -10.1713008880615234375, 119.9160003662109375, -17.1620006561279296875, 120.8249969482421875);
3391 path1.cubicTo(-19.1149997711181640625, 121.07900238037109375, -18.0380001068115234375, 119.79299163818359375, -18.0380001068115234375, 119.79299163818359375);
3392 path1.cubicTo(-18.0380001068115234375, 119.79299163818359375, 14.22100067138671875, 90.60700225830078125, 26.5054988861083984375, 85.73960113525390625);
3393 path1.close();
3394
3395 SkPath path2;
3396 path2.moveTo(-25.077999114990234375, 124.9120025634765625);
3397 path2.cubicTo(-25.077999114990234375, 124.9120025634765625, -25.9509983062744140625, 125.95400238037109375, -24.368999481201171875, 125.7480010986328125);
3398 path2.cubicTo(-16.06999969482421875, 124.66899871826171875, 1.2680000066757202148437500, 91.23999786376953125, 37.264003753662109375, 95.35400390625);
3399 path2.cubicTo(37.264003753662109375, 95.35400390625, 11.3710002899169921875, 83.7339935302734375, -25.077999114990234375, 124.9120025634765625);
3400 path2.close();
3401 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3402 }
3403
rects1(skiatest::Reporter * reporter,const char * filename)3404 static void rects1(skiatest::Reporter* reporter, const char* filename) {
3405 SkPath path, pathB;
3406 path.setFillType(SkPathFillType::kEvenOdd);
3407 path.moveTo(0, 0);
3408 path.lineTo(1, 0);
3409 path.lineTo(1, 1);
3410 path.lineTo(0, 1);
3411 path.close();
3412 path.moveTo(0, 0);
3413 path.lineTo(6, 0);
3414 path.lineTo(6, 6);
3415 path.lineTo(0, 6);
3416 path.close();
3417 pathB.setFillType(SkPathFillType::kEvenOdd);
3418 pathB.moveTo(0, 0);
3419 pathB.lineTo(1, 0);
3420 pathB.lineTo(1, 1);
3421 pathB.lineTo(0, 1);
3422 pathB.close();
3423 pathB.moveTo(0, 0);
3424 pathB.lineTo(2, 0);
3425 pathB.lineTo(2, 2);
3426 pathB.lineTo(0, 2);
3427 pathB.close();
3428 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3429 }
3430
rects2(skiatest::Reporter * reporter,const char * filename)3431 static void rects2(skiatest::Reporter* reporter, const char* filename) {
3432 SkPath path, pathB;
3433 path.setFillType(SkPathFillType::kEvenOdd);
3434 path.moveTo(0, 0);
3435 path.lineTo(4, 0);
3436 path.lineTo(4, 4);
3437 path.lineTo(0, 4);
3438 path.close();
3439 path.moveTo(3, 3);
3440 path.lineTo(4, 3);
3441 path.lineTo(4, 4);
3442 path.lineTo(3, 4);
3443 path.close();
3444 pathB.setFillType(SkPathFillType::kWinding);
3445 pathB.moveTo(3, 3);
3446 pathB.lineTo(6, 3);
3447 pathB.lineTo(6, 6);
3448 pathB.lineTo(3, 6);
3449 pathB.close();
3450 pathB.moveTo(3, 3);
3451 pathB.lineTo(4, 3);
3452 pathB.lineTo(4, 4);
3453 pathB.lineTo(3, 4);
3454 pathB.close();
3455 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3456 }
3457
rects3(skiatest::Reporter * reporter,const char * filename)3458 static void rects3(skiatest::Reporter* reporter, const char* filename) {
3459 SkPath path, pathB;
3460 path.setFillType(SkPathFillType::kEvenOdd);
3461 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
3462 path.addRect(0, 0, 4, 4, SkPathDirection::kCW);
3463 pathB.setFillType(SkPathFillType::kWinding);
3464 pathB.addRect(0, 0, 2, 2, SkPathDirection::kCW);
3465 pathB.addRect(0, 0, 2, 2, SkPathDirection::kCW);
3466 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3467 }
3468
rects4(skiatest::Reporter * reporter,const char * filename)3469 static void rects4(skiatest::Reporter* reporter, const char* filename) {
3470 SkPath path, pathB;
3471 path.setFillType(SkPathFillType::kEvenOdd);
3472 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
3473 path.addRect(0, 0, 2, 2, SkPathDirection::kCW);
3474 pathB.setFillType(SkPathFillType::kWinding);
3475 pathB.addRect(0, 0, 2, 2, SkPathDirection::kCW);
3476 pathB.addRect(0, 0, 3, 3, SkPathDirection::kCW);
3477 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3478 }
3479
issue2753(skiatest::Reporter * reporter,const char * filename)3480 static void issue2753(skiatest::Reporter* reporter, const char* filename) {
3481 SkPath path1;
3482 path1.moveTo(142.701f, 110.568f);
3483 path1.lineTo(142.957f, 100);
3484 path1.lineTo(153.835f, 100);
3485 path1.lineTo(154.592f, 108.188f);
3486 path1.cubicTo(154.592f, 108.188f, 153.173f, 108.483f, 152.83f, 109.412f);
3487 path1.cubicTo(152.83f, 109.412f, 142.701f, 110.568f, 142.701f, 110.568f);
3488 path1.close();
3489
3490 SkPath path2;
3491 path2.moveTo(39, 124.001f);
3492 path2.cubicTo(39, 124.001f, 50.6f, 117.001f, 50.6f, 117.001f);
3493 path2.cubicTo(50.6f, 117.001f, 164.601f, 85.2f, 188.201f, 117.601f);
3494 path2.cubicTo(188.201f, 117.601f, 174.801f, 93, 39, 124.001f);
3495 path2.close();
3496
3497 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3498 }
3499
issue2808(skiatest::Reporter * reporter,const char * filename)3500 static void issue2808(skiatest::Reporter* reporter, const char* filename) {
3501 SkPath path1, path2;
3502
3503 path1.moveTo(509.20300293f, 385.601989746f);
3504 path1.quadTo(509.20300293f, 415.68838501f, 487.928710938f, 436.96270752f);
3505 path1.quadTo(466.654388428f, 458.236999512f, 436.567993164f, 458.236999512f);
3506 path1.quadTo(406.4815979f, 458.236999512f, 385.207275391f, 436.96270752f);
3507 path1.quadTo(363.932983398f, 415.68838501f, 363.932983398f, 385.601989746f);
3508 path1.quadTo(363.932983398f, 355.515594482f, 385.207275391f, 334.241271973f);
3509 path1.quadTo(406.4815979f, 312.96697998f, 436.567993164f, 312.96697998f);
3510 path1.quadTo(466.654388428f, 312.96697998f, 487.928710938f, 334.241271973f);
3511 path1.quadTo(509.20300293f, 355.515594482f, 509.20300293f, 385.601989746f);
3512 path1.close();
3513
3514 path2.moveTo(449.033996582f, 290.87298584f);
3515 path2.quadTo(449.033996582f, 301.028259277f, 441.853149414f, 308.209106445f);
3516 path2.quadTo(434.672271729f, 315.389984131f, 424.516998291f, 315.389984131f);
3517 path2.quadTo(414.361724854f, 315.389984131f, 407.180847168f, 308.209106445f);
3518 path2.quadTo(400, 301.028259277f, 400, 290.87298584f);
3519 path2.quadTo(400, 280.717712402f, 407.180847168f, 273.536865234f);
3520 path2.quadTo(414.361724854f, 266.355987549f, 424.516998291f, 266.355987549f);
3521 path2.quadTo(434.672271729f, 266.355987549f, 441.853149414f, 273.536865234f);
3522 path2.quadTo(449.033996582f, 280.717712402f, 449.033996582f, 290.87298584f);
3523 path2.close();
3524
3525 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3526 }
3527
cubicOp115(skiatest::Reporter * reporter,const char * filename)3528 static void cubicOp115(skiatest::Reporter* reporter, const char* filename) {
3529 SkPath path, pathB;
3530 path.setFillType(SkPathFillType::kWinding);
3531 path.moveTo(0,1);
3532 path.cubicTo(3,4, 2,1, 5,3);
3533 path.close();
3534 pathB.setFillType(SkPathFillType::kWinding);
3535 pathB.moveTo(1,2);
3536 pathB.cubicTo(3,5, 1,0, 4,3);
3537 pathB.close();
3538 SkPath path2(path);
3539 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3540 }
3541
testRect1(skiatest::Reporter * reporter,const char * filename)3542 static void testRect1(skiatest::Reporter* reporter, const char* filename) {
3543 SkPath path, path2;
3544 path.addRect(0, 0, 60, 60, SkPathDirection::kCCW);
3545 path.addRect(30, 20, 50, 50, SkPathDirection::kCCW);
3546 path.addRect(24, 20, 36, 30, SkPathDirection::kCCW);
3547 // path.addRect(32, 24, 36, 41, SkPathDirection::kCCW);
3548 testPathOp(reporter, path, path2, kUnion_SkPathOp, filename);
3549 }
3550
testRect2(skiatest::Reporter * reporter,const char * filename)3551 static void testRect2(skiatest::Reporter* reporter, const char* filename) {
3552 SkPath path, pathB;
3553 path.setFillType(SkPathFillType::kWinding);
3554 path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
3555 path.addRect(4, 4, 5, 5, SkPathDirection::kCW);
3556 pathB.setFillType(SkPathFillType::kEvenOdd);
3557 pathB.addRect(0, 0, 2, 2, SkPathDirection::kCW);
3558 pathB.addRect(0, 0, 6, 6, SkPathDirection::kCW);
3559 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3560 }
3561
cubicOp116(skiatest::Reporter * reporter,const char * filename)3562 static void cubicOp116(skiatest::Reporter* reporter, const char* filename) {
3563 SkPath path, pathB;
3564 path.setFillType(SkPathFillType::kWinding);
3565 path.moveTo(0,1);
3566 path.cubicTo(4,6, 2,0, 2,0);
3567 path.close();
3568 pathB.setFillType(SkPathFillType::kWinding);
3569 pathB.moveTo(0,2);
3570 pathB.cubicTo(0,2, 1,0, 6,4);
3571 pathB.close();
3572 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3573 }
3574
cubicOp117(skiatest::Reporter * reporter,const char * filename)3575 static void cubicOp117(skiatest::Reporter* reporter, const char* filename) {
3576 SkPath path, pathB;
3577 path.setFillType(SkPathFillType::kWinding);
3578 path.moveTo(0,1);
3579 path.cubicTo(4,5, 6,0, 1,0);
3580 path.close();
3581 pathB.setFillType(SkPathFillType::kWinding);
3582 pathB.moveTo(0,6);
3583 pathB.cubicTo(0,1, 1,0, 5,4);
3584 pathB.close();
3585 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3586 }
3587
cubicOp118(skiatest::Reporter * reporter,const char * filename)3588 static void cubicOp118(skiatest::Reporter* reporter, const char* filename) {
3589 SkPath path, pathB;
3590 path.setFillType(SkPathFillType::kWinding);
3591 path.moveTo(0,1);
3592 path.cubicTo(4,6, 5,1, 6,2);
3593 path.close();
3594 pathB.setFillType(SkPathFillType::kWinding);
3595 pathB.moveTo(1,5);
3596 pathB.cubicTo(2,6, 1,0, 6,4);
3597 pathB.close();
3598 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3599 }
3600
loop1(skiatest::Reporter * reporter,const char * filename)3601 static void loop1(skiatest::Reporter* reporter, const char* filename) {
3602 SkPath path, pathB;
3603 path.moveTo(0,1);
3604 path.cubicTo(1,5, -5.66666651f,3.33333349f, 8.83333302f,2.33333349f);
3605 path.close();
3606 pathB.moveTo(1,5);
3607 pathB.cubicTo(-5.66666651f,3.33333349f, 8.83333302f,2.33333349f, 0,1);
3608 pathB.close();
3609 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3610 }
3611
loop1asQuad(skiatest::Reporter * reporter,const char * filename)3612 static void loop1asQuad(skiatest::Reporter* reporter, const char* filename) {
3613 CubicPts cubic1 = {{{0,1}, {1,5}, {-5.66666651f,3.33333349f}, {8.83333302f,2.33333349f}}};
3614 CubicPts cubic2 = {{{1,5}, {-5.66666651f,3.33333349f}, {8.83333302f,2.33333349f}, {0,1}}};
3615 SkDCubic c1, c2;
3616 c1.debugSet(cubic1.fPts);
3617 c2.debugSet(cubic2.fPts);
3618 double c1InflectionTs[2], c2InflectionTs[2];
3619 SkDEBUGCODE(int c1InfTCount =) c1.findInflections(c1InflectionTs);
3620 SkASSERT(c1InfTCount == 2);
3621 SkDEBUGCODE(int c2InfTCount =) c2.findInflections(c2InflectionTs);
3622 SkASSERT(c2InfTCount == 1);
3623 SkASSERT(c1InflectionTs[0] > c1InflectionTs[1]);
3624 SkDCubicPair c1pair = c1.chopAt(c1InflectionTs[0]);
3625 SkDCubicPair c1apair = c1pair.first().chopAt(c1InflectionTs[1]);
3626 SkDCubicPair c2pair = c2.chopAt(c2InflectionTs[0]);
3627 SkDQuad q1[2] = { c1pair.first().toQuad(), c1pair.second().toQuad() };
3628 SkDQuad q1a[2] = { c1apair.first().toQuad(), c1apair.second().toQuad() };
3629 SkDQuad q2[2] = { c2pair.first().toQuad(), c2pair.second().toQuad() };
3630 SkPath path, pathB;
3631 path.moveTo(q1a[0].fPts[0].asSkPoint());
3632 path.quadTo(q1a[0].fPts[1].asSkPoint(), q1a[0].fPts[2].asSkPoint());
3633 path.quadTo(q1a[1].fPts[1].asSkPoint(), q1a[1].fPts[2].asSkPoint());
3634 path.quadTo(q1[1].fPts[1].asSkPoint(), q1[1].fPts[2].asSkPoint());
3635 path.close();
3636 pathB.moveTo(q2[0].fPts[0].asSkPoint());
3637 pathB.quadTo(q2[0].fPts[1].asSkPoint(), q2[0].fPts[2].asSkPoint());
3638 pathB.quadTo(q2[1].fPts[1].asSkPoint(), q2[1].fPts[2].asSkPoint());
3639 pathB.close();
3640 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3641 }
3642
loop2(skiatest::Reporter * reporter,const char * filename)3643 static void loop2(skiatest::Reporter* reporter, const char* filename) {
3644 SkPath path, pathB;
3645 path.moveTo(0,1);
3646 path.cubicTo(3,4, 3.f,4.f, 4.5f,1.5f);
3647 path.close();
3648 pathB.moveTo(3,4);
3649 pathB.cubicTo(3.f,4.f, 4.5f,1.5f, 0,1);
3650 pathB.close();
3651 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3652 }
3653
loop3(skiatest::Reporter * reporter,const char * filename)3654 static void loop3(skiatest::Reporter* reporter, const char* filename) {
3655 SkPath path, pathB;
3656 path.moveTo(0,1);
3657 path.cubicTo(3,5, -3.66666651f,0, 10.5f,-1.66666651f);
3658 path.close();
3659 pathB.moveTo(3,5);
3660 pathB.cubicTo(-3.66666651f,0, 10.5f,-1.66666651f, 0,1);
3661 pathB.close();
3662 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3663 }
3664
loop4(skiatest::Reporter * reporter,const char * filename)3665 static void loop4(skiatest::Reporter* reporter, const char* filename) {
3666 SkPath path, pathB;
3667 path.moveTo(0,5);
3668 path.cubicTo(1,5, 1,4, 0.833333313f,3);
3669 path.close();
3670 pathB.moveTo(1,5);
3671 pathB.cubicTo(1,4, 0.833333313f,3, 0,5);
3672 pathB.close();
3673 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3674 }
3675
issue3517(skiatest::Reporter * reporter,const char * filename)3676 static void issue3517(skiatest::Reporter* reporter, const char* filename) {
3677 SkPath path, pathB;
3678
3679 const char str[] = "M31.35 57.75L31.35 57.75C31.9 57.7486 32.45 57.7948 33 57.7413C33.55 57.6878 34.1 57.5014 34.65 57.4291C35.2 57.3569 35.75 57.3223 36.3 57.3079C36.85 57.2935 37.4 57.3143 37.95 57.3428C38.5 57.3712 39.05 57.4112 39.6 57.4786C40.15 57.546 40.7 57.7029 41.25 57.7472C41.8 57.7916 42.35 57.7962 42.9 57.7445C43.45 57.6928 44 57.5345 44.55 57.4373C45.1 57.34 45.65 57.2115 46.2 57.1611C46.75 57.1107 47.3 57.1371 47.85 57.1349C48.4 57.1327 48.95 57.144 49.5 57.1478C50.05 57.1516 50.6 57.1553 51.15 57.1579C51.7 57.1605 52.25 57.1601 52.8 57.1634C53.35 57.1667 53.9 57.1731 54.45 57.1776C55 57.182 55.55 57.1916 56.1 57.19C56.65 57.1884 57.2 57.178 57.75 57.168C58.3 57.158 58.85 57.1355 59.4 57.1299C59.95 57.1243 60.5 57.1338 61.05 57.1345C61.6 57.1352 62.15 57.124 62.7 57.134C63.25 57.1441 63.8 57.1731 64.35 57.195C64.9 57.2169 65.45 57.2532 66 57.2655C66.55 57.2778 67.1 57.2647 67.65 57.2687C68.2 57.2728 68.75 57.267 69.3 57.2896C69.85 57.3122 70.4 57.371 70.95 57.4044C71.5 57.4377 72.05 57.4668 72.6 57.4896C73.15 57.5123 73.7 57.545 74.25 57.5408C74.8 57.5365 75.35 57.5068 75.9 57.4641C76.45 57.4213 77 57.3244 77.55 57.2842C78.1 57.244 78.65 57.2163 79.2 57.2228C79.75 57.2293 80.3 57.29 80.85 57.3232C81.4 57.3563 81.95 57.396 82.5 57.4219C83.05 57.4478 83.6 57.4637 84.15 57.4787C84.7 57.4937 85.25 57.5011 85.8 57.5121C86.35 57.523 86.9 57.5411 87.45 57.5444C88 57.5477 88.55 57.5663 89.1 57.5318C89.65 57.4972 90.2 57.3126 90.75 57.337C91.3 57.3613 91.85 57.6088 92.4 57.6776C92.95 57.7465 93.5 57.7379 94.05 57.75C94.6 57.7621 95.15 57.75 95.7 57.75L95.7 57.75L31.35 57.75Z";
3680 SkParsePath::FromSVGString(str, &path);
3681
3682 const char strB[] = "M31.35 57.75L31.35 57.75C31.9 57.7514 32.45 57.7052 33 57.7587C33.55 57.8122 34.1 57.9986 34.65 58.0709C35.2 58.1431 35.75 58.1777 36.3 58.1921C36.85 58.2065 37.4 58.1857 37.95 58.1572C38.5 58.1288 39.05 58.0888 39.6 58.0214C40.15 57.954 40.7 57.7971 41.25 57.7528C41.8 57.7084 42.35 57.7038 42.9 57.7555C43.45 57.8072 44 57.9655 44.55 58.0627C45.1 58.16 45.65 58.2885 46.2 58.3389C46.75 58.3893 47.3 58.3629 47.85 58.3651C48.4 58.3673 48.95 58.356 49.5 58.3522C50.05 58.3484 50.6 58.3447 51.15 58.3421C51.7 58.3395 52.25 58.3399 52.8 58.3366C53.35 58.3333 53.9 58.3269 54.45 58.3224C55 58.318 55.55 58.3084 56.1 58.31C56.65 58.3116 57.2 58.322 57.75 58.332C58.3 58.342 58.85 58.3645 59.4 58.3701C59.95 58.3757 60.5 58.3662 61.05 58.3655C61.6 58.3648 62.15 58.376 62.7 58.366C63.25 58.3559 63.8 58.3269 64.35 58.305C64.9 58.2831 65.45 58.2468 66 58.2345C66.55 58.2222 67.1 58.2353 67.65 58.2313C68.2 58.2272 68.75 58.233 69.3 58.2104C69.85 58.1878 70.4 58.129 70.95 58.0956C71.5 58.0623 72.05 58.0332 72.6 58.0104C73.15 57.9877 73.7 57.955 74.25 57.9592C74.8 57.9635 75.35 57.9932 75.9 58.0359C76.45 58.0787 77 58.1756 77.55 58.2158C78.1 58.256 78.65 58.2837 79.2 58.2772C79.75 58.2707 80.3 58.21 80.85 58.1768C81.4 58.1437 81.95 58.104 82.5 58.0781C83.05 58.0522 83.6 58.0363 84.15 58.0213C84.7 58.0063 85.25 57.9989 85.8 57.9879C86.35 57.977 86.9 57.9589 87.45 57.9556C88 57.9523 88.55 57.9337 89.1 57.9682C89.65 58.0028 90.2 58.1874 90.75 58.163C91.3 58.1387 91.85 57.8912 92.4 57.8224C92.95 57.7535 93.5 57.7621 94.05 57.75C94.6 57.7379 95.15 57.75 95.7 57.75L95.7 57.75L31.35 57.75Z";
3683 SkParsePath::FromSVGString(strB, &pathB);
3684 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3685 }
3686
cubicOp119(skiatest::Reporter * reporter,const char * filename)3687 static void cubicOp119(skiatest::Reporter* reporter, const char* filename) {
3688 SkPath path, pathB;
3689 path.setFillType(SkPathFillType::kWinding);
3690 path.moveTo(0,1);
3691 path.cubicTo(3,5, 2,1, 3,1);
3692 path.close();
3693 pathB.setFillType(SkPathFillType::kWinding);
3694 pathB.moveTo(1,2);
3695 pathB.cubicTo(1,3, 1,0, 5,3);
3696 pathB.close();
3697 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3698 }
3699
cubicOp120(skiatest::Reporter * reporter,const char * filename)3700 static void cubicOp120(skiatest::Reporter* reporter, const char* filename) {
3701 SkPath path, pathB;
3702 path.setFillType(SkPathFillType::kWinding);
3703 path.moveTo(0,1);
3704 path.cubicTo(2,4, 2,1, 4,0);
3705 path.close();
3706 pathB.setFillType(SkPathFillType::kWinding);
3707 pathB.moveTo(1,2);
3708 pathB.cubicTo(0,4, 1,0, 4,2);
3709 pathB.close();
3710 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3711 }
3712
cubicOp121(skiatest::Reporter * reporter,const char * filename)3713 static void cubicOp121(skiatest::Reporter* reporter, const char* filename) {
3714 SkPath path, pathB;
3715 path.setFillType(SkPathFillType::kWinding);
3716 path.moveTo(0,1);
3717 path.cubicTo(3,4, 3,2, 4,3);
3718 path.close();
3719 pathB.setFillType(SkPathFillType::kWinding);
3720 pathB.moveTo(2,3);
3721 pathB.cubicTo(3,4, 1,0, 4,3);
3722 pathB.close();
3723 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3724 }
3725
3726 // FIXME : haven't debugged this failure yet
cubicOp122(skiatest::Reporter * reporter,const char * filename)3727 static void cubicOp122(skiatest::Reporter* reporter, const char* filename) {
3728 SkPath path, pathB;
3729 path.setFillType(SkPathFillType::kWinding);
3730 path.moveTo(0,1);
3731 path.cubicTo(3,5, 4,1, 4,0);
3732 path.close();
3733 pathB.setFillType(SkPathFillType::kWinding);
3734 pathB.moveTo(1,4);
3735 pathB.cubicTo(0,4, 1,0, 5,3);
3736 pathB.close();
3737 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3738 }
3739
cubicOp123(skiatest::Reporter * reporter,const char * filename)3740 static void cubicOp123(skiatest::Reporter* reporter, const char* filename) {
3741 SkPath path, pathB;
3742 path.setFillType(SkPathFillType::kWinding);
3743 path.moveTo(0,1);
3744 path.cubicTo(1,5, 2,0, 6,0);
3745 path.close();
3746 pathB.setFillType(SkPathFillType::kWinding);
3747 pathB.moveTo(0,2);
3748 pathB.cubicTo(0,6, 1,0, 5,1);
3749 pathB.close();
3750 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3751 }
3752
loop5(skiatest::Reporter * reporter,const char * filename)3753 static void loop5(skiatest::Reporter* reporter, const char* filename) {
3754 SkPath path, pathB;
3755 path.moveTo(0,2);
3756 path.cubicTo(1,2, 1,1.66666663f, 0.833333313f,1.33333325f);
3757 path.close();
3758 pathB.moveTo(1,2);
3759 pathB.cubicTo(1,1.66666663f, 0.833333313f,1.33333325f, 0,2);
3760 pathB.close();
3761 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3762 }
3763
loop6(skiatest::Reporter * reporter,const char * filename)3764 static void loop6(skiatest::Reporter* reporter, const char* filename) {
3765 SkPath path, pathB;
3766 path.moveTo(0,1);
3767 path.cubicTo(1,3, -1.66666675f,1.66666663f, 4.16666651f,1.00000012f);
3768 path.close();
3769 pathB.moveTo(1,3);
3770 pathB.cubicTo(-1.66666675f,1.66666663f, 4.16666651f,1.00000012f, 0,1);
3771 pathB.close();
3772 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3773 }
3774
cubicOp124(skiatest::Reporter * reporter,const char * filename)3775 static void cubicOp124(skiatest::Reporter* reporter, const char* filename) {
3776 SkPath path, pathB;
3777 path.setFillType(SkPathFillType::kWinding);
3778 path.moveTo(0,1);
3779 path.cubicTo(1,5, 6,0, 3,0);
3780 path.close();
3781 pathB.setFillType(SkPathFillType::kWinding);
3782 pathB.moveTo(0,6);
3783 pathB.cubicTo(0,3, 1,0, 5,1);
3784 pathB.close();
3785 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3786 }
3787
cubicOp125(skiatest::Reporter * reporter,const char * filename)3788 static void cubicOp125(skiatest::Reporter* reporter, const char* filename) {
3789 SkPath path, pathB;
3790 path.setFillType(SkPathFillType::kWinding);
3791 path.moveTo(0,1);
3792 path.cubicTo(3,6, 3,1, 6,2);
3793 path.close();
3794 pathB.setFillType(SkPathFillType::kWinding);
3795 pathB.moveTo(1,3);
3796 pathB.cubicTo(2,6, 1,0, 6,3);
3797 pathB.close();
3798 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3799 }
3800
cubicOp126(skiatest::Reporter * reporter,const char * filename)3801 static void cubicOp126(skiatest::Reporter* reporter, const char* filename) {
3802 SkPath path, pathB;
3803 path.setFillType(SkPathFillType::kWinding);
3804 path.moveTo(0,1);
3805 path.cubicTo(0,3, 6,0, 2,1);
3806 path.close();
3807 pathB.setFillType(SkPathFillType::kWinding);
3808 pathB.moveTo(0,6);
3809 pathB.cubicTo(1,2, 1,0, 3,0);
3810 pathB.close();
3811 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3812 }
3813
cubicOp127(skiatest::Reporter * reporter,const char * filename)3814 static void cubicOp127(skiatest::Reporter* reporter, const char* filename) {
3815 SkPath path, pathB;
3816 path.setFillType(SkPathFillType::kWinding);
3817 path.moveTo(0,1);
3818 path.cubicTo(1,5, 6,0, 3,0);
3819 path.close();
3820 pathB.setFillType(SkPathFillType::kWinding);
3821 pathB.moveTo(0,6);
3822 pathB.cubicTo(0,3, 1,0, 5,1);
3823 pathB.close();
3824 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3825 }
3826
cubicOp128(skiatest::Reporter * reporter,const char * filename)3827 static void cubicOp128(skiatest::Reporter* reporter, const char* filename) {
3828 SkPath path, pathB;
3829 path.setFillType(SkPathFillType::kWinding);
3830 path.moveTo(0,1);
3831 path.cubicTo(0,3, 3,2, 5,2);
3832 path.close();
3833 pathB.setFillType(SkPathFillType::kWinding);
3834 pathB.moveTo(2,3);
3835 pathB.cubicTo(2,5, 1,0, 3,0);
3836 pathB.close();
3837 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3838 }
3839
cubicOp129(skiatest::Reporter * reporter,const char * filename)3840 static void cubicOp129(skiatest::Reporter* reporter, const char* filename) {
3841 SkPath path, pathB;
3842 path.setFillType(SkPathFillType::kWinding);
3843 path.moveTo(5,6);
3844 path.cubicTo(3,4, 2,0, 2,1);
3845 path.close();
3846 pathB.setFillType(SkPathFillType::kWinding);
3847 pathB.moveTo(0,2);
3848 pathB.cubicTo(1,2, 6,5, 4,3);
3849 pathB.close();
3850 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3851 }
3852
cubicOp130(skiatest::Reporter * reporter,const char * filename)3853 static void cubicOp130(skiatest::Reporter* reporter, const char* filename) {
3854 SkPath path, pathB;
3855 path.setFillType(SkPathFillType::kWinding);
3856 path.moveTo(5,6);
3857 path.cubicTo(4,6, 3,0, 2,1);
3858 path.close();
3859 pathB.setFillType(SkPathFillType::kWinding);
3860 pathB.moveTo(0,3);
3861 pathB.cubicTo(1,2, 6,5, 6,4);
3862 pathB.close();
3863 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3864 }
3865
complex_to_quads(const SkPoint pts[],SkPath * path)3866 static void complex_to_quads(const SkPoint pts[], SkPath* path) {
3867 SkScalar loopT[3];
3868 if (SkDCubic::ComplexBreak(pts, loopT)) {
3869 SkPoint cubicPair[7];
3870 SkChopCubicAt(pts, cubicPair, loopT[0]);
3871 SkDCubic c1, c2;
3872 c1.set(cubicPair);
3873 c2.set(&cubicPair[3]);
3874 SkDQuad q1 = c1.toQuad();
3875 SkDQuad q2 = c2.toQuad();
3876 path->quadTo(q1[1].asSkPoint(), q1[2].asSkPoint());
3877 path->quadTo(q2[1].asSkPoint(), q2[2].asSkPoint());
3878 } else {
3879 path->cubicTo(pts[1], pts[2], pts[3]);
3880 }
3881 }
3882
cubicOp130a(skiatest::Reporter * reporter,const char * filename)3883 static void cubicOp130a(skiatest::Reporter* reporter, const char* filename) {
3884 SkPath path, pathB;
3885 path.setFillType(SkPathFillType::kWinding);
3886 path.moveTo(5,6);
3887 SkPoint pts[] = { {5,6}, {4,6}, {3,0}, {2,1} };
3888 complex_to_quads(pts, &path);
3889 path.close();
3890 pathB.setFillType(SkPathFillType::kWinding);
3891 pathB.moveTo(0,3);
3892 SkPoint pts2[] = { {0,3}, {1,2}, {6,5}, {6,4} };
3893 complex_to_quads(pts2, &path);
3894 pathB.close();
3895 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3896 }
3897
cubicOp131(skiatest::Reporter * reporter,const char * filename)3898 static void cubicOp131(skiatest::Reporter* reporter, const char* filename) {
3899 SkPath path, pathB;
3900 path.setFillType(SkPathFillType::kWinding);
3901 path.moveTo(0,1);
3902 path.cubicTo(3,4, 3,0, 6,2);
3903 path.close();
3904 pathB.setFillType(SkPathFillType::kWinding);
3905 pathB.moveTo(0,3);
3906 pathB.cubicTo(2,6, 1,0, 4,3);
3907 pathB.close();
3908 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3909 }
3910
circlesOp1(skiatest::Reporter * reporter,const char * filename)3911 static void circlesOp1(skiatest::Reporter* reporter, const char* filename) {
3912 SkPath path, pathB;
3913 path.setFillType(SkPathFillType::kWinding);
3914 path.addCircle(0, 1, 2, SkPathDirection::kCCW);
3915 pathB.setFillType(SkPathFillType::kWinding);
3916 pathB.addCircle(0, 1, 1, SkPathDirection::kCW);
3917 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3918 }
3919
circlesOp2(skiatest::Reporter * reporter,const char * filename)3920 static void circlesOp2(skiatest::Reporter* reporter, const char* filename) {
3921 SkPath path, pathB;
3922 path.setFillType(SkPathFillType::kWinding);
3923 path.addCircle(0, 1, 4, SkPathDirection::kCCW);
3924 pathB.setFillType(SkPathFillType::kWinding);
3925 pathB.addCircle(0, 4, 3, SkPathDirection::kCW);
3926 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3927 }
3928
rRect1x(skiatest::Reporter * reporter,const char * filename)3929 static void rRect1x(skiatest::Reporter* reporter, const char* filename) {
3930 SkPath path, pathB;
3931 path.setFillType(SkPathFillType::kEvenOdd);
3932 path.moveTo(20.65f, 5.65f);
3933 path.conicTo(20.65f, 1.13612f, 25.1404f, 0.65f, 0.888488f);
3934 path.lineTo(25.65f, 0.65f);
3935 path.lineTo(26.1596f, 0.67604f);
3936 path.conicTo(30.65f, 1.13612f, 30.65f, 5.65f, 0.888488f);
3937 path.lineTo(30.65f, 25.65f);
3938 path.conicTo(30.65f, 20.65f, 25.65f, 20.65f, 0.707107f);
3939 path.lineTo(20.65f, 20.65f);
3940 path.lineTo(20.65f, 5.65f);
3941 path.close();
3942 path.moveTo(20.65f, 20.65f);
3943 path.lineTo(5.65f, 20.65f);
3944 path.conicTo(0.65f, 20.65f, 0.65f, 25.65f, 0.707107f);
3945 path.lineTo(0.65f, 45.65f);
3946 path.conicTo(0.65f, 50.65f, 5.65f, 50.65f, 0.707107f);
3947 path.lineTo(25.65f, 50.65f);
3948 path.conicTo(30.65f, 50.65f, 30.65f, 45.65f, 0.707107f);
3949 path.lineTo(30.65f, 25.65f);
3950 path.conicTo(30.65f, 30.65f, 25.65f, 30.65f, 0.707107f);
3951 path.conicTo(20.65f, 30.65f, 20.65f, 25.65f, 0.707107f);
3952 path.lineTo(20.65f, 20.65f);
3953 path.close();
3954 SkPath path1(path);
3955
3956 path.reset();
3957 path.setFillType(SkPathFillType::kWinding);
3958 path.moveTo(20.65f, 45.65f);
3959 path.lineTo(20.65f, 25.65f);
3960 path.conicTo(20.65f, 20.65f, 25.65f, 20.65f, 0.707107f);
3961 path.lineTo(45.65f, 20.65f);
3962 path.conicTo(50.65f, 20.65f, 50.65f, 25.65f, 0.707107f);
3963 path.lineTo(50.65f, 45.65f);
3964 path.conicTo(50.65f, 50.65f, 45.65f, 50.65f, 0.707107f);
3965 path.lineTo(25.65f, 50.65f);
3966 path.conicTo(20.65f, 50.65f, 20.65f, 45.65f, 0.707107f);
3967 path.close();
3968 SkPath path2(path);
3969
3970 testPathOp(reporter, path1, path2, kDifference_SkPathOp, filename);
3971 }
3972
loop7(skiatest::Reporter * reporter,const char * filename)3973 static void loop7(skiatest::Reporter* reporter, const char* filename) {
3974 SkPath path, pathB;
3975 path.moveTo(0,1);
3976 path.cubicTo(3,4, -1,0, 8.5f,-2.5f);
3977 path.close();
3978 pathB.moveTo(3,4);
3979 pathB.cubicTo(-1,0, 8.5f,-2.5f, 0,1);
3980 pathB.close();
3981 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3982 }
3983
rects5(skiatest::Reporter * reporter,const char * filename)3984 static void rects5(skiatest::Reporter* reporter, const char* filename) {
3985 SkPath path, pathB;
3986 path.setFillType(SkPathFillType::kWinding);
3987 path.addRect(5, 5, 6, 6, SkPathDirection::kCW);
3988 path.addRect(5, 5, 6, 6, SkPathDirection::kCW);
3989 pathB.setFillType(SkPathFillType::kEvenOdd);
3990 pathB.addRect(0, 0, 6, 6, SkPathDirection::kCW);
3991 pathB.addRect(5, 5, 6, 6, SkPathDirection::kCW);
3992 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3993 }
3994
loop8(skiatest::Reporter * reporter,const char * filename)3995 static void loop8(skiatest::Reporter* reporter, const char* filename) {
3996 SkPath path, pathB;
3997 path.moveTo(0,1);
3998 path.cubicTo(1,4, -3.83333325f,0.166666627f, 6,-1);
3999 path.close();
4000 pathB.moveTo(1,4);
4001 pathB.cubicTo(-3.83333325f,0.166666627f, 6,-1, 0,1);
4002 pathB.close();
4003 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4004 }
4005
loop9(skiatest::Reporter * reporter,const char * filename)4006 static void loop9(skiatest::Reporter* reporter, const char* filename) {
4007 SkPath path, pathB;
4008 path.moveTo(0,1);
4009 path.cubicTo(1,3, -2.5f,0, 3.33333325f,-0.666666627f);
4010 path.close();
4011 pathB.moveTo(1,3);
4012 pathB.cubicTo(-2.5f,0, 3.33333325f,-0.666666627f, 0,1);
4013 pathB.close();
4014 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4015 }
4016
circlesOp3(skiatest::Reporter * reporter,const char * filename)4017 static void circlesOp3(skiatest::Reporter* reporter, const char* filename) {
4018 SkPath path, pathB;
4019 path.setFillType(SkPathFillType::kWinding);
4020 path.addCircle(0, 1, 2, SkPathDirection::kCCW);
4021 pathB.setFillType(SkPathFillType::kWinding);
4022 pathB.addCircle(3, 5, 3, SkPathDirection::kCW);
4023 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4024 }
4025
loop10(skiatest::Reporter * reporter,const char * filename)4026 static void loop10(skiatest::Reporter* reporter, const char* filename) {
4027 SkPath path, pathB;
4028 path.moveTo(5,6);
4029 path.cubicTo(1,2, 1,2, -3.66666651f,13.333334f);
4030 path.close();
4031 pathB.moveTo(1,2);
4032 pathB.cubicTo(1,2, -3.66666651f,13.333334f, 5,6);
4033 pathB.close();
4034 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4035 }
4036
loop11(skiatest::Reporter * reporter,const char * filename)4037 static void loop11(skiatest::Reporter* reporter, const char* filename) {
4038 SkPath path, pathB;
4039 path.moveTo(0,1);
4040 path.cubicTo(1,3, -1.83333349f,1.33333337f, 4,-1);
4041 path.close();
4042 pathB.moveTo(1,3);
4043 pathB.cubicTo(-1.83333349f,1.33333337f, 4,-1, 0,1);
4044 pathB.close();
4045 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4046 }
4047
cubicOp132(skiatest::Reporter * reporter,const char * filename)4048 static void cubicOp132(skiatest::Reporter* reporter, const char* filename) {
4049 SkPath path, pathB;
4050 path.setFillType(SkPathFillType::kWinding);
4051 path.moveTo(5,6);
4052 path.cubicTo(3,4, 3,0, 3,2);
4053 path.close();
4054 pathB.setFillType(SkPathFillType::kWinding);
4055 pathB.moveTo(0,3);
4056 pathB.cubicTo(2,3, 6,5, 4,3);
4057 pathB.close();
4058 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4059 }
4060
loop12(skiatest::Reporter * reporter,const char * filename)4061 static void loop12(skiatest::Reporter* reporter, const char* filename) {
4062 SkPath path, pathB;
4063 path.moveTo(1,2);
4064 path.cubicTo(0,6, -3.16666675f,3.66666675f, 6.33333349f,3.33333349f);
4065 path.close();
4066 pathB.moveTo(0,6);
4067 pathB.cubicTo(-3.16666675f,3.66666675f, 6.33333349f,3.33333349f, 1,2);
4068 pathB.close();
4069 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4070 }
4071
cubicOp133(skiatest::Reporter * reporter,const char * filename)4072 static void cubicOp133(skiatest::Reporter* reporter, const char* filename) {
4073 SkPath path, pathB;
4074 path.setFillType(SkPathFillType::kWinding);
4075 path.moveTo(5,6);
4076 path.cubicTo(5,6, 5,0, 4,1);
4077 path.close();
4078 pathB.setFillType(SkPathFillType::kWinding);
4079 pathB.moveTo(0,5);
4080 pathB.cubicTo(1,4, 6,5, 6,5);
4081 pathB.close();
4082 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4083 }
4084
cubicOp134(skiatest::Reporter * reporter,const char * filename)4085 static void cubicOp134(skiatest::Reporter* reporter, const char* filename) {
4086 SkPath path, pathB;
4087 path.setFillType(SkPathFillType::kWinding);
4088 path.moveTo(5,6);
4089 path.cubicTo(5,6, 6,0, 3,1);
4090 path.close();
4091 pathB.setFillType(SkPathFillType::kWinding);
4092 pathB.moveTo(0,6);
4093 pathB.cubicTo(1,3, 6,5, 6,5);
4094 pathB.close();
4095 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4096 }
4097
cubicOp135(skiatest::Reporter * reporter,const char * filename)4098 static void cubicOp135(skiatest::Reporter* reporter, const char* filename) {
4099 SkPath path, pathB;
4100 path.setFillType(SkPathFillType::kWinding);
4101 path.moveTo(5,6);
4102 path.cubicTo(5,6, 6,0, 4,1);
4103 path.close();
4104 pathB.setFillType(SkPathFillType::kWinding);
4105 pathB.moveTo(0,6);
4106 pathB.cubicTo(1,4, 6,5, 6,5);
4107 pathB.close();
4108 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4109 }
4110
cubicOp136(skiatest::Reporter * reporter,const char * filename)4111 static void cubicOp136(skiatest::Reporter* reporter, const char* filename) {
4112 SkPath path, pathB;
4113 path.setFillType(SkPathFillType::kWinding);
4114 path.moveTo(5,6);
4115 path.cubicTo(5,6, 5,0, 3,1);
4116 path.close();
4117 pathB.setFillType(SkPathFillType::kWinding);
4118 pathB.moveTo(0,5);
4119 pathB.cubicTo(1,3, 6,5, 6,5);
4120 pathB.close();
4121 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4122 }
4123
cubicOp136a(skiatest::Reporter * reporter,const char * filename)4124 static void cubicOp136a(skiatest::Reporter* reporter, const char* filename) {
4125 SkPath path, pathB;
4126 path.setFillType(SkPathFillType::kWinding);
4127 path.moveTo(5,6);
4128 path.quadTo(5,0, 3,1);
4129 path.close();
4130 pathB.setFillType(SkPathFillType::kWinding);
4131 pathB.moveTo(0,5);
4132 pathB.cubicTo(1,3, 6,5, 6,5);
4133 pathB.close();
4134 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4135 }
4136
cubics137(skiatest::Reporter * reporter,const char * filename)4137 static void cubics137(skiatest::Reporter* reporter, const char* filename) {
4138 SkPath path, pathB;
4139 path.setFillType(SkPathFillType::kWinding);
4140 path.moveTo(0, 5);
4141 path.cubicTo(3, 6, 1, 0, 3, 2);
4142 path.close();
4143 pathB.setFillType(SkPathFillType::kWinding);
4144 pathB.moveTo(0, 1);
4145 pathB.cubicTo(2, 3, 5, 0, 6, 3);
4146 pathB.close();
4147 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4148 }
4149
cubics138(skiatest::Reporter * reporter,const char * filename)4150 static void cubics138(skiatest::Reporter* reporter, const char* filename) {
4151 SkPath path, pathB;
4152 path.setFillType(SkPathFillType::kWinding);
4153 path.moveTo(0, 5);
4154 path.cubicTo(3, 6, 1, 0, 4, 2);
4155 path.close();
4156 pathB.setFillType(SkPathFillType::kWinding);
4157 pathB.moveTo(0, 1);
4158 pathB.cubicTo(2, 4, 5, 0, 6, 3);
4159 pathB.close();
4160 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4161 }
4162
4163 // three curves intersect successfully nearby -- the angle only gets 2 of the 3 pts
cubicOp139(skiatest::Reporter * reporter,const char * filename)4164 static void cubicOp139(skiatest::Reporter* reporter, const char* filename) {
4165 SkPath path, pathB;
4166 path.setFillType(SkPathFillType::kWinding);
4167 path.moveTo(0,2);
4168 path.cubicTo(0,4, 3,1, 5,1);
4169 path.close();
4170 pathB.setFillType(SkPathFillType::kWinding);
4171 pathB.moveTo(1,3);
4172 pathB.cubicTo(1,5, 2,0, 4,0);
4173 pathB.close();
4174 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4175 }
4176
cubicOp140(skiatest::Reporter * reporter,const char * filename)4177 static void cubicOp140(skiatest::Reporter* reporter, const char* filename) {
4178 SkPath path, pathB;
4179 path.setFillType(SkPathFillType::kWinding);
4180 path.moveTo(0,2);
4181 path.cubicTo(1,2, 5,4, 3,2);
4182 path.close();
4183 pathB.setFillType(SkPathFillType::kWinding);
4184 pathB.moveTo(4,5);
4185 pathB.cubicTo(2,3, 2,0, 2,1);
4186 pathB.close();
4187 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4188 }
4189
cubicOp141(skiatest::Reporter * reporter,const char * filename)4190 static void cubicOp141(skiatest::Reporter* reporter, const char* filename) {
4191 SkPath path, pathB;
4192 path.setFillType(SkPathFillType::kWinding);
4193 path.moveTo(0,2);
4194 path.cubicTo(1,2, 6,4, 3,2);
4195 path.close();
4196 pathB.setFillType(SkPathFillType::kWinding);
4197 pathB.moveTo(4,6);
4198 pathB.cubicTo(2,3, 2,0, 2,1);
4199 pathB.close();
4200 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4201 }
4202
quadRect1(skiatest::Reporter * reporter,const char * filename)4203 static void quadRect1(skiatest::Reporter* reporter, const char* filename) {
4204 SkPath path, pathB;
4205 path.moveTo(6,15);
4206 path.quadTo(16,0, 8,4);
4207 path.quadTo(2,7, 12,12);
4208 path.close();
4209 pathB.addRect(4,11, 13,16);
4210 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4211 }
4212
quadRect2(skiatest::Reporter * reporter,const char * filename)4213 static void quadRect2(skiatest::Reporter* reporter, const char* filename) {
4214 SkPath path, pathB;
4215 path.moveTo(5,12);
4216 path.quadTo(15,7, 9,4);
4217 path.quadTo(1,0, 11,15);
4218 path.close();
4219 pathB.addRect(4,11, 13,16);
4220 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4221 }
4222
quadRect3(skiatest::Reporter * reporter,const char * filename)4223 static void quadRect3(skiatest::Reporter* reporter, const char* filename) {
4224 SkPath path, pathB;
4225 path.moveTo(12,12);
4226 path.quadTo(2,7, 8,4);
4227 path.quadTo(16,0, 6,15);
4228 path.close();
4229 pathB.addRect(4,11, 13,16);
4230 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4231 }
4232
quadRect4(skiatest::Reporter * reporter,const char * filename)4233 static void quadRect4(skiatest::Reporter* reporter, const char* filename) {
4234 SkPath path, pathB;
4235 path.moveTo(11,15);
4236 path.quadTo(1,0, 9,4);
4237 path.quadTo(15,7, 5,12);
4238 path.close();
4239 pathB.addRect(4,11, 13,16);
4240 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4241 }
4242
quadRect5(skiatest::Reporter * reporter,const char * filename)4243 static void quadRect5(skiatest::Reporter* reporter, const char* filename) {
4244 SkPath path, pathB;
4245 path.moveTo(11,13);
4246 path.quadTo(4,4, 8,4);
4247 path.quadTo(12,4, 5,13);
4248 path.close();
4249 pathB.addRect(4,11, 13,16);
4250 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4251 }
4252
quadRect6(skiatest::Reporter * reporter,const char * filename)4253 static void quadRect6(skiatest::Reporter* reporter, const char* filename) {
4254 SkPath path, pathB;
4255 path.moveTo(5,13);
4256 path.quadTo(12,4, 8,4);
4257 path.quadTo(4,4, 11,13);
4258 path.close();
4259 pathB.addRect(4,11, 13,16);
4260 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4261 }
4262
loops4i(skiatest::Reporter * reporter,const char * filename)4263 static void loops4i(skiatest::Reporter* reporter, const char* filename) {
4264 SkPath path, pathB;
4265 path.setFillType(SkPathFillType::kWinding);
4266 path.moveTo(0, 3);
4267 path.cubicTo(0, 2, 0, 2, -1.66666663f, 2.16666675f);
4268 path.close();
4269 pathB.setFillType(SkPathFillType::kWinding);
4270 pathB.moveTo(0, 2);
4271 pathB.cubicTo(0, 2, -1.66666663f, 2.16666675f, 0, 3);
4272 pathB.close();
4273 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4274 }
4275
loops5i(skiatest::Reporter * reporter,const char * filename)4276 static void loops5i(skiatest::Reporter* reporter, const char* filename) {
4277 SkPath path, pathB;
4278 path.setFillType(SkPathFillType::kWinding);
4279 path.moveTo(1, 2);
4280 path.cubicTo(0, 2, 0, 2, 0.166666672f, 2.66666675f);
4281 path.close();
4282 pathB.setFillType(SkPathFillType::kWinding);
4283 pathB.moveTo(0, 2);
4284 pathB.cubicTo(0, 2, 0.166666672f, 2.66666675f, 1, 2);
4285 pathB.close();
4286 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4287 }
4288
cubicOp142(skiatest::Reporter * reporter,const char * filename)4289 static void cubicOp142(skiatest::Reporter* reporter, const char* filename) {
4290 SkPath path, pathB;
4291 path.setFillType(SkPathFillType::kWinding);
4292 path.moveTo(5,6);
4293 path.cubicTo(2,5, 2,1, 1,0);
4294 path.close();
4295 pathB.setFillType(SkPathFillType::kWinding);
4296 pathB.moveTo(1,2);
4297 pathB.cubicTo(0,1, 6,5, 5,2);
4298 pathB.close();
4299 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4300 }
4301
cubics6d(skiatest::Reporter * reporter,const char * filename)4302 static void cubics6d(skiatest::Reporter* reporter, const char* filename) {
4303 SkPath path, pathB;
4304 path.setFillType(SkPathFillType::kWinding);
4305 path.moveTo(3, 5);
4306 path.cubicTo(1, 5, 4, 2, 4, 0);
4307 path.close();
4308 pathB.setFillType(SkPathFillType::kWinding);
4309 pathB.moveTo(2, 4);
4310 pathB.cubicTo(0, 4, 5, 3, 5, 1);
4311 pathB.close();
4312 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4313 }
4314
cubics7d(skiatest::Reporter * reporter,const char * filename)4315 static void cubics7d(skiatest::Reporter* reporter, const char* filename) {
4316 SkPath path, pathB;
4317 path.setFillType(SkPathFillType::kWinding);
4318 path.moveTo(2, 6);
4319 path.cubicTo(2, 4, 5, 1, 3, 1);
4320 path.close();
4321 pathB.setFillType(SkPathFillType::kWinding);
4322 pathB.moveTo(1, 5);
4323 pathB.cubicTo(1, 3, 6, 2, 4, 2);
4324 pathB.close();
4325 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4326 }
4327
cubics8d(skiatest::Reporter * reporter,const char * filename)4328 static void cubics8d(skiatest::Reporter* reporter, const char* filename) {
4329 SkPath path, pathB;
4330 path.setFillType(SkPathFillType::kWinding);
4331 path.moveTo(2, 5);
4332 path.cubicTo(2, 4, 5, 1, 3, 2);
4333 path.close();
4334 pathB.setFillType(SkPathFillType::kWinding);
4335 pathB.moveTo(1, 5);
4336 pathB.cubicTo(2, 3, 5, 2, 4, 2);
4337 pathB.close();
4338 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4339 }
4340
cubics9d(skiatest::Reporter * reporter,const char * filename)4341 static void cubics9d(skiatest::Reporter* reporter, const char* filename) {
4342 SkPath path, pathB;
4343 path.setFillType(SkPathFillType::kWinding);
4344 path.moveTo(2, 4);
4345 path.cubicTo(2, 6, 3, 1, 5, 1);
4346 path.close();
4347 pathB.setFillType(SkPathFillType::kWinding);
4348 pathB.moveTo(1, 3);
4349 pathB.cubicTo(1, 5, 4, 2, 6, 2);
4350 pathB.close();
4351 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4352 }
4353
cubics10u(skiatest::Reporter * reporter,const char * filename)4354 static void cubics10u(skiatest::Reporter* reporter, const char* filename) {
4355 SkPath path, pathB;
4356 path.setFillType(SkPathFillType::kWinding);
4357 path.moveTo(2, 4);
4358 path.cubicTo(1, 6, 4, 1, 5, 1);
4359 path.close();
4360 pathB.setFillType(SkPathFillType::kWinding);
4361 pathB.moveTo(1, 4);
4362 pathB.cubicTo(1, 5, 4, 2, 6, 1);
4363 pathB.close();
4364 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
4365 }
4366
cubics11i(skiatest::Reporter * reporter,const char * filename)4367 static void cubics11i(skiatest::Reporter* reporter, const char* filename) {
4368 SkPath path, pathB;
4369 path.setFillType(SkPathFillType::kWinding);
4370 path.moveTo(2, 4);
4371 path.cubicTo(2, 5, 3, 2, 5, 1);
4372 path.close();
4373 pathB.setFillType(SkPathFillType::kWinding);
4374 pathB.moveTo(2, 3);
4375 pathB.cubicTo(1, 5, 4, 2, 5, 2);
4376 pathB.close();
4377 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4378 }
4379
cubics12d(skiatest::Reporter * reporter,const char * filename)4380 static void cubics12d(skiatest::Reporter* reporter, const char* filename) {
4381 SkPath path, pathB;
4382 path.setFillType(SkPathFillType::kWinding);
4383 path.moveTo(2, 4);
4384 path.cubicTo(0, 4, 5, 3, 5, 1);
4385 path.close();
4386 pathB.setFillType(SkPathFillType::kWinding);
4387 pathB.moveTo(3, 5);
4388 pathB.cubicTo(1, 5, 4, 2, 4, 0);
4389 pathB.close();
4390 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4391 }
4392
cubics13d(skiatest::Reporter * reporter,const char * filename)4393 static void cubics13d(skiatest::Reporter* reporter, const char* filename) {
4394 SkPath path, pathB;
4395 path.setFillType(SkPathFillType::kWinding);
4396 path.moveTo(2, 3);
4397 path.cubicTo(1, 5, 4, 2, 5, 2);
4398 path.close();
4399 pathB.setFillType(SkPathFillType::kWinding);
4400 pathB.moveTo(2, 4);
4401 pathB.cubicTo(2, 5, 3, 2, 5, 1);
4402 pathB.close();
4403 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4404 }
4405
cubics14d(skiatest::Reporter * reporter,const char * filename)4406 static void cubics14d(skiatest::Reporter* reporter, const char* filename) {
4407 SkPath path, pathB;
4408 path.setFillType(SkPathFillType::kWinding);
4409 path.moveTo(2, 3);
4410 path.cubicTo(0, 4, 3, 1, 3, 0);
4411 path.close();
4412 pathB.setFillType(SkPathFillType::kWinding);
4413 pathB.moveTo(1, 3);
4414 pathB.cubicTo(0, 3, 3, 2, 4, 0);
4415 pathB.close();
4416 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4417 }
4418
cubics15d(skiatest::Reporter * reporter,const char * filename)4419 static void cubics15d(skiatest::Reporter* reporter, const char* filename) {
4420 SkPath path, pathB;
4421 path.setFillType(SkPathFillType::kWinding);
4422 path.moveTo(1, 5);
4423 path.cubicTo(3, 5, 4, 0, 4, 2);
4424 path.close();
4425 pathB.setFillType(SkPathFillType::kWinding);
4426 pathB.moveTo(0, 4);
4427 pathB.cubicTo(2, 4, 5, 1, 5, 3);
4428 pathB.close();
4429 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4430 }
4431
cubics16i(skiatest::Reporter * reporter,const char * filename)4432 static void cubics16i(skiatest::Reporter* reporter, const char* filename) {
4433 SkPath path, pathB;
4434 path.setFillType(SkPathFillType::kWinding);
4435 path.moveTo(1, 5);
4436 path.cubicTo(2, 5, 5, 0, 4, 2);
4437 path.close();
4438 pathB.setFillType(SkPathFillType::kWinding);
4439 pathB.moveTo(0, 5);
4440 pathB.cubicTo(2, 4, 5, 1, 5, 2);
4441 pathB.close();
4442 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4443 }
4444
cubics17d(skiatest::Reporter * reporter,const char * filename)4445 static void cubics17d(skiatest::Reporter* reporter, const char* filename) {
4446 SkPath path, pathB;
4447 path.setFillType(SkPathFillType::kWinding);
4448 path.moveTo(1, 5);
4449 path.cubicTo(3, 4, 4, 1, 4, 2);
4450 path.close();
4451 pathB.setFillType(SkPathFillType::kWinding);
4452 pathB.moveTo(1, 4);
4453 pathB.cubicTo(2, 4, 5, 1, 4, 3);
4454 pathB.close();
4455 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4456 }
4457
cubics18d(skiatest::Reporter * reporter,const char * filename)4458 static void cubics18d(skiatest::Reporter* reporter, const char* filename) {
4459 SkPath path, pathB;
4460 path.setFillType(SkPathFillType::kWinding);
4461 path.moveTo(1, 5);
4462 path.cubicTo(1, 3, 4, 0, 2, 0);
4463 path.close();
4464 pathB.setFillType(SkPathFillType::kWinding);
4465 pathB.moveTo(0, 4);
4466 pathB.cubicTo(0, 2, 5, 1, 3, 1);
4467 pathB.close();
4468 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4469 }
4470
cubics19d(skiatest::Reporter * reporter,const char * filename)4471 static void cubics19d(skiatest::Reporter* reporter, const char* filename) {
4472 SkPath path, pathB;
4473 path.setFillType(SkPathFillType::kWinding);
4474 path.moveTo(1, 5);
4475 path.cubicTo(2, 3, 5, 2, 4, 2);
4476 path.close();
4477 pathB.setFillType(SkPathFillType::kWinding);
4478 pathB.moveTo(2, 5);
4479 pathB.cubicTo(2, 4, 5, 1, 3, 2);
4480 pathB.close();
4481 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4482 }
4483
cubicOp157(skiatest::Reporter * reporter,const char * filename)4484 static void cubicOp157(skiatest::Reporter* reporter, const char* filename) {
4485 SkPath path, pathB;
4486 path.setFillType(SkPathFillType::kWinding);
4487 path.moveTo(1,5);
4488 path.cubicTo(1,3, 6,2, 4,2);
4489 path.close();
4490 pathB.setFillType(SkPathFillType::kWinding);
4491 pathB.moveTo(2,6);
4492 pathB.cubicTo(2,4, 5,1, 3,1);
4493 pathB.close();
4494 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4495 }
4496
cubics20d(skiatest::Reporter * reporter,const char * filename)4497 static void cubics20d(skiatest::Reporter* reporter, const char* filename) {
4498 SkPath path, pathB;
4499 path.setFillType(SkPathFillType::kWinding);
4500 path.moveTo(1, 2);
4501 path.cubicTo(0, 3, 6, 0, 3, 2);
4502 path.close();
4503 pathB.setFillType(SkPathFillType::kWinding);
4504 pathB.moveTo(0, 6);
4505 pathB.cubicTo(2, 3, 2, 1, 3, 0);
4506 pathB.close();
4507 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4508 }
4509
loops20i(skiatest::Reporter * reporter,const char * filename)4510 static void loops20i(skiatest::Reporter* reporter, const char* filename) {
4511 SkPath path, pathB;
4512 path.setFillType(SkPathFillType::kWinding);
4513 path.moveTo(1, 2);
4514 path.cubicTo(0, 2, 0.833333313f, 2, 1, 3.66666651f);
4515 path.close();
4516 pathB.setFillType(SkPathFillType::kWinding);
4517 pathB.moveTo(0, 2);
4518 pathB.cubicTo(0.833333313f, 2, 1, 3.66666651f, 1, 2);
4519 pathB.close();
4520 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4521 }
4522
loops21i(skiatest::Reporter * reporter,const char * filename)4523 static void loops21i(skiatest::Reporter* reporter, const char* filename) {
4524 SkPath path, pathB;
4525 path.setFillType(SkPathFillType::kWinding);
4526 path.moveTo(1, 2);
4527 path.cubicTo(0, 2, 0.833333313f, 2, 1, 4);
4528 path.close();
4529 pathB.setFillType(SkPathFillType::kWinding);
4530 pathB.moveTo(0, 2);
4531 pathB.cubicTo(0.833333313f, 2, 1, 4, 1, 2);
4532 pathB.close();
4533 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4534 }
4535
loops22i(skiatest::Reporter * reporter,const char * filename)4536 static void loops22i(skiatest::Reporter* reporter, const char* filename) {
4537 SkPath path, pathB;
4538 path.setFillType(SkPathFillType::kWinding);
4539 path.moveTo(1, 3);
4540 path.cubicTo(0, 3, 0.833333313f, 3, 1, 4.66666651f);
4541 path.close();
4542 pathB.setFillType(SkPathFillType::kWinding);
4543 pathB.moveTo(0, 3);
4544 pathB.cubicTo(0.833333313f, 3, 1, 4.66666651f, 1, 3);
4545 pathB.close();
4546 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4547 }
4548
loops23i(skiatest::Reporter * reporter,const char * filename)4549 static void loops23i(skiatest::Reporter* reporter, const char* filename) {
4550 SkPath path, pathB;
4551 path.setFillType(SkPathFillType::kWinding);
4552 path.moveTo(1, 5);
4553 path.cubicTo(0, 1, 6.16666698f, 5.66666698f, -5.66666651f, 6.66666651f);
4554 path.close();
4555 pathB.setFillType(SkPathFillType::kWinding);
4556 pathB.moveTo(0, 1);
4557 pathB.cubicTo(6.16666698f, 5.66666698f, -5.66666651f, 6.66666651f, 1, 5);
4558 pathB.close();
4559 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4560 }
4561
loops24i(skiatest::Reporter * reporter,const char * filename)4562 static void loops24i(skiatest::Reporter* reporter, const char* filename) {
4563 SkPath path, pathB;
4564 path.setFillType(SkPathFillType::kWinding);
4565 path.moveTo(1, 2);
4566 path.cubicTo(0, 2, 0.833333313f, 2, 1, 3);
4567 path.close();
4568 pathB.setFillType(SkPathFillType::kWinding);
4569 pathB.moveTo(0, 2);
4570 pathB.cubicTo(0.833333313f, 2, 1, 3, 1, 2);
4571 pathB.close();
4572 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4573 }
4574
loops25i(skiatest::Reporter * reporter,const char * filename)4575 static void loops25i(skiatest::Reporter* reporter, const char* filename) {
4576 SkPath path, pathB;
4577 path.setFillType(SkPathFillType::kWinding);
4578 path.moveTo(1, 5);
4579 path.cubicTo(0, 5, 0.833333313f, 5, 1, 7);
4580 path.close();
4581 pathB.setFillType(SkPathFillType::kWinding);
4582 pathB.moveTo(0, 5);
4583 pathB.cubicTo(0.833333313f, 5, 1, 7, 1, 5);
4584 pathB.close();
4585 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4586 }
4587
loops26i(skiatest::Reporter * reporter,const char * filename)4588 static void loops26i(skiatest::Reporter* reporter, const char* filename) {
4589 SkPath path, pathB;
4590 path.setFillType(SkPathFillType::kWinding);
4591 path.moveTo(1, 6);
4592 path.cubicTo(0, 2, 6.16666698f, 6.66666698f, -5.66666651f, 7.66666651f);
4593 path.close();
4594 pathB.setFillType(SkPathFillType::kWinding);
4595 pathB.moveTo(0, 2);
4596 pathB.cubicTo(6.16666698f, 6.66666698f, -5.66666651f, 7.66666651f, 1, 6);
4597 pathB.close();
4598 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4599 }
4600
loops27i(skiatest::Reporter * reporter,const char * filename)4601 static void loops27i(skiatest::Reporter* reporter, const char* filename) {
4602 SkPath path, pathB;
4603 path.setFillType(SkPathFillType::kWinding);
4604 path.moveTo(1, 3);
4605 path.cubicTo(0, 3, 0.833333313f, 3, 1, 4.33333349f);
4606 path.close();
4607 pathB.setFillType(SkPathFillType::kWinding);
4608 pathB.moveTo(0, 3);
4609 pathB.cubicTo(0.833333313f, 3, 1, 4.33333349f, 1, 3);
4610 pathB.close();
4611 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4612 }
4613
loops28i(skiatest::Reporter * reporter,const char * filename)4614 static void loops28i(skiatest::Reporter* reporter, const char* filename) {
4615 SkPath path, pathB;
4616 path.setFillType(SkPathFillType::kWinding);
4617 path.moveTo(2, 3);
4618 path.cubicTo(1, 3, 1.83333337f, 3, 2, 4.66666651f);
4619 path.close();
4620 pathB.setFillType(SkPathFillType::kWinding);
4621 pathB.moveTo(1, 3);
4622 pathB.cubicTo(1.83333337f, 3, 2, 4.66666651f, 2, 3);
4623 pathB.close();
4624 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4625 }
4626
loops29i(skiatest::Reporter * reporter,const char * filename)4627 static void loops29i(skiatest::Reporter* reporter, const char* filename) {
4628 SkPath path, pathB;
4629 path.setFillType(SkPathFillType::kWinding);
4630 path.moveTo(2, 4);
4631 path.cubicTo(0, 4, 1.66666663f, 4, 2, 7.33333302f);
4632 path.close();
4633 pathB.setFillType(SkPathFillType::kWinding);
4634 pathB.moveTo(0, 4);
4635 pathB.cubicTo(1.66666663f, 4, 2, 7.33333302f, 2, 4);
4636 pathB.close();
4637 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4638 }
4639
loops30i(skiatest::Reporter * reporter,const char * filename)4640 static void loops30i(skiatest::Reporter* reporter, const char* filename) {
4641 SkPath path, pathB;
4642 path.setFillType(SkPathFillType::kWinding);
4643 path.moveTo(2, 4);
4644 path.cubicTo(0, 4, 1.66666663f, 4, 2, 8);
4645 path.close();
4646 pathB.setFillType(SkPathFillType::kWinding);
4647 pathB.moveTo(0, 4);
4648 pathB.cubicTo(1.66666663f, 4, 2, 8, 2, 4);
4649 pathB.close();
4650 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4651 }
4652
loops31i(skiatest::Reporter * reporter,const char * filename)4653 static void loops31i(skiatest::Reporter* reporter, const char* filename) {
4654 SkPath path, pathB;
4655 path.setFillType(SkPathFillType::kWinding);
4656 path.moveTo(2, 5);
4657 path.cubicTo(1, 5, 1.83333337f, 5, 2, 6.66666651f);
4658 path.close();
4659 pathB.setFillType(SkPathFillType::kWinding);
4660 pathB.moveTo(1, 5);
4661 pathB.cubicTo(1.83333337f, 5, 2, 6.66666651f, 2, 5);
4662 pathB.close();
4663 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4664 }
4665
loops32i(skiatest::Reporter * reporter,const char * filename)4666 static void loops32i(skiatest::Reporter* reporter, const char* filename) {
4667 SkPath path, pathB;
4668 path.setFillType(SkPathFillType::kWinding);
4669 path.moveTo(2, 6);
4670 path.cubicTo(1, 6, 1.83333337f, 6, 2, 8);
4671 path.close();
4672 pathB.setFillType(SkPathFillType::kWinding);
4673 pathB.moveTo(1, 6);
4674 pathB.cubicTo(1.83333337f, 6, 2, 8, 2, 6);
4675 pathB.close();
4676 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4677 }
4678
loops33i(skiatest::Reporter * reporter,const char * filename)4679 static void loops33i(skiatest::Reporter* reporter, const char* filename) {
4680 SkPath path, pathB;
4681 path.setFillType(SkPathFillType::kWinding);
4682 path.moveTo(2, 6);
4683 path.cubicTo(1, 2, 7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f);
4684 path.close();
4685 pathB.setFillType(SkPathFillType::kWinding);
4686 pathB.moveTo(1, 2);
4687 pathB.cubicTo(7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f, 2, 6);
4688 pathB.close();
4689 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4690 }
4691
loops33iMod(skiatest::Reporter * reporter,const char * filename)4692 static void loops33iMod(skiatest::Reporter* reporter, const char* filename) {
4693 SkPoint pts[] = {{2, 6}, {1, 2}, {7.16666698f, 6.66666698f}, {-4.66666651f, 7.66666651f},
4694 {1, 2}, {7.16666698f, 6.66666698f}, {-4.66666651f, 7.66666651f}, {2, 6}};
4695 bool up = false;
4696 float offset = 0.0380172729f;
4697 float step = 7.62939453e-006f;
4698 bool lastResult = true;
4699 // for (int i = 0; i < 30; ++i) {
4700 SkString name(filename);
4701 // name.appendS32(i);
4702 // if (i > 0) {
4703 // SkDebugf("\n\n<div id=\"%s\">\n", name.c_str());
4704 // }
4705 pts[5].fY = 6.66666698f + offset;
4706 SkPath path, pathB;
4707 path.setFillType(SkPathFillType::kWinding);
4708 path.moveTo(pts[0]);
4709 path.cubicTo(pts[1], pts[2], pts[3]);
4710 path.close();
4711 pathB.setFillType(SkPathFillType::kWinding);
4712 pathB.moveTo(pts[4]);
4713 pathB.cubicTo(pts[5], pts[6], pts[7]);
4714 pathB.close();
4715 bool result = testPathOp(reporter, path, pathB, kIntersect_SkPathOp, name.c_str());
4716 if (lastResult != result) {
4717 up = !up;
4718 }
4719 step /= 2;
4720 offset += up ? step : -step;
4721 lastResult = result;
4722 // }
4723 }
4724
4725
loops33iAsQuads(skiatest::Reporter * reporter,const char * filename)4726 static void loops33iAsQuads(skiatest::Reporter* reporter, const char* filename) {
4727 SkPath path, pathB;
4728 path.setFillType(SkPathFillType::kWinding);
4729 path.moveTo(2, 6);
4730 path.cubicTo(1, 2, 7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f);
4731 path.close();
4732 pathB.setFillType(SkPathFillType::kWinding);
4733 pathB.moveTo(1, 2);
4734 pathB.cubicTo(7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f, 2, 6);
4735 pathB.close();
4736 SkPath qPath, qPathB;
4737 CubicPathToQuads(path, &qPath);
4738 CubicPathToQuads(pathB, &qPathB);
4739 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
4740 }
4741
loops34i(skiatest::Reporter * reporter,const char * filename)4742 static void loops34i(skiatest::Reporter* reporter, const char* filename) {
4743 SkPath path, pathB;
4744 path.setFillType(SkPathFillType::kWinding);
4745 path.moveTo(3, 4);
4746 path.cubicTo(0, 4, 2.5f, 4, 3, 9);
4747 path.close();
4748 pathB.setFillType(SkPathFillType::kWinding);
4749 pathB.moveTo(0, 4);
4750 pathB.cubicTo(2.5f, 4, 3, 9, 3, 4);
4751 pathB.close();
4752 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4753 }
4754
loops35i(skiatest::Reporter * reporter,const char * filename)4755 static void loops35i(skiatest::Reporter* reporter, const char* filename) {
4756 SkPath path, pathB;
4757 path.setFillType(SkPathFillType::kWinding);
4758 path.moveTo(3, 4);
4759 path.cubicTo(0, 4, 2.5f, 4, 3, 10);
4760 path.close();
4761 pathB.setFillType(SkPathFillType::kWinding);
4762 pathB.moveTo(0, 4);
4763 pathB.cubicTo(2.5f, 4, 3, 10, 3, 4);
4764 pathB.close();
4765 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4766 }
4767
loops36i(skiatest::Reporter * reporter,const char * filename)4768 static void loops36i(skiatest::Reporter* reporter, const char* filename) {
4769 SkPath path, pathB;
4770 path.setFillType(SkPathFillType::kWinding);
4771 path.moveTo(3, 4);
4772 path.cubicTo(1, 4, 2.66666675f, 4, 3, 8);
4773 path.close();
4774 pathB.setFillType(SkPathFillType::kWinding);
4775 pathB.moveTo(1, 4);
4776 pathB.cubicTo(2.66666675f, 4, 3, 8, 3, 4);
4777 pathB.close();
4778 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4779 }
4780
loops37i(skiatest::Reporter * reporter,const char * filename)4781 static void loops37i(skiatest::Reporter* reporter, const char* filename) {
4782 SkPath path, pathB;
4783 path.setFillType(SkPathFillType::kWinding);
4784 path.moveTo(2, 4);
4785 path.cubicTo(1, 4, 1.83333337f, 4, 2, 5.33333349f);
4786 path.close();
4787 pathB.setFillType(SkPathFillType::kWinding);
4788 pathB.moveTo(1, 4);
4789 pathB.cubicTo(1.83333337f, 4, 2, 5.33333349f, 2, 4);
4790 pathB.close();
4791 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4792 }
4793
loops38i(skiatest::Reporter * reporter,const char * filename)4794 static void loops38i(skiatest::Reporter* reporter, const char* filename) {
4795 SkPath path, pathB;
4796 path.setFillType(SkPathFillType::kWinding);
4797 path.moveTo(3, 4);
4798 path.cubicTo(2, 4, 2.83333325f, 4, 3, 6);
4799 path.close();
4800 pathB.setFillType(SkPathFillType::kWinding);
4801 pathB.moveTo(2, 4);
4802 pathB.cubicTo(2.83333325f, 4, 3, 6, 3, 4);
4803 pathB.close();
4804 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4805 }
4806
loops39i(skiatest::Reporter * reporter,const char * filename)4807 static void loops39i(skiatest::Reporter* reporter, const char* filename) {
4808 SkPath path, pathB;
4809 path.setFillType(SkPathFillType::kWinding);
4810 path.moveTo(3, 5);
4811 path.cubicTo(0, 5, 2.5f, 5, 3, 10);
4812 path.close();
4813 pathB.setFillType(SkPathFillType::kWinding);
4814 pathB.moveTo(0, 5);
4815 pathB.cubicTo(2.5f, 5, 3, 10, 3, 5);
4816 pathB.close();
4817 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4818 }
4819
loops40i(skiatest::Reporter * reporter,const char * filename)4820 static void loops40i(skiatest::Reporter* reporter, const char* filename) {
4821 SkPath path, pathB;
4822 path.setFillType(SkPathFillType::kWinding);
4823 path.moveTo(3, 5);
4824 path.cubicTo(0, 5, 2.5f, 5, 3, 11);
4825 path.close();
4826 pathB.setFillType(SkPathFillType::kWinding);
4827 pathB.moveTo(0, 5);
4828 pathB.cubicTo(2.5f, 5, 3, 11, 3, 5);
4829 pathB.close();
4830 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4831 }
4832
loops40iAsQuads(skiatest::Reporter * reporter,const char * filename)4833 static void loops40iAsQuads(skiatest::Reporter* reporter, const char* filename) {
4834 SkPath path, pathB;
4835 path.setFillType(SkPathFillType::kWinding);
4836 path.moveTo(3, 5);
4837 path.cubicTo(0, 5, 2.5f, 5, 3, 11);
4838 path.close();
4839 pathB.setFillType(SkPathFillType::kWinding);
4840 pathB.moveTo(0, 5);
4841 pathB.cubicTo(2.5f, 5, 3, 11, 3, 5);
4842 pathB.close();
4843 SkPath qPath, qPathB;
4844 CubicPathToQuads(path, &qPath);
4845 CubicPathToQuads(pathB, &qPathB);
4846 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
4847 }
4848
loops44i(skiatest::Reporter * reporter,const char * filename)4849 static void loops44i(skiatest::Reporter* reporter, const char* filename) {
4850 SkPath path, pathB;
4851 path.setFillType(SkPathFillType::kWinding);
4852 path.moveTo(1, 5);
4853 path.cubicTo(0, 1, 7.33333302f, 5.33333349f, -7, 7);
4854 path.close();
4855 pathB.setFillType(SkPathFillType::kWinding);
4856 pathB.moveTo(0, 1);
4857 pathB.cubicTo(7.33333302f, 5.33333349f, -7, 7, 1, 5);
4858 pathB.close();
4859 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4860 }
4861
loops45i(skiatest::Reporter * reporter,const char * filename)4862 static void loops45i(skiatest::Reporter* reporter, const char* filename) {
4863 SkPath path, pathB;
4864 path.setFillType(SkPathFillType::kWinding);
4865 path.moveTo(1, 6);
4866 path.cubicTo(0, 2, 7.33333302f, 6.33333302f, -7, 8);
4867 path.close();
4868 pathB.setFillType(SkPathFillType::kWinding);
4869 pathB.moveTo(0, 2);
4870 pathB.cubicTo(7.33333302f, 6.33333302f, -7, 8, 1, 6);
4871 pathB.close();
4872 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4873 }
4874
loops46i(skiatest::Reporter * reporter,const char * filename)4875 static void loops46i(skiatest::Reporter* reporter, const char* filename) {
4876 SkPath path, pathB;
4877 path.setFillType(SkPathFillType::kWinding);
4878 path.moveTo(2, 6);
4879 path.cubicTo(1, 2, 8.33333302f, 6.33333302f, -6, 8);
4880 path.close();
4881 pathB.setFillType(SkPathFillType::kWinding);
4882 pathB.moveTo(1, 2);
4883 pathB.cubicTo(8.33333302f, 6.33333302f, -6, 8, 2, 6);
4884 pathB.close();
4885 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4886 }
4887
4888 /*
4889 FAILED: d:\cygwin\puregit\tests\pathopsextendedtest.cpp:346 0 */
loops47i(skiatest::Reporter * reporter,const char * filename)4890 static void loops47i(skiatest::Reporter* reporter, const char* filename) {
4891 SkPath path, pathB;
4892 path.setFillType(SkPathFillType::kWinding);
4893 path.moveTo(2, 4);
4894 path.cubicTo(0, 1, 6, 5.83333302f, -4, 8);
4895 path.close();
4896 pathB.setFillType(SkPathFillType::kWinding);
4897 pathB.moveTo(0, 1);
4898 pathB.cubicTo(6, 5.83333302f, -4, 8, 2, 4);
4899 pathB.close();
4900 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4901 }
4902
loops48i(skiatest::Reporter * reporter,const char * filename)4903 static void loops48i(skiatest::Reporter* reporter, const char* filename) {
4904 SkPath path, pathB;
4905 path.setFillType(SkPathFillType::kWinding);
4906 path.moveTo(2, 6);
4907 path.cubicTo(0, 1, 9.33333302f, 6.83333302f, -8.33333302f, 9.16666603f);
4908 path.close();
4909 pathB.setFillType(SkPathFillType::kWinding);
4910 pathB.moveTo(0, 1);
4911 pathB.cubicTo(9.33333302f, 6.83333302f, -8.33333302f, 9.16666603f, 2, 6);
4912 pathB.close();
4913 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4914 }
4915
loops49i(skiatest::Reporter * reporter,const char * filename)4916 static void loops49i(skiatest::Reporter* reporter, const char* filename) {
4917 SkPath path, pathB;
4918 path.setFillType(SkPathFillType::kWinding);
4919 path.moveTo(0, 2);
4920 path.cubicTo(1, 4, -0.166666687f, 2.66666675f, 1.66666675f, 2);
4921 path.close();
4922 pathB.setFillType(SkPathFillType::kWinding);
4923 pathB.moveTo(1, 4);
4924 pathB.cubicTo(-0.166666687f, 2.66666675f, 1.66666675f, 2, 0, 2);
4925 pathB.close();
4926 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4927 }
4928
loops50i(skiatest::Reporter * reporter,const char * filename)4929 static void loops50i(skiatest::Reporter* reporter, const char* filename) {
4930 SkPath path, pathB;
4931 path.setFillType(SkPathFillType::kWinding);
4932 path.moveTo(0, 3);
4933 path.cubicTo(1, 5, -0.166666687f, 3.66666675f, 1.66666675f, 3);
4934 path.close();
4935 pathB.setFillType(SkPathFillType::kWinding);
4936 pathB.moveTo(1, 5);
4937 pathB.cubicTo(-0.166666687f, 3.66666675f, 1.66666675f, 3, 0, 3);
4938 pathB.close();
4939 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4940 }
4941
loops51i(skiatest::Reporter * reporter,const char * filename)4942 static void loops51i(skiatest::Reporter* reporter, const char* filename) {
4943 SkPath path, pathB;
4944 path.setFillType(SkPathFillType::kWinding);
4945 path.moveTo(1, 2);
4946 path.cubicTo(2, 4, 0.833333313f, 2.66666675f, 2.66666675f, 2);
4947 path.close();
4948 pathB.setFillType(SkPathFillType::kWinding);
4949 pathB.moveTo(2, 4);
4950 pathB.cubicTo(0.833333313f, 2.66666675f, 2.66666675f, 2, 1, 2);
4951 pathB.close();
4952 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4953 }
4954
loops52i(skiatest::Reporter * reporter,const char * filename)4955 static void loops52i(skiatest::Reporter* reporter, const char* filename) {
4956 SkPath path, pathB;
4957 path.setFillType(SkPathFillType::kWinding);
4958 path.moveTo(1, 3);
4959 path.cubicTo(2, 5, 0.833333313f, 3.66666675f, 2.66666675f, 3);
4960 path.close();
4961 pathB.setFillType(SkPathFillType::kWinding);
4962 pathB.moveTo(2, 5);
4963 pathB.cubicTo(0.833333313f, 3.66666675f, 2.66666675f, 3, 1, 3);
4964 pathB.close();
4965 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4966 }
4967
loops53i(skiatest::Reporter * reporter,const char * filename)4968 static void loops53i(skiatest::Reporter* reporter, const char* filename) {
4969 SkPath path, pathB;
4970 path.setFillType(SkPathFillType::kWinding);
4971 path.moveTo(2, 3);
4972 path.cubicTo(3, 5, 1.83333325f, 3.66666675f, 3.66666651f, 3);
4973 path.close();
4974 pathB.setFillType(SkPathFillType::kWinding);
4975 pathB.moveTo(3, 5);
4976 pathB.cubicTo(1.83333325f, 3.66666675f, 3.66666651f, 3, 2, 3);
4977 pathB.close();
4978 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4979 }
4980
loops54i(skiatest::Reporter * reporter,const char * filename)4981 static void loops54i(skiatest::Reporter* reporter, const char* filename) {
4982 SkPath path, pathB;
4983 path.setFillType(SkPathFillType::kWinding);
4984 path.moveTo(0, 2);
4985 path.cubicTo(1, 4, 0, 3, 1.66666675f, 2);
4986 path.close();
4987 pathB.setFillType(SkPathFillType::kWinding);
4988 pathB.moveTo(1, 4);
4989 pathB.cubicTo(0, 3, 1.66666675f, 2, 0, 2);
4990 pathB.close();
4991 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4992 }
4993
loops55i(skiatest::Reporter * reporter,const char * filename)4994 static void loops55i(skiatest::Reporter* reporter, const char* filename) {
4995 SkPath path, pathB;
4996 path.setFillType(SkPathFillType::kWinding);
4997 path.moveTo(0, 3);
4998 path.cubicTo(1, 5, 0, 4, 1.66666675f, 3);
4999 path.close();
5000 pathB.setFillType(SkPathFillType::kWinding);
5001 pathB.moveTo(1, 5);
5002 pathB.cubicTo(0, 4, 1.66666675f, 3, 0, 3);
5003 pathB.close();
5004 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5005 }
5006
loops56i(skiatest::Reporter * reporter,const char * filename)5007 static void loops56i(skiatest::Reporter* reporter, const char* filename) {
5008 SkPath path, pathB;
5009 path.setFillType(SkPathFillType::kWinding);
5010 path.moveTo(1, 2);
5011 path.cubicTo(2, 4, 0.99999994f, 3, 2.66666675f, 2);
5012 path.close();
5013 pathB.setFillType(SkPathFillType::kWinding);
5014 pathB.moveTo(2, 4);
5015 pathB.cubicTo(0.99999994f, 3, 2.66666675f, 2, 1, 2);
5016 pathB.close();
5017 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5018 }
5019
loops57i(skiatest::Reporter * reporter,const char * filename)5020 static void loops57i(skiatest::Reporter* reporter, const char* filename) {
5021 SkPath path, pathB;
5022 path.setFillType(SkPathFillType::kWinding);
5023 path.moveTo(1, 3);
5024 path.cubicTo(2, 5, 0.99999994f, 4, 2.66666675f, 3);
5025 path.close();
5026 pathB.setFillType(SkPathFillType::kWinding);
5027 pathB.moveTo(2, 5);
5028 pathB.cubicTo(0.99999994f, 4, 2.66666675f, 3, 1, 3);
5029 pathB.close();
5030 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5031 }
5032
loops58i(skiatest::Reporter * reporter,const char * filename)5033 static void loops58i(skiatest::Reporter* reporter, const char* filename) {
5034 SkPath path, pathB;
5035 path.setFillType(SkPathFillType::kWinding);
5036 path.moveTo(2, 3);
5037 path.cubicTo(3, 5, 2, 4, 3.66666651f, 3);
5038 path.close();
5039 pathB.setFillType(SkPathFillType::kWinding);
5040 pathB.moveTo(3, 5);
5041 pathB.cubicTo(2, 4, 3.66666651f, 3, 2, 3);
5042 pathB.close();
5043 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5044 }
5045
loops58iAsQuads(skiatest::Reporter * reporter,const char * filename)5046 static void loops58iAsQuads(skiatest::Reporter* reporter, const char* filename) {
5047 SkPath path, pathB;
5048 path.setFillType(SkPathFillType::kWinding);
5049 path.moveTo(2, 3);
5050 path.cubicTo(3, 5, 2, 4, 3.66666651f, 3);
5051 path.close();
5052 pathB.setFillType(SkPathFillType::kWinding);
5053 pathB.moveTo(3, 5);
5054 pathB.cubicTo(2, 4, 3.66666651f, 3, 2, 3);
5055 pathB.close();
5056 SkPath qPath, qPathB;
5057 CubicPathToQuads(path, &qPath);
5058 CubicPathToQuads(pathB, &qPathB);
5059 // SkPoint from = {2.61714339f,1.90228665f};
5060 // SkPoint to = {2.617045833359139f,1.9013528935803314f};
5061 // path_edit(from, to, &qPathB);
5062 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
5063 }
5064
loops59i(skiatest::Reporter * reporter,const char * filename)5065 static void loops59i(skiatest::Reporter* reporter, const char* filename) {
5066 SkPath path, pathB;
5067 path.setFillType(SkPathFillType::kWinding);
5068 path.moveTo(0, 6);
5069 path.cubicTo(1, 2, 7.33333302f, 1.66666663f, -7.5f, 2);
5070 path.close();
5071 pathB.setFillType(SkPathFillType::kWinding);
5072 pathB.moveTo(1, 2);
5073 pathB.cubicTo(7.33333302f, 1.66666663f, -7.5f, 2, 0, 6);
5074 pathB.close();
5075 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5076 }
5077
loops59iasQuads(skiatest::Reporter * reporter,const char * filename)5078 static void loops59iasQuads(skiatest::Reporter* reporter, const char* filename) {
5079 SkPath path, pathB;
5080 path.setFillType(SkPathFillType::kWinding);
5081 path.moveTo(0, 6);
5082 path.cubicTo(1, 2, 7.33333302f, 1.66666663f, -7.5f, 2);
5083 path.close();
5084 pathB.setFillType(SkPathFillType::kWinding);
5085 pathB.moveTo(1, 2);
5086 pathB.cubicTo(7.33333302f, 1.66666663f, -7.5f, 2, 0, 6);
5087 pathB.close();
5088 SkPath qPath, qPathB;
5089 CubicPathToQuads(path, &qPath);
5090 CubicPathToQuads(pathB, &qPathB);
5091 SkPoint from = {2.61714339f,1.90228665f};
5092 SkPoint to = {2.617045833359139f,1.9013528935803314f};
5093 path_edit(from, to, &qPathB);
5094 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
5095 }
5096
cubics41d(skiatest::Reporter * reporter,const char * filename)5097 static void cubics41d(skiatest::Reporter* reporter, const char* filename) {
5098 SkPath path, pathB;
5099 path.setFillType(SkPathFillType::kWinding);
5100 path.moveTo(0, 1);
5101 path.cubicTo(1, 4, 3, 0, 3, 1);
5102 path.close();
5103 pathB.setFillType(SkPathFillType::kWinding);
5104 pathB.moveTo(0, 3);
5105 pathB.cubicTo(1, 3, 1, 0, 4, 1);
5106 pathB.close();
5107 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5108 }
5109
loops61i(skiatest::Reporter * reporter,const char * filename)5110 void loops61i(skiatest::Reporter* reporter, const char* filename) {
5111 SkPath path, pathB;
5112 path.setFillType(SkPathFillType::kWinding);
5113 path.moveTo(0, 1);
5114 path.cubicTo(1, 5, -6.33333302f, 0.666666627f, 8, -1);
5115 path.close();
5116 pathB.setFillType(SkPathFillType::kWinding);
5117 pathB.moveTo(1, 5);
5118 pathB.cubicTo(-6.33333302f, 0.666666627f, 8, -1, 0, 1);
5119 pathB.close();
5120 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5121 }
5122
loops62i(skiatest::Reporter * reporter,const char * filename)5123 static void loops62i(skiatest::Reporter* reporter, const char* filename) {
5124 SkPath path, pathB;
5125 path.setFillType(SkPathFillType::kWinding);
5126 path.moveTo(0, 2);
5127 path.cubicTo(1, 6, -6.33333302f, 1.66666663f, 8, 0);
5128 path.close();
5129 pathB.setFillType(SkPathFillType::kWinding);
5130 pathB.moveTo(1, 6);
5131 pathB.cubicTo(-6.33333302f, 1.66666663f, 8, 0, 0, 2);
5132 pathB.close();
5133 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5134 }
5135
loops63i(skiatest::Reporter * reporter,const char * filename)5136 static void loops63i(skiatest::Reporter* reporter, const char* filename) {
5137 SkPath path, pathB;
5138 path.setFillType(SkPathFillType::kWinding);
5139 path.moveTo(0, 1);
5140 path.cubicTo(2, 4, -4, -0.833333254f, 6, -3);
5141 path.close();
5142 pathB.setFillType(SkPathFillType::kWinding);
5143 pathB.moveTo(2, 4);
5144 pathB.cubicTo(-4, -0.833333254f, 6, -3, 0, 1);
5145 pathB.close();
5146 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5147 }
5148
cubics44d(skiatest::Reporter * reporter,const char * filename)5149 static void cubics44d(skiatest::Reporter* reporter, const char* filename) {
5150 SkPath path, pathB;
5151 path.setFillType(SkPathFillType::kWinding);
5152 path.moveTo(3, 4);
5153 path.cubicTo(2, 5, 3, 1, 6, 2);
5154 path.close();
5155 pathB.setFillType(SkPathFillType::kWinding);
5156 pathB.moveTo(1, 3);
5157 pathB.cubicTo(2, 6, 4, 3, 5, 2);
5158 pathB.close();
5159 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5160 }
5161
cubics45u(skiatest::Reporter * reporter,const char * filename)5162 static void cubics45u(skiatest::Reporter* reporter, const char* filename) {
5163 SkPath path, pathB;
5164 path.setFillType(SkPathFillType::kWinding);
5165 path.moveTo(1, 3);
5166 path.cubicTo(2, 6, 4, 3, 5, 2);
5167 path.close();
5168 pathB.setFillType(SkPathFillType::kWinding);
5169 pathB.moveTo(3, 4);
5170 pathB.cubicTo(2, 5, 3, 1, 6, 2);
5171 pathB.close();
5172 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
5173 }
5174
fuzz38(skiatest::Reporter * reporter,const char * filename)5175 static void fuzz38(skiatest::Reporter* reporter, const char* filename) {
5176 SkPath path, pathB;
5177 path.moveTo(100.34f, 303.312f);
5178 path.lineTo(-1e+08, 303.312f);
5179 path.lineTo(102, 310.156f);
5180 path.lineTo(100.34f, 310.156f);
5181 path.lineTo(100.34f, 303.312f);
5182 path.close();
5183 testPathOpCheck(reporter, path, pathB, kUnion_SkPathOp, filename, true);
5184 }
5185
5186 // we currently don't produce meaningful intersections when a path has extremely large segments
5187 // intersecting relatively small ones. This bug was reported as a fuzzer bug and wasn't expected
5188 // to produce meaningful results
crbug_526025(skiatest::Reporter * reporter,const char * filename)5189 static void crbug_526025(skiatest::Reporter* reporter, const char* filename) {
5190 SkPath path;
5191 path.setFillType((SkPathFillType) 1);
5192 path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.14748e+09f
5193 path.cubicTo(SkBits2Float(0x4e0d628f), SkBits2Float(0xceffffff), SkBits2Float(0x4e800003), SkBits2Float(0xcec6b143), SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffc)); // 5.93012e+08f, -2.14748e+09f, 1.07374e+09f, -1.66675e+09f, 1.07374e+09f, -1.07374e+09f
5194 path.cubicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcde53aee), SkBits2Float(0x4e0d6292), SkBits2Float(0xc307820e), SkBits2Float(0x44627d00), SkBits2Float(0x437ffff2)); // 1.07374e+09f, -4.80731e+08f, 5.93012e+08f, -135.508f, 905.953f, 256
5195 path.lineTo(SkBits2Float(0x444bf3bc), SkBits2Float(0x4460537e)); // 815.808f, 897.305f
5196 path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
5197 path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
5198 path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
5199 path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
5200 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
5201 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
5202
5203 SkPath path1(path);
5204 path.reset();
5205 path.setFillType((SkPathFillType) 0);
5206 path.moveTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
5207 path.lineTo(SkBits2Float(0x45d5c000), SkBits2Float(0x43870000)); // 6840, 270
5208 path.lineTo(SkBits2Float(0xd0a00000), SkBits2Float(0x4cbebc20)); // -2.14748e+10f, 1e+08
5209 path.lineTo(SkBits2Float(0x451f7000), SkBits2Float(0x42800000)); // 2551, 64
5210 path.lineTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
5211 path.close();
5212
5213 SkPath path2(path);
5214 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
5215 }
5216
fuzzX_392(skiatest::Reporter * reporter,const char * filename)5217 static void fuzzX_392(skiatest::Reporter* reporter, const char* filename) {
5218 SkPath path;
5219 path.setFillType(SkPathFillType::kEvenOdd);
5220 path.moveTo(SkBits2Float(0x41e80000), SkBits2Float(0x43bde212)); // 29, 379.766f
5221 path.lineTo(SkBits2Float(0x41e80000), SkBits2Float(0x43bdc7ef)); // 29, 379.562f
5222 path.conicTo(SkBits2Float(0x42a5861e), SkBits2Float(0x43c61f86), SkBits2Float(0x430b0610), SkBits2Float(0x43c61f86), SkBits2Float(0x3f7d23f3)); // 82.7619f, 396.246f, 139.024f, 396.246f, 0.98883f
5223 path.conicTo(SkBits2Float(0x42a58e20), SkBits2Float(0x43c61f86), SkBits2Float(0x41e80000), SkBits2Float(0x43bde212), SkBits2Float(0x3f7d2cf5)); // 82.7776f, 396.246f, 29, 379.766f, 0.988967f
5224 path.close();
5225
5226 SkPath path1(path);
5227 path.setFillType(SkPathFillType::kWinding);
5228 path.moveTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0xc3a31d72)); // -236.484f, -326.23f
5229 path.lineTo(SkBits2Float(0xc367a4ae), SkBits2Float(0xc3a31d72)); // -231.643f, -326.23f
5230 path.lineTo(SkBits2Float(0x430b0610), SkBits2Float(0x43c61f86)); // 139.024f, 396.246f
5231 path.lineTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0x43c61f86)); // -236.484f, 396.246f
5232
5233 SkPath path2(path);
5234 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
5235 }
5236
dean2(skiatest::Reporter * reporter,const char * filename)5237 static void dean2(skiatest::Reporter* reporter, const char* filename) {
5238 SkPath path;
5239 path.setFillType((SkPathFillType) 0);
5240 path.moveTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5241 path.cubicTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b), SkBits2Float(0x41531912), SkBits2Float(0x3f130322), SkBits2Float(0x4154a02b), SkBits2Float(0x3f2b74b3)); // 0.669749f, 13.2891f, 13.1936f, 0.574267f, 13.2891f, 0.669749f
5242 path.cubicTo(SkBits2Float(0x414a835a), SkBits2Float(0x3ec07ba6), SkBits2Float(0x413fcc0d), SkBits2Float(0x3e193319), SkBits2Float(0x4134a02b), SkBits2Float(0x00000000)); // 12.6571f, 0.375943f, 11.9873f, 0.149609f, 11.2891f, 0
5243 path.lineTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5244 path.close();
5245 SkPath path1(path);
5246
5247 path.reset();
5248 path.setFillType((SkPathFillType) 0);
5249 path.moveTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5250 path.cubicTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b), SkBits2Float(0x41531912), SkBits2Float(0x3f130322), SkBits2Float(0x4154a02b), SkBits2Float(0x3f2b74b3)); // 0.669749f, 13.2891f, 13.1936f, 0.574267f, 13.2891f, 0.669749f
5251 path.lineTo(SkBits2Float(0x417ab74b), SkBits2Float(0x4154a02b)); // 15.6697f, 13.2891f
5252 path.lineTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5253 path.close();
5254 SkPath path2(path);
5255 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
5256 }
5257
cubics_d(skiatest::Reporter * reporter,const char * filename)5258 static void cubics_d(skiatest::Reporter* reporter, const char* filename) {
5259 SkPath path, pathB;
5260 path.setFillType(SkPathFillType::kWinding);
5261 path.moveTo(0, 1);
5262 path.cubicTo(3, 5, 1, 0, 3, 0);
5263 path.close();
5264 pathB.setFillType(SkPathFillType::kWinding);
5265 pathB.moveTo(0, 1);
5266 pathB.cubicTo(0, 3, 1, 0, 5, 3);
5267 pathB.close();
5268 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5269 }
5270
cubics_d2(skiatest::Reporter * reporter,const char * filename)5271 static void cubics_d2(skiatest::Reporter* reporter, const char* filename) {
5272 SkPath path, pathB;
5273 path.setFillType(SkPathFillType::kWinding);
5274 path.moveTo(0, 1);
5275 path.cubicTo(2, 5, 2, 0, 2, 1);
5276 path.close();
5277 pathB.setFillType(SkPathFillType::kWinding);
5278 pathB.moveTo(0, 2);
5279 pathB.cubicTo(1, 2, 1, 0, 5, 2);
5280 pathB.close();
5281 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5282 }
5283
loops_i1(skiatest::Reporter * reporter,const char * filename)5284 static void loops_i1(skiatest::Reporter* reporter, const char* filename) {
5285 SkPath path, pathB;
5286 path.setFillType(SkPathFillType::kWinding);
5287 path.moveTo(2, 3);
5288 path.cubicTo(0, 4, -0.333333343f, 4.66666651f, 3, 5.83333349f);
5289 path.close();
5290 pathB.setFillType(SkPathFillType::kWinding);
5291 pathB.moveTo(0, 4);
5292 pathB.cubicTo(-0.333333343f, 4.66666651f, 3, 5.83333349f, 2, 3);
5293 pathB.close();
5294 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5295 }
5296
loops_i2(skiatest::Reporter * reporter,const char * filename)5297 static void loops_i2(skiatest::Reporter* reporter, const char* filename) {
5298 SkPath path, pathB;
5299 path.setFillType(SkPathFillType::kWinding);
5300 path.moveTo(2, 4);
5301 path.cubicTo(0, 5, -0.333333343f, 5.66666651f, 3, 6.83333302f);
5302 path.close();
5303 pathB.setFillType(SkPathFillType::kWinding);
5304 pathB.moveTo(0, 5);
5305 pathB.cubicTo(-0.333333343f, 5.66666651f, 3, 6.83333302f, 2, 4);
5306 pathB.close();
5307 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5308 }
5309
loops_i3(skiatest::Reporter * reporter,const char * filename)5310 static void loops_i3(skiatest::Reporter* reporter, const char* filename) {
5311 SkPath path, pathB;
5312 path.setFillType(SkPathFillType::kWinding);
5313 path.moveTo(2, 5);
5314 path.cubicTo(0, 6, -0.333333343f, 6.66666651f, 3, 7.83333302f);
5315 path.close();
5316 pathB.setFillType(SkPathFillType::kWinding);
5317 pathB.moveTo(0, 6);
5318 pathB.cubicTo(-0.333333343f, 6.66666651f, 3, 7.83333302f, 2, 5);
5319 pathB.close();
5320 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5321 }
5322
loops_i4(skiatest::Reporter * reporter,const char * filename)5323 static void loops_i4(skiatest::Reporter* reporter, const char* filename) {
5324 SkPath path, pathB;
5325 path.setFillType(SkPathFillType::kWinding);
5326 path.moveTo(3, 4);
5327 path.cubicTo(1, 5, 0.666666627f, 5.66666651f, 4, 6.83333302f);
5328 path.close();
5329 pathB.setFillType(SkPathFillType::kWinding);
5330 pathB.moveTo(1, 5);
5331 pathB.cubicTo(0.666666627f, 5.66666651f, 4, 6.83333302f, 3, 4);
5332 pathB.close();
5333 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5334 }
5335
loops_i5(skiatest::Reporter * reporter,const char * filename)5336 static void loops_i5(skiatest::Reporter* reporter, const char* filename) {
5337 SkPath path, pathB;
5338 path.setFillType(SkPathFillType::kWinding);
5339 path.moveTo(3, 5);
5340 path.cubicTo(1, 6, 0.666666627f, 6.66666651f, 4, 7.83333302f);
5341 path.close();
5342 pathB.setFillType(SkPathFillType::kWinding);
5343 pathB.moveTo(1, 6);
5344 pathB.cubicTo(0.666666627f, 6.66666651f, 4, 7.83333302f, 3, 5);
5345 pathB.close();
5346 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5347 }
5348
loops_i6(skiatest::Reporter * reporter,const char * filename)5349 static void loops_i6(skiatest::Reporter* reporter, const char* filename) {
5350 SkPath path, pathB;
5351 path.setFillType(SkPathFillType::kWinding);
5352 path.moveTo(4, 5);
5353 path.cubicTo(2, 6, 1.66666663f, 6.66666651f, 5, 7.83333302f);
5354 path.close();
5355 pathB.setFillType(SkPathFillType::kWinding);
5356 pathB.moveTo(2, 6);
5357 pathB.cubicTo(1.66666663f, 6.66666651f, 5, 7.83333302f, 4, 5);
5358 pathB.close();
5359 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5360 }
5361
cubics_d3(skiatest::Reporter * reporter,const char * filename)5362 static void cubics_d3(skiatest::Reporter* reporter, const char* filename) {
5363 SkPath path, pathB;
5364 path.setFillType(SkPathFillType::kWinding);
5365 path.moveTo(3, 4);
5366 path.cubicTo(0, 6, 6, 1, 4, 2);
5367 path.close();
5368 pathB.setFillType(SkPathFillType::kWinding);
5369 pathB.moveTo(1, 6);
5370 pathB.cubicTo(2, 4, 4, 3, 6, 0);
5371 pathB.close();
5372 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5373 }
5374
cubics_o(skiatest::Reporter * reporter,const char * filename)5375 static void cubics_o(skiatest::Reporter* reporter, const char* filename) {
5376 SkPath path, pathB;
5377 path.setFillType(SkPathFillType::kWinding);
5378 path.moveTo(1, 4);
5379 path.cubicTo(2, 6, 5, 0, 5, 3);
5380 path.close();
5381 pathB.setFillType(SkPathFillType::kWinding);
5382 pathB.moveTo(0, 5);
5383 pathB.cubicTo(3, 5, 4, 1, 6, 2);
5384 pathB.close();
5385 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
5386 }
5387
cubicOp158(skiatest::Reporter * reporter,const char * filename)5388 static void cubicOp158(skiatest::Reporter* reporter, const char* filename) {
5389 SkPath path, pathB;
5390 path.setFillType(SkPathFillType::kWinding);
5391 path.moveTo(0,1);
5392 path.cubicTo(2,4, 2,0, 2,0);
5393 path.close();
5394 pathB.setFillType(SkPathFillType::kWinding);
5395 pathB.moveTo(0,2);
5396 pathB.cubicTo(0,2, 1,0, 4,2);
5397 pathB.close();
5398 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5399 }
5400
loop17(skiatest::Reporter * reporter,const char * filename)5401 static void loop17(skiatest::Reporter* reporter, const char* filename) {
5402 SkPath path, pathB;
5403 path.moveTo(1, 2);
5404 path.cubicTo(0, 3, -0.333333343f, 3.33333325f, 0.833333373f, 3.5f);
5405 path.close();
5406 pathB.moveTo(0, 3);
5407 pathB.cubicTo(-0.333333343f, 3.33333325f, 0.833333373f, 3.5f, 1, 2);
5408 pathB.close();
5409 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5410 }
5411
circlesOp4(skiatest::Reporter * reporter,const char * filename)5412 static void circlesOp4(skiatest::Reporter* reporter, const char* filename) {
5413 SkPath path, pathB;
5414 path.setFillType(SkPathFillType::kWinding);
5415 path.addCircle(0, 1, 5, SkPathDirection::kCW);
5416 pathB.setFillType(SkPathFillType::kWinding);
5417 pathB.addCircle(0, 1, 0, SkPathDirection::kCW);
5418 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5419 }
5420
bug5240(skiatest::Reporter * reporter,const char * filename)5421 static void bug5240(skiatest::Reporter* reporter, const char* filename) {
5422 SkPath path;
5423 path.moveTo(815, 82);
5424 path.cubicTo(814.4794311523438f, 82.7868881225586f, 814.5330810546875f,
5425 82.6266555786133f, 814.5291137695312f, 82.6252212524414f);
5426 path.cubicTo(814.5229492187500f, 82.6230010986328f, 814.3790283203125f,
5427 83.0008087158203f, 813.8533935546875f, 82.7072601318359f);
5428 path.close();
5429 testPathOp(reporter, path, path, kUnion_SkPathOp, filename);
5430 }
5431
android1(skiatest::Reporter * reporter,const char * filename)5432 static void android1(skiatest::Reporter* reporter, const char* filename) {
5433 SkPath path, pathB;
5434 path.moveTo(SkBits2Float(0xc0a00000), SkBits2Float(0x00000000)); // -5, 0
5435 path.lineTo(SkBits2Float(0x44866000), SkBits2Float(0x00000000)); // 1075, 0
5436 path.lineTo(SkBits2Float(0x44866000), SkBits2Float(0x43720000)); // 1075, 242
5437 path.lineTo(SkBits2Float(0xc0a00000), SkBits2Float(0x43720000)); // -5, 242
5438 path.lineTo(SkBits2Float(0xc0a00000), SkBits2Float(0x00000000)); // -5, 0
5439 path.close();
5440 pathB.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
5441 pathB.lineTo(SkBits2Float(0x44870000), SkBits2Float(0x00000000)); // 1080, 0
5442 pathB.lineTo(SkBits2Float(0x44870000), SkBits2Float(0x43720000)); // 1080, 242
5443 pathB.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x43720000)); // 0, 242
5444 pathB.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
5445 pathB.close();
5446 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5447 }
5448
seanbug(skiatest::Reporter * reporter,const char * filename)5449 static void seanbug(skiatest::Reporter* reporter, const char* filename) {
5450 SkPath path;
5451 path.setFillType(SkPathFillType::kEvenOdd);
5452 path.moveTo(SkBits2Float(0x45b56000), SkBits2Float(0x45bca000)); // 5804, 6036
5453 path.lineTo(SkBits2Float(0x45b55f0a), SkBits2Float(0x45bc9fc0)); // 5803.88f, 6035.97f
5454 path.lineTo(SkBits2Float(0x45b55e15), SkBits2Float(0x45bc9f7b)); // 5803.76f, 6035.94f
5455 path.lineTo(SkBits2Float(0x45b55d1f), SkBits2Float(0x45bc9f32)); // 5803.64f, 6035.9f
5456 path.lineTo(SkBits2Float(0x45b55c29), SkBits2Float(0x45bc9ee3)); // 5803.52f, 6035.86f
5457 path.lineTo(SkBits2Float(0x45b55b34), SkBits2Float(0x45bc9e90)); // 5803.4f, 6035.82f
5458 path.lineTo(SkBits2Float(0x45b55a3f), SkBits2Float(0x45bc9e38)); // 5803.28f, 6035.78f
5459 path.lineTo(SkBits2Float(0x45b5594a), SkBits2Float(0x45bc9ddc)); // 5803.16f, 6035.73f
5460 path.lineTo(SkBits2Float(0x45b55856), SkBits2Float(0x45bc9d7a)); // 5803.04f, 6035.68f
5461 path.lineTo(SkBits2Float(0x45b55762), SkBits2Float(0x45bc9d14)); // 5802.92f, 6035.63f
5462 path.lineTo(SkBits2Float(0x45b5566f), SkBits2Float(0x45bc9caa)); // 5802.8f, 6035.58f
5463 path.lineTo(SkBits2Float(0x45b5557c), SkBits2Float(0x45bc9c3b)); // 5802.69f, 6035.53f
5464 path.lineTo(SkBits2Float(0x45b55489), SkBits2Float(0x45bc9bc7)); // 5802.57f, 6035.47f
5465 path.lineTo(SkBits2Float(0x45b55397), SkBits2Float(0x45bc9b4f)); // 5802.45f, 6035.41f
5466 path.lineTo(SkBits2Float(0x45b552a6), SkBits2Float(0x45bc9ad3)); // 5802.33f, 6035.35f
5467 path.lineTo(SkBits2Float(0x45b551b5), SkBits2Float(0x45bc9a52)); // 5802.21f, 6035.29f
5468 path.lineTo(SkBits2Float(0x45b550c5), SkBits2Float(0x45bc99cd)); // 5802.1f, 6035.23f
5469 path.lineTo(SkBits2Float(0x45b54fd6), SkBits2Float(0x45bc9943)); // 5801.98f, 6035.16f
5470 path.lineTo(SkBits2Float(0x45b54ee8), SkBits2Float(0x45bc98b6)); // 5801.86f, 6035.09f
5471 path.lineTo(SkBits2Float(0x45b54dfb), SkBits2Float(0x45bc9824)); // 5801.75f, 6035.02f
5472 path.lineTo(SkBits2Float(0x45b54d0e), SkBits2Float(0x45bc978d)); // 5801.63f, 6034.94f
5473 path.lineTo(SkBits2Float(0x45b54c23), SkBits2Float(0x45bc96f3)); // 5801.52f, 6034.87f
5474 path.lineTo(SkBits2Float(0x45b54b39), SkBits2Float(0x45bc9654)); // 5801.4f, 6034.79f
5475 path.lineTo(SkBits2Float(0x45b54a4f), SkBits2Float(0x45bc95b2)); // 5801.29f, 6034.71f
5476 path.lineTo(SkBits2Float(0x45b54967), SkBits2Float(0x45bc950b)); // 5801.18f, 6034.63f
5477 path.lineTo(SkBits2Float(0x45b54880), SkBits2Float(0x45bc9460)); // 5801.06f, 6034.55f
5478 path.lineTo(SkBits2Float(0x45b5479a), SkBits2Float(0x45bc93b1)); // 5800.95f, 6034.46f
5479 path.lineTo(SkBits2Float(0x45b546b6), SkBits2Float(0x45bc92fe)); // 5800.84f, 6034.37f
5480 path.lineTo(SkBits2Float(0x45b545d3), SkBits2Float(0x45bc9248)); // 5800.73f, 6034.29f
5481 path.lineTo(SkBits2Float(0x45b544f1), SkBits2Float(0x45bc918d)); // 5800.62f, 6034.19f
5482 path.lineTo(SkBits2Float(0x45b54410), SkBits2Float(0x45bc90cf)); // 5800.51f, 6034.1f
5483 path.lineTo(SkBits2Float(0x45b54331), SkBits2Float(0x45bc900d)); // 5800.4f, 6034.01f
5484 path.lineTo(SkBits2Float(0x45b54254), SkBits2Float(0x45bc8f47)); // 5800.29f, 6033.91f
5485 path.lineTo(SkBits2Float(0x45b54178), SkBits2Float(0x45bc8e7d)); // 5800.18f, 6033.81f
5486 path.lineTo(SkBits2Float(0x45b5409e), SkBits2Float(0x45bc8db0)); // 5800.08f, 6033.71f
5487 path.lineTo(SkBits2Float(0x45b53fc6), SkBits2Float(0x45bc8cde)); // 5799.97f, 6033.61f
5488 path.lineTo(SkBits2Float(0x45b53eef), SkBits2Float(0x45bc8c0a)); // 5799.87f, 6033.5f
5489 path.lineTo(SkBits2Float(0x45b53e1a), SkBits2Float(0x45bc8b31)); // 5799.76f, 6033.4f
5490 path.lineTo(SkBits2Float(0x45b53d47), SkBits2Float(0x45bc8a56)); // 5799.66f, 6033.29f
5491 path.lineTo(SkBits2Float(0x45b53c75), SkBits2Float(0x45bc8976)); // 5799.56f, 6033.18f
5492 path.lineTo(SkBits2Float(0x45b53ba6), SkBits2Float(0x45bc8893)); // 5799.46f, 6033.07f
5493 path.lineTo(SkBits2Float(0x45b53ad8), SkBits2Float(0x45bc87ad)); // 5799.36f, 6032.96f
5494 path.lineTo(SkBits2Float(0x45b53a0d), SkBits2Float(0x45bc86c4)); // 5799.26f, 6032.85f
5495 path.lineTo(SkBits2Float(0x45b53944), SkBits2Float(0x45bc85d6)); // 5799.16f, 6032.73f
5496 path.lineTo(SkBits2Float(0x45b5387c), SkBits2Float(0x45bc84e6)); // 5799.06f, 6032.61f
5497 path.lineTo(SkBits2Float(0x45b537b7), SkBits2Float(0x45bc83f2)); // 5798.96f, 6032.49f
5498 path.lineTo(SkBits2Float(0x45b536f4), SkBits2Float(0x45bc82fc)); // 5798.87f, 6032.37f
5499 path.lineTo(SkBits2Float(0x45b53634), SkBits2Float(0x45bc8201)); // 5798.78f, 6032.25f
5500 path.lineTo(SkBits2Float(0x45b53575), SkBits2Float(0x45bc8104)); // 5798.68f, 6032.13f
5501 path.lineTo(SkBits2Float(0x45b534ba), SkBits2Float(0x45bc8004)); // 5798.59f, 6032
5502 path.lineTo(SkBits2Float(0x45b53400), SkBits2Float(0x45bc7f00)); // 5798.5f, 6031.88f
5503 path.lineTo(SkBits2Float(0x45b53349), SkBits2Float(0x45bc7df9)); // 5798.41f, 6031.75f
5504 path.lineTo(SkBits2Float(0x45b53294), SkBits2Float(0x45bc7cf0)); // 5798.32f, 6031.62f
5505 path.lineTo(SkBits2Float(0x45b531e2), SkBits2Float(0x45bc7be3)); // 5798.24f, 6031.49f
5506 path.lineTo(SkBits2Float(0x45b53133), SkBits2Float(0x45bc7ad3)); // 5798.15f, 6031.35f
5507 path.lineTo(SkBits2Float(0x45b53086), SkBits2Float(0x45bc79c1)); // 5798.07f, 6031.22f
5508 path.lineTo(SkBits2Float(0x45b52fdc), SkBits2Float(0x45bc78ab)); // 5797.98f, 6031.08f
5509 path.lineTo(SkBits2Float(0x45b52f35), SkBits2Float(0x45bc7793)); // 5797.9f, 6030.95f
5510 path.lineTo(SkBits2Float(0x45b52e90), SkBits2Float(0x45bc7678)); // 5797.82f, 6030.81f
5511 path.lineTo(SkBits2Float(0x45b52def), SkBits2Float(0x45bc755a)); // 5797.74f, 6030.67f
5512 path.lineTo(SkBits2Float(0x45b52d50), SkBits2Float(0x45bc7439)); // 5797.66f, 6030.53f
5513 path.lineTo(SkBits2Float(0x45b52cb4), SkBits2Float(0x45bc7316)); // 5797.59f, 6030.39f
5514 path.lineTo(SkBits2Float(0x45b52c1b), SkBits2Float(0x45bc71f0)); // 5797.51f, 6030.24f
5515 path.lineTo(SkBits2Float(0x45b52b86), SkBits2Float(0x45bc70c7)); // 5797.44f, 6030.1f
5516 path.lineTo(SkBits2Float(0x45b52af3), SkBits2Float(0x45bc6f9c)); // 5797.37f, 6029.95f
5517 path.lineTo(SkBits2Float(0x45b52a63), SkBits2Float(0x45bc6e6e)); // 5797.3f, 6029.8f
5518 path.lineTo(SkBits2Float(0x45b529d7), SkBits2Float(0x45bc6d3e)); // 5797.23f, 6029.66f
5519 path.lineTo(SkBits2Float(0x45b5294e), SkBits2Float(0x45bc6c0b)); // 5797.16f, 6029.51f
5520 path.lineTo(SkBits2Float(0x45b528c8), SkBits2Float(0x45bc6ad6)); // 5797.1f, 6029.35f
5521 path.lineTo(SkBits2Float(0x45b52846), SkBits2Float(0x45bc699e)); // 5797.03f, 6029.2f
5522 path.lineTo(SkBits2Float(0x45b527c7), SkBits2Float(0x45bc6864)); // 5796.97f, 6029.05f
5523 path.lineTo(SkBits2Float(0x45b5274b), SkBits2Float(0x45bc6728)); // 5796.91f, 6028.89f
5524 path.lineTo(SkBits2Float(0x45b526d3), SkBits2Float(0x45bc65e9)); // 5796.85f, 6028.74f
5525 path.lineTo(SkBits2Float(0x45b5265e), SkBits2Float(0x45bc64a8)); // 5796.8f, 6028.58f
5526 path.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45bc639b)); // 5796.75f, 6028.45f
5527 path.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45bab032)); // 5796.75f, 5974.02f
5528 path.lineTo(SkBits2Float(0x45b52611), SkBits2Float(0x45baaffd)); // 5796.76f, 5974
5529 path.lineTo(SkBits2Float(0x45b52687), SkBits2Float(0x45baae9d)); // 5796.82f, 5973.83f
5530 path.lineTo(SkBits2Float(0x45b52700), SkBits2Float(0x45baad40)); // 5796.88f, 5973.66f
5531 path.lineTo(SkBits2Float(0x45b5277d), SkBits2Float(0x45baabe7)); // 5796.94f, 5973.49f
5532 path.lineTo(SkBits2Float(0x45b527fe), SkBits2Float(0x45baaa91)); // 5797, 5973.32f
5533 path.lineTo(SkBits2Float(0x45b52883), SkBits2Float(0x45baa93f)); // 5797.06f, 5973.16f
5534 path.lineTo(SkBits2Float(0x45b5290b), SkBits2Float(0x45baa7f1)); // 5797.13f, 5972.99f
5535 path.lineTo(SkBits2Float(0x45b52998), SkBits2Float(0x45baa6a6)); // 5797.2f, 5972.83f
5536 path.lineTo(SkBits2Float(0x45b52a28), SkBits2Float(0x45baa55f)); // 5797.27f, 5972.67f
5537 path.lineTo(SkBits2Float(0x45b52abb), SkBits2Float(0x45baa41c)); // 5797.34f, 5972.51f
5538 path.lineTo(SkBits2Float(0x45b52b52), SkBits2Float(0x45baa2dc)); // 5797.42f, 5972.36f
5539 path.lineTo(SkBits2Float(0x45b52bed), SkBits2Float(0x45baa1a0)); // 5797.49f, 5972.2f
5540 path.lineTo(SkBits2Float(0x45b52c8c), SkBits2Float(0x45baa068)); // 5797.57f, 5972.05f
5541 path.lineTo(SkBits2Float(0x45b52d2e), SkBits2Float(0x45ba9f34)); // 5797.65f, 5971.9f
5542 path.lineTo(SkBits2Float(0x45b52dd3), SkBits2Float(0x45ba9e04)); // 5797.73f, 5971.75f
5543 path.lineTo(SkBits2Float(0x45b52e7c), SkBits2Float(0x45ba9cd8)); // 5797.81f, 5971.61f
5544 path.lineTo(SkBits2Float(0x45b52f28), SkBits2Float(0x45ba9baf)); // 5797.89f, 5971.46f
5545 path.lineTo(SkBits2Float(0x45b52fd8), SkBits2Float(0x45ba9a8b)); // 5797.98f, 5971.32f
5546 path.lineTo(SkBits2Float(0x45b5308b), SkBits2Float(0x45ba996b)); // 5798.07f, 5971.18f
5547 path.lineTo(SkBits2Float(0x45b53141), SkBits2Float(0x45ba984f)); // 5798.16f, 5971.04f
5548 path.lineTo(SkBits2Float(0x45b531fa), SkBits2Float(0x45ba9736)); // 5798.25f, 5970.9f
5549 path.lineTo(SkBits2Float(0x45b532b7), SkBits2Float(0x45ba9623)); // 5798.34f, 5970.77f
5550 path.lineTo(SkBits2Float(0x45b53377), SkBits2Float(0x45ba9513)); // 5798.43f, 5970.63f
5551 path.lineTo(SkBits2Float(0x45b5343a), SkBits2Float(0x45ba9407)); // 5798.53f, 5970.5f
5552 path.lineTo(SkBits2Float(0x45b53500), SkBits2Float(0x45ba9300)); // 5798.63f, 5970.38f
5553 path.lineTo(SkBits2Float(0x45b535c9), SkBits2Float(0x45ba91fd)); // 5798.72f, 5970.25f
5554 path.lineTo(SkBits2Float(0x45b53695), SkBits2Float(0x45ba90fe)); // 5798.82f, 5970.12f
5555 path.lineTo(SkBits2Float(0x45b53765), SkBits2Float(0x45ba9004)); // 5798.92f, 5970
5556 path.lineTo(SkBits2Float(0x45b53837), SkBits2Float(0x45ba8f0e)); // 5799.03f, 5969.88f
5557 path.lineTo(SkBits2Float(0x45b5390c), SkBits2Float(0x45ba8e1d)); // 5799.13f, 5969.76f
5558 path.lineTo(SkBits2Float(0x45b539e4), SkBits2Float(0x45ba8d30)); // 5799.24f, 5969.65f
5559 path.lineTo(SkBits2Float(0x45b53abf), SkBits2Float(0x45ba8c48)); // 5799.34f, 5969.54f
5560 path.lineTo(SkBits2Float(0x45b53b9d), SkBits2Float(0x45ba8b64)); // 5799.45f, 5969.42f
5561 path.lineTo(SkBits2Float(0x45b53c7d), SkBits2Float(0x45ba8a85)); // 5799.56f, 5969.31f
5562 path.lineTo(SkBits2Float(0x45b53d60), SkBits2Float(0x45ba89aa)); // 5799.67f, 5969.21f
5563 path.lineTo(SkBits2Float(0x45b53e46), SkBits2Float(0x45ba88d4)); // 5799.78f, 5969.1f
5564 path.lineTo(SkBits2Float(0x45b53f2f), SkBits2Float(0x45ba8803)); // 5799.9f, 5969
5565 path.lineTo(SkBits2Float(0x45b5401a), SkBits2Float(0x45ba8736)); // 5800.01f, 5968.9f
5566 path.lineTo(SkBits2Float(0x45b54108), SkBits2Float(0x45ba866f)); // 5800.13f, 5968.8f
5567 path.lineTo(SkBits2Float(0x45b541f8), SkBits2Float(0x45ba85ac)); // 5800.25f, 5968.71f
5568 path.lineTo(SkBits2Float(0x45b542eb), SkBits2Float(0x45ba84ee)); // 5800.36f, 5968.62f
5569 path.lineTo(SkBits2Float(0x45b543e0), SkBits2Float(0x45ba8435)); // 5800.48f, 5968.53f
5570 path.lineTo(SkBits2Float(0x45b544d8), SkBits2Float(0x45ba8380)); // 5800.61f, 5968.44f
5571 path.lineTo(SkBits2Float(0x45b545d2), SkBits2Float(0x45ba82d1)); // 5800.73f, 5968.35f
5572 path.lineTo(SkBits2Float(0x45b546cf), SkBits2Float(0x45ba8227)); // 5800.85f, 5968.27f
5573 path.lineTo(SkBits2Float(0x45b547ce), SkBits2Float(0x45ba8182)); // 5800.98f, 5968.19f
5574 path.lineTo(SkBits2Float(0x45b548cf), SkBits2Float(0x45ba80e2)); // 5801.1f, 5968.11f
5575 path.lineTo(SkBits2Float(0x45b549d2), SkBits2Float(0x45ba8047)); // 5801.23f, 5968.03f
5576 path.lineTo(SkBits2Float(0x45b54ad8), SkBits2Float(0x45ba7fb1)); // 5801.36f, 5967.96f
5577 path.lineTo(SkBits2Float(0x45b54be0), SkBits2Float(0x45ba7f20)); // 5801.48f, 5967.89f
5578 path.lineTo(SkBits2Float(0x45b54cea), SkBits2Float(0x45ba7e95)); // 5801.61f, 5967.82f
5579 path.lineTo(SkBits2Float(0x45b54df6), SkBits2Float(0x45ba7e0e)); // 5801.75f, 5967.76f
5580 path.lineTo(SkBits2Float(0x45b54f04), SkBits2Float(0x45ba7d8d)); // 5801.88f, 5967.69f
5581 path.lineTo(SkBits2Float(0x45b55015), SkBits2Float(0x45ba7d12)); // 5802.01f, 5967.63f
5582 path.lineTo(SkBits2Float(0x45b55127), SkBits2Float(0x45ba7c9c)); // 5802.14f, 5967.58f
5583 path.lineTo(SkBits2Float(0x45b551b5), SkBits2Float(0x45ba7c62)); // 5802.21f, 5967.55f
5584 path.lineTo(SkBits2Float(0x45c7b29a), SkBits2Float(0x45ba7c62)); // 6390.33f, 5967.55f
5585 path.lineTo(SkBits2Float(0x45c7b2f2), SkBits2Float(0x45ba7c8b)); // 6390.37f, 5967.57f
5586 path.lineTo(SkBits2Float(0x45c7b3dd), SkBits2Float(0x45ba7cff)); // 6390.48f, 5967.62f
5587 path.lineTo(SkBits2Float(0x45c7b4c7), SkBits2Float(0x45ba7d78)); // 6390.6f, 5967.68f
5588 path.lineTo(SkBits2Float(0x45c7b5b1), SkBits2Float(0x45ba7df5)); // 6390.71f, 5967.74f
5589 path.lineTo(SkBits2Float(0x45c7b699), SkBits2Float(0x45ba7e78)); // 6390.82f, 5967.81f
5590 path.lineTo(SkBits2Float(0x45c7b780), SkBits2Float(0x45ba7f00)); // 6390.94f, 5967.88f
5591 path.lineTo(SkBits2Float(0x45c7b866), SkBits2Float(0x45ba7f8d)); // 6391.05f, 5967.94f
5592 path.lineTo(SkBits2Float(0x45c7b94a), SkBits2Float(0x45ba801e)); // 6391.16f, 5968.01f
5593 path.lineTo(SkBits2Float(0x45c7ba2d), SkBits2Float(0x45ba80b5)); // 6391.27f, 5968.09f
5594 path.lineTo(SkBits2Float(0x45c7bb0f), SkBits2Float(0x45ba8150)); // 6391.38f, 5968.16f
5595 path.lineTo(SkBits2Float(0x45c7bbf0), SkBits2Float(0x45ba81f0)); // 6391.49f, 5968.24f
5596 path.lineTo(SkBits2Float(0x45c7bccf), SkBits2Float(0x45ba8294)); // 6391.6f, 5968.32f
5597 path.lineTo(SkBits2Float(0x45c7bdac), SkBits2Float(0x45ba833d)); // 6391.71f, 5968.4f
5598 path.lineTo(SkBits2Float(0x45c7be88), SkBits2Float(0x45ba83eb)); // 6391.82f, 5968.49f
5599 path.lineTo(SkBits2Float(0x45c7bf62), SkBits2Float(0x45ba849d)); // 6391.92f, 5968.58f
5600 path.lineTo(SkBits2Float(0x45c7c03a), SkBits2Float(0x45ba8554)); // 6392.03f, 5968.67f
5601 path.lineTo(SkBits2Float(0x45c7c111), SkBits2Float(0x45ba860f)); // 6392.13f, 5968.76f
5602 path.lineTo(SkBits2Float(0x45c7c1e6), SkBits2Float(0x45ba86cf)); // 6392.24f, 5968.85f
5603 path.lineTo(SkBits2Float(0x45c7c2b9), SkBits2Float(0x45ba8792)); // 6392.34f, 5968.95f
5604 path.lineTo(SkBits2Float(0x45c7c38b), SkBits2Float(0x45ba885b)); // 6392.44f, 5969.04f
5605 path.lineTo(SkBits2Float(0x45c7c45a), SkBits2Float(0x45ba8927)); // 6392.54f, 5969.14f
5606 path.lineTo(SkBits2Float(0x45c7c528), SkBits2Float(0x45ba89f7)); // 6392.64f, 5969.25f
5607 path.lineTo(SkBits2Float(0x45c7c5f3), SkBits2Float(0x45ba8acc)); // 6392.74f, 5969.35f
5608 path.lineTo(SkBits2Float(0x45c7c6bc), SkBits2Float(0x45ba8ba5)); // 6392.84f, 5969.46f
5609 path.lineTo(SkBits2Float(0x45c7c784), SkBits2Float(0x45ba8c82)); // 6392.94f, 5969.56f
5610 path.lineTo(SkBits2Float(0x45c7c849), SkBits2Float(0x45ba8d62)); // 6393.04f, 5969.67f
5611 path.lineTo(SkBits2Float(0x45c7c90c), SkBits2Float(0x45ba8e47)); // 6393.13f, 5969.78f
5612 path.lineTo(SkBits2Float(0x45c7c9cc), SkBits2Float(0x45ba8f30)); // 6393.22f, 5969.9f
5613 path.lineTo(SkBits2Float(0x45c7ca8b), SkBits2Float(0x45ba901c)); // 6393.32f, 5970.01f
5614 path.lineTo(SkBits2Float(0x45c7cb46), SkBits2Float(0x45ba910c)); // 6393.41f, 5970.13f
5615 path.lineTo(SkBits2Float(0x45c7cc00), SkBits2Float(0x45ba9200)); // 6393.5f, 5970.25f
5616 path.lineTo(SkBits2Float(0x45c7ccb7), SkBits2Float(0x45ba92f8)); // 6393.59f, 5970.37f
5617 path.lineTo(SkBits2Float(0x45c7cd6c), SkBits2Float(0x45ba93f3)); // 6393.68f, 5970.49f
5618 path.lineTo(SkBits2Float(0x45c7ce1e), SkBits2Float(0x45ba94f2)); // 6393.76f, 5970.62f
5619 path.lineTo(SkBits2Float(0x45c7cecd), SkBits2Float(0x45ba95f4)); // 6393.85f, 5970.74f
5620 path.lineTo(SkBits2Float(0x45c7cf7a), SkBits2Float(0x45ba96fa)); // 6393.93f, 5970.87f
5621 path.lineTo(SkBits2Float(0x45c7d024), SkBits2Float(0x45ba9803)); // 6394.02f, 5971
5622 path.lineTo(SkBits2Float(0x45c7d0cb), SkBits2Float(0x45ba9910)); // 6394.1f, 5971.13f
5623 path.lineTo(SkBits2Float(0x45c7d170), SkBits2Float(0x45ba9a20)); // 6394.18f, 5971.27f
5624 path.lineTo(SkBits2Float(0x45c7d211), SkBits2Float(0x45ba9b33)); // 6394.26f, 5971.4f
5625 path.lineTo(SkBits2Float(0x45c7d2b0), SkBits2Float(0x45ba9c4a)); // 6394.34f, 5971.54f
5626 path.lineTo(SkBits2Float(0x45c7d34c), SkBits2Float(0x45ba9d63)); // 6394.41f, 5971.67f
5627 path.lineTo(SkBits2Float(0x45c7d3e5), SkBits2Float(0x45ba9e80)); // 6394.49f, 5971.81f
5628 path.lineTo(SkBits2Float(0x45c7d47a), SkBits2Float(0x45ba9fa0)); // 6394.56f, 5971.95f
5629 path.lineTo(SkBits2Float(0x45c7d50d), SkBits2Float(0x45baa0c3)); // 6394.63f, 5972.1f
5630 path.lineTo(SkBits2Float(0x45c7d59d), SkBits2Float(0x45baa1e9)); // 6394.7f, 5972.24f
5631 path.lineTo(SkBits2Float(0x45c7d629), SkBits2Float(0x45baa312)); // 6394.77f, 5972.38f
5632 path.lineTo(SkBits2Float(0x45c7d6b2), SkBits2Float(0x45baa43e)); // 6394.84f, 5972.53f
5633 path.lineTo(SkBits2Float(0x45c7d738), SkBits2Float(0x45baa56d)); // 6394.9f, 5972.68f
5634 path.lineTo(SkBits2Float(0x45c7d7ba), SkBits2Float(0x45baa69f)); // 6394.97f, 5972.83f
5635 path.lineTo(SkBits2Float(0x45c7d839), SkBits2Float(0x45baa7d3)); // 6395.03f, 5972.98f
5636 path.lineTo(SkBits2Float(0x45c7d8b5), SkBits2Float(0x45baa90a)); // 6395.09f, 5973.13f
5637 path.lineTo(SkBits2Float(0x45c7d92d), SkBits2Float(0x45baaa44)); // 6395.15f, 5973.28f
5638 path.lineTo(SkBits2Float(0x45c7d9a2), SkBits2Float(0x45baab80)); // 6395.2f, 5973.44f
5639 path.lineTo(SkBits2Float(0x45c7da13), SkBits2Float(0x45baacbf)); // 6395.26f, 5973.59f
5640 path.lineTo(SkBits2Float(0x45c7da80), SkBits2Float(0x45baae00)); // 6395.31f, 5973.75f
5641 path.lineTo(SkBits2Float(0x45c7daea), SkBits2Float(0x45baaf44)); // 6395.36f, 5973.91f
5642 path.lineTo(SkBits2Float(0x45c7db50), SkBits2Float(0x45bab08a)); // 6395.41f, 5974.07f
5643 path.lineTo(SkBits2Float(0x45c7dbb2), SkBits2Float(0x45bab1d3)); // 6395.46f, 5974.23f
5644 path.lineTo(SkBits2Float(0x45c7dc10), SkBits2Float(0x45bab31d)); // 6395.51f, 5974.39f
5645 path.lineTo(SkBits2Float(0x45c7dc6a), SkBits2Float(0x45bab46a)); // 6395.55f, 5974.55f
5646 path.lineTo(SkBits2Float(0x45c7dc6b), SkBits2Float(0x45bc5fbe)); // 6395.55f, 6027.97f
5647 path.lineTo(SkBits2Float(0x45c7dc10), SkBits2Float(0x45bc60e7)); // 6395.51f, 6028.11f
5648 path.lineTo(SkBits2Float(0x45c7dbb2), SkBits2Float(0x45bc620f)); // 6395.46f, 6028.26f
5649 path.lineTo(SkBits2Float(0x45c7db50), SkBits2Float(0x45bc6336)); // 6395.41f, 6028.4f
5650 path.lineTo(SkBits2Float(0x45c7daea), SkBits2Float(0x45bc645c)); // 6395.36f, 6028.54f
5651 path.lineTo(SkBits2Float(0x45c7da80), SkBits2Float(0x45bc6580)); // 6395.31f, 6028.69f
5652 path.lineTo(SkBits2Float(0x45c7da13), SkBits2Float(0x45bc66a3)); // 6395.26f, 6028.83f
5653 path.lineTo(SkBits2Float(0x45c7d9a2), SkBits2Float(0x45bc67c5)); // 6395.2f, 6028.97f
5654 path.lineTo(SkBits2Float(0x45c7d92d), SkBits2Float(0x45bc68e6)); // 6395.15f, 6029.11f
5655 path.lineTo(SkBits2Float(0x45c7d8b5), SkBits2Float(0x45bc6a05)); // 6395.09f, 6029.25f
5656 path.lineTo(SkBits2Float(0x45c7d839), SkBits2Float(0x45bc6b23)); // 6395.03f, 6029.39f
5657 path.lineTo(SkBits2Float(0x45c7d7ba), SkBits2Float(0x45bc6c3f)); // 6394.97f, 6029.53f
5658 path.lineTo(SkBits2Float(0x45c7d738), SkBits2Float(0x45bc6d5a)); // 6394.9f, 6029.67f
5659 path.lineTo(SkBits2Float(0x45c7d6b2), SkBits2Float(0x45bc6e73)); // 6394.84f, 6029.81f
5660 path.lineTo(SkBits2Float(0x45c7d629), SkBits2Float(0x45bc6f8b)); // 6394.77f, 6029.94f
5661 path.lineTo(SkBits2Float(0x45c7d59d), SkBits2Float(0x45bc70a1)); // 6394.7f, 6030.08f
5662 path.lineTo(SkBits2Float(0x45c7d50d), SkBits2Float(0x45bc71b5)); // 6394.63f, 6030.21f
5663 path.lineTo(SkBits2Float(0x45c7d47a), SkBits2Float(0x45bc72c7)); // 6394.56f, 6030.35f
5664 path.lineTo(SkBits2Float(0x45c7d3e5), SkBits2Float(0x45bc73d8)); // 6394.49f, 6030.48f
5665 path.lineTo(SkBits2Float(0x45c7d34c), SkBits2Float(0x45bc74e7)); // 6394.41f, 6030.61f
5666 path.lineTo(SkBits2Float(0x45c7d2b0), SkBits2Float(0x45bc75f4)); // 6394.34f, 6030.74f
5667 path.lineTo(SkBits2Float(0x45c7d211), SkBits2Float(0x45bc76ff)); // 6394.26f, 6030.87f
5668 path.lineTo(SkBits2Float(0x45c7d170), SkBits2Float(0x45bc7807)); // 6394.18f, 6031
5669 path.lineTo(SkBits2Float(0x45c7d0cb), SkBits2Float(0x45bc790e)); // 6394.1f, 6031.13f
5670 path.lineTo(SkBits2Float(0x45c7d024), SkBits2Float(0x45bc7a13)); // 6394.02f, 6031.26f
5671 path.lineTo(SkBits2Float(0x45c7cf7a), SkBits2Float(0x45bc7b16)); // 6393.93f, 6031.39f
5672 path.lineTo(SkBits2Float(0x45c7cecd), SkBits2Float(0x45bc7c16)); // 6393.85f, 6031.51f
5673 path.lineTo(SkBits2Float(0x45c7ce1e), SkBits2Float(0x45bc7d14)); // 6393.76f, 6031.63f
5674 path.lineTo(SkBits2Float(0x45c7cd6c), SkBits2Float(0x45bc7e10)); // 6393.68f, 6031.76f
5675 path.lineTo(SkBits2Float(0x45c7ccb7), SkBits2Float(0x45bc7f09)); // 6393.59f, 6031.88f
5676 path.lineTo(SkBits2Float(0x45c7cc00), SkBits2Float(0x45bc8000)); // 6393.5f, 6032
5677 path.lineTo(SkBits2Float(0x45c7cb46), SkBits2Float(0x45bc80f5)); // 6393.41f, 6032.12f
5678 path.lineTo(SkBits2Float(0x45c7ca8b), SkBits2Float(0x45bc81e7)); // 6393.32f, 6032.24f
5679 path.lineTo(SkBits2Float(0x45c7c9cc), SkBits2Float(0x45bc82d6)); // 6393.22f, 6032.35f
5680 path.lineTo(SkBits2Float(0x45c7c90c), SkBits2Float(0x45bc83c3)); // 6393.13f, 6032.47f
5681 path.lineTo(SkBits2Float(0x45c7c849), SkBits2Float(0x45bc84ad)); // 6393.04f, 6032.58f
5682 path.lineTo(SkBits2Float(0x45c7c784), SkBits2Float(0x45bc8595)); // 6392.94f, 6032.7f
5683 path.lineTo(SkBits2Float(0x45c7c6bc), SkBits2Float(0x45bc8679)); // 6392.84f, 6032.81f
5684 path.lineTo(SkBits2Float(0x45c7c5f3), SkBits2Float(0x45bc875b)); // 6392.74f, 6032.92f
5685 path.lineTo(SkBits2Float(0x45c7c528), SkBits2Float(0x45bc883a)); // 6392.64f, 6033.03f
5686 path.lineTo(SkBits2Float(0x45c7c45a), SkBits2Float(0x45bc8917)); // 6392.54f, 6033.14f
5687 path.lineTo(SkBits2Float(0x45c7c38b), SkBits2Float(0x45bc89f0)); // 6392.44f, 6033.24f
5688 path.lineTo(SkBits2Float(0x45c7c2b9), SkBits2Float(0x45bc8ac6)); // 6392.34f, 6033.35f
5689 path.lineTo(SkBits2Float(0x45c7c1e6), SkBits2Float(0x45bc8b99)); // 6392.24f, 6033.45f
5690 path.lineTo(SkBits2Float(0x45c7c111), SkBits2Float(0x45bc8c69)); // 6392.13f, 6033.55f
5691 path.lineTo(SkBits2Float(0x45c7c03a), SkBits2Float(0x45bc8d36)); // 6392.03f, 6033.65f
5692 path.lineTo(SkBits2Float(0x45c7bf62), SkBits2Float(0x45bc8e00)); // 6391.92f, 6033.75f
5693 path.lineTo(SkBits2Float(0x45c7be88), SkBits2Float(0x45bc8ec7)); // 6391.82f, 6033.85f
5694 path.lineTo(SkBits2Float(0x45c7bdac), SkBits2Float(0x45bc8f8a)); // 6391.71f, 6033.94f
5695 path.lineTo(SkBits2Float(0x45c7bccf), SkBits2Float(0x45bc904a)); // 6391.6f, 6034.04f
5696 path.lineTo(SkBits2Float(0x45c7bbf0), SkBits2Float(0x45bc9106)); // 6391.49f, 6034.13f
5697 path.lineTo(SkBits2Float(0x45c7bb0f), SkBits2Float(0x45bc91bf)); // 6391.38f, 6034.22f
5698 path.lineTo(SkBits2Float(0x45c7ba2d), SkBits2Float(0x45bc9275)); // 6391.27f, 6034.31f
5699 path.lineTo(SkBits2Float(0x45c7b94a), SkBits2Float(0x45bc9327)); // 6391.16f, 6034.39f
5700 path.lineTo(SkBits2Float(0x45c7b866), SkBits2Float(0x45bc93d5)); // 6391.05f, 6034.48f
5701 path.lineTo(SkBits2Float(0x45c7b780), SkBits2Float(0x45bc9480)); // 6390.94f, 6034.56f
5702 path.lineTo(SkBits2Float(0x45c7b699), SkBits2Float(0x45bc9527)); // 6390.82f, 6034.64f
5703 path.lineTo(SkBits2Float(0x45c7b5b1), SkBits2Float(0x45bc95ca)); // 6390.71f, 6034.72f
5704 path.lineTo(SkBits2Float(0x45c7b4c8), SkBits2Float(0x45bc966a)); // 6390.6f, 6034.8f
5705 path.lineTo(SkBits2Float(0x45c7b3dd), SkBits2Float(0x45bc9706)); // 6390.48f, 6034.88f
5706 path.lineTo(SkBits2Float(0x45c7b2f2), SkBits2Float(0x45bc979e)); // 6390.37f, 6034.95f
5707 path.lineTo(SkBits2Float(0x45c7b205), SkBits2Float(0x45bc9832)); // 6390.25f, 6035.02f
5708 path.lineTo(SkBits2Float(0x45c7b118), SkBits2Float(0x45bc98c2)); // 6390.14f, 6035.09f
5709 path.lineTo(SkBits2Float(0x45c7b02a), SkBits2Float(0x45bc994e)); // 6390.02f, 6035.16f
5710 path.lineTo(SkBits2Float(0x45c7af3b), SkBits2Float(0x45bc99d5)); // 6389.9f, 6035.23f
5711 path.lineTo(SkBits2Float(0x45c7ae4b), SkBits2Float(0x45bc9a59)); // 6389.79f, 6035.29f
5712 path.lineTo(SkBits2Float(0x45c7ad5a), SkBits2Float(0x45bc9ad9)); // 6389.67f, 6035.36f
5713 path.lineTo(SkBits2Float(0x45c7ac69), SkBits2Float(0x45bc9b54)); // 6389.55f, 6035.42f
5714 path.lineTo(SkBits2Float(0x45c7ab77), SkBits2Float(0x45bc9bcb)); // 6389.43f, 6035.47f
5715 path.lineTo(SkBits2Float(0x45c7aa84), SkBits2Float(0x45bc9c3e)); // 6389.31f, 6035.53f
5716 path.lineTo(SkBits2Float(0x45c7a991), SkBits2Float(0x45bc9cac)); // 6389.2f, 6035.58f
5717 path.lineTo(SkBits2Float(0x45c7a89e), SkBits2Float(0x45bc9d16)); // 6389.08f, 6035.64f
5718 path.lineTo(SkBits2Float(0x45c7a7aa), SkBits2Float(0x45bc9d7b)); // 6388.96f, 6035.69f
5719 path.lineTo(SkBits2Float(0x45c7a6b6), SkBits2Float(0x45bc9ddc)); // 6388.84f, 6035.73f
5720 path.lineTo(SkBits2Float(0x45c7a5c1), SkBits2Float(0x45bc9e39)); // 6388.72f, 6035.78f
5721 path.lineTo(SkBits2Float(0x45c7a4cc), SkBits2Float(0x45bc9e90)); // 6388.6f, 6035.82f
5722 path.lineTo(SkBits2Float(0x45c7a3d7), SkBits2Float(0x45bc9ee3)); // 6388.48f, 6035.86f
5723 path.lineTo(SkBits2Float(0x45c7a2e1), SkBits2Float(0x45bc9f32)); // 6388.36f, 6035.9f
5724 path.lineTo(SkBits2Float(0x45c7a1eb), SkBits2Float(0x45bc9f7b)); // 6388.24f, 6035.94f
5725 path.lineTo(SkBits2Float(0x45c7a0f6), SkBits2Float(0x45bc9fc0)); // 6388.12f, 6035.97f
5726 path.lineTo(SkBits2Float(0x45c7a000), SkBits2Float(0x45bca000)); // 6388, 6036
5727 path.lineTo(SkBits2Float(0x45b56000), SkBits2Float(0x45bca000)); // 5804, 6036
5728 path.close();
5729
5730 SkPath path2;
5731 path2.setFillType(SkPathFillType::kWinding);
5732 path2.moveTo(SkBits2Float(0x45b52600), SkBits2Float(0x45ba7c62)); // 5796.75f, 5967.55f
5733 path2.lineTo(SkBits2Float(0x45c7dc6b), SkBits2Float(0x45ba7c62)); // 6395.55f, 5967.55f
5734 path2.lineTo(SkBits2Float(0x45c7dc6b), SkBits2Float(0x45bca239)); // 6395.55f, 6036.28f
5735 path2.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45bca239)); // 5796.75f, 6036.28f
5736 path2.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45ba7c62)); // 5796.75f, 5967.55f
5737 path2.close();
5738
5739 SkPath result_path;
5740 testPathOp(reporter, path, path2, kIntersect_SkPathOp, filename);
5741 }
5742
halbug(skiatest::Reporter * reporter,const char * filename)5743 static void halbug(skiatest::Reporter* reporter, const char* filename) {
5744 SkPath path, path2;
5745 path.setFillType(SkPathFillType::kEvenOdd);
5746 path.addRect(SkRect{278.653992f, 155.747406f, 580.15918f, 593.602051f});
5747 path2.setFillType(SkPathFillType::kWinding);
5748 path2.addRect(SkRect{278.657715f, 155.747314f, 580.238281f, 594.114014f});
5749 testPathOp(reporter, path, path2, kIntersect_SkPathOp, filename);
5750 }
5751
testRect1_u(skiatest::Reporter * reporter,const char * filename)5752 static void testRect1_u(skiatest::Reporter* reporter, const char* filename) {
5753 SkPath path, pathB;
5754 path.setFillType(SkPathFillType::kWinding);
5755 path.moveTo(0, 0);
5756 path.lineTo(0, 60);
5757 path.lineTo(60, 60);
5758 path.lineTo(60, 0);
5759 path.close();
5760 path.moveTo(30, 20);
5761 path.lineTo(30, 50);
5762 path.lineTo(50, 50);
5763 path.lineTo(50, 20);
5764 path.close();
5765 path.moveTo(24, 20);
5766 path.lineTo(24, 30);
5767 path.lineTo(36, 30);
5768 path.lineTo(36, 20);
5769 path.close();
5770 pathB.setFillType(SkPathFillType::kWinding);
5771 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
5772 }
5773
filinmangust14(skiatest::Reporter * reporter,const char * filename)5774 static void filinmangust14(skiatest::Reporter* reporter, const char* filename) {
5775 SkPath path, path1;
5776 path.setFillType(SkPathFillType::kWinding);
5777 path.moveTo(SkBits2Float(0x440bc02c), SkBits2Float(0x4409c000)); // 559.003f, 551
5778 path.lineTo(SkBits2Float(0x440bc02c), SkBits2Float(0x440e8000)); // 559.003f, 570
5779 path.lineTo(SkBits2Float(0x440bbfda), SkBits2Float(0x440e8000)); // 558.998f, 570
5780 path.lineTo(SkBits2Float(0x440bbfda), SkBits2Float(0x4409c000)); // 558.998f, 551
5781 path.lineTo(SkBits2Float(0x440bc02c), SkBits2Float(0x4409c000)); // 559.003f, 551
5782 path.close();
5783 path1 = path;
5784 path.reset();
5785 path.setFillType(SkPathFillType::kWinding);
5786 path.moveTo(SkBits2Float(0x45582000), SkBits2Float(0x45be9805)); // 3458, 6099
5787 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x45be9805)); // 3403.4f, 6099
5788 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x45be97fb)); // 3403.4f, 6099
5789 path.lineTo(SkBits2Float(0x45582000), SkBits2Float(0x45be97fb)); // 3458, 6099
5790 path.lineTo(SkBits2Float(0x45582000), SkBits2Float(0x45be9805)); // 3458, 6099
5791 path.close();
5792 path.moveTo(SkBits2Float(0x43b60000), SkBits2Float(0x443dffd7)); // 364, 759.997f
5793 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x443dffd7)); // 3403.4f, 759.997f
5794 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x443e0029)); // 3403.4f, 760.003f
5795 path.lineTo(SkBits2Float(0x43b60000), SkBits2Float(0x443e0029)); // 364, 760.003f
5796 path.lineTo(SkBits2Float(0x43b60000), SkBits2Float(0x443dffd7)); // 364, 759.997f
5797 path.close();
5798 path.moveTo(SkBits2Float(0x4554b65d), SkBits2Float(0x45be9800)); // 3403.4f, 6099
5799 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x443e0000)); // 3403.4f, 760
5800 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x443e0000)); // 3403.4f, 760
5801 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x45be9800)); // 3403.4f, 6099
5802 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x45be9800)); // 3403.4f, 6099
5803 path.close();
5804 path.moveTo(SkBits2Float(0x449f4000), SkBits2Float(0x43bdffae)); // 1274, 379.997f
5805 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x43bdffae)); // 3403.4f, 379.997f
5806 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x43be0052)); // 3403.4f, 380.003f
5807 path.lineTo(SkBits2Float(0x449f4000), SkBits2Float(0x43be0052)); // 1274, 380.003f
5808 path.lineTo(SkBits2Float(0x449f4000), SkBits2Float(0x43bdffae)); // 1274, 379.997f
5809 path.close();
5810 path.moveTo(SkBits2Float(0x4554b65d), SkBits2Float(0x443e0000)); // 3403.4f, 760
5811 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x43be0000)); // 3403.4f, 380
5812 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x43be0000)); // 3403.4f, 380
5813 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x443e0000)); // 3403.4f, 760
5814 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x443e0000)); // 3403.4f, 760
5815 path.close();
5816 testPathOp(reporter, path1, path, kUnion_SkPathOp, filename);
5817 }
5818
grshapearcs1(skiatest::Reporter * reporter,const char * filename)5819 static void grshapearcs1(skiatest::Reporter* reporter, const char* filename) {
5820 SkPath path, path1;
5821 path.setFillType(SkPathFillType::kWinding);
5822 path.moveTo(25.0098f, 23.1973f);
5823 path.lineTo(25.5689f, 22.3682f);
5824 path.conicTo(26.1281f, 21.5392f, 26.9572f, 22.0984f, 0.707107f);
5825 path.conicTo(27.7862f, 22.6576f, 27.227f, 23.4866f, 0.707107f);
5826 path.lineTo(26.6678f, 24.3156f);
5827 path.conicTo(26.1086f, 25.1447f, 25.2796f, 24.5855f, 0.707107f);
5828 path.conicTo(24.4506f, 24.0263f, 25.0098f, 23.1973f, 0.707107f);
5829 path.close();
5830 path.moveTo(26.6873f, 20.7101f);
5831 path.lineTo(27.2465f, 19.8811f);
5832 path.conicTo(27.8057f, 19.0521f, 28.6348f, 19.6113f, 0.707107f);
5833 path.conicTo(29.4638f, 20.1704f, 28.9046f, 20.9995f, 0.707107f);
5834 path.lineTo(28.3454f, 21.8285f);
5835 path.conicTo(27.7862f, 22.6576f, 26.9572f, 22.0984f, 0.707107f);
5836 path.conicTo(26.1281f, 21.5392f, 26.6873f, 20.7101f, 0.707107f);
5837 path.close();
5838 path.moveTo(28.3649f, 18.223f);
5839 path.lineTo(28.9241f, 17.394f);
5840 path.conicTo(29.4833f, 16.565f, 30.3123f, 17.1241f, 0.707107f);
5841 path.conicTo(31.1414f, 17.6833f, 30.5822f, 18.5124f, 0.707107f);
5842 path.lineTo(30.023f, 19.3414f);
5843 path.conicTo(29.4638f, 20.1704f, 28.6348f, 19.6113f, 0.707107f);
5844 path.conicTo(27.8057f, 19.0521f, 28.3649f, 18.223f, 0.707107f);
5845 path.close();
5846 path.moveTo(30.0425f, 15.7359f);
5847 path.lineTo(30.6017f, 14.9069f);
5848 path.conicTo(31.1609f, 14.0778f, 31.9899f, 14.637f, 0.707107f);
5849 path.conicTo(32.8189f, 15.1962f, 32.2598f, 16.0253f, 0.707107f);
5850 path.lineTo(31.7006f, 16.8543f);
5851 path.conicTo(31.1414f, 17.6833f, 30.3123f, 17.1241f, 0.707107f);
5852 path.conicTo(29.4833f, 16.565f, 30.0425f, 15.7359f, 0.707107f);
5853 path.close();
5854 path.moveTo(31.7201f, 13.2488f);
5855 path.lineTo(32.2793f, 12.4198f);
5856 path.conicTo(32.8385f, 11.5907f, 33.6675f, 12.1499f, 0.707107f);
5857 path.conicTo(34.4965f, 12.7091f, 33.9373f, 13.5381f, 0.707107f);
5858 path.lineTo(33.3781f, 14.3672f);
5859 path.conicTo(32.8189f, 15.1962f, 31.9899f, 14.637f, 0.707107f);
5860 path.conicTo(31.1609f, 14.0778f, 31.7201f, 13.2488f, 0.707107f);
5861 path.close();
5862 path.moveTo(33.3976f, 10.7617f);
5863 path.lineTo(33.9568f, 9.93265f);
5864 path.conicTo(34.516f, 9.10361f, 35.3451f, 9.6628f, 0.707107f);
5865 path.conicTo(36.1741f, 10.222f, 35.6149f, 11.051f, 0.707107f);
5866 path.lineTo(35.0557f, 11.8801f);
5867 path.conicTo(34.4965f, 12.7091f, 33.6675f, 12.1499f, 0.707107f);
5868 path.conicTo(32.8385f, 11.5907f, 33.3976f, 10.7617f, 0.707107f);
5869 path.close();
5870 path.moveTo(35.0752f, 8.27457f);
5871 path.lineTo(35.6344f, 7.44554f);
5872 path.conicTo(36.1936f, 6.6165f, 37.0226f, 7.17569f, 0.707107f);
5873 path.conicTo(37.8517f, 7.73488f, 37.2925f, 8.56392f, 0.707107f);
5874 path.lineTo(36.7333f, 9.39296f);
5875 path.conicTo(36.1741f, 10.222f, 35.3451f, 9.6628f, 0.707107f);
5876 path.conicTo(34.516f, 9.10361f, 35.0752f, 8.27457f, 0.707107f);
5877 path.close();
5878 path.moveTo(36.7528f, 5.78746f);
5879 path.lineTo(37.312f, 4.95842f);
5880 path.conicTo(37.8712f, 4.12939f, 38.7002f, 4.68858f, 0.707107f);
5881 path.conicTo(39.5293f, 5.24777f, 38.9701f, 6.07681f, 0.707107f);
5882 path.lineTo(38.4109f, 6.90585f);
5883 path.conicTo(37.8517f, 7.73488f, 37.0226f, 7.17569f, 0.707107f);
5884 path.conicTo(36.1936f, 6.6165f, 36.7528f, 5.78746f, 0.707107f);
5885 path.close();
5886 path.moveTo(39.9447f, 3.72429f);
5887 path.quadTo(40.3524f, 4.01069f, 40.7489f, 4.31248f);
5888 path.conicTo(41.5445f, 4.9182f, 40.9388f, 5.71387f, 0.707107f);
5889 path.conicTo(40.3331f, 6.50955f, 39.5374f, 5.90383f, 0.707107f);
5890 path.quadTo(39.1714f, 5.62521f, 38.7951f, 5.36088f);
5891 path.conicTo(37.9768f, 4.78608f, 38.5516f, 3.96779f, 0.707107f);
5892 path.conicTo(39.1264f, 3.14949f, 39.9447f, 3.72429f, 0.707107f);
5893 path.close();
5894 path.moveTo(42.3194f, 5.60826f);
5895 path.quadTo(42.707f, 5.95446f, 43.0804f, 6.31583f);
5896 path.conicTo(43.7991f, 7.01122f, 43.1037f, 7.72985f, 0.707107f);
5897 path.conicTo(42.4083f, 8.44848f, 41.6896f, 7.75308f, 0.707107f);
5898 path.quadTo(41.3448f, 7.41944f, 40.9871f, 7.09992f);
5899 path.conicTo(40.2413f, 6.43379f, 40.9074f, 5.68796f, 0.707107f);
5900 path.conicTo(41.5735f, 4.94212f, 42.3194f, 5.60826f, 0.707107f);
5901 path.close();
5902 path.moveTo(44.5406f, 7.84871f);
5903 path.quadTo(44.8959f, 8.25352f, 45.2341f, 8.67266f);
5904 path.conicTo(45.862f, 9.4509f, 45.0838f, 10.0789f, 0.707107f);
5905 path.conicTo(44.3056f, 10.7068f, 43.6776f, 9.9286f, 0.707107f);
5906 path.quadTo(43.3654f, 9.54174f, 43.0374f, 9.16805f);
5907 path.conicTo(42.3778f, 8.41649f, 43.1293f, 7.75682f, 0.707107f);
5908 path.conicTo(43.8809f, 7.09715f, 44.5406f, 7.84871f, 0.707107f);
5909 path.close();
5910 path.moveTo(46.528f, 10.4211f);
5911 path.quadTo(46.815f, 10.8449f, 47.0851f, 11.2796f);
5912 path.conicTo(47.6128f, 12.129f, 46.7633f, 12.6567f, 0.707107f);
5913 path.conicTo(45.9139f, 13.1844f, 45.3862f, 12.335f, 0.707107f);
5914 path.quadTo(45.1369f, 11.9337f, 44.872f, 11.5426f);
5915 path.conicTo(44.3113f, 10.7146f, 45.1393f, 10.1538f, 0.707107f);
5916 path.conicTo(45.9673f, 9.5931f, 46.528f, 10.4211f, 0.707107f);
5917 path.close();
5918 path.moveTo(48.1056f, 13.0782f);
5919 path.quadTo(48.3449f, 13.542f, 48.5654f, 14.015f);
5920 path.conicTo(48.9879f, 14.9213f, 48.0816f, 15.3438f, 0.707107f);
5921 path.conicTo(47.1752f, 15.7663f, 46.7527f, 14.86f, 0.707107f);
5922 path.quadTo(46.5492f, 14.4234f, 46.3283f, 13.9953f);
5923 path.conicTo(45.8698f, 13.1066f, 46.7584f, 12.6481f, 0.707107f);
5924 path.conicTo(47.6471f, 12.1895f, 48.1056f, 13.0782f, 0.707107f);
5925 path.close();
5926 path.moveTo(49.3755f, 15.9538f);
5927 path.quadTo(49.5594f, 16.4493f, 49.7229f, 16.9516f);
5928 path.conicTo(50.0325f, 17.9025f, 49.0816f, 18.2121f, 0.707107f);
5929 path.conicTo(48.1307f, 18.5216f, 47.8212f, 17.5707f, 0.707107f);
5930 path.quadTo(47.6702f, 17.1069f, 47.5005f, 16.6497f);
5931 path.conicTo(47.1526f, 15.7122f, 48.0901f, 15.3642f, 0.707107f);
5932 path.conicTo(49.0276f, 15.0163f, 49.3755f, 15.9538f, 0.707107f);
5933 path.close();
5934 path.moveTo(50.2964f, 18.9923f);
5935 path.quadTo(50.4191f, 19.5089f, 50.5206f, 20.0302f);
5936 path.conicTo(50.7117f, 21.0117f, 49.7302f, 21.2029f, 0.707107f);
5937 path.conicTo(48.7486f, 21.394f, 48.5575f, 20.4125f, 0.707107f);
5938 path.quadTo(48.4638f, 19.9313f, 48.3505f, 19.4544f);
5939 path.conicTo(48.1194f, 18.4815f, 49.0924f, 18.2504f, 0.707107f);
5940 path.conicTo(50.0653f, 18.0193f, 50.2964f, 18.9923f, 0.707107f);
5941 path.close();
5942 path.moveTo(50.8373f, 22.0956f);
5943 path.quadTo(50.8955f, 22.6138f, 50.933f, 23.1341f);
5944 path.conicTo(51.0047f, 24.1315f, 50.0073f, 24.2033f, 0.707107f);
5945 path.conicTo(49.0099f, 24.275f, 48.9381f, 23.2776f, 0.707107f);
5946 path.quadTo(48.9036f, 22.7975f, 48.8498f, 22.3191f);
5947 path.conicTo(48.7381f, 21.3253f, 49.7318f, 21.2136f, 0.707107f);
5948 path.conicTo(50.7255f, 21.1019f, 50.8373f, 22.0956f, 0.707107f);
5949 path.close();
5950 path.moveTo(50.9992f, 25.2099f);
5951 path.quadTo(50.9949f, 25.7358f, 50.9694f, 26.2608f);
5952 path.conicTo(50.9209f, 27.2596f, 49.9221f, 27.2111f, 0.707107f);
5953 path.conicTo(48.9233f, 27.1626f, 48.9718f, 26.1638f, 0.707107f);
5954 path.quadTo(48.9953f, 25.679f, 48.9992f, 25.1938f);
5955 path.conicTo(49.0073f, 24.1938f, 50.0073f, 24.2019f, 0.707107f);
5956 path.conicTo(51.0072f, 24.21f, 50.9992f, 25.2099f, 0.707107f);
5957 path.close();
5958 path.moveTo(50.7839f, 28.3454f);
5959 path.quadTo(50.7172f, 28.8596f, 50.63f, 29.3708f);
5960 path.conicTo(50.4619f, 30.3565f, 49.4761f, 30.1884f, 0.707107f);
5961 path.conicTo(48.4903f, 30.0203f, 48.6584f, 29.0346f, 0.707107f);
5962 path.quadTo(48.7389f, 28.5627f, 48.8005f, 28.088f);
5963 path.conicTo(48.9292f, 27.0963f, 49.9209f, 27.225f, 0.707107f);
5964 path.conicTo(50.9126f, 27.3537f, 50.7839f, 28.3454f, 0.707107f);
5965 path.close();
5966 path.moveTo(50.1906f, 31.437f);
5967 path.quadTo(50.0558f, 31.9646f, 49.899f, 32.4861f);
5968 path.conicTo(49.611f, 33.4438f, 48.6534f, 33.1558f, 0.707107f);
5969 path.conicTo(47.6957f, 32.8679f, 47.9837f, 31.9103f, 0.707107f);
5970 path.quadTo(48.1284f, 31.4289f, 48.2528f, 30.9418f);
5971 path.conicTo(48.5004f, 29.9729f, 49.4693f, 30.2205f, 0.707107f);
5972 path.conicTo(50.4382f, 30.4681f, 50.1906f, 31.437f, 0.707107f);
5973 path.close();
5974 path.moveTo(49.1978f, 34.5114f);
5975 path.quadTo(49.0051f, 35.0016f, 48.7927f, 35.4837f);
5976 path.conicTo(48.3895f, 36.3988f, 47.4744f, 35.9956f, 0.707107f);
5977 path.conicTo(46.5593f, 35.5923f, 46.9625f, 34.6772f, 0.707107f);
5978 path.quadTo(47.1586f, 34.2323f, 47.3364f, 33.7797f);
5979 path.conicTo(47.7023f, 32.849f, 48.6329f, 33.2149f, 0.707107f);
5980 path.conicTo(49.5636f, 33.5807f, 49.1978f, 34.5114f, 0.707107f);
5981 path.close();
5982 path.moveTo(47.8852f, 37.3397f);
5983 path.quadTo(47.6449f, 37.7853f, 47.3876f, 38.2211f);
5984 path.conicTo(46.879f, 39.0821f, 46.018f, 38.5736f, 0.707107f);
5985 path.conicTo(45.1569f, 38.0651f, 45.6655f, 37.204f, 0.707107f);
5986 path.quadTo(45.903f, 36.8018f, 46.1248f, 36.3906f);
5987 path.conicTo(46.5993f, 35.5103f, 47.4796f, 35.9849f, 0.707107f);
5988 path.conicTo(48.3598f, 36.4595f, 47.8852f, 37.3397f, 0.707107f);
5989 path.close();
5990 path.moveTo(46.3154f, 39.8881f);
5991 path.quadTo(46.0303f, 40.2962f, 45.7299f, 40.693f);
5992 path.conicTo(45.1264f, 41.4903f, 44.3291f, 40.8867f, 0.707107f);
5993 path.conicTo(43.5318f, 40.2831f, 44.1353f, 39.4858f, 0.707107f);
5994 path.quadTo(44.4126f, 39.1195f, 44.6757f, 38.7428f);
5995 path.conicTo(45.2483f, 37.923f, 46.0682f, 38.4956f, 0.707107f);
5996 path.conicTo(46.888f, 39.0682f, 46.3154f, 39.8881f, 0.707107f);
5997 path.close();
5998 path.moveTo(44.4398f, 42.2654f);
5999 path.quadTo(44.095f, 42.6536f, 43.7349f, 43.0278f);
6000 path.conicTo(43.0415f, 43.7484f, 42.321f, 43.055f, 0.707107f);
6001 path.conicTo(41.6004f, 42.3616f, 42.2938f, 41.641f, 0.707107f);
6002 path.quadTo(42.6261f, 41.2957f, 42.9444f, 40.9374f);
6003 path.conicTo(43.6084f, 40.1897f, 44.3561f, 40.8537f, 0.707107f);
6004 path.conicTo(45.1038f, 41.5177f, 44.4398f, 42.2654f, 0.707107f);
6005 path.close();
6006 path.moveTo(42.2075f, 44.4911f);
6007 path.quadTo(41.804f, 44.8473f, 41.3862f, 45.1865f);
6008 path.conicTo(40.6098f, 45.8167f, 39.9795f, 45.0403f, 0.707107f);
6009 path.conicTo(39.3493f, 44.2639f, 40.1257f, 43.6336f, 0.707107f);
6010 path.quadTo(40.5114f, 43.3205f, 40.8838f, 42.9918f);
6011 path.conicTo(41.6335f, 42.3299f, 42.2953f, 43.0796f, 0.707107f);
6012 path.conicTo(42.9572f, 43.8292f, 42.2075f, 44.4911f, 0.707107f);
6013 path.close();
6014 path.moveTo(39.6379f, 46.488f);
6015 path.quadTo(39.2151f, 46.776f, 38.7814f, 47.0471f);
6016 path.conicTo(37.9334f, 47.5771f, 37.4034f, 46.7292f, 0.707107f);
6017 path.conicTo(36.8733f, 45.8812f, 37.7213f, 45.3511f, 0.707107f);
6018 path.quadTo(38.1217f, 45.1009f, 38.5119f, 44.835f);
6019 path.conicTo(39.3383f, 44.2721f, 39.9013f, 45.0985f, 0.707107f);
6020 path.conicTo(40.4643f, 45.925f, 39.6379f, 46.488f, 0.707107f);
6021 path.close();
6022 path.moveTo(36.9864f, 48.0722f);
6023 path.quadTo(36.5234f, 48.3127f, 36.0513f, 48.5344f);
6024 path.conicTo(35.1461f, 48.9595f, 34.7211f, 48.0543f, 0.707107f);
6025 path.conicTo(34.296f, 47.1491f, 35.2012f, 46.7241f, 0.707107f);
6026 path.quadTo(35.6371f, 46.5194f, 36.0644f, 46.2974f);
6027 path.conicTo(36.9518f, 45.8364f, 37.4128f, 46.7238f, 0.707107f);
6028 path.conicTo(37.8738f, 47.6112f, 36.9864f, 48.0722f, 0.707107f);
6029 path.close();
6030 path.moveTo(34.1153f, 49.3498f);
6031 path.quadTo(33.6206f, 49.535f, 33.1187f, 49.6999f);
6032 path.conicTo(32.1687f, 50.0122f, 31.8565f, 49.0622f, 0.707107f);
6033 path.conicTo(31.5442f, 48.1122f, 32.4942f, 47.7999f, 0.707107f);
6034 path.quadTo(32.9575f, 47.6477f, 33.4141f, 47.4767f);
6035 path.conicTo(34.3507f, 47.1261f, 34.7012f, 48.0627f, 0.707107f);
6036 path.conicTo(35.0518f, 48.9992f, 34.1153f, 49.3498f, 0.707107f);
6037 path.close();
6038 path.moveTo(31.08f, 50.2791f);
6039 path.quadTo(30.5637f, 50.4033f, 30.0427f, 50.5063f);
6040 path.conicTo(29.0617f, 50.7002f, 28.8678f, 49.7192f, 0.707107f);
6041 path.conicTo(28.6738f, 48.7382f, 29.6548f, 48.5443f, 0.707107f);
6042 path.quadTo(30.1357f, 48.4492f, 30.6122f, 48.3346f);
6043 path.conicTo(31.5845f, 48.1007f, 31.8184f, 49.073f, 0.707107f);
6044 path.conicTo(32.0522f, 50.0453f, 31.08f, 50.2791f, 0.707107f);
6045 path.close();
6046 path.moveTo(27.9769f, 50.829f);
6047 path.quadTo(27.4588f, 50.8887f, 26.9386f, 50.9276f);
6048 path.conicTo(25.9414f, 51.0022f, 25.8668f, 50.005f, 0.707107f);
6049 path.conicTo(25.7923f, 49.0078f, 26.7895f, 48.9332f, 0.707107f);
6050 path.quadTo(27.2696f, 48.8973f, 27.7479f, 48.8422f);
6051 path.conicTo(28.7413f, 48.7277f, 28.8558f, 49.7211f, 0.707107f);
6052 path.conicTo(28.9703f, 50.7145f, 27.9769f, 50.829f, 0.707107f);
6053 path.close();
6054 path.moveTo(24.8625f, 50.9996f);
6055 path.quadTo(24.3373f, 50.9969f, 23.8128f, 50.9729f);
6056 path.conicTo(22.8138f, 50.9272f, 22.8595f, 49.9283f, 0.707107f);
6057 path.conicTo(22.9051f, 48.9293f, 23.9041f, 48.975f, 0.707107f);
6058 path.quadTo(24.3884f, 48.9971f, 24.8731f, 48.9997f);
6059 path.conicTo(25.8731f, 49.005f, 25.8678f, 50.005f, 0.707107f);
6060 path.conicTo(25.8624f, 51.0049f, 24.8625f, 50.9996f, 0.707107f);
6061 path.close();
6062 path.moveTo(21.7268f, 50.7931f);
6063 path.quadTo(21.2121f, 50.7278f, 20.7005f, 50.642f);
6064 path.conicTo(19.7143f, 50.4767f, 19.8796f, 49.4905f, 0.707107f);
6065 path.conicTo(20.045f, 48.5042f, 21.0312f, 48.6696f, 0.707107f);
6066 path.quadTo(21.5036f, 48.7488f, 21.9786f, 48.8091f);
6067 path.conicTo(22.9707f, 48.9349f, 22.8448f, 49.927f, 0.707107f);
6068 path.conicTo(22.7189f, 50.919f, 21.7268f, 50.7931f, 0.707107f);
6069 path.close();
6070 path.moveTo(18.6372f, 50.2094f);
6071 path.quadTo(18.1089f, 50.0761f, 17.5865f, 49.9207f);
6072 path.conicTo(16.628f, 49.6356f, 16.9132f, 48.6771f, 0.707107f);
6073 path.conicTo(17.1983f, 47.7186f, 18.1568f, 48.0037f, 0.707107f);
6074 path.quadTo(18.639f, 48.1472f, 19.1267f, 48.2702f);
6075 path.conicTo(20.0963f, 48.515f, 19.8516f, 49.4846f, 0.707107f);
6076 path.conicTo(19.6068f, 50.4542f, 18.6372f, 50.2094f, 0.707107f);
6077 path.close();
6078 path.moveTo(15.5577f, 49.2248f);
6079 path.quadTo(15.0665f, 49.0334f, 14.5834f, 48.8222f);
6080 path.conicTo(13.6672f, 48.4215f, 14.0678f, 47.5053f, 0.707107f);
6081 path.conicTo(14.4684f, 46.589f, 15.3847f, 46.9897f, 0.707107f);
6082 path.quadTo(15.8306f, 47.1846f, 16.284f, 47.3614f);
6083 path.conicTo(17.2158f, 47.7246f, 16.8526f, 48.6563f, 0.707107f);
6084 path.conicTo(16.4894f, 49.588f, 15.5577f, 49.2248f, 0.707107f);
6085 path.close();
6086 path.moveTo(12.7231f, 47.9189f);
6087 path.quadTo(12.2765f, 47.6797f, 11.8395f, 47.4233f);
6088 path.conicTo(10.9771f, 46.9171f, 11.4833f, 46.0547f, 0.707107f);
6089 path.conicTo(11.9894f, 45.1922f, 12.8519f, 45.6984f, 0.707107f);
6090 path.quadTo(13.2552f, 45.9351f, 13.6675f, 46.156f);
6091 path.conicTo(14.549f, 46.6282f, 14.0768f, 47.5096f, 0.707107f);
6092 path.conicTo(13.6046f, 48.3911f, 12.7231f, 47.9189f, 0.707107f);
6093 path.close();
6094 path.moveTo(10.1686f, 46.3548f);
6095 path.quadTo(9.76024f, 46.0712f, 9.363f, 45.7722f);
6096 path.conicTo(8.56406f, 45.1708f, 9.16549f, 44.3718f, 0.707107f);
6097 path.conicTo(9.76691f, 43.5729f, 10.5658f, 44.1743f, 0.707107f);
6098 path.quadTo(10.9325f, 44.4504f, 11.3095f, 44.7122f);
6099 path.conicTo(12.1308f, 45.2826f, 11.5604f, 46.1039f, 0.707107f);
6100 path.conicTo(10.9899f, 46.9253f, 10.1686f, 46.3548f, 0.707107f);
6101 path.close();
6102 path.moveTo(7.78853f, 44.4876f);
6103 path.quadTo(7.39972f, 44.1442f, 7.02492f, 43.7855f);
6104 path.conicTo(6.3024f, 43.0942f, 6.99374f, 42.3717f, 0.707107f);
6105 path.conicTo(7.68509f, 41.6492f, 8.40761f, 42.3405f, 0.707107f);
6106 path.quadTo(8.7536f, 42.6715f, 9.11249f, 42.9885f);
6107 path.conicTo(9.86201f, 43.6505f, 9.20003f, 44.4f, 0.707107f);
6108 path.conicTo(8.53805f, 45.1496f, 7.78853f, 44.4876f, 0.707107f);
6109 path.close();
6110 path.moveTo(5.55855f, 42.2635f);
6111 path.quadTo(5.20148f, 41.8614f, 4.86131f, 41.4449f);
6112 path.conicTo(4.22883f, 40.6703f, 5.0034f, 40.0378f, 0.707107f);
6113 path.conicTo(5.77797f, 39.4053f, 6.41046f, 40.1799f, 0.707107f);
6114 path.quadTo(6.72443f, 40.5644f, 7.05403f, 40.9356f);
6115 path.conicTo(7.71802f, 41.6833f, 6.97028f, 42.3473f, 0.707107f);
6116 path.conicTo(6.22254f, 43.0113f, 5.55855f, 42.2635f, 0.707107f);
6117 path.close();
6118 path.moveTo(3.55261f, 39.6973f);
6119 path.quadTo(3.26341f, 39.2752f, 2.99107f, 38.8422f);
6120 path.conicTo(2.45867f, 37.9957f, 3.30517f, 37.4633f, 0.707107f);
6121 path.conicTo(4.15167f, 36.9309f, 4.68406f, 37.7774f, 0.707107f);
6122 path.quadTo(4.93548f, 38.1772f, 5.20241f, 38.5667f);
6123 path.conicTo(5.76769f, 39.3916f, 4.94279f, 39.9569f, 0.707107f);
6124 path.conicTo(4.11789f, 40.5222f, 3.55261f, 39.6973f, 0.707107f);
6125 path.close();
6126 path.moveTo(1.96145f, 37.0509f);
6127 path.quadTo(1.71975f, 36.5889f, 1.49677f, 36.1175f);
6128 path.conicTo(1.06917f, 35.2135f, 1.97315f, 34.7859f, 0.707107f);
6129 path.conicTo(2.87712f, 34.3583f, 3.30471f, 35.2623f, 0.707107f);
6130 path.quadTo(3.51053f, 35.6974f, 3.73364f, 36.1239f);
6131 path.conicTo(4.19714f, 37.01f, 3.31105f, 37.4735f, 0.707107f);
6132 path.conicTo(2.42495f, 37.937f, 1.96145f, 37.0509f, 0.707107f);
6133 path.close();
6134 path.moveTo(0.676191f, 34.1844f);
6135 path.quadTo(0.489621f, 33.6902f, 0.323275f, 33.189f);
6136 path.conicTo(0.00831527f, 32.2399f, 0.95742f, 31.9249f, 0.707107f);
6137 path.conicTo(1.90653f, 31.6099f, 2.22149f, 32.559f, 0.707107f);
6138 path.quadTo(2.37504f, 33.0218f, 2.54726f, 33.4779f);
6139 path.conicTo(2.9005f, 34.4134f, 1.96497f, 34.7666f, 0.707107f);
6140 path.conicTo(1.02943f, 35.1199f, 0.676191f, 34.1844f, 0.707107f);
6141 path.close();
6142 path.moveTo(-0.261658f, 31.1521f);
6143 path.quadTo(-0.387304f, 30.6362f, -0.491779f, 30.1156f);
6144 path.conicTo(-0.68853f, 29.1351f, 0.291923f, 28.9384f, 0.707107f);
6145 path.conicTo(1.27238f, 28.7416f, 1.46913f, 29.7221f, 0.707107f);
6146 path.quadTo(1.56557f, 30.2026f, 1.68155f, 30.6789f);
6147 path.conicTo(1.91817f, 31.6505f, 0.946565f, 31.8871f, 0.707107f);
6148 path.conicTo(-0.0250367f, 32.1237f, -0.261658f, 31.1521f, 0.707107f);
6149 path.close();
6150 path.moveTo(-0.820549f, 28.0495f);
6151 path.quadTo(-0.881733f, 27.5314f, -0.922089f, 27.0113f);
6152 path.conicTo(-0.999449f, 26.0143f, -0.00244591f, 25.9369f, 0.707107f);
6153 path.conicTo(0.994557f, 25.8596f, 1.07192f, 26.8566f, 0.707107f);
6154 path.quadTo(1.10917f, 27.3367f, 1.16565f, 27.8149f);
6155 path.conicTo(1.28293f, 28.808f, 0.289834f, 28.9253f, 0.707107f);
6156 path.conicTo(-0.703265f, 29.0426f, -0.820549f, 28.0495f, 0.707107f);
6157 path.close();
6158 path.moveTo(-0.999918f, 24.9349f);
6159 path.quadTo(-0.998605f, 24.4104f, -0.976138f, 23.8863f);
6160 path.conicTo(-0.933305f, 22.8873f, 0.0657772f, 22.9301f, 0.707107f);
6161 path.conicTo(1.06486f, 22.9729f, 1.02203f, 23.972f, 0.707107f);
6162 path.quadTo(1.00129f, 24.4557f, 1.00008f, 24.9399f);
6163 path.conicTo(0.997572f, 25.9399f, -0.0024244f, 25.9374f, 0.707107f);
6164 path.conicTo(-1.00242f, 25.9349f, -0.999918f, 24.9349f, 0.707107f);
6165 path.close();
6166 path.moveTo(-0.802212f, 21.7991f);
6167 path.quadTo(-0.738311f, 21.284f, -0.653903f, 20.7719f);
6168 path.conicTo(-0.491283f, 19.7852f, 0.495406f, 19.9478f, 0.707107f);
6169 path.conicTo(1.48209f, 20.1104f, 1.31948f, 21.0971f, 0.707107f);
6170 path.quadTo(1.24156f, 21.5698f, 1.18257f, 22.0453f);
6171 path.conicTo(1.05946f, 23.0377f, 0.0670681f, 22.9146f, 0.707107f);
6172 path.conicTo(-0.925325f, 22.7915f, -0.802212f, 21.7991f, 0.707107f);
6173 path.close();
6174 path.moveTo(-0.228066f, 18.7115f);
6175 path.quadTo(-0.096172f, 18.1824f, 0.0577899f, 17.6593f);
6176 path.conicTo(0.340124f, 16.7f, 1.29944f, 16.9823f, 0.707107f);
6177 path.conicTo(2.25876f, 17.2646f, 1.97642f, 18.2239f, 0.707107f);
6178 path.quadTo(1.8343f, 18.7068f, 1.71255f, 19.1953f);
6179 path.conicTo(1.47069f, 20.1656f, 0.50038f, 19.9237f, 0.707107f);
6180 path.conicTo(-0.46993f, 19.6819f, -0.228066f, 18.7115f, 0.707107f);
6181 path.close();
6182 path.moveTo(0.74831f, 15.6269f);
6183 path.quadTo(0.938539f, 15.1347f, 1.14857f, 14.6506f);
6184 path.conicTo(1.54662f, 13.7333f, 2.46398f, 14.1313f, 0.707107f);
6185 path.conicTo(3.38135f, 14.5294f, 2.9833f, 15.4467f, 0.707107f);
6186 path.quadTo(2.78942f, 15.8936f, 2.61382f, 16.3479f);
6187 path.conicTo(2.25331f, 17.2806f, 1.32056f, 16.9201f, 0.707107f);
6188 path.conicTo(0.387801f, 16.5596f, 0.74831f, 15.6269f, 0.707107f);
6189 path.close();
6190 path.moveTo(2.04744f, 12.7861f);
6191 path.quadTo(2.28569f, 12.3384f, 2.5412f, 11.9003f);
6192 path.conicTo(3.04504f, 11.0365f, 3.90884f, 11.5403f, 0.707107f);
6193 path.conicTo(4.77264f, 12.0442f, 4.26881f, 12.908f, 0.707107f);
6194 path.quadTo(4.03293f, 13.3123f, 3.81302f, 13.7256f);
6195 path.conicTo(3.34325f, 14.6084f, 2.46046f, 14.1386f, 0.707107f);
6196 path.conicTo(1.57767f, 13.6689f, 2.04744f, 12.7861f, 0.707107f);
6197 path.close();
6198 path.moveTo(3.60589f, 10.2253f);
6199 path.quadTo(3.88812f, 9.81661f, 4.18576f, 9.419f);
6200 path.conicTo(4.78503f, 8.61845f, 5.58558f, 9.21772f, 0.707107f);
6201 path.conicTo(6.38613f, 9.81699f, 5.78686f, 10.6175f, 0.707107f);
6202 path.quadTo(5.51211f, 10.9846f, 5.25159f, 11.3618f);
6203 path.conicTo(4.68333f, 12.1847f, 3.86048f, 11.6164f, 0.707107f);
6204 path.conicTo(3.03763f, 11.0481f, 3.60589f, 10.2253f, 0.707107f);
6205 path.close();
6206 path.moveTo(5.46482f, 7.84259f);
6207 path.quadTo(5.80682f, 7.4532f, 6.16407f, 7.07773f);
6208 path.conicTo(6.85339f, 6.35327f, 7.57785f, 7.04259f, 0.707107f);
6209 path.conicTo(8.30231f, 7.73191f, 7.61299f, 8.45636f, 0.707107f);
6210 path.quadTo(7.28322f, 8.80295f, 6.96752f, 9.16239f);
6211 path.conicTo(6.30762f, 9.91375f, 5.55627f, 9.25385f, 0.707107f);
6212 path.conicTo(4.80492f, 8.59395f, 5.46482f, 7.84259f, 0.707107f);
6213 path.close();
6214 path.moveTo(7.68062f, 5.60827f);
6215 path.quadTo(8.08142f, 5.25031f, 8.49666f, 4.90921f);
6216 path.conicTo(9.26938f, 4.27447f, 9.90412f, 5.04719f, 0.707107f);
6217 path.conicTo(10.5389f, 5.81992f, 9.76614f, 6.45466f, 0.707107f);
6218 path.quadTo(9.38285f, 6.76951f, 9.01289f, 7.09994f);
6219 path.conicTo(8.26705f, 7.76607f, 7.60092f, 7.02024f, 0.707107f);
6220 path.conicTo(6.93479f, 6.2744f, 7.68062f, 5.60827f, 0.707107f);
6221 path.close();
6222 path.moveTo(10.2392f, 3.59627f);
6223 path.quadTo(10.6626f, 3.30433f, 11.0971f, 3.02935f);
6224 path.conicTo(11.9421f, 2.49463f, 12.4768f, 3.33965f, 0.707107f);
6225 path.conicTo(13.0116f, 4.18467f, 12.1666f, 4.7194f, 0.707107f);
6226 path.quadTo(11.7654f, 4.97322f, 11.3747f, 5.24271f);
6227 path.conicTo(10.5515f, 5.81043f, 9.98373f, 4.98721f, 0.707107f);
6228 path.conicTo(9.41601f, 4.16399f, 10.2392f, 3.59627f, 0.707107f);
6229 path.close();
6230 path.moveTo(12.8847f, 1.99524f);
6231 path.quadTo(13.3459f, 1.75234f, 13.8165f, 1.52812f);
6232 path.conicTo(14.7193f, 1.09799f, 15.1494f, 2.00075f, 0.707107f);
6233 path.conicTo(15.5795f, 2.90352f, 14.6768f, 3.33365f, 0.707107f);
6234 path.quadTo(14.2424f, 3.54063f, 13.8166f, 3.76484f);
6235 path.conicTo(12.9318f, 4.23081f, 12.4658f, 3.34601f, 0.707107f);
6236 path.conicTo(11.9999f, 2.46122f, 12.8847f, 1.99524f, 0.707107f);
6237 path.close();
6238 path.moveTo(15.7467f, 0.702339f);
6239 path.quadTo(16.2402f, 0.514409f, 16.7409f, 0.346672f);
6240 path.conicTo(17.6891f, 0.029011f, 18.0067f, 0.977215f, 0.707107f);
6241 path.conicTo(18.3244f, 1.92542f, 17.3762f, 2.24308f, 0.707107f);
6242 path.quadTo(16.914f, 2.39792f, 16.4585f, 2.57139f);
6243 path.conicTo(15.524f, 2.92729f, 15.1681f, 1.99276f, 0.707107f);
6244 path.conicTo(14.8122f, 1.05824f, 15.7467f, 0.702339f, 0.707107f);
6245 path.close();
6246 path.moveTo(18.7758f, -0.24399f);
6247 path.quadTo(19.2913f, -0.371107f, 19.8116f, -0.477061f);
6248 path.conicTo(20.7915f, -0.676608f, 20.9911f, 0.303281f, 0.707107f);
6249 path.conicTo(21.1906f, 1.28317f, 20.2107f, 1.48272f, 0.707107f);
6250 path.quadTo(19.7304f, 1.58052f, 19.2546f, 1.69785f);
6251 path.conicTo(18.2836f, 1.93725f, 18.0443f, 0.966329f, 0.707107f);
6252 path.conicTo(17.8049f, -0.00459272f, 18.7758f, -0.24399f, 0.707107f);
6253 path.close();
6254 path.moveTo(21.878f, -0.811882f);
6255 path.quadTo(22.396f, -0.874528f, 22.916f, -0.916348f);
6256 path.conicTo(23.9128f, -0.996504f, 23.993f, 0.000278629f, 0.707107f);
6257 path.conicTo(24.0731f, 0.997061f, 23.0764f, 1.07722f, 0.707107f);
6258 path.quadTo(22.5963f, 1.11582f, 22.1182f, 1.17365f);
6259 path.conicTo(21.1254f, 1.29372f, 21.0053f, 0.300958f, 0.707107f);
6260 path.conicTo(20.8853f, -0.691807f, 21.878f, -0.811882f, 0.707107f);
6261 path.close();
6262 path.moveTo(24.9926f, -0.999999f);
6263 path.quadTo(25.5166f, -1.00015f, 26.0401f, -0.979188f);
6264 path.conicTo(27.0393f, -0.939179f, 26.9992f, 0.0600199f, 0.707107f);
6265 path.conicTo(26.9592f, 1.05922f, 25.96f, 1.01921f, 0.707107f);
6266 path.quadTo(25.4768f, 0.999863f, 24.9932f, 1);
6267 path.conicTo(23.9932f, 1.00029f, 23.9929f, 0.000287339f, 0.707107f);
6268 path.conicTo(23.9926f, -0.999713f, 24.9926f, -0.999999f, 0.707107f);
6269 path.close();
6270 path.moveTo(28.1286f, -0.811081f);
6271 path.quadTo(28.6441f, -0.748593f, 29.1567f, -0.665572f);
6272 path.conicTo(30.1439f, -0.505698f, 29.984f, 0.48144f, 0.707107f);
6273 path.conicTo(29.8241f, 1.46858f, 28.837f, 1.3087f, 0.707107f);
6274 path.quadTo(28.3638f, 1.23207f, 27.8879f, 1.17439f);
6275 path.conicTo(26.8952f, 1.05406f, 27.0155f, 0.0613233f, 0.707107f);
6276 path.conicTo(27.1359f, -0.931411f, 28.1286f, -0.811081f, 0.707107f);
6277 path.close();
6278 path.moveTo(31.214f, -0.246499f);
6279 path.quadTo(31.7439f, -0.116076f, 32.2679f, 0.0364622f);
6280 path.conicTo(33.228f, 0.315996f, 32.9485f, 1.27613f, 0.707107f);
6281 path.conicTo(32.6689f, 2.23627f, 31.7088f, 1.95673f, 0.707107f);
6282 path.quadTo(31.2252f, 1.81593f, 30.736f, 1.69554f);
6283 path.conicTo(29.765f, 1.45654f, 30.004f, 0.48552f, 0.707107f);
6284 path.conicTo(30.243f, -0.485499f, 31.214f, -0.246499f, 0.707107f);
6285 path.close();
6286 path.moveTo(34.3038f, 0.721629f);
6287 path.quadTo(34.797f, 0.910612f, 35.282f, 1.11946f);
6288 path.conicTo(36.2005f, 1.51493f, 35.805f, 2.43341f, 0.707107f);
6289 path.conicTo(35.4096f, 3.35189f, 34.4911f, 2.95642f, 0.707107f);
6290 path.quadTo(34.0434f, 2.76365f, 33.5881f, 2.5892f);
6291 path.conicTo(32.6543f, 2.23137f, 33.0122f, 1.29758f, 0.707107f);
6292 path.conicTo(33.37f, 0.363796f, 34.3038f, 0.721629f, 0.707107f);
6293 path.close();
6294 path.moveTo(37.1508f, 2.01396f);
6295 path.quadTo(37.5996f, 2.2512f, 38.0388f, 2.50578f);
6296 path.conicTo(38.904f, 3.00727f, 38.4025f, 3.87244f, 0.707107f);
6297 path.conicTo(37.901f, 4.7376f, 37.0358f, 4.23612f, 0.707107f);
6298 path.quadTo(36.6304f, 4.00111f, 36.2161f, 3.78211f);
6299 path.conicTo(35.332f, 3.31476f, 35.7994f, 2.43069f, 0.707107f);
6300 path.conicTo(36.2667f, 1.54661f, 37.1508f, 2.01396f, 0.707107f);
6301 path.close();
6302 path.moveTo(39.718f, 3.56681f);
6303 path.quadTo(40.1269f, 3.84765f, 40.5249f, 4.14392f);
6304 path.conicTo(41.3271f, 4.74104f, 40.73f, 5.54319f, 0.707107f);
6305 path.conicTo(40.1329f, 6.34535f, 39.3307f, 5.74823f, 0.707107f);
6306 path.quadTo(38.9634f, 5.47478f, 38.5858f, 5.21552f);
6307 path.conicTo(37.7615f, 4.64945f, 38.3275f, 3.82509f, 0.707107f);
6308 path.conicTo(38.8936f, 3.00074f, 39.718f, 3.56681f, 0.707107f);
6309 path.close();
6310 path.moveTo(42.1033f, 5.41741f);
6311 path.quadTo(42.4933f, 5.75802f, 42.8694f, 6.11388f);
6312 path.conicTo(43.5958f, 6.80115f, 42.9085f, 7.52755f, 0.707107f);
6313 path.conicTo(42.2212f, 8.25394f, 41.4948f, 7.56667f, 0.707107f);
6314 path.quadTo(41.1476f, 7.23817f, 40.7876f, 6.92375f);
6315 path.conicTo(40.0345f, 6.26593f, 40.6923f, 5.51275f, 0.707107f);
6316 path.conicTo(41.3501f, 4.75958f, 42.1033f, 5.41741f, 0.707107f);
6317 path.close();
6318 path.moveTo(44.3419f, 7.62498f);
6319 path.quadTo(44.7007f, 8.02444f, 45.0428f, 8.43835f);
6320 path.conicTo(45.6797f, 9.20922f, 44.9089f, 9.84622f, 0.707107f);
6321 path.conicTo(44.138f, 10.4832f, 43.501f, 9.71234f, 0.707107f);
6322 path.quadTo(43.1852f, 9.3302f, 42.854f, 8.96151f);
6323 path.conicTo(42.1858f, 8.21759f, 42.9297f, 7.54932f, 0.707107f);
6324 path.conicTo(43.6736f, 6.88106f, 44.3419f, 7.62498f, 0.707107f);
6325 path.close();
6326 path.moveTo(46.3599f, 10.1759f);
6327 path.quadTo(46.6546f, 10.6005f, 46.9322f, 11.0366f);
6328 path.conicTo(47.4693f, 11.8801f, 46.6257f, 12.4172f, 0.707107f);
6329 path.conicTo(45.7822f, 12.9542f, 45.2451f, 12.1107f, 0.707107f);
6330 path.quadTo(44.9889f, 11.7082f, 44.7168f, 11.3162f);
6331 path.conicTo(44.1467f, 10.4947f, 44.9682f, 9.92452f, 0.707107f);
6332 path.conicTo(45.7897f, 9.35435f, 46.3599f, 10.1759f, 0.707107f);
6333 path.close();
6334 path.moveTo(47.9708f, 12.8204f);
6335 path.quadTo(48.2149f, 13.2808f, 48.4403f, 13.7506f);
6336 path.conicTo(48.873f, 14.6521f, 47.9715f, 15.0848f, 0.707107f);
6337 path.conicTo(47.0699f, 15.5174f, 46.6372f, 14.6159f, 0.707107f);
6338 path.quadTo(46.4291f, 14.1822f, 46.2038f, 13.7573f);
6339 path.conicTo(45.7354f, 12.8738f, 46.6188f, 12.4054f, 0.707107f);
6340 path.conicTo(47.5023f, 11.9369f, 47.9708f, 12.8204f, 0.707107f);
6341 path.close();
6342 path.moveTo(49.2713f, 15.6778f);
6343 path.quadTo(49.4606f, 16.1706f, 49.6297f, 16.6708f);
6344 path.conicTo(49.9501f, 17.6181f, 49.0028f, 17.9384f, 0.707107f);
6345 path.conicTo(48.0555f, 18.2588f, 47.7351f, 17.3115f, 0.707107f);
6346 path.quadTo(47.5791f, 16.8499f, 47.4043f, 16.3949f);
6347 path.conicTo(47.0458f, 15.4614f, 47.9793f, 15.1029f, 0.707107f);
6348 path.conicTo(48.9128f, 14.7443f, 49.2713f, 15.6778f, 0.707107f);
6349 path.close();
6350 path.moveTo(50.2261f, 18.7037f);
6351 path.quadTo(50.3547f, 19.2188f, 50.4621f, 19.7388f);
6352 path.conicTo(50.6645f, 20.7182f, 49.6852f, 20.9205f, 0.707107f);
6353 path.conicTo(48.7059f, 21.1229f, 48.5035f, 20.1436f, 0.707107f);
6354 path.quadTo(48.4043f, 19.6636f, 48.2856f, 19.1881f);
6355 path.conicTo(48.0435f, 18.2178f, 49.0137f, 17.9757f, 0.707107f);
6356 path.conicTo(49.984f, 17.7335f, 50.2261f, 18.7037f, 0.707107f);
6357 path.close();
6358 path.moveTo(50.803f, 21.8055f);
6359 path.quadTo(50.8671f, 22.3234f, 50.9104f, 22.8434f);
6360 path.conicTo(50.9934f, 23.8399f, 49.9968f, 23.9229f, 0.707107f);
6361 path.conicTo(49.0002f, 24.0058f, 48.9173f, 23.0093f, 0.707107f);
6362 path.quadTo(48.8773f, 22.5293f, 48.8182f, 22.0513f);
6363 path.conicTo(48.6953f, 21.0588f, 49.6877f, 20.936f, 0.707107f);
6364 path.conicTo(50.6801f, 20.8131f, 50.803f, 21.8055f, 0.707107f);
6365 path.close();
6366 path.moveTo(50.9999f, 24.9202f);
6367 path.quadTo(51.0015f, 25.4434f, 50.982f, 25.9664f);
6368 path.conicTo(50.9449f, 26.9657f, 49.9456f, 26.9286f, 0.707107f);
6369 path.conicTo(48.9463f, 26.8914f, 48.9834f, 25.8921f, 0.707107f);
6370 path.quadTo(49.0014f, 25.4094f, 48.9999f, 24.9263f);
6371 path.conicTo(48.9968f, 23.9263f, 49.9968f, 23.9232f, 0.707107f);
6372 path.conicTo(50.9968f, 23.9202f, 50.9999f, 24.9202f, 0.707107f);
6373 path.close();
6374 path.moveTo(50.8198f, 28.0562f);
6375 path.quadTo(50.7587f, 28.5721f, 50.677f, 29.0852f);
6376 path.conicTo(50.5199f, 30.0728f, 49.5323f, 29.9157f, 0.707107f);
6377 path.conicTo(48.5448f, 29.7586f, 48.7019f, 28.771f, 0.707107f);
6378 path.quadTo(48.7772f, 28.2974f, 48.8336f, 27.8211f);
6379 path.conicTo(48.9512f, 26.8281f, 49.9442f, 26.9456f, 0.707107f);
6380 path.conicTo(50.9373f, 27.0632f, 50.8198f, 28.0562f, 0.707107f);
6381 path.close();
6382 path.moveTo(50.2647f, 31.1395f);
6383 path.quadTo(50.1358f, 31.6701f, 49.9847f, 32.1949f);
6384 path.conicTo(49.7079f, 33.1558f, 48.747f, 32.8791f, 0.707107f);
6385 path.conicTo(47.786f, 32.6024f, 48.0628f, 31.6414f, 0.707107f);
6386 path.quadTo(48.2022f, 31.1571f, 48.3213f, 30.6672f);
6387 path.conicTo(48.5574f, 29.6955f, 49.5291f, 29.9317f, 0.707107f);
6388 path.conicTo(50.5009f, 30.1678f, 50.2647f, 31.1395f, 0.707107f);
6389 path.close();
6390 path.moveTo(49.3049f, 34.2343f);
6391 path.quadTo(49.1171f, 34.7285f, 48.9095f, 35.2145f);
6392 path.conicTo(48.5166f, 36.1341f, 47.597f, 35.7412f, 0.707107f);
6393 path.conicTo(46.6774f, 35.3483f, 47.0703f, 34.4288f, 0.707107f);
6394 path.quadTo(47.262f, 33.9801f, 47.4353f, 33.524f);
6395 path.conicTo(47.7904f, 32.5892f, 48.7252f, 32.9444f, 0.707107f);
6396 path.conicTo(49.66f, 33.2995f, 49.3049f, 34.2343f, 0.707107f);
6397 path.close();
6398 path.moveTo(48.0194f, 37.0875f);
6399 path.quadTo(47.7831f, 37.5374f, 47.5295f, 37.9777f);
6400 path.conicTo(47.0304f, 38.8443f, 46.1638f, 38.3451f, 0.707107f);
6401 path.conicTo(45.2973f, 37.846f, 45.7965f, 36.9795f, 0.707107f);
6402 path.quadTo(46.0306f, 36.5729f, 46.2487f, 36.1577f);
6403 path.conicTo(46.7136f, 35.2723f, 47.5989f, 35.7372f, 0.707107f);
6404 path.conicTo(48.4843f, 36.2021f, 48.0194f, 37.0875f, 0.707107f);
6405 path.close();
6406 path.moveTo(46.4721f, 39.6612f);
6407 path.quadTo(46.1926f, 40.0705f, 45.8977f, 40.4688f);
6408 path.conicTo(45.3028f, 41.2726f, 44.499f, 40.6776f, 0.707107f);
6409 path.conicTo(43.6953f, 40.0827f, 44.2902f, 39.2789f, 0.707107f);
6410 path.quadTo(44.5624f, 38.9112f, 44.8204f, 38.5334f);
6411 path.conicTo(45.3843f, 37.7075f, 46.2101f, 38.2714f, 0.707107f);
6412 path.conicTo(47.036f, 38.8353f, 46.4721f, 39.6612f, 0.707107f);
6413 path.close();
6414 path.moveTo(44.6298f, 42.0491f);
6415 path.quadTo(44.2906f, 42.4396f, 43.9361f, 42.8164f);
6416 path.conicTo(43.2509f, 43.5447f, 42.5226f, 42.8595f, 0.707107f);
6417 path.conicTo(41.7942f, 42.1742f, 42.4795f, 41.4459f, 0.707107f);
6418 path.quadTo(42.8067f, 41.0981f, 43.1198f, 40.7376f);
6419 path.conicTo(43.7756f, 39.9826f, 44.5306f, 40.6383f, 0.707107f);
6420 path.conicTo(45.2856f, 41.2941f, 44.6298f, 42.0491f, 0.707107f);
6421 path.close();
6422 path.moveTo(42.4305f, 44.2919f);
6423 path.quadTo(42.0324f, 44.6516f, 41.6198f, 44.9946f);
6424 path.conicTo(40.8507f, 45.6338f, 40.2115f, 44.8648f, 0.707107f);
6425 path.conicTo(39.5723f, 44.0958f, 40.3413f, 43.4566f, 0.707107f);
6426 path.quadTo(40.7222f, 43.1399f, 41.0897f, 42.8079f);
6427 path.conicTo(41.8317f, 42.1375f, 42.5021f, 42.8795f, 0.707107f);
6428 path.conicTo(43.1725f, 43.6215f, 42.4305f, 44.2919f, 0.707107f);
6429 path.close();
6430 path.moveTo(39.8873f, 46.3159f);
6431 path.quadTo(39.4613f, 46.6134f, 39.0238f, 46.8936f);
6432 path.conicTo(38.1818f, 47.433f, 37.6424f, 46.5909f, 0.707107f);
6433 path.conicTo(37.103f, 45.7489f, 37.9451f, 45.2095f, 0.707107f);
6434 path.quadTo(38.3489f, 44.9508f, 38.7421f, 44.6763f);
6435 path.conicTo(39.5619f, 44.1037f, 40.1345f, 44.9235f, 0.707107f);
6436 path.conicTo(40.7071f, 45.7434f, 39.8873f, 46.3159f, 0.707107f);
6437 path.close();
6438 path.moveTo(37.2437f, 47.9367f);
6439 path.quadTo(36.7842f, 48.182f, 36.3153f, 48.4086f);
6440 path.conicTo(35.415f, 48.8439f, 34.9797f, 47.9435f, 0.707107f);
6441 path.conicTo(34.5445f, 47.0432f, 35.4449f, 46.608f, 0.707107f);
6442 path.quadTo(35.8778f, 46.3987f, 36.3019f, 46.1723f);
6443 path.conicTo(37.1841f, 45.7014f, 37.655f, 46.5836f, 0.707107f);
6444 path.conicTo(38.1259f, 47.4658f, 37.2437f, 47.9367f, 0.707107f);
6445 path.close();
6446 path.moveTo(34.3909f, 49.2448f);
6447 path.quadTo(33.8988f, 49.4354f, 33.3992f, 49.606f);
6448 path.conicTo(32.4528f, 49.929f, 32.1298f, 48.9826f, 0.707107f);
6449 path.conicTo(31.8068f, 48.0362f, 32.7532f, 47.7132f, 0.707107f);
6450 path.quadTo(33.2142f, 47.5558f, 33.6685f, 47.3798f);
6451 path.conicTo(34.601f, 47.0186f, 34.9622f, 47.9511f, 0.707107f);
6452 path.conicTo(35.3234f, 48.8836f, 34.3909f, 49.2448f, 0.707107f);
6453 path.close();
6454 path.moveTo(31.3682f, 50.208f);
6455 path.quadTo(30.8535f, 50.3381f, 30.3338f, 50.447f);
6456 path.conicTo(29.3551f, 50.6521f, 29.15f, 49.6734f, 0.707107f);
6457 path.conicTo(28.9448f, 48.6947f, 29.9236f, 48.4895f, 0.707107f);
6458 path.quadTo(30.4033f, 48.389f, 30.8784f, 48.269f);
6459 path.conicTo(31.8479f, 48.024f, 32.0929f, 48.9936f, 0.707107f);
6460 path.conicTo(32.3378f, 49.9631f, 31.3682f, 50.208f, 0.707107f);
6461 path.close();
6462 path.moveTo(28.2669f, 50.7939f);
6463 path.quadTo(27.7491f, 50.8595f, 27.2292f, 50.9043f);
6464 path.conicTo(26.2329f, 50.99f, 26.1472f, 49.9937f, 0.707107f);
6465 path.conicTo(26.0615f, 48.9973f, 27.0578f, 48.9116f, 0.707107f);
6466 path.quadTo(27.5378f, 48.8703f, 28.0156f, 48.8098f);
6467 path.conicTo(29.0077f, 48.6841f, 29.1334f, 49.6762f, 0.707107f);
6468 path.conicTo(29.259f, 50.6683f, 28.2669f, 50.7939f, 0.707107f);
6469 path.close();
6470 path.moveTo(25.1523f, 50.9996f);
6471 path.quadTo(24.6297f, 51.0026f, 24.1072f, 50.9847f);
6472 path.conicTo(23.1078f, 50.9503f, 23.1422f, 49.9509f, 0.707107f);
6473 path.conicTo(23.1765f, 48.9515f, 24.1759f, 48.9858f, 0.707107f);
6474 path.quadTo(24.658f, 49.0024f, 25.1406f, 48.9996f);
6475 path.conicTo(26.1406f, 48.9937f, 26.1464f, 49.9937f, 0.707107f);
6476 path.conicTo(26.1523f, 50.9937f, 25.1523f, 50.9996f, 0.707107f);
6477 path.close();
6478 path.moveTo(22.0162f, 50.8282f);
6479 path.quadTo(21.4999f, 50.7686f, 20.9863f, 50.6883f);
6480 path.conicTo(19.9983f, 50.5339f, 20.1527f, 49.5459f, 0.707107f);
6481 path.conicTo(20.307f, 48.5579f, 21.295f, 48.7123f, 0.707107f);
6482 path.quadTo(21.7691f, 48.7864f, 22.2457f, 48.8414f);
6483 path.conicTo(23.2391f, 48.9562f, 23.1243f, 49.9496f, 0.707107f);
6484 path.conicTo(23.0096f, 50.943f, 22.0162f, 50.8282f, 0.707107f);
6485 path.close();
6486 path.moveTo(18.9351f, 50.2827f);
6487 path.quadTo(18.4037f, 50.1553f, 17.8782f, 50.0056f);
6488 path.conicTo(16.9164f, 49.7317f, 17.1904f, 48.7699f, 0.707107f);
6489 path.conicTo(17.4643f, 47.8082f, 18.426f, 48.0821f, 0.707107f);
6490 path.quadTo(18.9112f, 48.2203f, 19.4016f, 48.3379f);
6491 path.conicTo(20.374f, 48.5712f, 20.1408f, 49.5436f, 0.707107f);
6492 path.conicTo(19.9075f, 50.516f, 18.9351f, 50.2827f, 0.707107f);
6493 path.close();
6494 path.moveTo(15.8352f, 49.3312f);
6495 path.quadTo(15.3403f, 49.1448f, 14.8531f, 48.9383f);
6496 path.conicTo(13.9324f, 48.548f, 14.3227f, 47.6273f, 0.707107f);
6497 path.conicTo(14.713f, 46.7066f, 15.6337f, 47.0969f, 0.707107f);
6498 path.quadTo(16.0832f, 47.2874f, 16.5402f, 47.4596f);
6499 path.conicTo(17.476f, 47.812f, 17.1235f, 48.7479f, 0.707107f);
6500 path.conicTo(16.771f, 49.6837f, 15.8352f, 49.3312f, 0.707107f);
6501 path.close();
6502 path.moveTo(12.9759f, 48.0526f);
6503 path.quadTo(12.5249f, 47.8173f, 12.0835f, 47.5647f);
6504 path.conicTo(11.2156f, 47.0679f, 11.7124f, 46.2f, 0.707107f);
6505 path.conicTo(12.2092f, 45.3321f, 13.0771f, 45.8289f, 0.707107f);
6506 path.quadTo(13.4846f, 46.0622f, 13.9009f, 46.2793f);
6507 path.conicTo(14.7875f, 46.7418f, 14.325f, 47.6284f, 0.707107f);
6508 path.conicTo(13.8626f, 48.5151f, 12.9759f, 48.0526f, 0.707107f);
6509 path.close();
6510 path.moveTo(10.3957f, 46.5108f);
6511 path.quadTo(9.9861f, 46.2327f, 9.58733f, 45.9392f);
6512 path.conicTo(8.78198f, 45.3464f, 9.37478f, 44.541f, 0.707107f);
6513 path.conicTo(9.96757f, 43.7357f, 10.7729f, 44.3285f, 0.707107f);
6514 path.quadTo(11.141f, 44.5994f, 11.5191f, 44.8561f);
6515 path.conicTo(12.3464f, 45.4178f, 11.7847f, 46.2451f, 0.707107f);
6516 path.conicTo(11.223f, 47.0725f, 10.3957f, 46.5108f, 0.707107f);
6517 path.close();
6518 path.moveTo(8.00525f, 44.6769f);
6519 path.quadTo(7.6141f, 44.339f, 7.23672f, 43.9859f);
6520 path.conicTo(6.50649f, 43.3027f, 7.18969f, 42.5725f, 0.707107f);
6521 path.conicTo(7.87289f, 41.8423f, 8.60312f, 42.5255f, 0.707107f);
6522 path.quadTo(8.95149f, 42.8514f, 9.31254f, 43.1632f);
6523 path.conicTo(10.0693f, 43.8169f, 9.4157f, 44.5737f, 0.707107f);
6524 path.conicTo(8.76206f, 45.3305f, 8.00525f, 44.6769f, 0.707107f);
6525 path.close();
6526 path.moveTo(5.75818f, 42.4858f);
6527 path.quadTo(5.39763f, 42.089f, 5.05371f, 41.6777f);
6528 path.conicTo(4.41226f, 40.9105f, 5.17942f, 40.2691f, 0.707107f);
6529 path.conicTo(5.94658f, 39.6276f, 6.58804f, 40.3948f, 0.707107f);
6530 path.quadTo(6.90548f, 40.7744f, 7.23832f, 41.1407f);
6531 path.conicTo(7.91085f, 41.8808f, 7.17078f, 42.5533f, 0.707107f);
6532 path.conicTo(6.43071f, 43.2258f, 5.75818f, 42.4858f, 0.707107f);
6533 path.close();
6534 path.moveTo(3.72821f, 39.9503f);
6535 path.quadTo(3.42794f, 39.523f, 3.1451f, 39.0842f);
6536 path.conicTo(2.6034f, 38.2436f, 3.44397f, 37.7019f, 0.707107f);
6537 path.conicTo(4.28454f, 37.1602f, 4.82624f, 38.0008f, 0.707107f);
6538 path.quadTo(5.08734f, 38.4059f, 5.3645f, 38.8003f);
6539 path.conicTo(5.93951f, 39.6184f, 5.12137f, 40.1934f, 0.707107f);
6540 path.conicTo(4.30322f, 40.7684f, 3.72821f, 39.9503f, 0.707107f);
6541 path.close();
6542 path.moveTo(2.09762f, 37.3078f);
6543 path.quadTo(1.85114f, 36.8491f, 1.62324f, 36.381f);
6544 path.conicTo(1.18551f, 35.4819f, 2.08461f, 35.0442f, 0.707107f);
6545 path.conicTo(2.98372f, 34.6064f, 3.42145f, 35.5055f, 0.707107f);
6546 path.quadTo(3.63184f, 35.9377f, 3.85934f, 36.361f);
6547 path.conicTo(4.33272f, 37.2419f, 3.45185f, 37.7153f, 0.707107f);
6548 path.conicTo(2.57099f, 38.1886f, 2.09762f, 37.3078f, 0.707107f);
6549 path.close();
6550 path.moveTo(0.781912f, 34.4596f);
6551 path.quadTo(0.589924f, 33.9681f, 0.418029f, 33.4692f);
6552 path.conicTo(0.0922952f, 32.5237f, 1.03776f, 32.198f, 0.707107f);
6553 path.conicTo(1.98322f, 31.8722f, 2.30895f, 32.8177f, 0.707107f);
6554 path.quadTo(2.46761f, 33.2782f, 2.64484f, 33.7319f);
6555 path.conicTo(3.00867f, 34.6634f, 2.07721f, 35.0272f, 0.707107f);
6556 path.conicTo(1.14575f, 35.3911f, 0.781912f, 34.4596f, 0.707107f);
6557 path.close();
6558 path.moveTo(-0.189761f, 31.4402f);
6559 path.quadTo(-0.321263f, 30.9258f, -0.431662f, 30.4065f);
6560 path.conicTo(-0.639608f, 29.4284f, 0.338532f, 29.2205f, 0.707107f);
6561 path.conicTo(1.31667f, 29.0125f, 1.52462f, 29.9906f, 0.707107f);
6562 path.quadTo(1.62653f, 30.47f, 1.74791f, 30.9448f);
6563 path.conicTo(1.99561f, 31.9136f, 1.02677f, 32.1613f, 0.707107f);
6564 path.conicTo(0.0579369f, 32.409f, -0.189761f, 31.4402f, 0.707107f);
6565 path.close();
6566 path.moveTo(-0.784658f, 28.3394f);
6567 path.quadTo(-0.851693f, 27.8218f, -0.897902f, 27.3019f);
6568 path.conicTo(-0.986437f, 26.3058f, 0.00963629f, 26.2173f, 0.707107f);
6569 path.conicTo(1.00571f, 26.1288f, 1.09424f, 27.1248f, 0.707107f);
6570 path.quadTo(1.1369f, 27.6047f, 1.19878f, 28.0825f);
6571 path.conicTo(1.32721f, 29.0742f, 0.335496f, 29.2027f, 0.707107f);
6572 path.conicTo(-0.656222f, 29.3311f, -0.784658f, 28.3394f, 0.707107f);
6573 path.close();
6574 path.moveTo(-0.999031f, 25.2248f);
6575 path.quadTo(-1.00354f, 24.7027f, -0.987098f, 24.1809f);
6576 path.conicTo(-0.955596f, 23.1814f, 0.0439078f, 23.2129f, 0.707107f);
6577 path.conicTo(1.04341f, 23.2444f, 1.01191f, 24.2439f, 0.707107f);
6578 path.quadTo(0.996728f, 24.7256f, 1.00089f, 25.2075f);
6579 path.conicTo(1.00954f, 26.2075f, 0.00957754f, 26.2161f, 0.707107f);
6580 path.conicTo(-0.990385f, 26.2248f, -0.999031f, 25.2248f, 0.707107f);
6581 path.close();
6582 path.moveTo(-0.836492f, 22.0887f);
6583 path.quadTo(-0.778263f, 21.5719f, -0.699419f, 21.0579f);
6584 path.conicTo(-0.5478f, 20.0695f, 0.440639f, 20.2211f, 0.707107f);
6585 path.conicTo(1.42908f, 20.3727f, 1.27746f, 21.3612f, 0.707107f);
6586 path.quadTo(1.20468f, 21.8356f, 1.15093f, 22.3126f);
6587 path.conicTo(1.03896f, 23.3063f, 0.0452449f, 23.1944f, 0.707107f);
6588 path.conicTo(-0.948466f, 23.0824f, -0.836492f, 22.0887f, 0.707107f);
6589 path.close();
6590 path.moveTo(-0.300548f, 19.0098f);
6591 path.quadTo(-0.174573f, 18.4777f, -0.0263361f, 17.9514f);
6592 path.conicTo(0.244762f, 16.9889f, 1.20731f, 17.26f, 0.707107f);
6593 path.conicTo(2.16987f, 17.5311f, 1.89877f, 18.4936f, 0.707107f);
6594 path.quadTo(1.76193f, 18.9794f, 1.64565f, 19.4706f);
6595 path.conicTo(1.41526f, 20.4437f, 0.442159f, 20.2133f, 0.707107f);
6596 path.conicTo(-0.530939f, 19.9829f, -0.300548f, 19.0098f, 0.707107f);
6597 path.close();
6598 path.moveTo(0.642658f, 15.9049f);
6599 path.quadTo(0.827861f, 15.409f, 1.0331f, 14.9209f);
6600 path.conicTo(1.42076f, 13.9991f, 2.34256f, 14.3868f, 0.707107f);
6601 path.conicTo(3.26437f, 14.7744f, 2.87671f, 15.6962f, 0.707107f);
6602 path.quadTo(2.68726f, 16.1467f, 2.5163f, 16.6046f);
6603 path.conicTo(2.16648f, 17.5414f, 1.22967f, 17.1916f, 0.707107f);
6604 path.conicTo(0.292846f, 16.8418f, 0.642658f, 15.9049f, 0.707107f);
6605 path.close();
6606 path.moveTo(1.91434f, 13.0395f);
6607 path.quadTo(2.14856f, 12.5875f, 2.40031f, 12.1449f);
6608 path.conicTo(2.89473f, 11.2757f, 3.76395f, 11.7701f, 0.707107f);
6609 path.conicTo(4.63317f, 12.2645f, 4.13875f, 13.1337f, 0.707107f);
6610 path.quadTo(3.90637f, 13.5423f, 3.69016f, 13.9596f);
6611 path.conicTo(3.23014f, 14.8475f, 2.34223f, 14.3875f, 0.707107f);
6612 path.conicTo(1.45432f, 13.9275f, 1.91434f, 13.0395f, 0.707107f);
6613 path.close();
6614 path.moveTo(3.45073f, 10.4525f);
6615 path.quadTo(3.72744f, 10.0426f, 4.01954f, 9.64356f);
6616 path.conicTo(4.61017f, 8.83661f, 5.41711f, 9.42725f, 0.707107f);
6617 path.conicTo(6.22405f, 10.0179f, 5.63342f, 10.8248f, 0.707107f);
6618 path.quadTo(5.36379f, 11.1932f, 5.10836f, 11.5716f);
6619 path.conicTo(4.54884f, 12.4004f, 3.72003f, 11.8409f, 0.707107f);
6620 path.conicTo(2.89121f, 11.2813f, 3.45073f, 10.4525f, 0.707107f);
6621 path.close();
6622 path.moveTo(5.2763f, 8.05964f);
6623 path.quadTo(5.61273f, 7.66793f, 5.96445f, 7.2899f);
6624 path.conicTo(6.6456f, 6.55776f, 7.37774f, 7.23892f, 0.707107f);
6625 path.conicTo(8.10988f, 7.92008f, 7.42872f, 8.65221f, 0.707107f);
6626 path.quadTo(7.10407f, 9.00116f, 6.79351f, 9.36274f);
6627 path.conicTo(6.14196f, 10.1213f, 5.38336f, 9.46979f, 0.707107f);
6628 path.conicTo(4.62475f, 8.81824f, 5.2763f, 8.05964f, 0.707107f);
6629 path.close();
6630 path.moveTo(7.45913f, 5.80839f);
6631 path.quadTo(7.85457f, 5.44696f, 8.26455f, 5.10214f);
6632 path.conicTo(9.02985f, 4.45847f, 9.67352f, 5.22377f, 0.707107f);
6633 path.conicTo(10.3172f, 5.98907f, 9.5519f, 6.63274f, 0.707107f);
6634 path.quadTo(9.17345f, 6.95105f, 8.80843f, 7.28467f);
6635 path.conicTo(8.07029f, 7.95931f, 7.39564f, 7.22117f, 0.707107f);
6636 path.conicTo(6.72099f, 6.48303f, 7.45913f, 5.80839f, 0.707107f);
6637 path.close();
6638 path.moveTo(9.98688f, 3.77251f);
6639 path.quadTo(10.4153f, 3.46948f, 10.8557f, 3.18397f);
6640 path.conicTo(11.6948f, 2.63996f, 12.2388f, 3.47904f, 0.707107f);
6641 path.conicTo(12.7828f, 4.31812f, 11.9437f, 4.86213f, 0.707107f);
6642 path.quadTo(11.5373f, 5.12566f, 11.1417f, 5.40539f);
6643 path.conicTo(10.3253f, 5.98282f, 9.74787f, 5.16638f, 0.707107f);
6644 path.conicTo(9.17044f, 4.34994f, 9.98688f, 3.77251f, 0.707107f);
6645 path.close();
6646 path.moveTo(12.6283f, 2.13208f);
6647 path.quadTo(13.0861f, 1.88442f, 13.5534f, 1.65529f);
6648 path.conicTo(14.4513f, 1.21504f, 14.8915f, 2.11291f, 0.707107f);
6649 path.conicTo(15.3318f, 3.01078f, 14.4339f, 3.45104f, 0.707107f);
6650 path.quadTo(14.0025f, 3.66255f, 13.58f, 3.89115f);
6651 path.conicTo(12.7005f, 4.36698f, 12.2246f, 3.48744f, 0.707107f);
6652 path.conicTo(11.7488f, 2.60791f, 12.6283f, 2.13208f, 0.707107f);
6653 path.close();
6654 path.moveTo(15.4718f, 0.808815f);
6655 path.quadTo(15.9627f, 0.615476f, 16.461f, 0.442208f);
6656 path.conicTo(17.4055f, 0.113784f, 17.7339f, 1.05831f, 0.707107f);
6657 path.conicTo(18.0624f, 2.00284f, 17.1178f, 2.33127f, 0.707107f);
6658 path.quadTo(16.6578f, 2.49121f, 16.2047f, 2.66968f);
6659 path.conicTo(15.2743f, 3.03614f, 14.9078f, 2.10571f, 0.707107f);
6660 path.conicTo(14.5414f, 1.17528f, 15.4718f, 0.808815f, 0.707107f);
6661 path.close();
6662 path.moveTo(18.4879f, -0.171272f);
6663 path.quadTo(19.0019f, -0.304236f, 19.5208f, -0.416111f);
6664 path.conicTo(20.4984f, -0.62685f, 20.7091f, 0.350692f, 0.707107f);
6665 path.conicTo(20.9198f, 1.32823f, 19.9423f, 1.53897f, 0.707107f);
6666 path.quadTo(19.4633f, 1.64224f, 18.9889f, 1.76498f);
6667 path.conicTo(18.0207f, 2.01544f, 17.7703f, 1.04732f, 0.707107f);
6668 path.conicTo(17.5198f, 0.0791926f, 18.4879f, -0.171272f, 0.707107f);
6669 path.close();
6670 path.moveTo(21.5882f, -0.77517f);
6671 path.quadTo(22.1056f, -0.843665f, 22.6254f, -0.891339f);
6672 path.conicTo(23.6212f, -0.982672f, 23.7126f, 0.0131486f, 0.707107f);
6673 path.conicTo(23.8039f, 1.00897f, 22.8081f, 1.1003f, 0.707107f);
6674 path.quadTo(22.3283f, 1.14431f, 21.8506f, 1.20754f);
6675 path.conicTo(20.8592f, 1.33876f, 20.728f, 0.347405f, 0.707107f);
6676 path.conicTo(20.5968f, -0.643948f, 21.5882f, -0.77517f, 0.707107f);
6677 path.close();
6678 path.moveTo(24.7026f, -0.998301f);
6679 path.quadTo(25.2241f, -1.00426f, 25.7453f, -0.989316f);
6680 path.conicTo(26.7449f, -0.960651f, 26.7162f, 0.0389383f, 0.707107f);
6681 path.conicTo(26.6876f, 1.03853f, 25.688f, 1.00986f, 0.707107f);
6682 path.quadTo(25.2068f, 0.996064f, 24.7255f, 1.00157f);
6683 path.conicTo(23.7256f, 1.013f, 23.7141f, 0.0130688f, 0.707107f);
6684 path.conicTo(23.7027f, -0.986866f, 24.7026f, -0.998301f, 0.707107f);
6685 path.close();
6686 path.moveTo(27.8388f, -0.844563f);
6687 path.quadTo(28.3559f, -0.787759f, 28.8704f, -0.710314f);
6688 path.conicTo(29.8592f, -0.561454f, 29.7104f, 0.427404f, 0.707107f);
6689 path.conicTo(29.5615f, 1.41626f, 28.5726f, 1.2674f, 0.707107f);
6690 path.quadTo(28.0978f, 1.19591f, 27.6204f, 1.14348f);
6691 path.conicTo(26.6264f, 1.0343f, 26.7356f, 0.0402742f, 0.707107f);
6692 path.conicTo(26.8447f, -0.953747f, 27.8388f, -0.844563f, 0.707107f);
6693 path.close();
6694 path.moveTo(30.9153f, -0.318153f);
6695 path.quadTo(31.4481f, -0.193671f, 31.9752f, -0.046875f);
6696 path.conicTo(32.9386f, 0.221405f, 32.6703f, 1.18475f, 0.707107f);
6697 path.conicTo(32.402f, 2.14809f, 31.4387f, 1.87981f, 0.707107f);
6698 path.quadTo(30.9521f, 1.74431f, 30.4603f, 1.6294f);
6699 path.conicTo(29.4865f, 1.40189f, 29.714f, 0.428111f, 0.707107f);
6700 path.conicTo(29.9416f, -0.545664f, 30.9153f, -0.318153f, 0.707107f);
6701 path.close();
6702 path.moveTo(34.0252f, 0.616677f);
6703 path.quadTo(34.5221f, 0.800609f, 35.0111f, 1.00465f);
6704 path.conicTo(35.934f, 1.3897f, 35.549f, 2.31259f, 0.707107f);
6705 path.conicTo(35.1639f, 3.23549f, 34.241f, 2.85044f, 0.707107f);
6706 path.quadTo(33.7896f, 2.66211f, 33.3309f, 2.49232f);
6707 path.conicTo(32.3931f, 2.1452f, 32.7402f, 1.20738f, 0.707107f);
6708 path.conicTo(33.0873f, 0.269559f, 34.0252f, 0.616677f, 0.707107f);
6709 path.close();
6710 path.moveTo(36.8967f, 1.88141f);
6711 path.quadTo(37.3499f, 2.11462f, 37.7936f, 2.3654f);
6712 path.conicTo(38.6641f, 2.85746f, 38.1721f, 3.72802f, 0.707107f);
6713 path.conicTo(37.68f, 4.59858f, 36.8094f, 4.10652f, 0.707107f);
6714 path.quadTo(36.3999f, 3.87504f, 35.9815f, 3.65976f);
6715 path.conicTo(35.0924f, 3.2022f, 35.5499f, 2.31302f, 0.707107f);
6716 path.conicTo(36.0075f, 1.42384f, 36.8967f, 1.88141f, 0.707107f);
6717 path.close();
6718 path.moveTo(39.4914f, 3.413f);
6719 path.lineTo(39.5381f, 3.44439f);
6720 path.quadTo(39.9244f, 3.70494f, 40.3002f, 3.97845f);
6721 path.conicTo(41.1087f, 4.56692f, 40.5202f, 5.37544f, 0.707107f);
6722 path.conicTo(39.9317f, 6.18396f, 39.1232f, 5.59549f, 0.707107f);
6723 path.quadTo(38.7763f, 5.34298f, 38.4215f, 5.10371f);
6724 path.lineTo(38.3749f, 5.07232f);
6725 path.conicTo(37.5452f, 4.51406f, 38.1035f, 3.68439f, 0.707107f);
6726 path.conicTo(38.6618f, 2.85473f, 39.4914f, 3.413f, 0.707107f);
6727 path.close();
6728 path.moveTo(41.8859f, 5.22965f);
6729 path.quadTo(42.2782f, 5.56471f, 42.6568f, 5.91499f);
6730 path.conicTo(43.3908f, 6.5941f, 42.7117f, 7.32814f, 0.707107f);
6731 path.conicTo(42.0326f, 8.06218f, 41.2986f, 7.38308f, 0.707107f);
6732 path.quadTo(40.949f, 7.05968f, 40.587f, 6.75043f);
6733 path.conicTo(39.8266f, 6.10097f, 40.476f, 5.34058f, 0.707107f);
6734 path.conicTo(41.1255f, 4.58018f, 41.8859f, 5.22965f, 0.707107f);
6735 path.close();
6736 path.moveTo(44.1413f, 7.40421f);
6737 path.quadTo(44.5035f, 7.79829f, 44.8493f, 8.20695f);
6738 path.conicTo(45.4952f, 8.97038f, 44.7317f, 9.61627f, 0.707107f);
6739 path.conicTo(43.9683f, 10.2622f, 43.3224f, 9.49874f, 0.707107f);
6740 path.quadTo(43.0033f, 9.1215f, 42.6689f, 8.75773f);
6741 path.conicTo(41.9921f, 8.02152f, 42.7283f, 7.34476f, 0.707107f);
6742 path.conicTo(43.4645f, 6.668f, 44.1413f, 7.40421f, 0.707107f);
6743 path.close();
6744 path.moveTo(46.183f, 9.9242f);
6745 path.quadTo(46.4888f, 10.3539f, 46.777f, 10.7957f);
6746 path.conicTo(47.3233f, 11.6332f, 46.4857f, 12.1796f, 0.707107f);
6747 path.conicTo(45.6482f, 12.7259f, 45.1018f, 11.8883f, 0.707107f);
6748 path.quadTo(44.8358f, 11.4805f, 44.5535f, 11.0839f);
6749 path.conicTo(43.9737f, 10.2691f, 44.7884f, 9.6893f, 0.707107f);
6750 path.conicTo(45.6032f, 9.10947f, 46.183f, 9.9242f, 0.707107f);
6751 path.close();
6752 path.moveTo(47.8333f, 12.5645f);
6753 path.quadTo(48.0821f, 13.0214f, 48.3125f, 13.4879f);
6754 path.conicTo(48.7552f, 14.3845f, 47.8586f, 14.8273f, 0.707107f);
6755 path.conicTo(46.962f, 15.2701f, 46.5192f, 14.3734f, 0.707107f);
6756 path.quadTo(46.3065f, 13.9428f, 46.0769f, 13.5211f);
6757 path.conicTo(45.5986f, 12.6429f, 46.4768f, 12.1646f, 0.707107f);
6758 path.conicTo(47.355f, 11.6863f, 47.8333f, 12.5645f, 0.707107f);
6759 path.close();
6760 path.moveTo(49.1641f, 15.4033f);
6761 path.quadTo(49.3588f, 15.8935f, 49.5334f, 16.3912f);
6762 path.conicTo(49.8645f, 17.3348f, 48.9209f, 17.6659f, 0.707107f);
6763 path.conicTo(47.9773f, 17.997f, 47.6462f, 17.0534f, 0.707107f);
6764 path.quadTo(47.485f, 16.5939f, 47.3053f, 16.1415f);
6765 path.conicTo(46.9362f, 15.2121f, 47.8656f, 14.843f, 0.707107f);
6766 path.conicTo(48.795f, 14.4739f, 49.1641f, 15.4033f, 0.707107f);
6767 path.close();
6768 path.moveTo(50.1526f, 18.4161f);
6769 path.quadTo(50.287f, 18.9296f, 50.4003f, 19.4482f);
6770 path.conicTo(50.6139f, 20.4252f, 49.6369f, 20.6387f, 0.707107f);
6771 path.conicTo(48.66f, 20.8522f, 48.4465f, 19.8753f, 0.707107f);
6772 path.quadTo(48.3419f, 19.3966f, 48.2178f, 18.9225f);
6773 path.conicTo(47.9645f, 17.9551f, 48.9319f, 17.7019f, 0.707107f);
6774 path.conicTo(49.8993f, 17.4487f, 50.1526f, 18.4161f, 0.707107f);
6775 path.close();
6776 path.moveTo(50.7655f, 21.5157f);
6777 path.quadTo(50.8354f, 22.033f, 50.8846f, 22.5528f);
6778 path.conicTo(50.9787f, 23.5483f, 49.9831f, 23.6425f, 0.707107f);
6779 path.conicTo(48.9876f, 23.7366f, 48.8935f, 22.741f, 0.707107f);
6780 path.quadTo(48.8481f, 22.2613f, 48.7835f, 21.7837f);
6781 path.conicTo(48.6495f, 20.7928f, 49.6405f, 20.6587f, 0.707107f);
6782 path.conicTo(50.6315f, 20.5247f, 50.7655f, 21.5157f, 0.707107f);
6783 path.close();
6784 path.moveTo(50.9974f, 24.6301f);
6785 path.quadTo(51.0048f, 25.1509f, 50.9913f, 25.6715f);
6786 path.conicTo(50.9655f, 26.6712f, 49.9658f, 26.6454f, 0.707107f);
6787 path.conicTo(48.9662f, 26.6196f, 48.992f, 25.6199f, 0.707107f);
6788 path.quadTo(49.0044f, 25.1393f, 48.9976f, 24.6585f);
6789 path.conicTo(48.9834f, 23.6586f, 49.9833f, 23.6444f, 0.707107f);
6790 path.conicTo(50.9832f, 23.6302f, 50.9974f, 24.6301f, 0.707107f);
6791 path.close();
6792 path.moveTo(50.8524f, 27.7662f);
6793 path.quadTo(50.7971f, 28.2837f, 50.721f, 28.7986f);
6794 path.conicTo(50.5749f, 29.7879f, 49.5856f, 29.6418f, 0.707107f);
6795 path.conicTo(48.5963f, 29.4957f, 48.7425f, 28.5064f, 0.707107f);
6796 path.quadTo(48.8127f, 28.0311f, 48.8638f, 27.5534f);
6797 path.conicTo(48.9702f, 26.5591f, 49.9645f, 26.6655f, 0.707107f);
6798 path.conicTo(50.9588f, 26.7718f, 50.8524f, 27.7662f, 0.707107f);
6799 path.close();
6800 path.moveTo(50.3355f, 30.8404f);
6801 path.quadTo(50.2125f, 31.3739f, 50.0672f, 31.9018f);
6802 path.conicTo(49.8018f, 32.8659f, 48.8376f, 32.6005f, 0.707107f);
6803 path.conicTo(47.8735f, 32.335f, 48.139f, 31.3709f, 0.707107f);
6804 path.quadTo(48.2731f, 30.8836f, 48.3867f, 30.3912f);
6805 path.conicTo(48.6113f, 29.4167f, 49.5857f, 29.6413f, 0.707107f);
6806 path.conicTo(50.5602f, 29.866f, 50.3355f, 30.8404f, 0.707107f);
6807 path.close();
6808 path.moveTo(49.4091f, 33.9552f);
6809 path.quadTo(49.2264f, 34.4531f, 49.0236f, 34.9431f);
6810 path.conicTo(48.6412f, 35.8671f, 47.7172f, 35.4846f, 0.707107f);
6811 path.conicTo(46.7932f, 35.1022f, 47.1757f, 34.1782f, 0.707107f);
6812 path.quadTo(47.3629f, 33.7259f, 47.5315f, 33.2663f);
6813 path.conicTo(47.8759f, 32.3275f, 48.8147f, 32.672f, 0.707107f);
6814 path.conicTo(49.7535f, 33.0164f, 49.4091f, 33.9552f, 0.707107f);
6815 path.close();
6816 path.moveTo(48.1514f, 36.8328f);
6817 path.quadTo(47.9191f, 37.2871f, 47.6694f, 37.7318f);
6818 path.conicTo(47.1797f, 38.6038f, 46.3078f, 38.1141f, 0.707107f);
6819 path.conicTo(45.4359f, 37.6244f, 45.9256f, 36.7525f, 0.707107f);
6820 path.quadTo(46.1562f, 36.3418f, 46.3705f, 35.9226f);
6821 path.conicTo(46.8256f, 35.0321f, 47.716f, 35.4872f, 0.707107f);
6822 path.conicTo(48.6065f, 35.9423f, 48.1514f, 36.8328f, 0.707107f);
6823 path.close();
6824 path.moveTo(46.6245f, 39.4354f);
6825 path.lineTo(46.5563f, 39.537f);
6826 path.quadTo(46.3146f, 39.8955f, 46.0624f, 40.2438f);
6827 path.conicTo(45.4761f, 41.0539f, 44.666f, 40.4676f, 0.707107f);
6828 path.conicTo(43.8559f, 39.8813f, 44.4422f, 39.0712f, 0.707107f);
6829 path.quadTo(44.6749f, 38.7498f, 44.8955f, 38.4226f);
6830 path.lineTo(44.9637f, 38.3211f);
6831 path.conicTo(45.5209f, 37.4907f, 46.3513f, 38.0479f, 0.707107f);
6832 path.conicTo(47.1817f, 38.605f, 46.6245f, 39.4354f, 0.707107f);
6833 path.close();
6834 path.moveTo(44.8168f, 41.8314f);
6835 path.quadTo(44.4832f, 42.2241f, 44.1342f, 42.6034f);
6836 path.conicTo(43.4572f, 43.3394f, 42.7212f, 42.6623f, 0.707107f);
6837 path.conicTo(41.9853f, 41.9853f, 42.6623f, 41.2494f, 0.707107f);
6838 path.quadTo(42.9845f, 40.8992f, 43.2924f, 40.5366f);
6839 path.conicTo(43.9398f, 39.7745f, 44.702f, 40.4218f, 0.707107f);
6840 path.conicTo(45.4642f, 41.0692f, 44.8168f, 41.8314f, 0.707107f);
6841 path.close();
6842 path.moveTo(42.6505f, 44.0908f);
6843 path.quadTo(42.2577f, 44.454f, 41.8504f, 44.8006f);
6844 path.conicTo(41.0888f, 45.4487f, 40.4408f, 44.6871f, 0.707107f);
6845 path.conicTo(39.7927f, 43.9256f, 40.5542f, 43.2775f, 0.707107f);
6846 path.quadTo(40.9302f, 42.9575f, 41.2928f, 42.6223f);
6847 path.conicTo(42.027f, 41.9434f, 42.7059f, 42.6777f, 0.707107f);
6848 path.conicTo(43.3848f, 43.412f, 42.6505f, 44.0908f, 0.707107f);
6849 path.close();
6850 path.moveTo(40.1383f, 46.1384f);
6851 path.quadTo(39.7073f, 46.4471f, 39.2641f, 46.7378f);
6852 path.conicTo(38.4281f, 47.2865f, 37.8795f, 46.4504f, 0.707107f);
6853 path.conicTo(37.3308f, 45.6143f, 38.1669f, 45.0657f, 0.707107f);
6854 path.quadTo(38.576f, 44.7972f, 38.9738f, 44.5124f);
6855 path.conicTo(39.7868f, 43.9301f, 40.369f, 44.7432f, 0.707107f);
6856 path.conicTo(40.9513f, 45.5562f, 40.1383f, 46.1384f, 0.707107f);
6857 path.close();
6858 path.moveTo(37.4991f, 47.7985f);
6859 path.quadTo(37.0431f, 48.0485f, 36.5775f, 48.2801f);
6860 path.conicTo(35.6821f, 48.7254f, 35.2368f, 47.83f, 0.707107f);
6861 path.conicTo(34.7915f, 46.9346f, 35.6869f, 46.4893f, 0.707107f);
6862 path.quadTo(36.1167f, 46.2755f, 36.5376f, 46.0448f);
6863 path.conicTo(37.4145f, 45.5641f, 37.8952f, 46.4409f, 0.707107f);
6864 path.conicTo(38.376f, 47.3178f, 37.4991f, 47.7985f, 0.707107f);
6865 path.close();
6866 path.moveTo(34.6651f, 49.1368f);
6867 path.quadTo(34.1756f, 49.3328f, 33.6785f, 49.5089f);
6868 path.conicTo(32.7358f, 49.8427f, 32.402f, 48.9f, 0.707107f);
6869 path.conicTo(32.0682f, 47.9574f, 33.0109f, 47.6236f, 0.707107f);
6870 path.quadTo(33.4697f, 47.4611f, 33.9216f, 47.2801f);
6871 path.conicTo(34.85f, 46.9084f, 35.2217f, 47.8368f, 0.707107f);
6872 path.conicTo(35.5934f, 48.7651f, 34.6651f, 49.1368f, 0.707107f);
6873 path.close();
6874 path.moveTo(31.6557f, 50.1337f);
6875 path.quadTo(31.1425f, 50.2696f, 30.6243f, 50.3844f);
6876 path.conicTo(29.648f, 50.6007f, 29.4317f, 49.6244f, 0.707107f);
6877 path.conicTo(29.2153f, 48.6481f, 30.1917f, 48.4317f, 0.707107f);
6878 path.quadTo(30.6701f, 48.3257f, 31.1437f, 48.2003f);
6879 path.conicTo(32.1104f, 47.9443f, 32.3664f, 48.911f, 0.707107f);
6880 path.conicTo(32.6223f, 49.8777f, 31.6557f, 50.1337f, 0.707107f);
6881 path.close();
6882 path.moveTo(28.5567f, 50.7556f);
6883 path.quadTo(28.0395f, 50.827f, 27.5198f, 50.8776f);
6884 path.conicTo(26.5245f, 50.9745f, 26.4276f, 49.9792f, 0.707107f);
6885 path.conicTo(26.3307f, 48.9839f, 27.326f, 48.887f, 0.707107f);
6886 path.quadTo(27.8056f, 48.8403f, 28.2831f, 48.7744f);
6887 path.conicTo(29.2737f, 48.6376f, 29.4105f, 49.6282f, 0.707107f);
6888 path.conicTo(29.5473f, 50.6188f, 28.5567f, 50.7556f, 0.707107f);
6889 path.close();
6890 path.moveTo(25.4424f, 50.9962f);
6891 path.quadTo(24.9222f, 51.0051f, 24.4022f, 50.9931f);
6892 path.conicTo(23.4025f, 50.9701f, 23.4255f, 49.9704f, 0.707107f);
6893 path.conicTo(23.4485f, 48.9707f, 24.4482f, 48.9937f, 0.707107f);
6894 path.quadTo(24.9283f, 49.0047f, 25.4084f, 48.9965f);
6895 path.conicTo(26.4083f, 48.9795f, 26.4253f, 49.9794f, 0.707107f);
6896 path.conicTo(26.4423f, 50.9792f, 25.4424f, 50.9962f, 0.707107f);
6897 path.close();
6898 path.moveTo(22.3065f, 50.8601f);
6899 path.quadTo(21.7885f, 50.8062f, 21.2732f, 50.7315f);
6900 path.conicTo(20.2835f, 50.5882f, 20.4268f, 49.5985f, 0.707107f);
6901 path.conicTo(20.5702f, 48.6088f, 21.5599f, 48.7522f, 0.707107f);
6902 path.quadTo(22.0355f, 48.8211f, 22.5136f, 48.8709f);
6903 path.conicTo(23.5083f, 48.9745f, 23.4047f, 49.9691f, 0.707107f);
6904 path.conicTo(23.3011f, 50.9637f, 22.3065f, 50.8601f, 0.707107f);
6905 path.close();
6906 path.moveTo(19.2346f, 50.3527f);
6907 path.quadTo(18.7003f, 50.2312f, 18.1717f, 50.0873f);
6908 path.conicTo(17.2068f, 49.8247f, 17.4694f, 48.8598f, 0.707107f);
6909 path.conicTo(17.732f, 47.8949f, 18.6969f, 48.1575f, 0.707107f);
6910 path.quadTo(19.185f, 48.2904f, 19.6781f, 48.4025f);
6911 path.conicTo(20.6532f, 48.6243f, 20.4314f, 49.5994f, 0.707107f);
6912 path.conicTo(20.2097f, 50.5745f, 19.2346f, 50.3527f, 0.707107f);
6913 path.close();
6914 path.moveTo(16.1149f, 49.4347f);
6915 path.quadTo(15.6161f, 49.2533f, 15.1251f, 49.0517f);
6916 path.conicTo(14.2f, 48.6719f, 14.5798f, 47.7469f, 0.707107f);
6917 path.conicTo(14.9596f, 46.8218f, 15.8847f, 47.2016f, 0.707107f);
6918 path.quadTo(16.3379f, 47.3877f, 16.7984f, 47.5551f);
6919 path.conicTo(17.7382f, 47.8969f, 17.3964f, 48.8366f, 0.707107f);
6920 path.conicTo(17.0547f, 49.7764f, 16.1149f, 49.4347f, 0.707107f);
6921 path.close();
6922 path.moveTo(13.2313f, 48.184f);
6923 path.quadTo(12.776f, 47.9529f, 12.33f, 47.704f);
6924 path.conicTo(11.4568f, 47.2167f, 11.9441f, 46.3434f, 0.707107f);
6925 path.conicTo(12.4314f, 45.4702f, 13.3046f, 45.9575f, 0.707107f);
6926 path.quadTo(13.7162f, 46.1872f, 14.1365f, 46.4006f);
6927 path.conicTo(15.0282f, 46.8532f, 14.5756f, 47.7449f, 0.707107f);
6928 path.conicTo(14.123f, 48.6366f, 13.2313f, 48.184f, 0.707107f);
6929 path.close();
6930 path.moveTo(10.6208f, 46.6619f);
6931 path.lineTo(10.4641f, 46.5571f);
6932 path.quadTo(10.1333f, 46.334f, 9.81253f, 46.1031f);
6933 path.conicTo(9.00087f, 45.519f, 9.585f, 44.7073f, 0.707107f);
6934 path.conicTo(10.1691f, 43.8957f, 10.9808f, 44.4798f, 0.707107f);
6935 path.quadTo(11.2769f, 44.6929f, 11.5763f, 44.8948f);
6936 path.lineTo(11.7329f, 44.9996f);
6937 path.conicTo(12.564f, 45.5557f, 12.008f, 46.3868f, 0.707107f);
6938 path.conicTo(11.4519f, 47.2179f, 10.6208f, 46.6619f, 0.707107f);
6939 path.close();
6940 path.moveTo(8.22326f, 44.8631f);
6941 path.quadTo(7.82986f, 44.5308f, 7.44999f, 44.1833f);
6942 path.conicTo(6.71217f, 43.5082f, 7.38718f, 42.7704f, 0.707107f);
6943 path.conicTo(8.06219f, 42.0326f, 8.8f, 42.7076f, 0.707107f);
6944 path.quadTo(9.15066f, 43.0284f, 9.51375f, 43.3351f);
6945 path.conicTo(10.2777f, 43.9804f, 9.63248f, 44.7443f, 0.707107f);
6946 path.conicTo(8.98724f, 45.5083f, 8.22326f, 44.8631f, 0.707107f);
6947 path.close();
6948 path.moveTo(5.95972f, 42.705f);
6949 path.quadTo(5.59577f, 42.3136f, 5.24823f, 41.9076f);
6950 path.conicTo(4.59793f, 41.148f, 5.3576f, 40.4977f, 0.707107f);
6951 path.conicTo(6.11728f, 39.8473f, 6.76758f, 40.607f, 0.707107f);
6952 path.quadTo(7.08843f, 40.9818f, 7.42436f, 41.3431f);
6953 path.conicTo(8.10532f, 42.0754f, 7.373f, 42.7564f, 0.707107f);
6954 path.conicTo(6.64068f, 43.4373f, 5.95972f, 42.705f, 0.707107f);
6955 path.close();
6956 path.moveTo(3.90635f, 40.2006f);
6957 path.quadTo(3.59492f, 39.7684f, 3.30147f, 39.3239f);
6958 path.conicTo(2.75055f, 38.4893f, 3.58511f, 37.9384f, 0.707107f);
6959 path.conicTo(4.41967f, 37.3875f, 4.97059f, 38.222f, 0.707107f);
6960 path.quadTo(5.24148f, 38.6324f, 5.52894f, 39.0313f);
6961 path.conicTo(6.11358f, 39.8426f, 5.30228f, 40.4272f, 0.707107f);
6962 path.conicTo(4.49099f, 41.0119f, 3.90635f, 40.2006f, 0.707107f);
6963 path.close();
6964 path.moveTo(2.23643f, 37.5626f);
6965 path.quadTo(1.98525f, 37.1075f, 1.75248f, 36.6427f);
6966 path.conicTo(1.30469f, 35.7486f, 2.19883f, 35.3008f, 0.707107f);
6967 path.conicTo(3.09296f, 34.853f, 3.54076f, 35.7471f, 0.707107f);
6968 path.quadTo(3.75563f, 36.1762f, 3.98747f, 36.5963f);
6969 path.conicTo(4.47065f, 37.4718f, 3.59513f, 37.955f, 0.707107f);
6970 path.conicTo(2.71961f, 38.4382f, 2.23643f, 37.5626f, 0.707107f);
6971 path.close();
6972 path.moveTo(0.890647f, 34.7334f);
6973 path.quadTo(0.69328f, 34.2445f, 0.515902f, 33.7481f);
6974 path.conicTo(0.179435f, 32.8064f, 1.12113f, 32.4699f, 0.707107f);
6975 path.conicTo(2.06282f, 32.1335f, 2.39929f, 33.0752f, 0.707107f);
6976 path.quadTo(2.56303f, 33.5334f, 2.74521f, 33.9847f);
6977 path.conicTo(3.11957f, 34.912f, 2.19229f, 35.2863f, 0.707107f);
6978 path.conicTo(1.26501f, 35.6607f, 0.890647f, 34.7334f, 0.707107f);
6979 path.close();
6980 path.moveTo(-0.114587f, 31.7274f);
6981 path.quadTo(-0.251922f, 31.2147f, -0.368218f, 30.6968f);
6982 path.conicTo(-0.587327f, 29.7211f, 0.388373f, 29.502f, 0.707107f);
6983 path.conicTo(1.36407f, 29.2829f, 1.58318f, 30.2586f, 0.707107f);
6984 path.quadTo(1.69053f, 30.7366f, 1.8173f, 31.2099f);
6985 path.conicTo(2.07605f, 32.1758f, 1.1101f, 32.4346f, 0.707107f);
6986 path.conicTo(0.144159f, 32.6933f, -0.114587f, 31.7274f, 0.707107f);
6987 path.close();
6988 path.moveTo(-0.745485f, 28.6291f);
6989 path.quadTo(-0.818367f, 28.112f, -0.870432f, 27.5925f);
6990 path.conicTo(-0.970142f, 26.5974f, 0.0248742f, 26.4977f, 0.707107f);
6991 path.conicTo(1.01989f, 26.398f, 1.1196f, 27.393f, 0.707107f);
6992 path.quadTo(1.16766f, 27.8726f, 1.23494f, 28.3499f);
6993 path.conicTo(1.37452f, 29.3401f, 0.384305f, 29.4797f, 0.707107f);
6994 path.conicTo(-0.605905f, 29.6193f, -0.745485f, 28.6291f, 0.707107f);
6995 path.close();
6996 path.moveTo(-0.994901f, 25.515f);
6997 path.quadTo(-1.00519f, 24.9955f, -0.994722f, 24.4761f);
6998 path.conicTo(-0.97457f, 23.4763f, 0.0252273f, 23.4964f, 0.707107f);
6999 path.conicTo(1.02502f, 23.5166f, 1.00487f, 24.5164f, 0.707107f);
7000 path.quadTo(0.995207f, 24.9959f, 1.00471f, 25.4754f);
7001 path.conicTo(1.02451f, 26.4752f, 0.0247103f, 26.495f, 0.707107f);
7002 path.conicTo(-0.975093f, 26.5148f, -0.994901f, 25.515f, 0.707107f);
7003 path.close();
7004 path.moveTo(-0.867571f, 22.3792f);
7005 path.quadTo(-0.81506f, 21.8609f, -0.741825f, 21.3451f);
7006 path.conicTo(-0.60125f, 20.355f, 0.38882f, 20.4956f, 0.707107f);
7007 path.conicTo(1.37889f, 20.6361f, 1.23831f, 21.6262f, 0.707107f);
7008 path.quadTo(1.17071f, 22.1023f, 1.12224f, 22.5807f);
7009 path.conicTo(1.02144f, 23.5757f, 0.026537f, 23.4749f, 0.707107f);
7010 path.conicTo(-0.96837f, 23.3741f, -0.867571f, 22.3792f, 0.707107f);
7011 path.close();
7012 path.moveTo(-0.369678f, 19.3097f);
7013 path.quadTo(-0.249693f, 18.7748f, -0.107265f, 18.2453f);
7014 path.conicTo(0.152529f, 17.2797f, 1.11819f, 17.5395f, 0.707107f);
7015 path.conicTo(2.08386f, 17.7993f, 1.82406f, 18.7649f, 0.707107f);
7016 path.quadTo(1.69259f, 19.2536f, 1.58184f, 19.7474f);
7017 path.conicTo(1.36298f, 20.7232f, 0.387221f, 20.5043f, 0.707107f);
7018 path.conicTo(-0.588536f, 20.2855f, -0.369678f, 19.3097f, 0.707107f);
7019 path.close();
7020 path.moveTo(0.539863f, 16.1851f);
7021 path.quadTo(0.719962f, 15.6854f, 0.920307f, 15.1934f);
7022 path.conicTo(1.29748f, 14.2673f, 2.22362f, 14.6445f, 0.707107f);
7023 path.conicTo(3.14976f, 15.0216f, 2.7726f, 15.9478f, 0.707107f);
7024 path.quadTo(2.58765f, 16.4019f, 2.42141f, 16.8632f);
7025 path.conicTo(2.08237f, 17.804f, 1.1416f, 17.4649f, 0.707107f);
7026 path.conicTo(0.200823f, 17.1259f, 0.539863f, 16.1851f, 0.707107f);
7027 path.close();
7028 path.moveTo(1.78353f, 13.2955f);
7029 path.quadTo(2.01364f, 12.8391f, 2.26151f, 12.392f);
7030 path.conicTo(2.74643f, 11.5175f, 3.62099f, 12.0024f, 0.707107f);
7031 path.conicTo(4.49555f, 12.4873f, 4.01063f, 13.3618f, 0.707107f);
7032 path.quadTo(3.78183f, 13.7745f, 3.56941f, 14.1958f);
7033 path.conicTo(3.11923f, 15.0888f, 2.22629f, 14.6386f, 0.707107f);
7034 path.conicTo(1.33336f, 14.1884f, 1.78353f, 13.2955f, 0.707107f);
7035 path.close();
7036 path.moveTo(3.30083f, 10.6771f);
7037 path.lineTo(3.44218f, 10.4652f);
7038 path.quadTo(3.6466f, 10.1621f, 3.85641f, 9.86895f);
7039 path.conicTo(4.43837f, 9.05574f, 5.25159f, 9.6377f, 0.707107f);
7040 path.conicTo(6.0648f, 10.2197f, 5.48284f, 11.0329f, 0.707107f);
7041 path.quadTo(5.28917f, 11.3035f, 5.10592f, 11.5752f);
7042 path.lineTo(4.96457f, 11.787f);
7043 path.conicTo(4.4096f, 12.6189f, 3.57773f, 12.0639f, 0.707107f);
7044 path.conicTo(2.74586f, 11.509f, 3.30083f, 10.6771f, 0.707107f);
7045 path.close();
7046 path.moveTo(5.0909f, 8.27793f);
7047 path.quadTo(5.42174f, 7.88403f, 5.76791f, 7.50353f);
7048 path.conicTo(6.44085f, 6.76383f, 7.18054f, 7.43678f, 0.707107f);
7049 path.conicTo(7.92024f, 8.10972f, 7.24729f, 8.84942f, 0.707107f);
7050 path.quadTo(6.92775f, 9.20065f, 6.62237f, 9.56424f);
7051 path.conicTo(5.97921f, 10.33f, 5.21348f, 9.68682f, 0.707107f);
7052 path.conicTo(4.44774f, 9.04367f, 5.0909f, 8.27793f, 0.707107f);
7053 path.close();
7054 path.moveTo(7.24064f, 6.0104f);
7055 path.quadTo(7.63069f, 5.64561f, 8.03537f, 5.29717f);
7056 path.conicTo(8.79318f, 4.64469f, 9.44566f, 5.40249f, 0.707107f);
7057 path.conicTo(10.0981f, 6.16029f, 9.34034f, 6.81278f, 0.707107f);
7058 path.quadTo(8.96678f, 7.13442f, 8.60675f, 7.47113f);
7059 path.conicTo(7.87638f, 8.15419f, 7.19332f, 7.42382f, 0.707107f);
7060 path.conicTo(6.51027f, 6.69345f, 7.24064f, 6.0104f, 0.707107f);
7061 path.close();
7062 path.moveTo(9.73726f, 3.95128f);
7063 path.quadTo(10.1706f, 3.63704f, 10.6165f, 3.34092f);
7064 path.conicTo(11.4496f, 2.78771f, 12.0028f, 3.62075f, 0.707107f);
7065 path.conicTo(12.556f, 4.4538f, 11.7229f, 5.007f, 0.707107f);
7066 path.quadTo(11.3113f, 5.28035f, 10.9113f, 5.57041f);
7067 path.conicTo(10.1018f, 6.15744f, 9.51472f, 5.34787f, 0.707107f);
7068 path.conicTo(8.92769f, 4.53831f, 9.73726f, 3.95128f, 0.707107f);
7069 path.close();
7070 path.moveTo(12.374f, 2.27153f);
7071 path.quadTo(12.8282f, 2.01921f, 13.2921f, 1.78522f);
7072 path.conicTo(14.185f, 1.33492f, 14.6353f, 2.22779f, 0.707107f);
7073 path.conicTo(15.0856f, 3.12067f, 14.1927f, 3.57097f, 0.707107f);
7074 path.quadTo(13.7645f, 3.78696f, 13.3452f, 4.01988f);
7075 path.conicTo(12.471f, 4.5055f, 11.9854f, 3.63132f, 0.707107f);
7076 path.conicTo(11.4998f, 2.75715f, 12.374f, 2.27153f, 0.707107f);
7077 path.close();
7078 path.moveTo(15.1984f, 0.918296f);
7079 path.quadTo(15.6866f, 0.719602f, 16.1824f, 0.540851f);
7080 path.conicTo(17.1231f, 0.20171f, 17.4623f, 1.14245f, 0.707107f);
7081 path.conicTo(17.8014f, 2.08318f, 16.8607f, 2.42232f, 0.707107f);
7082 path.quadTo(16.403f, 2.58733f, 15.9524f, 2.77074f);
7083 path.conicTo(15.0261f, 3.14772f, 14.6492f, 2.2215f, 0.707107f);
7084 path.conicTo(14.2722f, 1.29528f, 15.1984f, 0.918296f, 0.707107f);
7085 path.close();
7086 path.moveTo(18.201f, -0.0952874f);
7087 path.quadTo(18.7132f, -0.234075f, 19.2308f, -0.351842f);
7088 path.conicTo(20.2058f, -0.573734f, 20.4277f, 0.401338f, 0.707107f);
7089 path.conicTo(20.6496f, 1.37641f, 19.6745f, 1.5983f, 0.707107f);
7090 path.quadTo(19.1968f, 1.70701f, 18.724f, 1.83512f);
7091 path.conicTo(17.7588f, 2.09662f, 17.4973f, 1.13142f, 0.707107f);
7092 path.conicTo(17.2358f, 0.166216f, 18.201f, -0.0952874f, 0.707107f);
7093 path.close();
7094 path.moveTo(21.2986f, -0.73518f);
7095 path.quadTo(21.8155f, -0.809526f, 22.3349f, -0.863052f);
7096 path.conicTo(23.3297f, -0.965552f, 23.4322f, 0.029181f, 0.707107f);
7097 path.conicTo(23.5347f, 1.02391f, 22.5399f, 1.12641f, 0.707107f);
7098 path.quadTo(22.0604f, 1.17582f, 21.5833f, 1.24445f);
7099 path.conicTo(20.5935f, 1.38681f, 20.4511f, 0.397f, 0.707107f);
7100 path.conicTo(20.3088f, -0.592814f, 21.2986f, -0.73518f, 0.707107f);
7101 path.close();
7102 path.moveTo(24.4124f, -0.993361f);
7103 path.quadTo(24.9312f, -1.00509f, 25.4501f, -0.996107f);
7104 path.conicTo(26.4499f, -0.978799f, 26.4326f, 0.0210512f, 0.707107f);
7105 path.conicTo(26.4153f, 1.0209f, 25.4155f, 1.00359f, 0.707107f);
7106 path.quadTo(24.9365f, 0.995302f, 24.4576f, 1.00613f);
7107 path.conicTo(23.4578f, 1.02873f, 23.4352f, 0.0289853f, 0.707107f);
7108 path.conicTo(23.4126f, -0.970759f, 24.4124f, -0.993361f, 0.707107f);
7109 path.close();
7110 path.moveTo(27.5481f, -0.87484f);
7111 path.quadTo(28.0668f, -0.823762f, 28.583f, -0.75194f);
7112 path.conicTo(29.5734f, -0.614138f, 29.4356f, 0.376322f, 0.707107f);
7113 path.conicTo(29.2978f, 1.36678f, 28.3074f, 1.22898f, 0.707107f);
7114 path.quadTo(27.8309f, 1.16268f, 27.3521f, 1.11553f);
7115 path.conicTo(26.3569f, 1.01753f, 26.4549f, 0.0223428f, 0.707107f);
7116 path.conicTo(26.5529f, -0.972843f, 27.5481f, -0.87484f, 0.707107f);
7117 path.close();
7118 path.moveTo(30.6151f, -0.386432f);
7119 path.quadTo(31.1507f, -0.267954f, 31.6809f, -0.126991f);
7120 path.conicTo(32.6473f, 0.129965f, 32.3904f, 1.09639f, 0.707107f);
7121 path.conicTo(32.1334f, 2.06281f, 31.167f, 1.80585f, 0.707107f);
7122 path.quadTo(30.6776f, 1.67574f, 30.1832f, 1.56637f);
7123 path.conicTo(29.2068f, 1.35041f, 29.4227f, 0.374005f, 0.707107f);
7124 path.conicTo(29.6387f, -0.602396f, 30.6151f, -0.386432f, 0.707107f);
7125 path.close();
7126 path.moveTo(33.7445f, 0.514616f);
7127 path.quadTo(34.2452f, 0.693421f, 34.7381f, 0.892536f);
7128 path.conicTo(35.6653f, 1.26708f, 35.2908f, 2.19429f, 0.707107f);
7129 path.conicTo(34.9162f, 3.1215f, 33.989f, 2.74696f, 0.707107f);
7130 path.quadTo(33.534f, 2.56316f, 33.0718f, 2.3981f);
7131 path.conicTo(32.1301f, 2.06177f, 32.4664f, 1.12003f, 0.707107f);
7132 path.conicTo(32.8027f, 0.178285f, 33.7445f, 0.514616f, 0.707107f);
7133 path.close();
7134 path.moveTo(36.6402f, 1.7512f);
7135 path.quadTo(37.0977f, 1.98026f, 37.5458f, 2.22715f);
7136 path.conicTo(38.4217f, 2.70968f, 37.9392f, 3.58556f, 0.707107f);
7137 path.conicTo(37.4566f, 4.46144f, 36.5808f, 3.97891f, 0.707107f);
7138 path.quadTo(36.1671f, 3.75102f, 35.7448f, 3.53956f);
7139 path.conicTo(34.8506f, 3.09185f, 35.2983f, 2.19767f, 0.707107f);
7140 path.conicTo(35.746f, 1.30349f, 36.6402f, 1.7512f, 0.707107f);
7141 path.close();
7142 path.moveTo(39.2611f, 3.26012f);
7143 path.quadTo(39.4005f, 3.35159f, 39.539f, 3.44501f);
7144 path.quadTo(39.8091f, 3.62717f, 40.0746f, 3.81611f);
7145 path.conicTo(40.8893f, 4.3959f, 40.3096f, 5.21067f, 0.707107f);
7146 path.conicTo(39.7298f, 6.02543f, 38.915f, 5.44564f, 0.707107f);
7147 path.quadTo(38.67f, 5.2713f, 38.4206f, 5.10309f);
7148 path.quadTo(38.293f, 5.017f, 38.164f, 4.9324f);
7149 path.conicTo(37.3279f, 4.38388f, 37.8764f, 3.54775f, 0.707107f);
7150 path.conicTo(38.4249f, 2.71161f, 39.2611f, 3.26012f, 0.707107f);
7151 path.close();
7152 path.moveTo(41.6673f, 5.04503f);
7153 path.quadTo(42.0618f, 5.37449f, 42.4428f, 5.71927f);
7154 path.conicTo(43.1844f, 6.39015f, 42.5135f, 7.13171f, 0.707107f);
7155 path.conicTo(41.8426f, 7.87327f, 41.1011f, 7.20239f, 0.707107f);
7156 path.quadTo(40.7493f, 6.88414f, 40.3852f, 6.58004f);
7157 path.conicTo(39.6177f, 5.93899f, 40.2588f, 5.17149f, 0.707107f);
7158 path.conicTo(40.8998f, 4.40399f, 41.6673f, 5.04503f, 0.707107f);
7159 path.close();
7160 path.moveTo(43.9388f, 7.1865f);
7161 path.quadTo(44.3044f, 7.57519f, 44.6538f, 7.97856f);
7162 path.conicTo(45.3084f, 8.73448f, 44.5525f, 9.38914f, 0.707107f);
7163 path.conicTo(43.7966f, 10.0438f, 43.1419f, 9.28789f, 0.707107f);
7164 path.quadTo(42.8195f, 8.91555f, 42.482f, 8.55677f);
7165 path.conicTo(41.7969f, 7.82836f, 42.5253f, 7.14322f, 0.707107f);
7166 path.conicTo(43.2537f, 6.45808f, 43.9388f, 7.1865f, 0.707107f);
7167 path.close();
7168 path.moveTo(46.0036f, 9.6753f);
7169 path.quadTo(46.3207f, 10.1098f, 46.6195f, 10.5571f);
7170 path.conicTo(47.175f, 11.3886f, 46.3435f, 11.9441f, 0.707107f);
7171 path.conicTo(45.5119f, 12.4996f, 44.9564f, 11.6681f, 0.707107f);
7172 path.quadTo(44.6806f, 11.2552f, 44.388f, 10.8541f);
7173 path.conicTo(43.7986f, 10.0463f, 44.6064f, 9.45688f, 0.707107f);
7174 path.conicTo(45.4142f, 8.86747f, 46.0036f, 9.6753f, 0.707107f);
7175 path.close();
7176 path.moveTo(47.6932f, 12.3107f);
7177 path.quadTo(47.9467f, 12.764f, 48.1819f, 13.2271f);
7178 path.conicTo(48.6347f, 14.1187f, 47.7431f, 14.5715f, 0.707107f);
7179 path.conicTo(46.8514f, 15.0243f, 46.3986f, 14.1327f, 0.707107f);
7180 path.quadTo(46.1816f, 13.7053f, 45.9476f, 13.2868f);
7181 path.conicTo(45.4595f, 12.414f, 46.3323f, 11.9259f, 0.707107f);
7182 path.conicTo(47.2051f, 11.4379f, 47.6932f, 12.3107f, 0.707107f);
7183 path.close();
7184 path.moveTo(49.0539f, 15.1303f);
7185 path.quadTo(49.2539f, 15.6178f, 49.434f, 16.113f);
7186 path.conicTo(49.7758f, 17.0527f, 48.836f, 17.3946f, 0.707107f);
7187 path.conicTo(47.8963f, 17.7364f, 47.5545f, 16.7966f, 0.707107f);
7188 path.quadTo(47.3882f, 16.3395f, 47.2036f, 15.8895f);
7189 path.conicTo(46.824f, 14.9643f, 47.7491f, 14.5847f, 0.707107f);
7190 path.conicTo(48.6743f, 14.2051f, 49.0539f, 15.1303f, 0.707107f);
7191 path.close();
7192 path.moveTo(50.0758f, 18.1294f);
7193 path.quadTo(50.216f, 18.6412f, 50.3352f, 19.1584f);
7194 path.conicTo(50.5599f, 20.1328f, 49.5855f, 20.3575f, 0.707107f);
7195 path.conicTo(48.6111f, 20.5821f, 48.3864f, 19.6077f, 0.707107f);
7196 path.quadTo(48.2763f, 19.1304f, 48.1469f, 18.6579f);
7197 path.conicTo(47.8826f, 17.6935f, 48.8471f, 17.4292f, 0.707107f);
7198 path.conicTo(49.8115f, 17.165f, 50.0758f, 18.1294f, 0.707107f);
7199 path.close();
7200 path.moveTo(50.7247f, 21.2262f);
7201 path.quadTo(50.8005f, 21.743f, 50.8555f, 22.2623f);
7202 path.conicTo(50.9607f, 23.2568f, 49.9663f, 23.3621f, 0.707107f);
7203 path.conicTo(48.9719f, 23.4673f, 48.8666f, 22.4729f, 0.707107f);
7204 path.quadTo(48.8158f, 21.9935f, 48.7458f, 21.5165f);
7205 path.conicTo(48.6007f, 20.5271f, 49.5901f, 20.382f, 0.707107f);
7206 path.conicTo(50.5795f, 20.2368f, 50.7247f, 21.2262f, 0.707107f);
7207 path.close();
7208 path.moveTo(50.9916f, 24.3398f);
7209 path.quadTo(51.0048f, 24.858f, 50.9973f, 25.3762f);
7210 path.conicTo(50.9828f, 26.3761f, 49.9829f, 26.3616f, 0.707107f);
7211 path.conicTo(48.983f, 26.3472f, 48.9975f, 25.3473f, 0.707107f);
7212 path.quadTo(49.0044f, 24.8687f, 48.9923f, 24.3906f);
7213 path.conicTo(48.9669f, 23.3909f, 49.9665f, 23.3655f, 0.707107f);
7214 path.conicTo(50.9662f, 23.3401f, 50.9916f, 24.3398f, 0.707107f);
7215 path.close();
7216 path.moveTo(50.8819f, 27.4753f);
7217 path.quadTo(50.8323f, 27.9943f, 50.7618f, 28.511f);
7218 path.conicTo(50.6268f, 29.5018f, 49.636f, 29.3668f, 0.707107f);
7219 path.conicTo(48.6451f, 29.2317f, 48.7802f, 28.2409f, 0.707107f);
7220 path.quadTo(48.8452f, 27.7641f, 48.891f, 27.2849f);
7221 path.conicTo(48.9862f, 26.2894f, 49.9816f, 26.3846f, 0.707107f);
7222 path.conicTo(50.9771f, 26.4798f, 50.8819f, 27.4753f, 0.707107f);
7223 path.close();
7224 path.moveTo(50.4023f, 30.5429f);
7225 path.quadTo(50.2856f, 31.0775f, 50.1465f, 31.607f);
7226 path.conicTo(49.8924f, 32.5742f, 48.9252f, 32.3201f, 0.707107f);
7227 path.conicTo(47.9581f, 32.066f, 48.2122f, 31.0988f, 0.707107f);
7228 path.quadTo(48.3405f, 30.6102f, 48.4483f, 30.1165f);
7229 path.conicTo(48.6614f, 29.1395f, 49.6385f, 29.3527f, 0.707107f);
7230 path.conicTo(50.6155f, 29.5659f, 50.4023f, 30.5429f, 0.707107f);
7231 path.close();
7232 path.moveTo(49.5104f, 33.674f);
7233 path.quadTo(49.3329f, 34.1756f, 49.1351f, 34.6695f);
7234 path.conicTo(48.7632f, 35.5977f, 47.8349f, 35.2258f, 0.707107f);
7235 path.conicTo(46.9066f, 34.854f, 47.2785f, 33.9257f, 0.707107f);
7236 path.quadTo(47.4612f, 33.4697f, 47.625f, 33.0067f);
7237 path.conicTo(47.9587f, 32.064f, 48.9014f, 32.3977f, 0.707107f);
7238 path.conicTo(49.8441f, 32.7313f, 49.5104f, 33.674f, 0.707107f);
7239 path.close();
7240 path.moveTo(48.281f, 36.5756f);
7241 path.quadTo(48.053f, 37.0342f, 47.8071f, 37.4835f);
7242 path.conicTo(47.3269f, 38.3607f, 46.4497f, 37.8805f, 0.707107f);
7243 path.conicTo(45.5725f, 37.4004f, 46.0527f, 36.5232f, 0.707107f);
7244 path.quadTo(46.2797f, 36.1085f, 46.4901f, 35.6852f);
7245 path.conicTo(46.9353f, 34.7898f, 47.8307f, 35.235f, 0.707107f);
7246 path.conicTo(48.7262f, 35.6802f, 48.281f, 36.5756f, 0.707107f);
7247 path.close();
7248 path.moveTo(46.7777f, 39.2033f);
7249 path.quadTo(46.6677f, 39.3719f, 46.555f, 39.539f);
7250 path.quadTo(46.3865f, 39.7888f, 46.2121f, 40.0349f);
7251 path.conicTo(45.6338f, 40.8507f, 44.818f, 40.2724f, 0.707107f);
7252 path.conicTo(44.0021f, 39.6942f, 44.5804f, 38.8783f, 0.707107f);
7253 path.quadTo(44.7413f, 38.6513f, 44.8969f, 38.4206f);
7254 path.quadTo(45.0008f, 38.2665f, 45.1025f, 38.1107f);
7255 path.conicTo(45.6488f, 37.2731f, 46.4864f, 37.8194f, 0.707107f);
7256 path.conicTo(47.324f, 38.3657f, 46.7777f, 39.2033f, 0.707107f);
7257 path.close();
7258 path.moveTo(44.9527f, 41.6701f);
7259 path.quadTo(44.6177f, 42.0709f, 44.267f, 42.458f);
7260 path.conicTo(43.5955f, 43.1991f, 42.8545f, 42.5276f, 0.707107f);
7261 path.conicTo(42.1135f, 41.8561f, 42.7849f, 41.1151f, 0.707107f);
7262 path.quadTo(43.1087f, 40.7578f, 43.4178f, 40.3878f);
7263 path.conicTo(44.059f, 39.6203f, 44.8264f, 40.2615f, 0.707107f);
7264 path.conicTo(45.5938f, 40.9027f, 44.9527f, 41.6701f, 0.707107f);
7265 path.close();
7266 path.moveTo(42.7884f, 43.9624f);
7267 path.quadTo(42.4083f, 44.319f, 42.014f, 44.6602f);
7268 path.conicTo(41.2578f, 45.3146f, 40.6034f, 44.5585f, 0.707107f);
7269 path.conicTo(39.949f, 43.8023f, 40.7052f, 43.1479f, 0.707107f);
7270 path.quadTo(41.0691f, 42.833f, 41.4201f, 42.5037f);
7271 path.conicTo(42.1494f, 41.8196f, 42.8336f, 42.5489f, 0.707107f);
7272 path.conicTo(43.5178f, 43.2782f, 42.7884f, 43.9624f, 0.707107f);
7273 path.close();
7274 path.moveTo(40.3892f, 45.9564f);
7275 path.quadTo(39.9683f, 46.2655f, 39.5354f, 46.5574f);
7276 path.conicTo(38.7062f, 47.1165f, 38.1472f, 46.2873f, 0.707107f);
7277 path.conicTo(37.5881f, 45.4582f, 38.4173f, 44.8992f, 0.707107f);
7278 path.quadTo(38.8169f, 44.6297f, 39.2054f, 44.3444f);
7279 path.conicTo(40.0114f, 43.7525f, 40.6033f, 44.5585f, 0.707107f);
7280 path.conicTo(41.1952f, 45.3645f, 40.3892f, 45.9564f, 0.707107f);
7281 path.close();
7282 path.moveTo(37.7543f, 47.6568f);
7283 path.quadTo(37.2977f, 47.9138f, 36.8312f, 48.1522f);
7284 path.conicTo(35.9407f, 48.6072f, 35.4857f, 47.7167f, 0.707107f);
7285 path.conicTo(35.0306f, 46.8263f, 35.9211f, 46.3712f, 0.707107f);
7286 path.quadTo(36.3518f, 46.1511f, 36.7732f, 45.9139f);
7287 path.conicTo(37.6446f, 45.4234f, 38.1351f, 46.2948f, 0.707107f);
7288 path.conicTo(38.6257f, 47.1662f, 37.7543f, 47.6568f, 0.707107f);
7289 path.close();
7290 path.moveTo(34.9311f, 49.0286f);
7291 path.quadTo(34.4488f, 49.2279f, 33.9589f, 49.4077f);
7292 path.conicTo(33.0202f, 49.7523f, 32.6756f, 48.8136f, 0.707107f);
7293 path.conicTo(32.331f, 47.8748f, 33.2698f, 47.5302f, 0.707107f);
7294 path.quadTo(33.722f, 47.3642f, 34.1672f, 47.1802f);
7295 path.conicTo(35.0914f, 46.7983f, 35.4733f, 47.7224f, 0.707107f);
7296 path.conicTo(35.8553f, 48.6466f, 34.9311f, 49.0286f, 0.707107f);
7297 path.close();
7298 path.moveTo(31.9824f, 50.0449f);
7299 path.quadTo(31.4774f, 50.1857f, 30.9668f, 50.3061f);
7300 path.conicTo(29.9935f, 50.5355f, 29.764f, 49.5622f, 0.707107f);
7301 path.conicTo(29.5346f, 48.5889f, 30.5079f, 48.3594f, 0.707107f);
7302 path.quadTo(30.9789f, 48.2484f, 31.4453f, 48.1184f);
7303 path.conicTo(32.4086f, 47.8498f, 32.6771f, 48.8131f, 0.707107f);
7304 path.conicTo(32.9457f, 49.7763f, 31.9824f, 50.0449f, 0.707107f);
7305 path.close();
7306 path.moveTo(28.899f, 50.706f);
7307 path.quadTo(28.3834f, 50.7842f, 27.8652f, 50.8416f);
7308 path.conicTo(26.8713f, 50.9518f, 26.7611f, 49.9579f, 0.707107f);
7309 path.conicTo(26.6509f, 48.964f, 27.6448f, 48.8538f, 0.707107f);
7310 path.quadTo(28.1231f, 48.8008f, 28.599f, 48.7286f);
7311 path.conicTo(29.5877f, 48.5786f, 29.7377f, 49.5673f, 0.707107f);
7312 path.conicTo(29.8877f, 50.556f, 28.899f, 50.706f, 0.707107f);
7313 path.close();
7314 path.moveTo(25.8106f, 50.9874f);
7315 path.quadTo(25.6321f, 50.9929f, 25.4537f, 50.996f);
7316 path.conicTo(24.4539f, 51.0135f, 24.4365f, 50.0136f, 0.707115f);
7317 path.lineTo(24.4251f, 49.3638f);
7318 path.conicTo(24.4077f, 48.364f, 25.4075f, 48.3465f, 0.707107f);
7319 path.conicTo(26.4073f, 48.3291f, 26.4248f, 49.3289f, 0.707107f);
7320 path.lineTo(26.4361f, 49.9787f);
7321 path.lineTo(25.4363f, 49.9962f);
7322 path.lineTo(25.4189f, 48.9963f);
7323 path.quadTo(25.5836f, 48.9935f, 25.7482f, 48.9883f);
7324 path.conicTo(26.7477f, 48.9571f, 26.7789f, 49.9567f, 0.707107f);
7325 path.conicTo(26.8101f, 50.9562f, 25.8106f, 50.9874f, 0.707107f);
7326 path.close();
7327 path.moveTo(24.3902f, 47.3641f);
7328 path.lineTo(24.3728f, 46.3643f);
7329 path.conicTo(24.3553f, 45.3645f, 25.3551f, 45.347f, 0.707107f);
7330 path.conicTo(26.355f, 45.3295f, 26.3724f, 46.3294f, 0.707107f);
7331 path.lineTo(26.3899f, 47.3292f);
7332 path.conicTo(26.4074f, 48.3291f, 25.4075f, 48.3465f, 0.707107f);
7333 path.conicTo(24.4077f, 48.364f, 24.3902f, 47.3641f, 0.707107f);
7334 path.close();
7335 path.moveTo(24.3378f, 44.3646f);
7336 path.lineTo(24.3204f, 43.3648f);
7337 path.conicTo(24.3029f, 42.3649f, 25.3028f, 42.3475f, 0.707107f);
7338 path.conicTo(26.3026f, 42.33f, 26.3201f, 43.3298f, 0.707107f);
7339 path.lineTo(26.3375f, 44.3297f);
7340 path.conicTo(26.355f, 45.3295f, 25.3551f, 45.347f, 0.707107f);
7341 path.conicTo(24.3553f, 45.3645f, 24.3378f, 44.3646f, 0.707107f);
7342 path.close();
7343 path.moveTo(24.2855f, 41.3651f);
7344 path.lineTo(24.268f, 40.3652f);
7345 path.conicTo(24.2506f, 39.3654f, 25.2504f, 39.3479f, 0.707107f);
7346 path.conicTo(26.2503f, 39.3305f, 26.2677f, 40.3303f, 0.707107f);
7347 path.lineTo(26.2852f, 41.3302f);
7348 path.conicTo(26.3026f, 42.33f, 25.3028f, 42.3475f, 0.707107f);
7349 path.conicTo(24.3029f, 42.3649f, 24.2855f, 41.3651f, 0.707107f);
7350 path.close();
7351 path.moveTo(24.2331f, 38.3655f);
7352 path.lineTo(24.2157f, 37.3657f);
7353 path.conicTo(24.1982f, 36.3658f, 25.1981f, 36.3484f, 0.707107f);
7354 path.conicTo(26.1979f, 36.3309f, 26.2154f, 37.3308f, 0.707107f);
7355 path.lineTo(26.2328f, 38.3306f);
7356 path.conicTo(26.2503f, 39.3305f, 25.2504f, 39.3479f, 0.707107f);
7357 path.conicTo(24.2506f, 39.3654f, 24.2331f, 38.3655f, 0.707107f);
7358 path.close();
7359 path.moveTo(24.1808f, 35.366f);
7360 path.lineTo(24.1633f, 34.3661f);
7361 path.conicTo(24.1459f, 33.3663f, 25.1457f, 33.3488f, 0.707107f);
7362 path.conicTo(26.1456f, 33.3314f, 26.163f, 34.3312f, 0.707107f);
7363 path.lineTo(26.1805f, 35.3311f);
7364 path.conicTo(26.1979f, 36.3309f, 25.1981f, 36.3484f, 0.707107f);
7365 path.conicTo(24.1982f, 36.3658f, 24.1808f, 35.366f, 0.707107f);
7366 path.close();
7367 path.moveTo(24.1284f, 32.3664f);
7368 path.lineTo(24.111f, 31.3666f);
7369 path.conicTo(24.0935f, 30.3667f, 25.0934f, 30.3493f, 0.707107f);
7370 path.conicTo(26.0932f, 30.3318f, 26.1107f, 31.3317f, 0.707107f);
7371 path.lineTo(26.1281f, 32.3315f);
7372 path.conicTo(26.1456f, 33.3314f, 25.1457f, 33.3488f, 0.707107f);
7373 path.conicTo(24.1459f, 33.3663f, 24.1284f, 32.3664f, 0.707107f);
7374 path.close();
7375 path.moveTo(24.0761f, 29.3669f);
7376 path.lineTo(24.0586f, 28.367f);
7377 path.conicTo(24.0412f, 27.3672f, 25.041f, 27.3497f, 0.707107f);
7378 path.conicTo(26.0409f, 27.3323f, 26.0583f, 28.3321f, 0.707107f);
7379 path.lineTo(26.0758f, 29.332f);
7380 path.conicTo(26.0932f, 30.3318f, 25.0934f, 30.3493f, 0.707107f);
7381 path.conicTo(24.0935f, 30.3667f, 24.0761f, 29.3669f, 0.707107f);
7382 path.close();
7383 path.moveTo(24.0237f, 26.3673f);
7384 path.lineTo(24.0063f, 25.3675f);
7385 path.conicTo(23.9888f, 24.3676f, 24.9887f, 24.3502f, 0.707107f);
7386 path.conicTo(25.9885f, 24.3327f, 26.006f, 25.3326f, 0.707107f);
7387 path.lineTo(26.0234f, 26.3324f);
7388 path.conicTo(26.0409f, 27.3323f, 25.041f, 27.3497f, 0.707107f);
7389 path.conicTo(24.0412f, 27.3672f, 24.0237f, 26.3673f, 0.707107f);
7390 path.close();
7391 path1 = path;
7392 path.reset();
7393 path.setFillType(SkPathFillType::kWinding);
7394 path.moveTo(25.0098f, 23.1973f);
7395 path.lineTo(25.5689f, 22.3682f);
7396 path.conicTo(26.1281f, 21.5392f, 26.9572f, 22.0984f, 0.707107f);
7397 path.conicTo(27.7862f, 22.6576f, 27.227f, 23.4866f, 0.707107f);
7398 path.lineTo(26.6678f, 24.3156f);
7399 path.conicTo(26.1086f, 25.1447f, 25.2796f, 24.5855f, 0.707107f);
7400 path.conicTo(24.4506f, 24.0263f, 25.0098f, 23.1973f, 0.707107f);
7401 path.close();
7402 path.moveTo(26.6873f, 20.7101f);
7403 path.lineTo(27.2465f, 19.8811f);
7404 path.conicTo(27.8057f, 19.0521f, 28.6348f, 19.6113f, 0.707107f);
7405 path.conicTo(29.4638f, 20.1704f, 28.9046f, 20.9995f, 0.707107f);
7406 path.lineTo(28.3454f, 21.8285f);
7407 path.conicTo(27.7862f, 22.6576f, 26.9572f, 22.0984f, 0.707107f);
7408 path.conicTo(26.1281f, 21.5392f, 26.6873f, 20.7101f, 0.707107f);
7409 path.close();
7410 path.moveTo(28.3649f, 18.223f);
7411 path.lineTo(28.9241f, 17.394f);
7412 path.conicTo(29.4833f, 16.565f, 30.3123f, 17.1241f, 0.707107f);
7413 path.conicTo(31.1414f, 17.6833f, 30.5822f, 18.5124f, 0.707107f);
7414 path.lineTo(30.023f, 19.3414f);
7415 path.conicTo(29.4638f, 20.1704f, 28.6348f, 19.6113f, 0.707107f);
7416 path.conicTo(27.8057f, 19.0521f, 28.3649f, 18.223f, 0.707107f);
7417 path.close();
7418 path.moveTo(30.0425f, 15.7359f);
7419 path.lineTo(30.6017f, 14.9069f);
7420 path.conicTo(31.1609f, 14.0778f, 31.9899f, 14.637f, 0.707107f);
7421 path.conicTo(32.8189f, 15.1962f, 32.2598f, 16.0253f, 0.707107f);
7422 path.lineTo(31.7006f, 16.8543f);
7423 path.conicTo(31.1414f, 17.6833f, 30.3123f, 17.1241f, 0.707107f);
7424 path.conicTo(29.4833f, 16.565f, 30.0425f, 15.7359f, 0.707107f);
7425 path.close();
7426 path.moveTo(31.7201f, 13.2488f);
7427 path.lineTo(32.2793f, 12.4198f);
7428 path.conicTo(32.8385f, 11.5907f, 33.6675f, 12.1499f, 0.707107f);
7429 path.conicTo(34.4965f, 12.7091f, 33.9373f, 13.5381f, 0.707107f);
7430 path.lineTo(33.3781f, 14.3672f);
7431 path.conicTo(32.8189f, 15.1962f, 31.9899f, 14.637f, 0.707107f);
7432 path.conicTo(31.1609f, 14.0778f, 31.7201f, 13.2488f, 0.707107f);
7433 path.close();
7434 path.moveTo(33.3976f, 10.7617f);
7435 path.lineTo(33.9568f, 9.93265f);
7436 path.conicTo(34.516f, 9.10361f, 35.3451f, 9.6628f, 0.707107f);
7437 path.conicTo(36.1741f, 10.222f, 35.6149f, 11.051f, 0.707107f);
7438 path.lineTo(35.0557f, 11.8801f);
7439 path.conicTo(34.4965f, 12.7091f, 33.6675f, 12.1499f, 0.707107f);
7440 path.conicTo(32.8385f, 11.5907f, 33.3976f, 10.7617f, 0.707107f);
7441 path.close();
7442 path.moveTo(35.0752f, 8.27457f);
7443 path.lineTo(35.6344f, 7.44554f);
7444 path.conicTo(36.1936f, 6.6165f, 37.0226f, 7.17569f, 0.707107f);
7445 path.conicTo(37.8517f, 7.73488f, 37.2925f, 8.56392f, 0.707107f);
7446 path.lineTo(36.7333f, 9.39296f);
7447 path.conicTo(36.1741f, 10.222f, 35.3451f, 9.6628f, 0.707107f);
7448 path.conicTo(34.516f, 9.10361f, 35.0752f, 8.27457f, 0.707107f);
7449 path.close();
7450 path.moveTo(36.7528f, 5.78746f);
7451 path.lineTo(37.312f, 4.95842f);
7452 path.conicTo(37.8712f, 4.12939f, 38.7002f, 4.68858f, 0.707107f);
7453 path.conicTo(39.5293f, 5.24777f, 38.9701f, 6.07681f, 0.707107f);
7454 path.lineTo(38.4109f, 6.90585f);
7455 path.conicTo(37.8517f, 7.73488f, 37.0226f, 7.17569f, 0.707107f);
7456 path.conicTo(36.1936f, 6.6165f, 36.7528f, 5.78746f, 0.707107f);
7457 path.close();
7458 path.moveTo(39.9447f, 3.72429f);
7459 path.quadTo(40.3524f, 4.01069f, 40.7489f, 4.31248f);
7460 path.conicTo(41.5445f, 4.9182f, 40.9388f, 5.71387f, 0.707107f);
7461 path.conicTo(40.3331f, 6.50955f, 39.5374f, 5.90383f, 0.707107f);
7462 path.quadTo(39.1714f, 5.62521f, 38.7951f, 5.36088f);
7463 path.conicTo(37.9768f, 4.78608f, 38.5516f, 3.96779f, 0.707107f);
7464 path.conicTo(39.1264f, 3.14949f, 39.9447f, 3.72429f, 0.707107f);
7465 path.close();
7466 path.moveTo(42.3194f, 5.60826f);
7467 path.quadTo(42.707f, 5.95446f, 43.0804f, 6.31583f);
7468 path.conicTo(43.7991f, 7.01122f, 43.1037f, 7.72985f, 0.707107f);
7469 path.conicTo(42.4083f, 8.44848f, 41.6896f, 7.75308f, 0.707107f);
7470 path.quadTo(41.3448f, 7.41944f, 40.9871f, 7.09992f);
7471 path.conicTo(40.2413f, 6.43379f, 40.9074f, 5.68796f, 0.707107f);
7472 path.conicTo(41.5735f, 4.94212f, 42.3194f, 5.60826f, 0.707107f);
7473 path.close();
7474 path.moveTo(44.5406f, 7.84871f);
7475 path.quadTo(44.8959f, 8.25352f, 45.2341f, 8.67266f);
7476 path.conicTo(45.862f, 9.4509f, 45.0838f, 10.0789f, 0.707107f);
7477 path.conicTo(44.3056f, 10.7068f, 43.6776f, 9.9286f, 0.707107f);
7478 path.quadTo(43.3654f, 9.54174f, 43.0374f, 9.16805f);
7479 path.conicTo(42.3778f, 8.41649f, 43.1293f, 7.75682f, 0.707107f);
7480 path.conicTo(43.8809f, 7.09715f, 44.5406f, 7.84871f, 0.707107f);
7481 path.close();
7482 path.moveTo(46.528f, 10.4211f);
7483 path.quadTo(46.815f, 10.8449f, 47.0851f, 11.2796f);
7484 path.conicTo(47.6128f, 12.129f, 46.7633f, 12.6567f, 0.707107f);
7485 path.conicTo(45.9139f, 13.1844f, 45.3862f, 12.335f, 0.707107f);
7486 path.quadTo(45.1369f, 11.9337f, 44.872f, 11.5426f);
7487 path.conicTo(44.3113f, 10.7146f, 45.1393f, 10.1538f, 0.707107f);
7488 path.conicTo(45.9673f, 9.5931f, 46.528f, 10.4211f, 0.707107f);
7489 path.close();
7490 path.moveTo(48.1056f, 13.0782f);
7491 path.quadTo(48.3449f, 13.542f, 48.5654f, 14.015f);
7492 path.conicTo(48.9879f, 14.9213f, 48.0816f, 15.3438f, 0.707107f);
7493 path.conicTo(47.1752f, 15.7663f, 46.7527f, 14.86f, 0.707107f);
7494 path.quadTo(46.5492f, 14.4234f, 46.3283f, 13.9953f);
7495 path.conicTo(45.8698f, 13.1066f, 46.7584f, 12.6481f, 0.707107f);
7496 path.conicTo(47.6471f, 12.1895f, 48.1056f, 13.0782f, 0.707107f);
7497 path.close();
7498 path.moveTo(49.3755f, 15.9538f);
7499 path.quadTo(49.5594f, 16.4493f, 49.7229f, 16.9516f);
7500 path.conicTo(50.0325f, 17.9025f, 49.0816f, 18.2121f, 0.707107f);
7501 path.conicTo(48.1307f, 18.5216f, 47.8212f, 17.5707f, 0.707107f);
7502 path.quadTo(47.6702f, 17.1069f, 47.5005f, 16.6497f);
7503 path.conicTo(47.1526f, 15.7122f, 48.0901f, 15.3642f, 0.707107f);
7504 path.conicTo(49.0276f, 15.0163f, 49.3755f, 15.9538f, 0.707107f);
7505 path.close();
7506 path.moveTo(50.2964f, 18.9923f);
7507 path.quadTo(50.4191f, 19.5089f, 50.5206f, 20.0302f);
7508 path.conicTo(50.7117f, 21.0117f, 49.7302f, 21.2029f, 0.707107f);
7509 path.conicTo(48.7486f, 21.394f, 48.5575f, 20.4125f, 0.707107f);
7510 path.quadTo(48.4638f, 19.9313f, 48.3505f, 19.4544f);
7511 path.conicTo(48.1194f, 18.4815f, 49.0924f, 18.2504f, 0.707107f);
7512 path.conicTo(50.0653f, 18.0193f, 50.2964f, 18.9923f, 0.707107f);
7513 path.close();
7514 path.moveTo(50.8373f, 22.0956f);
7515 path.quadTo(50.8955f, 22.6138f, 50.933f, 23.1341f);
7516 path.conicTo(51.0047f, 24.1315f, 50.0073f, 24.2033f, 0.707107f);
7517 path.conicTo(49.0099f, 24.275f, 48.9381f, 23.2776f, 0.707107f);
7518 path.quadTo(48.9036f, 22.7975f, 48.8498f, 22.3191f);
7519 path.conicTo(48.7381f, 21.3253f, 49.7318f, 21.2136f, 0.707107f);
7520 path.conicTo(50.7255f, 21.1019f, 50.8373f, 22.0956f, 0.707107f);
7521 path.close();
7522 path.moveTo(50.9992f, 25.2099f);
7523 path.quadTo(50.9949f, 25.7358f, 50.9694f, 26.2608f);
7524 path.conicTo(50.9209f, 27.2596f, 49.9221f, 27.2111f, 0.707107f);
7525 path.conicTo(48.9233f, 27.1626f, 48.9718f, 26.1638f, 0.707107f);
7526 path.quadTo(48.9953f, 25.679f, 48.9992f, 25.1938f);
7527 path.conicTo(49.0073f, 24.1938f, 50.0073f, 24.2019f, 0.707107f);
7528 path.conicTo(51.0072f, 24.21f, 50.9992f, 25.2099f, 0.707107f);
7529 path.close();
7530 path.moveTo(50.7839f, 28.3454f);
7531 path.quadTo(50.7172f, 28.8596f, 50.63f, 29.3708f);
7532 path.conicTo(50.4619f, 30.3565f, 49.4761f, 30.1884f, 0.707107f);
7533 path.conicTo(48.4903f, 30.0203f, 48.6584f, 29.0346f, 0.707107f);
7534 path.quadTo(48.7389f, 28.5627f, 48.8005f, 28.088f);
7535 path.conicTo(48.9292f, 27.0963f, 49.9209f, 27.225f, 0.707107f);
7536 path.conicTo(50.9126f, 27.3537f, 50.7839f, 28.3454f, 0.707107f);
7537 path.close();
7538 path.moveTo(50.1906f, 31.437f);
7539 path.quadTo(50.0558f, 31.9646f, 49.899f, 32.4861f);
7540 path.conicTo(49.611f, 33.4438f, 48.6534f, 33.1558f, 0.707107f);
7541 path.conicTo(47.6957f, 32.8679f, 47.9837f, 31.9103f, 0.707107f);
7542 path.quadTo(48.1284f, 31.4289f, 48.2528f, 30.9418f);
7543 path.conicTo(48.5004f, 29.9729f, 49.4693f, 30.2205f, 0.707107f);
7544 path.conicTo(50.4382f, 30.4681f, 50.1906f, 31.437f, 0.707107f);
7545 path.close();
7546 path.moveTo(49.1978f, 34.5114f);
7547 path.quadTo(49.0051f, 35.0016f, 48.7927f, 35.4837f);
7548 path.conicTo(48.3895f, 36.3988f, 47.4744f, 35.9956f, 0.707107f);
7549 path.conicTo(46.5593f, 35.5923f, 46.9625f, 34.6772f, 0.707107f);
7550 path.quadTo(47.1586f, 34.2323f, 47.3364f, 33.7797f);
7551 path.conicTo(47.7023f, 32.849f, 48.6329f, 33.2149f, 0.707107f);
7552 path.conicTo(49.5636f, 33.5807f, 49.1978f, 34.5114f, 0.707107f);
7553 path.close();
7554 path.moveTo(47.8852f, 37.3397f);
7555 path.quadTo(47.6449f, 37.7853f, 47.3876f, 38.2211f);
7556 path.conicTo(46.879f, 39.0821f, 46.018f, 38.5736f, 0.707107f);
7557 path.conicTo(45.1569f, 38.0651f, 45.6655f, 37.204f, 0.707107f);
7558 path.quadTo(45.903f, 36.8018f, 46.1248f, 36.3906f);
7559 path.conicTo(46.5993f, 35.5103f, 47.4796f, 35.9849f, 0.707107f);
7560 path.conicTo(48.3598f, 36.4595f, 47.8852f, 37.3397f, 0.707107f);
7561 path.close();
7562 path.moveTo(46.3154f, 39.8881f);
7563 path.quadTo(46.0303f, 40.2962f, 45.7299f, 40.693f);
7564 path.conicTo(45.1264f, 41.4903f, 44.3291f, 40.8867f, 0.707107f);
7565 path.conicTo(43.5318f, 40.2831f, 44.1353f, 39.4858f, 0.707107f);
7566 path.quadTo(44.4126f, 39.1195f, 44.6757f, 38.7428f);
7567 path.conicTo(45.2483f, 37.923f, 46.0682f, 38.4956f, 0.707107f);
7568 path.conicTo(46.888f, 39.0682f, 46.3154f, 39.8881f, 0.707107f);
7569 path.close();
7570 path.moveTo(44.4398f, 42.2654f);
7571 path.quadTo(44.095f, 42.6536f, 43.7349f, 43.0278f);
7572 path.conicTo(43.0415f, 43.7484f, 42.321f, 43.055f, 0.707107f);
7573 path.conicTo(41.6004f, 42.3616f, 42.2938f, 41.641f, 0.707107f);
7574 path.quadTo(42.6261f, 41.2957f, 42.9444f, 40.9374f);
7575 path.conicTo(43.6084f, 40.1897f, 44.3561f, 40.8537f, 0.707107f);
7576 path.conicTo(45.1038f, 41.5177f, 44.4398f, 42.2654f, 0.707107f);
7577 path.close();
7578 path.moveTo(42.2075f, 44.4911f);
7579 path.quadTo(41.804f, 44.8473f, 41.3862f, 45.1865f);
7580 path.conicTo(40.6098f, 45.8167f, 39.9795f, 45.0403f, 0.707107f);
7581 path.conicTo(39.3493f, 44.2639f, 40.1257f, 43.6336f, 0.707107f);
7582 path.quadTo(40.5114f, 43.3205f, 40.8838f, 42.9918f);
7583 path.conicTo(41.6335f, 42.3299f, 42.2953f, 43.0796f, 0.707107f);
7584 path.conicTo(42.9572f, 43.8292f, 42.2075f, 44.4911f, 0.707107f);
7585 path.close();
7586 path.moveTo(39.6379f, 46.488f);
7587 path.quadTo(39.2151f, 46.776f, 38.7814f, 47.0471f);
7588 path.conicTo(37.9334f, 47.5771f, 37.4034f, 46.7292f, 0.707107f);
7589 path.conicTo(36.8733f, 45.8812f, 37.7213f, 45.3511f, 0.707107f);
7590 path.quadTo(38.1217f, 45.1009f, 38.5119f, 44.835f);
7591 path.conicTo(39.3383f, 44.2721f, 39.9013f, 45.0985f, 0.707107f);
7592 path.conicTo(40.4643f, 45.925f, 39.6379f, 46.488f, 0.707107f);
7593 path.close();
7594 path.moveTo(36.9864f, 48.0722f);
7595 path.quadTo(36.5234f, 48.3127f, 36.0513f, 48.5344f);
7596 path.conicTo(35.1461f, 48.9595f, 34.7211f, 48.0543f, 0.707107f);
7597 path.conicTo(34.296f, 47.1491f, 35.2012f, 46.7241f, 0.707107f);
7598 path.quadTo(35.6371f, 46.5194f, 36.0644f, 46.2974f);
7599 path.conicTo(36.9518f, 45.8364f, 37.4128f, 46.7238f, 0.707107f);
7600 path.conicTo(37.8738f, 47.6112f, 36.9864f, 48.0722f, 0.707107f);
7601 path.close();
7602 path.moveTo(34.1153f, 49.3498f);
7603 path.quadTo(33.6206f, 49.535f, 33.1187f, 49.6999f);
7604 path.conicTo(32.1687f, 50.0122f, 31.8565f, 49.0622f, 0.707107f);
7605 path.conicTo(31.5442f, 48.1122f, 32.4942f, 47.7999f, 0.707107f);
7606 path.quadTo(32.9575f, 47.6477f, 33.4141f, 47.4767f);
7607 path.conicTo(34.3507f, 47.1261f, 34.7012f, 48.0627f, 0.707107f);
7608 path.conicTo(35.0518f, 48.9992f, 34.1153f, 49.3498f, 0.707107f);
7609 path.close();
7610 path.moveTo(31.08f, 50.2791f);
7611 path.quadTo(30.5637f, 50.4033f, 30.0427f, 50.5063f);
7612 path.conicTo(29.0617f, 50.7002f, 28.8678f, 49.7192f, 0.707107f);
7613 path.conicTo(28.6738f, 48.7382f, 29.6548f, 48.5443f, 0.707107f);
7614 path.quadTo(30.1357f, 48.4492f, 30.6122f, 48.3346f);
7615 path.conicTo(31.5845f, 48.1007f, 31.8184f, 49.073f, 0.707107f);
7616 path.conicTo(32.0522f, 50.0453f, 31.08f, 50.2791f, 0.707107f);
7617 path.close();
7618 path.moveTo(27.9769f, 50.829f);
7619 path.quadTo(27.4588f, 50.8887f, 26.9386f, 50.9276f);
7620 path.conicTo(25.9414f, 51.0022f, 25.8668f, 50.005f, 0.707107f);
7621 path.conicTo(25.7923f, 49.0078f, 26.7895f, 48.9332f, 0.707107f);
7622 path.quadTo(27.2696f, 48.8973f, 27.7479f, 48.8422f);
7623 path.conicTo(28.7413f, 48.7277f, 28.8558f, 49.7211f, 0.707107f);
7624 path.conicTo(28.9703f, 50.7145f, 27.9769f, 50.829f, 0.707107f);
7625 path.close();
7626 path.moveTo(24.8625f, 50.9996f);
7627 path.quadTo(24.3373f, 50.9969f, 23.8128f, 50.9729f);
7628 path.conicTo(22.8138f, 50.9272f, 22.8595f, 49.9283f, 0.707107f);
7629 path.conicTo(22.9051f, 48.9293f, 23.9041f, 48.975f, 0.707107f);
7630 path.quadTo(24.3884f, 48.9971f, 24.8731f, 48.9997f);
7631 path.conicTo(25.8731f, 49.005f, 25.8678f, 50.005f, 0.707107f);
7632 path.conicTo(25.8624f, 51.0049f, 24.8625f, 50.9996f, 0.707107f);
7633 path.close();
7634 path.moveTo(21.7268f, 50.7931f);
7635 path.quadTo(21.2121f, 50.7278f, 20.7005f, 50.642f);
7636 path.conicTo(19.7143f, 50.4767f, 19.8796f, 49.4905f, 0.707107f);
7637 path.conicTo(20.045f, 48.5042f, 21.0312f, 48.6696f, 0.707107f);
7638 path.quadTo(21.5036f, 48.7488f, 21.9786f, 48.8091f);
7639 path.conicTo(22.9707f, 48.9349f, 22.8448f, 49.927f, 0.707107f);
7640 path.conicTo(22.7189f, 50.919f, 21.7268f, 50.7931f, 0.707107f);
7641 path.close();
7642 path.moveTo(18.6372f, 50.2094f);
7643 path.quadTo(18.1089f, 50.0761f, 17.5865f, 49.9207f);
7644 path.conicTo(16.628f, 49.6356f, 16.9132f, 48.6771f, 0.707107f);
7645 path.conicTo(17.1983f, 47.7186f, 18.1568f, 48.0037f, 0.707107f);
7646 path.quadTo(18.639f, 48.1472f, 19.1267f, 48.2702f);
7647 path.conicTo(20.0963f, 48.515f, 19.8516f, 49.4846f, 0.707107f);
7648 path.conicTo(19.6068f, 50.4542f, 18.6372f, 50.2094f, 0.707107f);
7649 path.close();
7650 path.moveTo(15.5577f, 49.2248f);
7651 path.quadTo(15.0665f, 49.0334f, 14.5834f, 48.8222f);
7652 path.conicTo(13.6672f, 48.4215f, 14.0678f, 47.5053f, 0.707107f);
7653 path.conicTo(14.4684f, 46.589f, 15.3847f, 46.9897f, 0.707107f);
7654 path.quadTo(15.8306f, 47.1846f, 16.284f, 47.3614f);
7655 path.conicTo(17.2158f, 47.7246f, 16.8526f, 48.6563f, 0.707107f);
7656 path.conicTo(16.4894f, 49.588f, 15.5577f, 49.2248f, 0.707107f);
7657 path.close();
7658 path.moveTo(12.7231f, 47.9189f);
7659 path.quadTo(12.2765f, 47.6797f, 11.8395f, 47.4233f);
7660 path.conicTo(10.9771f, 46.9171f, 11.4833f, 46.0547f, 0.707107f);
7661 path.conicTo(11.9894f, 45.1922f, 12.8519f, 45.6984f, 0.707107f);
7662 path.quadTo(13.2552f, 45.9351f, 13.6675f, 46.156f);
7663 path.conicTo(14.549f, 46.6282f, 14.0768f, 47.5096f, 0.707107f);
7664 path.conicTo(13.6046f, 48.3911f, 12.7231f, 47.9189f, 0.707107f);
7665 path.close();
7666 path.moveTo(10.1686f, 46.3548f);
7667 path.quadTo(9.76024f, 46.0712f, 9.363f, 45.7722f);
7668 path.conicTo(8.56406f, 45.1708f, 9.16549f, 44.3718f, 0.707107f);
7669 path.conicTo(9.76691f, 43.5729f, 10.5658f, 44.1743f, 0.707107f);
7670 path.quadTo(10.9325f, 44.4504f, 11.3095f, 44.7122f);
7671 path.conicTo(12.1308f, 45.2826f, 11.5604f, 46.1039f, 0.707107f);
7672 path.conicTo(10.9899f, 46.9253f, 10.1686f, 46.3548f, 0.707107f);
7673 path.close();
7674 path.moveTo(7.78853f, 44.4876f);
7675 path.quadTo(7.39972f, 44.1442f, 7.02492f, 43.7855f);
7676 path.conicTo(6.3024f, 43.0942f, 6.99374f, 42.3717f, 0.707107f);
7677 path.conicTo(7.68509f, 41.6492f, 8.40761f, 42.3405f, 0.707107f);
7678 path.quadTo(8.7536f, 42.6715f, 9.11249f, 42.9885f);
7679 path.conicTo(9.86201f, 43.6505f, 9.20003f, 44.4f, 0.707107f);
7680 path.conicTo(8.53805f, 45.1496f, 7.78853f, 44.4876f, 0.707107f);
7681 path.close();
7682 path.moveTo(5.55855f, 42.2635f);
7683 path.quadTo(5.20148f, 41.8614f, 4.86131f, 41.4449f);
7684 path.conicTo(4.22883f, 40.6703f, 5.0034f, 40.0378f, 0.707107f);
7685 path.conicTo(5.77797f, 39.4053f, 6.41046f, 40.1799f, 0.707107f);
7686 path.quadTo(6.72443f, 40.5644f, 7.05403f, 40.9356f);
7687 path.conicTo(7.71802f, 41.6833f, 6.97028f, 42.3473f, 0.707107f);
7688 path.conicTo(6.22254f, 43.0113f, 5.55855f, 42.2635f, 0.707107f);
7689 path.close();
7690 path.moveTo(3.55261f, 39.6973f);
7691 path.quadTo(3.26341f, 39.2752f, 2.99107f, 38.8422f);
7692 path.conicTo(2.45867f, 37.9957f, 3.30517f, 37.4633f, 0.707107f);
7693 path.conicTo(4.15167f, 36.9309f, 4.68406f, 37.7774f, 0.707107f);
7694 path.quadTo(4.93548f, 38.1772f, 5.20241f, 38.5667f);
7695 path.conicTo(5.76769f, 39.3916f, 4.94279f, 39.9569f, 0.707107f);
7696 path.conicTo(4.11789f, 40.5222f, 3.55261f, 39.6973f, 0.707107f);
7697 path.close();
7698 path.moveTo(1.96145f, 37.0509f);
7699 path.quadTo(1.71975f, 36.5889f, 1.49677f, 36.1175f);
7700 path.conicTo(1.06917f, 35.2135f, 1.97315f, 34.7859f, 0.707107f);
7701 path.conicTo(2.87712f, 34.3583f, 3.30471f, 35.2623f, 0.707107f);
7702 path.quadTo(3.51053f, 35.6974f, 3.73364f, 36.1239f);
7703 path.conicTo(4.19714f, 37.01f, 3.31105f, 37.4735f, 0.707107f);
7704 path.conicTo(2.42495f, 37.937f, 1.96145f, 37.0509f, 0.707107f);
7705 path.close();
7706 path.moveTo(0.676191f, 34.1844f);
7707 path.quadTo(0.489621f, 33.6902f, 0.323275f, 33.189f);
7708 path.conicTo(0.00831527f, 32.2399f, 0.95742f, 31.9249f, 0.707107f);
7709 path.conicTo(1.90653f, 31.6099f, 2.22149f, 32.559f, 0.707107f);
7710 path.quadTo(2.37504f, 33.0218f, 2.54726f, 33.4779f);
7711 path.conicTo(2.9005f, 34.4134f, 1.96497f, 34.7666f, 0.707107f);
7712 path.conicTo(1.02943f, 35.1199f, 0.676191f, 34.1844f, 0.707107f);
7713 path.close();
7714 path.moveTo(-0.261658f, 31.1521f);
7715 path.quadTo(-0.387304f, 30.6362f, -0.491779f, 30.1156f);
7716 path.conicTo(-0.68853f, 29.1351f, 0.291923f, 28.9384f, 0.707107f);
7717 path.conicTo(1.27238f, 28.7416f, 1.46913f, 29.7221f, 0.707107f);
7718 path.quadTo(1.56557f, 30.2026f, 1.68155f, 30.6789f);
7719 path.conicTo(1.91817f, 31.6505f, 0.946565f, 31.8871f, 0.707107f);
7720 path.conicTo(-0.0250367f, 32.1237f, -0.261658f, 31.1521f, 0.707107f);
7721 path.close();
7722 path.moveTo(-0.820549f, 28.0495f);
7723 path.quadTo(-0.881733f, 27.5314f, -0.922089f, 27.0113f);
7724 path.conicTo(-0.999449f, 26.0143f, -0.00244591f, 25.9369f, 0.707107f);
7725 path.conicTo(0.994557f, 25.8596f, 1.07192f, 26.8566f, 0.707107f);
7726 path.quadTo(1.10917f, 27.3367f, 1.16565f, 27.8149f);
7727 path.conicTo(1.28293f, 28.808f, 0.289834f, 28.9253f, 0.707107f);
7728 path.conicTo(-0.703265f, 29.0426f, -0.820549f, 28.0495f, 0.707107f);
7729 path.close();
7730 path.moveTo(-0.999918f, 24.9349f);
7731 path.quadTo(-0.998605f, 24.4104f, -0.976138f, 23.8863f);
7732 path.conicTo(-0.933305f, 22.8873f, 0.0657772f, 22.9301f, 0.707107f);
7733 path.conicTo(1.06486f, 22.9729f, 1.02203f, 23.972f, 0.707107f);
7734 path.quadTo(1.00129f, 24.4557f, 1.00008f, 24.9399f);
7735 path.conicTo(0.997572f, 25.9399f, -0.0024244f, 25.9374f, 0.707107f);
7736 path.conicTo(-1.00242f, 25.9349f, -0.999918f, 24.9349f, 0.707107f);
7737 path.close();
7738 path.moveTo(-0.802212f, 21.7991f);
7739 path.quadTo(-0.738311f, 21.284f, -0.653903f, 20.7719f);
7740 path.conicTo(-0.491283f, 19.7852f, 0.495406f, 19.9478f, 0.707107f);
7741 path.conicTo(1.48209f, 20.1104f, 1.31948f, 21.0971f, 0.707107f);
7742 path.quadTo(1.24156f, 21.5698f, 1.18257f, 22.0453f);
7743 path.conicTo(1.05946f, 23.0377f, 0.0670681f, 22.9146f, 0.707107f);
7744 path.conicTo(-0.925325f, 22.7915f, -0.802212f, 21.7991f, 0.707107f);
7745 path.close();
7746 path.moveTo(-0.228066f, 18.7115f);
7747 path.quadTo(-0.096172f, 18.1824f, 0.0577899f, 17.6593f);
7748 path.conicTo(0.340124f, 16.7f, 1.29944f, 16.9823f, 0.707107f);
7749 path.conicTo(2.25876f, 17.2646f, 1.97642f, 18.2239f, 0.707107f);
7750 path.quadTo(1.8343f, 18.7068f, 1.71255f, 19.1953f);
7751 path.conicTo(1.47069f, 20.1656f, 0.50038f, 19.9237f, 0.707107f);
7752 path.conicTo(-0.46993f, 19.6819f, -0.228066f, 18.7115f, 0.707107f);
7753 path.close();
7754 path.moveTo(0.74831f, 15.6269f);
7755 path.quadTo(0.938539f, 15.1347f, 1.14857f, 14.6506f);
7756 path.conicTo(1.54662f, 13.7333f, 2.46398f, 14.1313f, 0.707107f);
7757 path.conicTo(3.38135f, 14.5294f, 2.9833f, 15.4467f, 0.707107f);
7758 path.quadTo(2.78942f, 15.8936f, 2.61382f, 16.3479f);
7759 path.conicTo(2.25331f, 17.2806f, 1.32056f, 16.9201f, 0.707107f);
7760 path.conicTo(0.387801f, 16.5596f, 0.74831f, 15.6269f, 0.707107f);
7761 path.close();
7762 path.moveTo(2.04744f, 12.7861f);
7763 path.quadTo(2.28569f, 12.3384f, 2.5412f, 11.9003f);
7764 path.conicTo(3.04504f, 11.0365f, 3.90884f, 11.5403f, 0.707107f);
7765 path.conicTo(4.77264f, 12.0442f, 4.26881f, 12.908f, 0.707107f);
7766 path.quadTo(4.03293f, 13.3123f, 3.81302f, 13.7256f);
7767 path.conicTo(3.34325f, 14.6084f, 2.46046f, 14.1386f, 0.707107f);
7768 path.conicTo(1.57767f, 13.6689f, 2.04744f, 12.7861f, 0.707107f);
7769 path.close();
7770 path.moveTo(3.60589f, 10.2253f);
7771 path.quadTo(3.88812f, 9.81661f, 4.18576f, 9.419f);
7772 path.conicTo(4.78503f, 8.61845f, 5.58558f, 9.21772f, 0.707107f);
7773 path.conicTo(6.38613f, 9.81699f, 5.78686f, 10.6175f, 0.707107f);
7774 path.quadTo(5.51211f, 10.9846f, 5.25159f, 11.3618f);
7775 path.conicTo(4.68333f, 12.1847f, 3.86048f, 11.6164f, 0.707107f);
7776 path.conicTo(3.03763f, 11.0481f, 3.60589f, 10.2253f, 0.707107f);
7777 path.close();
7778 path.moveTo(5.46482f, 7.84259f);
7779 path.quadTo(5.80682f, 7.4532f, 6.16407f, 7.07773f);
7780 path.conicTo(6.85339f, 6.35327f, 7.57785f, 7.04259f, 0.707107f);
7781 path.conicTo(8.30231f, 7.73191f, 7.61299f, 8.45636f, 0.707107f);
7782 path.quadTo(7.28322f, 8.80295f, 6.96752f, 9.16239f);
7783 path.conicTo(6.30762f, 9.91375f, 5.55627f, 9.25385f, 0.707107f);
7784 path.conicTo(4.80492f, 8.59395f, 5.46482f, 7.84259f, 0.707107f);
7785 path.close();
7786 path.moveTo(7.68062f, 5.60827f);
7787 path.quadTo(8.08142f, 5.25031f, 8.49666f, 4.90921f);
7788 path.conicTo(9.26938f, 4.27447f, 9.90412f, 5.04719f, 0.707107f);
7789 path.conicTo(10.5389f, 5.81992f, 9.76614f, 6.45466f, 0.707107f);
7790 path.quadTo(9.38285f, 6.76951f, 9.01289f, 7.09994f);
7791 path.conicTo(8.26705f, 7.76607f, 7.60092f, 7.02024f, 0.707107f);
7792 path.conicTo(6.93479f, 6.2744f, 7.68062f, 5.60827f, 0.707107f);
7793 path.close();
7794 path.moveTo(10.2392f, 3.59627f);
7795 path.quadTo(10.6626f, 3.30433f, 11.0971f, 3.02935f);
7796 path.conicTo(11.9421f, 2.49463f, 12.4768f, 3.33965f, 0.707107f);
7797 path.conicTo(13.0116f, 4.18467f, 12.1666f, 4.7194f, 0.707107f);
7798 path.quadTo(11.7654f, 4.97322f, 11.3747f, 5.24271f);
7799 path.conicTo(10.5515f, 5.81043f, 9.98373f, 4.98721f, 0.707107f);
7800 path.conicTo(9.41601f, 4.16399f, 10.2392f, 3.59627f, 0.707107f);
7801 path.close();
7802 path.moveTo(12.8847f, 1.99524f);
7803 path.quadTo(13.3459f, 1.75234f, 13.8165f, 1.52812f);
7804 path.conicTo(14.7193f, 1.09799f, 15.1494f, 2.00075f, 0.707107f);
7805 path.conicTo(15.5795f, 2.90352f, 14.6768f, 3.33365f, 0.707107f);
7806 path.quadTo(14.2424f, 3.54063f, 13.8166f, 3.76484f);
7807 path.conicTo(12.9318f, 4.23081f, 12.4658f, 3.34601f, 0.707107f);
7808 path.conicTo(11.9999f, 2.46122f, 12.8847f, 1.99524f, 0.707107f);
7809 path.close();
7810 path.moveTo(15.7467f, 0.702339f);
7811 path.quadTo(16.2402f, 0.514409f, 16.7409f, 0.346672f);
7812 path.conicTo(17.6891f, 0.029011f, 18.0067f, 0.977215f, 0.707107f);
7813 path.conicTo(18.3244f, 1.92542f, 17.3762f, 2.24308f, 0.707107f);
7814 path.quadTo(16.914f, 2.39792f, 16.4585f, 2.57139f);
7815 path.conicTo(15.524f, 2.92729f, 15.1681f, 1.99276f, 0.707107f);
7816 path.conicTo(14.8122f, 1.05824f, 15.7467f, 0.702339f, 0.707107f);
7817 path.close();
7818 path.moveTo(18.7758f, -0.24399f);
7819 path.quadTo(19.2913f, -0.371107f, 19.8116f, -0.477061f);
7820 path.conicTo(20.7915f, -0.676608f, 20.9911f, 0.303281f, 0.707107f);
7821 path.conicTo(21.1906f, 1.28317f, 20.2107f, 1.48272f, 0.707107f);
7822 path.quadTo(19.7304f, 1.58052f, 19.2546f, 1.69785f);
7823 path.conicTo(18.2836f, 1.93725f, 18.0443f, 0.966329f, 0.707107f);
7824 path.conicTo(17.8049f, -0.00459272f, 18.7758f, -0.24399f, 0.707107f);
7825 path.close();
7826 path.moveTo(21.878f, -0.811882f);
7827 path.quadTo(22.396f, -0.874528f, 22.916f, -0.916348f);
7828 path.conicTo(23.9128f, -0.996504f, 23.993f, 0.000278629f, 0.707107f);
7829 path.conicTo(24.0731f, 0.997061f, 23.0764f, 1.07722f, 0.707107f);
7830 path.quadTo(22.5963f, 1.11582f, 22.1182f, 1.17365f);
7831 path.conicTo(21.1254f, 1.29372f, 21.0053f, 0.300958f, 0.707107f);
7832 path.conicTo(20.8853f, -0.691807f, 21.878f, -0.811882f, 0.707107f);
7833 path.close();
7834 path.moveTo(24.9926f, -0.999999f);
7835 path.quadTo(25.5166f, -1.00015f, 26.0401f, -0.979188f);
7836 path.conicTo(27.0393f, -0.939179f, 26.9992f, 0.0600199f, 0.707107f);
7837 path.conicTo(26.9592f, 1.05922f, 25.96f, 1.01921f, 0.707107f);
7838 path.quadTo(25.4768f, 0.999863f, 24.9932f, 1);
7839 path.conicTo(23.9932f, 1.00029f, 23.9929f, 0.000287339f, 0.707107f);
7840 path.conicTo(23.9926f, -0.999713f, 24.9926f, -0.999999f, 0.707107f);
7841 path.close();
7842 path.moveTo(28.1286f, -0.811081f);
7843 path.quadTo(28.6441f, -0.748593f, 29.1567f, -0.665572f);
7844 path.conicTo(30.1439f, -0.505698f, 29.984f, 0.48144f, 0.707107f);
7845 path.conicTo(29.8241f, 1.46858f, 28.837f, 1.3087f, 0.707107f);
7846 path.quadTo(28.3638f, 1.23207f, 27.8879f, 1.17439f);
7847 path.conicTo(26.8952f, 1.05406f, 27.0155f, 0.0613233f, 0.707107f);
7848 path.conicTo(27.1359f, -0.931411f, 28.1286f, -0.811081f, 0.707107f);
7849 path.close();
7850 path.moveTo(31.214f, -0.246499f);
7851 path.quadTo(31.7439f, -0.116076f, 32.2679f, 0.0364622f);
7852 path.conicTo(33.228f, 0.315996f, 32.9485f, 1.27613f, 0.707107f);
7853 path.conicTo(32.6689f, 2.23627f, 31.7088f, 1.95673f, 0.707107f);
7854 path.quadTo(31.2252f, 1.81593f, 30.736f, 1.69554f);
7855 path.conicTo(29.765f, 1.45654f, 30.004f, 0.48552f, 0.707107f);
7856 path.conicTo(30.243f, -0.485499f, 31.214f, -0.246499f, 0.707107f);
7857 path.close();
7858 path.moveTo(34.3038f, 0.721629f);
7859 path.quadTo(34.797f, 0.910612f, 35.282f, 1.11946f);
7860 path.conicTo(36.2005f, 1.51493f, 35.805f, 2.43341f, 0.707107f);
7861 path.conicTo(35.4096f, 3.35189f, 34.4911f, 2.95642f, 0.707107f);
7862 path.quadTo(34.0434f, 2.76365f, 33.5881f, 2.5892f);
7863 path.conicTo(32.6543f, 2.23137f, 33.0122f, 1.29758f, 0.707107f);
7864 path.conicTo(33.37f, 0.363796f, 34.3038f, 0.721629f, 0.707107f);
7865 path.close();
7866 path.moveTo(37.1508f, 2.01396f);
7867 path.quadTo(37.5996f, 2.2512f, 38.0388f, 2.50578f);
7868 path.conicTo(38.904f, 3.00727f, 38.4025f, 3.87244f, 0.707107f);
7869 path.conicTo(37.901f, 4.7376f, 37.0358f, 4.23612f, 0.707107f);
7870 path.quadTo(36.6304f, 4.00111f, 36.2161f, 3.78211f);
7871 path.conicTo(35.332f, 3.31476f, 35.7994f, 2.43069f, 0.707107f);
7872 path.conicTo(36.2667f, 1.54661f, 37.1508f, 2.01396f, 0.707107f);
7873 path.close();
7874 path.moveTo(39.718f, 3.56681f);
7875 path.quadTo(40.1269f, 3.84765f, 40.5249f, 4.14392f);
7876 path.conicTo(41.3271f, 4.74104f, 40.73f, 5.54319f, 0.707107f);
7877 path.conicTo(40.1329f, 6.34535f, 39.3307f, 5.74823f, 0.707107f);
7878 path.quadTo(38.9634f, 5.47478f, 38.5858f, 5.21552f);
7879 path.conicTo(37.7615f, 4.64945f, 38.3275f, 3.82509f, 0.707107f);
7880 path.conicTo(38.8936f, 3.00074f, 39.718f, 3.56681f, 0.707107f);
7881 path.close();
7882 path.moveTo(42.1033f, 5.41741f);
7883 path.quadTo(42.4933f, 5.75802f, 42.8694f, 6.11388f);
7884 path.conicTo(43.5958f, 6.80115f, 42.9085f, 7.52755f, 0.707107f);
7885 path.conicTo(42.2212f, 8.25394f, 41.4948f, 7.56667f, 0.707107f);
7886 path.quadTo(41.1476f, 7.23817f, 40.7876f, 6.92375f);
7887 path.conicTo(40.0345f, 6.26593f, 40.6923f, 5.51275f, 0.707107f);
7888 path.conicTo(41.3501f, 4.75958f, 42.1033f, 5.41741f, 0.707107f);
7889 path.close();
7890 path.moveTo(44.3419f, 7.62498f);
7891 path.quadTo(44.7007f, 8.02444f, 45.0428f, 8.43835f);
7892 path.conicTo(45.6797f, 9.20922f, 44.9089f, 9.84622f, 0.707107f);
7893 path.conicTo(44.138f, 10.4832f, 43.501f, 9.71234f, 0.707107f);
7894 path.quadTo(43.1852f, 9.3302f, 42.854f, 8.96151f);
7895 path.conicTo(42.1858f, 8.21759f, 42.9297f, 7.54932f, 0.707107f);
7896 path.conicTo(43.6736f, 6.88106f, 44.3419f, 7.62498f, 0.707107f);
7897 path.close();
7898 path.moveTo(46.3599f, 10.1759f);
7899 path.quadTo(46.6546f, 10.6005f, 46.9322f, 11.0366f);
7900 path.conicTo(47.4693f, 11.8801f, 46.6257f, 12.4172f, 0.707107f);
7901 path.conicTo(45.7822f, 12.9542f, 45.2451f, 12.1107f, 0.707107f);
7902 path.quadTo(44.9889f, 11.7082f, 44.7168f, 11.3162f);
7903 path.conicTo(44.1467f, 10.4947f, 44.9682f, 9.92452f, 0.707107f);
7904 path.conicTo(45.7897f, 9.35435f, 46.3599f, 10.1759f, 0.707107f);
7905 path.close();
7906 path.moveTo(47.9708f, 12.8204f);
7907 path.quadTo(48.2149f, 13.2808f, 48.4403f, 13.7506f);
7908 path.conicTo(48.873f, 14.6521f, 47.9715f, 15.0848f, 0.707107f);
7909 path.conicTo(47.0699f, 15.5174f, 46.6372f, 14.6159f, 0.707107f);
7910 path.quadTo(46.4291f, 14.1822f, 46.2038f, 13.7573f);
7911 path.conicTo(45.7354f, 12.8738f, 46.6188f, 12.4054f, 0.707107f);
7912 path.conicTo(47.5023f, 11.9369f, 47.9708f, 12.8204f, 0.707107f);
7913 path.close();
7914 path.moveTo(49.2713f, 15.6778f);
7915 path.quadTo(49.4606f, 16.1706f, 49.6297f, 16.6708f);
7916 path.conicTo(49.9501f, 17.6181f, 49.0028f, 17.9384f, 0.707107f);
7917 path.conicTo(48.0555f, 18.2588f, 47.7351f, 17.3115f, 0.707107f);
7918 path.quadTo(47.5791f, 16.8499f, 47.4043f, 16.3949f);
7919 path.conicTo(47.0458f, 15.4614f, 47.9793f, 15.1029f, 0.707107f);
7920 path.conicTo(48.9128f, 14.7443f, 49.2713f, 15.6778f, 0.707107f);
7921 path.close();
7922 path.moveTo(50.2261f, 18.7037f);
7923 path.quadTo(50.3547f, 19.2188f, 50.4621f, 19.7388f);
7924 path.conicTo(50.6645f, 20.7182f, 49.6852f, 20.9205f, 0.707107f);
7925 path.conicTo(48.7059f, 21.1229f, 48.5035f, 20.1436f, 0.707107f);
7926 path.quadTo(48.4043f, 19.6636f, 48.2856f, 19.1881f);
7927 path.conicTo(48.0435f, 18.2178f, 49.0137f, 17.9757f, 0.707107f);
7928 path.conicTo(49.984f, 17.7335f, 50.2261f, 18.7037f, 0.707107f);
7929 path.close();
7930 path.moveTo(50.803f, 21.8055f);
7931 path.quadTo(50.8671f, 22.3234f, 50.9104f, 22.8434f);
7932 path.conicTo(50.9934f, 23.8399f, 49.9968f, 23.9229f, 0.707107f);
7933 path.conicTo(49.0002f, 24.0058f, 48.9173f, 23.0093f, 0.707107f);
7934 path.quadTo(48.8773f, 22.5293f, 48.8182f, 22.0513f);
7935 path.conicTo(48.6953f, 21.0588f, 49.6877f, 20.936f, 0.707107f);
7936 path.conicTo(50.6801f, 20.8131f, 50.803f, 21.8055f, 0.707107f);
7937 path.close();
7938 path.moveTo(50.9999f, 24.9202f);
7939 path.quadTo(51.0015f, 25.4434f, 50.982f, 25.9664f);
7940 path.conicTo(50.9449f, 26.9657f, 49.9456f, 26.9286f, 0.707107f);
7941 path.conicTo(48.9463f, 26.8914f, 48.9834f, 25.8921f, 0.707107f);
7942 path.quadTo(49.0014f, 25.4094f, 48.9999f, 24.9263f);
7943 path.conicTo(48.9968f, 23.9263f, 49.9968f, 23.9232f, 0.707107f);
7944 path.conicTo(50.9968f, 23.9202f, 50.9999f, 24.9202f, 0.707107f);
7945 path.close();
7946 path.moveTo(50.8198f, 28.0562f);
7947 path.quadTo(50.7587f, 28.5721f, 50.677f, 29.0852f);
7948 path.conicTo(50.5199f, 30.0728f, 49.5323f, 29.9157f, 0.707107f);
7949 path.conicTo(48.5448f, 29.7586f, 48.7019f, 28.771f, 0.707107f);
7950 path.quadTo(48.7772f, 28.2974f, 48.8336f, 27.8211f);
7951 path.conicTo(48.9512f, 26.8281f, 49.9442f, 26.9456f, 0.707107f);
7952 path.conicTo(50.9373f, 27.0632f, 50.8198f, 28.0562f, 0.707107f);
7953 path.close();
7954 path.moveTo(50.2647f, 31.1395f);
7955 path.quadTo(50.1358f, 31.6701f, 49.9847f, 32.1949f);
7956 path.conicTo(49.7079f, 33.1558f, 48.747f, 32.8791f, 0.707107f);
7957 path.conicTo(47.786f, 32.6024f, 48.0628f, 31.6414f, 0.707107f);
7958 path.quadTo(48.2022f, 31.1571f, 48.3213f, 30.6672f);
7959 path.conicTo(48.5574f, 29.6955f, 49.5291f, 29.9317f, 0.707107f);
7960 path.conicTo(50.5009f, 30.1678f, 50.2647f, 31.1395f, 0.707107f);
7961 path.close();
7962 path.moveTo(49.3049f, 34.2343f);
7963 path.quadTo(49.1171f, 34.7285f, 48.9095f, 35.2145f);
7964 path.conicTo(48.5166f, 36.1341f, 47.597f, 35.7412f, 0.707107f);
7965 path.conicTo(46.6774f, 35.3483f, 47.0703f, 34.4288f, 0.707107f);
7966 path.quadTo(47.262f, 33.9801f, 47.4353f, 33.524f);
7967 path.conicTo(47.7904f, 32.5892f, 48.7252f, 32.9444f, 0.707107f);
7968 path.conicTo(49.66f, 33.2995f, 49.3049f, 34.2343f, 0.707107f);
7969 path.close();
7970 path.moveTo(48.0194f, 37.0875f);
7971 path.quadTo(47.7831f, 37.5374f, 47.5295f, 37.9777f);
7972 path.conicTo(47.0304f, 38.8443f, 46.1638f, 38.3451f, 0.707107f);
7973 path.conicTo(45.2973f, 37.846f, 45.7965f, 36.9795f, 0.707107f);
7974 path.quadTo(46.0306f, 36.5729f, 46.2487f, 36.1577f);
7975 path.conicTo(46.7136f, 35.2723f, 47.5989f, 35.7372f, 0.707107f);
7976 path.conicTo(48.4843f, 36.2021f, 48.0194f, 37.0875f, 0.707107f);
7977 path.close();
7978 path.moveTo(46.4721f, 39.6612f);
7979 path.quadTo(46.1926f, 40.0705f, 45.8977f, 40.4688f);
7980 path.conicTo(45.3028f, 41.2726f, 44.499f, 40.6776f, 0.707107f);
7981 path.conicTo(43.6953f, 40.0827f, 44.2902f, 39.2789f, 0.707107f);
7982 path.quadTo(44.5624f, 38.9112f, 44.8204f, 38.5334f);
7983 path.conicTo(45.3843f, 37.7075f, 46.2101f, 38.2714f, 0.707107f);
7984 path.conicTo(47.036f, 38.8353f, 46.4721f, 39.6612f, 0.707107f);
7985 path.close();
7986 path.moveTo(44.6298f, 42.0491f);
7987 path.quadTo(44.2906f, 42.4396f, 43.9361f, 42.8164f);
7988 path.conicTo(43.2509f, 43.5447f, 42.5226f, 42.8595f, 0.707107f);
7989 path.conicTo(41.7942f, 42.1742f, 42.4795f, 41.4459f, 0.707107f);
7990 path.quadTo(42.8067f, 41.0981f, 43.1198f, 40.7376f);
7991 path.conicTo(43.7756f, 39.9826f, 44.5306f, 40.6383f, 0.707107f);
7992 path.conicTo(45.2856f, 41.2941f, 44.6298f, 42.0491f, 0.707107f);
7993 path.close();
7994 path.moveTo(42.4305f, 44.2919f);
7995 path.quadTo(42.0324f, 44.6516f, 41.6198f, 44.9946f);
7996 path.conicTo(40.8507f, 45.6338f, 40.2115f, 44.8648f, 0.707107f);
7997 path.conicTo(39.5723f, 44.0958f, 40.3413f, 43.4566f, 0.707107f);
7998 path.quadTo(40.7222f, 43.1399f, 41.0897f, 42.8079f);
7999 path.conicTo(41.8317f, 42.1375f, 42.5021f, 42.8795f, 0.707107f);
8000 path.conicTo(43.1725f, 43.6215f, 42.4305f, 44.2919f, 0.707107f);
8001 path.close();
8002 path.moveTo(39.8873f, 46.3159f);
8003 path.quadTo(39.4613f, 46.6134f, 39.0238f, 46.8936f);
8004 path.conicTo(38.1818f, 47.433f, 37.6424f, 46.5909f, 0.707107f);
8005 path.conicTo(37.103f, 45.7489f, 37.9451f, 45.2095f, 0.707107f);
8006 path.quadTo(38.3489f, 44.9508f, 38.7421f, 44.6763f);
8007 path.conicTo(39.5619f, 44.1037f, 40.1345f, 44.9235f, 0.707107f);
8008 path.conicTo(40.7071f, 45.7434f, 39.8873f, 46.3159f, 0.707107f);
8009 path.close();
8010 path.moveTo(37.2437f, 47.9367f);
8011 path.quadTo(36.7842f, 48.182f, 36.3153f, 48.4086f);
8012 path.conicTo(35.415f, 48.8439f, 34.9797f, 47.9435f, 0.707107f);
8013 path.conicTo(34.5445f, 47.0432f, 35.4449f, 46.608f, 0.707107f);
8014 path.quadTo(35.8778f, 46.3987f, 36.3019f, 46.1723f);
8015 path.conicTo(37.1841f, 45.7014f, 37.655f, 46.5836f, 0.707107f);
8016 path.conicTo(38.1259f, 47.4658f, 37.2437f, 47.9367f, 0.707107f);
8017 path.close();
8018 path.moveTo(34.3909f, 49.2448f);
8019 path.quadTo(33.8988f, 49.4354f, 33.3992f, 49.606f);
8020 path.conicTo(32.4528f, 49.929f, 32.1298f, 48.9826f, 0.707107f);
8021 path.conicTo(31.8068f, 48.0362f, 32.7532f, 47.7132f, 0.707107f);
8022 path.quadTo(33.2142f, 47.5558f, 33.6685f, 47.3798f);
8023 path.conicTo(34.601f, 47.0186f, 34.9622f, 47.9511f, 0.707107f);
8024 path.conicTo(35.3234f, 48.8836f, 34.3909f, 49.2448f, 0.707107f);
8025 path.close();
8026 path.moveTo(31.3682f, 50.208f);
8027 path.quadTo(30.8535f, 50.3381f, 30.3338f, 50.447f);
8028 path.conicTo(29.3551f, 50.6521f, 29.15f, 49.6734f, 0.707107f);
8029 path.conicTo(28.9448f, 48.6947f, 29.9236f, 48.4895f, 0.707107f);
8030 path.quadTo(30.4033f, 48.389f, 30.8784f, 48.269f);
8031 path.conicTo(31.8479f, 48.024f, 32.0929f, 48.9936f, 0.707107f);
8032 path.conicTo(32.3378f, 49.9631f, 31.3682f, 50.208f, 0.707107f);
8033 path.close();
8034 path.moveTo(28.2669f, 50.7939f);
8035 path.quadTo(27.7491f, 50.8595f, 27.2292f, 50.9043f);
8036 path.conicTo(26.2329f, 50.99f, 26.1472f, 49.9937f, 0.707107f);
8037 path.conicTo(26.0615f, 48.9973f, 27.0578f, 48.9116f, 0.707107f);
8038 path.quadTo(27.5378f, 48.8703f, 28.0156f, 48.8098f);
8039 path.conicTo(29.0077f, 48.6841f, 29.1334f, 49.6762f, 0.707107f);
8040 path.conicTo(29.259f, 50.6683f, 28.2669f, 50.7939f, 0.707107f);
8041 path.close();
8042 path.moveTo(25.1523f, 50.9996f);
8043 path.quadTo(24.6297f, 51.0026f, 24.1072f, 50.9847f);
8044 path.conicTo(23.1078f, 50.9503f, 23.1422f, 49.9509f, 0.707107f);
8045 path.conicTo(23.1765f, 48.9515f, 24.1759f, 48.9858f, 0.707107f);
8046 path.quadTo(24.658f, 49.0024f, 25.1406f, 48.9996f);
8047 path.conicTo(26.1406f, 48.9937f, 26.1464f, 49.9937f, 0.707107f);
8048 path.conicTo(26.1523f, 50.9937f, 25.1523f, 50.9996f, 0.707107f);
8049 path.close();
8050 path.moveTo(22.0162f, 50.8282f);
8051 path.quadTo(21.4999f, 50.7686f, 20.9863f, 50.6883f);
8052 path.conicTo(19.9983f, 50.5339f, 20.1527f, 49.5459f, 0.707107f);
8053 path.conicTo(20.307f, 48.5579f, 21.295f, 48.7123f, 0.707107f);
8054 path.quadTo(21.7691f, 48.7864f, 22.2457f, 48.8414f);
8055 path.conicTo(23.2391f, 48.9562f, 23.1243f, 49.9496f, 0.707107f);
8056 path.conicTo(23.0096f, 50.943f, 22.0162f, 50.8282f, 0.707107f);
8057 path.close();
8058 path.moveTo(18.9351f, 50.2827f);
8059 path.quadTo(18.4037f, 50.1553f, 17.8782f, 50.0056f);
8060 path.conicTo(16.9164f, 49.7317f, 17.1904f, 48.7699f, 0.707107f);
8061 path.conicTo(17.4643f, 47.8082f, 18.426f, 48.0821f, 0.707107f);
8062 path.quadTo(18.9112f, 48.2203f, 19.4016f, 48.3379f);
8063 path.conicTo(20.374f, 48.5712f, 20.1408f, 49.5436f, 0.707107f);
8064 path.conicTo(19.9075f, 50.516f, 18.9351f, 50.2827f, 0.707107f);
8065 path.close();
8066 path.moveTo(15.8352f, 49.3312f);
8067 path.quadTo(15.3403f, 49.1448f, 14.8531f, 48.9383f);
8068 path.conicTo(13.9324f, 48.548f, 14.3227f, 47.6273f, 0.707107f);
8069 path.conicTo(14.713f, 46.7066f, 15.6337f, 47.0969f, 0.707107f);
8070 path.quadTo(16.0832f, 47.2874f, 16.5402f, 47.4596f);
8071 path.conicTo(17.476f, 47.812f, 17.1235f, 48.7479f, 0.707107f);
8072 path.conicTo(16.771f, 49.6837f, 15.8352f, 49.3312f, 0.707107f);
8073 path.close();
8074 path.moveTo(12.9759f, 48.0526f);
8075 path.quadTo(12.5249f, 47.8173f, 12.0835f, 47.5647f);
8076 path.conicTo(11.2156f, 47.0679f, 11.7124f, 46.2f, 0.707107f);
8077 path.conicTo(12.2092f, 45.3321f, 13.0771f, 45.8289f, 0.707107f);
8078 path.quadTo(13.4846f, 46.0622f, 13.9009f, 46.2793f);
8079 path.conicTo(14.7875f, 46.7418f, 14.325f, 47.6284f, 0.707107f);
8080 path.conicTo(13.8626f, 48.5151f, 12.9759f, 48.0526f, 0.707107f);
8081 path.close();
8082 path.moveTo(10.3957f, 46.5108f);
8083 path.quadTo(9.9861f, 46.2327f, 9.58733f, 45.9392f);
8084 path.conicTo(8.78198f, 45.3464f, 9.37478f, 44.541f, 0.707107f);
8085 path.conicTo(9.96757f, 43.7357f, 10.7729f, 44.3285f, 0.707107f);
8086 path.quadTo(11.141f, 44.5994f, 11.5191f, 44.8561f);
8087 path.conicTo(12.3464f, 45.4178f, 11.7847f, 46.2451f, 0.707107f);
8088 path.conicTo(11.223f, 47.0725f, 10.3957f, 46.5108f, 0.707107f);
8089 path.close();
8090 path.moveTo(8.00525f, 44.6769f);
8091 path.quadTo(7.6141f, 44.339f, 7.23672f, 43.9859f);
8092 path.conicTo(6.50649f, 43.3027f, 7.18969f, 42.5725f, 0.707107f);
8093 path.conicTo(7.87289f, 41.8423f, 8.60312f, 42.5255f, 0.707107f);
8094 path.quadTo(8.95149f, 42.8514f, 9.31254f, 43.1632f);
8095 path.conicTo(10.0693f, 43.8169f, 9.4157f, 44.5737f, 0.707107f);
8096 path.conicTo(8.76206f, 45.3305f, 8.00525f, 44.6769f, 0.707107f);
8097 path.close();
8098 path.moveTo(5.75818f, 42.4858f);
8099 path.quadTo(5.39763f, 42.089f, 5.05371f, 41.6777f);
8100 path.conicTo(4.41226f, 40.9105f, 5.17942f, 40.2691f, 0.707107f);
8101 path.conicTo(5.94658f, 39.6276f, 6.58804f, 40.3948f, 0.707107f);
8102 path.quadTo(6.90548f, 40.7744f, 7.23832f, 41.1407f);
8103 path.conicTo(7.91085f, 41.8808f, 7.17078f, 42.5533f, 0.707107f);
8104 path.conicTo(6.43071f, 43.2258f, 5.75818f, 42.4858f, 0.707107f);
8105 path.close();
8106 path.moveTo(3.72821f, 39.9503f);
8107 path.quadTo(3.42794f, 39.523f, 3.1451f, 39.0842f);
8108 path.conicTo(2.6034f, 38.2436f, 3.44397f, 37.7019f, 0.707107f);
8109 path.conicTo(4.28454f, 37.1602f, 4.82624f, 38.0008f, 0.707107f);
8110 path.quadTo(5.08734f, 38.4059f, 5.3645f, 38.8003f);
8111 path.conicTo(5.93951f, 39.6184f, 5.12137f, 40.1934f, 0.707107f);
8112 path.conicTo(4.30322f, 40.7684f, 3.72821f, 39.9503f, 0.707107f);
8113 path.close();
8114 path.moveTo(2.09762f, 37.3078f);
8115 path.quadTo(1.85114f, 36.8491f, 1.62324f, 36.381f);
8116 path.conicTo(1.18551f, 35.4819f, 2.08461f, 35.0442f, 0.707107f);
8117 path.conicTo(2.98372f, 34.6064f, 3.42145f, 35.5055f, 0.707107f);
8118 path.quadTo(3.63184f, 35.9377f, 3.85934f, 36.361f);
8119 path.conicTo(4.33272f, 37.2419f, 3.45185f, 37.7153f, 0.707107f);
8120 path.conicTo(2.57099f, 38.1886f, 2.09762f, 37.3078f, 0.707107f);
8121 path.close();
8122 path.moveTo(0.781912f, 34.4596f);
8123 path.quadTo(0.589924f, 33.9681f, 0.418029f, 33.4692f);
8124 path.conicTo(0.0922952f, 32.5237f, 1.03776f, 32.198f, 0.707107f);
8125 path.conicTo(1.98322f, 31.8722f, 2.30895f, 32.8177f, 0.707107f);
8126 path.quadTo(2.46761f, 33.2782f, 2.64484f, 33.7319f);
8127 path.conicTo(3.00867f, 34.6634f, 2.07721f, 35.0272f, 0.707107f);
8128 path.conicTo(1.14575f, 35.3911f, 0.781912f, 34.4596f, 0.707107f);
8129 path.close();
8130 path.moveTo(-0.189761f, 31.4402f);
8131 path.quadTo(-0.321263f, 30.9258f, -0.431662f, 30.4065f);
8132 path.conicTo(-0.639608f, 29.4284f, 0.338532f, 29.2205f, 0.707107f);
8133 path.conicTo(1.31667f, 29.0125f, 1.52462f, 29.9906f, 0.707107f);
8134 path.quadTo(1.62653f, 30.47f, 1.74791f, 30.9448f);
8135 path.conicTo(1.99561f, 31.9136f, 1.02677f, 32.1613f, 0.707107f);
8136 path.conicTo(0.0579369f, 32.409f, -0.189761f, 31.4402f, 0.707107f);
8137 path.close();
8138 path.moveTo(-0.784658f, 28.3394f);
8139 path.quadTo(-0.851693f, 27.8218f, -0.897902f, 27.3019f);
8140 path.conicTo(-0.986437f, 26.3058f, 0.00963629f, 26.2173f, 0.707107f);
8141 path.conicTo(1.00571f, 26.1288f, 1.09424f, 27.1248f, 0.707107f);
8142 path.quadTo(1.1369f, 27.6047f, 1.19878f, 28.0825f);
8143 path.conicTo(1.32721f, 29.0742f, 0.335496f, 29.2027f, 0.707107f);
8144 path.conicTo(-0.656222f, 29.3311f, -0.784658f, 28.3394f, 0.707107f);
8145 path.close();
8146 path.moveTo(-0.999031f, 25.2248f);
8147 path.quadTo(-1.00354f, 24.7027f, -0.987098f, 24.1809f);
8148 path.conicTo(-0.955596f, 23.1814f, 0.0439078f, 23.2129f, 0.707107f);
8149 path.conicTo(1.04341f, 23.2444f, 1.01191f, 24.2439f, 0.707107f);
8150 path.quadTo(0.996728f, 24.7256f, 1.00089f, 25.2075f);
8151 path.conicTo(1.00954f, 26.2075f, 0.00957754f, 26.2161f, 0.707107f);
8152 path.conicTo(-0.990385f, 26.2248f, -0.999031f, 25.2248f, 0.707107f);
8153 path.close();
8154 path.moveTo(-0.836492f, 22.0887f);
8155 path.quadTo(-0.778263f, 21.5719f, -0.699419f, 21.0579f);
8156 path.conicTo(-0.5478f, 20.0695f, 0.440639f, 20.2211f, 0.707107f);
8157 path.conicTo(1.42908f, 20.3727f, 1.27746f, 21.3612f, 0.707107f);
8158 path.quadTo(1.20468f, 21.8356f, 1.15093f, 22.3126f);
8159 path.conicTo(1.03896f, 23.3063f, 0.0452449f, 23.1944f, 0.707107f);
8160 path.conicTo(-0.948466f, 23.0824f, -0.836492f, 22.0887f, 0.707107f);
8161 path.close();
8162 path.moveTo(-0.300548f, 19.0098f);
8163 path.quadTo(-0.174573f, 18.4777f, -0.0263361f, 17.9514f);
8164 path.conicTo(0.244762f, 16.9889f, 1.20731f, 17.26f, 0.707107f);
8165 path.conicTo(2.16987f, 17.5311f, 1.89877f, 18.4936f, 0.707107f);
8166 path.quadTo(1.76193f, 18.9794f, 1.64565f, 19.4706f);
8167 path.conicTo(1.41526f, 20.4437f, 0.442159f, 20.2133f, 0.707107f);
8168 path.conicTo(-0.530939f, 19.9829f, -0.300548f, 19.0098f, 0.707107f);
8169 path.close();
8170 path.moveTo(0.642658f, 15.9049f);
8171 path.quadTo(0.827861f, 15.409f, 1.0331f, 14.9209f);
8172 path.conicTo(1.42076f, 13.9991f, 2.34256f, 14.3868f, 0.707107f);
8173 path.conicTo(3.26437f, 14.7744f, 2.87671f, 15.6962f, 0.707107f);
8174 path.quadTo(2.68726f, 16.1467f, 2.5163f, 16.6046f);
8175 path.conicTo(2.16648f, 17.5414f, 1.22967f, 17.1916f, 0.707107f);
8176 path.conicTo(0.292846f, 16.8418f, 0.642658f, 15.9049f, 0.707107f);
8177 path.close();
8178 path.moveTo(1.91434f, 13.0395f);
8179 path.quadTo(2.14856f, 12.5875f, 2.40031f, 12.1449f);
8180 path.conicTo(2.89473f, 11.2757f, 3.76395f, 11.7701f, 0.707107f);
8181 path.conicTo(4.63317f, 12.2645f, 4.13875f, 13.1337f, 0.707107f);
8182 path.quadTo(3.90637f, 13.5423f, 3.69016f, 13.9596f);
8183 path.conicTo(3.23014f, 14.8475f, 2.34223f, 14.3875f, 0.707107f);
8184 path.conicTo(1.45432f, 13.9275f, 1.91434f, 13.0395f, 0.707107f);
8185 path.close();
8186 path.moveTo(3.45073f, 10.4525f);
8187 path.quadTo(3.72744f, 10.0426f, 4.01954f, 9.64356f);
8188 path.conicTo(4.61017f, 8.83661f, 5.41711f, 9.42725f, 0.707107f);
8189 path.conicTo(6.22405f, 10.0179f, 5.63342f, 10.8248f, 0.707107f);
8190 path.quadTo(5.36379f, 11.1932f, 5.10836f, 11.5716f);
8191 path.conicTo(4.54884f, 12.4004f, 3.72003f, 11.8409f, 0.707107f);
8192 path.conicTo(2.89121f, 11.2813f, 3.45073f, 10.4525f, 0.707107f);
8193 path.close();
8194 path.moveTo(5.2763f, 8.05964f);
8195 path.quadTo(5.61273f, 7.66793f, 5.96445f, 7.2899f);
8196 path.conicTo(6.6456f, 6.55776f, 7.37774f, 7.23892f, 0.707107f);
8197 path.conicTo(8.10988f, 7.92008f, 7.42872f, 8.65221f, 0.707107f);
8198 path.quadTo(7.10407f, 9.00116f, 6.79351f, 9.36274f);
8199 path.conicTo(6.14196f, 10.1213f, 5.38336f, 9.46979f, 0.707107f);
8200 path.conicTo(4.62475f, 8.81824f, 5.2763f, 8.05964f, 0.707107f);
8201 path.close();
8202 path.moveTo(7.45913f, 5.80839f);
8203 path.quadTo(7.85457f, 5.44696f, 8.26455f, 5.10214f);
8204 path.conicTo(9.02985f, 4.45847f, 9.67352f, 5.22377f, 0.707107f);
8205 path.conicTo(10.3172f, 5.98907f, 9.5519f, 6.63274f, 0.707107f);
8206 path.quadTo(9.17345f, 6.95105f, 8.80843f, 7.28467f);
8207 path.conicTo(8.07029f, 7.95931f, 7.39564f, 7.22117f, 0.707107f);
8208 path.conicTo(6.72099f, 6.48303f, 7.45913f, 5.80839f, 0.707107f);
8209 path.close();
8210 path.moveTo(9.98688f, 3.77251f);
8211 path.quadTo(10.4153f, 3.46948f, 10.8557f, 3.18397f);
8212 path.conicTo(11.6948f, 2.63996f, 12.2388f, 3.47904f, 0.707107f);
8213 path.conicTo(12.7828f, 4.31812f, 11.9437f, 4.86213f, 0.707107f);
8214 path.quadTo(11.5373f, 5.12566f, 11.1417f, 5.40539f);
8215 path.conicTo(10.3253f, 5.98282f, 9.74787f, 5.16638f, 0.707107f);
8216 path.conicTo(9.17044f, 4.34994f, 9.98688f, 3.77251f, 0.707107f);
8217 path.close();
8218 path.moveTo(12.6283f, 2.13208f);
8219 path.quadTo(13.0861f, 1.88442f, 13.5534f, 1.65529f);
8220 path.conicTo(14.4513f, 1.21504f, 14.8915f, 2.11291f, 0.707107f);
8221 path.conicTo(15.3318f, 3.01078f, 14.4339f, 3.45104f, 0.707107f);
8222 path.quadTo(14.0025f, 3.66255f, 13.58f, 3.89115f);
8223 path.conicTo(12.7005f, 4.36698f, 12.2246f, 3.48744f, 0.707107f);
8224 path.conicTo(11.7488f, 2.60791f, 12.6283f, 2.13208f, 0.707107f);
8225 path.close();
8226 path.moveTo(15.4718f, 0.808815f);
8227 path.quadTo(15.9627f, 0.615476f, 16.461f, 0.442208f);
8228 path.conicTo(17.4055f, 0.113784f, 17.7339f, 1.05831f, 0.707107f);
8229 path.conicTo(18.0624f, 2.00284f, 17.1178f, 2.33127f, 0.707107f);
8230 path.quadTo(16.6578f, 2.49121f, 16.2047f, 2.66968f);
8231 path.conicTo(15.2743f, 3.03614f, 14.9078f, 2.10571f, 0.707107f);
8232 path.conicTo(14.5414f, 1.17528f, 15.4718f, 0.808815f, 0.707107f);
8233 path.close();
8234 path.moveTo(18.4879f, -0.171272f);
8235 path.quadTo(19.0019f, -0.304236f, 19.5208f, -0.416111f);
8236 path.conicTo(20.4984f, -0.62685f, 20.7091f, 0.350692f, 0.707107f);
8237 path.conicTo(20.9198f, 1.32823f, 19.9423f, 1.53897f, 0.707107f);
8238 path.quadTo(19.4633f, 1.64224f, 18.9889f, 1.76498f);
8239 path.conicTo(18.0207f, 2.01544f, 17.7703f, 1.04732f, 0.707107f);
8240 path.conicTo(17.5198f, 0.0791926f, 18.4879f, -0.171272f, 0.707107f);
8241 path.close();
8242 path.moveTo(21.5882f, -0.77517f);
8243 path.quadTo(22.1056f, -0.843665f, 22.6254f, -0.891339f);
8244 path.conicTo(23.6212f, -0.982672f, 23.7126f, 0.0131486f, 0.707107f);
8245 path.conicTo(23.8039f, 1.00897f, 22.8081f, 1.1003f, 0.707107f);
8246 path.quadTo(22.3283f, 1.14431f, 21.8506f, 1.20754f);
8247 path.conicTo(20.8592f, 1.33876f, 20.728f, 0.347405f, 0.707107f);
8248 path.conicTo(20.5968f, -0.643948f, 21.5882f, -0.77517f, 0.707107f);
8249 path.close();
8250 path.moveTo(24.7026f, -0.998301f);
8251 path.quadTo(25.2241f, -1.00426f, 25.7453f, -0.989316f);
8252 path.conicTo(26.7449f, -0.960651f, 26.7162f, 0.0389383f, 0.707107f);
8253 path.conicTo(26.6876f, 1.03853f, 25.688f, 1.00986f, 0.707107f);
8254 path.quadTo(25.2068f, 0.996064f, 24.7255f, 1.00157f);
8255 path.conicTo(23.7256f, 1.013f, 23.7141f, 0.0130688f, 0.707107f);
8256 path.conicTo(23.7027f, -0.986866f, 24.7026f, -0.998301f, 0.707107f);
8257 path.close();
8258 path.moveTo(27.8388f, -0.844563f);
8259 path.quadTo(28.3559f, -0.787759f, 28.8704f, -0.710314f);
8260 path.conicTo(29.8592f, -0.561454f, 29.7104f, 0.427404f, 0.707107f);
8261 path.conicTo(29.5615f, 1.41626f, 28.5726f, 1.2674f, 0.707107f);
8262 path.quadTo(28.0978f, 1.19591f, 27.6204f, 1.14348f);
8263 path.conicTo(26.6264f, 1.0343f, 26.7356f, 0.0402742f, 0.707107f);
8264 path.conicTo(26.8447f, -0.953747f, 27.8388f, -0.844563f, 0.707107f);
8265 path.close();
8266 path.moveTo(30.9153f, -0.318153f);
8267 path.quadTo(31.4481f, -0.193671f, 31.9752f, -0.046875f);
8268 path.conicTo(32.9386f, 0.221405f, 32.6703f, 1.18475f, 0.707107f);
8269 path.conicTo(32.402f, 2.14809f, 31.4387f, 1.87981f, 0.707107f);
8270 path.quadTo(30.9521f, 1.74431f, 30.4603f, 1.6294f);
8271 path.conicTo(29.4865f, 1.40189f, 29.714f, 0.428111f, 0.707107f);
8272 path.conicTo(29.9416f, -0.545664f, 30.9153f, -0.318153f, 0.707107f);
8273 path.close();
8274 path.moveTo(34.0252f, 0.616677f);
8275 path.quadTo(34.5221f, 0.800609f, 35.0111f, 1.00465f);
8276 path.conicTo(35.934f, 1.3897f, 35.549f, 2.31259f, 0.707107f);
8277 path.conicTo(35.1639f, 3.23549f, 34.241f, 2.85044f, 0.707107f);
8278 path.quadTo(33.7896f, 2.66211f, 33.3309f, 2.49232f);
8279 path.conicTo(32.3931f, 2.1452f, 32.7402f, 1.20738f, 0.707107f);
8280 path.conicTo(33.0873f, 0.269559f, 34.0252f, 0.616677f, 0.707107f);
8281 path.close();
8282 path.moveTo(36.8967f, 1.88141f);
8283 path.quadTo(37.3499f, 2.11462f, 37.7936f, 2.3654f);
8284 path.conicTo(38.6641f, 2.85746f, 38.1721f, 3.72802f, 0.707107f);
8285 path.conicTo(37.68f, 4.59858f, 36.8094f, 4.10652f, 0.707107f);
8286 path.quadTo(36.3999f, 3.87504f, 35.9815f, 3.65976f);
8287 path.conicTo(35.0924f, 3.2022f, 35.5499f, 2.31302f, 0.707107f);
8288 path.conicTo(36.0075f, 1.42384f, 36.8967f, 1.88141f, 0.707107f);
8289 path.close();
8290 path.moveTo(39.4914f, 3.413f);
8291 path.lineTo(39.5381f, 3.44439f);
8292 path.quadTo(39.9244f, 3.70494f, 40.3002f, 3.97845f);
8293 path.conicTo(41.1087f, 4.56692f, 40.5202f, 5.37544f, 0.707107f);
8294 path.conicTo(39.9317f, 6.18396f, 39.1232f, 5.59549f, 0.707107f);
8295 path.quadTo(38.7763f, 5.34298f, 38.4215f, 5.10371f);
8296 path.lineTo(38.3749f, 5.07232f);
8297 path.conicTo(37.5452f, 4.51406f, 38.1035f, 3.68439f, 0.707107f);
8298 path.conicTo(38.6618f, 2.85473f, 39.4914f, 3.413f, 0.707107f);
8299 path.close();
8300 path.moveTo(41.8859f, 5.22965f);
8301 path.quadTo(42.2782f, 5.56471f, 42.6568f, 5.91499f);
8302 path.conicTo(43.3908f, 6.5941f, 42.7117f, 7.32814f, 0.707107f);
8303 path.conicTo(42.0326f, 8.06218f, 41.2986f, 7.38308f, 0.707107f);
8304 path.quadTo(40.949f, 7.05968f, 40.587f, 6.75043f);
8305 path.conicTo(39.8266f, 6.10097f, 40.476f, 5.34058f, 0.707107f);
8306 path.conicTo(41.1255f, 4.58018f, 41.8859f, 5.22965f, 0.707107f);
8307 path.close();
8308 path.moveTo(44.1413f, 7.40421f);
8309 path.quadTo(44.5035f, 7.79829f, 44.8493f, 8.20695f);
8310 path.conicTo(45.4952f, 8.97038f, 44.7317f, 9.61627f, 0.707107f);
8311 path.conicTo(43.9683f, 10.2622f, 43.3224f, 9.49874f, 0.707107f);
8312 path.quadTo(43.0033f, 9.1215f, 42.6689f, 8.75773f);
8313 path.conicTo(41.9921f, 8.02152f, 42.7283f, 7.34476f, 0.707107f);
8314 path.conicTo(43.4645f, 6.668f, 44.1413f, 7.40421f, 0.707107f);
8315 path.close();
8316 path.moveTo(46.183f, 9.9242f);
8317 path.quadTo(46.4888f, 10.3539f, 46.777f, 10.7957f);
8318 path.conicTo(47.3233f, 11.6332f, 46.4857f, 12.1796f, 0.707107f);
8319 path.conicTo(45.6482f, 12.7259f, 45.1018f, 11.8883f, 0.707107f);
8320 path.quadTo(44.8358f, 11.4805f, 44.5535f, 11.0839f);
8321 path.conicTo(43.9737f, 10.2691f, 44.7884f, 9.6893f, 0.707107f);
8322 path.conicTo(45.6032f, 9.10947f, 46.183f, 9.9242f, 0.707107f);
8323 path.close();
8324 path.moveTo(47.8333f, 12.5645f);
8325 path.quadTo(48.0821f, 13.0214f, 48.3125f, 13.4879f);
8326 path.conicTo(48.7552f, 14.3845f, 47.8586f, 14.8273f, 0.707107f);
8327 path.conicTo(46.962f, 15.2701f, 46.5192f, 14.3734f, 0.707107f);
8328 path.quadTo(46.3065f, 13.9428f, 46.0769f, 13.5211f);
8329 path.conicTo(45.5986f, 12.6429f, 46.4768f, 12.1646f, 0.707107f);
8330 path.conicTo(47.355f, 11.6863f, 47.8333f, 12.5645f, 0.707107f);
8331 path.close();
8332 path.moveTo(49.1641f, 15.4033f);
8333 path.quadTo(49.3588f, 15.8935f, 49.5334f, 16.3912f);
8334 path.conicTo(49.8645f, 17.3348f, 48.9209f, 17.6659f, 0.707107f);
8335 path.conicTo(47.9773f, 17.997f, 47.6462f, 17.0534f, 0.707107f);
8336 path.quadTo(47.485f, 16.5939f, 47.3053f, 16.1415f);
8337 path.conicTo(46.9362f, 15.2121f, 47.8656f, 14.843f, 0.707107f);
8338 path.conicTo(48.795f, 14.4739f, 49.1641f, 15.4033f, 0.707107f);
8339 path.close();
8340 path.moveTo(50.1526f, 18.4161f);
8341 path.quadTo(50.287f, 18.9296f, 50.4003f, 19.4482f);
8342 path.conicTo(50.6139f, 20.4252f, 49.6369f, 20.6387f, 0.707107f);
8343 path.conicTo(48.66f, 20.8522f, 48.4465f, 19.8753f, 0.707107f);
8344 path.quadTo(48.3419f, 19.3966f, 48.2178f, 18.9225f);
8345 path.conicTo(47.9645f, 17.9551f, 48.9319f, 17.7019f, 0.707107f);
8346 path.conicTo(49.8993f, 17.4487f, 50.1526f, 18.4161f, 0.707107f);
8347 path.close();
8348 path.moveTo(50.7655f, 21.5157f);
8349 path.quadTo(50.8354f, 22.033f, 50.8846f, 22.5528f);
8350 path.conicTo(50.9787f, 23.5483f, 49.9831f, 23.6425f, 0.707107f);
8351 path.conicTo(48.9876f, 23.7366f, 48.8935f, 22.741f, 0.707107f);
8352 path.quadTo(48.8481f, 22.2613f, 48.7835f, 21.7837f);
8353 path.conicTo(48.6495f, 20.7928f, 49.6405f, 20.6587f, 0.707107f);
8354 path.conicTo(50.6315f, 20.5247f, 50.7655f, 21.5157f, 0.707107f);
8355 path.close();
8356 path.moveTo(50.9974f, 24.6301f);
8357 path.quadTo(51.0048f, 25.1509f, 50.9913f, 25.6715f);
8358 path.conicTo(50.9655f, 26.6712f, 49.9658f, 26.6454f, 0.707107f);
8359 path.conicTo(48.9662f, 26.6196f, 48.992f, 25.6199f, 0.707107f);
8360 path.quadTo(49.0044f, 25.1393f, 48.9976f, 24.6585f);
8361 path.conicTo(48.9834f, 23.6586f, 49.9833f, 23.6444f, 0.707107f);
8362 path.conicTo(50.9832f, 23.6302f, 50.9974f, 24.6301f, 0.707107f);
8363 path.close();
8364 path.moveTo(50.8524f, 27.7662f);
8365 path.quadTo(50.7971f, 28.2837f, 50.721f, 28.7986f);
8366 path.conicTo(50.5749f, 29.7879f, 49.5856f, 29.6418f, 0.707107f);
8367 path.conicTo(48.5963f, 29.4957f, 48.7425f, 28.5064f, 0.707107f);
8368 path.quadTo(48.8127f, 28.0311f, 48.8638f, 27.5534f);
8369 path.conicTo(48.9702f, 26.5591f, 49.9645f, 26.6655f, 0.707107f);
8370 path.conicTo(50.9588f, 26.7718f, 50.8524f, 27.7662f, 0.707107f);
8371 path.close();
8372 path.moveTo(50.3355f, 30.8404f);
8373 path.quadTo(50.2125f, 31.3739f, 50.0672f, 31.9018f);
8374 path.conicTo(49.8018f, 32.8659f, 48.8376f, 32.6005f, 0.707107f);
8375 path.conicTo(47.8735f, 32.335f, 48.139f, 31.3709f, 0.707107f);
8376 path.quadTo(48.2731f, 30.8836f, 48.3867f, 30.3912f);
8377 path.conicTo(48.6113f, 29.4167f, 49.5857f, 29.6413f, 0.707107f);
8378 path.conicTo(50.5602f, 29.866f, 50.3355f, 30.8404f, 0.707107f);
8379 path.close();
8380 path.moveTo(49.4091f, 33.9552f);
8381 path.quadTo(49.2264f, 34.4531f, 49.0236f, 34.9431f);
8382 path.conicTo(48.6412f, 35.8671f, 47.7172f, 35.4846f, 0.707107f);
8383 path.conicTo(46.7932f, 35.1022f, 47.1757f, 34.1782f, 0.707107f);
8384 path.quadTo(47.3629f, 33.7259f, 47.5315f, 33.2663f);
8385 path.conicTo(47.8759f, 32.3275f, 48.8147f, 32.672f, 0.707107f);
8386 path.conicTo(49.7535f, 33.0164f, 49.4091f, 33.9552f, 0.707107f);
8387 path.close();
8388 path.moveTo(48.1514f, 36.8328f);
8389 path.quadTo(47.9191f, 37.2871f, 47.6694f, 37.7318f);
8390 path.conicTo(47.1797f, 38.6038f, 46.3078f, 38.1141f, 0.707107f);
8391 path.conicTo(45.4359f, 37.6244f, 45.9256f, 36.7525f, 0.707107f);
8392 path.quadTo(46.1562f, 36.3418f, 46.3705f, 35.9226f);
8393 path.conicTo(46.8256f, 35.0321f, 47.716f, 35.4872f, 0.707107f);
8394 path.conicTo(48.6065f, 35.9423f, 48.1514f, 36.8328f, 0.707107f);
8395 path.close();
8396 path.moveTo(46.6245f, 39.4354f);
8397 path.lineTo(46.5563f, 39.537f);
8398 path.quadTo(46.3146f, 39.8955f, 46.0624f, 40.2438f);
8399 path.conicTo(45.4761f, 41.0539f, 44.666f, 40.4676f, 0.707107f);
8400 path.conicTo(43.8559f, 39.8813f, 44.4422f, 39.0712f, 0.707107f);
8401 path.quadTo(44.6749f, 38.7498f, 44.8955f, 38.4226f);
8402 path.lineTo(44.9637f, 38.3211f);
8403 path.conicTo(45.5209f, 37.4907f, 46.3513f, 38.0479f, 0.707107f);
8404 path.conicTo(47.1817f, 38.605f, 46.6245f, 39.4354f, 0.707107f);
8405 path.close();
8406 path.moveTo(44.8168f, 41.8314f);
8407 path.quadTo(44.4832f, 42.2241f, 44.1342f, 42.6034f);
8408 path.conicTo(43.4572f, 43.3394f, 42.7212f, 42.6623f, 0.707107f);
8409 path.conicTo(41.9853f, 41.9853f, 42.6623f, 41.2494f, 0.707107f);
8410 path.quadTo(42.9845f, 40.8992f, 43.2924f, 40.5366f);
8411 path.conicTo(43.9398f, 39.7745f, 44.702f, 40.4218f, 0.707107f);
8412 path.conicTo(45.4642f, 41.0692f, 44.8168f, 41.8314f, 0.707107f);
8413 path.close();
8414 path.moveTo(42.6505f, 44.0908f);
8415 path.quadTo(42.2577f, 44.454f, 41.8504f, 44.8006f);
8416 path.conicTo(41.0888f, 45.4487f, 40.4408f, 44.6871f, 0.707107f);
8417 path.conicTo(39.7927f, 43.9256f, 40.5542f, 43.2775f, 0.707107f);
8418 path.quadTo(40.9302f, 42.9575f, 41.2928f, 42.6223f);
8419 path.conicTo(42.027f, 41.9434f, 42.7059f, 42.6777f, 0.707107f);
8420 path.conicTo(43.3848f, 43.412f, 42.6505f, 44.0908f, 0.707107f);
8421 path.close();
8422 path.moveTo(40.1383f, 46.1384f);
8423 path.quadTo(39.7073f, 46.4471f, 39.2641f, 46.7378f);
8424 path.conicTo(38.4281f, 47.2865f, 37.8795f, 46.4504f, 0.707107f);
8425 path.conicTo(37.3308f, 45.6143f, 38.1669f, 45.0657f, 0.707107f);
8426 path.quadTo(38.576f, 44.7972f, 38.9738f, 44.5124f);
8427 path.conicTo(39.7868f, 43.9301f, 40.369f, 44.7432f, 0.707107f);
8428 path.conicTo(40.9513f, 45.5562f, 40.1383f, 46.1384f, 0.707107f);
8429 path.close();
8430 path.moveTo(37.4991f, 47.7985f);
8431 path.quadTo(37.0431f, 48.0485f, 36.5775f, 48.2801f);
8432 path.conicTo(35.6821f, 48.7254f, 35.2368f, 47.83f, 0.707107f);
8433 path.conicTo(34.7915f, 46.9346f, 35.6869f, 46.4893f, 0.707107f);
8434 path.quadTo(36.1167f, 46.2755f, 36.5376f, 46.0448f);
8435 path.conicTo(37.4145f, 45.5641f, 37.8952f, 46.4409f, 0.707107f);
8436 path.conicTo(38.376f, 47.3178f, 37.4991f, 47.7985f, 0.707107f);
8437 path.close();
8438 path.moveTo(34.6651f, 49.1368f);
8439 path.quadTo(34.1756f, 49.3328f, 33.6785f, 49.5089f);
8440 path.conicTo(32.7358f, 49.8427f, 32.402f, 48.9f, 0.707107f);
8441 path.conicTo(32.0682f, 47.9574f, 33.0109f, 47.6236f, 0.707107f);
8442 path.quadTo(33.4697f, 47.4611f, 33.9216f, 47.2801f);
8443 path.conicTo(34.85f, 46.9084f, 35.2217f, 47.8368f, 0.707107f);
8444 path.conicTo(35.5934f, 48.7651f, 34.6651f, 49.1368f, 0.707107f);
8445 path.close();
8446 path.moveTo(31.6557f, 50.1337f);
8447 path.quadTo(31.1425f, 50.2696f, 30.6243f, 50.3844f);
8448 path.conicTo(29.648f, 50.6007f, 29.4317f, 49.6244f, 0.707107f);
8449 path.conicTo(29.2153f, 48.6481f, 30.1917f, 48.4317f, 0.707107f);
8450 path.quadTo(30.6701f, 48.3257f, 31.1437f, 48.2003f);
8451 path.conicTo(32.1104f, 47.9443f, 32.3664f, 48.911f, 0.707107f);
8452 path.conicTo(32.6223f, 49.8777f, 31.6557f, 50.1337f, 0.707107f);
8453 path.close();
8454 path.moveTo(28.5567f, 50.7556f);
8455 path.quadTo(28.0395f, 50.827f, 27.5198f, 50.8776f);
8456 path.conicTo(26.5245f, 50.9745f, 26.4276f, 49.9792f, 0.707107f);
8457 path.conicTo(26.3307f, 48.9839f, 27.326f, 48.887f, 0.707107f);
8458 path.quadTo(27.8056f, 48.8403f, 28.2831f, 48.7744f);
8459 path.conicTo(29.2737f, 48.6376f, 29.4105f, 49.6282f, 0.707107f);
8460 path.conicTo(29.5473f, 50.6188f, 28.5567f, 50.7556f, 0.707107f);
8461 path.close();
8462 path.moveTo(25.4424f, 50.9962f);
8463 path.quadTo(24.9222f, 51.0051f, 24.4022f, 50.9931f);
8464 path.conicTo(23.4025f, 50.9701f, 23.4255f, 49.9704f, 0.707107f);
8465 path.conicTo(23.4485f, 48.9707f, 24.4482f, 48.9937f, 0.707107f);
8466 path.quadTo(24.9283f, 49.0047f, 25.4084f, 48.9965f);
8467 path.conicTo(26.4083f, 48.9795f, 26.4253f, 49.9794f, 0.707107f);
8468 path.conicTo(26.4423f, 50.9792f, 25.4424f, 50.9962f, 0.707107f);
8469 path.close();
8470 path.moveTo(22.3065f, 50.8601f);
8471 path.quadTo(21.7885f, 50.8062f, 21.2732f, 50.7315f);
8472 path.conicTo(20.2835f, 50.5882f, 20.4268f, 49.5985f, 0.707107f);
8473 path.conicTo(20.5702f, 48.6088f, 21.5599f, 48.7522f, 0.707107f);
8474 path.quadTo(22.0355f, 48.8211f, 22.5136f, 48.8709f);
8475 path.conicTo(23.5083f, 48.9745f, 23.4047f, 49.9691f, 0.707107f);
8476 path.conicTo(23.3011f, 50.9637f, 22.3065f, 50.8601f, 0.707107f);
8477 path.close();
8478 path.moveTo(19.2346f, 50.3527f);
8479 path.quadTo(18.7003f, 50.2312f, 18.1717f, 50.0873f);
8480 path.conicTo(17.2068f, 49.8247f, 17.4694f, 48.8598f, 0.707107f);
8481 path.conicTo(17.732f, 47.8949f, 18.6969f, 48.1575f, 0.707107f);
8482 path.quadTo(19.185f, 48.2904f, 19.6781f, 48.4025f);
8483 path.conicTo(20.6532f, 48.6243f, 20.4314f, 49.5994f, 0.707107f);
8484 path.conicTo(20.2097f, 50.5745f, 19.2346f, 50.3527f, 0.707107f);
8485 path.close();
8486 path.moveTo(16.1149f, 49.4347f);
8487 path.quadTo(15.6161f, 49.2533f, 15.1251f, 49.0517f);
8488 path.conicTo(14.2f, 48.6719f, 14.5798f, 47.7469f, 0.707107f);
8489 path.conicTo(14.9596f, 46.8218f, 15.8847f, 47.2016f, 0.707107f);
8490 path.quadTo(16.3379f, 47.3877f, 16.7984f, 47.5551f);
8491 path.conicTo(17.7382f, 47.8969f, 17.3964f, 48.8366f, 0.707107f);
8492 path.conicTo(17.0547f, 49.7764f, 16.1149f, 49.4347f, 0.707107f);
8493 path.close();
8494 path.moveTo(13.2313f, 48.184f);
8495 path.quadTo(12.776f, 47.9529f, 12.33f, 47.704f);
8496 path.conicTo(11.4568f, 47.2167f, 11.9441f, 46.3434f, 0.707107f);
8497 path.conicTo(12.4314f, 45.4702f, 13.3046f, 45.9575f, 0.707107f);
8498 path.quadTo(13.7162f, 46.1872f, 14.1365f, 46.4006f);
8499 path.conicTo(15.0282f, 46.8532f, 14.5756f, 47.7449f, 0.707107f);
8500 path.conicTo(14.123f, 48.6366f, 13.2313f, 48.184f, 0.707107f);
8501 path.close();
8502 path.moveTo(10.6208f, 46.6619f);
8503 path.lineTo(10.4641f, 46.5571f);
8504 path.quadTo(10.1333f, 46.334f, 9.81253f, 46.1031f);
8505 path.conicTo(9.00087f, 45.519f, 9.585f, 44.7073f, 0.707107f);
8506 path.conicTo(10.1691f, 43.8957f, 10.9808f, 44.4798f, 0.707107f);
8507 path.quadTo(11.2769f, 44.6929f, 11.5763f, 44.8948f);
8508 path.lineTo(11.7329f, 44.9996f);
8509 path.conicTo(12.564f, 45.5557f, 12.008f, 46.3868f, 0.707107f);
8510 path.conicTo(11.4519f, 47.2179f, 10.6208f, 46.6619f, 0.707107f);
8511 path.close();
8512 path.moveTo(8.22326f, 44.8631f);
8513 path.quadTo(7.82986f, 44.5308f, 7.44999f, 44.1833f);
8514 path.conicTo(6.71217f, 43.5082f, 7.38718f, 42.7704f, 0.707107f);
8515 path.conicTo(8.06219f, 42.0326f, 8.8f, 42.7076f, 0.707107f);
8516 path.quadTo(9.15066f, 43.0284f, 9.51375f, 43.3351f);
8517 path.conicTo(10.2777f, 43.9804f, 9.63248f, 44.7443f, 0.707107f);
8518 path.conicTo(8.98724f, 45.5083f, 8.22326f, 44.8631f, 0.707107f);
8519 path.close();
8520 path.moveTo(5.95972f, 42.705f);
8521 path.quadTo(5.59577f, 42.3136f, 5.24823f, 41.9076f);
8522 path.conicTo(4.59793f, 41.148f, 5.3576f, 40.4977f, 0.707107f);
8523 path.conicTo(6.11728f, 39.8473f, 6.76758f, 40.607f, 0.707107f);
8524 path.quadTo(7.08843f, 40.9818f, 7.42436f, 41.3431f);
8525 path.conicTo(8.10532f, 42.0754f, 7.373f, 42.7564f, 0.707107f);
8526 path.conicTo(6.64068f, 43.4373f, 5.95972f, 42.705f, 0.707107f);
8527 path.close();
8528 path.moveTo(3.90635f, 40.2006f);
8529 path.quadTo(3.59492f, 39.7684f, 3.30147f, 39.3239f);
8530 path.conicTo(2.75055f, 38.4893f, 3.58511f, 37.9384f, 0.707107f);
8531 path.conicTo(4.41967f, 37.3875f, 4.97059f, 38.222f, 0.707107f);
8532 path.quadTo(5.24148f, 38.6324f, 5.52894f, 39.0313f);
8533 path.conicTo(6.11358f, 39.8426f, 5.30228f, 40.4272f, 0.707107f);
8534 path.conicTo(4.49099f, 41.0119f, 3.90635f, 40.2006f, 0.707107f);
8535 path.close();
8536 path.moveTo(2.23643f, 37.5626f);
8537 path.quadTo(1.98525f, 37.1075f, 1.75248f, 36.6427f);
8538 path.conicTo(1.30469f, 35.7486f, 2.19883f, 35.3008f, 0.707107f);
8539 path.conicTo(3.09296f, 34.853f, 3.54076f, 35.7471f, 0.707107f);
8540 path.quadTo(3.75563f, 36.1762f, 3.98747f, 36.5963f);
8541 path.conicTo(4.47065f, 37.4718f, 3.59513f, 37.955f, 0.707107f);
8542 path.conicTo(2.71961f, 38.4382f, 2.23643f, 37.5626f, 0.707107f);
8543 path.close();
8544 path.moveTo(0.890647f, 34.7334f);
8545 path.quadTo(0.69328f, 34.2445f, 0.515902f, 33.7481f);
8546 path.conicTo(0.179435f, 32.8064f, 1.12113f, 32.4699f, 0.707107f);
8547 path.conicTo(2.06282f, 32.1335f, 2.39929f, 33.0752f, 0.707107f);
8548 path.quadTo(2.56303f, 33.5334f, 2.74521f, 33.9847f);
8549 path.conicTo(3.11957f, 34.912f, 2.19229f, 35.2863f, 0.707107f);
8550 path.conicTo(1.26501f, 35.6607f, 0.890647f, 34.7334f, 0.707107f);
8551 path.close();
8552 path.moveTo(-0.114587f, 31.7274f);
8553 path.quadTo(-0.251922f, 31.2147f, -0.368218f, 30.6968f);
8554 path.conicTo(-0.587327f, 29.7211f, 0.388373f, 29.502f, 0.707107f);
8555 path.conicTo(1.36407f, 29.2829f, 1.58318f, 30.2586f, 0.707107f);
8556 path.quadTo(1.69053f, 30.7366f, 1.8173f, 31.2099f);
8557 path.conicTo(2.07605f, 32.1758f, 1.1101f, 32.4346f, 0.707107f);
8558 path.conicTo(0.144159f, 32.6933f, -0.114587f, 31.7274f, 0.707107f);
8559 path.close();
8560 path.moveTo(-0.745485f, 28.6291f);
8561 path.quadTo(-0.818367f, 28.112f, -0.870432f, 27.5925f);
8562 path.conicTo(-0.970142f, 26.5974f, 0.0248742f, 26.4977f, 0.707107f);
8563 path.conicTo(1.01989f, 26.398f, 1.1196f, 27.393f, 0.707107f);
8564 path.quadTo(1.16766f, 27.8726f, 1.23494f, 28.3499f);
8565 path.conicTo(1.37452f, 29.3401f, 0.384305f, 29.4797f, 0.707107f);
8566 path.conicTo(-0.605905f, 29.6193f, -0.745485f, 28.6291f, 0.707107f);
8567 path.close();
8568 path.moveTo(-0.994901f, 25.515f);
8569 path.quadTo(-1.00519f, 24.9955f, -0.994722f, 24.4761f);
8570 path.conicTo(-0.97457f, 23.4763f, 0.0252273f, 23.4964f, 0.707107f);
8571 path.conicTo(1.02502f, 23.5166f, 1.00487f, 24.5164f, 0.707107f);
8572 path.quadTo(0.995207f, 24.9959f, 1.00471f, 25.4754f);
8573 path.conicTo(1.02451f, 26.4752f, 0.0247103f, 26.495f, 0.707107f);
8574 path.conicTo(-0.975093f, 26.5148f, -0.994901f, 25.515f, 0.707107f);
8575 path.close();
8576 path.moveTo(-0.867571f, 22.3792f);
8577 path.quadTo(-0.81506f, 21.8609f, -0.741825f, 21.3451f);
8578 path.conicTo(-0.60125f, 20.355f, 0.38882f, 20.4956f, 0.707107f);
8579 path.conicTo(1.37889f, 20.6361f, 1.23831f, 21.6262f, 0.707107f);
8580 path.quadTo(1.17071f, 22.1023f, 1.12224f, 22.5807f);
8581 path.conicTo(1.02144f, 23.5757f, 0.026537f, 23.4749f, 0.707107f);
8582 path.conicTo(-0.96837f, 23.3741f, -0.867571f, 22.3792f, 0.707107f);
8583 path.close();
8584 path.moveTo(-0.369678f, 19.3097f);
8585 path.quadTo(-0.249693f, 18.7748f, -0.107265f, 18.2453f);
8586 path.conicTo(0.152529f, 17.2797f, 1.11819f, 17.5395f, 0.707107f);
8587 path.conicTo(2.08386f, 17.7993f, 1.82406f, 18.7649f, 0.707107f);
8588 path.quadTo(1.69259f, 19.2536f, 1.58184f, 19.7474f);
8589 path.conicTo(1.36298f, 20.7232f, 0.387221f, 20.5043f, 0.707107f);
8590 path.conicTo(-0.588536f, 20.2855f, -0.369678f, 19.3097f, 0.707107f);
8591 path.close();
8592 path.moveTo(0.539863f, 16.1851f);
8593 path.quadTo(0.719962f, 15.6854f, 0.920307f, 15.1934f);
8594 path.conicTo(1.29748f, 14.2673f, 2.22362f, 14.6445f, 0.707107f);
8595 path.conicTo(3.14976f, 15.0216f, 2.7726f, 15.9478f, 0.707107f);
8596 path.quadTo(2.58765f, 16.4019f, 2.42141f, 16.8632f);
8597 path.conicTo(2.08237f, 17.804f, 1.1416f, 17.4649f, 0.707107f);
8598 path.conicTo(0.200823f, 17.1259f, 0.539863f, 16.1851f, 0.707107f);
8599 path.close();
8600 path.moveTo(1.78353f, 13.2955f);
8601 path.quadTo(2.01364f, 12.8391f, 2.26151f, 12.392f);
8602 path.conicTo(2.74643f, 11.5175f, 3.62099f, 12.0024f, 0.707107f);
8603 path.conicTo(4.49555f, 12.4873f, 4.01063f, 13.3618f, 0.707107f);
8604 path.quadTo(3.78183f, 13.7745f, 3.56941f, 14.1958f);
8605 path.conicTo(3.11923f, 15.0888f, 2.22629f, 14.6386f, 0.707107f);
8606 path.conicTo(1.33336f, 14.1884f, 1.78353f, 13.2955f, 0.707107f);
8607 path.close();
8608 path.moveTo(3.30083f, 10.6771f);
8609 path.lineTo(3.44218f, 10.4652f);
8610 path.quadTo(3.6466f, 10.1621f, 3.85641f, 9.86895f);
8611 path.conicTo(4.43837f, 9.05574f, 5.25159f, 9.6377f, 0.707107f);
8612 path.conicTo(6.0648f, 10.2197f, 5.48284f, 11.0329f, 0.707107f);
8613 path.quadTo(5.28917f, 11.3035f, 5.10592f, 11.5752f);
8614 path.lineTo(4.96457f, 11.787f);
8615 path.conicTo(4.4096f, 12.6189f, 3.57773f, 12.0639f, 0.707107f);
8616 path.conicTo(2.74586f, 11.509f, 3.30083f, 10.6771f, 0.707107f);
8617 path.close();
8618 path.moveTo(5.0909f, 8.27793f);
8619 path.quadTo(5.42174f, 7.88403f, 5.76791f, 7.50353f);
8620 path.conicTo(6.44085f, 6.76383f, 7.18054f, 7.43678f, 0.707107f);
8621 path.conicTo(7.92024f, 8.10972f, 7.24729f, 8.84942f, 0.707107f);
8622 path.quadTo(6.92775f, 9.20065f, 6.62237f, 9.56424f);
8623 path.conicTo(5.97921f, 10.33f, 5.21348f, 9.68682f, 0.707107f);
8624 path.conicTo(4.44774f, 9.04367f, 5.0909f, 8.27793f, 0.707107f);
8625 path.close();
8626 path.moveTo(7.24064f, 6.0104f);
8627 path.quadTo(7.63069f, 5.64561f, 8.03537f, 5.29717f);
8628 path.conicTo(8.79318f, 4.64469f, 9.44566f, 5.40249f, 0.707107f);
8629 path.conicTo(10.0981f, 6.16029f, 9.34034f, 6.81278f, 0.707107f);
8630 path.quadTo(8.96678f, 7.13442f, 8.60675f, 7.47113f);
8631 path.conicTo(7.87638f, 8.15419f, 7.19332f, 7.42382f, 0.707107f);
8632 path.conicTo(6.51027f, 6.69345f, 7.24064f, 6.0104f, 0.707107f);
8633 path.close();
8634 path.moveTo(9.73726f, 3.95128f);
8635 path.quadTo(10.1706f, 3.63704f, 10.6165f, 3.34092f);
8636 path.conicTo(11.4496f, 2.78771f, 12.0028f, 3.62075f, 0.707107f);
8637 path.conicTo(12.556f, 4.4538f, 11.7229f, 5.007f, 0.707107f);
8638 path.quadTo(11.3113f, 5.28035f, 10.9113f, 5.57041f);
8639 path.conicTo(10.1018f, 6.15744f, 9.51472f, 5.34787f, 0.707107f);
8640 path.conicTo(8.92769f, 4.53831f, 9.73726f, 3.95128f, 0.707107f);
8641 path.close();
8642 path.moveTo(12.374f, 2.27153f);
8643 path.quadTo(12.8282f, 2.01921f, 13.2921f, 1.78522f);
8644 path.conicTo(14.185f, 1.33492f, 14.6353f, 2.22779f, 0.707107f);
8645 path.conicTo(15.0856f, 3.12067f, 14.1927f, 3.57097f, 0.707107f);
8646 path.quadTo(13.7645f, 3.78696f, 13.3452f, 4.01988f);
8647 path.conicTo(12.471f, 4.5055f, 11.9854f, 3.63132f, 0.707107f);
8648 path.conicTo(11.4998f, 2.75715f, 12.374f, 2.27153f, 0.707107f);
8649 path.close();
8650 path.moveTo(15.1984f, 0.918296f);
8651 path.quadTo(15.6866f, 0.719602f, 16.1824f, 0.540851f);
8652 path.conicTo(17.1231f, 0.20171f, 17.4623f, 1.14245f, 0.707107f);
8653 path.conicTo(17.8014f, 2.08318f, 16.8607f, 2.42232f, 0.707107f);
8654 path.quadTo(16.403f, 2.58733f, 15.9524f, 2.77074f);
8655 path.conicTo(15.0261f, 3.14772f, 14.6492f, 2.2215f, 0.707107f);
8656 path.conicTo(14.2722f, 1.29528f, 15.1984f, 0.918296f, 0.707107f);
8657 path.close();
8658 path.moveTo(18.201f, -0.0952874f);
8659 path.quadTo(18.7132f, -0.234075f, 19.2308f, -0.351842f);
8660 path.conicTo(20.2058f, -0.573734f, 20.4277f, 0.401338f, 0.707107f);
8661 path.conicTo(20.6496f, 1.37641f, 19.6745f, 1.5983f, 0.707107f);
8662 path.quadTo(19.1968f, 1.70701f, 18.724f, 1.83512f);
8663 path.conicTo(17.7588f, 2.09662f, 17.4973f, 1.13142f, 0.707107f);
8664 path.conicTo(17.2358f, 0.166216f, 18.201f, -0.0952874f, 0.707107f);
8665 path.close();
8666 path.moveTo(21.2986f, -0.73518f);
8667 path.quadTo(21.8155f, -0.809526f, 22.3349f, -0.863052f);
8668 path.conicTo(23.3297f, -0.965552f, 23.4322f, 0.029181f, 0.707107f);
8669 path.conicTo(23.5347f, 1.02391f, 22.5399f, 1.12641f, 0.707107f);
8670 path.quadTo(22.0604f, 1.17582f, 21.5833f, 1.24445f);
8671 path.conicTo(20.5935f, 1.38681f, 20.4511f, 0.397f, 0.707107f);
8672 path.conicTo(20.3088f, -0.592814f, 21.2986f, -0.73518f, 0.707107f);
8673 path.close();
8674 path.moveTo(24.4124f, -0.993361f);
8675 path.quadTo(24.9312f, -1.00509f, 25.4501f, -0.996107f);
8676 path.conicTo(26.4499f, -0.978799f, 26.4326f, 0.0210512f, 0.707107f);
8677 path.conicTo(26.4153f, 1.0209f, 25.4155f, 1.00359f, 0.707107f);
8678 path.quadTo(24.9365f, 0.995302f, 24.4576f, 1.00613f);
8679 path.conicTo(23.4578f, 1.02873f, 23.4352f, 0.0289853f, 0.707107f);
8680 path.conicTo(23.4126f, -0.970759f, 24.4124f, -0.993361f, 0.707107f);
8681 path.close();
8682 path.moveTo(27.5481f, -0.87484f);
8683 path.quadTo(28.0668f, -0.823762f, 28.583f, -0.75194f);
8684 path.conicTo(29.5734f, -0.614138f, 29.4356f, 0.376322f, 0.707107f);
8685 path.conicTo(29.2978f, 1.36678f, 28.3074f, 1.22898f, 0.707107f);
8686 path.quadTo(27.8309f, 1.16268f, 27.3521f, 1.11553f);
8687 path.conicTo(26.3569f, 1.01753f, 26.4549f, 0.0223428f, 0.707107f);
8688 path.conicTo(26.5529f, -0.972843f, 27.5481f, -0.87484f, 0.707107f);
8689 path.close();
8690 path.moveTo(30.6151f, -0.386432f);
8691 path.quadTo(31.1507f, -0.267954f, 31.6809f, -0.126991f);
8692 path.conicTo(32.6473f, 0.129965f, 32.3904f, 1.09639f, 0.707107f);
8693 path.conicTo(32.1334f, 2.06281f, 31.167f, 1.80585f, 0.707107f);
8694 path.quadTo(30.6776f, 1.67574f, 30.1832f, 1.56637f);
8695 path.conicTo(29.2068f, 1.35041f, 29.4227f, 0.374005f, 0.707107f);
8696 path.conicTo(29.6387f, -0.602396f, 30.6151f, -0.386432f, 0.707107f);
8697 path.close();
8698 path.moveTo(33.7445f, 0.514616f);
8699 path.quadTo(34.2452f, 0.693421f, 34.7381f, 0.892536f);
8700 path.conicTo(35.6653f, 1.26708f, 35.2908f, 2.19429f, 0.707107f);
8701 path.conicTo(34.9162f, 3.1215f, 33.989f, 2.74696f, 0.707107f);
8702 path.quadTo(33.534f, 2.56316f, 33.0718f, 2.3981f);
8703 path.conicTo(32.1301f, 2.06177f, 32.4664f, 1.12003f, 0.707107f);
8704 path.conicTo(32.8027f, 0.178285f, 33.7445f, 0.514616f, 0.707107f);
8705 path.close();
8706 path.moveTo(36.6402f, 1.7512f);
8707 path.quadTo(37.0977f, 1.98026f, 37.5458f, 2.22715f);
8708 path.conicTo(38.4217f, 2.70968f, 37.9392f, 3.58556f, 0.707107f);
8709 path.conicTo(37.4566f, 4.46144f, 36.5808f, 3.97891f, 0.707107f);
8710 path.quadTo(36.1671f, 3.75102f, 35.7448f, 3.53956f);
8711 path.conicTo(34.8506f, 3.09185f, 35.2983f, 2.19767f, 0.707107f);
8712 path.conicTo(35.746f, 1.30349f, 36.6402f, 1.7512f, 0.707107f);
8713 path.close();
8714 path.moveTo(39.2611f, 3.26012f);
8715 path.quadTo(39.4005f, 3.35159f, 39.539f, 3.44501f);
8716 path.quadTo(39.8091f, 3.62717f, 40.0746f, 3.81611f);
8717 path.conicTo(40.8893f, 4.3959f, 40.3096f, 5.21067f, 0.707107f);
8718 path.conicTo(39.7298f, 6.02543f, 38.915f, 5.44564f, 0.707107f);
8719 path.quadTo(38.67f, 5.2713f, 38.4206f, 5.10309f);
8720 path.quadTo(38.293f, 5.017f, 38.164f, 4.9324f);
8721 path.conicTo(37.3279f, 4.38388f, 37.8764f, 3.54775f, 0.707107f);
8722 path.conicTo(38.4249f, 2.71161f, 39.2611f, 3.26012f, 0.707107f);
8723 path.close();
8724 path.moveTo(41.6673f, 5.04503f);
8725 path.quadTo(42.0618f, 5.37449f, 42.4428f, 5.71927f);
8726 path.conicTo(43.1844f, 6.39015f, 42.5135f, 7.13171f, 0.707107f);
8727 path.conicTo(41.8426f, 7.87327f, 41.1011f, 7.20239f, 0.707107f);
8728 path.quadTo(40.7493f, 6.88414f, 40.3852f, 6.58004f);
8729 path.conicTo(39.6177f, 5.93899f, 40.2588f, 5.17149f, 0.707107f);
8730 path.conicTo(40.8998f, 4.40399f, 41.6673f, 5.04503f, 0.707107f);
8731 path.close();
8732 path.moveTo(43.9388f, 7.1865f);
8733 path.quadTo(44.3044f, 7.57519f, 44.6538f, 7.97856f);
8734 path.conicTo(45.3084f, 8.73448f, 44.5525f, 9.38914f, 0.707107f);
8735 path.conicTo(43.7966f, 10.0438f, 43.1419f, 9.28789f, 0.707107f);
8736 path.quadTo(42.8195f, 8.91555f, 42.482f, 8.55677f);
8737 path.conicTo(41.7969f, 7.82836f, 42.5253f, 7.14322f, 0.707107f);
8738 path.conicTo(43.2537f, 6.45808f, 43.9388f, 7.1865f, 0.707107f);
8739 path.close();
8740 path.moveTo(46.0036f, 9.6753f);
8741 path.quadTo(46.3207f, 10.1098f, 46.6195f, 10.5571f);
8742 path.conicTo(47.175f, 11.3886f, 46.3435f, 11.9441f, 0.707107f);
8743 path.conicTo(45.5119f, 12.4996f, 44.9564f, 11.6681f, 0.707107f);
8744 path.quadTo(44.6806f, 11.2552f, 44.388f, 10.8541f);
8745 path.conicTo(43.7986f, 10.0463f, 44.6064f, 9.45688f, 0.707107f);
8746 path.conicTo(45.4142f, 8.86747f, 46.0036f, 9.6753f, 0.707107f);
8747 path.close();
8748 path.moveTo(47.6932f, 12.3107f);
8749 path.quadTo(47.9467f, 12.764f, 48.1819f, 13.2271f);
8750 path.conicTo(48.6347f, 14.1187f, 47.7431f, 14.5715f, 0.707107f);
8751 path.conicTo(46.8514f, 15.0243f, 46.3986f, 14.1327f, 0.707107f);
8752 path.quadTo(46.1816f, 13.7053f, 45.9476f, 13.2868f);
8753 path.conicTo(45.4595f, 12.414f, 46.3323f, 11.9259f, 0.707107f);
8754 path.conicTo(47.2051f, 11.4379f, 47.6932f, 12.3107f, 0.707107f);
8755 path.close();
8756 path.moveTo(49.0539f, 15.1303f);
8757 path.quadTo(49.2539f, 15.6178f, 49.434f, 16.113f);
8758 path.conicTo(49.7758f, 17.0527f, 48.836f, 17.3946f, 0.707107f);
8759 path.conicTo(47.8963f, 17.7364f, 47.5545f, 16.7966f, 0.707107f);
8760 path.quadTo(47.3882f, 16.3395f, 47.2036f, 15.8895f);
8761 path.conicTo(46.824f, 14.9643f, 47.7491f, 14.5847f, 0.707107f);
8762 path.conicTo(48.6743f, 14.2051f, 49.0539f, 15.1303f, 0.707107f);
8763 path.close();
8764 path.moveTo(50.0758f, 18.1294f);
8765 path.quadTo(50.216f, 18.6412f, 50.3352f, 19.1584f);
8766 path.conicTo(50.5599f, 20.1328f, 49.5855f, 20.3575f, 0.707107f);
8767 path.conicTo(48.6111f, 20.5821f, 48.3864f, 19.6077f, 0.707107f);
8768 path.quadTo(48.2763f, 19.1304f, 48.1469f, 18.6579f);
8769 path.conicTo(47.8826f, 17.6935f, 48.8471f, 17.4292f, 0.707107f);
8770 path.conicTo(49.8115f, 17.165f, 50.0758f, 18.1294f, 0.707107f);
8771 path.close();
8772 path.moveTo(50.7247f, 21.2262f);
8773 path.quadTo(50.8005f, 21.743f, 50.8555f, 22.2623f);
8774 path.conicTo(50.9607f, 23.2568f, 49.9663f, 23.3621f, 0.707107f);
8775 path.conicTo(48.9719f, 23.4673f, 48.8666f, 22.4729f, 0.707107f);
8776 path.quadTo(48.8158f, 21.9935f, 48.7458f, 21.5165f);
8777 path.conicTo(48.6007f, 20.5271f, 49.5901f, 20.382f, 0.707107f);
8778 path.conicTo(50.5795f, 20.2368f, 50.7247f, 21.2262f, 0.707107f);
8779 path.close();
8780 path.moveTo(50.9916f, 24.3398f);
8781 path.quadTo(51.0048f, 24.858f, 50.9973f, 25.3762f);
8782 path.conicTo(50.9828f, 26.3761f, 49.9829f, 26.3616f, 0.707107f);
8783 path.conicTo(48.983f, 26.3472f, 48.9975f, 25.3473f, 0.707107f);
8784 path.quadTo(49.0044f, 24.8687f, 48.9923f, 24.3906f);
8785 path.conicTo(48.9669f, 23.3909f, 49.9665f, 23.3655f, 0.707107f);
8786 path.conicTo(50.9662f, 23.3401f, 50.9916f, 24.3398f, 0.707107f);
8787 path.close();
8788 path.moveTo(50.8819f, 27.4753f);
8789 path.quadTo(50.8323f, 27.9943f, 50.7618f, 28.511f);
8790 path.conicTo(50.6268f, 29.5018f, 49.636f, 29.3668f, 0.707107f);
8791 path.conicTo(48.6451f, 29.2317f, 48.7802f, 28.2409f, 0.707107f);
8792 path.quadTo(48.8452f, 27.7641f, 48.891f, 27.2849f);
8793 path.conicTo(48.9862f, 26.2894f, 49.9816f, 26.3846f, 0.707107f);
8794 path.conicTo(50.9771f, 26.4798f, 50.8819f, 27.4753f, 0.707107f);
8795 path.close();
8796 path.moveTo(50.4023f, 30.5429f);
8797 path.quadTo(50.2856f, 31.0775f, 50.1465f, 31.607f);
8798 path.conicTo(49.8924f, 32.5742f, 48.9252f, 32.3201f, 0.707107f);
8799 path.conicTo(47.9581f, 32.066f, 48.2122f, 31.0988f, 0.707107f);
8800 path.quadTo(48.3405f, 30.6102f, 48.4483f, 30.1165f);
8801 path.conicTo(48.6614f, 29.1395f, 49.6385f, 29.3527f, 0.707107f);
8802 path.conicTo(50.6155f, 29.5659f, 50.4023f, 30.5429f, 0.707107f);
8803 path.close();
8804 path.moveTo(49.5104f, 33.674f);
8805 path.quadTo(49.3329f, 34.1756f, 49.1351f, 34.6695f);
8806 path.conicTo(48.7632f, 35.5977f, 47.8349f, 35.2258f, 0.707107f);
8807 path.conicTo(46.9066f, 34.854f, 47.2785f, 33.9257f, 0.707107f);
8808 path.quadTo(47.4612f, 33.4697f, 47.625f, 33.0067f);
8809 path.conicTo(47.9587f, 32.064f, 48.9014f, 32.3977f, 0.707107f);
8810 path.conicTo(49.8441f, 32.7313f, 49.5104f, 33.674f, 0.707107f);
8811 path.close();
8812 path.moveTo(48.281f, 36.5756f);
8813 path.quadTo(48.053f, 37.0342f, 47.8071f, 37.4835f);
8814 path.conicTo(47.3269f, 38.3607f, 46.4497f, 37.8805f, 0.707107f);
8815 path.conicTo(45.5725f, 37.4004f, 46.0527f, 36.5232f, 0.707107f);
8816 path.quadTo(46.2797f, 36.1085f, 46.4901f, 35.6852f);
8817 path.conicTo(46.9353f, 34.7898f, 47.8307f, 35.235f, 0.707107f);
8818 path.conicTo(48.7262f, 35.6802f, 48.281f, 36.5756f, 0.707107f);
8819 path.close();
8820 path.moveTo(46.7777f, 39.2033f);
8821 path.quadTo(46.6677f, 39.3719f, 46.555f, 39.539f);
8822 path.quadTo(46.3865f, 39.7888f, 46.2121f, 40.0349f);
8823 path.conicTo(45.6338f, 40.8507f, 44.818f, 40.2724f, 0.707107f);
8824 path.conicTo(44.0021f, 39.6942f, 44.5804f, 38.8783f, 0.707107f);
8825 path.quadTo(44.7413f, 38.6513f, 44.8969f, 38.4206f);
8826 path.quadTo(45.0008f, 38.2665f, 45.1025f, 38.1107f);
8827 path.conicTo(45.6488f, 37.2731f, 46.4864f, 37.8194f, 0.707107f);
8828 path.conicTo(47.324f, 38.3657f, 46.7777f, 39.2033f, 0.707107f);
8829 path.close();
8830 path.moveTo(44.9527f, 41.6701f);
8831 path.quadTo(44.6177f, 42.0709f, 44.267f, 42.458f);
8832 path.conicTo(43.5955f, 43.1991f, 42.8545f, 42.5276f, 0.707107f);
8833 path.conicTo(42.1135f, 41.8561f, 42.7849f, 41.1151f, 0.707107f);
8834 path.quadTo(43.1087f, 40.7578f, 43.4178f, 40.3878f);
8835 path.conicTo(44.059f, 39.6203f, 44.8264f, 40.2615f, 0.707107f);
8836 path.conicTo(45.5938f, 40.9027f, 44.9527f, 41.6701f, 0.707107f);
8837 path.close();
8838 path.moveTo(42.7884f, 43.9624f);
8839 path.quadTo(42.4083f, 44.319f, 42.014f, 44.6602f);
8840 path.conicTo(41.2578f, 45.3146f, 40.6034f, 44.5585f, 0.707107f);
8841 path.conicTo(39.949f, 43.8023f, 40.7052f, 43.1479f, 0.707107f);
8842 path.quadTo(41.0691f, 42.833f, 41.4201f, 42.5037f);
8843 path.conicTo(42.1494f, 41.8196f, 42.8336f, 42.5489f, 0.707107f);
8844 path.conicTo(43.5178f, 43.2782f, 42.7884f, 43.9624f, 0.707107f);
8845 path.close();
8846 path.moveTo(40.3892f, 45.9564f);
8847 path.quadTo(39.9683f, 46.2655f, 39.5354f, 46.5574f);
8848 path.conicTo(38.7062f, 47.1165f, 38.1472f, 46.2873f, 0.707107f);
8849 path.conicTo(37.5881f, 45.4582f, 38.4173f, 44.8992f, 0.707107f);
8850 path.quadTo(38.8169f, 44.6297f, 39.2054f, 44.3444f);
8851 path.conicTo(40.0114f, 43.7525f, 40.6033f, 44.5585f, 0.707107f);
8852 path.conicTo(41.1952f, 45.3645f, 40.3892f, 45.9564f, 0.707107f);
8853 path.close();
8854 path.moveTo(37.7543f, 47.6568f);
8855 path.quadTo(37.2977f, 47.9138f, 36.8312f, 48.1522f);
8856 path.conicTo(35.9407f, 48.6072f, 35.4857f, 47.7167f, 0.707107f);
8857 path.conicTo(35.0306f, 46.8263f, 35.9211f, 46.3712f, 0.707107f);
8858 path.quadTo(36.3518f, 46.1511f, 36.7732f, 45.9139f);
8859 path.conicTo(37.6446f, 45.4234f, 38.1351f, 46.2948f, 0.707107f);
8860 path.conicTo(38.6257f, 47.1662f, 37.7543f, 47.6568f, 0.707107f);
8861 path.close();
8862 path.moveTo(34.9311f, 49.0286f);
8863 path.quadTo(34.4488f, 49.2279f, 33.9589f, 49.4077f);
8864 path.conicTo(33.0202f, 49.7523f, 32.6756f, 48.8136f, 0.707107f);
8865 path.conicTo(32.331f, 47.8748f, 33.2698f, 47.5302f, 0.707107f);
8866 path.quadTo(33.722f, 47.3642f, 34.1672f, 47.1802f);
8867 path.conicTo(35.0914f, 46.7983f, 35.4733f, 47.7224f, 0.707107f);
8868 path.conicTo(35.8553f, 48.6466f, 34.9311f, 49.0286f, 0.707107f);
8869 path.close();
8870 path.moveTo(31.9824f, 50.0449f);
8871 path.quadTo(31.4774f, 50.1857f, 30.9668f, 50.3061f);
8872 path.conicTo(29.9935f, 50.5355f, 29.764f, 49.5622f, 0.707107f);
8873 path.conicTo(29.5346f, 48.5889f, 30.5079f, 48.3594f, 0.707107f);
8874 path.quadTo(30.9789f, 48.2484f, 31.4453f, 48.1184f);
8875 path.conicTo(32.4086f, 47.8498f, 32.6771f, 48.8131f, 0.707107f);
8876 path.conicTo(32.9457f, 49.7763f, 31.9824f, 50.0449f, 0.707107f);
8877 path.close();
8878 path.moveTo(28.899f, 50.706f);
8879 path.quadTo(28.3834f, 50.7842f, 27.8652f, 50.8416f);
8880 path.conicTo(26.8713f, 50.9518f, 26.7611f, 49.9579f, 0.707107f);
8881 path.conicTo(26.6509f, 48.964f, 27.6448f, 48.8538f, 0.707107f);
8882 path.quadTo(28.1231f, 48.8008f, 28.599f, 48.7286f);
8883 path.conicTo(29.5877f, 48.5786f, 29.7377f, 49.5673f, 0.707107f);
8884 path.conicTo(29.8877f, 50.556f, 28.899f, 50.706f, 0.707107f);
8885 path.close();
8886 path.moveTo(25.8106f, 50.9874f);
8887 path.quadTo(25.6321f, 50.9929f, 25.4537f, 50.996f);
8888 path.conicTo(24.4539f, 51.0135f, 24.4365f, 50.0136f, 0.707115f);
8889 path.lineTo(24.4251f, 49.3638f);
8890 path.conicTo(24.4077f, 48.364f, 25.4075f, 48.3465f, 0.707107f);
8891 path.conicTo(26.4073f, 48.3291f, 26.4248f, 49.3289f, 0.707107f);
8892 path.lineTo(26.4361f, 49.9787f);
8893 path.lineTo(25.4363f, 49.9962f);
8894 path.lineTo(25.4189f, 48.9963f);
8895 path.quadTo(25.5836f, 48.9935f, 25.7482f, 48.9883f);
8896 path.conicTo(26.7477f, 48.9571f, 26.7789f, 49.9567f, 0.707107f);
8897 path.conicTo(26.8101f, 50.9562f, 25.8106f, 50.9874f, 0.707107f);
8898 path.close();
8899 path.moveTo(24.3902f, 47.3641f);
8900 path.lineTo(24.3728f, 46.3643f);
8901 path.conicTo(24.3553f, 45.3645f, 25.3551f, 45.347f, 0.707107f);
8902 path.conicTo(26.355f, 45.3295f, 26.3724f, 46.3294f, 0.707107f);
8903 path.lineTo(26.3899f, 47.3292f);
8904 path.conicTo(26.4074f, 48.3291f, 25.4075f, 48.3465f, 0.707107f);
8905 path.conicTo(24.4077f, 48.364f, 24.3902f, 47.3641f, 0.707107f);
8906 path.close();
8907 path.moveTo(24.3378f, 44.3646f);
8908 path.lineTo(24.3204f, 43.3648f);
8909 path.conicTo(24.3029f, 42.3649f, 25.3028f, 42.3475f, 0.707107f);
8910 path.conicTo(26.3026f, 42.33f, 26.3201f, 43.3298f, 0.707107f);
8911 path.lineTo(26.3375f, 44.3297f);
8912 path.conicTo(26.355f, 45.3295f, 25.3551f, 45.347f, 0.707107f);
8913 path.conicTo(24.3553f, 45.3645f, 24.3378f, 44.3646f, 0.707107f);
8914 path.close();
8915 path.moveTo(24.2855f, 41.3651f);
8916 path.lineTo(24.268f, 40.3652f);
8917 path.conicTo(24.2506f, 39.3654f, 25.2504f, 39.3479f, 0.707107f);
8918 path.conicTo(26.2503f, 39.3305f, 26.2677f, 40.3303f, 0.707107f);
8919 path.lineTo(26.2852f, 41.3302f);
8920 path.conicTo(26.3026f, 42.33f, 25.3028f, 42.3475f, 0.707107f);
8921 path.conicTo(24.3029f, 42.3649f, 24.2855f, 41.3651f, 0.707107f);
8922 path.close();
8923 path.moveTo(24.2331f, 38.3655f);
8924 path.lineTo(24.2157f, 37.3657f);
8925 path.conicTo(24.1982f, 36.3658f, 25.1981f, 36.3484f, 0.707107f);
8926 path.conicTo(26.1979f, 36.3309f, 26.2154f, 37.3308f, 0.707107f);
8927 path.lineTo(26.2328f, 38.3306f);
8928 path.conicTo(26.2503f, 39.3305f, 25.2504f, 39.3479f, 0.707107f);
8929 path.conicTo(24.2506f, 39.3654f, 24.2331f, 38.3655f, 0.707107f);
8930 path.close();
8931 path.moveTo(24.1808f, 35.366f);
8932 path.lineTo(24.1633f, 34.3661f);
8933 path.conicTo(24.1459f, 33.3663f, 25.1457f, 33.3488f, 0.707107f);
8934 path.conicTo(26.1456f, 33.3314f, 26.163f, 34.3312f, 0.707107f);
8935 path.lineTo(26.1805f, 35.3311f);
8936 path.conicTo(26.1979f, 36.3309f, 25.1981f, 36.3484f, 0.707107f);
8937 path.conicTo(24.1982f, 36.3658f, 24.1808f, 35.366f, 0.707107f);
8938 path.close();
8939 path.moveTo(24.1284f, 32.3664f);
8940 path.lineTo(24.111f, 31.3666f);
8941 path.conicTo(24.0935f, 30.3667f, 25.0934f, 30.3493f, 0.707107f);
8942 path.conicTo(26.0932f, 30.3318f, 26.1107f, 31.3317f, 0.707107f);
8943 path.lineTo(26.1281f, 32.3315f);
8944 path.conicTo(26.1456f, 33.3314f, 25.1457f, 33.3488f, 0.707107f);
8945 path.conicTo(24.1459f, 33.3663f, 24.1284f, 32.3664f, 0.707107f);
8946 path.close();
8947 path.moveTo(24.0761f, 29.3669f);
8948 path.lineTo(24.0586f, 28.367f);
8949 path.conicTo(24.0412f, 27.3672f, 25.041f, 27.3497f, 0.707107f);
8950 path.conicTo(26.0409f, 27.3323f, 26.0583f, 28.3321f, 0.707107f);
8951 path.lineTo(26.0758f, 29.332f);
8952 path.conicTo(26.0932f, 30.3318f, 25.0934f, 30.3493f, 0.707107f);
8953 path.conicTo(24.0935f, 30.3667f, 24.0761f, 29.3669f, 0.707107f);
8954 path.close();
8955 path.moveTo(24.0237f, 26.3673f);
8956 path.lineTo(24.0063f, 25.3675f);
8957 path.conicTo(23.9888f, 24.3676f, 24.9887f, 24.3502f, 0.707107f);
8958 path.conicTo(25.9885f, 24.3327f, 26.006f, 25.3326f, 0.707107f);
8959 path.lineTo(26.0234f, 26.3324f);
8960 path.conicTo(26.0409f, 27.3323f, 25.041f, 27.3497f, 0.707107f);
8961 path.conicTo(24.0412f, 27.3672f, 24.0237f, 26.3673f, 0.707107f);
8962 path.close();
8963 testPathOpFail(reporter, path, path1, kXOR_SkPathOp, filename);
8964 }
8965
op_1(skiatest::Reporter * reporter,const char * filename)8966 static void op_1(skiatest::Reporter* reporter, const char* filename) {
8967 SkPath path;
8968 path.setFillType((SkPathFillType) 0);
8969 path.setFillType(SkPathFillType::kWinding);
8970 path.moveTo(SkBits2Float(0x15e80300), SkBits2Float(0x400004dc)); // 9.37088e-26f, 2.0003f
8971 path.quadTo(SkBits2Float(0xe56c206c), SkBits2Float(0x646c5f40), SkBits2Float(0x6c80885e), SkBits2Float(0xb4bc576c)); // -6.96923e+22f, 1.74412e+22f, 1.24309e+27f, -3.50813e-07f
8972
8973 SkPath path1(path);
8974 path.reset();
8975 path.setFillType((SkPathFillType) 0);
8976 path.setFillType(SkPathFillType::kWinding);
8977 path.moveTo(SkBits2Float(0x1b000010), SkBits2Float(0x6e5a5a1b)); // 1.05879e-22f, 1.68942e+28f
8978 path.quadTo(SkBits2Float(0xef646464), SkBits2Float(0xefefefef), SkBits2Float(0x000000ef), SkBits2Float(0x1bb4bc00)); // -7.06839e+28f, -1.48514e+29f, 3.3491e-43f, 2.99e-22f
8979
8980 SkPath path2(path);
8981 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
8982 }
8983
8984
op_2(skiatest::Reporter * reporter,const char * filename)8985 static void op_2(skiatest::Reporter* reporter, const char* filename) {
8986 SkPath path;
8987 path.setFillType((SkPathFillType) 1);
8988 path.setFillType(SkPathFillType::kEvenOdd);
8989 path.moveTo(SkBits2Float(0xeee3ef57), SkBits2Float(0xef6300f8)); // -3.52712e+28f, -7.02543e+28f
8990 path.quadTo(SkBits2Float(0xeeee9c6e), SkBits2Float(0xef609993), SkBits2Float(0x00000000), SkBits2Float(0x6e5a5a1b)); // -3.69233e+28f, -6.95103e+28f, 0, 1.68942e+28f
8991 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8992 path.quadTo(SkBits2Float(0xe56c206c), SkBits2Float(0x646c5f40), SkBits2Float(0x6c80885e), SkBits2Float(0x00000000)); // -6.96923e+22f, 1.74412e+22f, 1.24309e+27f, 0
8993 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8994 path.quadTo(SkBits2Float(0xeeda2c5a), SkBits2Float(0xef6533a7), SkBits2Float(0xeee3ef57), SkBits2Float(0xef6300f8)); // -3.37607e+28f, -7.09345e+28f, -3.52712e+28f, -7.02543e+28f
8995 path.close();
8996
8997 SkPath path1(path);
8998 path.reset();
8999 path.setFillType((SkPathFillType) 0);
9000 path.setFillType(SkPathFillType::kWinding);
9001 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9002 path.lineTo(SkBits2Float(0x1b1b1b00), SkBits2Float(0x1b5a5a1b)); // 1.283e-22f, 1.80617e-22f
9003
9004 SkPath path2(path);
9005 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
9006 }
9007
9008
op_3(skiatest::Reporter * reporter,const char * filename)9009 static void op_3(skiatest::Reporter* reporter, const char* filename) {
9010 SkPath path;
9011 path.setFillType((SkPathFillType) 1);
9012 path.setFillType(SkPathFillType::kEvenOdd);
9013 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6e5a5a1b)); // 0, 1.68942e+28f
9014 path.quadTo(SkBits2Float(0xeeee9c6e), SkBits2Float(0xef609993), SkBits2Float(0xeee3ef57), SkBits2Float(0xef6300f8)); // -3.69233e+28f, -6.95103e+28f, -3.52712e+28f, -7.02543e+28f
9015 path.quadTo(SkBits2Float(0xeeda2c5a), SkBits2Float(0xef6533a7), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // -3.37607e+28f, -7.09345e+28f, 0, 0
9016 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6e5a5a1b)); // 0, 1.68942e+28f
9017 path.close();
9018 path.moveTo(SkBits2Float(0x6c80885e), SkBits2Float(0x00000000)); // 1.24309e+27f, 0
9019 path.quadTo(SkBits2Float(0xe56c206c), SkBits2Float(0x646c5f40), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // -6.96923e+22f, 1.74412e+22f, 0, 0
9020 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9021 path.lineTo(SkBits2Float(0x6c80885e), SkBits2Float(0x00000000)); // 1.24309e+27f, 0
9022 path.close();
9023
9024 SkPath path1(path);
9025 path.reset();
9026 path.setFillType((SkPathFillType) 0);
9027 path.setFillType(SkPathFillType::kWinding);
9028
9029 SkPath path2(path);
9030 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
9031 }
9032
op_4(skiatest::Reporter * reporter,const char * filename)9033 static void op_4(skiatest::Reporter* reporter, const char* filename) {
9034 SkPath patha, pathb;
9035
9036 patha.setFillType(SkPathFillType::kEvenOdd);
9037 patha.moveTo(SkBits2Float(0x40d7ea90), SkBits2Float(0x3fa58930)); // 6.74738f, 1.29325f
9038 patha.lineTo(SkBits2Float(0x40ad3d93), SkBits2Float(0x3fa58930)); // 5.41377f, 1.29325f
9039 patha.lineTo(SkBits2Float(0x40ad3d93), SkBits2Float(0x3edba819)); // 5.41377f, 0.429017f
9040 patha.lineTo(SkBits2Float(0x40fc41e0), SkBits2Float(0x3edba819)); // 7.88304f, 0.429017f
9041 patha.lineTo(SkBits2Float(0x40fc41e0), SkBits2Float(0x3f3b7c94)); // 7.88304f, 0.73237f
9042 patha.lineTo(SkBits2Float(0x40d7ea90), SkBits2Float(0x3f3b7c94)); // 6.74738f, 0.73237f
9043 patha.lineTo(SkBits2Float(0x40d7ea90), SkBits2Float(0x3fa58930)); // 6.74738f, 1.29325f
9044 patha.close();
9045
9046 pathb.setFillType(SkPathFillType::kEvenOdd);
9047 pathb.moveTo(SkBits2Float(0x40d7ea89), SkBits2Float(0x409a721d)); // 6.74738f, 4.82643f
9048 pathb.lineTo(SkBits2Float(0x411a9d73), SkBits2Float(0x409a721d)); // 9.66344f, 4.82643f
9049 pathb.lineTo(SkBits2Float(0x411a9d73), SkBits2Float(0x3f3b7c9a)); // 9.66344f, 0.73237f
9050 pathb.lineTo(SkBits2Float(0x40d7ea89), SkBits2Float(0x3f3b7c9a)); // 6.74738f, 0.73237f
9051 pathb.lineTo(SkBits2Float(0x40d7ea89), SkBits2Float(0x409a721d)); // 6.74738f, 4.82643f
9052 pathb.close();
9053 testPathOp(reporter, patha, pathb, kDifference_SkPathOp, filename);
9054 }
9055
bug8228(skiatest::Reporter * reporter,const char * filename)9056 static void bug8228(skiatest::Reporter* reporter, const char* filename) {
9057 SkPath path1;
9058 path1.moveTo(SkBits2Float(0x41fd5557), SkBits2Float(0x4292aaab));
9059 path1.lineTo(SkBits2Float(0x41fd5557), SkBits2Float(0x41555556));
9060 path1.conicTo(SkBits2Float(0x41fd5557), SkBits2Float(0x41200002), SkBits2Float(0x420c0000), SkBits2Float(0x41200002), SkBits2Float(0x3f3504f3));
9061 path1.lineTo(SkBits2Float(0x426071c7), SkBits2Float(0x41200002));
9062 path1.conicTo(SkBits2Float(0x426dc71d), SkBits2Float(0x41200002), SkBits2Float(0x426dc71d), SkBits2Float(0x41555556), SkBits2Float(0x3f3504f3));
9063 path1.lineTo(SkBits2Float(0x426dc71d), SkBits2Float(0x4292aaab));
9064 path1.conicTo(SkBits2Float(0x426dc71d), SkBits2Float(0x42995555), SkBits2Float(0x426071c7), SkBits2Float(0x42995555), SkBits2Float(0x3f3504f3));
9065 path1.lineTo(SkBits2Float(0x420c0000), SkBits2Float(0x42995555));
9066 path1.conicTo(SkBits2Float(0x41fd5557), SkBits2Float(0x42995555), SkBits2Float(0x41fd5557), SkBits2Float(0x4292aaab), SkBits2Float(0x3f3504f3));
9067 path1.close();
9068
9069 SkPath path2;
9070 path2.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x41200000));
9071 path2.lineTo(SkBits2Float(0x41eb2366), SkBits2Float(0x41200000));
9072 path2.conicTo(SkBits2Float(0x41e9d2b6), SkBits2Float(0x4127bdec), SkBits2Float(0x41e9d2b6), SkBits2Float(0x412feb1c), SkBits2Float(0x3f7c9333));
9073 path2.lineTo(SkBits2Float(0x41e9d2b6), SkBits2Float(0x42855349));
9074 path2.conicTo(SkBits2Float(0x41e9d2b6), SkBits2Float(0x428b82b9), SkBits2Float(0x4201483b), SkBits2Float(0x428b82b9), SkBits2Float(0x3f3504f3));
9075 path2.lineTo(SkBits2Float(0x424fa11f), SkBits2Float(0x428b82b9));
9076 path2.conicTo(SkBits2Float(0x425bffff), SkBits2Float(0x428b82b9), SkBits2Float(0x425bffff), SkBits2Float(0x42855349), SkBits2Float(0x3f3504f3));
9077 path2.lineTo(SkBits2Float(0x425bffff), SkBits2Float(0x412feb1c));
9078 path2.conicTo(SkBits2Float(0x425bffff), SkBits2Float(0x4127bdec), SkBits2Float(0x425b57a7), SkBits2Float(0x41200000), SkBits2Float(0x3f7c9333));
9079 path2.lineTo(SkBits2Float(0x4282f24d), SkBits2Float(0x41200000));
9080 path2.conicTo(SkBits2Float(0x42829e21), SkBits2Float(0x4127bdec), SkBits2Float(0x42829e21), SkBits2Float(0x412feb1c), SkBits2Float(0x3f7c9333));
9081 path2.lineTo(SkBits2Float(0x42829e21), SkBits2Float(0x42855349));
9082 path2.conicTo(SkBits2Float(0x42829e21), SkBits2Float(0x428b82b9), SkBits2Float(0x4288cd91), SkBits2Float(0x428b82b9), SkBits2Float(0x3f3504f3));
9083 path2.lineTo(SkBits2Float(0x42affa03), SkBits2Float(0x428b82b9));
9084 path2.conicTo(SkBits2Float(0x42b62973), SkBits2Float(0x428b82b9), SkBits2Float(0x42b62973), SkBits2Float(0x42855349), SkBits2Float(0x3f3504f3));
9085 path2.lineTo(SkBits2Float(0x42b62973), SkBits2Float(0x412feb1c));
9086 path2.conicTo(SkBits2Float(0x42b62973), SkBits2Float(0x4127bdec), SkBits2Float(0x42b5d547), SkBits2Float(0x41200000), SkBits2Float(0x3f7c9333));
9087 path2.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41200000));
9088 path2.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x42dc0000));
9089 path2.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42dc0000));
9090 path2.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41200000));
9091 path2.close();
9092 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
9093 }
9094
bug8380(skiatest::Reporter * reporter,const char * filename)9095 static void bug8380(skiatest::Reporter* reporter, const char* filename) {
9096 SkPath path, path2;
9097 path.setFillType(SkPathFillType::kEvenOdd);
9098 path.moveTo(SkBits2Float(0xa6800000), SkBits2Float(0x43b0f22d)); // -8.88178e-16f, 353.892f
9099 path.lineTo(SkBits2Float(0x42fc0000), SkBits2Float(0x4116566d)); // 126, 9.3961f
9100 path.cubicTo(SkBits2Float(0x42fb439d), SkBits2Float(0x4114bbc7), SkBits2Float(0x42fa3ed7), SkBits2Float(0x411565bd), SkBits2Float(0x42f934d2), SkBits2Float(0x4116131e)); // 125.632f, 9.29584f, 125.123f, 9.33734f, 124.603f, 9.37967f
9101 path.cubicTo(SkBits2Float(0x42f84915), SkBits2Float(0x4116acc3), SkBits2Float(0x42f75939), SkBits2Float(0x41174918), SkBits2Float(0x42f693f8), SkBits2Float(0x4116566d)); // 124.143f, 9.41718f, 123.674f, 9.45535f, 123.289f, 9.3961f
9102 path.lineTo(SkBits2Float(0x42ec3cee), SkBits2Float(0x410127bb)); // 118.119f, 8.0722f
9103 path.lineTo(SkBits2Float(0x4102c0ec), SkBits2Float(0x42d06d0e)); // 8.1721f, 104.213f
9104 path.lineTo(SkBits2Float(0xa6000000), SkBits2Float(0x4381a63d)); // -4.44089e-16f, 259.299f
9105 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x43b0f22d)); // 0, 353.892f
9106 path.lineTo(SkBits2Float(0xa6800000), SkBits2Float(0x43b0f22d)); // -8.88178e-16f, 353.892f
9107 path.close();
9108 path2.setFillType(SkPathFillType::kEvenOdd);
9109 path2.moveTo(SkBits2Float(0x4102c0ec), SkBits2Float(0x42d06d0e)); // 8.1721f, 104.213f
9110 path2.lineTo(SkBits2Float(0xc0ba5a1d), SkBits2Float(0x43b8e831)); // -5.8235f, 369.814f
9111 path2.lineTo(SkBits2Float(0x42fc0000), SkBits2Float(0x411656d6)); // 126, 9.3962f
9112 path2.cubicTo(SkBits2Float(0x42fa9cac), SkBits2Float(0x41134fdf), SkBits2Float(0x42f837cf), SkBits2Float(0x41185aee), SkBits2Float(0x42f693f8), SkBits2Float(0x411656d6)); // 125.306f, 9.207f, 124.109f, 9.5222f, 123.289f, 9.3962f
9113 path2.lineTo(SkBits2Float(0x42ec3cee), SkBits2Float(0x410127bb)); // 118.119f, 8.0722f
9114 path2.lineTo(SkBits2Float(0x4102c0ec), SkBits2Float(0x42d06d0e)); // 8.1721f, 104.213f
9115 path2.close();
9116 testPathOp(reporter, path, path2, kIntersect_SkPathOp, filename);
9117 }
9118
9119 static void (*skipTest)(skiatest::Reporter* , const char* filename) = nullptr;
9120 static void (*firstTest)(skiatest::Reporter* , const char* filename) = nullptr;
9121 static void (*stopTest)(skiatest::Reporter* , const char* filename) = nullptr;
9122
9123 #define TEST(name) { name, #name }
9124
9125 static struct TestDesc tests[] = {
9126 TEST(bug8380),
9127 TEST(crbug_526025),
9128 TEST(bug8228),
9129 TEST(op_4),
9130 TEST(op_1),
9131 TEST(op_2),
9132 TEST(op_3),
9133 TEST(grshapearcs1),
9134 TEST(filinmangust14),
9135 TEST(testRect1_u),
9136 TEST(halbug),
9137 TEST(seanbug),
9138 TEST(android1),
9139 TEST(bug5240),
9140 TEST(circlesOp4),
9141 TEST(loop17),
9142 TEST(cubicOp158),
9143 TEST(loops_i1),
9144 TEST(loops_i2),
9145 TEST(loops_i3),
9146 TEST(loops_i4),
9147 TEST(loops_i5),
9148 TEST(loops_i6),
9149 TEST(cubics_d3),
9150 TEST(cubics_o),
9151 TEST(cubics_d2),
9152 TEST(cubics_d),
9153 TEST(dean2),
9154 TEST(fuzzX_392),
9155 TEST(fuzz38),
9156 TEST(cubics44d),
9157 TEST(cubics45u),
9158 TEST(loops61i),
9159 TEST(loops62i),
9160 TEST(loops63i),
9161 TEST(loops58iAsQuads),
9162 TEST(cubics41d),
9163 TEST(loops59iasQuads),
9164 TEST(loops59i),
9165 TEST(loops44i),
9166 TEST(loops45i),
9167 TEST(loops46i),
9168 TEST(loops47i),
9169 TEST(loops48i),
9170 TEST(loops49i),
9171 TEST(loops50i),
9172 TEST(loops51i),
9173 TEST(loops52i),
9174 TEST(loops53i),
9175 TEST(loops54i),
9176 TEST(loops55i),
9177 TEST(loops56i),
9178 TEST(loops57i),
9179 TEST(loops58i),
9180 TEST(loops33iMod),
9181 TEST(loops33iAsQuads),
9182 TEST(loops33i),
9183 TEST(loops40i),
9184 TEST(loops40iAsQuads),
9185 TEST(loops39i),
9186 TEST(loops38i),
9187 TEST(loops37i),
9188 TEST(loops36i),
9189 TEST(loops35i),
9190 TEST(loops34i),
9191 TEST(loops32i),
9192 TEST(loops31i),
9193 TEST(loops30i),
9194 TEST(loops29i),
9195 TEST(loops28i),
9196 TEST(loops27i),
9197 TEST(loops26i),
9198 TEST(loops25i),
9199 TEST(loops24i),
9200 TEST(loops23i),
9201 TEST(loops22i),
9202 TEST(loops21i),
9203 TEST(loops20i),
9204 TEST(cubics20d),
9205 TEST(cubics6d),
9206 TEST(cubics7d),
9207 TEST(cubics8d),
9208 TEST(cubics9d),
9209 TEST(cubics10u),
9210 TEST(cubics11i),
9211 TEST(cubics12d),
9212 TEST(cubics13d),
9213 TEST(cubics14d),
9214 TEST(cubics15d),
9215 TEST(cubics16i),
9216 TEST(cubics17d),
9217 TEST(cubics18d),
9218 TEST(cubics19d),
9219 TEST(cubicOp157),
9220 TEST(cubicOp142),
9221 TEST(loops4i),
9222 TEST(quadRect1),
9223 TEST(quadRect2),
9224 TEST(quadRect3),
9225 TEST(quadRect4),
9226 TEST(quadRect5),
9227 TEST(quadRect6),
9228 TEST(cubicOp141),
9229 TEST(cubicOp58d),
9230 TEST(loops5i),
9231 TEST(cubicOp140),
9232 TEST(cubicOp139),
9233 TEST(cubics138),
9234 TEST(cubics137),
9235 TEST(cubicOp136a),
9236 TEST(cubicOp136),
9237 TEST(cubicOp135),
9238 TEST(cubicOp134),
9239 TEST(cubicOp133),
9240 TEST(loop12),
9241 TEST(cubicOp132),
9242 TEST(loop11),
9243 TEST(loop10),
9244 TEST(circlesOp3),
9245 TEST(loop9),
9246 TEST(loop8),
9247 TEST(rects5),
9248 TEST(loop7),
9249 TEST(cubicOp130a),
9250 TEST(rRect1x),
9251 TEST(circlesOp2),
9252 TEST(circlesOp1),
9253 TEST(cubicOp131),
9254 TEST(cubicOp130),
9255 TEST(cubicOp129),
9256 TEST(cubicOp128),
9257 TEST(cubicOp127),
9258 TEST(cubicOp126),
9259 TEST(cubicOp125),
9260 TEST(cubicOp124),
9261 TEST(loop6),
9262 TEST(loop5),
9263 TEST(cubicOp123),
9264 TEST(cubicOp122),
9265 TEST(cubicOp121),
9266 TEST(cubicOp120),
9267 TEST(cubicOp119),
9268 TEST(loop4),
9269 TEST(loop3),
9270 TEST(loop2),
9271 TEST(loop1asQuad),
9272 TEST(loop1),
9273 TEST(issue3517),
9274 TEST(cubicOp118),
9275 TEST(cubicOp117),
9276 TEST(cubicOp116),
9277 TEST(testRect2),
9278 TEST(testRect1),
9279 TEST(cubicOp115),
9280 TEST(issue2753),
9281 TEST(cubicOp114),
9282 TEST(issue2808),
9283 TEST(cubicOp114asQuad),
9284 TEST(rects4),
9285 TEST(rects3),
9286 TEST(rects2),
9287 TEST(rects1),
9288 TEST(issue2540),
9289 TEST(issue2504),
9290 TEST(kari1),
9291 TEST(quadOp10i),
9292 TEST(cubicOp113),
9293 TEST(skpcarrot_is24),
9294 TEST(issue1417),
9295 TEST(cubicOp112),
9296 TEST(skpadspert_net23),
9297 TEST(skpadspert_de11),
9298 TEST(findFirst1),
9299 TEST(xOp2i),
9300 TEST(xOp3i),
9301 TEST(xOp1u),
9302 TEST(xOp1i),
9303 TEST(cubicOp111),
9304 TEST(cubicOp110),
9305 TEST(cubicOp109),
9306 TEST(cubicOp108),
9307 TEST(cubicOp107),
9308 TEST(cubicOp106),
9309 TEST(cubicOp105),
9310 TEST(cubicOp104),
9311 TEST(cubicOp103),
9312 TEST(cubicOp102),
9313 TEST(cubicOp101),
9314 TEST(cubicOp100),
9315 TEST(cubicOp99),
9316 TEST(issue1435),
9317 TEST(cubicOp98x),
9318 TEST(cubicOp97x),
9319 TEST(skpcarpetplanet_ru22),
9320 TEST(cubicOp96d),
9321 TEST(cubicOp95u),
9322 TEST(skpadbox_lt15),
9323 TEST(skpagentxsites_com55),
9324 TEST(skpadventistmission_org572),
9325 TEST(skpadoption_org196),
9326 TEST(skpbambootheme_com12),
9327 TEST(skpbakosoft_com10),
9328 TEST(skpakmmos_ru100),
9329 TEST(skpbangalorenest_com4),
9330 TEST(skpbingoentertainment_net189),
9331 TEST(skpbestred_ru37),
9332 TEST(skpbenzoteh_ru152),
9333 TEST(skpcamcorder_kz21),
9334 TEST(skpcaffelavazzait_com_ua21),
9335 TEST(skpcarrefour_ro62),
9336 TEST(skpcavablar_net563),
9337 TEST(skpinsomnia_gr72),
9338 TEST(skpadbox_lt8),
9339 TEST(skpact_com43),
9340 TEST(skpacesoftech_com47),
9341 TEST(skpabcspark_ca103),
9342 TEST(cubicOp94u),
9343 TEST(cubicOp93d),
9344 TEST(cubicOp92i),
9345 TEST(skpadithya_putr4_blogspot_com551),
9346 TEST(skpadindex_de4),
9347 TEST(skpaiaigames_com870),
9348 TEST(skpaaalgarve_org53),
9349 TEST(skpkkiste_to716),
9350 TEST(cubicOp91u),
9351 TEST(cubicOp90u),
9352 TEST(cubicOp89u),
9353 TEST(cubicOp88u),
9354 TEST(cubicOp87u),
9355 TEST(cubicOp86i),
9356 TEST(loopEdge2),
9357 TEST(loopEdge1),
9358 TEST(rectOp3x),
9359 TEST(rectOp2i),
9360 TEST(rectOp1i),
9361 TEST(issue1418b),
9362 TEST(cubicOp85i),
9363 TEST(issue1418),
9364 TEST(skpkkiste_to98),
9365 TEST(skpahrefs_com29),
9366 TEST(cubicOp85d),
9367 TEST(skpahrefs_com88),
9368 TEST(skphealth_com76),
9369 TEST(skpancestry_com1),
9370 TEST(skpbyte_com1),
9371 TEST(skpeldorado_com_ua1),
9372 TEST(skp96prezzi1),
9373 TEST(skpClip2),
9374 TEST(skpClip1),
9375 TEST(cubicOp84d),
9376 TEST(cubicOp83i),
9377 TEST(cubicOp82i),
9378 TEST(cubicOp81d),
9379 TEST(cubicOp80i),
9380 TEST(cubicOp79u),
9381 TEST(cubicOp78u),
9382 TEST(cubicOp77i),
9383 TEST(cubicOp76u),
9384 TEST(cubicOp75d),
9385 TEST(cubicOp74d),
9386 TEST(cubicOp73d),
9387 TEST(cubicOp72i),
9388 TEST(cubicOp71d),
9389 TEST(skp5),
9390 TEST(skp4),
9391 TEST(skp3),
9392 TEST(skp2),
9393 TEST(skp1),
9394 TEST(rRect1),
9395 TEST(cubicOp70d),
9396 TEST(cubicOp69d),
9397 TEST(cubicOp68u),
9398 TEST(cubicOp67u),
9399 TEST(cubicOp66u),
9400 TEST(rectOp1d),
9401 TEST(cubicOp65d),
9402 TEST(cubicOp64d),
9403 TEST(cubicOp63d),
9404 TEST(cubicOp62d),
9405 TEST(cubicOp61d),
9406 TEST(cubicOp60d),
9407 TEST(cubicOp59d),
9408 TEST(cubicOp57d),
9409 TEST(cubicOp56d),
9410 TEST(cubicOp55d),
9411 TEST(cubicOp54d),
9412 TEST(cubicOp53d),
9413 TEST(cubicOp52d),
9414 TEST(cubicOp51d),
9415 TEST(cubicOp50d),
9416 TEST(cubicOp49d),
9417 TEST(cubicOp48d),
9418 TEST(cubicOp47d),
9419 TEST(cubicOp46d),
9420 TEST(cubicOp45d),
9421 TEST(cubicOp44d),
9422 TEST(cubicOp43d),
9423 TEST(cubicOp42d),
9424 TEST(cubicOp41i),
9425 TEST(cubicOp40d),
9426 TEST(cubicOp39d),
9427 TEST(cubicOp38d),
9428 TEST(cubicOp37d),
9429 TEST(cubicOp36u),
9430 TEST(cubicOp35d),
9431 TEST(cubicOp34d),
9432 TEST(cubicOp33i),
9433 TEST(cubicOp32d),
9434 TEST(cubicOp31d),
9435 TEST(cubicOp31x),
9436 TEST(cubicOp31u),
9437 TEST(cubicOp30d),
9438 TEST(cubicOp29d),
9439 TEST(cubicOp28u),
9440 TEST(cubicOp27d),
9441 TEST(cubicOp26d),
9442 TEST(cubicOp25i),
9443 TEST(testOp8d),
9444 TEST(testDiff1),
9445 TEST(testIntersect1),
9446 TEST(testUnion1),
9447 TEST(testXor1),
9448 TEST(testDiff2),
9449 TEST(testIntersect2),
9450 TEST(testUnion2),
9451 TEST(testXor2),
9452 TEST(testOp1d),
9453 TEST(testOp2d),
9454 TEST(testOp3d),
9455 TEST(testOp1u),
9456 TEST(testOp4d),
9457 TEST(testOp5d),
9458 TEST(testOp6d),
9459 TEST(testOp7d),
9460 TEST(testOp2u),
9461
9462 TEST(cubicOp24d),
9463 TEST(cubicOp23d),
9464 TEST(cubicOp22d),
9465 TEST(cubicOp21d),
9466 TEST(cubicOp20d),
9467 TEST(cubicOp19i),
9468 TEST(cubicOp18d),
9469 TEST(cubicOp17d),
9470 TEST(cubicOp16d),
9471 TEST(cubicOp15d),
9472 TEST(cubicOp14d),
9473 TEST(cubicOp13d),
9474 TEST(cubicOp12d),
9475 TEST(cubicOp11d),
9476 TEST(cubicOp10d),
9477 TEST(cubicOp1i),
9478 TEST(cubicOp9d),
9479 TEST(quadOp9d),
9480 TEST(lineOp9d),
9481 TEST(cubicOp8d),
9482 TEST(cubicOp7d),
9483 TEST(cubicOp6d),
9484 TEST(cubicOp5d),
9485 TEST(cubicOp3d),
9486 TEST(cubicOp2d),
9487 TEST(cubicOp1d),
9488 };
9489
9490 static const size_t testCount = std::size(tests);
9491
9492 static struct TestDesc subTests[] = {
9493 TEST(loops47i),
9494 TEST(loops61i),
9495 TEST(loops62i),
9496 TEST(issue3517),
9497 };
9498
9499 static const size_t subTestCount = std::size(subTests);
9500
9501 static void (*firstSubTest)(skiatest::Reporter* , const char* filename) = nullptr;
9502
9503 static bool runSubTests = false;
9504 static bool runSubTestsFirst = true;
9505 static bool runReverse = false;
9506
DEF_TEST(PathOpsOp,reporter)9507 DEF_TEST(PathOpsOp, reporter) {
9508 if (runSubTests && runSubTestsFirst) {
9509 RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
9510 }
9511 RunTestSet(reporter, tests, testCount, firstTest, skipTest, stopTest, runReverse);
9512 if (runSubTests && !runSubTestsFirst) {
9513 RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
9514 }
9515 }
9516
fuzz767834(skiatest::Reporter * reporter,const char * filename)9517 static void fuzz767834(skiatest::Reporter* reporter, const char* filename) {
9518 SkPath one;
9519 SkPath two;
9520 one.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9521
9522 one.conicTo(SkBits2Float(0x02807252), SkBits2Float(0xee23000a), SkBits2Float(0x00000000), SkBits2Float(0x0fe00008), SkBits2Float(0x52526831)); // 1.88735e-37f, -1.26115e+28f, 0, 2.20881e-29f, 2.25923e+11f
9523
9524 one.cubicTo(SkBits2Float(0x474d475a), SkBits2Float(0x72727252), SkBits2Float(0x72267272), SkBits2Float(0x535202ff), SkBits2Float(0x53535353), SkBits2Float(0x58943353)); // 52551.4f, 4.80215e+30f, 3.29682e+30f, 9.01993e+11f, 9.07636e+11f, 1.30359e+15f
9525
9526 one.quadTo(SkBits2Float(0x52727272), SkBits2Float(0x52595252), SkBits2Float(0x8e460900), SkBits2Float(0x7272db72)); // 2.60326e+11f, 2.33347e+11f, -2.44097e-30f, 4.81028e+30f
9527
9528 one.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9529
9530 one.close();
9531
9532 one.moveTo(SkBits2Float(0x72000400), SkBits2Float(0x72727272)); // 2.53561e+30f, 4.80216e+30f
9533
9534 one.quadTo(SkBits2Float(0x60727272), SkBits2Float(0x72727272), SkBits2Float(0x2a527272), SkBits2Float(0x72525252)); // 6.98806e+19f, 4.80216e+30f, 1.86915e-13f, 4.16585e+30f
9535
9536 one.cubicTo(SkBits2Float(0x72727251), SkBits2Float(0x52617272), SkBits2Float(0x46032352), SkBits2Float(0x7272728e), SkBits2Float(0x5c527272), SkBits2Float(0x72726552)); // 4.80215e+30f, 2.42072e+11f, 8392.83f, 4.80217e+30f, 2.36942e+17f, 4.80114e+30f
9537
9538 one.cubicTo(SkBits2Float(0x2b7280ff), SkBits2Float(0x7240ffff), SkBits2Float(0x72724960), SkBits2Float(0x52008072), SkBits2Float(0x72725230), SkBits2Float(0x5f727272)); // 8.61547e-13f, 3.82276e+30f, 4.79898e+30f, 1.37978e+11f, 4.79966e+30f, 1.74702e+19f
9539
9540 one.lineTo(SkBits2Float(0x72000400), SkBits2Float(0x72727272)); // 2.53561e+30f, 4.80216e+30f
9541
9542 one.close();
9543
9544 one.moveTo(SkBits2Float(0x8e524603), SkBits2Float(0x72727272)); // -2.59182e-30f, 4.80216e+30f
9545
9546 one.close();
9547
9548 one.moveTo(SkBits2Float(0x8e524603), SkBits2Float(0x72727272)); // -2.59182e-30f, 4.80216e+30f
9549
9550 one.quadTo(SkBits2Float(0x72725d72), SkBits2Float(0x52008072), SkBits2Float(0x00016552), SkBits2Float(0x72724000)); // 4.80053e+30f, 1.37978e+11f, 1.28182e-40f, 4.79826e+30f
9551
9552 one.quadTo(SkBits2Float(0x00807272), SkBits2Float(0x392a5b25), SkBits2Float(0x72685768), SkBits2Float(0x000000ff)); // 1.1796e-38f, 0.000162464f, 4.602e+30f, 3.57331e-43f
9553
9554 one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9555
9556 one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0xd2008072), SkBits2Float(0x8e460900), SkBits2Float(0x72727072)); // 4.80216e+30f, -1.37978e+11f, -2.44097e-30f, 4.802e+30f
9557
9558 one.cubicTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x58943303), SkBits2Float(0x72727272), SkBits2Float(0x59525252), SkBits2Float(0x00090052), SkBits2Float(0x72000000)); // -1.29345e+20f, 1.30357e+15f, 4.80216e+30f, 3.70002e+15f, 8.26634e-40f, 2.5353e+30f
9559
9560 one.quadTo(SkBits2Float(0x005252ec), SkBits2Float(0x72000400), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 7.56026e-39f, 2.53561e+30f, 4.80216e+30f, 4.80216e+30f
9561
9562 one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9563
9564 one.close();
9565
9566 one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9567
9568 one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x522a5272), SkBits2Float(0x20725252), SkBits2Float(0x72727251)); // 4.80216e+30f, 1.82882e+11f, 2.05254e-19f, 4.80215e+30f
9569
9570 one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x59525252), SkBits2Float(0x46090052), SkBits2Float(0x72db728e)); // 4.80216e+30f, 3.70002e+15f, 8768.08f, 8.69321e+30f
9571
9572 one.quadTo(SkBits2Float(0x005252ec), SkBits2Float(0x72000400), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 7.56026e-39f, 2.53561e+30f, 4.80216e+30f, 4.80216e+30f
9573
9574 one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9575
9576 one.close();
9577
9578 one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9579
9580 one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x522a5272), SkBits2Float(0x20725252), SkBits2Float(0x72727251)); // 4.80216e+30f, 1.82882e+11f, 2.05254e-19f, 4.80215e+30f
9581
9582 one.quadTo(SkBits2Float(0x52526172), SkBits2Float(0x8e460323), SkBits2Float(0x72727272), SkBits2Float(0x525c5272)); // 2.25894e+11f, -2.44069e-30f, 4.80216e+30f, 2.36569e+11f
9583
9584 one.conicTo(SkBits2Float(0xff727272), SkBits2Float(0xff2b549b), SkBits2Float(0x607240ff), SkBits2Float(0x72727249), SkBits2Float(0x30520080)); // -3.22267e+38f, -2.27737e+38f, 6.98249e+19f, 4.80215e+30f, 7.63983e-10f
9585
9586 one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9587
9588 one.close();
9589
9590 one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9591
9592 one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x0052525f), SkBits2Float(0x8e524603), SkBits2Float(0x72727272)); // 4.80216e+30f, 7.56006e-39f, -2.59182e-30f, 4.80216e+30f
9593
9594 one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9595
9596 one.close();
9597
9598 one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9599
9600 one.quadTo(SkBits2Float(0x72725d72), SkBits2Float(0x52008072), SkBits2Float(0x00016552), SkBits2Float(0x72724000)); // 4.80053e+30f, 1.37978e+11f, 1.28182e-40f, 4.79826e+30f
9601
9602 one.quadTo(SkBits2Float(0x00807272), SkBits2Float(0x392a5b25), SkBits2Float(0x72685768), SkBits2Float(0x000000ff)); // 1.1796e-38f, 0.000162464f, 4.602e+30f, 3.57331e-43f
9603
9604 one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9605
9606 one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0xd2008072), SkBits2Float(0x8e460900), SkBits2Float(0x72727072)); // 4.80216e+30f, -1.37978e+11f, -2.44097e-30f, 4.802e+30f
9607
9608 one.cubicTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x58943303), SkBits2Float(0x72727272), SkBits2Float(0x59525252), SkBits2Float(0x46090052), SkBits2Float(0x72db728e)); // -1.29345e+20f, 1.30357e+15f, 4.80216e+30f, 3.70002e+15f, 8768.08f, 8.69321e+30f
9609
9610 one.quadTo(SkBits2Float(0x005252ec), SkBits2Float(0x72000400), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 7.56026e-39f, 2.53561e+30f, 4.80216e+30f, 4.80216e+30f
9611
9612 one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9613
9614 one.close();
9615
9616 one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9617
9618 one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x522a5272), SkBits2Float(0x20725252), SkBits2Float(0x72727251)); // 4.80216e+30f, 1.82882e+11f, 2.05254e-19f, 4.80215e+30f
9619
9620 testPathOpFuzz(reporter, two, one, kIntersect_SkPathOp, filename);
9621 }
9622
fuzz535151(skiatest::Reporter * reporter,const char * filename)9623 static void fuzz535151(skiatest::Reporter* reporter, const char* filename) {
9624 SkPath one;
9625 one.setFillType(SkPathFillType::kWinding);
9626 SkPath two;
9627 two.setFillType(SkPathFillType::kWinding);
9628 two.moveTo(0, 0);
9629 two.lineTo(0, 50);
9630 two.lineTo(4.29497e+09f, 50);
9631 testPathOpFuzz(reporter, one, two, kIntersect_SkPathOp, filename);
9632 }
9633
bufferOverflow(skiatest::Reporter * reporter,const char * filename)9634 static void bufferOverflow(skiatest::Reporter* reporter, const char* filename) {
9635 SkPath path;
9636 path.addRect(0,0, 300,170141183460469231731687303715884105728.f);
9637 SkPath pathB;
9638 pathB.addRect(0,0, 300,16);
9639 testPathOpFuzz(reporter, path, pathB, kUnion_SkPathOp, filename);
9640 }
9641
9642 // m 100,0 60,170 -160,-110 200,0 -170,11000000000 z
fuzz433(skiatest::Reporter * reporter,const char * filename)9643 static void fuzz433(skiatest::Reporter* reporter, const char* filename) {
9644 SkPath path1, path2;
9645 path1.moveTo(100,0);
9646 path1.lineTo(60,170);
9647 path1.lineTo(-160,-110);
9648 path1.lineTo(200,0);
9649 path1.lineTo(-170,11000000000.0f);
9650 path1.close();
9651
9652 path2.moveTo(100 + 20,0 + 20);
9653 path2.lineTo(60 + 20,170 + 20);
9654 path2.lineTo(-160 + 20,-110 + 20);
9655 path2.lineTo(200 + 20,0 + 20);
9656 path2.lineTo(-170 + 20,11000000000.0f + 20);
9657 path2.close();
9658
9659 testPathOpFuzz(reporter, path1, path2, kIntersect_SkPathOp, filename);
9660 }
9661
fuzz433b(skiatest::Reporter * reporter,const char * filename)9662 static void fuzz433b(skiatest::Reporter* reporter, const char* filename) {
9663 SkPath path1, path2;
9664 path1.setFillType(SkPathFillType::kEvenOdd);
9665 path1.moveTo(140, 40);
9666 path1.lineTo(200, 210);
9667 path1.lineTo(40, 100);
9668 path1.lineTo(240, 100);
9669 path1.lineTo(70, 1.1e+10f);
9670 path1.lineTo(140, 40);
9671 path1.close();
9672
9673 path1.setFillType(SkPathFillType::kWinding);
9674 path2.moveTo(190, 60);
9675 path2.lineTo(250, 230);
9676 path2.lineTo(90, 120);
9677 path2.lineTo(290, 120);
9678 path2.lineTo(120, 1.1e+10f);
9679 path2.lineTo(190, 60);
9680 path2.close();
9681
9682 testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
9683 }
9684
fuzz487a(skiatest::Reporter * reporter,const char * filename)9685 static void fuzz487a(skiatest::Reporter* reporter, const char* filename) {
9686 SkPath path;
9687 path.setFillType((SkPathFillType) 0);
9688 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9689 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9690 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42633333));
9691 path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
9692 path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41a3ffff));
9693 path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9694 path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9695 path.cubicTo(SkBits2Float(0x429c6668), SkBits2Float(0x425d999a), SkBits2Float(0x4279999c), SkBits2Float(0x42886667), SkBits2Float(0x42673335), SkBits2Float(0x42ab0000));
9696 path.lineTo(SkBits2Float(0x41c0ccd0), SkBits2Float(0x42990000));
9697 path.cubicTo(SkBits2Float(0x41b33336), SkBits2Float(0x42a5999a), SkBits2Float(0x41ac0003), SkBits2Float(0x42b2cccd), SkBits2Float(0x41ac0003), SkBits2Float(0x42c00000));
9698 path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9699 path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9700 path.cubicTo(SkBits2Float(0x4261999c), SkBits2Float(0x434d3333), SkBits2Float(0x4364e667), SkBits2Float(0x4346b333), SkBits2Float(0x4364e667), SkBits2Float(0x43400000));
9701 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9702 path.close();
9703
9704 SkPath path1(path);
9705 path.reset();
9706 path.setFillType((SkPathFillType) 0);
9707 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9708 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9709 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x42a20000), SkBits2Float(0x43016667), SkBits2Float(0x4287cccd), SkBits2Float(0x42ea999a), SkBits2Float(0x4273999a));
9710 path.lineTo(SkBits2Float(0x4306cccd), SkBits2Float(0x41f5999a));
9711 path.cubicTo(SkBits2Float(0x42f76667), SkBits2Float(0x41c26667), SkBits2Float(0x42dd999a), SkBits2Float(0x41a4cccd), SkBits2Float(0x42c23334), SkBits2Float(0x41a4cccd));
9712 path.lineTo(SkBits2Float(0x42c23334), SkBits2Float(0x425e0000));
9713 path.cubicTo(SkBits2Float(0x42a43334), SkBits2Float(0x425e0000), SkBits2Float(0x428a0001), SkBits2Float(0x427ecccd), SkBits2Float(0x42780002), SkBits2Float(0x4297999a));
9714 path.lineTo(SkBits2Float(0x41fccccd), SkBits2Float(0x42693333));
9715 path.cubicTo(SkBits2Float(0x41c9999a), SkBits2Float(0x428acccd), SkBits2Float(0x41ac0000), SkBits2Float(0x42a4999a), SkBits2Float(0x41ac0000), SkBits2Float(0x42c00000));
9716 path.lineTo(SkBits2Float(0x4261999a), SkBits2Float(0x42c00000));
9717 path.cubicTo(SkBits2Float(0x4261999a), SkBits2Float(0x42de0000), SkBits2Float(0x42813333), SkBits2Float(0x42f83333), SkBits2Float(0x42996666), SkBits2Float(0x4303199a));
9718 path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x431cb334));
9719 path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
9720 path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
9721 path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
9722 path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
9723 path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43080000));
9724 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9725 path.close();
9726
9727 SkPath path2(path);
9728 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9729 }
9730
fuzz487b(skiatest::Reporter * reporter,const char * filename)9731 static void fuzz487b(skiatest::Reporter* reporter, const char* filename) {
9732 SkPath path;
9733 path.setFillType((SkPathFillType) 0);
9734 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9735 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9736 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42633333));
9737 path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
9738 path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41a3ffff));
9739 path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9740 path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9741 path.cubicTo(SkBits2Float(0x429c6668), SkBits2Float(0x425d999a), SkBits2Float(0x4279999c), SkBits2Float(0x42886667), SkBits2Float(0x42673335), SkBits2Float(0x42ab0000));
9742 path.lineTo(SkBits2Float(0x41c0ccd0), SkBits2Float(0x42990000));
9743 path.cubicTo(SkBits2Float(0x41b33336), SkBits2Float(0x42a5999a), SkBits2Float(0x41ac0003), SkBits2Float(0x42b2cccd), SkBits2Float(0x41ac0003), SkBits2Float(0x42c00000));
9744 path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9745 path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9746 path.cubicTo(SkBits2Float(0x4261999c), SkBits2Float(0x434d3333), SkBits2Float(0x4364e667), SkBits2Float(0x4346b333), SkBits2Float(0x4364e667), SkBits2Float(0x43400000));
9747 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9748 path.close();
9749
9750 SkPath path1(path);
9751 path.reset();
9752 path.setFillType((SkPathFillType) 0);
9753 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9754 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9755 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x42a20000), SkBits2Float(0x43016667), SkBits2Float(0x4287cccd), SkBits2Float(0x42ea999a), SkBits2Float(0x4273999a));
9756 path.lineTo(SkBits2Float(0x4306cccd), SkBits2Float(0x41f5999a));
9757 path.cubicTo(SkBits2Float(0x42f76667), SkBits2Float(0x41c26667), SkBits2Float(0x42dd999a), SkBits2Float(0x41a4cccd), SkBits2Float(0x42c23334), SkBits2Float(0x41a4cccd));
9758 path.lineTo(SkBits2Float(0x42c23334), SkBits2Float(0x425e0000));
9759 path.cubicTo(SkBits2Float(0x42a43334), SkBits2Float(0x425e0000), SkBits2Float(0x428a0001), SkBits2Float(0x427ecccd), SkBits2Float(0x42780002), SkBits2Float(0x4297999a));
9760 path.lineTo(SkBits2Float(0x41fccccd), SkBits2Float(0x42693333));
9761 path.cubicTo(SkBits2Float(0x41c9999a), SkBits2Float(0x428acccd), SkBits2Float(0x41ac0000), SkBits2Float(0x42a4999a), SkBits2Float(0x41ac0000), SkBits2Float(0x42c00000));
9762 path.lineTo(SkBits2Float(0x4261999a), SkBits2Float(0x42c00000));
9763 path.cubicTo(SkBits2Float(0x4261999a), SkBits2Float(0x42de0000), SkBits2Float(0x42813333), SkBits2Float(0x42f83333), SkBits2Float(0x42996666), SkBits2Float(0x4303199a));
9764 path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x431cb334));
9765 path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
9766 path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
9767 path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
9768 path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
9769 path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43080000));
9770 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9771 path.close();
9772
9773 SkPath path2(path);
9774 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9775 }
9776
fuzz714(skiatest::Reporter * reporter,const char * filename)9777 static void fuzz714(skiatest::Reporter* reporter, const char* filename) {
9778 SkPath path;
9779 path.setFillType((SkPathFillType) 1);
9780 path.moveTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000));
9781 path.lineTo(SkBits2Float(0x43480000), SkBits2Float(0x43520000));
9782 path.lineTo(SkBits2Float(0x42200000), SkBits2Float(0x42c80000));
9783 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42c80000)); // 2.22222e+022f
9784 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43520000)); // 2.22222e+022f
9785 path.lineTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000));
9786 path.close();
9787
9788 SkPath path1(path);
9789 path.reset();
9790 path.setFillType((SkPathFillType) 0);
9791 path.moveTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000));
9792 path.lineTo(SkBits2Float(0x435c0000), SkBits2Float(0x43660000));
9793 path.lineTo(SkBits2Float(0x42700000), SkBits2Float(0x42f00000));
9794 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42f00000)); // 2.22222e+022f
9795 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43660000)); // 2.22222e+022f
9796 path.lineTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000));
9797 path.close();
9798
9799 SkPath path2(path);
9800 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9801 }
9802
fuzz1(skiatest::Reporter * reporter,const char * filename)9803 static void fuzz1(skiatest::Reporter* reporter, const char* filename) {
9804 SkPath path;
9805 path.setFillType((SkPathFillType) 0);
9806 path.moveTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9807 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9808 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9809 path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7f800000));
9810 path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000));
9811 path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0xffc00000), SkBits2Float(0xffc00000), SkBits2Float(0xffc00000));
9812 path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xff000001));
9813 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xffc00000));
9814 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9815 path.close();
9816
9817 SkPath path1(path);
9818 path.reset();
9819 path.setFillType((SkPathFillType) 0);
9820
9821 SkPath path2(path);
9822 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9823 }
9824
9825
fuzz753_91(skiatest::Reporter * reporter,const char * filename)9826 static void fuzz753_91(skiatest::Reporter* reporter, const char* filename) {
9827 SkPath path;
9828 path.setFillType((SkPathFillType) 0);
9829 path.moveTo(SkBits2Float(0x42910000), SkBits2Float(0x00000000)); // 72.5f, 0
9830 path.lineTo(SkBits2Float(0x42166668), SkBits2Float(0x00000000)); // 37.6f, 0
9831 path.cubicTo(SkBits2Float(0x42166668), SkBits2Float(0xc1966668), SkBits2Float(0x41c66668), SkBits2Float(0xc20a6666), SkBits2Float(0x40f00010), SkBits2Float(0xc21ccccd)); // 37.6f, -18.8f, 24.8f, -34.6f, 7.50001f, -39.2f
9832 path.lineTo(SkBits2Float(0x41840004), SkBits2Float(0xc291cccd)); // 16.5f, -72.9f
9833 path.lineTo(SkBits2Float(0x42fb6668), SkBits2Float(0x42c73334)); // 125.7f, 99.6f
9834 path.lineTo(SkBits2Float(0x43646668), SkBits2Float(0x43880ccd)); // 228.4f, 272.1f
9835
9836 SkPath path1(path);
9837 path.reset();
9838 path.setFillType((SkPathFillType) 0);
9839 path.moveTo(SkBits2Float(0x428bf702), SkBits2Float(0xcf223cbf)); // 69.9824f, -2.72189e+09f
9840 path.lineTo(SkBits2Float(0x42112d68), SkBits2Float(0xcf223cbf)); // 36.2943f, -2.72189e+09f
9841 path.cubicTo(SkBits2Float(0x4220d9fc), SkBits2Float(0xcf223cc0), SkBits2Float(0x420ee118), SkBits2Float(0xcf223cc0), SkBits2Float(0x41cef2f8), SkBits2Float(0xcf223cc0)); // 40.2129f, -2.72189e+09f, 35.7198f, -2.72189e+09f, 25.8686f, -2.72189e+09f
9842 path.lineTo(SkBits2Float(0x424a99e0), SkBits2Float(0xcf223cc0)); // 50.6503f, -2.72189e+09f
9843 path.cubicTo(SkBits2Float(0x42266e32), SkBits2Float(0xcf223cc0), SkBits2Float(0x41f0fa20), SkBits2Float(0xcf223cc0), SkBits2Float(0x41872ed4), SkBits2Float(0xcf223cc0)); // 41.6076f, -2.72189e+09f, 30.1221f, -2.72189e+09f, 16.8979f, -2.72189e+09f
9844 path.lineTo(SkBits2Float(0x40f8fbe0), SkBits2Float(0xcf223cc0)); // 7.78075f, -2.72189e+09f
9845
9846 SkPath path2(path);
9847 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9848 }
9849
bug597926_0(skiatest::Reporter * reporter,const char * filename)9850 static void bug597926_0(skiatest::Reporter* reporter, const char* filename) {
9851 SkPath path;
9852 path.setFillType((SkPathFillType) 0);
9853 path.moveTo(SkBits2Float(0x43b38000), SkBits2Float(0x433e0000)); // 359, 190
9854 path.lineTo(SkBits2Float(0x40c00000), SkBits2Float(0x449ce000)); // 6, 1255
9855 path.cubicTo(SkBits2Float(0x438c0000), SkBits2Float(0x4497a000), SkBits2Float(0x43e40000), SkBits2Float(0x44750000), SkBits2Float(0x41000000), SkBits2Float(0x44aa2000)); // 280, 1213, 456, 980, 8, 1361
9856 path.moveTo(SkBits2Float(0x43290000), SkBits2Float(0x4431c000)); // 169, 711
9857 path.lineTo(SkBits2Float(0xd987d6ba), SkBits2Float(0xd93d0ad4)); // -4.7794e+15f, -3.32567e+15f
9858 path.conicTo(SkBits2Float(0x43cc8000), SkBits2Float(0x445b8000), SkBits2Float(0xd888b096), SkBits2Float(0xd9a1ebfa), SkBits2Float(0x3ebcb199)); // 409, 878, -1.20234e+15f, -5.69712e+15f, 0.368542f
9859 path.cubicTo(SkBits2Float(0x43c00000), SkBits2Float(0x443a8000), SkBits2Float(0x42380000), SkBits2Float(0x4421c000), SkBits2Float(0x42500000), SkBits2Float(0x448ca000)); // 384, 746, 46, 647, 52, 1125
9860 path.quadTo(SkBits2Float(0x43948000), SkBits2Float(0x42ac0000), SkBits2Float(0x43880000), SkBits2Float(0x4487e000)); // 297, 86, 272, 1087
9861 SkPath path1(path);
9862 path.reset();
9863 path.setFillType((SkPathFillType) 0);
9864 path.moveTo(SkBits2Float(0xc51d735c), SkBits2Float(0xc49db029)); // -2519.21f, -1261.51f
9865 path.cubicTo(SkBits2Float(0xc51d1dbd), SkBits2Float(0xc49d7a3f), SkBits2Float(0xc51c524a), SkBits2Float(0xc49d1610), SkBits2Float(0xc51d1a96), SkBits2Float(0xc49d86a6)); // -2513.86f, -1259.82f, -2501.14f, -1256.69f, -2513.66f, -1260.21f
9866 path.cubicTo(SkBits2Float(0xc51cd471), SkBits2Float(0xc49d54d0), SkBits2Float(0xc51c2e51), SkBits2Float(0xc49d0081), SkBits2Float(0xc51d197b), SkBits2Float(0xc49d7927)); // -2509.28f, -1258.65f, -2498.89f, -1256.02f, -2513.59f, -1259.79f
9867 path.quadTo(SkBits2Float(0xc51bf7eb), SkBits2Float(0xc49cf010), SkBits2Float(0xc51ba866), SkBits2Float(0xc49cb9e6)); // -2495.49f, -1255.5f, -2490.52f, -1253.81f
9868 path.cubicTo(SkBits2Float(0xc51bac0d), SkBits2Float(0xc49cc50e), SkBits2Float(0xc51c29eb), SkBits2Float(0xc49cfb01), SkBits2Float(0xc51c5bca), SkBits2Float(0xc49d1fa6)); // -2490.75f, -1254.16f, -2498.62f, -1255.84f, -2501.74f, -1256.99f
9869 SkPath path2(path);
9870 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9871 }
9872
fuzz1450_0(skiatest::Reporter * reporter,const char * filename)9873 static void fuzz1450_0(skiatest::Reporter* reporter, const char* filename) {
9874 SkPath path;
9875 path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.14748e+09f
9876 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, -2.14748e+09f, 1.07374e+09f, -1.07374e+09f, 0.707107f
9877 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x43348000), SkBits2Float(0x43800001), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, 256, 180.5f, 256, 0.707107f
9878 SkPath path1(path);
9879 path.reset();
9880 path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
9881 path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55f, 3600, 4434.55f, 0.707107f
9882 path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.55f, 6840, 4140, 0.707107f
9883 path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
9884 path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
9885 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
9886 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
9887 path.close();
9888 SkPath path2(path);
9889 testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
9890 }
9891
fuzz1450_1(skiatest::Reporter * reporter,const char * filename)9892 static void fuzz1450_1(skiatest::Reporter* reporter, const char* filename) {
9893 SkPath path;
9894 path.setFillType(SkPathFillType::kEvenOdd);
9895 path.moveTo(SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe)); // 1.07374e+09f, -1.07374e+09f
9896 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x43b40000), SkBits2Float(0xcf000000), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, -2.14748e+09f, 360, -2.14748e+09f, 0.707107f
9897 path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256
9898 path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
9899 path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
9900 path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
9901 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
9902 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
9903 path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55f, 3600, 4434.55f, 0.707107f
9904 path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.55f, 6840, 4140, 0.707107f
9905 path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
9906 path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256
9907 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, 256, 1.07374e+09f, -1.07374e+09f, 0.707107f
9908 path.close();
9909 SkPath path1(path);
9910 path.reset();
9911 path.moveTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
9912 path.lineTo(SkBits2Float(0x45d5c000), SkBits2Float(0x43870000)); // 6840, 270
9913 path.lineTo(SkBits2Float(0xd0a00000), SkBits2Float(0x4cbebc20)); // -2.14748e+10f, 1e+08
9914 path.lineTo(SkBits2Float(0x451f7000), SkBits2Float(0x42800000)); // 2551, 64
9915 path.lineTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
9916 path.close();
9917 SkPath path2(path);
9918 testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
9919 }
9920
fuzz763_9(skiatest::Reporter * reporter,const char * filename)9921 static void fuzz763_9(skiatest::Reporter* reporter, const char* filename) {
9922 SkPath path;
9923 path.setFillType((SkPathFillType) 1);
9924
9925 SkPath path1(path);
9926 path.reset();
9927 path.setFillType((SkPathFillType) 0);
9928 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9929 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321), SkBits2Float(0xed7a6a4b), SkBits2Float(0x1f212a8c)); // 2.49282e-13f, 4.78968e-34f, 1.99397e+36f, -4.84373e+27f, 3.41283e-20f
9930 path.lineTo(SkBits2Float(0x7bc00321), SkBits2Float(0xed7a6a4b)); // 1.99397e+36f, -4.84373e+27f
9931 path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f, 0.000617492f
9932 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9933 path.close();
9934 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9935 path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3), SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6)); // -8.10388e-33f, 0.00148185f, 2.25206e-21f, 5.54035e+21f
9936 path.moveTo(SkBits2Float(0x29272a81), SkBits2Float(0x2ab03a55)); // 3.71183e-14f, 3.13044e-13f
9937 path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xdf28282a), SkBits2Float(0x8a2f2121)); // 2.22225e-15f, 0.000615227f, -1.2117e+19f, -8.43217e-33f
9938 path.quadTo(SkBits2Float(0x373b3a27), SkBits2Float(0x201fc4c1), SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d)); // 1.11596e-05f, 1.35329e-19f, 2.98959e-15f, 2.8457e+15f
9939 path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21)); // 2.22225e-15f, 0.000615227f, -1.2117e+19f, 0.00105459f
9940 path.cubicTo(SkBits2Float(0x373b3ac5), SkBits2Float(0x201fc422), SkBits2Float(0x523a702a), SkBits2Float(0x27576c51), SkBits2Float(0x5921c25d), SkBits2Float(0x51523a70)); // 1.11598e-05f, 1.35327e-19f, 2.00186e+11f, 2.9896e-15f, 2.8457e+15f, 5.64327e+10f
9941 path.quadTo(SkBits2Float(0xd912102a), SkBits2Float(0x284f9a28), SkBits2Float(0xb38a1f30), SkBits2Float(0x3a3ac23a)); // -2.56957e+15f, 1.15242e-14f, -6.4318e-08f, 0.000712428f
9942 path.lineTo(SkBits2Float(0xc809272a), SkBits2Float(0x29b02829)); // -140445, 7.82294e-14f
9943
9944 SkPath path2(path);
9945 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9946 }
9947
9948
fuzz763_4(skiatest::Reporter * reporter,const char * filename)9949 static void fuzz763_4(skiatest::Reporter* reporter, const char* filename) {
9950 SkPath path;
9951 path.setFillType((SkPathFillType) 1);
9952
9953 SkPath path1(path);
9954 path.reset();
9955 path.setFillType((SkPathFillType) 0);
9956 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9957 path.lineTo(SkBits2Float(0x555b3a2d), SkBits2Float(0x2a212a8c)); // 1.50652e+13f, 1.43144e-13f
9958 path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
9959 path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac2b33a)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148544f
9960 path.cubicTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6), SkBits2Float(0x295b2d2a), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c275b)); // 2.25206e-21f, 5.54035e+21f, 4.86669e-14f, 3.19905e+24f, 9.6297e-12f, 2.48963e-13f
9961 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9962 path.close();
9963 path.moveTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9964 path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x2a21081f)); // 1.43144e-13f, 1.43025e-13f
9965 path.conicTo(SkBits2Float(0xde6a4b7b), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // -4.22068e+18f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121589
9966 path.lineTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9967 path.close();
9968 path.moveTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9969 path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
9970 path.lineTo(SkBits2Float(0x2928088c), SkBits2Float(0x2be61d2a)); // 3.73109e-14f, 1.63506e-12f
9971 path.conicTo(SkBits2Float(0x2a812a63), SkBits2Float(0x2d292a27), SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x552d6829)); // 2.29444e-13f, 9.6159e-12f, 1.5954e+13f, 4.87407e+16f, 1.19164e+13f
9972 path.conicTo(SkBits2Float(0x395b2d5b), SkBits2Float(0x68552768), SkBits2Float(0x555b2df0), SkBits2Float(0x1f722a8c), SkBits2Float(0x082a212a)); // 0.000209024f, 4.02636e+24f, 1.50619e+13f, 5.12807e-20f, 5.11965e-34f
9973 path.lineTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9974 path.close();
9975 path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
9976 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x28282a3a), SkBits2Float(0x21df212a), SkBits2Float(0x033a8a3a)); // 6.14991e+25f, 6.77381e-19f, 9.33503e-15f, 1.51198e-18f, 5.48192e-37f
9977
9978 SkPath path2(path);
9979 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9980 }
9981
fuzz763_3(skiatest::Reporter * reporter,const char * filename)9982 static void fuzz763_3(skiatest::Reporter* reporter, const char* filename) {
9983 SkPath path;
9984 path.setFillType((SkPathFillType) 1);
9985
9986 SkPath path1(path);
9987 path.reset();
9988 path.setFillType((SkPathFillType) 0);
9989 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9990 path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
9991 path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x295b2d1f), SkBits2Float(0x29685568)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.86669e-14f, 5.15884e-14f
9992 path.conicTo(SkBits2Float(0x8c28295b), SkBits2Float(0x1f21212a), SkBits2Float(0xc0032a08), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced)); // -1.29547e-31f, 3.41205e-20f, -2.04944f, 3.04132e+35f, 5.77848e-19f
9993 path.moveTo(SkBits2Float(0x25682929), SkBits2Float(0x212a8c5b)); // 2.01367e-16f, 5.7784e-19f
9994 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4a7bc0)); // 4.7323e-37f, 6.11969e+25f
9995 path.conicTo(SkBits2Float(0x032108ed), SkBits2Float(0x283a7bc0), SkBits2Float(0x47ed7a6a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21ff28)); // 4.73239e-37f, 1.03519e-14f, 121589, 9.4495e-15f, 0.000617968f
9996 path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.00148185f, 1.50241e-13f, -1.38859e-25f
9997 path.lineTo(SkBits2Float(0x295b2d2a), SkBits2Float(0x2d296868)); // 4.86669e-14f, 9.62972e-12f
9998 path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
9999 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x898ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, -3.39271e-33f, 4.61198e-19f, 0.00096035f, 121589
10000 path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10001 path.close();
10002 path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10003 path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0xb38a281a), SkBits2Float(0x29283ac2)); // -1.2117e+19f, 0.00105459f, -6.43342e-08f, 3.73545e-14f
10004 path.moveTo(SkBits2Float(0x962be61d), SkBits2Float(0x432a2927)); // -1.38859e-25f, 170.161f
10005 path.conicTo(SkBits2Float(0x3a2a552a), SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x3b3ac527), SkBits2Float(0x1fc42236)); // 0.000649768f, 0.00241343f, 3.71093e-14f, 0.00284989f, 8.30658e-20f
10006 path.cubicTo(SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d), SkBits2Float(0x51503a70), SkBits2Float(0x12102a10), SkBits2Float(0x633a28d9), SkBits2Float(0x29c80927)); // 2.98959e-15f, 2.8457e+15f, 5.58959e+10f, 4.54902e-28f, 3.43404e+21f, 8.88337e-14f
10007 path.lineTo(SkBits2Float(0x272927b0), SkBits2Float(0x5b392929)); // 2.3475e-15f, 5.21181e+16f
10008 path.moveTo(SkBits2Float(0x3a1127b4), SkBits2Float(0x2921ee3b)); // 0.000553723f, 3.59558e-14f
10009 path.cubicTo(SkBits2Float(0x5e215d3b), SkBits2Float(0x7828ee3a), SkBits2Float(0x8e28b03b), SkBits2Float(0x50783be8), SkBits2Float(0x9e0b8a3a), SkBits2Float(0x555b2d68)); // 2.90688e+18f, 1.37053e+34f, -2.07925e-30f, 1.66587e+10f, -7.38718e-21f, 1.50618e+13f
10010 path.moveTo(SkBits2Float(0x21081f3f), SkBits2Float(0x9fd4e62a)); // 4.61199e-19f, -9.01663e-20f
10011 path.cubicTo(SkBits2Float(0x3a293a2a), SkBits2Float(0x0e3bf0c5), SkBits2Float(0x3b29d42a), SkBits2Float(0x0f217265), SkBits2Float(0x2d5d2921), SkBits2Float(0x5568295b)); // 0.000645551f, 2.31655e-30f, 0.00259138f, 7.95994e-30f, 1.25715e-11f, 1.5954e+13f
10012
10013 SkPath path2(path);
10014 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
10015 }
10016
fuzz763_5(skiatest::Reporter * reporter,const char * filename)10017 static void fuzz763_5(skiatest::Reporter* reporter, const char* filename) {
10018 SkPath path;
10019 path.setFillType((SkPathFillType) 1);
10020
10021 SkPath path1(path);
10022 path.reset();
10023 path.setFillType((SkPathFillType) 0);
10024 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
10025 path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b79), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
10026 path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
10027 path.cubicTo(SkBits2Float(0xe62a2928), SkBits2Float(0x2a63962b), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x001f2a21)); // -2.0089e+23f, 2.02138e-13f, 3.19905e+24f, 9.6297e-12f, 2.49282e-13f, 2.86201e-39f
10028 path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
10029 path.close();
10030 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
10031 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121589
10032 path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
10033 path.close();
10034 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
10035 path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3b21), SkBits2Float(0x28ee4f9a), SkBits2Float(0x68293b78)); // -1.2117e+19f, 0.00105462f, 2.64578e-14f, 3.19671e+24f
10036 path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x5b2d8c55)); // 4.87407e+16f, 4.88495e+16f
10037
10038 SkPath path2(path);
10039 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10040 }
10041
fuzz763_2(skiatest::Reporter * reporter,const char * filename)10042 static void fuzz763_2(skiatest::Reporter* reporter, const char* filename) {
10043 SkPath path;
10044 path.setFillType((SkPathFillType) 1);
10045
10046 SkPath path1(path);
10047 path.reset();
10048 path.setFillType((SkPathFillType) 0);
10049 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10050 path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
10051 path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
10052 path.lineTo(SkBits2Float(0x081f2ad7), SkBits2Float(0x7bc00321)); // 4.78977e-34f, 1.99397e+36f
10053 path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
10054 path.quadTo(SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28), SkBits2Float(0x29283ac2), SkBits2Float(0x962be62a)); // 2.58753e+09f, 0.00136978f, 3.73545e-14f, -1.38859e-25f
10055 path.cubicTo(SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529), SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x3b3ac527), SkBits2Float(0x1fc42237)); // 2.36623e-15f, 0.000649768f, 0.00241343f, 3.71093e-14f, 0.00284989f, 8.30658e-20f
10056 path.cubicTo(SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d), SkBits2Float(0x51523a70), SkBits2Float(0x12102a10), SkBits2Float(0x633a28d9), SkBits2Float(0x29c80927)); // 2.98959e-15f, 2.8457e+15f, 5.64327e+10f, 4.54902e-28f, 3.43404e+21f, 8.88337e-14f
10057 path.lineTo(SkBits2Float(0x29292727), SkBits2Float(0x21475b3b)); // 3.75595e-14f, 6.75446e-19f
10058 path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
10059 path.cubicTo(SkBits2Float(0x682d2928), SkBits2Float(0x555b6829), SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 3.27091e+24f, 1.50775e+13f, 1.50606e+13f, 1.43144e-13f, 4.7323e-37f, 6.14991e+25f
10060 path.conicTo(SkBits2Float(0x295b2ded), SkBits2Float(0x29685568), SkBits2Float(0x8c555b2d), SkBits2Float(0xe61d2a2a), SkBits2Float(0x2a63962b)); // 4.86676e-14f, 5.15884e-14f, -1.64364e-31f, -1.85547e+23f, 2.02138e-13f
10061 path.conicTo(SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a), SkBits2Float(0x4b7bc003)); // 1.5954e+13f, 4.87407e+16f, 5.7784e-19f, 4.61198e-19f, 1.64987e+07f
10062 path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21)); // 2.50338e-13f, 4.61198e-19f
10063 path.conicTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x28282a3a), SkBits2Float(0x8a3a21df), SkBits2Float(0x27b42a3a)); // 5.63611e+25f, 6.77381e-19f, 9.33503e-15f, -8.96194e-33f, 5.00058e-15f
10064 path.conicTo(SkBits2Float(0x2921217d), SkBits2Float(0x5e3a3b35), SkBits2Float(0x7828ee3a), SkBits2Float(0x8e28b03b), SkBits2Float(0x783be82a)); // 3.57782e-14f, 3.35484e+18f, 1.37053e+34f, -2.07925e-30f, 1.52448e+34f
10065 path.conicTo(SkBits2Float(0x8e0b8a3a), SkBits2Float(0x279fd4e6), SkBits2Float(0x7a293a2a), SkBits2Float(0x2a0ef0c5), SkBits2Float(0x653b29d4)); // -1.71996e-30f, 4.43622e-15f, 2.19669e+35f, 1.26957e-13f, 5.52409e+22f
10066 path.quadTo(SkBits2Float(0x29210f21), SkBits2Float(0x282a085d), SkBits2Float(0xc2ab2127), SkBits2Float(0xa6800028)); // 3.57623e-14f, 9.43871e-15f, -85.5648f, -8.88183e-16f
10067 path.lineTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
10068 path.close();
10069 path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
10070 path.quadTo(SkBits2Float(0x216a2770), SkBits2Float(0x2ab73b28), SkBits2Float(0x4b28f427), SkBits2Float(0x283b5b28)); // 7.93345e-19f, 3.25484e-13f, 1.10726e+07f, 1.04004e-14f
10071 path.lineTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
10072 path.close();
10073 path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
10074 path.conicTo(SkBits2Float(0xf86d273b), SkBits2Float(0x27e523e3), SkBits2Float(0x2927e0f5), SkBits2Float(0x2ac0e729), SkBits2Float(0x6b492128)); // -1.92402e+34f, 6.35992e-15f, 3.72766e-14f, 3.42665e-13f, 2.43151e+26f
10075 path.cubicTo(SkBits2Float(0x2f273927), SkBits2Float(0xa83a2c21), SkBits2Float(0xd7122121), SkBits2Float(0x21212921), SkBits2Float(0x3be3db3a), SkBits2Float(0xa9deb63b)); // 1.52089e-10f, -1.03346e-14f, -1.60671e+14f, 5.46034e-19f, 0.00695362f, -9.89039e-14f
10076
10077 SkPath path2(path);
10078 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
10079 }
10080
10081 // crbug.com/626164
fuzz763_1c(skiatest::Reporter * reporter,const char * filename)10082 static void fuzz763_1c(skiatest::Reporter* reporter, const char* filename) {
10083 SkPath path;
10084 path.setFillType((SkPathFillType) 0);
10085
10086 SkPath path1(path);
10087 path.reset();
10088 path.setFillType((SkPathFillType) 0);
10089 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10090 path.cubicTo(SkBits2Float(0x1931204a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a4a34), SkBits2Float(0x4a4a4a4a)); // 9.15721e-24f, 1.14845e-12f, 3.31014e+06f, 3.31014e+06f, 3.31432e+06f, 3.31432e+06f
10091 path.moveTo(SkBits2Float(0x000010a1), SkBits2Float(0x19312000)); // 5.96533e-42f, 9.15715e-24f
10092 path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa14a4a4a), SkBits2Float(0x08ff2ba1), SkBits2Float(0x08ff4a4a), SkBits2Float(0x4a344a4a)); // 3.31432e+06f, 3.31432e+06f, -6.85386e-19f, 1.53575e-33f, 1.53647e-33f, 2.95387e+06f
10093 path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4e4a08ff), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa1a181ff)); // 3.31432e+06f, 3.31432e+06f, 1.14845e-12f, 8.47397e+08f, 3.31432e+06f, -1.09442e-18f
10094
10095 SkPath path2(path);
10096 testPathOpFuzz(reporter, path1, path2, (SkPathOp)4, filename);
10097 }
10098
10099 // crbug.com/626186
fuzz763_1b(skiatest::Reporter * reporter,const char * filename)10100 static void fuzz763_1b(skiatest::Reporter* reporter, const char* filename) {
10101 SkPath path;
10102 path.setFillType((SkPathFillType) 0);
10103 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10104 path.cubicTo(SkBits2Float(0x0000ff07), SkBits2Float(0xf9f9ff00), SkBits2Float(0xfe0ef9f4), SkBits2Float(0xd9b105fb), SkBits2Float(0x000000f9), SkBits2Float(0xfe11f901)); // 9.14866e-41f, -1.62257e+35f, -4.75121e+37f, -6.22846e+15f, 3.48923e-43f, -4.85077e+37f
10105 path.lineTo(SkBits2Float(0xda1905ed), SkBits2Float(0x3c05fbfb)); // -1.0768e+16f, 0.00817775f
10106 path.cubicTo(SkBits2Float(0x3c3c3c3c), SkBits2Float(0x3c3c3c3c), SkBits2Float(0x253c7f00), SkBits2Float(0xfa00d3fa), SkBits2Float(0x250025fe), SkBits2Float(0x00000006)); // 0.011489f, 0.011489f, 1.63494e-16f, -1.67228e+35f, 1.11151e-16f, 8.40779e-45f
10107
10108 SkPath path1(path);
10109 path.reset();
10110 path.setFillType((SkPathFillType) 0);
10111 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10112 path.quadTo(SkBits2Float(0x3c3c3c3c), SkBits2Float(0xfa253c3c), SkBits2Float(0xfefa00d3), SkBits2Float(0x25fad9df)); // 0.011489f, -2.14488e+35f, -1.66156e+38f, 4.35157e-16f
10113 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10114 path.close();
10115 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10116 path.lineTo(SkBits2Float(0x8dfefa00), SkBits2Float(0xf0f9fad9)); // -1.57141e-30f, -6.1892e+29f
10117 path.cubicTo(SkBits2Float(0x20fe58f9), SkBits2Float(0x0525fbed), SkBits2Float(0x1905ffff), SkBits2Float(0x01f9f9f9), SkBits2Float(0xfbfe0ef9), SkBits2Float(0xfb212fff)); // 4.30882e-19f, 7.80453e-36f, 6.92764e-24f, 9.18268e-38f, -2.63829e+36f, -8.36933e+35f
10118
10119 SkPath path2(path);
10120 testPathOpFuzz(reporter, path1, path2, (SkPathOp)2, filename);
10121 }
10122
fuzz763_1a(skiatest::Reporter * reporter,const char * filename)10123 static void fuzz763_1a(skiatest::Reporter* reporter, const char* filename) {
10124 SkPath path;
10125 path.setFillType((SkPathFillType) 0);
10126 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10127 path.cubicTo(SkBits2Float(0x154be880), SkBits2Float(0x80000640), SkBits2Float(0x5559a419), SkBits2Float(0x59d55928), SkBits2Float(0x80045959), SkBits2Float(0x40154be8)); // 4.11789e-26f, -2.24208e-42f, 1.49562e+13f, 7.50652e+15f, -3.99394e-40f, 2.33276f
10128
10129 SkPath path1(path);
10130 path.reset();
10131 path.setFillType((SkPathFillType) 0);
10132 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10133 path.quadTo(SkBits2Float(0x5559a419), SkBits2Float(0x59d55928), SkBits2Float(0xbd595959), SkBits2Float(0x3f3f3f09)); // 1.49562e+13f, 7.50652e+15f, -0.0530637f, 0.747056f
10134 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0x3f3f3f3f)); // 0.747059f, 0.747059f
10135 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10136 path.lineTo(SkBits2Float(0x09090909), SkBits2Float(0x3038d509)); // 1.6495e-33f, 6.72416e-10f
10137 path.conicTo(SkBits2Float(0x5947ffff), SkBits2Float(0x40e88004), SkBits2Float(0x00002059), SkBits2Float(0x28555900), SkBits2Float(0x5959d559)); // 3.51844e+15f, 7.26563f, 1.16042e-41f, 1.18432e-14f, 3.83217e+15f
10138 path.lineTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10139 path.close();
10140 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10141 path.lineTo(SkBits2Float(0x38d57f4b), SkBits2Float(0x59597f4b)); // 0.000101803f, 3.82625e+15f
10142 path.lineTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10143 path.close();
10144 path.moveTo(SkBits2Float(0x384700ff), SkBits2Float(0x0108804b)); // 4.74462e-05f, 2.50713e-38f
10145
10146 SkPath path2(path);
10147 testPathOpFuzz(reporter, path1, path2, (SkPathOp)0, filename);
10148 }
10149
10150 // crbug.com/627780
fuzz763_3a(skiatest::Reporter * reporter,const char * filename)10151 static void fuzz763_3a(skiatest::Reporter* reporter, const char* filename) {
10152 SkPath path;
10153 path.setFillType((SkPathFillType) 1);
10154
10155 SkPath path1(path);
10156 path.reset();
10157 path.setFillType((SkPathFillType) 0);
10158 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10159 path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
10160 path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
10161 path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
10162 path.cubicTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6), SkBits2Float(0x272a812a), SkBits2Float(0x295b2d29), SkBits2Float(0x2a685568), SkBits2Float(0x68295b2d)); // 2.25206e-21f, 5.54035e+21f, 2.36623e-15f, 4.86669e-14f, 2.06354e-13f, 3.19905e+24f
10163 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321), SkBits2Float(0x7a6a4b77), SkBits2Float(0x3a214726)); // 2.49282e-13f, 4.78968e-34f, 1.99397e+36f, 3.04132e+35f, 0.000615226f
10164 path.moveTo(SkBits2Float(0x8adf2028), SkBits2Float(0x3a219a3a)); // -2.14862e-32f, 0.000616464f
10165 path.quadTo(SkBits2Float(0x3ab38e28), SkBits2Float(0x29283ac2), SkBits2Float(0x2be61d2a), SkBits2Float(0x812a4396)); // 0.0013699f, 3.73545e-14f, 1.63506e-12f, -3.12726e-38f
10166
10167 SkPath path2(path);
10168 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
10169 }
10170
10171 // crbug.com/627689
fuzz763_5a(skiatest::Reporter * reporter,const char * filename)10172 static void fuzz763_5a(skiatest::Reporter* reporter, const char* filename) {
10173 SkPath path;
10174 path.setFillType((SkPathFillType) 1);
10175 path.moveTo(SkBits2Float(0x38bd8610), SkBits2Float(0x00000000)); // 9.03719e-05f, 0
10176 path.conicTo(SkBits2Float(0x4183d871), SkBits2Float(0x41fea321), SkBits2Float(0xb700ff00), SkBits2Float(0x4240b8b8), SkBits2Float(0x3b058283)); // 16.4807f, 31.8297f, -7.68877e-06f, 48.1804f, 0.0020372f
10177 path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
10178 path.conicTo(SkBits2Float(0x3a455ec8), SkBits2Float(0xb8b8b8b3), SkBits2Float(0x38b2418d), SkBits2Float(0xb730d014), SkBits2Float(0x3f7ffff3)); // 0.000752908f, -8.80821e-05f, 8.49991e-05f, -1.05389e-05f, 0.999999f
10179 path.quadTo(SkBits2Float(0x3a51246a), SkBits2Float(0xb6da45a3), SkBits2Float(0x38bc5c3c), SkBits2Float(0x00000000)); // 0.000797814f, -6.50501e-06f, 8.98172e-05f, 0
10180 path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
10181 path.quadTo(SkBits2Float(0x39a32d2d), SkBits2Float(0x00000000), SkBits2Float(0xb8a13a00), SkBits2Float(0x00000000)); // 0.000311234f, 0, -7.68788e-05f, 0
10182 path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
10183 path.quadTo(SkBits2Float(0x39ba814c), SkBits2Float(0xb838fed2), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0.00035573f, -4.41063e-05f, 0, 0
10184 path.lineTo(SkBits2Float(0x38bd8610), SkBits2Float(0x00000000)); // 9.03719e-05f, 0
10185 path.close();
10186
10187 SkPath path1(path);
10188 path.reset();
10189 path.setFillType((SkPathFillType) 0);
10190
10191 SkPath path2(path);
10192 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10193 }
10194
10195 // crbug.com/627401
fuzz763_2a(skiatest::Reporter * reporter,const char * filename)10196 static void fuzz763_2a(skiatest::Reporter* reporter, const char* filename) {
10197 SkPath path;
10198 path.setFillType((SkPathFillType) 1);
10199
10200 SkPath path1(path);
10201 path.reset();
10202 path.setFillType((SkPathFillType) 0);
10203 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10204 path.quadTo(SkBits2Float(0x3e484500), SkBits2Float(0x164f3a30), SkBits2Float(0x49484801), SkBits2Float(0x7d0100c8)); // 0.195576f, 1.67397e-25f, 820352, 1.07172e+37f
10205 path.conicTo(SkBits2Float(0xff7f36fd), SkBits2Float(0x3e647d01), SkBits2Float(0x0c00f430), SkBits2Float(0x486b6448), SkBits2Float(0x00484848)); // -3.39239e+38f, 0.223133f, 9.93424e-32f, 241041, 6.63809e-39f
10206 path.lineTo(SkBits2Float(0x4f4f557d), SkBits2Float(0x48480112)); // 3.47849e+09f, 204804
10207 path.lineTo(SkBits2Float(0xf40c01ff), SkBits2Float(0x45008000)); // -4.43702e+31f, 2056
10208 path.moveTo(SkBits2Float(0x4bfffa00), SkBits2Float(0x7d4ac859)); // 3.35514e+07f, 1.68465e+37f
10209 path.conicTo(SkBits2Float(0x7d014f3e), SkBits2Float(0x00f4ff01), SkBits2Float(0x6b64480c), SkBits2Float(0x48484848), SkBits2Float(0x557d0100)); // 1.07426e+37f, 2.24993e-38f, 2.75975e+26f, 205089, 1.73863e+13f
10210
10211 SkPath path2(path);
10212 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10213 }
10214
10215 // crbug.com/627761
fuzz763_2b(skiatest::Reporter * reporter,const char * filename)10216 static void fuzz763_2b(skiatest::Reporter* reporter, const char* filename) {
10217 SkPath path;
10218 path.setFillType((SkPathFillType) 1);
10219
10220 SkPath path1(path);
10221 path.reset();
10222 path.setFillType((SkPathFillType) 0);
10223 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55)); // 4.76191e+16f, 5.7784e-19f
10224 path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10225 path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21)); // 2.50338e-13f, 4.61198e-19f
10226 path.conicTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x4721ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28), SkBits2Float(0x4f9a3a8a)); // 5.63611e+25f, 41453.5f, 9.4495e-15f, 0.000617492f, 5.17506e+09f
10227 path.lineTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10228 path.close();
10229 path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10230 path.cubicTo(SkBits2Float(0x273ac23a), SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6), SkBits2Float(0x272a812a), SkBits2Float(0x295b2d29), SkBits2Float(0x29685568)); // 2.5918e-15f, 2.25206e-21f, 5.54035e+21f, 2.36623e-15f, 4.86669e-14f, 5.15884e-14f
10231 path.lineTo(SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321)); // 4.78968e-34f, 1.99397e+36f
10232 path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f, 0.000617492f
10233 path.lineTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10234 path.close();
10235 path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10236 path.quadTo(SkBits2Float(0x8a4fc29a), SkBits2Float(0x3ab3283a), SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6)); // -1.00033e-32f, 0.00136686f, 2.25206e-21f, 300.343f
10237 path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10238 path.conicTo(SkBits2Float(0x1e2ab03a), SkBits2Float(0x2920213b), SkBits2Float(0x3b3ac527), SkBits2Float(0xc422333b), SkBits2Float(0x6c2a9f1f)); // 9.03617e-21f, 3.5556e-14f, 0.00284989f, -648.8f, 8.25075e+26f
10239 path.quadTo(SkBits2Float(0xc25d2757), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152), SkBits2Float(0x28d91210)); // -55.2884f, 0.000916855f, 1.2818e-13f, 2.40997e-14f
10240 path.quadTo(SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19905e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
10241 path.lineTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10242 path.close();
10243 path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10244 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0xcb7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, -1.64987e+07f, 121589
10245 path.lineTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10246 path.close();
10247 path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10248 path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x2d8a3a21), SkBits2Float(0x5b682b68), SkBits2Float(0x5b292d55)); // -1.2117e+19f, 1.57146e-11f, 6.53499e+16f, 4.76191e+16f
10249 path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x0321081f)); // 1.43144e-13f, 4.7323e-37f
10250 path.conicTo(SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x3a21477a)); // 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f, 0.000615231f
10251 path.moveTo(SkBits2Float(0x21df2828), SkBits2Float(0x9a3a8a3a)); // 1.51217e-18f, -3.85756e-23f
10252 path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x28273ac2), SkBits2Float(0xe61d2a29), SkBits2Float(0x2a63962b)); // 0.00136978f, 9.2831e-15f, -1.85547e+23f, 2.02138e-13f
10253 path.conicTo(SkBits2Float(0x2d29272a), SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55)); // 9.61523e-12f, 1.5954e+13f, 4.87407e+16f, 4.88097e+16f, 5.7784e-19f
10254 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10255 path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
10256 path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10257 path.close();
10258
10259 SkPath path2(path);
10260 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10261 }
10262
fuzz763_2c(skiatest::Reporter * reporter,const char * filename)10263 static void fuzz763_2c(skiatest::Reporter* reporter, const char* filename) {
10264 SkPath path;
10265 path.setFillType((SkPathFillType) 1);
10266
10267 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x36344a4a)); // 0, 2.68653e-06f
10268 path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x364a4a4a), SkBits2Float(0x364a4a4a), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0, 3.01436e-06f, 3.01436e-06f, 0, 0
10269 path.lineTo(SkBits2Float(0x364a4a4a), SkBits2Float(0x00000000)); // 3.01436e-06f, 0
10270 path.cubicTo(SkBits2Float(0x364a30f0), SkBits2Float(0x344ac7fb), SkBits2Float(0x3656d432), SkBits2Float(0x34cabb48), SkBits2Float(0x367031a9), SkBits2Float(0x351802f1)); // 3.01288e-06f, 1.88855e-07f, 3.2012e-06f, 3.77617e-07f, 3.57917e-06f, 5.66287e-07f
10271 path.cubicTo(SkBits2Float(0x36a7b150), SkBits2Float(0x35ab09db), SkBits2Float(0x371874ed), SkBits2Float(0x3604f2c7), SkBits2Float(0x3784e0c7), SkBits2Float(0x36344a51)); // 4.99763e-06f, 1.27434e-06f, 9.08713e-06f, 1.98108e-06f, 1.58403e-05f, 2.68653e-06f
10272 path.cubicTo(SkBits2Float(0x3743dc9a), SkBits2Float(0x36344a4f), SkBits2Float(0x36fbef33), SkBits2Float(0x36344a4e), SkBits2Float(0x36604a35), SkBits2Float(0x36344a4c)); // 1.16743e-05f, 2.68653e-06f, 7.50823e-06f, 2.68653e-06f, 3.34218e-06f, 2.68653e-06f
10273 path.cubicTo(SkBits2Float(0x36531715), SkBits2Float(0x36344a4c), SkBits2Float(0x3645e3f5), SkBits2Float(0x36344a4b), SkBits2Float(0x3638b0d4), SkBits2Float(0x36344a4b)); // 3.14549e-06f, 2.68653e-06f, 2.9488e-06f, 2.68653e-06f, 2.75211e-06f, 2.68653e-06f
10274 path.cubicTo(SkBits2Float(0x35f64120), SkBits2Float(0x36344a4b), SkBits2Float(0x35764124), SkBits2Float(0x36344a4a), SkBits2Float(0x00000000), SkBits2Float(0x36344a4a)); // 1.83474e-06f, 2.68653e-06f, 9.17369e-07f, 2.68653e-06f, 0, 2.68653e-06f
10275 path.close();
10276 SkPath path1(path);
10277 path.reset();
10278 path.setFillType((SkPathFillType) 0);
10279 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10280 path.cubicTo(SkBits2Float(0x1931204a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a4a34), SkBits2Float(0x4a4a4a4a)); // 9.15721e-24f, 1.14845e-12f, 3.31014e+06f, 3.31014e+06f, 3.31432e+06f, 3.31432e+06f
10281 path.moveTo(SkBits2Float(0x000010a1), SkBits2Float(0x19312000)); // 5.96533e-42f, 9.15715e-24f
10282 path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa14a4a4a), SkBits2Float(0x08ff2ba1), SkBits2Float(0x08ff4a4a), SkBits2Float(0x4a344a4a)); // 3.31432e+06f, 3.31432e+06f, -6.85386e-19f, 1.53575e-33f, 1.53647e-33f, 2.95387e+06f
10283 path.cubicTo(SkBits2Float(0x544a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4e4a08ff), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa1a181ff)); // 3.47532e+12f, 3.31432e+06f, 1.14845e-12f, 8.47397e+08f, 3.31432e+06f, -1.09442e-18f
10284 SkPath path2(path);
10285 testPathOpFuzz(reporter, path1, path2, kReverseDifference_SkPathOp, filename);
10286 }
10287
fuzz763_6(skiatest::Reporter * reporter,const char * filename)10288 static void fuzz763_6(skiatest::Reporter* reporter, const char* filename) {
10289 SkPath path;
10290 path.setFillType((SkPathFillType) 1);
10291 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10292 path.cubicTo(SkBits2Float(0x68295b2d), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 3.19905e+24f, 0, 0, 0, 0, 4.03114e+24f
10293 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10294 path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x67d55b2a), SkBits2Float(0x67296a4b), SkBits2Float(0x67555b2a), SkBits2Float(0x677e1f70), SkBits2Float(0x66d55b2a)); // 0, 2.01509e+24f, 8.00041e+23f, 1.00755e+24f, 1.20006e+24f, 5.03773e+23f
10295 path.cubicTo(SkBits2Float(0x678f0684), SkBits2Float(0x6684f008), SkBits2Float(0x6798f8ea), SkBits2Float(0x6625a942), SkBits2Float(0x67961914), SkBits2Float(0x65ce709a)); // 1.35084e+24f, 3.1389e+23f, 1.44478e+24f, 1.95578e+23f, 1.41764e+24f, 1.21861e+23f
10296 path.cubicTo(SkBits2Float(0x679174f7), SkBits2Float(0x63199132), SkBits2Float(0x6756c79f), SkBits2Float(0x606478de), SkBits2Float(0x65682bcf), SkBits2Float(0x00000000)); // 1.3738e+24f, 2.83281e+21f, 1.01427e+24f, 6.58526e+19f, 6.85248e+22f, 0
10297 path.conicTo(SkBits2Float(0x68295b02), SkBits2Float(0x60f7f28b), SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f), SkBits2Float(0x42784f5a)); // 3.19903e+24f, 1.42932e+20f, 0, 5.14279e+25f, 62.0775f
10298 path.close();
10299 path.moveTo(SkBits2Float(0x654d6d10), SkBits2Float(0x00000000)); // 6.06311e+22f, 0
10300 path.lineTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000)); // 6.14991e+25f, 0
10301 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc0)); // 0, 6.14991e+25f
10302 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10303
10304 SkPath path1(path);
10305 path.reset();
10306 path.setFillType((SkPathFillType) 0);
10307 path.moveTo(SkBits2Float(0x3ac23a55), SkBits2Float(0x2a292827)); // 0.00148184f, 1.50241e-13f
10308 path.lineTo(SkBits2Float(0x63962be6), SkBits2Float(0x272a812a)); // 5.54035e+21f, 2.36623e-15f
10309
10310 SkPath path2(path);
10311 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10312 }
10313
fuzz763_7(skiatest::Reporter * reporter,const char * filename)10314 static void fuzz763_7(skiatest::Reporter* reporter, const char* filename) {
10315 SkPath path;
10316 path.setFillType((SkPathFillType) 0);
10317
10318 SkPath path1(path);
10319 path.reset();
10320 path.setFillType((SkPathFillType) 0);
10321 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10322 path.moveTo(SkBits2Float(0x0f2a312a), SkBits2Float(0xc0032108)); // 8.39112e-30f, -2.04889f
10323 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76395e-19f, 4.7323e-37f, 6.14991e+25f
10324 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10325 path.moveTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
10326 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0xef2a8c55), SkBits2Float(0x295b2d2a), SkBits2Float(0x08685568), SkBits2Float(0x7bc00321)); // 5.76397e-19f, -5.27821e+28f, 4.86669e-14f, 6.99154e-34f, 1.99397e+36f
10327 path.lineTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
10328 path.close();
10329 path.moveTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
10330 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10331 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10332 path.lineTo(SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a281a4f)); // 0.00105461f, -8.09385e-33f
10333 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f
10334 path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
10335 path.conicTo(SkBits2Float(0xba1f203a), SkBits2Float(0xc422c538), SkBits2Float(0x215d5927), SkBits2Float(0x70ec2ac2), SkBits2Float(0x2a51523a)); // -0.000607017f, -651.082f, 7.49957e-19f, 5.84721e+29f, 1.85915e-13f
10336 path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x683a5b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.52017e+24f
10337 path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
10338 path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 1.89339e-13f
10339 path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a688c5b), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x8c08555b), SkBits2Float(0x2a2a29ca)); // 5.73801e-19f, 2.06544e-13f, 3.19905e+24f, 9.6297e-12f, -1.05027e-31f, 1.51135e-13f
10340 path.quadTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
10341 path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10342 path.close();
10343 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10344 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55), SkBits2Float(0xed7aba1f), SkBits2Float(0x2a212a8c)); // 6.14991e+25f, 4.88097e+16f, 5.7784e-19f, -4.84977e+27f, 1.43144e-13f
10345 path.moveTo(SkBits2Float(0x2d212d08), SkBits2Float(0x5568295b)); // 9.16179e-12f, 1.5954e+13f
10346 path.moveTo(SkBits2Float(0x5529685b), SkBits2Float(0x11295b68)); // 1.16416e+13f, 1.33599e-28f
10347 path.conicTo(SkBits2Float(0x5b782968), SkBits2Float(0x3a292d55), SkBits2Float(0x2a8c555b), SkBits2Float(0x68295a2d), SkBits2Float(0x2d296855)); // 6.98513e+16f, 0.000645359f, 2.49282e-13f, 3.19897e+24f, 9.6297e-12f
10348 path.moveTo(SkBits2Float(0x555b8c55), SkBits2Float(0x21682929)); // 1.50872e+13f, 7.86591e-19f
10349 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10350 path.conicTo(SkBits2Float(0xac2d8ced), SkBits2Float(0x5b682968), SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55), SkBits2Float(0x081f282a)); // -2.4663e-12f, 6.53477e+16f, 4.76191e+16f, 5.7784e-19f, 4.78945e-34f
10351 path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10352 path.close();
10353 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10354 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x03081f21), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x2147ed7a)); // 6.14991e+25f, 2.50338e-13f, 4.00025e-37f, 5.63611e+25f, 6.77381e-19f
10355 path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10356 path.close();
10357 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10358 path.quadTo(SkBits2Float(0x2d28282a), SkBits2Float(0x5568295b), SkBits2Float(0x3a21df68), SkBits2Float(0x4f9a3a8a)); // 9.55861e-12f, 1.5954e+13f, 0.000617495f, 5.17506e+09f
10359 path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10360 path.close();
10361 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10362 path.cubicTo(SkBits2Float(0x5568c23a), SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a), SkBits2Float(0x3a7bc003), SkBits2Float(0x294b2827)); // 1.59951e+13f, 4.87407e+16f, 5.7784e-19f, 4.61198e-19f, 0.00096035f, 4.51099e-14f
10363
10364 SkPath path2(path);
10365 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10366 }
10367
kfuzz2(skiatest::Reporter * reporter,const char * filename)10368 static void kfuzz2(skiatest::Reporter* reporter, const char* filename) {
10369 SkPath path1;
10370 SkPath path;
10371 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10372 path.close();
10373 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10374 path.cubicTo(SkBits2Float(0xe3000000), SkBits2Float(0xf19e92c7), SkBits2Float(0xf17febcb), SkBits2Float(0xff7febcb), SkBits2Float(0x60600100), SkBits2Float(0x0100ff60)); // -2.36118e+21f, -1.57043e+30f, -1.26726e+30f, -3.40177e+38f, 6.45647e+19f, 2.36931e-38f
10375 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10376 path.close();
10377 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10378 path.lineTo(SkBits2Float(0x60601a1d), SkBits2Float(0x60606060)); // 6.4593e+19f, 6.46721e+19f
10379 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10380 path.close();
10381 path.moveTo(SkBits2Float(0xe5e2f300), SkBits2Float(0xee244a40)); // -1.33967e+23f, -1.27113e+28f
10382 path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10383 path.close();
10384 path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10385 path.lineTo(SkBits2Float(0xfafafafa), SkBits2Float(0xe30000fa)); // -6.51582e+35f, -2.36125e+21f
10386 path.conicTo(SkBits2Float(0x92e592e5), SkBits2Float(0xfafafafb), SkBits2Float(0xc4fa0000), SkBits2Float(0x6060fafa), SkBits2Float(0x60606060)); // -1.44881e-27f, -6.51582e+35f, -2000, 6.48462e+19f, 6.46721e+19f
10387 path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10388 path.close();
10389 path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10390 path.cubicTo(SkBits2Float(0xe3000000), SkBits2Float(0xf19e92c7), SkBits2Float(0xf17febcb), SkBits2Float(0xff7febcb), SkBits2Float(0xfafafa00), SkBits2Float(0xfafafafa)); // -2.36118e+21f, -1.57043e+30f, -1.26726e+30f, -3.40177e+38f, -6.51572e+35f, -6.51582e+35f
10391 path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10392 path.close();
10393 path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10394 path.cubicTo(SkBits2Float(0xe3000000), SkBits2Float(0xe39e92c7), SkBits2Float(0xf17febcb), SkBits2Float(0xff7febcb), SkBits2Float(0xeed0ee9a), SkBits2Float(0x9a98ffca)); // -2.36118e+21f, -5.85032e+21f, -1.26726e+30f, -3.40177e+38f, -3.23307e+28f, -6.3279e-23f
10395 path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10396 path.close();
10397 SkPath path2(path);
10398 testPathOpFuzz(reporter, path1, path2, kXOR_SkPathOp, filename);
10399 }
10400
fuzz763_10(skiatest::Reporter * reporter,const char * filename)10401 static void fuzz763_10(skiatest::Reporter* reporter, const char* filename) {
10402 SkPath path;
10403 path.setFillType((SkPathFillType) 1);
10404 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 0, 4.03114e+24f
10405 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10406 path.quadTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 6.14991e+25f, 0, 0, 6.14991e+25f
10407 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 0, 4.03114e+24f
10408 path.close();
10409
10410 SkPath path1(path);
10411 path.reset();
10412 path.setFillType((SkPathFillType) 0);
10413 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10414 path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x2a8c8f55)); // 4.87407e+16f, 2.49685e-13f
10415 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10416 path.close();
10417 path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10418 path.conicTo(SkBits2Float(0x682d2fed), SkBits2Float(0x755b6829), SkBits2Float(0x5b292d2b), SkBits2Float(0xc92a8c55), SkBits2Float(0x081f2a21)); // 3.27141e+24f, 2.78131e+32f, 4.76189e+16f, -698565, 4.78968e-34f
10419 path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10420 path.close();
10421 path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10422 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a29)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121588
10423 path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10424 path.close();
10425 path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10426 path.quadTo(SkBits2Float(0x6829682d), SkBits2Float(0x292d555b), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a29)); // 3.20001e+24f, 3.84878e-14f, 2.49282e-13f, 4.78969e-34f
10427 path.conicTo(SkBits2Float(0x6a497b19), SkBits2Float(0x218ced7a), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x47ed3a7a)); // 6.08939e+25f, 9.54963e-19f, 4.7323e-37f, 5.63611e+25f, 121461
10428 path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10429 path.close();
10430 path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10431 path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3a21df), SkBits2Float(0x2728282a), SkBits2Float(0x8a3a2129)); // 9.4456e-15f, -8.96194e-33f, 2.33365e-15f, -8.96181e-33f
10432 path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3a3ac2b3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.000712435f, 1.50241e-13f, -1.38859e-25f
10433 path.lineTo(SkBits2Float(0x272a802a), SkBits2Float(0x2a8c2d29)); // 2.36617e-15f, 2.49003e-13f
10434 path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10435 path.close();
10436 path.moveTo(SkBits2Float(0x4f9a3a29), SkBits2Float(0x3ab38a28)); // 5.17501e+09f, 0.00136978f
10437 path.quadTo(SkBits2Float(0xc368305b), SkBits2Float(0x5b296855), SkBits2Float(0x2d8c5568), SkBits2Float(0x1f2a2172)); // -232.189f, 4.7684e+16f, 1.59541e-11f, 3.60266e-20f
10438 path.lineTo(SkBits2Float(0x29c00321), SkBits2Float(0x5b4b7b13)); // 8.52706e-14f, 5.72747e+16f
10439
10440 SkPath path2(path);
10441 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10442 }
10443
fuzz763_11(skiatest::Reporter * reporter,const char * filename)10444 static void fuzz763_11(skiatest::Reporter* reporter, const char* filename) {
10445 SkPath path;
10446 path.setFillType((SkPathFillType) 0);
10447
10448 SkPath path1(path);
10449 path.reset();
10450 path.setFillType((SkPathFillType) 0);
10451 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10452 path.moveTo(SkBits2Float(0x2a0f312a), SkBits2Float(0xc0032108)); // 1.2718e-13f, -2.04889f
10453 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76395e-19f, 4.7323e-37f, 6.14991e+25f
10454 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7b21), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14984e+25f, 9.43289e-15f, 1.21279e-11f
10455 path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
10456 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0xef2a8c55), SkBits2Float(0x295b2d2a), SkBits2Float(0x08685568), SkBits2Float(0x7bc00321)); // 5.76397e-19f, -5.27821e+28f, 4.86669e-14f, 6.99154e-34f, 1.99397e+36f
10457 path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
10458 path.close();
10459 path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
10460 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10461 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10462 path.lineTo(SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a281a4f)); // 0.00105461f, -8.09385e-33f
10463 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x2a812a3b), SkBits2Float(0x2a552927)); // 2.25206e-21f, 300.343f, 2.29443e-13f, 1.89325e-13f
10464 path.quadTo(SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x203a3b27), SkBits2Float(0x22c5381f)); // 0.00241343f, 3.71093e-14f, 1.57744e-19f, 5.34564e-18f
10465 path.moveTo(SkBits2Float(0x5d27ec2a), SkBits2Float(0x705921c2)); // 7.56256e+17f, 2.68796e+29f
10466 path.quadTo(SkBits2Float(0x102a5152), SkBits2Float(0x5b2dd912), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 3.35892e-29f, 4.89338e+16f, 4.03114e+24f, 1.50617e+13f
10467 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032127)); // 3.60396e-20f, -2.0489f
10468 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0x2a8c684b), SkBits2Float(0xf05b272d), SkBits2Float(0x2a1f1555), SkBits2Float(0x21082a21), SkBits2Float(0x6a4b7b03)); // 3.4979e+24f, 2.49414e-13f, -2.71298e+29f, 1.41294e-13f, 4.61343e-19f, 6.14982e+25f
10469 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10470 path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10471 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0xef2a8c55), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -5.27821e+28f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
10472 path.lineTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10473 path.close();
10474 path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10475 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x2a21211f)); // 4.85282e+16f, 1.43112e-13f
10476 path.lineTo(SkBits2Float(0x03552a8c), SkBits2Float(0x6a4f7b28)); // 6.26439e-37f, 6.27073e+25f
10477 path.conicTo(SkBits2Float(0x2347ed93), SkBits2Float(0x282a3a21), SkBits2Float(0x3adf2128), SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28)); // 1.08381e-17f, 9.4495e-15f, 0.00170234f, 2.58753e+09f, 0.00136978f
10478 path.lineTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10479 path.close();
10480 path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10481 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x262a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 5.91556e-16f, 0.000649768f
10482 path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
10483 path.conicTo(SkBits2Float(0x371f203a), SkBits2Float(0xc52a22c4), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x5210513a)); // 9.48464e-06f, -2722.17f, -55.289f, 0.000916855f, 1.5496e+11f
10484 path.cubicTo(SkBits2Float(0x63102ad9), SkBits2Float(0x29c80927), SkBits2Float(0x633a27b0), SkBits2Float(0x2909c827), SkBits2Float(0x272927b1), SkBits2Float(0x3a685b2d)); // 2.65942e+21f, 8.88337e-14f, 3.43395e+21f, 3.05937e-14f, 2.3475e-15f, 0.000886368f
10485 path.moveTo(SkBits2Float(0x682d6829), SkBits2Float(0x29685555)); // 3.27556e+24f, 5.15884e-14f
10486 path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x5b2d2729)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 4.87382e+16f
10487 path.quadTo(SkBits2Float(0x2d685568), SkBits2Float(0x5568295b), SkBits2Float(0x2a552d29), SkBits2Float(0x295b2d27)); // 1.32066e-11f, 1.5954e+13f, 1.89339e-13f, 4.86669e-14f
10488 path.lineTo(SkBits2Float(0x682d6829), SkBits2Float(0x29685555)); // 3.27556e+24f, 5.15884e-14f
10489 path.close();
10490
10491 SkPath path2(path);
10492 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10493 }
10494
fuzz763_12(skiatest::Reporter * reporter,const char * filename)10495 static void fuzz763_12(skiatest::Reporter* reporter, const char* filename) {
10496 SkPath path;
10497 path.setFillType((SkPathFillType) 1);
10498 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10499 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a29082a)); // 0, 5.10868e+25f
10500 path.conicTo(SkBits2Float(0x6a295ac3), SkBits2Float(0x61bb988e), SkBits2Float(0x6829682d), SkBits2Float(0x5f3ba76a), SkBits2Float(0x42730a87)); // 5.11843e+25f, 4.32567e+20f, 3.20001e+24f, 1.35219e+19f, 60.7603f
10501 path.conicTo(SkBits2Float(0x67aedf99), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x3f801112)); // 1.65163e+24f, 0, 0, 0, 1.00052f
10502 path.close();
10503 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10504 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 6.14991e+25f, 0, 0, 4.03114e+24f, 1.50617e+13f
10505 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10506 path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x67d55b2a), SkBits2Float(0x67296a4b), SkBits2Float(0x67555b2a), SkBits2Float(0x677e1f70), SkBits2Float(0x66d55b2a)); // 0, 2.01509e+24f, 8.00041e+23f, 1.00755e+24f, 1.20006e+24f, 5.03773e+23f
10507 path.cubicTo(SkBits2Float(0x678f0684), SkBits2Float(0x6684f008), SkBits2Float(0x6798f8ea), SkBits2Float(0x6625a942), SkBits2Float(0x67961914), SkBits2Float(0x65ce709a)); // 1.35084e+24f, 3.1389e+23f, 1.44478e+24f, 1.95578e+23f, 1.41764e+24f, 1.21861e+23f
10508 path.cubicTo(SkBits2Float(0x679158b0), SkBits2Float(0x00000000), SkBits2Float(0x67531e34), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 1.37276e+24f, 0, 9.96976e+23f, 0, 0, 0
10509 path.close();
10510
10511 SkPath path1(path);
10512 path.reset();
10513 path.setFillType((SkPathFillType) 0);
10514 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10515 path.conicTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003), SkBits2Float(0xed237a6a), SkBits2Float(0x2d682967), SkBits2Float(0x2a8c555b)); // 4.61198e-19f, 1.64987e+07f, -3.16213e+27f, 1.31969e-11f, 2.49282e-13f
10516 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10517 path.close();
10518 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10519 path.lineTo(SkBits2Float(0x3a6821df), SkBits2Float(0x2a8c3a8a)); // 0.000885514f, 2.49096e-13f
10520 path.moveTo(SkBits2Float(0x29272a1d), SkBits2Float(0xb03a2a55)); // 3.7118e-14f, -6.77266e-10f
10521 path.moveTo(SkBits2Float(0x20213b1e), SkBits2Float(0xc5272927)); // 1.36568e-19f, -2674.57f
10522 path.quadTo(SkBits2Float(0xc422373b), SkBits2Float(0xec2a201f), SkBits2Float(0x21c25d27), SkBits2Float(0x523a7059)); // -648.863f, -8.22676e+26f, 1.31706e-18f, 2.00187e+11f
10523 path.cubicTo(SkBits2Float(0x12102a10), SkBits2Float(0xe73a28d9), SkBits2Float(0xc8092763), SkBits2Float(0x2927b029), SkBits2Float(0x295b2d27), SkBits2Float(0x2d685568)); // 4.54902e-28f, -8.79114e+23f, -140446, 3.72342e-14f, 4.86669e-14f, 1.32066e-11f
10524 path.moveTo(SkBits2Float(0x68556809), SkBits2Float(0x555b2d29)); // 4.03113e+24f, 1.50617e+13f
10525 path.moveTo(SkBits2Float(0x1f2a212a), SkBits2Float(0x2d032108)); // 3.60263e-20f, 7.45382e-12f
10526 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // 4.03114e+24f, 1.89339e-13f
10527 path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a528c5b), SkBits2Float(0x284f5b2d), SkBits2Float(0x218aa621), SkBits2Float(0x3f2d2db3), SkBits2Float(0x68293a2a)); // 5.73801e-19f, 1.87004e-13f, 1.15106e-14f, 9.39522e-19f, 0.676479f, 3.19661e+24f
10528
10529 SkPath path2(path);
10530 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10531 }
10532
fuzz763_13(skiatest::Reporter * reporter,const char * filename)10533 static void fuzz763_13(skiatest::Reporter* reporter, const char* filename) {
10534 SkPath path;
10535 path.setFillType((SkPathFillType) 1);
10536
10537 SkPath path1(path);
10538 path.reset();
10539 path.setFillType((SkPathFillType) 0);
10540 path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10541 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3adf2128), SkBits2Float(0x4f1a3a8a)); // 6.14991e+25f, 75739, 9.4495e-15f, 0.00170234f, 2.58753e+09f
10542 path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10543 path.close();
10544 path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10545 path.cubicTo(SkBits2Float(0x3ac2213a), SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a8128), SkBits2Float(0x3a2a5529), SkBits2Float(0x3b1e2ab0)); // 0.00148109f, 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f, 0.00241343f
10546 path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10547 path.close();
10548 path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10549 path.cubicTo(SkBits2Float(0x3b272927), SkBits2Float(0x381f203a), SkBits2Float(0x2ac422c5), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152)); // 0.00255067f, 3.79386e-05f, 3.48407e-13f, -55.289f, 0.000916855f, 1.2818e-13f
10550 path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x68295b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.19905e+24f
10551 path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
10552 path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 1.89339e-13f
10553 path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a688c5b), SkBits2Float(0x6829292d), SkBits2Float(0x2d296855), SkBits2Float(0x8c08555b), SkBits2Float(0x2a2a291f)); // 5.73801e-19f, 2.06544e-13f, 3.19536e+24f, 9.6297e-12f, -1.05027e-31f, 1.51133e-13f
10554 path.conicTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f, 1.99397e+36f
10555 path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10556 path.close();
10557 path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10558 path.lineTo(SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55)); // 4.88097e+16f, 5.7784e-19f
10559 path.conicTo(SkBits2Float(0x8ced7aba), SkBits2Float(0x3f2a212a), SkBits2Float(0x2d212d08), SkBits2Float(0x5568295b), SkBits2Float(0x29685b2d)); // -3.65895e-31f, 0.664569f, 9.16179e-12f, 1.5954e+13f, 5.15934e-14f
10560 path.lineTo(SkBits2Float(0x68295b68), SkBits2Float(0x2d296855)); // 3.19906e+24f, 9.6297e-12f
10561 path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10562 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x6aba7b03), SkBits2Float(0x2147ed7a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 1.12721e+26f, 6.77381e-19f
10563 path.quadTo(SkBits2Float(0x6028282a), SkBits2Float(0x68292ddf), SkBits2Float(0x5b2d555b), SkBits2Float(0x68556829)); // 4.84679e+19f, 3.1957e+24f, 4.8789e+16f, 4.03114e+24f
10564
10565 SkPath path2(path);
10566 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10567 }
10568
fuzz763_14(skiatest::Reporter * reporter,const char * filename)10569 static void fuzz763_14(skiatest::Reporter* reporter, const char* filename) {
10570 SkPath path;
10571 path.setFillType((SkPathFillType) 0);
10572
10573 SkPath path1(path);
10574 path.reset();
10575 path.setFillType((SkPathFillType) 0);
10576 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0xf45b2d29)); // 4.03114e+24f, -6.94598e+31f
10577 path.moveTo(SkBits2Float(0x1f2a302a), SkBits2Float(0xc8032108)); // 3.60387e-20f, -134276
10578 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf0db684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x302a5b25), SkBits2Float(0xf0685568)); // 3.4979e+24f, -5.43226e+29f, -1.64207e-31f, 5.76527e-19f, 6.19752e-10f, -2.87615e+29f
10579
10580 SkPath path2(path);
10581 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10582 }
10583
fuzz763_15(skiatest::Reporter * reporter,const char * filename)10584 static void fuzz763_15(skiatest::Reporter* reporter, const char* filename) {
10585 SkPath path;
10586 path.setFillType((SkPathFillType) 1);
10587
10588 SkPath path1(path);
10589 path.reset();
10590 path.setFillType((SkPathFillType) 0);
10591 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55)); // 4.76191e+16f, 5.7784e-19f
10592 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10593 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x2c6829c0), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a29)); // 5.77848e-19f, 4.7323e-37f, 3.29924e-12f, 2.49282e-13f, 4.78969e-34f
10594 path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10595 path.close();
10596 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10597 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0xdf218a28), SkBits2Float(0x4f1a3a3a)); // 6.14991e+25f, 75739, 9.4495e-15f, -1.16402e+19f, 2.58751e+09f
10598 path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x283ac221), SkBits2Float(0xe6432a29), SkBits2Float(0x2a96812b)); // 0.00136978f, 1.03672e-14f, -2.3041e+23f, 2.6735e-13f
10599 path.lineTo(SkBits2Float(0x5529272a), SkBits2Float(0x1eb03a2a)); // 1.16241e+13f, 1.86588e-20f
10600 path.conicTo(SkBits2Float(0x2a272021), SkBits2Float(0x3ac52729), SkBits2Float(0xc422313b), SkBits2Float(0xec2a201f), SkBits2Float(0x21c25d27)); // 1.48437e-13f, 0.00150416f, -648.769f, -8.22676e+26f, 1.31706e-18f
10601 path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10602 path.close();
10603 path.moveTo(SkBits2Float(0x1051523a), SkBits2Float(0xd912102a)); // 4.12813e-29f, -2.56957e+15f
10604 path.close();
10605 path.moveTo(SkBits2Float(0x1051523a), SkBits2Float(0xd912102a)); // 4.12813e-29f, -2.56957e+15f
10606 path.quadTo(SkBits2Float(0xc82763e7), SkBits2Float(0x2927b029), SkBits2Float(0x295b2d27), SkBits2Float(0x2d685568)); // -171408, 3.72342e-14f, 4.86669e-14f, 1.32066e-11f
10607 path.moveTo(SkBits2Float(0x68556809), SkBits2Float(0x8c555b2d)); // 4.03113e+24f, -1.64364e-31f
10608 path.moveTo(SkBits2Float(0x081f2a21), SkBits2Float(0x252d0321)); // 4.78968e-34f, 1.50064e-16f
10609 path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x5b2df068)); // 1.59583e+13f, 4.89595e+16f
10610 path.quadTo(SkBits2Float(0x2a1f2a8c), SkBits2Float(0x21482a21), SkBits2Float(0x4b7bc003), SkBits2Float(0x8ced3a6a)); // 1.41368e-13f, 6.78184e-19f, 1.64987e+07f, -3.65508e-31f
10611 path.moveTo(SkBits2Float(0x21481f21), SkBits2Float(0x4b7bc003)); // 6.78038e-19f, 1.64987e+07f
10612 path.conicTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d155b2d), SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x2a8c8f55)); // 3.20982e+24f, 8.48991e-12f, 1.5954e+13f, 4.87407e+16f, 2.49685e-13f
10613 path.lineTo(SkBits2Float(0x21481f21), SkBits2Float(0x4b7bc003)); // 6.78038e-19f, 1.64987e+07f
10614 path.close();
10615 path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10616 path.conicTo(SkBits2Float(0x682d2fed), SkBits2Float(0x755b6829), SkBits2Float(0x5b292d2b), SkBits2Float(0xc92a8c55), SkBits2Float(0x081f2a21)); // 3.27141e+24f, 2.78131e+32f, 4.76189e+16f, -698565, 4.78968e-34f
10617 path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10618 path.close();
10619 path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10620 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x212aed7a), SkBits2Float(0x0321081f), SkBits2Float(0x293a7bc0), SkBits2Float(0x2147ed7a)); // 6.14991e+25f, 5.79125e-19f, 4.7323e-37f, 4.14076e-14f, 6.77381e-19f
10621 path.quadTo(SkBits2Float(0x6829682d), SkBits2Float(0x292d555b), SkBits2Float(0x292a8c55), SkBits2Float(0x21081f2a)); // 3.20001e+24f, 3.84878e-14f, 3.78693e-14f, 4.61198e-19f
10622 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x218ced7a), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x47ed3a7a)); // 6.14991e+25f, 9.54963e-19f, 4.7323e-37f, 5.63611e+25f, 121461
10623 path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10624 path.close();
10625 path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10626 path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3a21df), SkBits2Float(0x2728282a), SkBits2Float(0x8a3a21df)); // 9.4456e-15f, -8.96194e-33f, 2.33365e-15f, -8.96194e-33f
10627 path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3a3ac2b3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.000712435f, 1.50241e-13f, -1.38859e-25f
10628 path.lineTo(SkBits2Float(0x272a802a), SkBits2Float(0x2a8c2d29)); // 2.36617e-15f, 2.49003e-13f
10629 path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10630 path.close();
10631 path.moveTo(SkBits2Float(0x4f9a3a29), SkBits2Float(0x3ab38a28)); // 5.17501e+09f, 0.00136978f
10632 path.quadTo(SkBits2Float(0xc368305b), SkBits2Float(0x5b296855), SkBits2Float(0x2d8c5568), SkBits2Float(0x1f2a2172)); // -232.189f, 4.7684e+16f, 1.59541e-11f, 3.60266e-20f
10633 path.lineTo(SkBits2Float(0x29c00321), SkBits2Float(0x5b4b7b13)); // 8.52706e-14f, 5.72747e+16f
10634
10635 SkPath path2(path);
10636 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10637 }
10638
fuzz763_16(skiatest::Reporter * reporter,const char * filename)10639 static void fuzz763_16(skiatest::Reporter* reporter, const char* filename) {
10640 SkPath path;
10641 path.setFillType((SkPathFillType) 0);
10642
10643 SkPath path1(path);
10644 path.reset();
10645 path.setFillType((SkPathFillType) 0);
10646 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10647 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10648 path.cubicTo(SkBits2Float(0x68372d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c552775), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.46012e+24f, -2.71613e+29f, -1.64208e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10649 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
10650 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
10651 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
10652 path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
10653 path.close();
10654 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
10655 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10656 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10657 path.conicTo(SkBits2Float(0x68385b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.48239e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
10658 path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10659 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10660 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 6.14991e+25f, 75739
10661 path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10662 path.close();
10663 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10664 path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
10665 path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10666 path.close();
10667 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10668 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10669 path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10670 path.close();
10671 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10672 path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x681aed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 2.92648e+24f, 1.46617e+13f, 9.01175e-21f
10673 path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21512727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 7.08638e-19f
10674 path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10675 path.close();
10676 path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10677 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10678 path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0xc0032108)); // 3.60404e-20f, -2.04889f
10679 path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05bd24b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0xed4b7bc0)); // 4.06458e+24f, -2.72126e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, -3.93594e+27f
10680 path.conicTo(SkBits2Float(0x212a8c6a), SkBits2Float(0x0329081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77841e-19f, 4.9674e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10681 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10682 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
10683 path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10684 path.close();
10685 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10686 path.lineTo(SkBits2Float(0x555b6829), SkBits2Float(0x6c212a8c)); // 1.50775e+13f, 7.79352e+26f
10687 path.conicTo(SkBits2Float(0x084b0321), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0x5bf05568), SkBits2Float(0x212a3a8c)); // 6.10918e-34f, 1.16348e+26f, 0.000209024f, 1.35296e+17f, 5.76757e-19f
10688 path.lineTo(SkBits2Float(0x8c558c55), SkBits2Float(0x212a1f2a)); // -1.64512e-31f, 5.76395e-19f
10689
10690 SkPath path2(path);
10691 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10692 }
10693
fuzz763_17(skiatest::Reporter * reporter,const char * filename)10694 static void fuzz763_17(skiatest::Reporter* reporter, const char* filename) {
10695 SkPath path;
10696 path.setFillType((SkPathFillType) 0);
10697
10698 SkPath path1(path);
10699 path.reset();
10700 path.setFillType((SkPathFillType) 0);
10701 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10702 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10703 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10704 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
10705 path.moveTo(SkBits2Float(0x6835282d), SkBits2Float(0xf0682955)); // 3.42196e+24f, -2.87402e+29f
10706 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 4.2514e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
10707 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10708 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10709 path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
10710 path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10711 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10712 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x254793ed)); // 2.49282e-13f, 5.76399e-19f, 4.7323e-37f, 6.14991e+25f, 1.73106e-16f
10713 path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10714 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10715 path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10716 path.close();
10717 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10718 path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
10719 path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0x16c52a22), SkBits2Float(0x515d27ec)); // 2.22225e-15f, 0.000713932f, -732.486f, 3.18537e-25f, 5.93661e+10f
10720 path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10721 path.close();
10722 path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10723 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10724 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10725 path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10726 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10727 path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10728 path.lineTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x2a212a1f)); // 2.49282e-13f, 1.43143e-13f
10729 path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10730 path.close();
10731 path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10732 path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x2a1f08c0)); // -1.31678e-31f, 1.41251e-13f
10733 path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10734 path.close();
10735 path.moveTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
10736 path.conicTo(SkBits2Float(0x55086821), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x5b2c6829), SkBits2Float(0x21218c55), SkBits2Float(0x2a6c1f03)); // 9.3738e+12f, 6.14991e+25f, 4.85282e+16f, 5.47346e-19f, 2.09718e-13f
10737 path.lineTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
10738 path.close();
10739 path.moveTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
10740 path.lineTo(SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a)); // 1.16348e+26f, 0.000209024f
10741
10742 SkPath path2(path);
10743 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10744 }
10745
fuzz763_18(skiatest::Reporter * reporter,const char * filename)10746 static void fuzz763_18(skiatest::Reporter* reporter, const char* filename) {
10747 SkPath path;
10748 path.setFillType((SkPathFillType) 0);
10749
10750 SkPath path1(path);
10751 path.reset();
10752 path.setFillType((SkPathFillType) 0);
10753 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10754 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10755 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10756 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
10757 path.moveTo(SkBits2Float(0x6835282d), SkBits2Float(0xf0682955)); // 3.42196e+24f, -2.87402e+29f
10758 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 4.2514e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
10759 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10760 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10761 path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
10762 path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10763 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10764 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x254793ed)); // 2.49282e-13f, 5.76399e-19f, 4.7323e-37f, 6.14991e+25f, 1.73106e-16f
10765 path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10766 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10767 path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10768 path.close();
10769 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10770 path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
10771 path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0x16c52a22), SkBits2Float(0x515d27ec)); // 2.22225e-15f, 0.000713932f, -732.486f, 3.18537e-25f, 5.93661e+10f
10772 path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10773 path.close();
10774 path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10775 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10776 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10777 path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10778 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10779 path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10780 path.lineTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x2a212a1f)); // 2.49282e-13f, 1.43143e-13f
10781 path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10782 path.close();
10783 path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10784 path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x2a1f08c0)); // -1.31678e-31f, 1.41251e-13f
10785
10786 path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10787 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10788 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10789 path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10790 path.conicTo(SkBits2Float(0x2a8c54ed), SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003), SkBits2Float(0x29ed846a), SkBits2Float(0x555b2d28)); // 2.49279e-13f, 4.61198e-19f, 1.64987e+07f, 1.05479e-13f, 1.50617e+13f
10791 path.conicTo(SkBits2Float(0x68392d5b), SkBits2Float(0xf0682955), SkBits2Float(0x2a1f5b2d), SkBits2Float(0xef552a21), SkBits2Float(0x5b2d2a8c)); // 3.4979e+24f, -2.87402e+29f, 1.41537e-13f, -6.59712e+28f, 4.8742e+16f
10792
10793 SkPath path2(path);
10794 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10795 }
10796
fuzz763_19(skiatest::Reporter * reporter,const char * filename)10797 static void fuzz763_19(skiatest::Reporter* reporter, const char* filename) {
10798 SkPath path;
10799 path.setFillType((SkPathFillType) 1);
10800
10801 SkPath path1(path);
10802 path.reset();
10803 path.setFillType((SkPathFillType) 0);
10804 path.moveTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003)); // 4.61198e-19f, 1.64987e+07f
10805 path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 9.43289e-15f, 1.61207e+25f
10806 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10807 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 4.2514e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
10808 path.moveTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10809 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10810 path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x8c5bf055), SkBits2Float(0x2a1f2a55), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, -1.69435e-31f, 1.41367e-13f, 4.7362e-37f, 1.43189e+16f
10811 path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10812 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10813 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2547937a)); // 2.49282e-13f, 5.76399e-19f, 4.7323e-37f, 6.14991e+25f, 1.73105e-16f
10814 path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10815 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10816 path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10817 path.close();
10818 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10819 path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
10820 path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21515d27)); // 2.22225e-15f, 0.000713932f, -732.486f, -1.90686e+27f, 7.09352e-19f
10821 path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10822 path.close();
10823 path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10824 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10825 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10826 path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10827 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
10828 path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10829 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
10830 path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10831 path.close();
10832 path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10833 path.lineTo(SkBits2Float(0x555b2c29), SkBits2Float(0x6c212a8c)); // 1.50614e+13f, 7.79352e+26f
10834 path.conicTo(SkBits2Float(0x084b0321), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0xf05b5568), SkBits2Float(0x212a3a8c)); // 6.10918e-34f, 1.16348e+26f, 0.000209024f, -2.71522e+29f, 5.76757e-19f
10835 path.conicTo(SkBits2Float(0x290321d9), SkBits2Float(0x555b2d68), SkBits2Float(0x2a8c558c), SkBits2Float(0x2abe2a1f), SkBits2Float(0x7bc00321)); // 2.91172e-14f, 1.50618e+13f, 2.49284e-13f, 3.378e-13f, 1.99397e+36f
10836 path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10837 path.close();
10838 path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10839 path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x1f2128c0)); // -1.31678e-31f, 3.41268e-20f
10840 path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10841 path.close();
10842
10843 SkPath path2(path);
10844 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10845 }
10846
fuzz763_20(skiatest::Reporter * reporter,const char * filename)10847 static void fuzz763_20(skiatest::Reporter* reporter, const char* filename) {
10848 SkPath path;
10849 path.setFillType((SkPathFillType) 0);
10850
10851 SkPath path1(path);
10852 path.reset();
10853 path.setFillType((SkPathFillType) 0);
10854 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10855 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10856 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
10857 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
10858 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10859 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2a8c552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 2.49281e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
10860 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10861 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10862 path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
10863 path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10864 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10865 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321182a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.73414e-37f, 6.14991e+25f, 75739
10866 path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10867 path.close();
10868 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10869 path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
10870 path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10871 path.close();
10872 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10873 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10874 path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10875 path.close();
10876 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10877 path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
10878 path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x51282727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 4.51382e+10f
10879 path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10880 path.close();
10881 path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10882 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x8c555b2d)); // 4.03114e+24f, -1.64364e-31f
10883 path.moveTo(SkBits2Float(0x081f2a31), SkBits2Float(0xc0032921)); // 4.78969e-34f, -2.04939f
10884 path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05bd24b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0xed4b7bc0)); // 4.06458e+24f, -2.72126e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, -3.93594e+27f
10885 path.conicTo(SkBits2Float(0x212a8c6a), SkBits2Float(0x4329081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 5.77841e-19f, 169.032f, 6.14991e+25f, 9.43289e-15f, 4.8745e+16f
10886 path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10887 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x3a210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 0.000614217f, 1.99729e+36f
10888 path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10889 path.close();
10890 path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10891 path.lineTo(SkBits2Float(0x555b6829), SkBits2Float(0x6c212a8c)); // 1.50775e+13f, 7.79352e+26f
10892 path.lineTo(SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556830)); // 4.88298e+16f, -2.64185e+29f
10893 path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10894 path.close();
10895 path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10896 path.conicTo(SkBits2Float(0x0321d90a), SkBits2Float(0x555b2d68), SkBits2Float(0x2a8c558c), SkBits2Float(0x212a2a1f), SkBits2Float(0x4b7bc003)); // 4.75628e-37f, 1.50618e+13f, 2.49284e-13f, 5.7654e-19f, 1.64987e+07f
10897 path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x212128c0)); // -1.31678e-31f, 5.46029e-19f
10898 path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10899 path.close();
10900
10901 SkPath path2(path);
10902 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10903 }
10904
fuzz763_21(skiatest::Reporter * reporter,const char * filename)10905 static void fuzz763_21(skiatest::Reporter* reporter, const char* filename) {
10906 SkPath path;
10907 path.setFillType((SkPathFillType) 1);
10908 path.moveTo(SkBits2Float(0x6828c6f9), SkBits2Float(0x6614dc9e)); // 3.18811e+24f, 1.75745e+23f
10909 path.cubicTo(SkBits2Float(0x68303469), SkBits2Float(0x661f92fc), SkBits2Float(0x6837d3c3), SkBits2Float(0x662b0eb2), SkBits2Float(0x683fa268), SkBits2Float(0x663759e1)); // 3.32841e+24f, 1.88392e+23f, 3.4724e+24f, 2.01949e+23f, 3.61987e+24f, 2.16463e+23f
10910 path.cubicTo(SkBits2Float(0x68c4391f), SkBits2Float(0x672c5c9f), SkBits2Float(0x688b20ab), SkBits2Float(0x6804b825), SkBits2Float(0x681ddb5e), SkBits2Float(0x6838dc00)); // 7.4131e+24f, 8.13956e+23f, 5.25609e+24f, 2.507e+24f, 2.98183e+24f, 3.49189e+24f
10911 path.lineTo(SkBits2Float(0x6828c6f9), SkBits2Float(0x6614dc9e)); // 3.18811e+24f, 1.75745e+23f
10912 path.close();
10913 path.moveTo(SkBits2Float(0x68226c73), SkBits2Float(0x660bd15e)); // 3.0681e+24f, 1.65068e+23f
10914 path.cubicTo(SkBits2Float(0x6823b0e1), SkBits2Float(0x660d990f), SkBits2Float(0x6824f6d5), SkBits2Float(0x660f668c), SkBits2Float(0x68263e4e), SkBits2Float(0x66113632)); // 3.09203e+24f, 1.67169e+23f, 3.11609e+24f, 1.69298e+23f, 3.14025e+24f, 1.71436e+23f
10915 path.cubicTo(SkBits2Float(0x682715e4), SkBits2Float(0x6612676d), SkBits2Float(0x6827ee22), SkBits2Float(0x66139997), SkBits2Float(0x6828c709), SkBits2Float(0x6614cba5)); // 3.15616e+24f, 1.72843e+23f, 3.17211e+24f, 1.74255e+23f, 3.18812e+24f, 1.75667e+23f
10916 path.lineTo(SkBits2Float(0x6828d720), SkBits2Float(0x6604a1a2)); // 3.1893e+24f, 1.56583e+23f
10917 path.cubicTo(SkBits2Float(0x68270421), SkBits2Float(0x6601102c), SkBits2Float(0x68252b97), SkBits2Float(0x65fb1edd), SkBits2Float(0x68234ce5), SkBits2Float(0x65f4367f)); // 3.15485e+24f, 1.52371e+23f, 3.11998e+24f, 1.48235e+23f, 3.08466e+24f, 1.44158e+23f
10918 path.conicTo(SkBits2Float(0x6822e012), SkBits2Float(0x6602acc5), SkBits2Float(0x68226c73), SkBits2Float(0x660bd15e), SkBits2Float(0x3f7ffa04)); // 3.07663e+24f, 1.54274e+23f, 3.0681e+24f, 1.65068e+23f, 0.999909f
10919 path.close();
10920 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10921 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10922 path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x68617414), SkBits2Float(0x66af1c42), SkBits2Float(0x68624f96), SkBits2Float(0x6757755b), SkBits2Float(0x685b93f2)); // 0, 4.25869e+24f, 4.13468e+23f, 4.27489e+24f, 1.01747e+24f, 4.14771e+24f
10923 path.cubicTo(SkBits2Float(0x67a63a84), SkBits2Float(0x68fe1c37), SkBits2Float(0x67c05eed), SkBits2Float(0x69930962), SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 1.56998e+24f, 9.60001e+24f, 1.81689e+24f, 2.22196e+25f, 0, 5.14279e+25f
10924 path.close();
10925 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10926 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
10927 path.cubicTo(SkBits2Float(0x6a2c8798), SkBits2Float(0x68f7a144), SkBits2Float(0x6951f5ea), SkBits2Float(0x6796ad55), SkBits2Float(0x683fa268), SkBits2Float(0x663759e1)); // 5.21439e+25f, 9.35519e+24f, 1.58642e+25f, 1.4231e+24f, 3.61987e+24f, 2.16463e+23f
10928 path.cubicTo(SkBits2Float(0x683871e3), SkBits2Float(0x66253b4f), SkBits2Float(0x6830da01), SkBits2Float(0x66144d3e), SkBits2Float(0x6828d720), SkBits2Float(0x6604a1a2)); // 3.48407e+24f, 1.95071e+23f, 3.34063e+24f, 1.75084e+23f, 3.1893e+24f, 1.56583e+23f
10929 path.conicTo(SkBits2Float(0x68295b21), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x492bb324)); // 3.19904e+24f, 0, 0, 0, 703282
10930 path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x677b84f0), SkBits2Float(0x00000000), SkBits2Float(0x68226c73), SkBits2Float(0x660bd15e)); // 0, 0, 1.18777e+24f, 0, 3.0681e+24f, 1.65068e+23f
10931 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68156829)); // 0, 2.82222e+24f
10932 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10933 path.lineTo(SkBits2Float(0x673918f3), SkBits2Float(0x681b0f5f)); // 8.74098e+23f, 2.929e+24f
10934 path.lineTo(SkBits2Float(0x67391759), SkBits2Float(0x681b0fae)); // 8.74068e+23f, 2.92902e+24f
10935 path.cubicTo(SkBits2Float(0x674384e7), SkBits2Float(0x682e2068), SkBits2Float(0x674db698), SkBits2Float(0x6843893b), SkBits2Float(0x6757755b), SkBits2Float(0x685b93f2)); // 9.23313e+23f, 3.28916e+24f, 9.71453e+23f, 3.69357e+24f, 1.01747e+24f, 4.14771e+24f
10936 path.cubicTo(SkBits2Float(0x67a63484), SkBits2Float(0x68556bdd), SkBits2Float(0x67f18c5f), SkBits2Float(0x6848eb25), SkBits2Float(0x681ddb5e), SkBits2Float(0x6838dc00)); // 1.56976e+24f, 4.03142e+24f, 2.28136e+24f, 3.79524e+24f, 2.98183e+24f, 3.49189e+24f
10937 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10938 path.close();
10939
10940 SkPath path1(path);
10941 path.reset();
10942 path.setFillType((SkPathFillType) 0);
10943
10944 SkPath path2(path);
10945 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
10946 }
10947
fuzz763_22(skiatest::Reporter * reporter,const char * filename)10948 static void fuzz763_22(skiatest::Reporter* reporter, const char* filename) {
10949 SkPath path;
10950 path.setFillType((SkPathFillType) 1);
10951 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x68295b2d)); // 0, 3.19905e+24f
10952 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10953 path.lineTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x00000000)); // 5.63611e+25f, 0
10954 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a034b21)); // 0, 3.9681e+25f
10955 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68295b2d)); // 0, 3.19905e+24f
10956 path.close();
10957 path.moveTo(SkBits2Float(0x6617da56), SkBits2Float(0x00000000)); // 1.79276e+23f, 0
10958 path.conicTo(SkBits2Float(0x5e704d09), SkBits2Float(0x5e3a4dfd), SkBits2Float(0x00000000), SkBits2Float(0x65eb62ef), SkBits2Float(0x430fa5e6)); // 4.32888e+18f, 3.35617e+18f, 0, 1.38948e+23f, 143.648f
10959 path.conicTo(SkBits2Float(0x5e798b32), SkBits2Float(0x627a95c0), SkBits2Float(0x61f5014c), SkBits2Float(0x61fba0fd), SkBits2Float(0x40f8a1a1)); // 4.49538e+18f, 1.15562e+21f, 5.64943e+20f, 5.80217e+20f, 7.76973f
10960 path.conicTo(SkBits2Float(0x62743d2d), SkBits2Float(0x5e49b862), SkBits2Float(0x6617da56), SkBits2Float(0x00000000), SkBits2Float(0x410ef54c)); // 1.12635e+21f, 3.63387e+18f, 1.79276e+23f, 0, 8.93489f
10961 path.close();
10962
10963 SkPath path1(path);
10964 path.reset();
10965 path.setFillType((SkPathFillType) 0);
10966 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10967 path.quadTo(SkBits2Float(0x4f9a3a8a), SkBits2Float(0xc28a0d28), SkBits2Float(0x273a3ab3), SkBits2Float(0x8b2a2928)); // 5.17506e+09f, -69.0257f, 2.58445e-15f, -3.27718e-32f
10968 path.lineTo(SkBits2Float(0x63283ae6), SkBits2Float(0x27282a81)); // 3.1033e+21f, 2.33377e-15f
10969
10970 SkPath path2(path);
10971 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
10972 }
10973
fuzz763_23(skiatest::Reporter * reporter,const char * filename)10974 static void fuzz763_23(skiatest::Reporter* reporter, const char* filename) {
10975 SkPath path;
10976 path.setFillType((SkPathFillType) 0);
10977
10978 SkPath path1(path);
10979 path.reset();
10980 path.setFillType((SkPathFillType) 0);
10981 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10982 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10983 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x03210c2a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.73276e-37f, 6.14991e+25f
10984 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
10985 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10986 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x29295b2d), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, 4.2514e-13f, 3.76046e-14f, 3.04146e+24f, 1.99729e+36f
10987 path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10988 path.close();
10989 path.moveTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10990 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10991 path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x8c5bf055), SkBits2Float(0x2a1f2a55), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, -1.69435e-31f, 1.41367e-13f, 4.7362e-37f, 1.43189e+16f
10992 path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
10993 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10994 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x08211f72), SkBits2Float(0x032a2a21), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2547937a)); // 2.49282e-13f, 4.84861e-34f, 5.00069e-37f, 6.14991e+25f, 1.73105e-16f
10995 path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10996 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10997 path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10998 path.close();
10999 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
11000 path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
11001 path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21515d27)); // 2.22225e-15f, 0.000713932f, -732.486f, -1.90686e+27f, 7.09352e-19f
11002 path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
11003 path.close();
11004 path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
11005 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11006 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11007 path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
11008 path.conicTo(SkBits2Float(0x2a8c54ed), SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003), SkBits2Float(0x29ed846a), SkBits2Float(0x555b2d28)); // 2.49279e-13f, 4.61198e-19f, 1.64987e+07f, 1.05479e-13f, 1.50617e+13f
11009 path.conicTo(SkBits2Float(0x68392d5b), SkBits2Float(0xf0682955), SkBits2Float(0x2a1f5b2d), SkBits2Float(0xef552a21), SkBits2Float(0x5b2d2a8c)); // 3.4979e+24f, -2.87402e+29f, 1.41537e-13f, -6.59712e+28f, 4.8742e+16f
11010
11011 SkPath path2(path);
11012 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11013 }
11014
fuzz763_24(skiatest::Reporter * reporter,const char * filename)11015 static void fuzz763_24(skiatest::Reporter* reporter, const char* filename) {
11016 SkPath path;
11017 path.setFillType((SkPathFillType) 1);
11018
11019 SkPath path1(path);
11020 path.reset();
11021 path.setFillType((SkPathFillType) 0);
11022 path.moveTo(SkBits2Float(0xededed02), SkBits2Float(0xedededed)); // -9.20431e+27f, -9.20445e+27f
11023 path.close();
11024 path.moveTo(SkBits2Float(0xededed02), SkBits2Float(0xedededed)); // -9.20431e+27f, -9.20445e+27f
11025 path.quadTo(SkBits2Float(0x9fb9c16e), SkBits2Float(0x27737375), SkBits2Float(0xb7c5ff00), SkBits2Float(0x00ff9908)); // -7.86706e-20f, 3.37856e-15f, -2.3603e-05f, 2.34729e-38f
11026 path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11027 path.cubicTo(SkBits2Float(0x1616ecec), SkBits2Float(0x2c321616), SkBits2Float(0x3516c616), SkBits2Float(0x6e161616), SkBits2Float(0x4c416033), SkBits2Float(0xf6000000)); // 1.21917e-25f, 2.53076e-12f, 5.61676e-07f, 1.16124e+28f, 5.06923e+07f, -6.49037e+32f
11028 path.quadTo(SkBits2Float(0x04007f41), SkBits2Float(0xecececec), SkBits2Float(0xecececec), SkBits2Float(0xecec41ec)); // 1.51048e-36f, -2.2914e+27f, -2.2914e+27f, -2.28494e+27f
11029 path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11030 path.close();
11031 path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11032 path.quadTo(SkBits2Float(0x000000ec), SkBits2Float(0xececcc00), SkBits2Float(0x48ececec), SkBits2Float(0x0278806e)); // 3.30706e-43f, -2.29016e+27f, 485223, 1.8257e-37f
11033 path.lineTo(SkBits2Float(0x72ececec), SkBits2Float(0xecec02ec)); // 9.38559e+30f, -2.28256e+27f
11034 path.quadTo(SkBits2Float(0xec04007f), SkBits2Float(0xecececec), SkBits2Float(0xecececec), SkBits2Float(0xecec0400)); // -6.38322e+26f, -2.2914e+27f, -2.2914e+27f, -2.2826e+27f
11035 path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11036 path.close();
11037 path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11038 path.quadTo(SkBits2Float(0x000040ec), SkBits2Float(0x3a333300), SkBits2Float(0xecec3333), SkBits2Float(0xececdbec)); // 2.32896e-41f, 0.000683591f, -2.28439e+27f, -2.29076e+27f
11039 path.lineTo(SkBits2Float(0x3300007f), SkBits2Float(0x33d83333)); // 2.98028e-08f, 1.00676e-07f
11040 path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11041 path.close();
11042 path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11043 path.quadTo(SkBits2Float(0x9e9ea900), SkBits2Float(0x33ececec), SkBits2Float(0xececec33), SkBits2Float(0xec336e6e)); // -1.67988e-20f, 1.10327e-07f, -2.29138e+27f, -8.67677e+26f
11044 path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11045 path.close();
11046 path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11047 path.lineTo(SkBits2Float(0xedededed), SkBits2Float(0xedededed)); // -9.20445e+27f, -9.20445e+27f
11048 path.lineTo(SkBits2Float(0xecececec), SkBits2Float(0xecececec)); // -2.2914e+27f, -2.2914e+27f
11049 path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11050 path.close();
11051 path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11052 path.lineTo(SkBits2Float(0x01003300), SkBits2Float(0x33d83333)); // 2.35465e-38f, 1.00676e-07f
11053 path.quadTo(SkBits2Float(0xecec3333), SkBits2Float(0x04eeedec), SkBits2Float(0xe0e0e0e0), SkBits2Float(0x9ee0e0e0)); // -2.28439e+27f, 5.6172e-36f, -1.29634e+20f, -2.38099e-20f
11054 path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11055 path.close();
11056 path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
11057 path.cubicTo(SkBits2Float(0x299e9e9e), SkBits2Float(0xecececec), SkBits2Float(0xececb6ec), SkBits2Float(0xf0ececec), SkBits2Float(0x0000ecec), SkBits2Float(0x9ebe6e6e)); // 7.04413e-14f, -2.2914e+27f, -2.28936e+27f, -5.86599e+29f, 8.49916e-41f, -2.01627e-20f
11058 path.cubicTo(SkBits2Float(0x9e9e9e9e), SkBits2Float(0xe8009e9e), SkBits2Float(0x9e9e9e9e), SkBits2Float(0xecec9e9e), SkBits2Float(0xec3333ec), SkBits2Float(0xececf0ec)); // -1.67945e-20f, -2.42956e+24f, -1.67945e-20f, -2.28844e+27f, -8.66572e+26f, -2.29155e+27f
11059
11060 SkPath path2(path);
11061 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11062 }
11063
fuzz763_25(skiatest::Reporter * reporter,const char * filename)11064 static void fuzz763_25(skiatest::Reporter* reporter, const char* filename) {
11065 SkPath path;
11066 path.setFillType((SkPathFillType) 1);
11067 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
11068 path.conicTo(SkBits2Float(0x653140d9), SkBits2Float(0x6a4b4f74), SkBits2Float(0x65906630), SkBits2Float(0x6a25a070), SkBits2Float(0x3f6728a2)); // 5.23159e+22f, 6.14468e+25f, 8.52382e+22f, 5.00576e+25f, 0.902964f
11069 path.cubicTo(SkBits2Float(0x68295bc5), SkBits2Float(0x00000000), SkBits2Float(0x682958ff), SkBits2Float(0x00000000), SkBits2Float(0x68286829), SkBits2Float(0x00000000)); // 3.19909e+24f, 0, 3.19889e+24f, 0, 3.18112e+24f, 0
11070 path.lineTo(SkBits2Float(0x68555b29), SkBits2Float(0x00000000)); // 4.03018e+24f, 0
11071 path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x682d2927), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6829686f)); // 0, 3.27091e+24f, 0, 0, 3.20003e+24f
11072 path.lineTo(SkBits2Float(0xdf218a28), SkBits2Float(0x00000000)); // -1.16402e+19f, 0
11073 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
11074 path.close();
11075 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11076 path.conicTo(SkBits2Float(0x6642c40c), SkBits2Float(0x00000000), SkBits2Float(0x65906630), SkBits2Float(0x6a25a070), SkBits2Float(0x3edcd74d)); // 2.29939e+23f, 0, 8.52382e+22f, 5.00576e+25f, 0.43133f
11077 path.conicTo(SkBits2Float(0x68295afa), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x4277a57b)); // 3.19903e+24f, 0, 0, 0, 61.9116f
11078 path.close();
11079
11080 SkPath path1(path);
11081 path.reset();
11082 path.setFillType((SkPathFillType) 0);
11083
11084 SkPath path2(path);
11085 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11086 }
11087
11088
fuzz763_26(skiatest::Reporter * reporter,const char * filename)11089 static void fuzz763_26(skiatest::Reporter* reporter, const char* filename) {
11090 SkPath path;
11091 path.setFillType((SkPathFillType) 0);
11092
11093 SkPath path1(path);
11094 path.reset();
11095 path.setFillType((SkPathFillType) 0);
11096 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11097 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc003210a)); // 3.60396e-20f, -2.04889f
11098 path.cubicTo(SkBits2Float(0x68372d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.46012e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
11099 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
11100 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
11101 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
11102 path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
11103 path.close();
11104 path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
11105 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11106 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11107 path.conicTo(SkBits2Float(0x68385b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212121), SkBits2Float(0x5a4b7bc0)); // 3.48239e+24f, 1.51141e+13f, 1.41368e-13f, 4.73517e-37f, 1.43189e+16f
11108 path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
11109 path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11110 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 6.14991e+25f, 75739
11111 path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11112 path.close();
11113 path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11114 path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
11115 path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11116 path.close();
11117 path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11118 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2127ed29)); // 2.25206e-21f, 300.343f, 0.000650423f, 5.68957e-19f
11119 path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
11120 path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21512727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 7.08638e-19f
11121 path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11122 path.close();
11123 path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
11124 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x5b2d5529)); // 4.03114e+24f, 4.87888e+16f
11125 path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0xc0032108)); // 3.60404e-20f, -2.04889f
11126 path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05bd24b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0xed4b7bc0)); // 4.06458e+24f, -2.72126e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, -3.93594e+27f
11127 path.conicTo(SkBits2Float(0x212a8c6a), SkBits2Float(0x0329081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77841e-19f, 4.9674e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
11128 path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11129 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
11130 path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11131 path.close();
11132 path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11133 path.lineTo(SkBits2Float(0x555b1b29), SkBits2Float(0x6c212a8c)); // 1.50569e+13f, 7.79352e+26f
11134 path.conicTo(SkBits2Float(0x084b0321), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0x8c5bf055), SkBits2Float(0x1f212a3a)); // 6.10918e-34f, 1.16348e+26f, 0.000209024f, -1.69435e-31f, 3.4128e-20f
11135 path.conicTo(SkBits2Float(0x290321d9), SkBits2Float(0x555b2d68), SkBits2Float(0x2a8c558c), SkBits2Float(0x2a212a1f), SkBits2Float(0x7bc00321)); // 2.91172e-14f, 1.50618e+13f, 2.49284e-13f, 1.43143e-13f, 1.99397e+36f
11136 path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11137 path.close();
11138 path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11139 path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x1f2128c0)); // -1.31678e-31f, 3.41268e-20f
11140 path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11141 path.close();
11142
11143 SkPath path2(path);
11144 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11145 }
11146
fuzz763_28(skiatest::Reporter * reporter,const char * filename)11147 static void fuzz763_28(skiatest::Reporter* reporter, const char* filename) {
11148 SkPath path;
11149 path.setFillType((SkPathFillType) 0);
11150
11151 SkPath path1(path);
11152 path.reset();
11153 path.setFillType((SkPathFillType) 0);
11154 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11155 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11156 path.cubicTo(SkBits2Float(0x68302d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6aa37bc0)); // 3.32789e+24f, -2.71613e+29f, -1.64207e-31f, 5.76395e-19f, 4.7323e-37f, 9.88197e+25f
11157 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2d28ed84), SkBits2Float(0x5b2d2955)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.60243e-12f, 4.87406e+16f
11158 path.moveTo(SkBits2Float(0x6c395b2d), SkBits2Float(0xf0682955)); // 8.96327e+26f, -2.87402e+29f
11159 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef8c55), SkBits2Float(0x68295b2d), SkBits2Float(0x21086855), SkBits2Float(0x4b7bc003)); // 5.76397e-19f, 4.25523e-13f, 3.19905e+24f, 4.62167e-19f, 1.64987e+07f
11160 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11161 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11162 path.lineTo(SkBits2Float(0x8a283a28), SkBits2Float(0x284f1a3a)); // -8.09984e-33f, 1.14965e-14f
11163 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f
11164 path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
11165 path.conicTo(SkBits2Float(0x381f203a), SkBits2Float(0x2ac422c5), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152)); // 3.79386e-05f, 3.48407e-13f, -55.289f, 0.000916855f, 1.2818e-13f
11166 path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x683a5b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.52017e+24f
11167 path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
11168 path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 1.89339e-13f
11169 path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a688c5b), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x8c08555b), SkBits2Float(0x2a2a29ca)); // 5.73801e-19f, 2.06544e-13f, 3.19905e+24f, 9.6297e-12f, -1.05027e-31f, 1.51135e-13f
11170 path.quadTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
11171 path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11172 path.close();
11173 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11174 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x5b2d6829), SkBits2Float(0x1f212a55), SkBits2Float(0x8ced7aba), SkBits2Float(0x3f2a212a)); // 6.14991e+25f, 4.88097e+16f, 3.41281e-20f, -3.65895e-31f, 0.664569f
11175 path.lineTo(SkBits2Float(0x5b2d212d), SkBits2Float(0x2d556829)); // 4.87316e+16f, 1.21308e-11f
11176 path.moveTo(SkBits2Float(0x68552968), SkBits2Float(0x5568295b)); // 4.02651e+24f, 1.5954e+13f
11177 path.moveTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55)); // 4.87407e+16f, 5.7784e-19f
11178 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11179 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x28282a3a)); // 5.77848e-19f, 4.7323e-37f, 5.63611e+25f, 6.77381e-19f, 9.33503e-15f
11180
11181 SkPath path2(path);
11182 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11183 }
11184
fuzz763_27(skiatest::Reporter * reporter,const char * filename)11185 static void fuzz763_27(skiatest::Reporter* reporter, const char* filename) {
11186 SkPath path;
11187 path.setFillType((SkPathFillType) 0);
11188
11189 SkPath path1(path);
11190 path.reset();
11191 path.setFillType((SkPathFillType) 0);
11192 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11193 path.quadTo(SkBits2Float(0x30309ab8), SkBits2Float(0x305b3030), SkBits2Float(0x00f53030), SkBits2Float(0x3a3a0000)); // 6.42483e-10f, 7.97402e-10f, 2.2517e-38f, 0.000709534f
11194 path.quadTo(SkBits2Float(0xb8b8d5b8), SkBits2Float(0x0b0b0b03), SkBits2Float(0x0b0b0b0b), SkBits2Float(0x3a3a0b0b)); // -8.81361e-05f, 2.67787e-32f, 2.67787e-32f, 0.000709698f
11195 path.quadTo(SkBits2Float(0xb8b8b8b8), SkBits2Float(0x0b1203b8), SkBits2Float(0x0b0b0b0b), SkBits2Float(0x3a3a2110)); // -8.80821e-05f, 2.81214e-32f, 2.67787e-32f, 0.000710026f
11196
11197 SkPath path2(path);
11198 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11199 }
11200
fuzz763_29(skiatest::Reporter * reporter,const char * filename)11201 static void fuzz763_29(skiatest::Reporter* reporter, const char* filename) {
11202 SkPath path;
11203 path.setFillType((SkPathFillType) 1);
11204 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11205 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x743e0000)); // 0, 6.02134e+31f
11206 path.cubicTo(SkBits2Float(0x74083cf1), SkBits2Float(0x74536e73), SkBits2Float(0x742ac4e4), SkBits2Float(0x7415f5be), SkBits2Float(0x7433ee3c), SkBits2Float(0x7405a69a)); // 4.31756e+31f, 6.70053e+31f, 5.41189e+31f, 4.75242e+31f, 5.70223e+31f, 4.23556e+31f
11207 path.quadTo(SkBits2Float(0x74360ca0), SkBits2Float(0x7401e10c), SkBits2Float(0x7436a382), SkBits2Float(0x7401cc18)); // 5.76937e+31f, 4.11603e+31f, 5.78805e+31f, 4.11344e+31f
11208 path.cubicTo(SkBits2Float(0x74374a91), SkBits2Float(0x7401ef19), SkBits2Float(0x74375c84), SkBits2Float(0x7404d9b9), SkBits2Float(0x7437868f), SkBits2Float(0x740bae8a)); // 5.80873e+31f, 4.11777e+31f, 5.81095e+31f, 4.2102e+31f, 5.81616e+31f, 4.42669e+31f
11209 path.cubicTo(SkBits2Float(0x7437d6c1), SkBits2Float(0x7418b629), SkBits2Float(0x74387e9b), SkBits2Float(0x7433fbc5), SkBits2Float(0x743e2ff7), SkBits2Float(0x74655fa2)); // 5.82609e+31f, 4.83962e+31f, 5.84687e+31f, 5.7039e+31f, 6.02728e+31f, 7.26914e+31f
11210 path.cubicTo(SkBits2Float(0x741ada75), SkBits2Float(0x74745717), SkBits2Float(0x73c106b4), SkBits2Float(0x74744e64), SkBits2Float(0x00000000), SkBits2Float(0x74744006)); // 4.9075e+31f, 7.74345e+31f, 3.05862e+31f, 7.74237e+31f, 0, 7.74059e+31f
11211 path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x74746c7c), SkBits2Float(0x74244dce), SkBits2Float(0x7474733e), SkBits2Float(0x74400000), SkBits2Float(0x74747445)); // 0, 7.7461e+31f, 5.207e+31f, 7.74693e+31f, 6.08472e+31f, 7.74706e+31f
11212 path.cubicTo(SkBits2Float(0x743f5854), SkBits2Float(0x746f3659), SkBits2Float(0x743ebe05), SkBits2Float(0x746a3017), SkBits2Float(0x743e2ff7), SkBits2Float(0x74655fa2)); // 6.06397e+31f, 7.58094e+31f, 6.04486e+31f, 7.42171e+31f, 6.02728e+31f, 7.26914e+31f
11213 path.cubicTo(SkBits2Float(0x7447a582), SkBits2Float(0x74615dee), SkBits2Float(0x744f74f6), SkBits2Float(0x745c4903), SkBits2Float(0x7455e7e6), SkBits2Float(0x7455d751)); // 6.32705e+31f, 7.14216e+31f, 6.57457e+31f, 6.98112e+31f, 6.77895e+31f, 6.77689e+31f
11214 path.cubicTo(SkBits2Float(0x74747474), SkBits2Float(0x743750a4), SkBits2Float(0x74747474), SkBits2Float(0x73f46f0d), SkBits2Float(0x74747474), SkBits2Float(0x00000000)); // 7.74708e+31f, 5.80948e+31f, 7.74708e+31f, 3.87321e+31f, 7.74708e+31f, 0
11215 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11216 path.close();
11217
11218 SkPath path1(path);
11219 path.reset();
11220 path.setFillType((SkPathFillType) 0);
11221 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11222 path.lineTo(SkBits2Float(0xf0682955), SkBits2Float(0x211f5b2d)); // -2.87402e+29f, 5.3992e-19f
11223 path.moveTo(SkBits2Float(0x2d2aff2d), SkBits2Float(0x74747474)); // 9.72004e-12f, 7.74708e+31f
11224 path.cubicTo(SkBits2Float(0x7474748e), SkBits2Float(0x74747490), SkBits2Float(0x8c722174), SkBits2Float(0x181f0080), SkBits2Float(0x74c0e520), SkBits2Float(0x747d7463)); // 7.7471e+31f, 7.7471e+31f, -1.86531e-31f, 2.05505e-24f, 1.22262e+32f, 8.0323e+31f
11225 path.cubicTo(SkBits2Float(0x7b005e4b), SkBits2Float(0xdf3a6a3a), SkBits2Float(0x2a3a2848), SkBits2Float(0x2d2d7821), SkBits2Float(0x8c55212d), SkBits2Float(0x2d2d2d24)); // 6.66526e+35f, -1.34326e+19f, 1.65341e-13f, 9.86059e-12f, -1.64189e-31f, 9.84393e-12f
11226 path.conicTo(SkBits2Float(0xde28804c), SkBits2Float(0x28e03721), SkBits2Float(0x3329df28), SkBits2Float(0x2d291515), SkBits2Float(0x0568295b)); // -3.03545e+18f, 2.48929e-14f, 3.95513e-08f, 9.61122e-12f, 1.09162e-35f
11227 path.conicTo(SkBits2Float(0x556a2d21), SkBits2Float(0x21088c2a), SkBits2Float(0x3a333303), SkBits2Float(0x5b293a8a), SkBits2Float(0x6855683b)); // 1.60925e+13f, 4.62641e-19f, 0.000683591f, 4.76336e+16f, 4.03115e+24f
11228
11229 SkPath path2(path);
11230 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11231 }
11232
fuzz763_30(skiatest::Reporter * reporter,const char * filename)11233 static void fuzz763_30(skiatest::Reporter* reporter, const char* filename) {
11234 SkPath path;
11235 path.setFillType((SkPathFillType) 1);
11236
11237 SkPath path1(path);
11238 path.reset();
11239 path.setFillType((SkPathFillType) 0);
11240 path.moveTo(SkBits2Float(0x1f2108c0), SkBits2Float(0x4b7b0321)); // 3.41003e-20f, 1.64503e+07f
11241 path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
11242 path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
11243 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x2a4b7bc0), SkBits2Float(0x68295b2d)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 1.8073e-13f, 3.19905e+24f
11244 path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55)); // 4.87407e+16f, 5.7784e-19f
11245 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x4b7b28c0)); // 4.7323e-37f, 1.646e+07f
11246 path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x2d081f21)); // 2.50338e-13f, 7.73762e-12f
11247 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11248 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11249 path.cubicTo(SkBits2Float(0x69392d55), SkBits2Float(0x2d5b684b), SkBits2Float(0x8c5527f0), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 1.39916e+25f, 1.24719e-11f, -1.64209e-31f, 5.76395e-19f, 4.7323e-37f, 6.14991e+25f
11250 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0xed7a6a1f), SkBits2Float(0x3a214793), SkBits2Float(0x3328282a), SkBits2Float(0x3a8a3adf)); // 5.77848e-19f, -4.84372e+27f, 0.000615233f, 3.91521e-08f, 0.00105461f
11251 path.conicTo(SkBits2Float(0x4be80304), SkBits2Float(0xdcdcdc15), SkBits2Float(0xdcdcdcdc), SkBits2Float(0x71dcdcdc), SkBits2Float(0x6c107164)); // 3.04102e+07f, -4.97332e+17f, -4.97339e+17f, 2.18732e+30f, 6.98483e+26f
11252 path.conicTo(SkBits2Float(0x6c0f1d6c), SkBits2Float(0x8e406c6e), SkBits2Float(0x6c6c0200), SkBits2Float(0x6c6ce46c), SkBits2Float(0x6c6c6c6c)); // 6.92061e+26f, -2.3718e-30f, 1.14126e+27f, 1.14554e+27f, 1.14327e+27f
11253 path.lineTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11254 path.close();
11255 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11256 path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x3ac22c21), SkBits2Float(0x6c401057), SkBits2Float(0x6d6d6b64)); // 0.00136978f, 0.00148142f, 9.28764e+26f, 4.59236e+27f
11257 path.cubicTo(SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x286d6d6d), SkBits2Float(0x081d2a29), SkBits2Float(0x6d690321), SkBits2Float(0x6b6b026d)); // 4.59251e+27f, 4.59251e+27f, 1.31799e-14f, 4.7295e-34f, 4.50711e+27f, 2.84109e+26f
11258
11259 SkPath path2(path);
11260 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11261 }
11262
fuzz763_31(skiatest::Reporter * reporter,const char * filename)11263 static void fuzz763_31(skiatest::Reporter* reporter, const char* filename) {
11264 SkPath path;
11265 path.setFillType((SkPathFillType) 1);
11266
11267 SkPath path1(path);
11268 path.reset();
11269 path.setFillType((SkPathFillType) 0);
11270 path.moveTo(SkBits2Float(0xd72a8c55), SkBits2Float(0x61081f2a)); // -1.8752e+14f, 1.56938e+20f
11271 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0xdf3a2128), SkBits2Float(0x471ac575)); // 6.14991e+25f, 75739, 9.4495e-15f, -1.3412e+19f, 39621.5f
11272 path.lineTo(SkBits2Float(0x28404040), SkBits2Float(0x552a298a)); // 1.06721e-14f, 1.16935e+13f
11273 path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11274 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x80ed7a3a), SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828), SkBits2Float(0x4f1a3a3a)); // 6.14991e+25f, -2.18089e-38f, 1.65317e-13f, -1.16126e+19f, 2.58751e+09f
11275 path.lineTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11276 path.close();
11277 path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11278 path.cubicTo(SkBits2Float(0x3ac2213a), SkBits2Float(0x432a2928), SkBits2Float(0x96812be6), SkBits2Float(0x272a1d2a), SkBits2Float(0x3a2a3529), SkBits2Float(0x3b1e2ab0)); // 0.00148109f, 170.161f, -2.08688e-25f, 2.3608e-15f, 0.000649291f, 0.00241343f
11279 path.lineTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11280 path.close();
11281 path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11282 path.cubicTo(SkBits2Float(0xc5272927), SkBits2Float(0x22383b39), SkBits2Float(0x1051523a), SkBits2Float(0x2927b029), SkBits2Float(0x685b2d27), SkBits2Float(0x5b2d6855)); // -2674.57f, 2.4968e-18f, 4.12813e-29f, 3.72342e-14f, 4.14012e+24f, 4.88099e+16f
11283
11284 SkPath path2(path);
11285 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11286 }
11287
fuzz763_33(skiatest::Reporter * reporter,const char * filename)11288 static void fuzz763_33(skiatest::Reporter* reporter, const char* filename) {
11289 SkPath path;
11290 path.setFillType((SkPathFillType) 1);
11291 path.moveTo(SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 7.66623e+30f, 7.66608e+30f
11292 path.quadTo(SkBits2Float(0x724341bf), SkBits2Float(0x72433fc4), SkBits2Float(0x6d757575), SkBits2Float(0x6d6d6d6d)); // 3.86746e+30f, 3.86731e+30f, 4.74786e+27f, 4.59251e+27f
11293 path.cubicTo(SkBits2Float(0x6d18b5e5), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6cbe03bd), SkBits2Float(0x6d4b455b), SkBits2Float(0x6c6c69d8), SkBits2Float(0x6d20df31)); // 2.95385e+27f, 4.59251e+27f, 1.83771e+27f, 3.93183e+27f, 1.14323e+27f, 3.11171e+27f
11294 path.conicTo(SkBits2Float(0x6c6c8b72), SkBits2Float(0x00000000), SkBits2Float(0x6c6c6c6c), SkBits2Float(0x00000000), SkBits2Float(0x400812df)); // 1.14386e+27f, 0, 1.14327e+27f, 0, 2.12615f
11295 path.quadTo(SkBits2Float(0x72432acb), SkBits2Float(0x72432295), SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 3.86568e+30f, 3.86505e+30f, 7.66623e+30f, 7.66608e+30f
11296 path.close();
11297 path.moveTo(SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 7.66623e+30f, 7.66608e+30f
11298 path.cubicTo(SkBits2Float(0x74f97d76), SkBits2Float(0x74f97d90), SkBits2Float(0x75381628), SkBits2Float(0x7538182c), SkBits2Float(0x7538153b), SkBits2Float(0x75381835)); // 1.58133e+32f, 1.58133e+32f, 2.33357e+32f, 2.33367e+32f, 2.33353e+32f, 2.33368e+32f
11299 path.cubicTo(SkBits2Float(0x7538144e), SkBits2Float(0x7538183f), SkBits2Float(0x74f9760f), SkBits2Float(0x74f97ddd), SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 2.33348e+32f, 2.33368e+32f, 1.58115e+32f, 1.58134e+32f, 7.66623e+30f, 7.66608e+30f
11300 path.close();
11301 path.moveTo(SkBits2Float(0x6c6c69d8), SkBits2Float(0x6d20df31)); // 1.14323e+27f, 3.11171e+27f
11302 path.conicTo(SkBits2Float(0x6c6c55ae), SkBits2Float(0x6d80b520), SkBits2Float(0x6c6c1071), SkBits2Float(0x6e0f1d6c), SkBits2Float(0x3f96e656)); // 1.14284e+27f, 4.97913e+27f, 1.14154e+27f, 1.1073e+28f, 1.1789f
11303 path.lineTo(SkBits2Float(0x6a674231), SkBits2Float(0x6c0c3394)); // 6.98936e+25f, 6.77973e+26f
11304 path.cubicTo(SkBits2Float(0x6b12c63f), SkBits2Float(0x6c881439), SkBits2Float(0x6bba4ae5), SkBits2Float(0x6ced1e23), SkBits2Float(0x6c6c69d8), SkBits2Float(0x6d20df31)); // 1.77439e+26f, 1.31608e+27f, 4.50428e+26f, 2.29326e+27f, 1.14323e+27f, 3.11171e+27f
11305 path.close();
11306
11307 SkPath path1(path);
11308 path.reset();
11309 path.setFillType((SkPathFillType) 0);
11310 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11311 path.lineTo(SkBits2Float(0x6c6b6ba7), SkBits2Float(0x886b6b6b)); // 1.13842e+27f, -7.0844e-34f
11312 path.quadTo(SkBits2Float(0x0000206b), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d)); // 1.16294e-41f, 4.59251e+27f, 4.59251e+27f, 4.59251e+27f
11313 path.conicTo(SkBits2Float(0x3e3e3e3e), SkBits2Float(0xafbcad20), SkBits2Float(0x78787878), SkBits2Float(0x78787829), SkBits2Float(0x78787878)); // 0.185784f, -3.432e-10f, 2.01583e+34f, 2.01582e+34f, 2.01583e+34f
11314 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x95066b78)); // 2.01583e+34f, -2.71459e-26f
11315 path.lineTo(SkBits2Float(0x6c6b6ba7), SkBits2Float(0x886b6b6b)); // 1.13842e+27f, -7.0844e-34f
11316 path.quadTo(SkBits2Float(0x0000206b), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d)); // 1.16294e-41f, 4.59251e+27f, 4.59251e+27f, 4.59251e+27f
11317 path.conicTo(SkBits2Float(0x3e3e3e3e), SkBits2Float(0xafbcad20), SkBits2Float(0x78787878), SkBits2Float(0x78787829), SkBits2Float(0x78787878)); // 0.185784f, -3.432e-10f, 2.01583e+34f, 2.01582e+34f, 2.01583e+34f
11318 path.lineTo(SkBits2Float(0x8787878f), SkBits2Float(0x87878787)); // -2.03922e-34f, -2.03922e-34f
11319 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11320 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11321 path.lineTo(SkBits2Float(0x6c105778), SkBits2Float(0x6d406b64)); // 6.97994e+26f, 3.72193e+27f
11322 path.cubicTo(SkBits2Float(0x7575756d), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x6d6d7575), SkBits2Float(0x6d6d6d6d)); // 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 4.59312e+27f, 4.59251e+27f
11323 path.cubicTo(SkBits2Float(0x6d696d6d), SkBits2Float(0x026d6d6d), SkBits2Float(0x80bc6b6b), SkBits2Float(0xaebcdfd0), SkBits2Float(0x7878bcac), SkBits2Float(0x78787878)); // 4.51514e+27f, 1.74434e-37f, -1.73036e-38f, -8.58901e-11f, 2.01799e+34f, 2.01583e+34f
11324 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11325 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11326 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11327 path.lineTo(SkBits2Float(0xb4bcacbc), SkBits2Float(0xbcadbcbc)); // -3.51434e-07f, -0.0212082f
11328 path.moveTo(SkBits2Float(0xa03aacbc), SkBits2Float(0x757575a0)); // -1.5812e-19f, 3.11157e+32f
11329 path.close();
11330
11331 SkPath path2(path);
11332 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11333 }
11334
fuzz763_32(skiatest::Reporter * reporter,const char * filename)11335 static void fuzz763_32(skiatest::Reporter* reporter, const char* filename) {
11336 SkPath path;
11337 path.setFillType((SkPathFillType) 1);
11338
11339 SkPath path1(path);
11340 path.reset();
11341 path.setFillType((SkPathFillType) 0);
11342 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11343 path.cubicTo(SkBits2Float(0xdedcdcdc), SkBits2Float(0xdcdcdcdc), SkBits2Float(0xdcdcdcdc), SkBits2Float(0xdcdcdcdc), SkBits2Float(0x55dcdcdc), SkBits2Float(0x29407d7f)); // -7.95742e+18f, -4.97339e+17f, -4.97339e+17f, -4.97339e+17f, 3.03551e+13f, 4.27414e-14f
11344 path.cubicTo(SkBits2Float(0x7b93ed4b), SkBits2Float(0x29521472), SkBits2Float(0xdfc83c28), SkBits2Float(0x1a3a834e), SkBits2Float(0x6855e84f), SkBits2Float(0xf2f22a80)); // 1.53616e+36f, 4.66471e-14f, -2.88569e+19f, 3.857e-23f, 4.0406e+24f, -9.59318e+30f
11345 path.moveTo(SkBits2Float(0xe0f2f210), SkBits2Float(0xc3f2eef2)); // -1.40049e+20f, -485.867f
11346 path.cubicTo(SkBits2Float(0x108ced7a), SkBits2Float(0x7bc00308), SkBits2Float(0x287a6a3a), SkBits2Float(0x242847ed), SkBits2Float(0x2bcb302a), SkBits2Float(0xf21003e8)); // 5.55862e-29f, 1.99396e+36f, 1.39008e-14f, 3.64901e-17f, 1.44374e-12f, -2.85252e+30f
11347 path.moveTo(SkBits2Float(0x556c0010), SkBits2Float(0x002a8768)); // 1.62178e+13f, 3.90567e-39f
11348 path.quadTo(SkBits2Float(0xf2f22021), SkBits2Float(0xf2f2f56e), SkBits2Float(0xf2f2f2f2), SkBits2Float(0xf22040d9)); // -9.59158e+30f, -9.62459e+30f, -9.6242e+30f, -3.17414e+30f
11349 path.lineTo(SkBits2Float(0xc013f2f2), SkBits2Float(0x0000294d)); // -2.3117f, 1.48159e-41f
11350
11351 SkPath path2(path);
11352 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11353 }
11354
fuzz763_34(skiatest::Reporter * reporter,const char * filename)11355 static void fuzz763_34(skiatest::Reporter* reporter, const char* filename) {
11356 SkPath path;
11357 path.setFillType((SkPathFillType) 1);
11358 path.moveTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11359 path.quadTo(SkBits2Float(0x63690f37), SkBits2Float(0x6d0a3d9b), SkBits2Float(0x00000000), SkBits2Float(0x6d3e3e3e)); // 4.29919e+21f, 2.67396e+27f, 0, 3.67984e+27f
11360 path.conicTo(SkBits2Float(0x6b9253fc), SkBits2Float(0x6c956a8b), SkBits2Float(0x6c6ac798), SkBits2Float(0x692a5d27), SkBits2Float(0x3e56eb72)); // 3.538e+26f, 1.44506e+27f, 1.13532e+27f, 1.28723e+25f, 0.209883f
11361 path.lineTo(SkBits2Float(0x6c6c586c), SkBits2Float(0x00000000)); // 1.1429e+27f, 0
11362 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11363 path.conicTo(SkBits2Float(0x6c8c6c6c), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6cc8e82a), SkBits2Float(0x5b684b68)); // 1.35809e+27f, 0, 0, 1.94305e+27f, 6.53851e+16f
11364 path.lineTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11365 path.close();
11366 path.moveTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11367 path.quadTo(SkBits2Float(0x641ae35f), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 1.14287e+22f, 0, 0, 0
11368 path.lineTo(SkBits2Float(0x6c6c586c), SkBits2Float(0x00000000)); // 1.1429e+27f, 0
11369 path.conicTo(SkBits2Float(0x6c6ba1fc), SkBits2Float(0x688c9eb1), SkBits2Float(0x6c6ac798), SkBits2Float(0x692a5d27), SkBits2Float(0x3f7fec32)); // 1.13945e+27f, 5.31247e+24f, 1.13532e+27f, 1.28723e+25f, 0.999698f
11370 path.lineTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11371 path.close();
11372
11373 SkPath path1(path);
11374 path.reset();
11375 path.setFillType((SkPathFillType) 0);
11376 path.moveTo(SkBits2Float(0x6c3e3e3e), SkBits2Float(0x586c79ff)); // 9.19959e+26f, 1.04003e+15f
11377 path.quadTo(SkBits2Float(0x6c6c4a6c), SkBits2Float(0x6c6c6c6c), SkBits2Float(0xc83e6c6c), SkBits2Float(0x3e313e3e)); // 1.14263e+27f, 1.14327e+27f, -194994, 0.173089f
11378
11379 SkPath path2(path);
11380 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11381 }
11382
fuzz763_36(skiatest::Reporter * reporter,const char * filename)11383 static void fuzz763_36(skiatest::Reporter* reporter, const char* filename) {
11384 SkPath path;
11385 path.setFillType((SkPathFillType) 0);
11386
11387 SkPath path1(path);
11388 path.reset();
11389 path.setFillType((SkPathFillType) 0);
11390 path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11391 path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11392 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
11393 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
11394 path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11395 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
11396 path.lineTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11397 path.close();
11398 path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11399 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11400 path.conicTo(SkBits2Float(0x212a081f), SkBits2Float(0x4b7bc003), SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556839), SkBits2Float(0x2a8c555b)); // 5.7609e-19f, 1.64987e+07f, 4.88298e+16f, -2.64185e+29f, 2.49282e-13f
11401 path.conicTo(SkBits2Float(0xf42a212a), SkBits2Float(0x4b7bc003), SkBits2Float(0x2aed7a39), SkBits2Float(0x2108c08c), SkBits2Float(0x7b03211f)); // -5.39162e+31f, 1.64987e+07f, 4.21845e-13f, 4.63334e-19f, 6.80863e+35f
11402 path.lineTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11403 path.close();
11404 path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11405 path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
11406 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11407 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x03210807), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 5.76399e-19f, 4.73229e-37f, 6.14984e+25f, 75739
11408 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11409 path.close();
11410 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11411 path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3adf21), SkBits2Float(0x284f1a3a), SkBits2Float(0x213ab38a)); // 9.4456e-15f, -8.99754e-33f, 1.14965e-14f, 6.32569e-19f
11412 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11413 path.close();
11414 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11415 path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a20002a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000610354f, 2.50336e-13f
11416 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11417 path.close();
11418 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11419 path.conicTo(SkBits2Float(0xed210830), SkBits2Float(0xc04b6a03), SkBits2Float(0x68297b27), SkBits2Float(0x55555b2d), SkBits2Float(0x2ab03a2a)); // -3.11481e+27f, -3.17835f, 3.20141e+24f, 1.46617e+13f, 3.13042e-13f
11420 path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4341f20), SkBits2Float(0xecc52a22)); // 2.22225e-15f, 0.000713932f, -720.486f, -1.90686e+27f
11421 path.cubicTo(SkBits2Float(0x5921c25d), SkBits2Float(0x29523a70), SkBits2Float(0x555b2d68), SkBits2Float(0x1f212a8c), SkBits2Float(0x0321d90a), SkBits2Float(0x5b2d6829)); // 2.8457e+15f, 4.66801e-14f, 1.50618e+13f, 3.41283e-20f, 4.75628e-37f, 4.88097e+16f
11422 path.lineTo(SkBits2Float(0x1f2a2a8c), SkBits2Float(0x03210821)); // 3.60341e-20f, 4.7323e-37f
11423 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11424 path.close();
11425 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11426 path.conicTo(SkBits2Float(0x2eed6a7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28), SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28)); // 1.07964e-10f, 9.4495e-15f, 0.000617492f, 2.58753e+09f, 0.00136978f
11427 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11428 path.close();
11429 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11430 path.quadTo(SkBits2Float(0xe61d2a28), SkBits2Float(0x2a43962b), SkBits2Float(0x29272a81), SkBits2Float(0x2bb02a55)); // -1.85547e+23f, 1.73716e-13f, 3.71183e-14f, 1.25173e-12f
11431 path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3ac52729), SkBits2Float(0xc4223b32), SkBits2Float(0x6c2a201f)); // 2.22225e-15f, 0.00150416f, -648.925f, 8.22676e+26f
11432
11433 SkPath path2(path);
11434 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11435 }
11436
fuzz763_35(skiatest::Reporter * reporter,const char * filename)11437 static void fuzz763_35(skiatest::Reporter* reporter, const char* filename) {
11438 SkPath path;
11439 path.setFillType((SkPathFillType) 1);
11440
11441 SkPath path1(path);
11442 path.reset();
11443 path.setFillType((SkPathFillType) 0);
11444 path.moveTo(SkBits2Float(0x2aed2a8c), SkBits2Float(0x03210a1f)); // 4.21292e-13f, 4.73253e-37f
11445 path.conicTo(SkBits2Float(0x0000007b), SkBits2Float(0x7474747f), SkBits2Float(0x74747474), SkBits2Float(0x747474c4), SkBits2Float(0x74747474)); // 1.7236e-43f, 7.74709e+31f, 7.74708e+31f, 7.74712e+31f, 7.74708e+31f
11446 path.quadTo(SkBits2Float(0x74747474), SkBits2Float(0x74747474), SkBits2Float(0x20437474), SkBits2Float(0x43a52b02)); // 7.74708e+31f, 7.74708e+31f, 1.65557e-19f, 330.336f
11447 path.moveTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
11448 path.lineTo(SkBits2Float(0x4b7bd603), SkBits2Float(0x6cf33b6a)); // 1.65043e+07f, 2.3524e+27f
11449 path.conicTo(SkBits2Float(0x35778caa), SkBits2Float(0x0000002a), SkBits2Float(0x74742164), SkBits2Float(0x2a3a7474), SkBits2Float(0x4cc22157)); // 9.22194e-07f, 5.88545e-44f, 7.7368e+31f, 1.65605e-13f, 1.0178e+08f
11450 path.cubicTo(SkBits2Float(0x21479321), SkBits2Float(0x23434cc2), SkBits2Float(0x3a214793), SkBits2Float(0x2128282a), SkBits2Float(0x323adf81), SkBits2Float(0x77291a3a)); // 6.76185e-19f, 1.05872e-17f, 0.000615233f, 5.69738e-19f, 1.08774e-08f, 3.42981e+33f
11451 path.conicTo(SkBits2Float(0x0000002a), SkBits2Float(0x7474743e), SkBits2Float(0x74747474), SkBits2Float(0x74746474), SkBits2Float(0x74747474)); // 5.88545e-44f, 7.74706e+31f, 7.74708e+31f, 7.7451e+31f, 7.74708e+31f
11452 path.cubicTo(SkBits2Float(0x21e7fc06), SkBits2Float(0x2a212a59), SkBits2Float(0x0321081f), SkBits2Float(0x00002a35), SkBits2Float(0x74744000), SkBits2Float(0x2974e874)); // 1.57199e-18f, 1.43144e-13f, 4.7323e-37f, 1.5141e-41f, 7.74059e+31f, 5.43805e-14f
11453 path.cubicTo(SkBits2Float(0x74647474), SkBits2Float(0x74747474), SkBits2Float(0x12ec7474), SkBits2Float(0x4cc22147), SkBits2Float(0x47932343), SkBits2Float(0x282a3a21)); // 7.24002e+31f, 7.74708e+31f, 1.49224e-27f, 1.0178e+08f, 75334.5f, 9.4495e-15f
11454 path.lineTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
11455 path.close();
11456 path.moveTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
11457 path.conicTo(SkBits2Float(0x3a323adf), SkBits2Float(0x4977291a), SkBits2Float(0x0000002a), SkBits2Float(0x7474743e), SkBits2Float(0x74747474)); // 0.000679893f, 1.01237e+06f, 5.88545e-44f, 7.74706e+31f, 7.74708e+31f
11458 path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x21e7fc06), SkBits2Float(0x2a212a59), SkBits2Float(0x0321081f), SkBits2Float(0x00002a35)); // 7.74708e+31f, 7.74708e+31f, 1.57199e-18f, 1.43144e-13f, 4.7323e-37f, 1.5141e-41f
11459 path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x742974e8)); // 7.74706e+31f, 5.3703e+31f
11460 path.cubicTo(SkBits2Float(0x74746474), SkBits2Float(0x74747474), SkBits2Float(0xd912ec74), SkBits2Float(0x553a3728), SkBits2Float(0x29202a8c), SkBits2Float(0x5555201b)); // 7.7451e+31f, 7.74708e+31f, -2.58471e+15f, 1.27966e+13f, 3.5564e-14f, 1.46459e+13f
11461 path.moveTo(SkBits2Float(0x31292768), SkBits2Float(0x212d2aff)); // 2.46151e-09f, 5.86716e-19f
11462 path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x323adf81), SkBits2Float(0x77291a3a), SkBits2Float(0x00002a49)); // 5.69738e-19f, 1.08774e-08f, 3.42981e+33f, 1.51691e-41f
11463 path.moveTo(SkBits2Float(0x7474743e), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11464 path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x21e7fc06), SkBits2Float(0x2a212a59), SkBits2Float(0x0321081f), SkBits2Float(0x00002a35)); // 7.74708e+31f, 7.74708e+31f, 1.57199e-18f, 1.43144e-13f, 4.7323e-37f, 1.5141e-41f
11465 path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11466 path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x43747474), SkBits2Float(0xa52b0220), SkBits2Float(0x47812a43), SkBits2Float(0x282a3a21)); // 7.74708e+31f, 7.74708e+31f, 244.455f, -1.48326e-16f, 66132.5f, 9.4495e-15f
11467 path.lineTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11468 path.close();
11469 path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11470 path.conicTo(SkBits2Float(0x3a323adf), SkBits2Float(0x19433b1a), SkBits2Float(0x5921e7fc), SkBits2Float(0x1f2a212a), SkBits2Float(0x35032108)); // 0.000679893f, 1.00932e-23f, 2.84828e+15f, 3.60263e-20f, 4.88494e-07f
11471
11472 SkPath path2(path);
11473 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11474 }
11475
fuzz763_37(skiatest::Reporter * reporter,const char * filename)11476 static void fuzz763_37(skiatest::Reporter* reporter, const char* filename) {
11477 SkPath path;
11478 path.setFillType((SkPathFillType) 0);
11479 path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x5b2d3368)); // 1.59583e+13f, 4.87517e+16f
11480 path.conicTo(SkBits2Float(0x5b2d555b), SkBits2Float(0x68275b2d), SkBits2Float(0x21685527), SkBits2Float(0x0321082a), SkBits2Float(0x6ab485c0)); // 4.8789e+16f, 3.16127e+24f, 7.87174e-19f, 4.7323e-37f, 1.09119e+26f
11481 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 4.8745e+16f
11482 path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
11483 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2a8cef2a), SkBits2Float(0x682d2953), SkBits2Float(0xee682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 2.50349e-13f, 3.27093e+24f, -1.79601e+28f, 1.64988e+07f
11484 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11485 path.conicTo(SkBits2Float(0x4b03213b), SkBits2Float(0xc07b2a08), SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556830), SkBits2Float(0x2a8c555b)); // 8.59372e+06f, -3.92444f, 4.88298e+16f, -2.64185e+29f, 2.49282e-13f
11486 path.conicTo(SkBits2Float(0x0321212a), SkBits2Float(0x4b7bd2c0), SkBits2Float(0xed7ac039), SkBits2Float(0x2f218c08), SkBits2Float(0x1f037b2a)); // 4.73517e-37f, 1.65035e+07f, -4.85023e+27f, 1.46926e-10f, 2.78422e-20f
11487 path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
11488 path.close();
11489 path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
11490 path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
11491 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11492 path.conicTo(SkBits2Float(0x721f2a5b), SkBits2Float(0x212a8c55), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4793ed7a)); // 3.1526e+30f, 5.7784e-19f, 4.7323e-37f, 6.14984e+25f, 75739
11493 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11494 path.close();
11495 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11496 path.quadTo(SkBits2Float(0x28282a2a), SkBits2Float(0x2c682921), SkBits2Float(0x8c555bf6), SkBits2Float(0x6d03de30)); // 9.33502e-15f, 3.2992e-12f, -1.64366e-31f, 2.5507e+27f
11497 path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x081f2a21)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 4.78968e-34f
11498 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11499 path.close();
11500 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11501 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0xdf93ed7a), SkBits2Float(0x1a3a803a), SkBits2Float(0xb38a294f), SkBits2Float(0x3ac2213a)); // 6.14991e+25f, -2.13186e+19f, 3.85675e-23f, -6.43364e-08f, 0.00148109f
11502 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11503 path.close();
11504 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11505 path.conicTo(SkBits2Float(0xe62b291d), SkBits2Float(0x2a812a43), SkBits2Float(0x8ced093a), SkBits2Float(0xb38a5c5c), SkBits2Float(0x3ac2213a)); // -2.02071e+23f, 2.29443e-13f, -3.65212e-31f, -6.44293e-08f, 0.00148109f
11506 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11507 path.close();
11508 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11509 path.lineTo(SkBits2Float(0x8ced293a), SkBits2Float(0x5c5c5c5c)); // -3.65404e-31f, 2.48104e+17f
11510 path.moveTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003)); // 4.61198e-19f, 1.64987e+07f
11511 path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 9.43289e-15f, 4.8745e+16f
11512 path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
11513 path.lineTo(SkBits2Float(0x682d2952), SkBits2Float(0xee682103)); // 3.27093e+24f, -1.79601e+28f
11514 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x2a3b0355)); // 4.85282e+16f, 1.66101e-13f
11515 path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
11516 path.close();
11517 path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
11518 path.conicTo(SkBits2Float(0x084b218c), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0x5bf05568), SkBits2Float(0x1f2a8c55)); // 6.11275e-34f, 1.16348e+26f, 0.000209024f, 1.35296e+17f, 3.6115e-20f
11519
11520 SkPath path1(path);
11521 path.reset();
11522 path.setFillType((SkPathFillType) 0);
11523 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11524 path.cubicTo(SkBits2Float(0xbcb4bcac), SkBits2Float(0x000029ff), SkBits2Float(0x010000bc), SkBits2Float(0x00bcbc00), SkBits2Float(0xbebcbcbc), SkBits2Float(0xb6aebcae)); // -0.0220626f, 1.50654e-41f, 2.35104e-38f, 1.73325e-38f, -0.368627f, -5.20757e-06f
11525
11526 SkPath path2(path);
11527 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11528 }
11529
fuzz763_38(skiatest::Reporter * reporter,const char * filename)11530 static void fuzz763_38(skiatest::Reporter* reporter, const char* filename) {
11531 SkPath path;
11532 path.setFillType((SkPathFillType) 0);
11533 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11534 path.conicTo(SkBits2Float(0x5b682968), SkBits2Float(0x5b292d11), SkBits2Float(0x212a8c55), SkBits2Float(0x555b2d2d), SkBits2Float(0x52525268)); // 6.53477e+16f, 4.76188e+16f, 5.7784e-19f, 1.50617e+13f, 2.25831e+11f
11535 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11536 path.close();
11537 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11538 path.close();
11539 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11540 path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x2ac05252), SkBits2Float(0x727fb721)); // 4.80216e+30f, 2.25832e+11f, 3.41632e-13f, 5.06496e+30f
11541 path.lineTo(SkBits2Float(0x73727322), SkBits2Float(0x555b2d29)); // 1.92088e+31f, 1.50617e+13f
11542 path.lineTo(SkBits2Float(0xab2a212e), SkBits2Float(0x7a27872a)); // -6.04422e-13f, 2.17464e+35f
11543 path.moveTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
11544 path.quadTo(SkBits2Float(0x52524852), SkBits2Float(0x72525228), SkBits2Float(0x72727272), SkBits2Float(0x3a727272)); // 2.25789e+11f, 4.16584e+30f, 4.80216e+30f, 0.000924862f
11545 path.lineTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
11546 path.close();
11547 path.moveTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
11548 path.quadTo(SkBits2Float(0x2a292827), SkBits2Float(0x962b0080), SkBits2Float(0x5252752a), SkBits2Float(0x72725252)); // 1.50241e-13f, -1.38134e-25f, 2.25977e+11f, 4.79967e+30f
11549 path.quadTo(SkBits2Float(0x72725252), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.79967e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
11550 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda000072), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.00732e+15f, 2.25867e+11f, 2.25831e+11f
11551 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525272), SkBits2Float(0x72525248), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16584e+30f, 4.80216e+30f
11552 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 2.25831e+11f
11553 path.quadTo(SkBits2Float(0x86727272), SkBits2Float(0x5252528d), SkBits2Float(0x72525252), SkBits2Float(0x72727227)); // -4.55992e-35f, 2.25832e+11f, 4.16585e+30f, 4.80214e+30f
11554 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x29217272), SkBits2Float(0xc003211c), SkBits2Float(0x556a4b7b)); // 4.80216e+30f, 3.58484e-14f, -2.0489f, 1.61006e+13f
11555 path.moveTo(SkBits2Float(0x72557272), SkBits2Float(0x00727272)); // 4.22775e+30f, 1.05103e-38f
11556 path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11557 path.close();
11558 path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11559 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x3a727272), SkBits2Float(0x28273ac2), SkBits2Float(0x00802a29)); // 4.80216e+30f, 0.000924862f, 9.2831e-15f, 1.17701e-38f
11560 path.lineTo(SkBits2Float(0x52752a96), SkBits2Float(0x72525252)); // 2.63245e+11f, 4.16585e+30f
11561 path.quadTo(SkBits2Float(0x72525272), SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72727272)); // 4.16586e+30f, 2.25966e+11f, 2.25831e+11f, 4.80216e+30f
11562 path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
11563 path.lineTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11564 path.close();
11565 path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11566 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525272), SkBits2Float(0x72525248), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16584e+30f, 4.80216e+30f
11567 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x72525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 4.16585e+30f
11568 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x72727252), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada)); // 4.80216e+30f, 4.80215e+30f, -9.04113e+15f, 2.25867e+11f
11569 path.lineTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11570 path.close();
11571 path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11572 path.quadTo(SkBits2Float(0x86727272), SkBits2Float(0x5252528d), SkBits2Float(0x72525252), SkBits2Float(0x72727227)); // -4.55992e-35f, 2.25832e+11f, 4.16585e+30f, 4.80214e+30f
11573 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x29217272), SkBits2Float(0xc003211c), SkBits2Float(0x556a4b7b)); // 4.80216e+30f, 3.58484e-14f, -2.0489f, 1.61006e+13f
11574 path.moveTo(SkBits2Float(0x72557272), SkBits2Float(0x00727272)); // 4.22775e+30f, 1.05103e-38f
11575 path.moveTo(SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 2.34994e+11f, 2.25831e+11f
11576 path.close();
11577 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11578 path.close();
11579 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11580 path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
11581 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 2.25831e+11f
11582 path.quadTo(SkBits2Float(0x52525272), SkBits2Float(0x3b3b0052), SkBits2Float(0x5b2d553a), SkBits2Float(0x68556829)); // 2.25832e+11f, 0.00285341f, 4.87889e+16f, 4.03114e+24f
11583
11584 SkPath path1(path);
11585 path.reset();
11586 path.setFillType((SkPathFillType) 0);
11587 path.moveTo(SkBits2Float(0x52528c55), SkBits2Float(0x29215252)); // 2.26074e+11f, 3.58206e-14f
11588
11589 SkPath path2(path);
11590 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11591 }
11592
fuzz763_41(skiatest::Reporter * reporter,const char * filename)11593 static void fuzz763_41(skiatest::Reporter* reporter, const char* filename) {
11594 SkPath path;
11595 path.setFillType((SkPathFillType) 0);
11596
11597 SkPath path1(path);
11598 path.reset();
11599 path.setFillType((SkPathFillType) 0);
11600 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11601 path.quadTo(SkBits2Float(0x7a057c72), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x055f0089)); // 1.73275e+35f, 4.80216e+30f, 4.34505e+30f, 1.04855e-35f
11602 path.quadTo(SkBits2Float(0x00057272), SkBits2Float(0x72ff0000), SkBits2Float(0xba405e72), SkBits2Float(0x031b0074)); // 5.00233e-40f, 1.01016e+31f, -0.000733829f, 4.55509e-37f
11603 path.lineTo(SkBits2Float(0x664af700), SkBits2Float(0x56397d39)); // 2.39619e+23f, 5.09869e+13f
11604 path.quadTo(SkBits2Float(0x7a057273), SkBits2Float(0x057300e4), SkBits2Float(0x257c0c9f), SkBits2Float(0x72400006)); // 1.73224e+35f, 1.1426e-35f, 2.18618e-16f, 3.80295e+30f
11605 path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x030000ff), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8ec4000)); // -0.000836826f, 3.7617e-37f, 1.17894e+32f, -8.92527e+24f
11606 path.moveTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d)); // 0.000231069f, 2.53975e+30f
11607 path.quadTo(SkBits2Float(0x827a0572), SkBits2Float(0x08727272), SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // -1.83687e-37f, 7.29588e-34f, 4.09355e-34f, 4.09355e-34f
11608 path.lineTo(SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // 4.09355e-34f, 4.09355e-34f
11609 path.lineTo(SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // 4.09355e-34f, 4.09355e-34f
11610 path.conicTo(SkBits2Float(0x72728c08), SkBits2Float(0x5b5e7272), SkBits2Float(0x000074ba), SkBits2Float(0x03f8e300), SkBits2Float(0x5aff00e8)); // 4.80414e+30f, 6.26133e+16f, 4.18736e-41f, 1.46282e-36f, 3.58886e+16f
11611 path.quadTo(SkBits2Float(0x00800039), SkBits2Float(0x72100039), SkBits2Float(0x727a0572), SkBits2Float(0x7a727272)); // 1.1755e-38f, 2.85223e+30f, 4.95218e+30f, 3.14714e+35f
11612 path.lineTo(SkBits2Float(0x7272727a), SkBits2Float(0xdb5e6472)); // 4.80216e+30f, -6.25979e+16f
11613 path.moveTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
11614 path.lineTo(SkBits2Float(0x666d0100), SkBits2Float(0x726efe62)); // 2.79805e+23f, 4.73376e+30f
11615 path.lineTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
11616 path.close();
11617 path.moveTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
11618 path.conicTo(SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x475afc16), SkBits2Float(0x170100ad), SkBits2Float(0x01008000)); // 4.80216e+30f, -3.47604e+31f, 56060.1f, 4.1683e-25f, 2.36017e-38f
11619 path.quadTo(SkBits2Float(0x72057272), SkBits2Float(0x8c7a3472), SkBits2Float(0x72727272), SkBits2Float(0x00f6475e)); // 2.64319e+30f, -1.92751e-31f, 4.80216e+30f, 2.26171e-38f
11620 path.moveTo(SkBits2Float(0x6d106d43), SkBits2Float(0x6efe6266)); // 2.79362e+27f, 3.93641e+28f
11621 path.quadTo(SkBits2Float(0x72727a05), SkBits2Float(0xba5b7272), SkBits2Float(0x03000074), SkBits2Float(0x5aff00e8)); // 4.80274e+30f, -0.000837124f, 3.76163e-37f, 3.58886e+16f
11622 path.quadTo(SkBits2Float(0x00da0039), SkBits2Float(0x72100039), SkBits2Float(0x727a0572), SkBits2Float(0x7a727272)); // 2.00202e-38f, 2.85223e+30f, 4.95218e+30f, 3.14714e+35f
11623 path.lineTo(SkBits2Float(0x7272727a), SkBits2Float(0xdb5e6472)); // 4.80216e+30f, -6.25979e+16f
11624 path.lineTo(SkBits2Float(0xfc5b97fc), SkBits2Float(0x47440039)); // -4.56078e+36f, 50176.2f
11625 path.lineTo(SkBits2Float(0x00710000), SkBits2Float(0x62766d01)); // 1.03774e-38f, 1.13644e+21f
11626 path.quadTo(SkBits2Float(0x7a05726e), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
11627
11628 SkPath path2(path);
11629 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11630 }
11631
fuzz763_40(skiatest::Reporter * reporter,const char * filename)11632 static void fuzz763_40(skiatest::Reporter* reporter, const char* filename) {
11633 SkPath path;
11634 path.setFillType((SkPathFillType) 1);
11635
11636 SkPath path1(path);
11637 path.reset();
11638 path.setFillType((SkPathFillType) 0);
11639 path.moveTo(SkBits2Float(0x10190004), SkBits2Float(0x7272727a)); // 3.01739e-29f, 4.80216e+30f
11640 path.quadTo(SkBits2Float(0xf3db5e64), SkBits2Float(0x5b97fc16), SkBits2Float(0x000039fc), SkBits2Float(0x01008000)); // -3.47604e+31f, 8.55598e+16f, 2.08009e-41f, 2.36017e-38f
11641 path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x41720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 15.1251f
11642 path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
11643 path.lineTo(SkBits2Float(0x01000000), SkBits2Float(0x10010004)); // 2.35099e-38f, 2.54408e-29f
11644 path.conicTo(SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16), SkBits2Float(0x0000d07d), SkBits2Float(0x01008000)); // 4.80216e+30f, -3.47604e+31f, 3.58785e+06f, 7.47915e-41f, 2.36017e-38f
11645 path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x63720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 4.46415e+21f
11646 path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
11647 path.lineTo(SkBits2Float(0x72000000), SkBits2Float(0x5b5e72b4)); // 2.5353e+30f, 6.26136e+16f
11648 path.quadTo(SkBits2Float(0x05720089), SkBits2Float(0x05727272), SkBits2Float(0x7272727a), SkBits2Float(0x5b5e7272)); // 1.13789e-35f, 1.13998e-35f, 4.80216e+30f, 6.26133e+16f
11649 path.cubicTo(SkBits2Float(0x03000074), SkBits2Float(0x4aff00e8), SkBits2Float(0x397d3972), SkBits2Float(0x01727200), SkBits2Float(0x72727a00), SkBits2Float(0x5e8d7272)); // 3.76163e-37f, 8.35596e+06f, 0.000241494f, 4.45302e-38f, 4.80274e+30f, 5.09617e+18f
11650 path.moveTo(SkBits2Float(0x72008972), SkBits2Float(0x458fe705)); // 2.54594e+30f, 4604.88f
11651 path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0xe8727272), SkBits2Float(0xba5b5e03), SkBits2Float(0x03000074)); // 1.73224e+35f, -4.5797e+24f, -0.00083682f, 3.76163e-37f
11652 path.lineTo(SkBits2Float(0xf3dbff00), SkBits2Float(0x00397d16)); // -3.48598e+31f, 5.2795e-39f
11653 path.cubicTo(SkBits2Float(0x7a101900), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x0197fc16), SkBits2Float(0x200c2010), SkBits2Float(0x20203620)); // 1.87049e+35f, 4.80216e+30f, -3.47604e+31f, 5.58304e-38f, 1.18691e-19f, 1.35704e-19f
11654
11655 SkPath path2(path);
11656 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11657 }
11658
fuzz763_39(skiatest::Reporter * reporter,const char * filename)11659 static void fuzz763_39(skiatest::Reporter* reporter, const char* filename) {
11660 SkPath path;
11661 path.setFillType((SkPathFillType) 0);
11662
11663 SkPath path1(path);
11664 path.reset();
11665 path.setFillType((SkPathFillType) 0);
11666 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11667 path.quadTo(SkBits2Float(0x7a057c72), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x055f0089)); // 1.73275e+35f, 4.80216e+30f, 4.34505e+30f, 1.04855e-35f
11668 path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xba405e72), SkBits2Float(0x03000074)); // 1.73224e+35f, 4.80216e+30f, -0.000733829f, 3.76163e-37f
11669 path.lineTo(SkBits2Float(0x664aff00), SkBits2Float(0x56397d39)); // 2.39655e+23f, 5.09869e+13f
11670 path.quadTo(SkBits2Float(0x7a057273), SkBits2Float(0x057300ff), SkBits2Float(0x257c0c9f), SkBits2Float(0x72787257)); // 1.73224e+35f, 1.1426e-35f, 2.18618e-16f, 4.92099e+30f
11671 path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x03000093), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8ecff00)); // -0.000836826f, 3.76165e-37f, 1.17894e+32f, -8.95346e+24f
11672 path.moveTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d)); // 0.000231069f, 2.53975e+30f
11673 path.quadTo(SkBits2Float(0x827a0572), SkBits2Float(0x72727272), SkBits2Float(0x724adf00), SkBits2Float(0x00397d39)); // -1.83687e-37f, 4.80216e+30f, 4.01828e+30f, 5.27954e-39f
11674 path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x16f3abab), SkBits2Float(0xfc5b97fc), SkBits2Float(0x47440039)); // 1.73224e+35f, 3.93671e-25f, -4.56078e+36f, 50176.2f
11675 path.lineTo(SkBits2Float(0x00710000), SkBits2Float(0x62767201)); // 1.03774e-38f, 1.13653e+21f
11676 path.quadTo(SkBits2Float(0x7a05726e), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
11677
11678 SkPath path2(path);
11679 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11680 }
11681
11682
fuzz763_42(skiatest::Reporter * reporter,const char * filename)11683 static void fuzz763_42(skiatest::Reporter* reporter, const char* filename) {
11684 SkPath path;
11685 path.setFillType((SkPathFillType) 0);
11686
11687 SkPath path1(path);
11688 path.reset();
11689 path.setFillType((SkPathFillType) 0);
11690 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11691 path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x05720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 1.13789e-35f
11692 path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xba405e72), SkBits2Float(0x03000074)); // 1.73224e+35f, 4.80216e+30f, -0.000733829f, 3.76163e-37f
11693 path.lineTo(SkBits2Float(0x724aff00), SkBits2Float(0x56397d39)); // 4.02075e+30f, 5.09869e+13f
11694 path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0xfa8d00ff), SkBits2Float(0x25727272), SkBits2Float(0x7272727a)); // 1.73224e+35f, -3.66067e+35f, 2.10289e-16f, 4.80216e+30f
11695 path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x03000093), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8e0ff00)); // -0.000836826f, 3.76165e-37f, 1.17894e+32f, -8.50011e+24f
11696 path.conicTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d), SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x4aff0072)); // 0.000231069f, 2.53975e+30f, 1.73224e+35f, 4.80216e+30f, 8.3559e+06f
11697 path.quadTo(SkBits2Float(0x00397d39), SkBits2Float(0x05727272), SkBits2Float(0x7272727a), SkBits2Float(0x385e7272)); // 5.27954e-39f, 1.13998e-35f, 4.80216e+30f, 5.30355e-05f
11698 path.quadTo(SkBits2Float(0x057200ff), SkBits2Float(0x25727272), SkBits2Float(0x7272727a), SkBits2Float(0x5b5e7272)); // 1.1379e-35f, 2.10289e-16f, 4.80216e+30f, 6.26133e+16f
11699 path.cubicTo(SkBits2Float(0x03000074), SkBits2Float(0x4aff00e8), SkBits2Float(0x397d3972), SkBits2Float(0x01000400), SkBits2Float(0x72727a10), SkBits2Float(0x5e647272)); // 3.76163e-37f, 8.35596e+06f, 0.000241494f, 2.35128e-38f, 4.80275e+30f, 4.11534e+18f
11700 path.quadTo(SkBits2Float(0x2b2d16f3), SkBits2Float(0x0039fc4d), SkBits2Float(0x68800000), SkBits2Float(0x0100fafa)); // 6.14938e-13f, 5.32513e-39f, 4.8357e+24f, 2.369e-38f
11701 path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x63720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 4.46415e+21f
11702 path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
11703 path.lineTo(SkBits2Float(0x72720000), SkBits2Float(0xff725b5e)); // 4.7933e+30f, -3.22148e+38f
11704 path.moveTo(SkBits2Float(0x72720572), SkBits2Float(0x5b5e2572)); // 4.79373e+30f, 6.25286e+16f
11705 path.quadTo(SkBits2Float(0x05720089), SkBits2Float(0x25727272), SkBits2Float(0x72728c7a), SkBits2Float(0x5b5e7272)); // 1.13789e-35f, 2.10289e-16f, 4.80417e+30f, 6.26133e+16f
11706 path.cubicTo(SkBits2Float(0x03000074), SkBits2Float(0x4aff00e8), SkBits2Float(0x397d3972), SkBits2Float(0x01000400), SkBits2Float(0x72727a10), SkBits2Float(0x5e827272)); // 3.76163e-37f, 8.35596e+06f, 0.000241494f, 2.35128e-38f, 4.80275e+30f, 4.69985e+18f
11707 path.quadTo(SkBits2Float(0x97fc16f3), SkBits2Float(0x0039fc5b), SkBits2Float(0x00f6472e), SkBits2Float(0x01008000)); // -1.62909e-24f, 5.32515e-39f, 2.26171e-38f, 2.36017e-38f
11708 path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
11709
11710 SkPath path2(path);
11711 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11712 }
11713
fuzz763_43(skiatest::Reporter * reporter,const char * filename)11714 static void fuzz763_43(skiatest::Reporter* reporter, const char* filename) {
11715 SkPath path;
11716 path.setFillType((SkPathFillType) 1);
11717
11718 SkPath path1(path);
11719 path.reset();
11720 path.setFillType((SkPathFillType) 0);
11721 path.moveTo(SkBits2Float(0x5c386c3a), SkBits2Float(0x4e691a3e)); // 2.07642e+17f, 9.77703e+08f
11722 path.cubicTo(SkBits2Float(0x6f69f9f5), SkBits2Float(0x18ff8791), SkBits2Float(0x2492263c), SkBits2Float(0xbc6fdb48), SkBits2Float(0xc2f82107), SkBits2Float(0x729a18e1)); // 7.24122e+28f, 6.60528e-24f, 6.33822e-17f, -0.0146397f, -124.065f, 6.10442e+30f
11723 path.cubicTo(SkBits2Float(0x07d729d1), SkBits2Float(0xdea6db48), SkBits2Float(0xcd1dfb88), SkBits2Float(0x90826769), SkBits2Float(0x1c20e5a4), SkBits2Float(0xa4c3ba9b)); // 3.23742e-34f, -6.01164e+18f, -1.65657e+08f, -5.14353e-29f, 5.32364e-22f, -8.48839e-17f
11724 path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11725 path.close();
11726 path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11727 path.cubicTo(SkBits2Float(0xdeea1d6e), SkBits2Float(0xc7774804), SkBits2Float(0x27cf0dcf), SkBits2Float(0x6ae8b99f), SkBits2Float(0x24ac3260), SkBits2Float(0x062fa93c)); // -8.43488e+18f, -63304, 5.7469e-15f, 1.40674e+26f, 7.46784e-17f, 3.30382e-35f
11728 path.lineTo(SkBits2Float(0x438a0b9c), SkBits2Float(0x60a1d2c8)); // 276.091f, 9.32848e+19f
11729 path.quadTo(SkBits2Float(0xe13fb902), SkBits2Float(0x07ee536f), SkBits2Float(0x971d8ac1), SkBits2Float(0x2f9f174b)); // -2.21041e+20f, 3.58593e-34f, -5.09046e-25f, 2.89385e-10f
11730 path.lineTo(SkBits2Float(0x0f2cf5d8), SkBits2Float(0xe271654c)); // 8.5276e-30f, -1.11324e+21f
11731 path.lineTo(SkBits2Float(0xe6cf24d2), SkBits2Float(0xd9537742)); // -4.89105e+23f, -3.72015e+15f
11732 path.cubicTo(SkBits2Float(0x1aaaee04), SkBits2Float(0x9e3b804c), SkBits2Float(0x84cba87d), SkBits2Float(0x4e0e8ccc), SkBits2Float(0x2aec611a), SkBits2Float(0x7ae4b639)); // 7.06949e-23f, -9.92623e-21f, -4.78798e-36f, 5.97898e+08f, 4.19894e-13f, 5.9377e+35f
11733 path.conicTo(SkBits2Float(0x73357921), SkBits2Float(0x6f163021), SkBits2Float(0x70ea542c), SkBits2Float(0xe008f404), SkBits2Float(0x1f6c5e52)); // 1.43778e+31f, 4.64809e+28f, 5.8017e+29f, -3.94741e+19f, 5.0053e-20f
11734 path.lineTo(SkBits2Float(0xda45ad4e), SkBits2Float(0xedce4a04)); // -1.39103e+16f, -7.98042e+27f
11735 path.lineTo(SkBits2Float(0xac0e45da), SkBits2Float(0x8f632841)); // -2.02182e-12f, -1.11997e-29f
11736 path.lineTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11737 path.close();
11738 path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11739 path.quadTo(SkBits2Float(0xf35c4ad5), SkBits2Float(0x0692f251), SkBits2Float(0x69632126), SkBits2Float(0xb927af67)); // -1.74534e+31f, 5.52751e-35f, 1.71614e+25f, -0.000159917f
11740 path.moveTo(SkBits2Float(0x6534bff9), SkBits2Float(0x434a9986)); // 5.3348e+22f, 202.6f
11741 path.quadTo(SkBits2Float(0x37c603e5), SkBits2Float(0xa0683953), SkBits2Float(0x751915e4), SkBits2Float(0x831c911a)); // 2.36053e-05f, -1.96701e-19f, 1.94059e+32f, -4.60108e-37f
11742 path.cubicTo(SkBits2Float(0xba4f10f1), SkBits2Float(0x5a7571df), SkBits2Float(0x4ec67459), SkBits2Float(0x33c58827), SkBits2Float(0x10b78ccb), SkBits2Float(0xedbd2748)); // -0.000789895f, 1.72716e+16f, 1.66476e+09f, 9.19829e-08f, 7.23977e-29f, -7.31752e+27f
11743 path.cubicTo(SkBits2Float(0x6d06f06a), SkBits2Float(0xe30465cf), SkBits2Float(0xc5458fe7), SkBits2Float(0xca488dc4), SkBits2Float(0x38f9021c), SkBits2Float(0x3e8d58db)); // 2.6101e+27f, -2.44231e+21f, -3160.99f, -3.28587e+06f, 0.000118736f, 0.276069f
11744
11745 SkPath path2(path);
11746 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11747 }
11748
fuzz763_44(skiatest::Reporter * reporter,const char * filename)11749 static void fuzz763_44(skiatest::Reporter* reporter, const char* filename) {
11750 SkPath path;
11751 path.setFillType((SkPathFillType) 1);
11752 path.moveTo(SkBits2Float(0x7c223bab), SkBits2Float(0x7cf35966)); // 3.36945e+36f, 1.01083e+37f
11753 path.quadTo(SkBits2Float(0x00000000), SkBits2Float(0x7ccaca6d), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 8.4236e+36f, 0, 0
11754 path.lineTo(SkBits2Float(0x7d7d7d7d), SkBits2Float(0x00000000)); // 2.10591e+37f, 0
11755 path.quadTo(SkBits2Float(0x7ccacab0), SkBits2Float(0x7d1817f4), SkBits2Float(0x7c223bab), SkBits2Float(0x7cf35966)); // 8.42364e+36f, 1.26354e+37f, 3.36945e+36f, 1.01083e+37f
11756 path.close();
11757
11758 SkPath path1(path);
11759 path.reset();
11760 path.setFillType((SkPathFillType) 0);
11761 path.moveTo(SkBits2Float(0x109d0000), SkBits2Float(0xff7bc000)); // 6.19256e-29f, -3.34633e+38f
11762 path.conicTo(SkBits2Float(0x979797ed), SkBits2Float(0x3a214797), SkBits2Float(0x28aa217a), SkBits2Float(0x01007272), SkBits2Float(0x00000072)); // -9.7965e-25f, 0.000615233f, 1.88883e-14f, 2.3592e-38f, 1.59748e-43f
11763 path.quadTo(SkBits2Float(0x72728302), SkBits2Float(0x8b727272), SkBits2Float(0x72727272), SkBits2Float(0xc00308f6)); // 4.80344e+30f, -4.66936e-32f, 4.80216e+30f, -2.04742f
11764 path.conicTo(SkBits2Float(0x7f52753a), SkBits2Float(0x8072ffff), SkBits2Float(0x67af2103), SkBits2Float(0x7d2a6847), SkBits2Float(0x7d7d7d7d)); // 2.79747e+38f, -1.05611e-38f, 1.65405e+24f, 1.41569e+37f, 2.10591e+37f
11765
11766 SkPath path2(path);
11767 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11768 }
11769
fuzz763_45(skiatest::Reporter * reporter,const char * filename)11770 static void fuzz763_45(skiatest::Reporter* reporter, const char* filename) {
11771 SkPath path;
11772 path.setFillType((SkPathFillType) 0);
11773
11774 SkPath path1(path);
11775 path.reset();
11776 path.setFillType((SkPathFillType) 0);
11777 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11778 path.cubicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a303030), SkBits2Float(0x7a303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 2.28705e+35f, 2.28705e+35f, 6.40969e-10f
11779 path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x74303030), SkBits2Float(0x74303030), SkBits2Float(0x30303030), SkBits2Float(0x74303030)); // 6.40969e-10f, 5.58363e+31f, 5.58363e+31f, 6.40969e-10f, 5.58363e+31f
11780 path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11781 path.moveTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11782 path.moveTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
11783 path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a743030), SkBits2Float(0x74303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 3.16974e+35f, 5.58363e+31f, 6.40969e-10f
11784 path.lineTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
11785 path.close();
11786 path.moveTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
11787 path.lineTo(SkBits2Float(0x7f303030), SkBits2Float(0x7a303030)); // 2.34194e+38f, 2.28705e+35f
11788 path.conicTo(SkBits2Float(0x77303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0xf9303030), SkBits2Float(0x7a303030)); // 3.57352e+33f, 6.40969e-10f, 6.40969e-10f, -5.71764e+34f, 2.28705e+35f
11789 path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11790 path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11791 path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11792 path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11793 path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 2.28705e+35f, 6.40969e-10f
11794 path.cubicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 2.28705e+35f, 6.40969e-10f
11795 path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11796 path.moveTo(SkBits2Float(0x77303030), SkBits2Float(0xff303030)); // 3.57352e+33f, -2.34194e+38f
11797 path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7f773030), SkBits2Float(0x7a7a3030), SkBits2Float(0x7a303030)); // 6.40969e-10f, 6.40969e-10f, 3.2857e+38f, 3.24763e+35f, 2.28705e+35f
11798 path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x77303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 3.57352e+33f, 6.40969e-10f
11799 path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7b303030), SkBits2Float(0x73303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 9.14822e+35f, 1.39591e+31f, 6.40969e-10f
11800 path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a7a3030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 3.24763e+35f
11801 SkPath path2(path);
11802 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11803 }
11804
fuzz763_46(skiatest::Reporter * reporter,const char * filename)11805 static void fuzz763_46(skiatest::Reporter* reporter, const char* filename) {
11806 SkPath path;
11807 path.setFillType((SkPathFillType) 0);
11808
11809 SkPath path1(path);
11810 path.reset();
11811 path.setFillType((SkPathFillType) 0);
11812 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11813 path.conicTo(SkBits2Float(0x44444444), SkBits2Float(0x44444444), SkBits2Float(0x44263030), SkBits2Float(0x44304430), SkBits2Float(0x4c444430)); // 785.067f, 785.067f, 664.753f, 705.065f, 5.145e+07f
11814 path.moveTo(SkBits2Float(0x44444444), SkBits2Float(0x44444444)); // 785.067f, 785.067f
11815 path.cubicTo(SkBits2Float(0x30303030), SkBits2Float(0x44444444), SkBits2Float(0x30303030), SkBits2Float(0x44444444), SkBits2Float(0x44444444), SkBits2Float(0x4444444c)); // 6.40969e-10f, 785.067f, 6.40969e-10f, 785.067f, 785.067f, 785.067f
11816 SkPath path2(path);
11817 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11818 }
11819
fuzz763_47(skiatest::Reporter * reporter,const char * filename)11820 static void fuzz763_47(skiatest::Reporter* reporter, const char* filename) {
11821 SkPath path;
11822 path.setFillType((SkPathFillType) 1);
11823
11824 SkPath path1(path);
11825 path.reset();
11826 path.setFillType((SkPathFillType) 0);
11827 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11828 path.cubicTo(SkBits2Float(0x7272728e), SkBits2Float(0x52527272), SkBits2Float(0x2d555252), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29), SkBits2Float(0x2a212a8c)); // 4.80217e+30f, 2.25966e+11f, 1.21259e-11f, 4.03114e+24f, 1.50617e+13f, 1.43144e-13f
11829 path.conicTo(SkBits2Float(0x00296808), SkBits2Float(0x00000002), SkBits2Float(0x52525252), SkBits2Float(0x72007272), SkBits2Float(0x52527272)); // 3.80257e-39f, 2.8026e-45f, 2.25831e+11f, 2.54416e+30f, 2.25966e+11f
11830 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11831 path.close();
11832 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11833 path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x7272081f)); // 1.43144e-13f, 4.79393e+30f
11834 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x5974fa80), SkBits2Float(0x00747474), SkBits2Float(0x59585264)); // 4.80216e+30f, 4.30971e+15f, 1.06947e-38f, 3.80557e+15f
11835 path.cubicTo(SkBits2Float(0x64007474), SkBits2Float(0x088c5852), SkBits2Float(0x80808021), SkBits2Float(0x8c808080), SkBits2Float(0x80802108), SkBits2Float(0x80808080)); // 9.4783e+21f, 8.44671e-34f, -1.18009e-38f, -1.97989e-31f, -1.17668e-38f, -1.1801e-38f
11836 path.quadTo(SkBits2Float(0x80807d80), SkBits2Float(0x80808080), SkBits2Float(0xff7f0000), SkBits2Float(0x80808080)); // -1.18e-38f, -1.1801e-38f, -3.38953e+38f, -1.1801e-38f
11837 path.quadTo(SkBits2Float(0x80808080), SkBits2Float(0x80808080), SkBits2Float(0xed842b00), SkBits2Float(0x7252ff6d)); // -1.1801e-38f, -1.1801e-38f, -5.113e+27f, 4.17924e+30f
11838 path.quadTo(SkBits2Float(0x72577200), SkBits2Float(0x55525352), SkBits2Float(0x2a212a8c), SkBits2Float(0x7272081f)); // 4.26733e+30f, 1.44535e+13f, 1.43144e-13f, 4.79393e+30f
11839 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x6f740080), SkBits2Float(0x8c556874), SkBits2Float(0x2982ffff)); // 4.80216e+30f, 7.55149e+28f, -1.64404e-31f, 5.81757e-14f
11840
11841 SkPath path2(path);
11842 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11843 }
11844
fuzz763_48(skiatest::Reporter * reporter,const char * filename)11845 static void fuzz763_48(skiatest::Reporter* reporter, const char* filename) {
11846 SkPath path;
11847 path.setFillType((SkPathFillType) 1);
11848
11849 SkPath path1(path);
11850 path.reset();
11851 path.setFillType((SkPathFillType) 0);
11852 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11853 path.lineTo(SkBits2Float(0xed0081bc), SkBits2Float(0x1b2d8040)); // -2.48568e+27f, 1.43517e-22f
11854 path.moveTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
11855 path.close();
11856 path.moveTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
11857 path.conicTo(SkBits2Float(0x662d5576), SkBits2Float(0x2d804066), SkBits2Float(0x8068291b), SkBits2Float(0x740315ff), SkBits2Float(0x74747474)); // 2.04636e+23f, 1.45805e-11f, -9.56564e-39f, 4.15428e+31f, 7.74708e+31f
11858 path.cubicTo(SkBits2Float(0x762d0529), SkBits2Float(0x72525252), SkBits2Float(0x007b7272), SkBits2Float(0x525adada), SkBits2Float(0x52525252), SkBits2Float(0x52727252)); // 8.77316e+32f, 4.16585e+30f, 1.13368e-38f, 2.34994e+11f, 2.25831e+11f, 2.60325e+11f
11859 path.lineTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
11860 path.close();
11861 path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11862 path.close();
11863 path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11864 path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52524872), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.2579e+11f, 4.16585e+30f, 4.80216e+30f
11865 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0x80406666), SkBits2Float(0x68291b2d), SkBits2Float(0x0315ff80)); // 4.80215e+30f, -5.91421e-39f, 3.19432e+24f, 4.40805e-37f
11866 path.cubicTo(SkBits2Float(0x74747474), SkBits2Float(0x7b722974), SkBits2Float(0x5adada00), SkBits2Float(0x52525252), SkBits2Float(0x72720052), SkBits2Float(0x72727272)); // 7.74708e+31f, 1.25738e+36f, 3.08006e+16f, 2.25831e+11f, 4.79333e+30f, 4.80216e+30f
11867 path.lineTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11868 path.close();
11869 path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11870 path.quadTo(SkBits2Float(0x72727227), SkBits2Float(0x72727272), SkBits2Float(0x74727272), SkBits2Float(0x55747421)); // 4.80214e+30f, 4.80216e+30f, 7.68345e+31f, 1.67987e+13f
11871 path.lineTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11872 path.close();
11873 path.moveTo(SkBits2Float(0x724b0000), SkBits2Float(0x00725f72)); // 4.02083e+30f, 1.05035e-38f
11874 path.lineTo(SkBits2Float(0x52525252), SkBits2Float(0x72725252)); // 2.25831e+11f, 4.79967e+30f
11875 path.quadTo(SkBits2Float(0x26727272), SkBits2Float(0x0303a525), SkBits2Float(0x52005c03), SkBits2Float(0x72525252)); // 8.41157e-16f, 3.8687e-37f, 1.37825e+11f, 4.16585e+30f
11876 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x1ff07255), SkBits2Float(0x2a8c5572), SkBits2Float(0x21082a21)); // 4.80216e+30f, 1.01833e-19f, 2.49283e-13f, 4.61343e-19f
11877 path.lineTo(SkBits2Float(0x2a2a3a21), SkBits2Float(0x29212828)); // 1.51192e-13f, 3.5784e-14f
11878
11879 SkPath path2(path);
11880 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11881 }
11882
fuzz763_49(skiatest::Reporter * reporter,const char * filename)11883 static void fuzz763_49(skiatest::Reporter* reporter, const char* filename) {
11884 SkPath path;
11885 path.setFillType((SkPathFillType) 0);
11886
11887 SkPath path1(path);
11888 path.reset();
11889 path.setFillType((SkPathFillType) 0);
11890 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11891 path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x78303030), SkBits2Float(0x78787881), SkBits2Float(0x78787878), SkBits2Float(0x30303030)); // 6.40969e-10f, 1.42941e+34f, 2.01583e+34f, 2.01583e+34f, 6.40969e-10f
11892 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11893 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11894 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11895 path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x78787878), SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 6.40969e-10f, 2.01583e+34f, 2.01583e+34f, 2.01583e+34f
11896 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11897 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11898 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11899 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11900 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11901 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11902 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11903 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11904 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11905 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11906 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11907 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11908 path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11909 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x7878788d)); // 2.01583e+34f, 2.01584e+34f
11910 path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x30303030)); // 2.01583e+34f, 6.40969e-10f
11911
11912 SkPath path2(path);
11913 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11914 }
11915
fuzz763_50(skiatest::Reporter * reporter,const char * filename)11916 static void fuzz763_50(skiatest::Reporter* reporter, const char* filename) {
11917 SkPath path;
11918 path.setFillType((SkPathFillType) 1);
11919 path.moveTo(SkBits2Float(0x70621ede), SkBits2Float(0x00000000)); // 2.79924e+29f, 0
11920 path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x74fc5b97), SkBits2Float(0x7d458fe4)); // 0, 0, 0, 1.59951e+32f, 1.64128e+37f
11921 path.lineTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
11922 path.lineTo(SkBits2Float(0x70621ede), SkBits2Float(0x00000000)); // 2.79924e+29f, 0
11923 path.close();
11924 path.moveTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
11925 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11926 path.lineTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
11927 path.close();
11928
11929 SkPath path1(path);
11930 path.reset();
11931 path.setFillType((SkPathFillType) 0);
11932
11933 SkPath path2(path);
11934 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11935 }
11936
fuzz763_51(skiatest::Reporter * reporter,const char * filename)11937 static void fuzz763_51(skiatest::Reporter* reporter, const char* filename) {
11938 SkPath path;
11939 path.setFillType((SkPathFillType) 1);
11940
11941 SkPath path1(path);
11942 path.reset();
11943 path.setFillType((SkPathFillType) 0);
11944 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11945 path.quadTo(SkBits2Float(0x868b5aae), SkBits2Float(0x626c45ab), SkBits2Float(0xefea1ffe), SkBits2Float(0x0029fc76)); // -5.24192e-35f, 1.08961e+21f, -1.44916e+29f, 3.85582e-39f
11946 path.moveTo(SkBits2Float(0xfacbff01), SkBits2Float(0x56fc5b97)); // -5.29604e+35f, 1.38735e+14f
11947 path.cubicTo(SkBits2Float(0x7d4559c9), SkBits2Float(0xad801c39), SkBits2Float(0xfbe2091a), SkBits2Float(0x7268e394), SkBits2Float(0x7c800079), SkBits2Float(0xa1d75590)); // 1.63953e+37f, -1.45644e-11f, -2.34729e+36f, 4.61284e+30f, 5.31699e+36f, -1.45916e-18f
11948
11949 SkPath path2(path);
11950 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11951 }
11952
fuzz763_52(skiatest::Reporter * reporter,const char * filename)11953 static void fuzz763_52(skiatest::Reporter* reporter, const char* filename) {
11954 SkPath path;
11955 path.setFillType((SkPathFillType) 1);
11956
11957 SkPath path1(path);
11958 path.reset();
11959 path.setFillType((SkPathFillType) 0);
11960 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11961 path.quadTo(SkBits2Float(0x29ff4bae), SkBits2Float(0xa1d75590), SkBits2Float(0x9fd6f6c3), SkBits2Float(0x70621ede)); // 1.13374e-13f, -1.45916e-18f, -9.10408e-20f, 2.79924e+29f
11962 path.quadTo(SkBits2Float(0x57a839d3), SkBits2Float(0x1a80d34b), SkBits2Float(0x0147a31b), SkBits2Float(0xff7fffff)); // 3.69933e+14f, 5.32809e-23f, 3.66675e-38f, -3.40282e+38f
11963 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11964 path.close();
11965 path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11966 path.conicTo(SkBits2Float(0x75757568), SkBits2Float(0x7575755e), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75756575)); // 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.11077e+32f
11967 path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11968 path.close();
11969 path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11970 path.conicTo(SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75917575), SkBits2Float(0x75757575)); // 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.68782e+32f, 3.11156e+32f
11971 path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11972 path.close();
11973 path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11974 path.conicTo(SkBits2Float(0x75757575), SkBits2Float(0x7575758f), SkBits2Float(0x7f757575), SkBits2Float(0x75757575), SkBits2Float(0x75757575)); // 3.11156e+32f, 3.11157e+32f, 3.26271e+38f, 3.11156e+32f, 3.11156e+32f
11975 path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11976 path.close();
11977
11978 SkPath path2(path);
11979 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11980 }
11981
fuzz763_53(skiatest::Reporter * reporter,const char * filename)11982 static void fuzz763_53(skiatest::Reporter* reporter, const char* filename) {
11983 SkPath path;
11984 path.setFillType((SkPathFillType) 1);
11985 path.moveTo(SkBits2Float(0x7644b829), SkBits2Float(0x00000000)); // 9.97486e+32f, 0
11986 path.lineTo(SkBits2Float(0x74fc5b97), SkBits2Float(0x77df944a)); // 1.59951e+32f, 9.06945e+33f
11987 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf8fbe3ff)); // 0, -4.08716e+34f
11988 path.lineTo(SkBits2Float(0x7644b829), SkBits2Float(0x00000000)); // 9.97486e+32f, 0
11989 path.close();
11990
11991 SkPath path1(path);
11992 path.reset();
11993 path.setFillType((SkPathFillType) 0);
11994 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11995 path.quadTo(SkBits2Float(0x45ab86ae), SkBits2Float(0xd6d6626c), SkBits2Float(0xd6d6d6d6), SkBits2Float(0x7644d6d6)); // 5488.83f, -1.17859e+14f, -1.18109e+14f, 9.98093e+32f
11996 path.moveTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0xd6d6d6d6)); // -1.18109e+14f, -1.18109e+14f
11997 path.cubicTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0x64fed6d6), SkBits2Float(0x7644ef40), SkBits2Float(0x290877fc), SkBits2Float(0x447644b8), SkBits2Float(0x80fafc76)); // -1.18109e+14f, 3.76076e+22f, 9.98577e+32f, 3.03021e-14f, 985.074f, -2.30494e-38f
11998 path.conicTo(SkBits2Float(0x87808080), SkBits2Float(0x764400ae), SkBits2Float(0x764400fc), SkBits2Float(0x450080fc), SkBits2Float(0x3636366c)); // -1.93348e-34f, 9.93852e+32f, 9.93858e+32f, 2056.06f, 2.71518e-06f
11999 path.lineTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0xd6d6d6d6)); // -1.18109e+14f, -1.18109e+14f
12000 path.close();
12001 path.moveTo(SkBits2Float(0xef08a412), SkBits2Float(0x5aaeff7f)); // -4.22883e+28f, 2.46288e+16f
12002 path.conicTo(SkBits2Float(0x7644626c), SkBits2Float(0x088912fc), SkBits2Float(0xae8744ef), SkBits2Float(0x76571f5a), SkBits2Float(0x45ab86fc)); // 9.95788e+32f, 8.24985e-34f, -6.15133e-11f, 1.0908e+33f, 5488.87f
12003 path.conicTo(SkBits2Float(0x4064fe62), SkBits2Float(0x290877ef), SkBits2Float(0x780080b8), SkBits2Float(0x553c7644), SkBits2Float(0x644eae87)); // 3.57803f, 3.03021e-14f, 1.04254e+34f, 1.2951e+13f, 1.52504e+22f
12004 path.lineTo(SkBits2Float(0xef08a412), SkBits2Float(0x5aaeff7f)); // -4.22883e+28f, 2.46288e+16f
12005 path.close();
12006
12007 SkPath path2(path);
12008 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
12009 }
12010
12011 // hangs 654939
fuzz763_54(skiatest::Reporter * reporter,const char * filename)12012 static void fuzz763_54(skiatest::Reporter* reporter, const char* filename) {
12013 SkPath path;
12014 path.setFillType((SkPathFillType) 0);
12015 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12016 path.conicTo(SkBits2Float(0x5b682968), SkBits2Float(0xb3b32d11), SkBits2Float(0xb3b3b3b3), SkBits2Float(0x5b29b3b3), SkBits2Float(0x212a8c55)); // 6.53477e+16f, -8.34353e-08f, -8.36802e-08f, 4.77669e+16f, 5.7784e-19f
12017 path.conicTo(SkBits2Float(0x68555b2d), SkBits2Float(0x28296869), SkBits2Float(0x5b252a08), SkBits2Float(0x5d68392a), SkBits2Float(0x29282780)); // 4.03018e+24f, 9.40402e-15f, 4.64896e+16f, 1.04584e+18f, 3.73378e-14f
12018 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12019 path.close();
12020 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12021 path.cubicTo(SkBits2Float(0x52727272), SkBits2Float(0x72727252), SkBits2Float(0x525252c7), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 2.60326e+11f, 4.80215e+30f, 2.25833e+11f, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
12022 path.quadTo(SkBits2Float(0xd7da0000), SkBits2Float(0x5252525a), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // -4.79387e+14f, 2.25831e+11f, 4.16585e+30f, 4.80216e+30f
12023 path.quadTo(SkBits2Float(0x48525252), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 215369, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
12024 path.quadTo(SkBits2Float(0xdada007b), SkBits2Float(0x5252525a), SkBits2Float(0x72675252), SkBits2Float(0x72727272)); // -3.0681e+16f, 2.25831e+11f, 4.5818e+30f, 4.80216e+30f
12025 path.quadTo(SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 2.25831e+11f, 3.36289e-15f, 4.80216e+30f, 4.80216e+30f
12026 path.quadTo(SkBits2Float(0x1c292172), SkBits2Float(0x7bc00321), SkBits2Float(0x9aaaaaaa), SkBits2Float(0x8c556a4b)); // 5.59606e-22f, 1.99397e+36f, -7.05861e-23f, -1.64409e-31f
12027 path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
12028 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12029 path.close();
12030 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
12031 path.close();
12032 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
12033 path.quadTo(SkBits2Float(0x72725570), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.79991e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
12034 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0x555bb672), SkBits2Float(0x29686968), SkBits2Float(0x252a081f)); // 4.80215e+30f, 1.50985e+13f, 5.16058e-14f, 1.47479e-16f
12035 path.moveTo(SkBits2Float(0x5d68392a), SkBits2Float(0x01002780)); // 1.04584e+18f, 2.35382e-38f
12036 path.moveTo(SkBits2Float(0x72727200), SkBits2Float(0x72725252)); // 4.80212e+30f, 4.79967e+30f
12037 path.quadTo(SkBits2Float(0x5adada00), SkBits2Float(0xa5252652), SkBits2Float(0x727272ad), SkBits2Float(0xda007b72)); // 3.08006e+16f, -1.43245e-16f, 4.80218e+30f, -9.04113e+15f
12038 path.lineTo(SkBits2Float(0x5252525a), SkBits2Float(0x72525252)); // 2.25831e+11f, 4.16585e+30f
12039 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
12040 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x74217472), SkBits2Float(0x005b5574), SkBits2Float(0x72680000)); // 4.80216e+30f, 5.11671e+31f, 8.38768e-39f, 4.59523e+30f
12041 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x007b7272), SkBits2Float(0x525adada)); // 4.80216e+30f, 2.25831e+11f, 1.13368e-38f, 2.34994e+11f
12042 path.lineTo(SkBits2Float(0x72727200), SkBits2Float(0x72725252)); // 4.80212e+30f, 4.79967e+30f
12043 path.close();
12044
12045 SkPath path1(path);
12046 path.reset();
12047 path.setFillType((SkPathFillType) 0);
12048
12049 SkPath path2(path);
12050 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
12051 }
12052
12053
12054 // afl crash
fuzz763_55(skiatest::Reporter * reporter,const char * filename)12055 static void fuzz763_55(skiatest::Reporter* reporter, const char* filename) {
12056 SkPath path;
12057 path.setFillType((SkPathFillType) 0);
12058 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
12059 path.lineTo(SkBits2Float(0x55555568), SkBits2Float(0x55555555)); // 1.46602e+13f, 1.46602e+13f
12060 path.lineTo(SkBits2Float(0x98989898), SkBits2Float(0x55989898)); // -3.94452e-24f, 2.09726e+13f
12061 path.lineTo(SkBits2Float(0xf6f65555), SkBits2Float(0x101006f6)); // -2.49812e+33f, 2.84044e-29f
12062 path.quadTo(SkBits2Float(0xdca33f10), SkBits2Float(0xf6f6f6f6), SkBits2Float(0xf621f6f6), SkBits2Float(0xf70ff6f6)); // -3.67598e+17f, -2.50452e+33f, -8.21259e+32f, -2.91995e+33f
12063 path.lineTo(SkBits2Float(0x9400f6f6), SkBits2Float(0x10530000)); // -6.51105e-27f, 4.16124e-29f
12064 path.quadTo(SkBits2Float(0x0f101010), SkBits2Float(0x00101010), SkBits2Float(0xf610f720), SkBits2Float(0xf6f6f6f6)); // 7.10284e-30f, 1.47513e-39f, -7.35062e+32f, -2.50452e+33f
12065 path.lineTo(SkBits2Float(0x105352f6), SkBits2Float(0x1cf6ff10)); // 4.16763e-29f, 1.63448e-21f
12066 path.lineTo(SkBits2Float(0xf6f6220a), SkBits2Float(0x003700f6)); // -2.49608e+33f, 5.0513e-39f
12067 path.cubicTo(SkBits2Float(0x0000001e), SkBits2Float(0x00fff4f6), SkBits2Float(0xff101064), SkBits2Float(0xf6b6ac7f), SkBits2Float(0xf6f629f6), SkBits2Float(0x10f6f6f6)); // 4.2039e-44f, 2.35059e-38f, -1.91494e+38f, -1.85253e+33f, -2.4964e+33f, 9.74104e-29f
12068 path.quadTo(SkBits2Float(0x10101007), SkBits2Float(0x10f7fd10), SkBits2Float(0xf6f6f6f6), SkBits2Float(0xf6f645e0)); // 2.84113e-29f, 9.78142e-29f, -2.50452e+33f, -2.4975e+33f
12069 path.lineTo(SkBits2Float(0xed9ef6f6), SkBits2Float(0x53535353)); // -6.14965e+27f, 9.07636e+11f
12070 path.lineTo(SkBits2Float(0x53006cf6), SkBits2Float(0x53295353)); // 5.51584e+11f, 7.27247e+11f
12071 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
12072 path.close();
12073 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
12074 path.lineTo(SkBits2Float(0xf6f6f6f6), SkBits2Float(0x5353d9f6)); // -2.50452e+33f, 9.09895e+11f
12075
12076 SkPath path1(path);
12077 path.reset();
12078 path.setFillType((SkPathFillType) 0);
12079
12080 SkPath path2(path);
12081 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
12082 }
12083
12084 // 656149
fuzz763_56(skiatest::Reporter * reporter,const char * filename)12085 static void fuzz763_56(skiatest::Reporter* reporter, const char* filename) {
12086 SkPath path;
12087 path.setFillType((SkPathFillType) 0);
12088 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12089 path.conicTo(SkBits2Float(0x5b682968), SkBits2Float(0xb3b32d11), SkBits2Float(0xb3b3b3b3), SkBits2Float(0x5b29b3b3), SkBits2Float(0x72725255)); // 6.53477e+16f, -8.34353e-08f, -8.36802e-08f, 4.77669e+16f, 4.79967e+30f
12090 path.quadTo(SkBits2Float(0x525252c7), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 2.25833e+11f, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
12091 path.quadTo(SkBits2Float(0xd7da0000), SkBits2Float(0x5adada00), SkBits2Float(0x52525252), SkBits2Float(0x00005252)); // -4.79387e+14f, 3.08006e+16f, 2.25831e+11f, 2.9531e-41f
12092 path.conicTo(SkBits2Float(0xadada525), SkBits2Float(0x52525ab4), SkBits2Float(0x52525252), SkBits2Float(0x72727272), SkBits2Float(0x52527272)); // -1.97412e-11f, 2.25866e+11f, 2.25831e+11f, 4.80216e+30f, 2.25966e+11f
12093 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12094 path.close();
12095 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12096 path.quadTo(SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255), SkBits2Float(0xda007b72)); // 4.79967e+30f, 4.80216e+30f, 4.80215e+30f, -9.04113e+15f
12097 path.lineTo(SkBits2Float(0x5252525a), SkBits2Float(0x72525252)); // 2.25831e+11f, 4.16585e+30f
12098 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
12099 path.lineTo(SkBits2Float(0x7bc00321), SkBits2Float(0x9aaaaaaa)); // 1.99397e+36f, -7.05861e-23f
12100 path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
12101 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12102 path.close();
12103 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
12104 path.close();
12105 path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
12106 path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
12107 path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x26525ada), SkBits2Float(0x72ada525)); // 4.80215e+30f, -9.04113e+15f, 7.29815e-16f, 6.87879e+30f
12108 path.quadTo(SkBits2Float(0x007b7272), SkBits2Float(0x525adada), SkBits2Float(0x52525252), SkBits2Float(0x72727252)); // 1.13368e-38f, 2.34994e+11f, 2.25831e+11f, 4.80215e+30f
12109 path.quadTo(SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72722772), SkBits2Float(0x72727272)); // 2.25966e+11f, 2.25831e+11f, 4.79636e+30f, 4.80216e+30f
12110 path.quadTo(SkBits2Float(0x74727272), SkBits2Float(0x55747421), SkBits2Float(0x0000005b), SkBits2Float(0x72727268)); // 7.68345e+31f, 1.67987e+13f, 1.27518e-43f, 4.80216e+30f
12111 path.quadTo(SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72727272), SkBits2Float(0x72557272)); // 2.25966e+11f, 2.25831e+11f, 4.80216e+30f, 4.22775e+30f
12112 path.quadTo(SkBits2Float(0x5adada72), SkBits2Float(0x52525252), SkBits2Float(0x72725252), SkBits2Float(0x72727272)); // 3.08009e+16f, 2.25831e+11f, 4.79967e+30f, 4.80216e+30f
12113
12114 SkPath path1(path);
12115 path.reset();
12116 path.setFillType((SkPathFillType) 0);
12117
12118 SkPath path2(path);
12119 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
12120 }
12121
fuzz763_57(skiatest::Reporter * reporter,const char * filename)12122 static void fuzz763_57(skiatest::Reporter* reporter, const char* filename) {
12123 SkPath path;
12124 path.setFillType((SkPathFillType) 0);
12125
12126 SkPath path1(path);
12127 path.reset();
12128 path.setFillType((SkPathFillType) 0);
12129 path.moveTo(SkBits2Float(0x68546829), SkBits2Float(0x555b2d29)); // 4.01225e+24f, 1.50617e+13f
12130 path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0x4b7b2108)); // 3.60404e-20f, 1.6458e+07f
12131 path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 9.43289e-15f, 4.8745e+16f
12132 path.moveTo(SkBits2Float(0x6838552d), SkBits2Float(0xf0684f5b)); // 3.48195e+24f, -2.87586e+29f
12133 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2a8cef2a), SkBits2Float(0x682d2953), SkBits2Float(0xce682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 2.50349e-13f, 3.27093e+24f, -9.73619e+08f, 1.64988e+07f
12134 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x3b2a8c55)); // 4.85282e+16f, 0.00260236f
12135 path.lineTo(SkBits2Float(0x6838552d), SkBits2Float(0xf0684f5b)); // 3.48195e+24f, -2.87586e+29f
12136 path.close();
12137 path.moveTo(SkBits2Float(0x6838552d), SkBits2Float(0xf0684f5b)); // 3.48195e+24f, -2.87586e+29f
12138 path.conicTo(SkBits2Float(0xd2c00321), SkBits2Float(0xc0394b7b), SkBits2Float(0x8c08ed7a), SkBits2Float(0x211f2f2a), SkBits2Float(0x704b7b03)); // -4.12343e+11f, -2.89523f, -1.05485e-31f, 5.39337e-19f, 2.51897e+29f
12139 path.cubicTo(SkBits2Float(0x2d6829ed), SkBits2Float(0x5b2d555b), SkBits2Float(0x68275b2d), SkBits2Float(0x21685527), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 1.3197e-11f, 4.8789e+16f, 3.16127e+24f, 7.87174e-19f, 4.7323e-37f, 6.14991e+25f
12140 path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 4.8745e+16f
12141 path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
12142 path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x228cef2a), SkBits2Float(0x682d2953), SkBits2Float(0xee682103), SkBits2Float(0x287bc055)); // 5.76397e-19f, 3.82003e-18f, 3.27093e+24f, -1.79601e+28f, 1.3975e-14f
12143 path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
12144 path.conicTo(SkBits2Float(0x4b03213b), SkBits2Float(0xc07b2a08), SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556830), SkBits2Float(0x2a8c555b)); // 8.59372e+06f, -3.92444f, 4.88298e+16f, -2.64185e+29f, 2.49282e-13f
12145 path.conicTo(SkBits2Float(0x0321212a), SkBits2Float(0x4b7bd2c0), SkBits2Float(0xed7ac039), SkBits2Float(0x2f2a8c08), SkBits2Float(0x7b03211f)); // 4.73517e-37f, 1.65035e+07f, -4.85023e+27f, 1.55112e-10f, 6.80863e+35f
12146 path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
12147 path.close();
12148 path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
12149 path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
12150 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12151 path.conicTo(SkBits2Float(0x721f2a5b), SkBits2Float(0x212a8c55), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4797ed7a)); // 3.1526e+30f, 5.7784e-19f, 4.7323e-37f, 6.14984e+25f, 77787
12152 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12153 path.close();
12154 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12155 path.quadTo(SkBits2Float(0x2828102a), SkBits2Float(0x2c682921), SkBits2Float(0x8c555bf6), SkBits2Float(0x6d03de30)); // 9.32938e-15f, 3.2992e-12f, -1.64366e-31f, 2.5507e+27f
12156 path.cubicTo(SkBits2Float(0x683f2d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x211f2a21)); // 3.61123e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 5.39271e-19f
12157 path.lineTo(SkBits2Float(0x3a803adf), SkBits2Float(0x8a294f1a)); // 0.000978317f, -8.15193e-33f
12158 path.quadTo(SkBits2Float(0x291d9628), SkBits2Float(0x2a43e62b), SkBits2Float(0x093a2a81), SkBits2Float(0x5c5c8ced)); // 3.49912e-14f, 1.73993e-13f, 2.24089e-33f, 2.48318e+17f
12159 path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12160 path.close();
12161 path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12162 path.cubicTo(SkBits2Float(0x3ac2213a), SkBits2Float(0x291d9628), SkBits2Float(0x2a43e62b), SkBits2Float(0x293a2a81), SkBits2Float(0x5c5c8ced), SkBits2Float(0x5c5c6e5c)); // 0.00148109f, 3.49912e-14f, 1.73993e-13f, 4.13372e-14f, 2.48318e+17f, 2.48183e+17f
12163 path.lineTo(SkBits2Float(0x1f212a8c), SkBits2Float(0xc0032108)); // 3.41283e-20f, -2.04889f
12164 path.lineTo(SkBits2Float(0xed847b4b), SkBits2Float(0x2d552829)); // -5.12513e+27f, 1.21166e-11f
12165 path.conicTo(SkBits2Float(0x552d5b5b), SkBits2Float(0x3b5a6839), SkBits2Float(0x5b2df068), SkBits2Float(0x2a212a1f), SkBits2Float(0x532a8cef)); // 1.1913e+13f, 0.00333263f, 4.89595e+16f, 1.43143e-13f, 7.32509e+11f
12166
12167 SkPath path2(path);
12168 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
12169 }
12170
fuzzhang_1(skiatest::Reporter * reporter,const char * filename)12171 static void fuzzhang_1(skiatest::Reporter* reporter, const char* filename) {
12172 SkPath path;
12173 path.setFillType((SkPathFillType) 1);
12174 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12175 path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x668ece09), SkBits2Float(0x00000000), SkBits2Float(0x6751c81a), SkBits2Float(0x61c4b0fb)); // 0, 0, 3.37188e+23f, 0, 9.90666e+23f, 4.53539e+20f
12176 path.conicTo(SkBits2Float(0x66f837a9), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x3f823406)); // 5.86087e+23f, 0, 0, 0, 1.01721f
12177 path.close();
12178 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12179 path.quadTo(SkBits2Float(0x675b1bfe), SkBits2Float(0x00000000), SkBits2Float(0x67d76c42), SkBits2Float(0x6292c469)); // 1.03471e+24f, 0, 2.03461e+24f, 1.35369e+21f
12180 path.cubicTo(SkBits2Float(0x6a16df68), SkBits2Float(0x651a2f15), SkBits2Float(0x6c1e7f31), SkBits2Float(0x67a1f9b4), SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 4.55985e+25f, 4.55071e+22f, 7.66444e+26f, 1.52981e+24f, 0, 5.14279e+25f
12181 path.conicTo(SkBits2Float(0x680dcb75), SkBits2Float(0x68dd898d), SkBits2Float(0x681a434a), SkBits2Float(0x6871046b), SkBits2Float(0x3fea0440)); // 2.67843e+24f, 8.36944e+24f, 2.91394e+24f, 4.55269e+24f, 1.82825f
12182 path.quadTo(SkBits2Float(0x679e1b26), SkBits2Float(0x687703c4), SkBits2Float(0x00000000), SkBits2Float(0x687d2968)); // 1.49327e+24f, 4.66598e+24f, 0, 4.78209e+24f
12183 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12184 path.close();
12185
12186 SkPath path1(path);
12187 path.reset();
12188 path.setFillType((SkPathFillType) 0);
12189 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12190 path.cubicTo(SkBits2Float(0x535353ec), SkBits2Float(0x98989898), SkBits2Float(0x98989898), SkBits2Float(0xf207f36e), SkBits2Float(0xf3f2f2f2), SkBits2Float(0xed3a9781)); // 9.07646e+11f, -3.94452e-24f, -3.94452e-24f, -2.69278e+30f, -3.84968e+31f, -3.60921e+27f
12191 path.quadTo(SkBits2Float(0xf8f8c0ed), SkBits2Float(0xf8f8f8f8), SkBits2Float(0x9f9f9f9f), SkBits2Float(0x3014149f)); // -4.03626e+34f, -4.03981e+34f, -6.76032e-20f, 5.38714e-10f
12192
12193 SkPath path2(path);
12194 testPathOp(reporter, path1, path2, (SkPathOp) 0, filename);
12195 }
12196
release_13(skiatest::Reporter * reporter,const char * filename)12197 static void release_13(skiatest::Reporter* reporter, const char* filename) {
12198 SkPath path;
12199 path.setFillType((SkPathFillType) 1);
12200 path.setFillType(SkPathFillType::kEvenOdd);
12201 path.moveTo(SkBits2Float(0xd4438848), SkBits2Float(0xd488cf64)); // -3.35922e+12f, -4.70076e+12f
12202 path.lineTo(SkBits2Float(0xd43a056e), SkBits2Float(0xd4851696)); // -3.19582e+12f, -4.57288e+12f
12203 path.quadTo(SkBits2Float(0xd3d48e79), SkBits2Float(0xd49fb136), SkBits2Float(0x00000000), SkBits2Float(0xd4d4d4d4)); // -1.82585e+12f, -5.48698e+12f, 0, -7.31283e+12f
12204 path.quadTo(SkBits2Float(0xd3d06670), SkBits2Float(0xd4a0bb38), SkBits2Float(0xd41d628f), SkBits2Float(0xd472c531)); // -1.79014e+12f, -5.52269e+12f, -2.70385e+12f, -4.17076e+12f
12205 path.lineTo(SkBits2Float(0xd43a0559), SkBits2Float(0xd485168e)); // -3.19581e+12f, -4.57287e+12f
12206 path.lineTo(SkBits2Float(0xd446958b), SkBits2Float(0xd4810278)); // -3.41165e+12f, -4.43274e+12f
12207 path.lineTo(SkBits2Float(0xd443884a), SkBits2Float(0xd488cf65)); // -3.35922e+12f, -4.70076e+12f
12208 path.quadTo(SkBits2Float(0xd47efa09), SkBits2Float(0xd49fd72a), SkBits2Float(0xd4a63f0f), SkBits2Float(0xd4b83ab3)); // -4.38047e+12f, -5.49208e+12f, -5.71218e+12f, -6.33007e+12f
12209 path.lineTo(SkBits2Float(0xd497ca70), SkBits2Float(0xd4c4d4ae)); // -5.21549e+12f, -6.76305e+12f
12210 path.lineTo(SkBits2Float(0xd459d4d4), SkBits2Float(0xd4c4d4d4)); // -3.74231e+12f, -6.76307e+12f
12211 path.lineTo(SkBits2Float(0xd440daf9), SkBits2Float(0xd4c632d3)); // -3.31323e+12f, -6.81005e+12f
12212 path.lineTo(SkBits2Float(0xd4438848), SkBits2Float(0xd488cf64)); // -3.35922e+12f, -4.70076e+12f
12213 path.close();
12214 path.moveTo(SkBits2Float(0xd4767560), SkBits2Float(0xd4d1ca84)); // -4.23412e+12f, -7.20837e+12f
12215 path.lineTo(SkBits2Float(0xd4422174), SkBits2Float(0xd4d02069)); // -3.33514e+12f, -7.15118e+12f
12216 path.lineTo(SkBits2Float(0xd440daa3), SkBits2Float(0xd4c632d9)); // -3.31321e+12f, -6.81005e+12f
12217 path.lineTo(SkBits2Float(0xd41017bc), SkBits2Float(0xd4cb99b6)); // -2.47549e+12f, -6.99566e+12f
12218 path.lineTo(SkBits2Float(0xd442213b), SkBits2Float(0xd4d02067)); // -3.33512e+12f, -7.15117e+12f
12219 path.lineTo(SkBits2Float(0xd442d4d4), SkBits2Float(0xd4d4d4d4)); // -3.34718e+12f, -7.31283e+12f
12220 path.lineTo(SkBits2Float(0xd4767560), SkBits2Float(0xd4d1ca84)); // -4.23412e+12f, -7.20837e+12f
12221 path.close();
12222 path.moveTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12223 path.lineTo(SkBits2Float(0xd484e02c), SkBits2Float(0xd45fafcd)); // -4.56557e+12f, -3.84291e+12f
12224 path.lineTo(SkBits2Float(0xd462c867), SkBits2Float(0xd45655f7)); // -3.8961e+12f, -3.68226e+12f
12225 path.lineTo(SkBits2Float(0xd45ac463), SkBits2Float(0xd45ac505)); // -3.75839e+12f, -3.75843e+12f
12226 path.lineTo(SkBits2Float(0xd43d2fa9), SkBits2Float(0xd43d2fb5)); // -3.25019e+12f, -3.2502e+12f
12227 path.lineTo(SkBits2Float(0xd41d6287), SkBits2Float(0xd472c52a)); // -2.70385e+12f, -4.17076e+12f
12228 path.quadTo(SkBits2Float(0x00000000), SkBits2Float(0xd3db1b95), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, -1.88212e+12f, 0, 0
12229 path.quadTo(SkBits2Float(0xd4b7efac), SkBits2Float(0x00000000), SkBits2Float(0xd4d0e88f), SkBits2Float(0xd40b8b46)); // -6.32e+12f, 0, -7.17804e+12f, -2.39735e+12f
12230 path.lineTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0x00000000)); // -7.31283e+12f, 0
12231 path.lineTo(SkBits2Float(0xdcdc154b), SkBits2Float(0x00000000)); // -4.95583e+17f, 0
12232 path.lineTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4c4d477)); // -7.31283e+12f, -6.76303e+12f
12233 path.lineTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d442)); // -7.31283e+12f, -7.31275e+12f
12234 path.lineTo(SkBits2Float(0xd4d4a691), SkBits2Float(0xd4d4d442)); // -7.30662e+12f, -7.31275e+12f
12235 path.lineTo(SkBits2Float(0xd454d4d4), SkBits2Float(0xd4d4aa30)); // -3.65641e+12f, -7.30711e+12f
12236 path.lineTo(SkBits2Float(0xd4bd9def), SkBits2Float(0xd4d43df0)); // -6.51519e+12f, -7.29258e+12f
12237 path.lineTo(SkBits2Float(0xd4767560), SkBits2Float(0xd4d1ca84)); // -4.23412e+12f, -7.20837e+12f
12238 path.lineTo(SkBits2Float(0xd497ca70), SkBits2Float(0xd4c4d4ae)); // -5.21549e+12f, -6.76305e+12f
12239 path.lineTo(SkBits2Float(0xd4bab953), SkBits2Float(0xd4c4d48e)); // -6.41579e+12f, -6.76304e+12f
12240 path.lineTo(SkBits2Float(0xd4a63f0f), SkBits2Float(0xd4b83ab3)); // -5.71218e+12f, -6.33007e+12f
12241 path.lineTo(SkBits2Float(0xd4ae61eb), SkBits2Float(0xd4ae61f4)); // -5.99174e+12f, -5.99174e+12f
12242 path.lineTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12243 path.close();
12244 path.moveTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12245 path.lineTo(SkBits2Float(0xd446965c), SkBits2Float(0xd4810237)); // -3.4117e+12f, -4.4327e+12f
12246 path.lineTo(SkBits2Float(0xd45ac549), SkBits2Float(0xd45ac55f)); // -3.75845e+12f, -3.75846e+12f
12247 path.lineTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12248 path.close();
12249 path.moveTo(SkBits2Float(0xd4b46028), SkBits2Float(0xd41e572a)); // -6.19766e+12f, -2.72027e+12f
12250 path.lineTo(SkBits2Float(0xd4cde20a), SkBits2Float(0xd434bb57)); // -7.07408e+12f, -3.10495e+12f
12251 path.lineTo(SkBits2Float(0xd4c75ffe), SkBits2Float(0xd46f215d)); // -6.85047e+12f, -4.10823e+12f
12252 path.lineTo(SkBits2Float(0xd4b46028), SkBits2Float(0xd41e572a)); // -6.19766e+12f, -2.72027e+12f
12253 path.close();
12254
12255 SkPath path1(path);
12256 path.reset();
12257 path.setFillType((SkPathFillType) 0);
12258 path.setFillType(SkPathFillType::kWinding);
12259 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12260 path.quadTo(SkBits2Float(0x00000000), SkBits2Float(0xa5a50000), SkBits2Float(0xd4d4a5a5), SkBits2Float(0xd4d4d4d4)); // 0, -2.86229e-16f, -7.3065e+12f, -7.31283e+12f
12261 path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4cfd4d4), SkBits2Float(0xd4d41dd4)); // -7.31283e+12f, -7.31283e+12f, -7.14103e+12f, -7.28827e+12f
12262 path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d432d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4a5a5d4)); // -7.31283e+12f, -7.29109e+12f, -7.31283e+12f, -5.69161e+12f
12263 path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0x00000000)); // -7.31283e+12f, -7.31283e+12f, -7.31283e+12f, 0
12264 path.moveTo(SkBits2Float(0xa5a5a500), SkBits2Float(0xd4d4d4a5)); // -2.87347e-16f, -7.31281e+12f
12265 path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0x2ad4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4cfd4d4)); // -7.31283e+12f, 3.78064e-13f, -7.31283e+12f, -7.14103e+12f
12266 path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4)); // -7.31283e+12f, -7.31283e+12f, -7.31283e+12f, -7.31283e+12f
12267 path.quadTo(SkBits2Float(0xd4d40000), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4)); // -7.28426e+12f, -7.31283e+12f, -7.31283e+12f, -7.31283e+12f
12268
12269 SkPath path2(path);
12270 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
12271 }
12272
fuzzhang_2(skiatest::Reporter * reporter,const char * filename)12273 static void fuzzhang_2(skiatest::Reporter* reporter, const char* filename) {
12274 SkPath path;
12275 path.setFillType((SkPathFillType) 0);
12276 path.setFillType(SkPathFillType::kWinding);
12277 path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12278 path.quadTo(SkBits2Float(0xe0e02972), SkBits2Float(0xe0e060e0), SkBits2Float(0x728e4603), SkBits2Float(0x72727272)); // -1.29221e+20f, -1.29345e+20f, 5.63603e+30f, 4.80216e+30f
12279 path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12280 path.close();
12281 path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12282 path.quadTo(SkBits2Float(0x68720052), SkBits2Float(0x52527372), SkBits2Float(0x00527252), SkBits2Float(0x728e4601)); // 4.57127e+24f, 2.2597e+11f, 7.57152e-39f, 5.63603e+30f
12283 path.quadTo(SkBits2Float(0x52ec7272), SkBits2Float(0x6265527f), SkBits2Float(0x8e460152), SkBits2Float(0x72ff8072)); // 5.07766e+11f, 1.05756e+21f, -2.4406e-30f, 1.01215e+31f
12284 path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12285 path.close();
12286 path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12287 path.lineTo(SkBits2Float(0x52626552), SkBits2Float(0x72727272)); // 2.43091e+11f, 4.80216e+30f
12288 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x62727272), SkBits2Float(0x39393939), SkBits2Float(0x728bc739)); // 4.80216e+30f, 1.11809e+21f, 0.000176643f, 5.53719e+30f
12289 path.cubicTo(SkBits2Float(0x72728092), SkBits2Float(0x72727260), SkBits2Float(0x4d727272), SkBits2Float(0x5252522a), SkBits2Float(0x72735252), SkBits2Float(0x72707272)); // 4.80325e+30f, 4.80215e+30f, 2.54224e+08f, 2.2583e+11f, 4.81948e+30f, 4.76254e+30f
12290 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x56727272), SkBits2Float(0x72720152), SkBits2Float(0x72727270)); // 4.80216e+30f, 6.66433e+13f, 4.79341e+30f, 4.80216e+30f
12291 path.quadTo(SkBits2Float(0x52526172), SkBits2Float(0x8e460300), SkBits2Float(0x72727272), SkBits2Float(0x52525272)); // 2.25894e+11f, -2.44068e-30f, 4.80216e+30f, 2.25832e+11f
12292 path.conicTo(SkBits2Float(0xb5727272), SkBits2Float(0x7f2b727f), SkBits2Float(0x607272ff), SkBits2Float(0x72727276), SkBits2Float(0x2a527272)); // -9.03186e-07f, 2.27892e+38f, 6.98812e+19f, 4.80216e+30f, 1.86915e-13f
12293 path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12294 path.close();
12295 path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12296 path.lineTo(SkBits2Float(0x72727272), SkBits2Float(0x52525f72)); // 4.80216e+30f, 2.25886e+11f
12297 path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12298 path.close();
12299 path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12300 path.quadTo(SkBits2Float(0x52727272), SkBits2Float(0x64655252), SkBits2Float(0x72c1c152), SkBits2Float(0x72727272)); // 2.60326e+11f, 1.69209e+22f, 7.67543e+30f, 4.80216e+30f
12301
12302 SkPath path1(path);
12303 path.reset();
12304 path.setFillType((SkPathFillType) 0);
12305 path.setFillType(SkPathFillType::kWinding);
12306
12307 SkPath path2(path);
12308 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
12309 }
12310
fuzzhang_3(skiatest::Reporter * reporter,const char * filename)12311 static void fuzzhang_3(skiatest::Reporter* reporter, const char* filename) {
12312 SkPath path;
12313 path.setFillType((SkPathFillType) 0);
12314 path.setFillType(SkPathFillType::kWinding);
12315
12316 SkPath path1(path);
12317 path.reset();
12318 path.setFillType((SkPathFillType) 0);
12319 path.setFillType(SkPathFillType::kWinding);
12320 path.moveTo(SkBits2Float(0x46090052), SkBits2Float(0x7270726c)); // 8768.08f, 4.76254e+30f
12321 path.moveTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12322 path.close();
12323 path.moveTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12324 path.lineTo(SkBits2Float(0x77727272), SkBits2Float(0x52520072)); // 4.91741e+33f, 2.25488e+11f
12325 path.lineTo(SkBits2Float(0x46090052), SkBits2Float(0x727272ce)); // 8768.08f, 4.80219e+30f
12326 path.quadTo(SkBits2Float(0x725252ec), SkBits2Float(0x72727272), SkBits2Float(0x72727272), SkBits2Float(0x39393962)); // 4.16589e+30f, 4.80216e+30f, 4.80216e+30f, 0.000176644f
12327 path.lineTo(SkBits2Float(0x6c460900), SkBits2Float(0x72727072)); // 9.57639e+26f, 4.802e+30f
12328 path.cubicTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x72943603), SkBits2Float(0x72777272), SkBits2Float(0x5c525200), SkBits2Float(0x46090052), SkBits2Float(0x727272ce)); // -1.29345e+20f, 5.87124e+30f, 4.90119e+30f, 2.368e+17f, 8768.08f, 4.80219e+30f
12329 path.quadTo(SkBits2Float(0x725252ec), SkBits2Float(0x72727272), SkBits2Float(0x72727272), SkBits2Float(0x39393962)); // 4.16589e+30f, 4.80216e+30f, 4.80216e+30f, 0.000176644f
12330 path.lineTo(SkBits2Float(0x0052ca00), SkBits2Float(0x728e4603)); // 7.60297e-39f, 5.63603e+30f
12331 path.quadTo(SkBits2Float(0xff727272), SkBits2Float(0x52527272), SkBits2Float(0x39392072), SkBits2Float(0xe0393939)); // -3.22267e+38f, 2.25966e+11f, 0.000176551f, -5.3387e+19f
12332 path.lineTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12333 path.close();
12334 path.moveTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12335 path.cubicTo(SkBits2Float(0xdada7272), SkBits2Float(0x2dff7272), SkBits2Float(0x767272f0), SkBits2Float(0x72727272), SkBits2Float(0x21727f72), SkBits2Float(0x0b210929)); // -3.07437e+16f, 2.9041e-11f, 1.22936e+33f, 4.80216e+30f, 8.21615e-19f, 3.10144e-32f
12336 path.cubicTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0x72a5d6d6), SkBits2Float(0x72553872), SkBits2Float(0xdada7072), SkBits2Float(0x5252525a), SkBits2Float(0x72727252)); // -1.18109e+14f, 6.56957e+30f, 4.22327e+30f, -3.07426e+16f, 2.25831e+11f, 4.80215e+30f
12337 path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0xdada0072), SkBits2Float(0x52524b5a), SkBits2Float(0x72528000)); // 4.79991e+30f, -3.0681e+16f, 2.25802e+11f, 4.16938e+30f
12338 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0xca005252), SkBits2Float(0x46030052), SkBits2Float(0x7272728e)); // 4.80216e+30f, -2.10242e+06f, 8384.08f, 4.80217e+30f
12339 path.quadTo(SkBits2Float(0x7272ff72), SkBits2Float(0x20725252), SkBits2Float(0x39393939), SkBits2Float(0xd76ee039)); // 4.81307e+30f, 2.05254e-19f, 0.000176643f, -2.62647e+14f
12340 path.cubicTo(SkBits2Float(0xdada7272), SkBits2Float(0x2dff7272), SkBits2Float(0x767272f0), SkBits2Float(0x72727272), SkBits2Float(0x21727f72), SkBits2Float(0x0b210929)); // -3.07437e+16f, 2.9041e-11f, 1.22936e+33f, 4.80216e+30f, 8.21615e-19f, 3.10144e-32f
12341 path.cubicTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0x72a5d6d6), SkBits2Float(0x72553872), SkBits2Float(0xdada7072), SkBits2Float(0x5252525a), SkBits2Float(0x72727252)); // -1.18109e+14f, 6.56957e+30f, 4.22327e+30f, -3.07426e+16f, 2.25831e+11f, 4.80215e+30f
12342 path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0xdada0072), SkBits2Float(0x52524b5a), SkBits2Float(0x72528000)); // 4.79991e+30f, -3.0681e+16f, 2.25802e+11f, 4.16938e+30f
12343 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
12344 path.quadTo(SkBits2Float(0x72667254), SkBits2Float(0x00000040), SkBits2Float(0x00a70155), SkBits2Float(0x726800ff)); // 4.56447e+30f, 8.96831e-44f, 1.5337e-38f, 4.59531e+30f
12345 path.quadTo(SkBits2Float(0x7b727272), SkBits2Float(0xad000c52), SkBits2Float(0x1c10adad), SkBits2Float(0x72728d8a)); // 1.25886e+36f, -7.27869e-12f, 4.78701e-22f, 4.80425e+30f
12346 path.quadTo(SkBits2Float(0xff056546), SkBits2Float(0x727205ff), SkBits2Float(0x524b5aff), SkBits2Float(0x64005252)); // -1.77313e+38f, 4.79377e+30f, 2.18351e+11f, 9.46846e+21f
12347 path.quadTo(SkBits2Float(0x72524872), SkBits2Float(0xdada7272), SkBits2Float(0x5252525a), SkBits2Float(0x72727252)); // 4.16508e+30f, -3.07437e+16f, 2.25831e+11f, 4.80215e+30f
12348 path.quadTo(SkBits2Float(0x72724172), SkBits2Float(0xdad10072), SkBits2Float(0x52524b5a), SkBits2Float(0x725b8000)); // 4.79837e+30f, -2.94144e+16f, 2.25802e+11f, 4.34765e+30f
12349 path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
12350 path.quadTo(SkBits2Float(0x72728372), SkBits2Float(0x00000040), SkBits2Float(0xf6a70147), SkBits2Float(0xc2c2c256)); // 4.80347e+30f, 8.96831e-44f, -1.69363e+33f, -97.3796f
12351 path.lineTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12352 path.close();
12353 path.moveTo(SkBits2Float(0x7a787a7a), SkBits2Float(0x7a3a7a7a)); // 3.22543e+35f, 2.42063e+35f
12354 path.lineTo(SkBits2Float(0x8f4603e0), SkBits2Float(0x72727272)); // -9.7629e-30f, 4.80216e+30f
12355 path.quadTo(SkBits2Float(0x00807272), SkBits2Float(0x46090052), SkBits2Float(0x7270726c), SkBits2Float(0x60e04372)); // 1.1796e-38f, 8768.08f, 4.76254e+30f, 1.29279e+20f
12356 path.moveTo(SkBits2Float(0x943603e0), SkBits2Float(0x77727272)); // -9.18942e-27f, 4.91741e+33f
12357 path.quadTo(SkBits2Float(0x5c525200), SkBits2Float(0x46090052), SkBits2Float(0x727272ce), SkBits2Float(0x5252ec72)); // 2.368e+17f, 8768.08f, 4.80219e+30f, 2.26478e+11f
12358
12359 SkPath path2(path);
12360 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
12361 }
12362
fuzz754434_1(skiatest::Reporter * reporter,const char * filename)12363 static void fuzz754434_1(skiatest::Reporter* reporter, const char* filename) {
12364 SkPath path;
12365 path.setFillType((SkPathFillType) 0);
12366 path.setFillType(SkPathFillType::kWinding);
12367
12368 SkPath path1(path);
12369 path.reset();
12370 path.setFillType((SkPathFillType) 0);
12371 path.setFillType(SkPathFillType::kWinding);
12372 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12373 path.cubicTo(SkBits2Float(0x535e5372), SkBits2Float(0x53536153), SkBits2Float(0x79530f53), SkBits2Float(0x101b6c88), SkBits2Float(0x5353735e), SkBits2Float(0x006df653)); // 9.54883e+11f, 9.07871e+11f, 6.84928e+34f, 3.0652e-29f, 9.08174e+11f, 1.00984e-38f
12374 path.cubicTo(SkBits2Float(0xf26df46d), SkBits2Float(0xf6f6f6f6), SkBits2Float(0x5656f666), SkBits2Float(0x5a565656), SkBits2Float(0x00000056), SkBits2Float(0xf66e5600)); // -4.71318e+30f, -2.50452e+33f, 5.90884e+13f, 1.50826e+16f, 1.20512e-43f, -1.20851e+33f
12375 path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00faf6f6)); // -1.71467e+38f, 2.30475e-38f
12376 path.moveTo(SkBits2Float(0x60576bfa), SkBits2Float(0x006df653)); // 6.20911e+19f, 1.00984e-38f
12377 path.cubicTo(SkBits2Float(0xf26df46d), SkBits2Float(0xf653f6f6), SkBits2Float(0x563ef666), SkBits2Float(0x56565656), SkBits2Float(0x65565656), SkBits2Float(0xf6765656)); // -4.71318e+30f, -1.07479e+33f, 5.24914e+13f, 5.89166e+13f, 6.32612e+22f, -1.24908e+33f
12378
12379 SkPath path2(path);
12380 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
12381 }
12382
fuzz754434_2(skiatest::Reporter * reporter,const char * filename)12383 static void fuzz754434_2(skiatest::Reporter* reporter, const char* filename) {
12384 SkPath path;
12385 path.setFillType((SkPathFillType) 1);
12386 path.setFillType(SkPathFillType::kEvenOdd);
12387 path.moveTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12388 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf66e5600)); // 0, -1.20851e+33f
12389 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf629168b)); // 0, -8.57378e+32f
12390 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12391 path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12392 path.close();
12393
12394 SkPath path1(path);
12395 path.reset();
12396 path.setFillType((SkPathFillType) 0);
12397 path.setFillType(SkPathFillType::kWinding);
12398 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12399 path.lineTo(SkBits2Float(0x03e8f6f6), SkBits2Float(0xf7060000)); // 1.36924e-36f, -2.71784e+33f
12400 path.lineTo(SkBits2Float(0x4ff6f6f6), SkBits2Float(0x3e3e3e2a)); // 8.28676e+09f, 0.185784f
12401 path.conicTo(SkBits2Float(0x6c8879ff), SkBits2Float(0x08761b1b), SkBits2Float(0x7066662d), SkBits2Float(0x70707070), SkBits2Float(0x70707070)); // 1.31992e+27f, 7.40598e-34f, 2.8522e+29f, 2.97649e+29f, 2.97649e+29f
12402
12403 SkPath path2(path);
12404 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
12405 }
12406
fuzz754434_3(skiatest::Reporter * reporter,const char * filename)12407 static void fuzz754434_3(skiatest::Reporter* reporter, const char* filename) {
12408 SkPath path;
12409 path.setFillType((SkPathFillType) 0);
12410 path.setFillType(SkPathFillType::kWinding);
12411
12412 SkPath path1(path);
12413 path.reset();
12414 path.setFillType((SkPathFillType) 0);
12415 path.setFillType(SkPathFillType::kWinding);
12416 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12417 path.cubicTo(SkBits2Float(0x535e5372), SkBits2Float(0x53536153), SkBits2Float(0x79530f53), SkBits2Float(0x101b6c88), SkBits2Float(0x5353735e), SkBits2Float(0x006df653)); // 9.54883e+11f, 9.07871e+11f, 6.84928e+34f, 3.0652e-29f, 9.08174e+11f, 1.00984e-38f
12418 path.cubicTo(SkBits2Float(0xf26df46d), SkBits2Float(0xf6f6f6f6), SkBits2Float(0x5656f666), SkBits2Float(0x5a565656), SkBits2Float(0x00000056), SkBits2Float(0xf66e5600)); // -4.71318e+30f, -2.50452e+33f, 5.90884e+13f, 1.50826e+16f, 1.20512e-43f, -1.20851e+33f
12419 path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00faf6f6)); // -1.71467e+38f, 2.30475e-38f
12420 path.moveTo(SkBits2Float(0x60576bfa), SkBits2Float(0x006df653)); // 6.20911e+19f, 1.00984e-38f
12421 path.cubicTo(SkBits2Float(0xf26df46d), SkBits2Float(0xf653f6f6), SkBits2Float(0x563ef666), SkBits2Float(0x56565656), SkBits2Float(0x65565656), SkBits2Float(0xf6765656)); // -4.71318e+30f, -1.07479e+33f, 5.24914e+13f, 5.89166e+13f, 6.32612e+22f, -1.24908e+33f
12422
12423 SkPath path2(path);
12424 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
12425 }
12426
fuzz754434_4(skiatest::Reporter * reporter,const char * filename)12427 static void fuzz754434_4(skiatest::Reporter* reporter, const char* filename) {
12428 SkPath path;
12429 path.setFillType((SkPathFillType) 1);
12430 path.setFillType(SkPathFillType::kEvenOdd);
12431 path.moveTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12432 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf66e5600)); // 0, -1.20851e+33f
12433 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf629168b)); // 0, -8.57378e+32f
12434 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12435 path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12436 path.close();
12437
12438 SkPath path1(path);
12439 path.reset();
12440 path.setFillType((SkPathFillType) 0);
12441 path.setFillType(SkPathFillType::kWinding);
12442 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12443 path.lineTo(SkBits2Float(0x03e8f6f6), SkBits2Float(0xf7060000)); // 1.36924e-36f, -2.71784e+33f
12444 path.lineTo(SkBits2Float(0x4ff6f6f6), SkBits2Float(0x3e3e3e2a)); // 8.28676e+09f, 0.185784f
12445 path.conicTo(SkBits2Float(0x6c8879ff), SkBits2Float(0x08761b1b), SkBits2Float(0x7066662d), SkBits2Float(0x70707070), SkBits2Float(0x70707070)); // 1.31992e+27f, 7.40598e-34f, 2.8522e+29f, 2.97649e+29f, 2.97649e+29f
12446
12447 SkPath path2(path);
12448 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
12449 }
12450
12451 static struct TestDesc failTests[] = {
12452 TEST(fuzz767834),
12453 TEST(fuzz754434_1),
12454 TEST(fuzz754434_2),
12455 TEST(fuzz754434_3),
12456 TEST(fuzz754434_4),
12457 TEST(fuzzhang_3),
12458 TEST(fuzzhang_2),
12459 TEST(release_13),
12460 TEST(fuzzhang_1),
12461 TEST(fuzz763_57),
12462 TEST(fuzz763_56),
12463 TEST(fuzz763_55),
12464 TEST(fuzz763_54),
12465 TEST(fuzz763_53),
12466 TEST(fuzz763_52),
12467 TEST(fuzz763_51),
12468 TEST(fuzz763_50),
12469 TEST(fuzz763_49),
12470 TEST(fuzz763_48),
12471 TEST(fuzz763_47),
12472 TEST(fuzz763_46),
12473 TEST(fuzz763_45),
12474 TEST(fuzz763_44),
12475 TEST(fuzz763_43),
12476 TEST(fuzz763_42),
12477 TEST(fuzz763_41),
12478 TEST(fuzz763_40),
12479 TEST(fuzz763_39),
12480 TEST(fuzz763_38),
12481 TEST(fuzz763_37),
12482 TEST(fuzz763_36),
12483 TEST(fuzz763_35),
12484 TEST(fuzz763_34),
12485 TEST(fuzz763_33),
12486 TEST(fuzz763_32),
12487 TEST(fuzz763_31),
12488 TEST(fuzz763_30),
12489 TEST(fuzz763_29),
12490 TEST(fuzz763_28),
12491 TEST(fuzz763_27),
12492 TEST(fuzz763_26),
12493 TEST(fuzz763_25),
12494 TEST(fuzz763_24),
12495 TEST(fuzz763_23),
12496 TEST(fuzz763_22),
12497 TEST(fuzz763_21),
12498 TEST(fuzz763_20),
12499 TEST(fuzz763_19),
12500 TEST(fuzz763_18),
12501 TEST(fuzz763_17),
12502 TEST(fuzz763_16),
12503 TEST(fuzz763_15),
12504 TEST(fuzz763_14),
12505 TEST(fuzz763_13),
12506 TEST(fuzz763_12),
12507 TEST(fuzz763_11),
12508 TEST(fuzz763_10),
12509 TEST(kfuzz2),
12510 TEST(fuzz763_7),
12511 TEST(fuzz763_6),
12512 TEST(fuzz763_2c),
12513 TEST(fuzz763_2b),
12514 TEST(fuzz763_2a),
12515 TEST(fuzz763_5a),
12516 TEST(fuzz763_3a),
12517 TEST(fuzz763_1a),
12518 TEST(fuzz763_1b),
12519 TEST(fuzz763_1c),
12520 TEST(fuzz763_2),
12521 TEST(fuzz763_5),
12522 TEST(fuzz763_3),
12523 TEST(fuzz763_4),
12524 TEST(fuzz763_9),
12525 TEST(fuzz1450_1),
12526 TEST(fuzz1450_0),
12527 TEST(bug597926_0),
12528 TEST(fuzz535151),
12529 TEST(fuzz753_91),
12530 TEST(fuzz714),
12531 TEST(fuzz487a),
12532 TEST(fuzz433),
12533 TEST(fuzz1),
12534 TEST(fuzz487b),
12535 TEST(fuzz433b),
12536 TEST(bufferOverflow),
12537 };
12538
12539 static const size_t failTestCount = std::size(failTests);
12540
DEF_TEST(PathOpsFailOp,reporter)12541 DEF_TEST(PathOpsFailOp, reporter) {
12542 RunTestSet(reporter, failTests, failTestCount, nullptr, nullptr, nullptr, false);
12543 }
12544
12545 static struct TestDesc repTests[] = {
12546 TEST(fuzz763_5a),
12547 };
12548
DEF_TEST(PathOpsRepOp,reporter)12549 DEF_TEST(PathOpsRepOp, reporter) {
12550 if (PathOpsDebug::gJson) {
12551 return;
12552 }
12553 for (int index = 0; index < 1; ++index)
12554 RunTestSet(reporter, repTests, std::size(repTests), nullptr, nullptr, nullptr, false);
12555 }
12556