blob: 2f847e42f25099a9ed7ff9d8cbd4732e98f1fc26 [file] [log] [blame]
Yuqian Li3154a532017-09-06 13:33:30 -04001/*
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 "PathOpsExtendedTest.h"
8#include "PathOpsTestCommon.h"
9
10class PathTest_Private {
11public:
12 PathTest_Private(SkPath* path)
13 : fPath(path) {}
14
15 void setPt(int index, SkScalar x, SkScalar y) {
16 fPath->setPt(index, x, y);
17 }
18
19 SkPath* fPath;
20};
21
22static void path_edit(const SkPoint& from, const SkPoint& to, SkPath* path) {
23 PathTest_Private testPath(path);
24 for (int index = 0; index < path->countPoints(); ++index) {
25 if (SkDPoint::ApproximatelyEqual(path->getPoint(index), from)) {
26 testPath.setPt(index, to.fX, to.fY);
27 return;
28 }
29 }
30}
31
32static void cubicOp1d(skiatest::Reporter* reporter, const char* filename) {
33 SkPath path, pathB;
34 path.setFillType(SkPath::kWinding_FillType);
35 path.moveTo(0,1);
36 path.cubicTo(0,2, 1,0, 1,0);
37 path.close();
38 pathB.setFillType(SkPath::kWinding_FillType);
39 pathB.moveTo(0,1);
40 pathB.cubicTo(0,1, 1,0, 2,0);
41 pathB.close();
42 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
43}
44
45static void cubicOp2d(skiatest::Reporter* reporter, const char* filename) {
46 SkPath path, pathB;
47 path.setFillType(SkPath::kWinding_FillType);
48 path.moveTo(0,2);
49 path.cubicTo(0,1, 1,0, 1,0);
50 path.close();
51 pathB.setFillType(SkPath::kWinding_FillType);
52 pathB.moveTo(0,1);
53 pathB.cubicTo(0,1, 2,0, 1,0);
54 pathB.close();
55 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
56}
57
58static void cubicOp3d(skiatest::Reporter* reporter, const char* filename) {
59 SkPath path, pathB;
60 path.setFillType(SkPath::kWinding_FillType);
61 path.moveTo(0,1);
62 path.cubicTo(2,3, 1,0, 1,0);
63 path.close();
64 pathB.setFillType(SkPath::kWinding_FillType);
65 pathB.moveTo(0,1);
66 pathB.cubicTo(0,1, 1,0, 3,2);
67 pathB.close();
68 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
69}
70
71static void cubicOp5d(skiatest::Reporter* reporter, const char* filename) {
72 SkPath path, pathB;
73 path.setFillType(SkPath::kWinding_FillType);
74 path.moveTo(0,1);
75 path.cubicTo(0,2, 1,0, 2,0);
76 path.close();
77 pathB.setFillType(SkPath::kWinding_FillType);
78 pathB.moveTo(0,1);
79 pathB.cubicTo(0,2, 1,0, 2,0);
80 pathB.close();
81 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
82}
83
84static void cubicOp6d(skiatest::Reporter* reporter, const char* filename) {
85 SkPath path, pathB;
86 path.setFillType(SkPath::kWinding_FillType);
87 path.moveTo(0,1);
88 path.cubicTo(0,6, 1,0, 3,0);
89 path.close();
90 pathB.setFillType(SkPath::kWinding_FillType);
91 pathB.moveTo(0,1);
92 pathB.cubicTo(0,3, 1,0, 6,0);
93 pathB.close();
94 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
95}
96
97static void cubicOp7d(skiatest::Reporter* reporter, const char* filename) {
98 SkPath path, pathB;
99 path.setFillType(SkPath::kWinding_FillType);
100 path.moveTo(0,1);
101 path.cubicTo(3,4, 1,0, 3,0);
102 path.close();
103 pathB.setFillType(SkPath::kWinding_FillType);
104 pathB.moveTo(0,1);
105 pathB.cubicTo(0,3, 1,0, 4,3);
106 pathB.close();
107 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
108}
109
110static void cubicOp8d(skiatest::Reporter* reporter, const char* filename) {
111 SkPath path, pathB;
112 path.setFillType(SkPath::kWinding_FillType);
113 path.moveTo(0,1);
114 path.cubicTo(0,5, 1,0, 4,0);
115 path.close();
116 pathB.setFillType(SkPath::kWinding_FillType);
117 pathB.moveTo(0,1);
118 pathB.cubicTo(0,4, 1,0, 5,0);
119 pathB.close();
120 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
121}
122
123static void cubicOp9d(skiatest::Reporter* reporter, const char* filename) {
124 SkPath path, pathB;
125 path.setFillType(SkPath::kWinding_FillType);
126 path.moveTo(0,1);
127 path.cubicTo(1,6, 1,0, 2,1);
128 path.close();
129 pathB.setFillType(SkPath::kWinding_FillType);
130 pathB.moveTo(0,1);
131 pathB.cubicTo(1,2, 1,0, 6,1);
132 pathB.close();
133 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
134}
135
136static void quadOp9d(skiatest::Reporter* reporter, const char* filename) {
137 SkPath path, pathB;
138 path.setFillType(SkPath::kWinding_FillType);
139 path.moveTo(0,1);
140 path.quadTo(1,6, 1.5f,1);
141 path.quadTo(1.5f,0.5f, 2,1);
142 path.close();
143 pathB.setFillType(SkPath::kWinding_FillType);
144 pathB.moveTo(0,1);
145 pathB.quadTo(1,2, 1.4f,1);
146 pathB.quadTo(3,0.4f, 6,1);
147 pathB.close();
148 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
149}
150
151static void lineOp9d(skiatest::Reporter* reporter, const char* filename) {
152 SkPath path, pathB;
153 path.setFillType(SkPath::kWinding_FillType);
154 path.moveTo(0,1);
155 path.lineTo(1,6);
156 path.lineTo(1.5f,1);
157 path.lineTo(1.8f,0.8f);
158 path.lineTo(2,1);
159 path.close();
160 pathB.setFillType(SkPath::kWinding_FillType);
161 pathB.moveTo(0,1);
162 pathB.lineTo(1,2);
163 pathB.lineTo(1.4f,1);
164 pathB.lineTo(3,0.4f);
165 pathB.lineTo(6,1);
166 pathB.close();
167 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
168}
169
170static void cubicOp1i(skiatest::Reporter* reporter, const char* filename) {
171 SkPath path, pathB;
172 path.setFillType(SkPath::kWinding_FillType);
173 path.moveTo(0,1);
174 path.cubicTo(1,2, 1,0, 2,1);
175 path.close();
176 pathB.setFillType(SkPath::kWinding_FillType);
177 pathB.moveTo(0,1);
178 pathB.cubicTo(1,2, 1,0, 2,1);
179 pathB.close();
180 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
181}
182
183static void cubicOp10d(skiatest::Reporter* reporter, const char* filename) {
184 SkPath path, pathB;
185 path.setFillType(SkPath::kWinding_FillType);
186 path.moveTo(0,1);
187 path.cubicTo(1,3, 1,0, 4,1);
188 path.close();
189 pathB.setFillType(SkPath::kWinding_FillType);
190 pathB.moveTo(0,1);
191 pathB.cubicTo(1,4, 1,0, 3,1);
192 pathB.close();
193 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
194}
195
196static void cubicOp11d(skiatest::Reporter* reporter, const char* filename) {
197 SkPath path, pathB;
198 path.setFillType(SkPath::kWinding_FillType);
199 path.moveTo(0,1);
200 path.cubicTo(3,4, 1,0, 5,1);
201 path.close();
202 pathB.setFillType(SkPath::kWinding_FillType);
203 pathB.moveTo(0,1);
204 pathB.cubicTo(1,5, 1,0, 4,3);
205 pathB.close();
206 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
207}
208
209static void cubicOp12d(skiatest::Reporter* reporter, const char* filename) {
210 SkPath path, pathB;
211 path.setFillType(SkPath::kWinding_FillType);
212 path.moveTo(0,1);
213 path.cubicTo(1,6, 1,0, 1,0);
214 path.close();
215 pathB.setFillType(SkPath::kWinding_FillType);
216 pathB.moveTo(0,1);
217 pathB.cubicTo(0,1, 1,0, 6,1);
218 pathB.close();
219 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
220}
221
222static void cubicOp13d(skiatest::Reporter* reporter, const char* filename) {
223 SkPath path, pathB;
224 path.setFillType(SkPath::kWinding_FillType);
225 path.moveTo(0,1);
226 path.cubicTo(4,5, 1,0, 5,3);
227 path.close();
228 pathB.setFillType(SkPath::kWinding_FillType);
229 pathB.moveTo(0,1);
230 pathB.cubicTo(3,5, 1,0, 5,4);
231 pathB.close();
232 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
233}
234
235static void cubicOp14d(skiatest::Reporter* reporter, const char* filename) {
236 SkPath path, pathB;
237 path.setFillType(SkPath::kWinding_FillType);
238 path.moveTo(0,1);
239 path.cubicTo(0,2, 2,0, 2,1);
240 path.close();
241 pathB.setFillType(SkPath::kWinding_FillType);
242 pathB.moveTo(0,2);
243 pathB.cubicTo(1,2, 1,0, 2,0);
244 pathB.close();
245 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
246}
247
248static void cubicOp15d(skiatest::Reporter* reporter, const char* filename) {
249 SkPath path, pathB;
250 path.setFillType(SkPath::kWinding_FillType);
251 path.moveTo(0,1);
252 path.cubicTo(3,6, 2,0, 2,1);
253 path.close();
254 pathB.setFillType(SkPath::kWinding_FillType);
255 pathB.moveTo(0,2);
256 pathB.cubicTo(1,2, 1,0, 6,3);
257 pathB.close();
258 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
259}
260
261static void cubicOp16d(skiatest::Reporter* reporter, const char* filename) {
262 SkPath path, pathB;
263 path.setFillType(SkPath::kWinding_FillType);
264 path.moveTo(0,2);
265 path.cubicTo(0,1, 3,0, 1,0);
266 path.close();
267 pathB.setFillType(SkPath::kWinding_FillType);
268 pathB.moveTo(0,3);
269 pathB.cubicTo(0,1, 2,0, 1,0);
270 pathB.close();
271 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
272}
273
274static void cubicOp17d(skiatest::Reporter* reporter, const char* filename) {
275 SkPath path, pathB;
276 path.setFillType(SkPath::kWinding_FillType);
277 path.moveTo(0,2);
278 path.cubicTo(0,2, 4,0, 2,1);
279 path.close();
280 pathB.setFillType(SkPath::kWinding_FillType);
281 pathB.moveTo(0,4);
282 pathB.cubicTo(1,2, 2,0, 2,0);
283 pathB.close();
284 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
285}
286
287static void cubicOp18d(skiatest::Reporter* reporter, const char* filename) {
288 SkPath path, pathB;
289 path.setFillType(SkPath::kWinding_FillType);
290 path.moveTo(0,1);
291 path.cubicTo(3,5, 2,0, 2,1);
292 path.close();
293 pathB.setFillType(SkPath::kWinding_FillType);
294 pathB.moveTo(0,2);
295 pathB.cubicTo(1,2, 1,0, 5,3);
296 pathB.close();
297 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
298}
299
300static void cubicOp19i(skiatest::Reporter* reporter, const char* filename) {
301 SkPath path, pathB;
302 path.setFillType(SkPath::kWinding_FillType);
303 path.moveTo(0,2);
304 path.cubicTo(0,1, 2,1, 6,2);
305 path.close();
306 pathB.setFillType(SkPath::kWinding_FillType);
307 pathB.moveTo(1,2);
308 pathB.cubicTo(2,6, 2,0, 1,0);
309 pathB.close();
310 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
311}
312
313static void cubicOp20d(skiatest::Reporter* reporter, const char* filename) {
314 SkPath path, pathB;
315 path.setFillType(SkPath::kWinding_FillType);
316 path.moveTo(0,1);
317 path.cubicTo(0,1, 6,0, 2,1);
318 path.close();
319 pathB.setFillType(SkPath::kWinding_FillType);
320 pathB.moveTo(0,6);
321 pathB.cubicTo(1,2, 1,0, 1,0);
322 pathB.close();
323 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
324}
325
326static void cubicOp21d(skiatest::Reporter* reporter, const char* filename) {
327 SkPath path, pathB;
328 path.setFillType(SkPath::kWinding_FillType);
329 path.moveTo(0,1);
330 path.cubicTo(0,1, 2,1, 6,5);
331 path.close();
332 pathB.setFillType(SkPath::kWinding_FillType);
333 pathB.moveTo(1,2);
334 pathB.cubicTo(5,6, 1,0, 1,0);
335 pathB.close();
336 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
337}
338
339static void cubicOp22d(skiatest::Reporter* reporter, const char* filename) {
340 SkPath path, pathB;
341 path.setFillType(SkPath::kWinding_FillType);
342 path.moveTo(0,1);
343 path.cubicTo(2,3, 3,0, 2,1);
344 path.close();
345 pathB.setFillType(SkPath::kWinding_FillType);
346 pathB.moveTo(0,3);
347 pathB.cubicTo(1,2, 1,0, 3,2);
348 pathB.close();
349 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
350}
351
352static void cubicOp23d(skiatest::Reporter* reporter, const char* filename) {
353 SkPath path, pathB;
354 path.setFillType(SkPath::kWinding_FillType);
355 path.moveTo(0,1);
356 path.cubicTo(1,2, 4,0, 2,1);
357 path.close();
358 pathB.setFillType(SkPath::kWinding_FillType);
359 pathB.moveTo(0,4);
360 pathB.cubicTo(1,2, 1,0, 2,1);
361 pathB.close();
362 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
363}
364
365static void cubicOp24d(skiatest::Reporter* reporter, const char* filename) {
366 SkPath path, pathB;
367 path.setFillType(SkPath::kWinding_FillType);
368 path.moveTo(0,1);
369 path.cubicTo(1,2, 2,0, 3,2);
370 path.close();
371 pathB.setFillType(SkPath::kWinding_FillType);
372 pathB.moveTo(0,2);
373 pathB.cubicTo(2,3, 1,0, 2,1);
374 pathB.close();
375 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
376}
377
378static void testIntersect1(skiatest::Reporter* reporter, const char* filename) {
379 SkPath one, two;
380 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
381 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
382 testPathOp(reporter, one, two, kIntersect_SkPathOp, filename);
383}
384
385static void testUnion1(skiatest::Reporter* reporter, const char* filename) {
386 SkPath one, two;
387 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
388 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
389 testPathOp(reporter, one, two, kUnion_SkPathOp, filename);
390}
391
392static void testDiff1(skiatest::Reporter* reporter, const char* filename) {
393 SkPath one, two;
394 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
395 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
396 testPathOp(reporter, one, two, kDifference_SkPathOp, filename);
397}
398
399static void testXor1(skiatest::Reporter* reporter, const char* filename) {
400 SkPath one, two;
401 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
402 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
403 testPathOp(reporter, one, two, kXOR_SkPathOp, filename);
404}
405
406static void testIntersect2(skiatest::Reporter* reporter, const char* filename) {
407 SkPath one, two;
408 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
409 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
410 testPathOp(reporter, one, two, kIntersect_SkPathOp, filename);
411}
412
413static void testUnion2(skiatest::Reporter* reporter, const char* filename) {
414 SkPath one, two;
415 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
416 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
417 testPathOp(reporter, one, two, kUnion_SkPathOp, filename);
418}
419
420static void testDiff2(skiatest::Reporter* reporter, const char* filename) {
421 SkPath one, two;
422 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
423 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
424 testPathOp(reporter, one, two, kDifference_SkPathOp, filename);
425}
426
427static void testXor2(skiatest::Reporter* reporter, const char* filename) {
428 SkPath one, two;
429 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
430 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
431 testPathOp(reporter, one, two, kXOR_SkPathOp, filename);
432}
433
434static void testOp1d(skiatest::Reporter* reporter, const char* filename) {
435 SkPath path, pathB;
436 path.setFillType(SkPath::kWinding_FillType);
437 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
438 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
439 pathB.setFillType(SkPath::kWinding_FillType);
440 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
441 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
442 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
443}
444
445static void testOp2d(skiatest::Reporter* reporter, const char* filename) {
446 SkPath path, pathB;
447 path.setFillType(SkPath::kWinding_FillType);
448 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
449 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
450 pathB.setFillType(SkPath::kEvenOdd_FillType);
451 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
452 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
453 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
454}
455
456static void testOp3d(skiatest::Reporter* reporter, const char* filename) {
457 SkPath path, pathB;
458 path.setFillType(SkPath::kWinding_FillType);
459 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
460 path.addRect(1, 1, 2, 2, SkPath::kCW_Direction);
461 pathB.setFillType(SkPath::kWinding_FillType);
462 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
463 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
464 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
465}
466
467static void testOp1u(skiatest::Reporter* reporter, const char* filename) {
468 SkPath path, pathB;
469 path.setFillType(SkPath::kWinding_FillType);
470 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
471 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
472 pathB.setFillType(SkPath::kWinding_FillType);
473 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
474 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
475 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
476}
477
478static void testOp4d(skiatest::Reporter* reporter, const char* filename) {
479 SkPath path, pathB;
480 path.setFillType(SkPath::kWinding_FillType);
481 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
482 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
483 pathB.setFillType(SkPath::kWinding_FillType);
484 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
485 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
486 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
487}
488
489static void testOp5d(skiatest::Reporter* reporter, const char* filename) {
490 SkPath path, pathB;
491 path.setFillType(SkPath::kEvenOdd_FillType);
492 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
493 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
494 pathB.setFillType(SkPath::kEvenOdd_FillType);
495 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
496 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
497 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
498}
499
500static void testOp6d(skiatest::Reporter* reporter, const char* filename) {
501 SkPath path, pathB;
502 path.setFillType(SkPath::kEvenOdd_FillType);
503 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
504 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
505 pathB.setFillType(SkPath::kWinding_FillType);
506 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
507 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
508 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
509}
510
511static void testOp7d(skiatest::Reporter* reporter, const char* filename) {
512 SkPath path, pathB;
513 path.setFillType(SkPath::kEvenOdd_FillType);
514 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
515 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
516 pathB.setFillType(SkPath::kEvenOdd_FillType);
517 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
518 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
519 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
520}
521
522static void testOp2u(skiatest::Reporter* reporter, const char* filename) {
523 SkPath path, pathB;
524 path.setFillType(SkPath::kEvenOdd_FillType);
525 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
526 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
527 pathB.setFillType(SkPath::kWinding_FillType);
528 pathB.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
529 pathB.addRect(1, 1, 2, 2, SkPath::kCW_Direction);
530 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
531}
532
533static void testOp8d(skiatest::Reporter* reporter, const char* filename) {
534 SkPath path, pathB;
535 path.addRect(0, 0, 640, 480);
536 pathB.moveTo(577330, 1971.72f);
537 pathB.cubicTo(10.7082f, -116.596f, 262.057f, 45.6468f, 294.694f, 1.96237f);
538 pathB.close();
539 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
540}
541static void cubicOp25i(skiatest::Reporter* reporter, const char* filename) {
542 SkPath path, pathB;
543 path.setFillType(SkPath::kWinding_FillType);
544 path.moveTo(0,1);
545 path.cubicTo(2,4, 5,0, 3,2);
546 path.close();
547 pathB.setFillType(SkPath::kWinding_FillType);
548 pathB.moveTo(0,5);
549 pathB.cubicTo(2,3, 1,0, 4,2);
550 pathB.close();
551 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
552}
553
554static void cubicOp26d(skiatest::Reporter* reporter, const char* filename) {
555 SkPath path, pathB;
556 path.setFillType(SkPath::kWinding_FillType);
557 path.moveTo(0,1);
558 path.cubicTo(3,4, 4,0, 3,2);
559 path.close();
560 pathB.setFillType(SkPath::kWinding_FillType);
561 pathB.moveTo(0,4);
562 pathB.cubicTo(2,3, 1,0, 4,3);
563 pathB.close();
564 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
565}
566
567static void cubicOp27d(skiatest::Reporter* reporter, const char* filename) {
568 SkPath path, pathB;
569 path.setFillType(SkPath::kWinding_FillType);
570 path.moveTo(0,1);
571 path.cubicTo(3,6, 1,0, 5,2);
572 path.close();
573 pathB.setFillType(SkPath::kWinding_FillType);
574 pathB.moveTo(0,1);
575 pathB.cubicTo(2,5, 1,0, 6,3);
576 pathB.close();
577 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
578}
579
580static void cubicOp28u(skiatest::Reporter* reporter, const char* filename) {
581 SkPath path, pathB;
582 path.setFillType(SkPath::kWinding_FillType);
583 path.moveTo(0,1);
584 path.cubicTo(1,4, 6,0, 3,2);
585 path.close();
586 pathB.setFillType(SkPath::kWinding_FillType);
587 pathB.moveTo(0,6);
588 pathB.cubicTo(2,3, 1,0, 4,1);
589 pathB.close();
590 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
591}
592
593static void cubicOp29d(skiatest::Reporter* reporter, const char* filename) {
594 SkPath path, pathB;
595 path.setFillType(SkPath::kWinding_FillType);
596 path.moveTo(0,1);
597 path.cubicTo(2,5, 6,0, 4,2);
598 path.close();
599 pathB.setFillType(SkPath::kWinding_FillType);
600 pathB.moveTo(0,6);
601 pathB.cubicTo(2,4, 1,0, 5,2);
602 pathB.close();
603 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
604}
605
606static void cubicOp30d(skiatest::Reporter* reporter, const char* filename) {
607 SkPath path, pathB;
608 path.setFillType(SkPath::kWinding_FillType);
609 path.moveTo(0,1);
610 path.cubicTo(2,5, 6,0, 5,3);
611 path.close();
612 pathB.setFillType(SkPath::kWinding_FillType);
613 pathB.moveTo(0,6);
614 pathB.cubicTo(3,5, 1,0, 5,2);
615 pathB.close();
616 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
617}
618
619static void cubicOp31d(skiatest::Reporter* reporter, const char* filename) {
620 SkPath path, pathB;
621 path.setFillType(SkPath::kWinding_FillType);
622 path.moveTo(0,2);
623 path.cubicTo(0,3, 2,1, 4,0);
624 path.close();
625 pathB.setFillType(SkPath::kWinding_FillType);
626 pathB.moveTo(1,2);
627 pathB.cubicTo(0,4, 2,0, 3,0);
628 pathB.close();
629 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
630}
631
632static void cubicOp31u(skiatest::Reporter* reporter, const char* filename) {
633 SkPath path, pathB;
634 path.setFillType(SkPath::kWinding_FillType);
635 path.moveTo(0,2);
636 path.cubicTo(0,3, 2,1, 4,0);
637 path.close();
638 pathB.setFillType(SkPath::kWinding_FillType);
639 pathB.moveTo(1,2);
640 pathB.cubicTo(0,4, 2,0, 3,0);
641 pathB.close();
642 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
643}
644
645static void cubicOp31x(skiatest::Reporter* reporter, const char* filename) {
646 SkPath path, pathB;
647 path.setFillType(SkPath::kWinding_FillType);
648 path.moveTo(0,2);
649 path.cubicTo(0,3, 2,1, 4,0);
650 path.close();
651 pathB.setFillType(SkPath::kWinding_FillType);
652 pathB.moveTo(1,2);
653 pathB.cubicTo(0,4, 2,0, 3,0);
654 pathB.close();
655 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
656}
657
658static void cubicOp32d(skiatest::Reporter* reporter, const char* filename) {
659 SkPath path, pathB;
660 path.setFillType(SkPath::kWinding_FillType);
661 path.moveTo(0,1);
662 path.cubicTo(1,2, 6,0, 3,1);
663 path.close();
664 pathB.setFillType(SkPath::kWinding_FillType);
665 pathB.moveTo(0,6);
666 pathB.cubicTo(1,3, 1,0, 2,1);
667 pathB.close();
668 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
669}
670
671static void cubicOp33i(skiatest::Reporter* reporter, const char* filename) {
672 SkPath path, pathB;
673 path.setFillType(SkPath::kWinding_FillType);
674 path.moveTo(0,1);
675 path.cubicTo(1,2, 6,0, 3,1);
676 path.close();
677 pathB.setFillType(SkPath::kWinding_FillType);
678 pathB.moveTo(0,6);
679 pathB.cubicTo(1,3, 1,0, 2,1);
680 pathB.close();
681 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
682}
683
684static void cubicOp34d(skiatest::Reporter* reporter, const char* filename) {
685 SkPath path, pathB;
686 path.setFillType(SkPath::kWinding_FillType);
687 path.moveTo(0,1);
688 path.cubicTo(3,5, 2,1, 3,1);
689 path.close();
690 pathB.setFillType(SkPath::kWinding_FillType);
691 pathB.moveTo(1,2);
692 pathB.cubicTo(1,3, 1,0, 5,3);
693 pathB.close();
694 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
695}
696
697static void cubicOp35d(skiatest::Reporter* reporter, const char* filename) {
698 SkPath path, pathB;
699 path.setFillType(SkPath::kWinding_FillType);
700 path.moveTo(0,1);
701 path.cubicTo(1,5, 2,1, 4,0);
702 path.close();
703 pathB.setFillType(SkPath::kWinding_FillType);
704 pathB.moveTo(1,2);
705 pathB.cubicTo(0,4, 1,0, 5,1);
706 pathB.close();
707 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
708}
709
710static void cubicOp36u(skiatest::Reporter* reporter, const char* filename) {
711 SkPath path, pathB;
712 path.setFillType(SkPath::kWinding_FillType);
713 path.moveTo(0,1);
714 path.cubicTo(1,6, 2,0, 5,1);
715 path.close();
716 pathB.setFillType(SkPath::kWinding_FillType);
717 pathB.moveTo(0,2);
718 pathB.cubicTo(1,5, 1,0, 6,1);
719 pathB.close();
720 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
721}
722
723static void cubicOp37d(skiatest::Reporter* reporter, const char* filename) {
724 SkPath path, pathB;
725 path.setFillType(SkPath::kWinding_FillType);
726 path.moveTo(0,1);
727 path.cubicTo(2,6, 6,1, 4,3);
728 path.close();
729 pathB.setFillType(SkPath::kWinding_FillType);
730 pathB.moveTo(1,6);
731 pathB.cubicTo(3,4, 1,0, 6,2);
732 pathB.close();
733 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
734}
735
736static void cubicOp38d(skiatest::Reporter* reporter, const char* filename) {
737 SkPath path, pathB;
738 path.setFillType(SkPath::kWinding_FillType);
739 path.moveTo(0,1);
740 path.cubicTo(0,6, 3,2, 4,1);
741 path.close();
742 pathB.setFillType(SkPath::kWinding_FillType);
743 pathB.moveTo(2,3);
744 pathB.cubicTo(1,4, 1,0, 6,0);
745 pathB.close();
746 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
747}
748
749static void cubicOp39d(skiatest::Reporter* reporter, const char* filename) {
750 SkPath path, pathB;
751 path.setFillType(SkPath::kWinding_FillType);
752 path.moveTo(0,1);
753 path.cubicTo(2,3, 5,1, 4,3);
754 path.close();
755 pathB.setFillType(SkPath::kWinding_FillType);
756 pathB.moveTo(1,5);
757 pathB.cubicTo(3,4, 1,0, 3,2);
758 pathB.close();
759 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
760}
761
762static void cubicOp40d(skiatest::Reporter* reporter, const char* filename) {
763 SkPath path, pathB;
764 path.setFillType(SkPath::kWinding_FillType);
765 path.moveTo(0,1);
766 path.cubicTo(1,5, 3,2, 4,2);
767 path.close();
768 pathB.setFillType(SkPath::kWinding_FillType);
769 pathB.moveTo(2,3);
770 pathB.cubicTo(2,4, 1,0, 5,1);
771 pathB.close();
772 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
773}
774
775static void cubicOp41i(skiatest::Reporter* reporter, const char* filename) {
776 SkPath path, pathB;
777 path.setFillType(SkPath::kWinding_FillType);
778 path.moveTo(0,1);
779 path.cubicTo(2,6, 4,3, 6,4);
780 path.close();
781 pathB.setFillType(SkPath::kWinding_FillType);
782 pathB.moveTo(3,4);
783 pathB.cubicTo(4,6, 1,0, 6,2);
784 pathB.close();
785 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
786}
787
788static void cubicOp42d(skiatest::Reporter* reporter, const char* filename) {
789 SkPath path, pathB;
790 path.setFillType(SkPath::kWinding_FillType);
791 path.moveTo(0,1);
792 path.cubicTo(1,2, 6,5, 5,4);
793 path.close();
794 pathB.setFillType(SkPath::kWinding_FillType);
795 pathB.moveTo(5,6);
796 pathB.cubicTo(4,5, 1,0, 2,1);
797 pathB.close();
798 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
799}
800
801static void cubicOp43d(skiatest::Reporter* reporter, const char* filename) {
802 SkPath path, pathB;
803 path.setFillType(SkPath::kWinding_FillType);
804 path.moveTo(0,2);
805 path.cubicTo(1,2, 4,0, 3,1);
806 path.close();
807 pathB.setFillType(SkPath::kWinding_FillType);
808 pathB.moveTo(0,4);
809 pathB.cubicTo(1,3, 2,0, 2,1);
810 pathB.close();
811 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
812}
813
814static void cubicOp44d(skiatest::Reporter* reporter, const char* filename) {
815 SkPath path, pathB;
816 path.setFillType(SkPath::kWinding_FillType);
817 path.moveTo(0,2);
818 path.cubicTo(3,6, 4,0, 3,2);
819 path.close();
820 pathB.setFillType(SkPath::kWinding_FillType);
821 pathB.moveTo(0,4);
822 pathB.cubicTo(2,3, 2,0, 6,3);
823 pathB.close();
824 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
825}
826
827static void cubicOp45d(skiatest::Reporter* reporter, const char* filename) {
828 SkPath path, pathB;
829 path.setFillType(SkPath::kWinding_FillType);
830 path.moveTo(0,2);
831 path.cubicTo(2,4, 4,0, 3,2);
832 path.close();
833 pathB.setFillType(SkPath::kWinding_FillType);
834 pathB.moveTo(0,4);
835 pathB.cubicTo(2,3, 2,0, 4,2);
836 pathB.close();
837 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
838}
839
840static void cubicOp46d(skiatest::Reporter* reporter, const char* filename) {
841 SkPath path, pathB;
842 path.setFillType(SkPath::kWinding_FillType);
843 path.moveTo(0,2);
844 path.cubicTo(3,5, 5,0, 4,2);
845 path.close();
846 pathB.setFillType(SkPath::kWinding_FillType);
847 pathB.moveTo(0,5);
848 pathB.cubicTo(2,4, 2,0, 5,3);
849 pathB.close();
850 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
851}
852
853static void cubicOp47d(skiatest::Reporter* reporter, const char* filename) {
854 SkPath path, pathB;
855 path.setFillType(SkPath::kWinding_FillType);
856 path.moveTo(0,1);
857 path.cubicTo(1,6, 6,2, 5,4);
858 path.close();
859 pathB.setFillType(SkPath::kWinding_FillType);
860 pathB.moveTo(2,6);
861 pathB.cubicTo(4,5, 1,0, 6,1);
862 pathB.close();
863 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
864}
865
866static void cubicOp48d(skiatest::Reporter* reporter, const char* filename) {
867 SkPath path, pathB;
868 path.setFillType(SkPath::kWinding_FillType);
869 path.moveTo(0,2);
870 path.cubicTo(2,3, 5,1, 3,2);
871 path.close();
872 pathB.setFillType(SkPath::kWinding_FillType);
873 pathB.moveTo(1,5);
874 pathB.cubicTo(2,3, 2,0, 3,2);
875 pathB.close();
876 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
877}
878
879static void cubicOp49d(skiatest::Reporter* reporter, const char* filename) {
880 SkPath path, pathB;
881 path.setFillType(SkPath::kWinding_FillType);
882 path.moveTo(0,2);
883 path.cubicTo(1,5, 3,2, 4,1);
884 path.close();
885 pathB.setFillType(SkPath::kWinding_FillType);
886 pathB.moveTo(2,3);
887 pathB.cubicTo(1,4, 2,0, 5,1);
888 pathB.close();
889 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
890}
891
892static void cubicOp50d(skiatest::Reporter* reporter, const char* filename) {
893 SkPath path, pathB;
894 path.setFillType(SkPath::kWinding_FillType);
895 path.moveTo(0,3);
896 path.cubicTo(1,6, 5,0, 5,1);
897 path.close();
898 pathB.setFillType(SkPath::kWinding_FillType);
899 pathB.moveTo(0,5);
900 pathB.cubicTo(1,5, 3,0, 6,1);
901 pathB.close();
902 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
903}
904
905static void cubicOp51d(skiatest::Reporter* reporter, const char* filename) {
906 SkPath path, pathB;
907 path.setFillType(SkPath::kWinding_FillType);
908 path.moveTo(0,3);
909 path.cubicTo(1,2, 4,1, 6,0);
910 path.close();
911 pathB.setFillType(SkPath::kWinding_FillType);
912 pathB.moveTo(1,4);
913 pathB.cubicTo(0,6, 3,0, 2,1);
914 pathB.close();
915 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
916}
917
918static void cubicOp52d(skiatest::Reporter* reporter, const char* filename) {
919 SkPath path, pathB;
920 path.setFillType(SkPath::kWinding_FillType);
921 path.moveTo(0,2);
922 path.cubicTo(1,2, 5,4, 4,3);
923 path.close();
924 pathB.setFillType(SkPath::kWinding_FillType);
925 pathB.moveTo(4,5);
926 pathB.cubicTo(3,4, 2,0, 2,1);
927 pathB.close();
928 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
929}
930
931static void cubicOp53d(skiatest::Reporter* reporter, const char* filename) {
932 SkPath path, pathB;
933 path.setFillType(SkPath::kWinding_FillType);
934 path.moveTo(0,3);
935 path.cubicTo(1,2, 5,3, 2,1);
936 path.close();
937 pathB.setFillType(SkPath::kWinding_FillType);
938 pathB.moveTo(3,5);
939 pathB.cubicTo(1,2, 3,0, 2,1);
940 pathB.close();
941 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
942}
943
944static void cubicOp54d(skiatest::Reporter* reporter, const char* filename) {
945 SkPath path, pathB;
946 path.setFillType(SkPath::kWinding_FillType);
947 path.moveTo(0,4);
948 path.cubicTo(1,3, 5,4, 4,2);
949 path.close();
950 pathB.setFillType(SkPath::kWinding_FillType);
951 pathB.moveTo(4,5);
952 pathB.cubicTo(2,4, 4,0, 3,1);
953 pathB.close();
954 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
955}
956
957static void cubicOp55d(skiatest::Reporter* reporter, const char* filename) {
958 SkPath path, pathB;
959 path.setFillType(SkPath::kWinding_FillType);
960 path.moveTo(0,5);
961 path.cubicTo(1,3, 3,2, 5,0);
962 path.close();
963 pathB.setFillType(SkPath::kWinding_FillType);
964 pathB.moveTo(2,3);
965 pathB.cubicTo(0,5, 5,0, 3,1);
966 pathB.close();
967 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
968}
969
970static void cubicOp56d(skiatest::Reporter* reporter, const char* filename) {
971 SkPath path, pathB;
972 path.setFillType(SkPath::kWinding_FillType);
973 path.moveTo(0,1);
974 path.cubicTo(2,6, 5,0, 2,1);
975 path.close();
976 pathB.setFillType(SkPath::kWinding_FillType);
977 pathB.moveTo(0,5);
978 pathB.cubicTo(1,2, 1,0, 6,2);
979 pathB.close();
980 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
981}
982
983static void cubicOp57d(skiatest::Reporter* reporter, const char* filename) {
984 SkPath path, pathB;
985 path.setFillType(SkPath::kWinding_FillType);
986 path.moveTo(0,5);
987 path.cubicTo(0,5, 5,4, 6,4);
988 path.close();
989 pathB.setFillType(SkPath::kWinding_FillType);
990 pathB.moveTo(4,5);
991 pathB.cubicTo(4,6, 5,0, 5,0);
992 pathB.close();
993 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
994}
995
996static void cubicOp58d(skiatest::Reporter* reporter, const char* filename) {
997 SkPath path, pathB;
998 path.setFillType(SkPath::kWinding_FillType);
999 path.moveTo(0,5);
1000 path.cubicTo(3,4, 6,5, 5,3);
1001 path.close();
1002 pathB.setFillType(SkPath::kWinding_FillType);
1003 pathB.moveTo(5,6);
1004 pathB.cubicTo(3,5, 5,0, 4,3);
1005 pathB.close();
1006 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1007}
1008
1009static void cubicOp59d(skiatest::Reporter* reporter, const char* filename) {
1010 SkPath path, pathB;
1011 path.setFillType(SkPath::kWinding_FillType);
1012 path.moveTo(0,1);
1013 path.cubicTo(5,6, 4,0, 4,1);
1014 path.close();
1015 pathB.setFillType(SkPath::kWinding_FillType);
1016 pathB.moveTo(0,4);
1017 pathB.cubicTo(1,4, 1,0, 6,5);
1018 pathB.close();
1019 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1020}
1021
1022static void cubicOp60d(skiatest::Reporter* reporter, const char* filename) {
1023 SkPath path, pathB;
1024 path.setFillType(SkPath::kWinding_FillType);
1025 path.moveTo(0,2);
1026 path.cubicTo(4,6, 6,0, 5,2);
1027 path.close();
1028 pathB.setFillType(SkPath::kWinding_FillType);
1029 pathB.moveTo(0,6);
1030 pathB.cubicTo(2,5, 2,0, 6,4);
1031 pathB.close();
1032 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1033}
1034
1035static void cubicOp61d(skiatest::Reporter* reporter, const char* filename) {
1036 SkPath path, pathB;
1037 path.setFillType(SkPath::kWinding_FillType);
1038 path.moveTo(1,2);
1039 path.cubicTo(0,5, 3,2, 6,1);
1040 path.close();
1041 pathB.setFillType(SkPath::kWinding_FillType);
1042 pathB.moveTo(2,3);
1043 pathB.cubicTo(1,6, 2,1, 5,0);
1044 pathB.close();
1045 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1046}
1047
1048static void cubicOp62d(skiatest::Reporter* reporter, const char* filename) {
1049 SkPath path, pathB;
1050 path.setFillType(SkPath::kWinding_FillType);
1051 path.moveTo(1,3);
1052 path.cubicTo(5,6, 5,3, 5,4);
1053 path.close();
1054 pathB.setFillType(SkPath::kWinding_FillType);
1055 pathB.moveTo(3,5);
1056 pathB.cubicTo(4,5, 3,1, 6,5);
1057 pathB.close();
1058 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1059}
1060
1061static void cubicOp63d(skiatest::Reporter* reporter, const char* filename) {
1062 SkPath path, pathB;
1063 path.setFillType(SkPath::kWinding_FillType);
1064 path.moveTo(2,3);
1065 path.cubicTo(0,4, 3,2, 5,3);
1066 path.close();
1067 pathB.setFillType(SkPath::kWinding_FillType);
1068 pathB.moveTo(2,3);
1069 pathB.cubicTo(3,5, 3,2, 4,0);
1070 pathB.close();
1071 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1072}
1073
1074static void cubicOp64d(skiatest::Reporter* reporter, const char* filename) {
1075 SkPath path, pathB;
1076 path.moveTo(0,1);
1077 path.cubicTo(0,1, 1,0, 3,0);
1078 path.lineTo(0,1);
1079 path.close();
1080 pathB.moveTo(0,1);
1081 pathB.cubicTo(0,3, 1,0, 1,0);
1082 pathB.lineTo(0,1);
1083 pathB.close();
1084 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1085}
1086
1087static void cubicOp65d(skiatest::Reporter* reporter, const char* filename) {
1088 SkPath path, pathB;
1089 path.moveTo(0,1);
1090 path.cubicTo(1,5, 1,0, 1,0);
1091 path.lineTo(0,1);
1092 path.close();
1093 pathB.moveTo(0,1);
1094 pathB.cubicTo(0,1, 1,0, 5,1);
1095 pathB.lineTo(0,1);
1096 pathB.close();
1097 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1098}
1099
1100static void rectOp1d(skiatest::Reporter* reporter, const char* filename) {
1101 SkPath path, pathB;
1102 path.moveTo(0,1);
1103 path.cubicTo(0,1, 1,0, 3,0);
1104 path.lineTo(0,1);
1105 path.close();
1106 pathB.moveTo(0,1);
1107 pathB.cubicTo(0,3, 1,0, 1,0);
1108 pathB.lineTo(0,1);
1109 pathB.close();
1110 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1111}
1112
1113static void cubicOp66u(skiatest::Reporter* reporter, const char* filename) {
1114 SkPath path, pathB;
1115 path.setFillType(SkPath::kWinding_FillType);
1116 path.moveTo(0,1);
1117 path.cubicTo(2,6, 4,2, 5,3);
1118 path.close();
1119 pathB.setFillType(SkPath::kWinding_FillType);
1120 pathB.moveTo(2,4);
1121 pathB.cubicTo(3,5, 1,0, 6,2);
1122 pathB.close();
1123 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1124}
1125
1126static void cubicOp67u(skiatest::Reporter* reporter, const char* filename) {
1127 SkPath path, pathB;
1128 path.moveTo(3,5);
1129 path.cubicTo(1,6, 5,0, 3,1);
1130 path.lineTo(3,5);
1131 path.close();
1132 pathB.moveTo(0,5);
1133 pathB.cubicTo(1,3, 5,3, 6,1);
1134 pathB.lineTo(0,5);
1135 pathB.close();
1136 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1137}
1138
1139static void cubicOp68u(skiatest::Reporter* reporter, const char* filename) {
1140 SkPath path, pathB;
1141 path.moveTo(0,5);
1142 path.cubicTo(4,5, 4,1, 5,0);
1143 path.close();
1144 pathB.moveTo(1,4);
1145 pathB.cubicTo(0,5, 5,0, 5,4);
1146 pathB.close();
1147 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1148}
1149
1150static void cubicOp69d(skiatest::Reporter* reporter, const char* filename) {
1151 SkPath path, pathB;
1152 path.moveTo(1,3);
1153 path.cubicTo(0,1, 3,1, 2,0);
1154 path.close();
1155 pathB.moveTo(1,3);
1156 pathB.cubicTo(0,2, 3,1, 1,0);
1157 pathB.close();
1158 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1159}
1160
1161SkPathOp ops[] = {
1162 kUnion_SkPathOp,
1163 kXOR_SkPathOp,
1164 kReverseDifference_SkPathOp,
1165 kXOR_SkPathOp,
1166 kReverseDifference_SkPathOp,
1167};
1168
1169static void rRect1(skiatest::Reporter* reporter, const char* filename) {
1170 SkScalar xA = 0.65f;
1171 SkScalar xB = 10.65f;
1172 SkScalar xC = 20.65f;
1173 SkScalar xD = 30.65f;
1174 SkScalar xE = 40.65f;
1175 SkScalar xF = 50.65f;
1176
1177 SkScalar yA = 0.65f;
1178 SkScalar yB = 10.65f;
1179 SkScalar yC = 20.65f;
1180 SkScalar yD = 30.65f;
1181 SkScalar yE = 40.65f;
1182 SkScalar yF = 50.65f;
1183 SkPath paths[5];
1184 SkRect rects[5];
1185 rects[0].set(xB, yB, xE, yE);
1186 paths[0].addRoundRect(rects[0], SkIntToScalar(5), SkIntToScalar(5)); // red
1187 rects[1].set(xA, yA, xD, yD);
1188 paths[1].addRoundRect(rects[1], SkIntToScalar(5), SkIntToScalar(5)); // green
1189 rects[2].set(xC, yA, xF, yD);
1190 paths[2].addRoundRect(rects[2], SkIntToScalar(5), SkIntToScalar(5)); // blue
1191 rects[3].set(xA, yC, xD, yF);
1192 paths[3].addRoundRect(rects[3], SkIntToScalar(5), SkIntToScalar(5)); // yellow
1193 rects[4].set(xC, yC, xF, yF);
1194 paths[4].addRoundRect(rects[4], SkIntToScalar(5), SkIntToScalar(5)); // cyan
1195 SkPath path;
1196 path.setFillType(SkPath::kInverseEvenOdd_FillType);
1197 for (int index = 0; index < 5; ++index) {
1198 testPathOp(reporter, path, paths[index], ops[index], filename);
1199 REPORTER_ASSERT(reporter, Op(path, paths[index], ops[index], &path));
1200 }
1201}
1202
1203static void skp1(skiatest::Reporter* reporter, const char* filename) {
1204 SkPath path;
1205 path.setFillType(SkPath::kEvenOdd_FillType);
1206 path.moveTo(189,7);
1207 path.cubicTo(189,5.34314585f, 190.34314f,4, 192,4);
1208 path.lineTo(243,4);
1209 path.cubicTo(244.65686f,4, 246,5.34314585f, 246,7);
1210 path.lineTo(246,21);
1211 path.cubicTo(246,22.6568546f, 244.65686f,24, 243,24);
1212 path.lineTo(192,24);
1213 path.cubicTo(190.34314f,24, 189,22.6568546f, 189,21);
1214 path.lineTo(189,7);
1215 path.close();
1216 path.moveTo(191,8);
1217 path.cubicTo(191,6.89543009f, 191.895432f,6, 193,6);
1218 path.lineTo(242,6);
1219 path.cubicTo(243.104568f,6, 244,6.89543009f, 244,8);
1220 path.lineTo(244,20);
1221 path.cubicTo(244,21.1045704f, 243.104568f,22, 242,22);
1222 path.lineTo(193,22);
1223 path.cubicTo(191.895432f,22, 191,21.1045704f, 191,20);
1224 path.lineTo(191,8);
1225 path.close();
1226 SkPath pathB;
1227 pathB.setFillType(SkPath::kWinding_FillType);
1228 pathB.moveTo(189,4);
1229 pathB.lineTo(199,14);
1230 pathB.lineTo(236,14);
1231 pathB.lineTo(246,4);
1232 pathB.lineTo(189,4);
1233 pathB.close();
1234 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1235}
1236
1237static void skp2(skiatest::Reporter* reporter, const char* filename) {
1238 SkPath path;
1239 path.setFillType(SkPath::kEvenOdd_FillType);
1240 path.moveTo(253.000000f, 11757.0000f);
1241 path.lineTo(253.000000f, 222.000000f);
1242 path.lineTo(823.000000f, 222.000000f);
1243 path.lineTo(823.000000f, 11757.0000f);
1244 path.lineTo(253.000000f, 11757.0000f);
1245 path.close();
1246 SkPath pathB;
1247 pathB.setFillType(SkPath::kWinding_FillType);
1248 pathB.moveTo(258.000000f, 1028.00000f);
1249 pathB.lineTo(258.000000f, 1027.00000f);
1250 pathB.lineTo(823.000000f, 1027.00000f);
1251 pathB.lineTo(823.000000f, 1028.00000f);
1252 pathB.lineTo(258.000000f, 1028.00000f);
1253 pathB.close();
1254 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1255}
1256
1257static void skp3(skiatest::Reporter* reporter, const char* filename) {
1258 SkPath path;
1259 path.setFillType(SkPath::kEvenOdd_FillType);
1260 path.moveTo(717.000000f, 507.000000f);
1261 path.lineTo(717.000000f, 425.000000f);
1262 path.lineTo(973.000000f, 425.000000f);
1263 path.lineTo(973.000000f, 507.000000f);
1264 path.quadTo(973.000000f, 508.242645f, 972.121582f, 509.121613f);
1265 path.quadTo(971.242615f, 510.000000f, 970.000000f, 510.000000f);
1266 path.lineTo(720.000000f, 510.000000f);
1267 path.quadTo(718.757385f, 510.000000f, 717.878418f, 509.121613f);
1268 path.quadTo(717.000000f, 508.242645f, 717.000000f, 507.000000f);
1269 path.close();
1270 path.moveTo(719.000000f, 426.000000f);
1271 path.lineTo(971.000000f, 426.000000f);
1272 path.lineTo(971.000000f, 506.000000f);
1273 path.cubicTo(971.000000f, 507.104584f, 970.104553f, 508.000000f, 969.000000f, 508.000000f);
1274 path.lineTo(721.000000f, 508.000000f);
1275 path.cubicTo(719.895447f, 508.000000f, 719.000000f, 507.104584f, 719.000000f, 506.000000f);
1276 path.lineTo(719.000000f, 426.000000f);
1277 path.close();
1278 SkPath pathB;
1279 pathB.setFillType(SkPath::kWinding_FillType);
1280 pathB.moveTo(717.000000f, 510.000000f);
1281 pathB.lineTo(760.000000f, 467.000000f);
1282 pathB.lineTo(930.000000f, 467.000000f);
1283 pathB.lineTo(973.000000f, 510.000000f);
1284 pathB.lineTo(717.000000f, 510.000000f);
1285 pathB.close();
1286 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1287}
1288
1289static void skp4(skiatest::Reporter* reporter, const char* filename) {
1290 SkPath path;
1291 path.setFillType(SkPath::kEvenOdd_FillType);
1292 path.moveTo(230.756805f, 591.756775f);
1293 path.quadTo(232.514725f, 590.000000f, 235.000000f, 590.000000f);
1294 path.lineTo(300.000000f, 590.000000f);
1295 path.quadTo(302.485291f, 590.000000f, 304.243195f, 591.756775f);
1296 path.quadTo(306.000000f, 593.514709f, 306.000000f, 596.000000f);
1297 path.lineTo(306.000000f, 617.000000f);
1298 path.lineTo(229.000000f, 617.000000f);
1299 path.lineTo(229.000000f, 596.000000f);
1300 path.quadTo(229.000000f, 593.514709f, 230.756805f, 591.756775f);
1301 path.close();
1302 path.moveTo(231.000000f, 597.000000f);
1303 path.cubicTo(231.000000f, 594.238586f, 233.238571f, 592.000000f, 236.000000f, 592.000000f);
1304 path.lineTo(299.000000f, 592.000000f);
1305 path.cubicTo(301.761414f, 592.000000f, 304.000000f, 594.238586f, 304.000000f, 597.000000f);
1306 path.lineTo(304.000000f, 616.000000f);
1307 path.lineTo(231.000000f, 616.000000f);
1308 path.lineTo(231.000000f, 597.000000f);
1309 path.close();
1310 SkPath pathB;
1311 pathB.setFillType(SkPath::kWinding_FillType);
1312 pathB.moveTo(306.000000f, 590.000000f);
1313 pathB.lineTo(292.000000f, 604.000000f);
1314 pathB.lineTo(305.000000f, 617.000000f);
1315 pathB.lineTo(306.000000f, 617.000000f);
1316 pathB.lineTo(306.000000f, 590.000000f);
1317 pathB.close();
1318 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1319}
1320
1321static void skp5(skiatest::Reporter* reporter, const char* filename) {
1322 SkPath path;
1323 path.setFillType(SkPath::kEvenOdd_FillType);
1324 path.moveTo(18.0000000f, 226.000000f);
1325 path.quadTo(14.6862917f, 226.000000f, 12.3423996f, 228.342407f);
1326 path.quadTo(10.0000000f, 230.686295f, 10.0000000f, 234.000000f);
1327 path.lineTo(10.0000000f, 253.000000f);
1328 path.lineTo(1247.00000f, 253.000000f);
1329 path.lineTo(1247.00000f, 234.000000f);
1330 path.quadTo(1247.00000f, 230.686295f, 1244.65759f, 228.342407f);
1331 path.quadTo(1242.31372f, 226.000000f, 1239.00000f, 226.000000f);
1332 path.lineTo(18.0000000f, 226.000000f);
1333 path.close();
1334 SkPath pathB;
1335 pathB.setFillType(SkPath::kInverseWinding_FillType);
1336 pathB.moveTo(18.0000000f, 226.000000f);
1337 pathB.lineTo(1239.00000f, 226.000000f);
1338 pathB.cubicTo(1243.41833f, 226.000000f, 1247.00000f, 229.581726f, 1247.00000f, 234.000000f);
1339 pathB.lineTo(1247.00000f, 252.000000f);
1340 pathB.lineTo(10.0000000f, 252.000000f);
1341 pathB.lineTo(10.0000000f, 234.000000f);
1342 pathB.cubicTo(10.0000000f, 229.581726f, 13.5817204f, 226.000000f, 18.0000000f, 226.000000f);
1343 pathB.close();
1344 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1345}
1346
1347static void cubicOp70d(skiatest::Reporter* reporter, const char* filename) {
1348 SkPath path, pathB;
1349 path.setFillType(SkPath::kWinding_FillType);
1350 path.moveTo(0,1);
1351 path.cubicTo(0,5, 4,0, 5,0);
1352 path.close();
1353 pathB.setFillType(SkPath::kWinding_FillType);
1354 pathB.moveTo(0,4);
1355 pathB.cubicTo(0,5, 1,0, 5,0);
1356 pathB.close();
1357 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1358}
1359
1360static void cubicOp71d(skiatest::Reporter* reporter, const char* filename) {
1361 SkPath path, pathB;
1362 path.setFillType(SkPath::kWinding_FillType);
1363 path.moveTo(0,1);
1364 path.cubicTo(0,5, 4,1, 6,4);
1365 path.close();
1366 pathB.setFillType(SkPath::kWinding_FillType);
1367 pathB.moveTo(1,4);
1368 pathB.cubicTo(4,6, 1,0, 5,0);
1369 pathB.close();
1370 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1371}
1372
1373static void cubicOp72i(skiatest::Reporter* reporter, const char* filename) {
1374 SkPath path, pathB;
1375 path.setFillType(SkPath::kWinding_FillType);
1376 path.moveTo(0,1);
1377 path.cubicTo(0,5, 5,2, 5,4);
1378 path.close();
1379 pathB.setFillType(SkPath::kWinding_FillType);
1380 pathB.moveTo(2,5);
1381 pathB.cubicTo(4,5, 1,0, 5,0);
1382 pathB.close();
1383 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1384}
1385
1386static void cubicOp73d(skiatest::Reporter* reporter, const char* filename) {
1387 SkPath path, pathB;
1388 path.setFillType(SkPath::kWinding_FillType);
1389 path.moveTo(0,1);
1390 path.cubicTo(3,4, 4,0, 6,4);
1391 path.lineTo(0,1);
1392 path.close();
1393 pathB.setFillType(SkPath::kWinding_FillType);
1394 pathB.moveTo(0,4);
1395 pathB.cubicTo(4,6, 1,0, 4,3);
1396 pathB.lineTo(0,4);
1397 pathB.close();
1398 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1399}
1400
1401static void cubicOp74d(skiatest::Reporter* reporter, const char* filename) {
1402 SkPath path, pathB;
1403 path.setFillType(SkPath::kWinding_FillType);
1404 path.moveTo(0,1);
1405 path.cubicTo(1,5, 5,1, 5,1);
1406 path.lineTo(0,1);
1407 path.close();
1408 pathB.setFillType(SkPath::kWinding_FillType);
1409 pathB.moveTo(1,5);
1410 pathB.cubicTo(1,5, 1,0, 5,1);
1411 pathB.lineTo(1,5);
1412 pathB.close();
1413 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1414}
1415
1416static void cubicOp75d(skiatest::Reporter* reporter, const char* filename) {
1417 SkPath path, pathB;
1418 path.setFillType(SkPath::kWinding_FillType);
1419 path.moveTo(0,1);
1420 path.cubicTo(0,4, 5,1, 6,4);
1421 path.lineTo(0,1);
1422 path.close();
1423 pathB.setFillType(SkPath::kWinding_FillType);
1424 pathB.moveTo(1,5);
1425 pathB.cubicTo(4,6, 1,0, 4,0);
1426 pathB.lineTo(1,5);
1427 pathB.close();
1428 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1429}
1430
1431static void cubicOp76u(skiatest::Reporter* reporter, const char* filename) {
1432 SkPath path, pathB;
1433 path.setFillType(SkPath::kWinding_FillType);
1434 path.moveTo(0,1);
1435 path.cubicTo(0,2, 2,0, 5,3);
1436 path.close();
1437 pathB.setFillType(SkPath::kWinding_FillType);
1438 pathB.moveTo(0,2);
1439 pathB.cubicTo(3,5, 1,0, 2,0);
1440 pathB.close();
1441 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1442}
1443
1444static void cubicOp77i(skiatest::Reporter* reporter, const char* filename) {
1445 SkPath path, pathB;
1446 path.setFillType(SkPath::kEvenOdd_FillType);
1447 path.moveTo(0,1);
1448 path.cubicTo(1,3, 2,0, 3,2);
1449 path.lineTo(0,1);
1450 path.close();
1451 pathB.setFillType(SkPath::kEvenOdd_FillType);
1452 pathB.moveTo(0,2);
1453 pathB.cubicTo(2,3, 1,0, 3,1);
1454 pathB.lineTo(0,2);
1455 pathB.close();
1456 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1457}
1458
1459static void cubicOp78u(skiatest::Reporter* reporter, const char* filename) {
1460 SkPath path, pathB;
1461 path.setFillType(SkPath::kEvenOdd_FillType);
1462 path.moveTo(1,6);
1463 path.cubicTo(1,6, 5,0, 6,1);
1464 path.lineTo(1,6);
1465 path.close();
1466 pathB.setFillType(SkPath::kEvenOdd_FillType);
1467 pathB.moveTo(0,5);
1468 pathB.cubicTo(1,6, 6,1, 6,1);
1469 pathB.lineTo(0,5);
1470 pathB.close();
1471 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
1472}
1473
1474static void cubicOp79u(skiatest::Reporter* reporter, const char* filename) {
1475 SkPath path, pathB;
1476 path.setFillType(SkPath::kWinding_FillType);
1477 path.moveTo(0,1);
1478 path.cubicTo(1,3, 1,0, 6,4);
1479 path.close();
1480 pathB.setFillType(SkPath::kWinding_FillType);
1481 pathB.moveTo(0,1);
1482 pathB.cubicTo(4,6, 1,0, 3,1);
1483 pathB.close();
1484 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1485}
1486
1487static void cubicOp80i(skiatest::Reporter* reporter, const char* filename) {
1488 SkPath path, pathB;
1489 path.setFillType(SkPath::kWinding_FillType);
1490 path.moveTo(0,1);
1491 path.cubicTo(2,3, 2,1, 4,3);
1492 path.lineTo(0,1);
1493 path.close();
1494 pathB.setFillType(SkPath::kWinding_FillType);
1495 pathB.moveTo(1,2);
1496 pathB.cubicTo(3,4, 1,0, 3,2);
1497 pathB.lineTo(1,2);
1498 pathB.close();
1499 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1500}
1501
1502static void cubicOp81d(skiatest::Reporter* reporter, const char* filename) {
1503 SkPath path, pathB;
1504 path.setFillType(SkPath::kWinding_FillType);
1505 path.moveTo(0,1);
1506 path.cubicTo(4,6, 4,3, 5,4);
1507 path.close();
1508 pathB.setFillType(SkPath::kWinding_FillType);
1509 pathB.moveTo(3,4);
1510 pathB.cubicTo(4,5, 1,0, 6,4);
1511 pathB.close();
1512 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1513}
1514
1515static void cubicOp82i(skiatest::Reporter* reporter, const char* filename) {
1516 SkPath path, pathB;
1517 path.setFillType(SkPath::kEvenOdd_FillType);
1518 path.moveTo(0,1);
1519 path.cubicTo(2,3, 5,2, 3,0);
1520 path.lineTo(0,1);
1521 path.close();
1522 pathB.setFillType(SkPath::kWinding_FillType);
1523 pathB.moveTo(2,5);
1524 pathB.cubicTo(0,3, 1,0, 3,2);
1525 pathB.lineTo(2,5);
1526 pathB.close();
1527 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1528}
1529
1530static void cubicOp83i(skiatest::Reporter* reporter, const char* filename) {
1531 SkPath path, pathB;
1532 path.setFillType(SkPath::kWinding_FillType);
1533 path.moveTo(0,1);
1534 path.cubicTo(0,3, 2,1, 4,1);
1535 path.lineTo(0,1);
1536 path.close();
1537 pathB.setFillType(SkPath::kWinding_FillType);
1538 pathB.moveTo(1,2);
1539 pathB.cubicTo(1,4, 1,0, 3,0);
1540 pathB.lineTo(1,2);
1541 pathB.close();
1542 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1543}
1544
1545static void cubicOp84d(skiatest::Reporter* reporter, const char* filename) {
1546 SkPath path, pathB;
1547 path.setFillType(SkPath::kWinding_FillType);
1548 path.moveTo(0,4);
1549 path.cubicTo(2,3, 6,3, 3,2);
1550 path.close();
1551 pathB.setFillType(SkPath::kWinding_FillType);
1552 pathB.moveTo(3,6);
1553 pathB.cubicTo(2,3, 4,0, 3,2);
1554 pathB.close();
1555 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1556}
1557
1558static void skpClip1(skiatest::Reporter* reporter, const char* filename) {
1559 SkPath path;
1560 path.setFillType(SkPath::kEvenOdd_FillType);
1561 path.moveTo(1126.17114f, 877.171204f);
1562 path.quadTo(1127.34314f, 876.000000f, 1129.00000f, 876.000000f);
1563 path.lineTo(1243.00000f, 876.000000f);
1564 path.quadTo(1244.65686f, 876.000000f, 1245.82886f, 877.171204f);
1565 path.quadTo(1247.00000f, 878.343140f, 1247.00000f, 880.000000f);
1566 path.lineTo(1247.00000f, 907.000000f);
1567 path.lineTo(1246.00000f, 907.000000f);
1568 path.lineTo(1246.00000f, 880.000000f);
1569 path.cubicTo(1246.00000f, 878.343140f, 1244.65686f, 877.000000f, 1243.00000f, 877.000000f);
1570 path.lineTo(1129.00000f, 877.000000f);
1571 path.cubicTo(1127.34314f, 877.000000f, 1126.00000f, 878.343140f, 1126.00000f, 880.000000f);
1572 path.lineTo(1126.00000f, 907.000000f);
1573 path.lineTo(1125.00000f, 907.000000f);
1574 path.lineTo(1125.00000f, 880.000000f);
1575 path.quadTo(1125.00000f, 878.343140f, 1126.17114f, 877.171204f);
1576 path.close();
1577 SkPath pathB;
1578 pathB.setFillType(SkPath::kWinding_FillType);
1579 pathB.moveTo(1247.00000f, 876.000000f);
1580 pathB.lineTo(1231.00000f, 892.000000f);
1581 pathB.lineTo(1246.00000f, 907.000000f);
1582 pathB.lineTo(1247.00000f, 907.000000f);
1583 pathB.lineTo(1247.00000f, 876.000000f);
1584 pathB.close();
1585 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1586}
1587
1588static void skpClip2(skiatest::Reporter* reporter, const char* filename) {
1589 SkPath path;
1590 path.setFillType(SkPath::kEvenOdd_FillType);
1591 path.moveTo(134.000000f, 11414.0000f);
1592 path.cubicTo(131.990234f, 11414.0000f, 130.326660f, 11415.4824f, 130.042755f, 11417.4131f);
1593 path.cubicTo(130.233124f, 11418.3193f, 131.037079f, 11419.0000f, 132.000000f, 11419.0000f);
1594 path.lineTo(806.000000f, 11419.0000f);
1595 path.cubicTo(806.962891f, 11419.0000f, 807.766907f, 11418.3193f, 807.957275f, 11417.4131f);
1596 path.cubicTo(807.673401f, 11415.4824f, 806.009766f, 11414.0000f, 804.000000f, 11414.0000f);
1597 path.lineTo(134.000000f, 11414.0000f);
1598 path.close();
1599 SkPath pathB;
1600 pathB.setFillType(SkPath::kInverseWinding_FillType);
1601 pathB.moveTo(132.000000f, 11415.0000f);
1602 pathB.lineTo(806.000000f, 11415.0000f);
1603 pathB.cubicTo(807.104553f, 11415.0000f, 808.000000f, 11415.4473f, 808.000000f, 11416.0000f);
1604 pathB.lineTo(808.000000f, 11417.0000f);
1605 pathB.cubicTo(808.000000f, 11418.1045f, 807.104553f, 11419.0000f, 806.000000f, 11419.0000f);
1606 pathB.lineTo(132.000000f, 11419.0000f);
1607 pathB.cubicTo(130.895432f, 11419.0000f, 130.000000f, 11418.1045f, 130.000000f, 11417.0000f);
1608 pathB.lineTo(130.000000f, 11416.0000f);
1609 pathB.cubicTo(130.000000f, 11415.4473f, 130.895432f, 11415.0000f, 132.000000f, 11415.0000f);
1610 pathB.close();
1611 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1612}
1613
1614static void skp96prezzi1(skiatest::Reporter* reporter, const char* filename) {
1615 SkPath path;
1616 path.setFillType(SkPath::kEvenOdd_FillType);
1617 path.moveTo(157.464005f, 670.463989f);
1618 path.quadTo(158.928925f, 669.000000f, 161.000000f, 669.000000f);
1619 path.lineTo(248.000000f, 669.000000f);
1620 path.quadTo(250.071075f, 669.000000f, 251.535995f, 670.463989f);
1621 path.quadTo(253.000000f, 671.928955f, 253.000000f, 674.000000f);
1622 path.lineTo(253.000000f, 706.000000f);
1623 path.lineTo(251.000000f, 706.000000f);
1624 path.lineTo(251.000000f, 675.000000f);
1625 path.cubicTo(251.000000f, 672.790833f, 249.209137f, 671.000000f, 247.000000f, 671.000000f);
1626 path.lineTo(162.000000f, 671.000000f);
1627 path.cubicTo(159.790863f, 671.000000f, 158.000000f, 672.790833f, 158.000000f, 675.000000f);
1628 path.lineTo(158.000000f, 706.000000f);
1629 path.lineTo(156.000000f, 706.000000f);
1630 path.lineTo(156.000000f, 674.000000f);
1631 path.quadTo(156.000000f, 671.928955f, 157.464005f, 670.463989f);
1632 path.close();
1633 SkPath pathB;
1634 pathB.setFillType(SkPath::kWinding_FillType);
1635 pathB.moveTo(156.000000f, 669.000000f);
1636 pathB.lineTo(178.500000f, 691.500000f);
1637 pathB.lineTo(230.500000f, 691.500000f);
1638 pathB.lineTo(253.000000f, 669.000000f);
1639 pathB.lineTo(156.000000f, 669.000000f);
1640 pathB.close();
1641 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1642}
1643
1644static void skpancestry_com1(skiatest::Reporter* reporter, const char* filename) {
1645 SkPath path;
1646 path.setFillType(SkPath::kEvenOdd_FillType);
1647 path.moveTo(161.000000f, 925.000000f);
1648 path.cubicTo(159.874390f, 925.000000f, 158.835663f, 925.371948f, 158.000000f, 925.999634f);
1649 path.lineTo(158.000000f, 926.000000f);
1650 path.lineTo(1108.00000f, 926.000000f);
1651 path.lineTo(1108.00000f, 925.999634f);
1652 path.cubicTo(1107.16443f, 925.371948f, 1106.12561f, 925.000000f, 1105.00000f, 925.000000f);
1653 path.lineTo(161.000000f, 925.000000f);
1654 path.close();
1655 SkPath pathB;
1656 pathB.setFillType(SkPath::kEvenOdd_FillType);
1657 pathB.moveTo(161.000000f, 926.000000f);
1658 pathB.lineTo(1105.00000f, 926.000000f);
1659 pathB.cubicTo(1107.20911f, 926.000000f, 1109.00000f, 927.790833f, 1109.00000f, 930.000000f);
1660 pathB.lineTo(1109.00000f, 956.000000f);
1661 pathB.cubicTo(1109.00000f, 958.209167f, 1107.20911f, 960.000000f, 1105.00000f, 960.000000f);
1662 pathB.lineTo(161.000000f, 960.000000f);
1663 pathB.cubicTo(158.790863f, 960.000000f, 157.000000f, 958.209167f, 157.000000f, 956.000000f);
1664 pathB.lineTo(157.000000f, 930.000000f);
1665 pathB.cubicTo(157.000000f, 927.790833f, 158.790863f, 926.000000f, 161.000000f, 926.000000f);
1666 pathB.close();
1667 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1668}
1669
1670static void skpeldorado_com_ua1(skiatest::Reporter* reporter, const char* filename) {
1671 SkPath path;
1672 path.setFillType(SkPath::kEvenOdd_FillType);
1673 path.moveTo(286.695129f, 291.000000f);
1674 path.lineTo(229.304855f, 561.000000f);
1675 path.lineTo(979.304871f, 561.000000f);
1676 path.lineTo(1036.69507f, 291.000000f);
1677 path.lineTo(286.695129f, 291.000000f);
1678 path.close();
1679 SkPath pathB;
1680 pathB.setFillType(SkPath::kWinding_FillType);
1681 pathB.moveTo(1006.69513f, 291.000000f);
1682 pathB.cubicTo(1023.26367f, 291.000000f, 1033.84021f, 304.431458f, 1030.31836f, 321.000000f);
1683 pathB.lineTo(985.681519f, 531.000000f);
1684 pathB.cubicTo(982.159790f, 547.568542f, 965.873413f, 561.000000f, 949.304871f, 561.000000f);
1685 pathB.lineTo(259.304871f, 561.000000f);
1686 pathB.cubicTo(242.736313f, 561.000000f, 232.159805f, 547.568542f, 235.681549f, 531.000000f);
1687 pathB.lineTo(280.318420f, 321.000000f);
1688 pathB.cubicTo(283.840179f, 304.431458f, 300.126587f, 291.000000f, 316.695129f, 291.000000f);
1689 pathB.lineTo(1006.69513f, 291.000000f);
1690 pathB.close();
1691 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1692}
1693
1694static void skpbyte_com1(skiatest::Reporter* reporter, const char* filename) {
1695 SkPath path;
1696 path.setFillType(SkPath::kEvenOdd_FillType);
1697 path.moveTo(968.000000f, 14.0000000f);
1698 path.cubicTo(965.238586f, 14.0000000f, 963.000000f, 16.2385769f, 963.000000f, 19.0000000f);
1699 path.lineTo(963.000000f, 32.0000000f);
1700 path.cubicTo(963.000000f, 34.7614250f, 965.238586f, 37.0000000f, 968.000000f, 37.0000000f);
1701 path.lineTo(1034.00000f, 37.0000000f);
1702 path.cubicTo(1036.76147f, 37.0000000f, 1039.00000f, 34.7614250f, 1039.00000f, 32.0000000f);
1703 path.lineTo(1039.00000f, 19.0000000f);
1704 path.cubicTo(1039.00000f, 16.2385769f, 1036.76147f, 14.0000000f, 1034.00000f, 14.0000000f);
1705 path.lineTo(968.000000f, 14.0000000f);
1706 path.close();
1707 SkPath pathB;
1708 pathB.setFillType(SkPath::kInverseWinding_FillType);
1709 pathB.moveTo(968.000000f, 14.0000000f);
1710 pathB.lineTo(1034.00000f, 14.0000000f);
1711 pathB.cubicTo(1036.76147f, 14.0000000f, 1039.00000f, 16.2385750f, 1039.00000f, 19.0000000f);
1712 pathB.lineTo(1039.00000f, 32.0000000f);
1713 pathB.cubicTo(1039.00000f, 34.2091408f, 1036.76147f, 36.0000000f, 1034.00000f, 36.0000000f);
1714 pathB.lineTo(968.000000f, 36.0000000f);
1715 pathB.cubicTo(965.238586f, 36.0000000f, 963.000000f, 34.2091408f, 963.000000f, 32.0000000f);
1716 pathB.lineTo(963.000000f, 19.0000000f);
1717 pathB.cubicTo(963.000000f, 16.2385750f, 965.238586f, 14.0000000f, 968.000000f, 14.0000000f);
1718 pathB.close();
1719 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1720}
1721
1722static void skphealth_com76(skiatest::Reporter* reporter, const char* filename) {
1723 SkPath path;
1724 path.setFillType(SkPath::kEvenOdd_FillType);
1725 path.moveTo(708.099182f, 7.09919119f);
1726 path.lineTo(708.099182f, 7.09920025f);
1727 path.quadTo(704.000000f, 11.2010098f, 704.000000f, 17.0000000f);
1728 path.lineTo(704.000000f, 33.0000000f);
1729 path.lineTo(705.000000f, 33.0000000f);
1730 path.lineTo(705.000000f, 17.0000000f);
1731 path.cubicTo(705.000000f, 13.4101496f, 706.455078f, 10.1601505f, 708.807617f, 7.80761385f);
1732 path.lineTo(708.099182f, 7.09919119f);
1733 path.close();
1734 SkPath pathB;
1735 pathB.setFillType(SkPath::kWinding_FillType);
1736 pathB.moveTo(704.000000f, 3.00000000f);
1737 pathB.lineTo(704.000000f, 33.0000000f);
1738 pathB.lineTo(705.000000f, 33.0000000f);
1739 pathB.lineTo(719.500000f, 3.00000000f);
1740 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1741}
1742
1743static void skpahrefs_com88(skiatest::Reporter* reporter, const char* filename) {
1744 SkPath path;
1745 path.setFillType(SkPath::kEvenOdd_FillType);
1746 path.moveTo(1099.82886f, 7.17117119f);
1747 path.lineTo(1099.12134f, 7.87867832f);
1748 path.cubicTo(1099.66418f, 8.42157173f, 1100.00000f, 9.17157173f, 1100.00000f, 10.0000000f);
1749 path.lineTo(1100.00000f, 28.0000000f);
1750 path.cubicTo(1100.00000f, 29.6568546f, 1098.65686f, 31.0000000f, 1097.00000f, 31.0000000f);
1751 path.lineTo(1088.00000f, 31.0000000f);
1752 path.lineTo(1088.00000f, 32.0000000f);
1753 path.lineTo(1097.00000f, 32.0000000f);
1754 path.quadTo(1098.65686f, 32.0000000f, 1099.82886f, 30.8288002f);
1755 path.quadTo(1101.00000f, 29.6568546f, 1101.00000f, 28.0000000f);
1756 path.lineTo(1101.00000f, 10.0000000f);
1757 path.quadTo(1101.00000f, 8.34314537f, 1099.82886f, 7.17119980f);
1758 path.lineTo(1099.82886f, 7.17117119f);
1759 path.close();
1760 SkPath pathB;
1761 pathB.setFillType(SkPath::kWinding_FillType);
1762 pathB.moveTo(1101.00000f, 6.00000000f);
1763 pathB.lineTo(1088.00000f, 6.00000000f);
1764 pathB.lineTo(1088.00000f, 19.0000000f);
1765 pathB.lineTo(1101.00000f, 32.0000000f);
1766 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1767}
1768
1769static void skpahrefs_com29(skiatest::Reporter* reporter, const char* filename) {
1770 SkPath path;
1771 path.setFillType(SkPath::kEvenOdd_FillType);
1772 path.moveTo(1037.17114f, 7.17119980f);
1773 path.quadTo(1038.34314f, 6.00000000f, 1040.00000f, 6.00000000f);
1774 path.lineTo(1074.00000f, 6.00000000f);
1775 path.lineTo(1074.00000f, 32.0000000f);
1776 path.lineTo(1040.00000f, 32.0000000f);
1777 path.quadTo(1038.34314f, 32.0000000f, 1037.17114f, 30.8288002f);
1778 path.quadTo(1036.00000f, 29.6568546f, 1036.00000f, 28.0000000f);
1779 path.lineTo(1036.00000f, 10.0000000f);
1780 path.quadTo(1036.00000f, 8.34314537f, 1037.17114f, 7.17119980f);
1781 path.close();
1782 path.moveTo(1037.00000f, 10.0000000f);
1783 path.cubicTo(1037.00000f, 8.34314537f, 1038.34314f, 7.00000000f, 1040.00000f, 7.00000000f);
1784 path.lineTo(1073.00000f, 7.00000000f);
1785 path.lineTo(1073.00000f, 31.0000000f);
1786 path.lineTo(1040.00000f, 31.0000000f);
1787 path.cubicTo(1038.34314f, 31.0000000f, 1037.00000f, 29.6568546f, 1037.00000f, 28.0000000f);
1788 path.lineTo(1037.00000f, 10.0000000f);
1789 path.close();
1790 SkPath pathB;
1791 pathB.setFillType(SkPath::kWinding_FillType);
1792 pathB.moveTo(1036.00000f, 32.0000000f);
1793 pathB.lineTo(1049.00000f, 19.0000000f);
1794 pathB.lineTo(1073.00000f, 31.0000000f);
1795 pathB.lineTo(1074.00000f, 32.0000000f);
1796 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1797}
1798
1799static void cubicOp85d(skiatest::Reporter* reporter, const char* filename) {
1800 SkPath path;
1801 path.setFillType(SkPath::kWinding_FillType);
1802 path.moveTo(0,1);
1803 path.cubicTo(1,6, 1,0, 6,2);
1804 path.close();
1805 SkPath pathB;
1806 pathB.setFillType(SkPath::kWinding_FillType);
1807 pathB.moveTo(0,1);
1808 pathB.cubicTo(2,6, 1,0, 6,1);
1809 pathB.close();
1810 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
1811}
1812
1813static void skpkkiste_to98(skiatest::Reporter* reporter, const char* filename) {
1814 SkPath path;
1815 path.setFillType(SkPath::kEvenOdd_FillType);
1816 path.moveTo(96, 122);
1817 path.cubicTo(94.6192932f, 122, 93.3692932f, 122.559647f, 92.4644699f, 123.46447f);
1818 path.lineTo(94.1715698f, 125.17157f);
1819 path.cubicTo(94.8954315f, 124.447708f, 95.8954315f, 124, 97, 124);
1820 path.lineTo(257, 124);
1821 path.cubicTo(258.104553f, 124, 259.104584f, 124.447708f, 259.82843f, 125.17157f);
1822 path.lineTo(261.535522f, 123.46447f);
1823 path.cubicTo(260.630707f, 122.559647f, 259.380707f, 122, 258, 122);
1824 path.lineTo(96, 122);
1825 path.close();
1826 SkPath pathB;
1827 pathB.setFillType(SkPath::kWinding_FillType);
1828 pathB.moveTo(258, 122);
1829 pathB.cubicTo(260.761414f, 122, 263, 124.238579f, 263, 127);
1830 pathB.lineTo(263, 284);
1831 pathB.cubicTo(263, 286.761414f, 260.761414f, 289, 258, 289);
1832 pathB.lineTo(96, 289);
1833 pathB.cubicTo(93.2385788f, 289, 91, 286.761414f, 91, 284);
1834 pathB.lineTo(91, 127);
1835 pathB.cubicTo(91, 124.238579f, 93.2385788f, 122, 96, 122);
1836 pathB.lineTo(258, 122);
1837 pathB.close();
1838 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1839}
1840
1841static void issue1417(skiatest::Reporter* reporter, const char* filename) {
1842 SkPath path1;
1843 path1.moveTo(122.58908843994140625f, 82.2836456298828125f);
1844 path1.quadTo(129.8215789794921875f, 80, 138, 80);
1845 path1.quadTo(147.15692138671875f, 80, 155.1280364990234375f, 82.86279296875f);
1846 path1.lineTo(161.1764678955078125f, 100);
1847 path1.lineTo(161.1764678955078125f, 100);
1848 path1.lineTo(115.29412078857421875f, 100);
1849 path1.lineTo(115.29412078857421875f, 100);
1850 path1.lineTo(122.58908843994140625f, 82.2836456298828125f);
1851 path1.lineTo(122.58908843994140625f, 82.2836456298828125f);
1852 path1.close();
1853 path1.moveTo(98.68194580078125f, 140.343841552734375f);
1854 path1.lineTo(115.29412078857421875f, 100);
1855 path1.lineTo(115.29412078857421875f, 100);
1856 path1.lineTo(97.9337615966796875f, 100);
1857 path1.lineTo(97.9337615966796875f, 100);
1858 path1.quadTo(88, 112.94264984130859375f, 88, 130);
1859 path1.quadTo(88, 131.544830322265625f, 88.08148956298828125f, 133.0560302734375f);
1860 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1861 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1862 path1.close();
1863 path1.moveTo(136.969696044921875f, 166.6666717529296875f);
1864 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1865 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1866 path1.lineTo(93.45894622802734375f, 153.02825927734375f);
1867 path1.lineTo(93.45894622802734375f, 153.02825927734375f);
1868 path1.quadTo(96.94116973876953125f, 159.65185546875f, 102.64466094970703125f, 165.3553466796875f);
1869 path1.quadTo(110.7924652099609375f, 173.503143310546875f, 120.8179779052734375f, 177.1177825927734375f);
1870 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1871 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1872 path1.close();
1873 path1.moveTo(175.8309783935546875f, 141.5211334228515625f);
1874 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1875 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1876 path1.lineTo(153.15728759765625f, 177.7956390380859375f);
1877 path1.lineTo(153.15728759765625f, 177.7956390380859375f);
1878 path1.quadTo(164.392425537109375f, 174.318267822265625f, 173.3553466796875f, 165.3553466796875f);
1879 path1.quadTo(177.805816650390625f, 160.9048614501953125f, 180.90380859375f, 155.8941650390625f);
1880 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1881 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1882 path1.close();
1883 path1.moveTo(175.8309783935546875f, 141.5211334228515625f);
1884 path1.lineTo(187.8782806396484375f, 133.7258148193359375f);
1885 path1.lineTo(187.8782806396484375f, 133.7258148193359375f);
1886 path1.quadTo(188, 131.8880615234375f, 188, 130);
1887 path1.quadTo(188, 112.942657470703125f, 178.0662384033203125f, 100);
1888 path1.lineTo(161.1764678955078125f, 100);
1889 path1.lineTo(161.1764678955078125f, 100);
1890 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1891 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1892 path1.close();
1893
1894 SkPath path2;
1895 path2.moveTo(174.117645263671875f, 100);
1896 path2.lineTo(161.1764678955078125f, 100);
1897 path2.lineTo(161.1764678955078125f, 100);
1898 path2.lineTo(155.1280364990234375f, 82.86279296875f);
1899 path2.lineTo(155.1280364990234375f, 82.86279296875f);
1900 path2.quadTo(153.14971923828125f, 82.15229034423828125f, 151.098419189453125f, 81.618133544921875f);
1901 path2.lineTo(143.5294189453125f, 100);
1902 path2.lineTo(143.5294189453125f, 100);
1903 path2.lineTo(161.1764678955078125f, 100);
1904 path2.lineTo(161.1764678955078125f, 100);
1905 path2.lineTo(168.23529052734375f, 120);
1906 path2.lineTo(168.23529052734375f, 120);
1907 path2.lineTo(181.1764678955078125f, 120);
1908 path2.lineTo(181.1764678955078125f, 120);
1909 path2.lineTo(186.3661956787109375f, 134.7042236328125f);
1910 path2.lineTo(186.3661956787109375f, 134.7042236328125f);
1911 path2.lineTo(187.8782806396484375f, 133.7258148193359375f);
1912 path2.lineTo(187.8782806396484375f, 133.7258148193359375f);
1913 path2.quadTo(188, 131.8880615234375f, 188, 130);
1914 path2.quadTo(188, 124.80947113037109375f, 187.080169677734375f, 120);
1915 path2.lineTo(181.1764678955078125f, 120);
1916 path2.lineTo(181.1764678955078125f, 120);
1917 path2.lineTo(174.117645263671875f, 100);
1918 path2.lineTo(174.117645263671875f, 100);
1919 path2.close();
1920 path2.moveTo(88.91983795166015625f, 120);
1921 path2.lineTo(107.0588226318359375f, 120);
1922 path2.lineTo(107.0588226318359375f, 120);
1923 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1924 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1925 path2.lineTo(88.08148956298828125f, 133.0560302734375f);
1926 path2.lineTo(88.08148956298828125f, 133.0560302734375f);
1927 path2.quadTo(88, 131.544830322265625f, 88, 130);
1928 path2.quadTo(88, 124.80951690673828125f, 88.91983795166015625f, 120);
1929 path2.close();
1930 path2.moveTo(96.67621612548828125f, 145.21490478515625f);
1931 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1932 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1933 path2.lineTo(120.68767547607421875f, 155.4727783203125f);
1934 path2.lineTo(120.68767547607421875f, 155.4727783203125f);
1935 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1936 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1937 path2.lineTo(96.67621612548828125f, 145.21490478515625f);
1938 path2.lineTo(96.67621612548828125f, 145.21490478515625f);
1939 path2.close();
1940 path2.moveTo(113.232177734375f, 173.5789947509765625f);
1941 path2.quadTo(116.8802642822265625f, 175.69805908203125f, 120.8179779052734375f, 177.1177825927734375f);
1942 path2.lineTo(132.2864990234375f, 169.6969757080078125f);
1943 path2.lineTo(132.2864990234375f, 169.6969757080078125f);
1944 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1945 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1946 path2.lineTo(113.232177734375f, 173.5789947509765625f);
1947 path2.lineTo(113.232177734375f, 173.5789947509765625f);
1948 path2.close();
1949 // FIXME : difficult data, circle back later
1950 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
1951}
1952
1953static void issue1418(skiatest::Reporter* reporter, const char* filename) {
1954 SkPath path1;
1955 path1.moveTo(0, 0);
1956 path1.lineTo(1, 0);
1957 path1.lineTo(1, 0);
1958 path1.lineTo(1, 1);
1959 path1.lineTo(1, 1);
1960 path1.lineTo(0, 1);
1961 path1.lineTo(0, 1);
1962 path1.lineTo(0, 0);
1963 path1.lineTo(0, 0);
1964 path1.close();
1965
1966 SkPath path2;
1967 path2.moveTo(0.64644664525985717773f, -0.35355341434478759766f);
1968 path2.quadTo(0.79289329051971435547f, -0.50000005960464477539f, 1.0000001192092895508f, -0.50000005960464477539f);
1969 path2.quadTo(1.2071068286895751953f, -0.50000005960464477539f, 1.3535535335540771484f, -0.35355341434478759766f);
1970 path2.quadTo(1.5000001192092895508f, -0.20710679888725280762f, 1.5000001192092895508f, 0);
1971 path2.quadTo(1.5000001192092895508f, 0.20710679888725280762f, 1.3535535335540771484f, 0.35355341434478759766f);
1972 path2.quadTo(1.2071068286895751953f, 0.50000005960464477539f, 1.0000001192092895508f, 0.50000005960464477539f);
1973 path2.quadTo(0.79289329051971435547f, 0.50000005960464477539f, 0.64644664525985717773f, 0.35355341434478759766f);
1974 path2.quadTo(0.50000005960464477539f, 0.20710679888725280762f, 0.50000005960464477539f, 0);
1975 path2.quadTo(0.50000005960464477539f, -0.20710679888725280762f, 0.64644664525985717773f, -0.35355341434478759766f);
1976 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
1977}
1978
1979static void cubicOp85i(skiatest::Reporter* reporter, const char* filename) {
1980 SkPath path, pathB;
1981 path.setFillType(SkPath::kWinding_FillType);
1982 path.moveTo(3, 4);
1983 path.cubicTo(1, 5, 4, 3, 6, 4);
1984 path.close();
1985 pathB.setFillType(SkPath::kWinding_FillType);
1986 pathB.moveTo(3, 4);
1987 pathB.cubicTo(4, 6, 4, 3, 5, 1);
1988 pathB.close();
1989 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
1990}
1991
1992static void issue1418b(skiatest::Reporter* reporter, const char* filename) {
1993 SkPath path1;
1994 path1.moveTo(0, 0);
1995 path1.lineTo(1, 0);
1996 path1.lineTo(1, 1);
1997 path1.lineTo(0, 1);
1998 path1.lineTo(0, 0);
1999 path1.close();
2000 path1.setFillType(SkPath::kWinding_FillType);
2001 SkPath path2;
2002 path2.moveTo(0.646446645f, -0.353553414f);
2003 path2.quadTo(0.792893291f, -0.50000006f, 1.00000012f, -0.50000006f);
2004 path2.quadTo(1.20710683f, -0.50000006f, 1.35355353f, -0.353553414f);
2005 path2.quadTo(1.50000012f, -0.207106799f, 1.50000012f, 0);
2006 path2.quadTo(1.50000012f, 0.207106799f, 1.35355353f, 0.353553414f);
2007 path2.quadTo(1.20710683f, 0.50000006f, 1.00000012f, 0.50000006f);
2008 path2.quadTo(0.792893291f, 0.50000006f, 0.646446645f, 0.353553414f);
2009 path2.quadTo(0.50000006f, 0.207106799f, 0.50000006f, 0);
2010 path2.quadTo(0.50000006f, -0.207106799f, 0.646446645f, -0.353553414f);
2011 path2.close();
2012 path2.moveTo(1.00000012f, 0.50000006f);
2013 path2.lineTo(1.00000012f, 1.00000012f);
2014 path2.lineTo(0.50000006f, 1.00000012f);
2015 path2.quadTo(0.50000006f, 0.792893291f, 0.646446645f, 0.646446645f);
2016 path2.quadTo(0.792893291f, 0.50000006f, 1.00000012f, 0.50000006f);
2017 path2.close();
2018 path2.setFillType(SkPath::kEvenOdd_FillType);
2019 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
2020}
2021
2022static void rectOp1i(skiatest::Reporter* reporter, const char* filename) {
2023 SkPath path, pathB;
2024 path.setFillType(SkPath::kWinding_FillType);
2025 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
2026 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
2027 pathB.setFillType(SkPath::kWinding_FillType);
2028 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
2029 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
2030 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2031}
2032
2033static void rectOp2i(skiatest::Reporter* reporter, const char* filename) {
2034 SkPath path, pathB;
2035 path.setFillType(SkPath::kEvenOdd_FillType);
2036 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
2037 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
2038 pathB.setFillType(SkPath::kWinding_FillType);
2039 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
2040 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
2041 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2042}
2043
2044static void rectOp3x(skiatest::Reporter* reporter, const char* filename) {
2045 SkPath path, pathB;
2046 path.setFillType(SkPath::kEvenOdd_FillType);
2047 path.moveTo(0, 0);
2048 path.lineTo(3, 0);
2049 path.lineTo(3, 3);
2050 path.lineTo(0, 3);
2051 path.close();
2052 path.moveTo(2, 2);
2053 path.lineTo(3, 2);
2054 path.lineTo(3, 3);
2055 path.lineTo(2, 3);
2056 path.close();
2057 pathB.setFillType(SkPath::kWinding_FillType);
2058 pathB.moveTo(1, 1);
2059 pathB.lineTo(3, 1);
2060 pathB.lineTo(3, 3);
2061 pathB.lineTo(1, 3);
2062 pathB.close();
2063 pathB.moveTo(2, 2);
2064 pathB.lineTo(3, 2);
2065 pathB.lineTo(3, 3);
2066 pathB.lineTo(2, 3);
2067 pathB.close();
2068 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
2069}
2070
2071static void issue1435(skiatest::Reporter* reporter, const char* filename) {
2072 SkPath path1;
2073 path1.moveTo(160, 60);
2074 path1.lineTo(220, 230);
2075 path1.lineTo(60, 120);
2076 path1.lineTo(260, 120);
2077 path1.lineTo(90, 230);
2078 path1.lineTo(160, 60);
2079 path1.close();
2080 path1.setFillType(SkPath::kEvenOdd_FillType);
2081
2082 SkPath path2;
2083 path2.moveTo(142.589081f, 102.283646f);
2084 path2.quadTo(149.821579f, 100, 158, 100);
2085 path2.quadTo(167.156921f, 100, 175.128036f, 102.862793f);
2086 path2.lineTo(181.176468f, 120);
2087 path2.lineTo(135.294128f, 120);
2088 path2.lineTo(142.589081f, 102.283646f);
2089 path2.close();
2090 path2.moveTo(118.681946f, 160.343842f);
2091 path2.lineTo(135.294128f, 120);
2092 path2.lineTo(117.933762f, 120);
2093 path2.quadTo(108, 132.942657f, 108, 150);
2094 path2.quadTo(108, 151.54483f, 108.08149f, 153.05603f);
2095 path2.lineTo(118.681946f, 160.343842f);
2096 path2.close();
2097 path2.moveTo(156.969696f, 186.666672f);
2098 path2.lineTo(118.681946f, 160.343842f);
2099 path2.lineTo(113.458946f, 173.028259f);
2100 path2.quadTo(116.94117f, 179.651855f, 122.644661f, 185.355347f);
2101 path2.quadTo(130.792465f, 193.503143f, 140.817978f, 197.117783f);
2102 path2.lineTo(156.969696f, 186.666672f);
2103 path2.close();
2104 path2.moveTo(195.830978f, 161.521133f);
2105 path2.lineTo(156.969696f, 186.666672f);
2106 path2.lineTo(173.157288f, 197.795639f);
2107 path2.quadTo(184.392426f, 194.318268f, 193.355347f, 185.355347f);
2108 path2.quadTo(197.805817f, 180.904861f, 200.903809f, 175.894165f);
2109 path2.lineTo(195.830978f, 161.521133f);
2110 path2.close();
2111 path2.moveTo(195.830978f, 161.521133f);
2112 path2.lineTo(207.878281f, 153.725815f);
2113 path2.quadTo(208, 151.888062f, 208, 150);
2114 path2.quadTo(208, 132.942657f, 198.066238f, 120);
2115 path2.lineTo(181.176468f, 120);
2116 path2.lineTo(195.830978f, 161.521133f);
2117 path2.close();
2118 path2.setFillType(SkPath::kEvenOdd_FillType);
2119 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
2120}
2121
2122static void skpkkiste_to716(skiatest::Reporter* reporter, const char* filename) {
2123 SkPath path;
2124 path.setFillType(SkPath::kEvenOdd_FillType);
2125 path.moveTo(1173, 284);
2126 path.cubicTo(1173, 285.125824f, 1173.37207f, 286.164734f, 1174, 287.000488f);
2127 path.lineTo(1174, 123.999496f);
2128 path.cubicTo(1173.37207f, 124.835243f, 1173, 125.874168f, 1173, 127);
2129 path.lineTo(1173, 284);
2130 path.close();
2131 SkPath pathB;
2132 pathB.setFillType(SkPath::kWinding_FillType);
2133 pathB.moveTo(1340, 122);
2134 pathB.cubicTo(1342.76147f, 122, 1345, 124.238579f, 1345, 127);
2135 pathB.lineTo(1345, 284);
2136 pathB.cubicTo(1345, 286.761414f, 1342.76147f, 289, 1340, 289);
2137 pathB.lineTo(1178, 289);
2138 pathB.cubicTo(1175.23853f, 289, 1173, 286.761414f, 1173, 284);
2139 pathB.lineTo(1173, 127);
2140 pathB.cubicTo(1173, 124.238579f, 1175.23853f, 122, 1178, 122);
2141 pathB.lineTo(1340, 122);
2142 pathB.close();
2143 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2144}
2145
2146static void loopEdge1(skiatest::Reporter* reporter, const char* filename) {
2147 SkPath path;
2148 path.setFillType(SkPath::kEvenOdd_FillType);
2149 path.moveTo(0,0);
2150 path.lineTo(3,0);
2151 path.lineTo(3,2);
2152 path.lineTo(1,2);
2153 path.lineTo(1,1);
2154 path.lineTo(2,1);
2155 path.lineTo(2,3);
2156 path.lineTo(0,3);
2157 path.close();
2158 SkPath pathB;
2159 pathB.setFillType(SkPath::kEvenOdd_FillType);
2160 pathB.moveTo(1,2);
2161 pathB.lineTo(2,2);
2162 pathB.lineTo(2,4);
2163 pathB.lineTo(1,4);
2164 pathB.close();
2165 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2166}
2167
2168static void loopEdge2(skiatest::Reporter* reporter, const char* filename) {
2169 SkPath path;
2170 path.setFillType(SkPath::kEvenOdd_FillType);
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(SkPath::kEvenOdd_FillType);
2182 pathB.moveTo(1 - 1e-6f,2);
2183 pathB.lineTo(2 - 1e-6f,2);
2184 pathB.lineTo(2 - 1e-6f,4);
2185 pathB.lineTo(1 - 1e-6f,4);
2186 pathB.close();
2187 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2188}
2189
2190static void cubicOp86i(skiatest::Reporter* reporter, const char* filename) {
2191 SkPath path, pathB;
2192 path.setFillType(SkPath::kWinding_FillType);
2193 path.moveTo(0, 4);
2194 path.cubicTo(3, 4, 6, 2, 5, 2);
2195 path.close();
2196 pathB.setFillType(SkPath::kEvenOdd_FillType);
2197 pathB.moveTo(2, 6);
2198 pathB.cubicTo(2, 5, 4, 0, 4, 3);
2199 pathB.close();
2200 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2201}
2202
2203static void cubicOp87u(skiatest::Reporter* reporter, const char* filename) {
2204 SkPath path, pathB;
2205 path.setFillType(SkPath::kWinding_FillType);
2206 path.moveTo(0,1);
2207 path.cubicTo(0,2, 2,0, 6,4);
2208 path.close();
2209 pathB.setFillType(SkPath::kWinding_FillType);
2210 pathB.moveTo(0,2);
2211 pathB.cubicTo(4,6, 1,0, 2,0);
2212 pathB.close();
2213 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2214}
2215
2216static void cubicOp88u(skiatest::Reporter* reporter, const char* filename) {
2217 SkPath path, pathB;
2218 path.setFillType(SkPath::kWinding_FillType);
2219 path.moveTo(0,1);
2220 path.cubicTo(2,5, 5,0, 6,4);
2221 path.close();
2222 pathB.setFillType(SkPath::kWinding_FillType);
2223 pathB.moveTo(0,5);
2224 pathB.cubicTo(4,6, 1,0, 5,2);
2225 pathB.close();
2226 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2227}
2228
2229static void cubicOp89u(skiatest::Reporter* reporter, const char* filename) {
2230 SkPath path, pathB;
2231 path.setFillType(SkPath::kWinding_FillType);
2232 path.moveTo(0, 3);
2233 path.cubicTo(1, 6, 5, 0, 6, 3);
2234 path.close();
2235 pathB.setFillType(SkPath::kWinding_FillType);
2236 pathB.moveTo(0, 5);
2237 pathB.cubicTo(3, 6, 3, 0, 6, 1);
2238 pathB.close();
2239 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2240}
2241
2242static void cubicOp90u(skiatest::Reporter* reporter, const char* filename) {
2243 SkPath path, pathB;
2244 path.setFillType(SkPath::kEvenOdd_FillType);
2245 path.moveTo(0, 5);
2246 path.cubicTo(1, 2, 5, 2, 4, 1);
2247 path.close();
2248 pathB.setFillType(SkPath::kEvenOdd_FillType);
2249 pathB.moveTo(2, 5);
2250 pathB.cubicTo(1, 4, 5, 0, 2, 1);
2251 pathB.close();
2252 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2253}
2254
2255static void cubicOp91u(skiatest::Reporter* reporter, const char* filename) {
2256 SkPath path, pathB;
2257 path.setFillType(SkPath::kWinding_FillType);
2258 path.moveTo(1, 6);
2259 path.cubicTo(0, 3, 6, 3, 5, 0);
2260 path.close();
2261 pathB.setFillType(SkPath::kWinding_FillType);
2262 pathB.moveTo(3, 6);
2263 pathB.cubicTo(0, 5, 6, 1, 3, 0);
2264 pathB.close();
2265 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2266}
2267
2268static void skpaaalgarve_org53(skiatest::Reporter* reporter, const char* filename) {
2269 SkPath path;
2270 path.setFillType(SkPath::kEvenOdd_FillType);
2271 path.moveTo(-1.24344979e-014f, 348);
2272 path.lineTo(258, 348);
2273 path.lineTo(258, 322);
2274 path.quadTo(258, 317.857849f, 255.072006f, 314.928009f);
2275 path.quadTo(252.142136f, 312, 248, 312);
2276 path.lineTo(1.77635684e-015f, 312);
2277 path.lineTo(-1.24344979e-014f, 348);
2278 path.close();
2279 SkPath pathB;
2280 pathB.setFillType(SkPath::kWinding_FillType);
2281 pathB.moveTo(0, 312);
2282 pathB.lineTo(258, 312);
2283 pathB.lineTo(258, 348);
2284 pathB.lineTo(0, 348);
2285 pathB.close();
2286 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2287}
2288
2289static void skpabcspark_ca103(skiatest::Reporter* reporter, const char* filename) {
2290 SkPath path;
2291 path.setFillType(SkPath::kEvenOdd_FillType);
2292 path.moveTo(1.99840144e-015f, 494);
2293 path.lineTo(97, 494);
2294 path.quadTo(100.313705f, 494, 102.6576f, 491.657593f);
2295 path.quadTo(105, 489.313721f, 105, 486);
2296 path.lineTo(105, 425);
2297 path.quadTo(105, 421.686279f, 102.6576f, 419.342407f);
2298 path.quadTo(100.313705f, 417, 97, 417);
2299 path.lineTo(2.22044605e-016f, 417);
2300 path.lineTo(1.99840144e-015f, 494);
2301 path.close();
2302 SkPath pathB;
2303 pathB.setFillType(SkPath::kWinding_FillType);
2304 pathB.moveTo(0, 417);
2305 pathB.lineTo(105, 417);
2306 pathB.lineTo(105, 494);
2307 pathB.lineTo(0, 494);
2308 pathB.close();
2309 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2310}
2311
2312static void skpacesoftech_com47(skiatest::Reporter* reporter, const char* filename) {
2313 SkPath path;
2314 path.setFillType(SkPath::kEvenOdd_FillType);
2315 path.moveTo(670.537415f, 285);
2316 path.lineTo(670.387451f, 285);
2317 path.lineTo(596.315186f, 314.850708f);
2318 path.lineTo(626.19696f, 389);
2319 path.lineTo(626.346863f, 389);
2320 path.lineTo(700.419189f, 359.149261f);
2321 path.lineTo(670.537415f, 285);
2322 path.close();
2323 SkPath pathB;
2324 pathB.setFillType(SkPath::kWinding_FillType);
2325 pathB.moveTo(663.318542f, 374.100616f);
2326 pathB.quadTo(647.950989f, 380.293671f, 632.705322f, 373.806305f);
2327 pathB.quadTo(617.459595f, 367.318909f, 611.266541f, 351.951355f);
2328 pathB.quadTo(605.073486f, 336.58374f, 611.560913f, 321.338074f);
2329 pathB.quadTo(618.048279f, 306.092407f, 633.415833f, 299.899353f);
2330 pathB.quadTo(648.783447f, 293.706299f, 664.029114f, 300.193665f);
2331 pathB.quadTo(679.27478f, 306.68103f, 685.467834f, 322.048645f);
2332 pathB.quadTo(691.660889f, 337.416199f, 685.173523f, 352.661896f);
2333 pathB.quadTo(678.686157f, 367.907562f, 663.318542f, 374.100616f);
2334 pathB.close();
2335 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2336}
2337
2338static void skpact_com43(skiatest::Reporter* reporter, const char* filename) {
2339 SkPath path;
2340 path.setFillType(SkPath::kEvenOdd_FillType);
2341 path.moveTo(1.45716772e-016f, 924.336121f);
2342 path.lineTo(-1.11022302e-016f, 920);
2343 path.lineTo(6, 920);
2344 path.lineTo(6, 926);
2345 path.lineTo(1.66389287f, 926);
2346 path.quadTo(1.18842196f, 925.674561f, 0.756800175f, 925.243225f);
2347 path.quadTo(0.325406998f, 924.811523f, 1.45716772e-016f, 924.336121f);
2348 path.close();
2349 path.moveTo(1, 921);
2350 path.lineTo(5, 921);
2351 path.lineTo(5, 925);
2352 path.cubicTo(2.79086018f, 925, 1, 923.209167f, 1, 921);
2353 path.close();
2354 SkPath pathB;
2355 pathB.setFillType(SkPath::kWinding_FillType);
2356 pathB.moveTo(-1, 920);
2357 pathB.lineTo(0, 920);
2358 pathB.lineTo(3, 927);
2359 pathB.lineTo(-1, 927);
2360 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2361}
2362
2363static void skpadbox_lt8(skiatest::Reporter* reporter, const char* filename) {
2364 SkPath path;
2365 path.setFillType(SkPath::kEvenOdd_FillType);
2366 path.moveTo(320.097229f, 628.573669f);
2367 path.lineTo(610.227173f, 85.7786865f);
2368 path.lineTo(946.652588f, 265.601807f);
2369 path.lineTo(656.522644f, 808.39679f);
2370 path.lineTo(320.097229f, 628.573669f);
2371 path.close();
2372 SkPath pathB;
2373 pathB.setFillType(SkPath::kInverseWinding_FillType);
2374 pathB.moveTo(333.866608f, 623.496155f);
2375 pathB.lineTo(613.368042f, 100.585754f);
2376 pathB.cubicTo(613.685303f, 99.9921265f, 614.423767f, 99.7681885f, 615.017395f, 100.085449f);
2377 pathB.lineTo(932.633057f, 269.854553f);
2378 pathB.cubicTo(933.226685f, 270.171875f, 933.450623f, 270.910278f, 933.133301f, 271.503906f);
2379 pathB.lineTo(653.631897f, 794.414307f);
2380 pathB.cubicTo(653.314636f, 795.007935f, 652.576172f, 795.231934f, 651.982544f, 794.914612f);
2381 pathB.lineTo(334.366943f, 625.145508f);
2382 pathB.cubicTo(333.773315f, 624.828247f, 333.549286f, 624.089783f, 333.866608f, 623.496155f);
2383 pathB.close();
2384 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2385}
2386
2387static void skpadindex_de4(skiatest::Reporter* reporter, const char* filename) {
2388 SkPath path;
2389 path.setFillType(SkPath::kEvenOdd_FillType);
2390 path.moveTo(0, 926);
2391 path.lineTo(0, 0);
2392 path.lineTo(1280, 0);
2393 path.lineTo(1280, 926);
2394 path.lineTo(0, 926);
2395 path.close();
2396 SkPath pathB;
2397 pathB.setFillType(SkPath::kWinding_FillType);
2398 pathB.moveTo(0, 312);
2399 pathB.lineTo(8.20486257e-015f, 178);
2400 pathB.lineTo(49, 178);
2401 pathB.lineTo(49, 312);
2402 pathB.close();
2403 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2404}
2405
2406static void skpadithya_putr4_blogspot_com551(skiatest::Reporter* reporter, const char* filename) {
2407 SkPath path;
2408 path.setFillType(SkPath::kEvenOdd_FillType);
2409 path.moveTo(205.605804f, 142.334625f);
2410 path.lineTo(254.665359f, 85.6058044f);
2411 path.lineTo(311.394196f, 134.665359f);
2412 path.lineTo(262.334625f, 191.39418f);
2413 path.lineTo(205.605804f, 142.334625f);
2414 path.close();
2415 SkPath pathB;
2416 pathB.setFillType(SkPath::kWinding_FillType);
2417 pathB.moveTo(283.407959f, 110.462646f);
2418 pathB.cubicTo(298.864319f, 123.829437f, 300.558258f, 147.195221f, 287.191467f, 162.651581f);
2419 pathB.lineTo(286.537354f, 163.407959f);
2420 pathB.cubicTo(273.170563f, 178.864334f, 249.804779f, 180.558258f, 234.348419f, 167.191467f);
2421 pathB.lineTo(233.592026f, 166.537338f);
2422 pathB.cubicTo(218.135666f, 153.170547f, 216.441727f, 129.804779f, 229.808517f, 114.348412f);
2423 pathB.lineTo(230.462646f, 113.592026f);
2424 pathB.cubicTo(243.829437f, 98.1356659f, 267.195221f, 96.4417267f, 282.651581f, 109.808517f);
2425 pathB.lineTo(283.407959f, 110.462646f);
2426 pathB.close();
2427 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2428}
2429
2430static void skpadspert_de11(skiatest::Reporter* reporter, const char* filename) {
2431 SkPath path;
2432 path.setFillType(SkPath::kEvenOdd_FillType);
2433 path.moveTo(-4.4408921e-016f, 682.5f);
2434 path.lineTo(30.5f, 682.5f);
2435 path.cubicTo(32.709137f, 682.5f, 34.5f, 680.709167f, 34.5f, 678.5f);
2436 path.lineTo(34.5f, 486.5f);
2437 path.cubicTo(34.5f, 484.290863f, 32.709137f, 482.5f, 30.5f, 482.5f);
2438 path.lineTo(0, 482.5f);
2439 path.lineTo(-4.4408921e-016f, 682.5f);
2440 path.close();
2441 SkPath pathB;
2442 pathB.setFillType(SkPath::kWinding_FillType);
2443 pathB.moveTo(0, 482);
2444 pathB.lineTo(35, 482);
2445 pathB.lineTo(35, 683);
2446 pathB.lineTo(0, 683);
2447 pathB.close();
2448 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2449}
2450
2451static void skpaiaigames_com870(skiatest::Reporter* reporter, const char* filename) {
2452 SkPath path;
2453 path.setFillType(SkPath::kEvenOdd_FillType);
2454 path.moveTo(324.071075f, 845.071045f);
2455 path.cubicTo(324.405151f, 844.737f, 324.715668f, 844.379395f, 325, 844.000977f);
2456 path.lineTo(325, 842.127197f);
2457 path.cubicTo(324.571411f, 842.956238f, 324.017761f, 843.710144f, 323.363953f, 844.363953f);
2458 path.lineTo(324.071075f, 845.071045f);
2459 path.close();
2460 path.moveTo(323.363953f, 714.636047f);
2461 path.lineTo(324.071075f, 713.928955f);
2462 path.cubicTo(324.405151f, 714.263f, 324.715668f, 714.620605f, 325, 714.999023f);
2463 path.lineTo(325, 716.872803f);
2464 path.cubicTo(324.571411f, 716.043762f, 324.017761f, 715.289856f, 323.363953f, 714.636047f);
2465 path.close();
2466 SkPath pathB;
2467 pathB.setFillType(SkPath::kWinding_FillType);
2468 pathB.moveTo(317, 711);
2469 pathB.cubicTo(322.522858f, 711, 327, 715.477173f, 327, 721);
2470 pathB.lineTo(327, 838);
2471 pathB.cubicTo(327, 843.522827f, 322.522858f, 848, 317, 848);
2472 pathB.lineTo(155, 848);
2473 pathB.cubicTo(149.477158f, 848, 145, 843.522827f, 145, 838);
2474 pathB.lineTo(145, 721);
2475 pathB.cubicTo(145, 715.477173f, 149.477158f, 711, 155, 711);
2476 pathB.lineTo(317, 711);
2477 pathB.close();
2478 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2479}
2480
2481static void cubicOp92i(skiatest::Reporter* reporter, const char* filename) {
2482 SkPath path, pathB;
2483 path.setFillType(SkPath::kWinding_FillType);
2484 path.moveTo(0, 1);
2485 path.cubicTo(2, 6, 4, 1, 5, 4);
2486 path.close();
2487 pathB.setFillType(SkPath::kWinding_FillType);
2488 pathB.moveTo(1, 4);
2489 pathB.cubicTo(4, 5, 1, 0, 6, 2);
2490 pathB.close();
2491 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2492}
2493
2494static void cubicOp93d(skiatest::Reporter* reporter, const char* filename) {
2495 SkPath path, pathB;
2496 path.setFillType(SkPath::kWinding_FillType);
2497 path.moveTo(0, 1);
2498 path.cubicTo(1, 6, 4, 1, 4, 3);
2499 path.close();
2500 pathB.setFillType(SkPath::kWinding_FillType);
2501 pathB.moveTo(1, 4);
2502 pathB.cubicTo(3, 4, 1, 0, 6, 1);
2503 pathB.close();
2504 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
2505}
2506
2507static void cubicOp94u(skiatest::Reporter* reporter, const char* filename) {
2508 SkPath path, pathB;
2509 path.setFillType(SkPath::kEvenOdd_FillType);
2510 path.moveTo(0, 3);
2511 path.cubicTo(2, 3, 5, 0, 5, 3);
2512 path.close();
2513 pathB.setFillType(SkPath::kEvenOdd_FillType);
2514 pathB.moveTo(0, 5);
2515 pathB.cubicTo(3, 5, 3, 0, 3, 2);
2516 pathB.close();
2517 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2518}
2519
2520static void skpadbox_lt15(skiatest::Reporter* reporter, const char* filename) {
2521 SkPath path;
2522 path.setFillType(SkPath::kEvenOdd_FillType);
2523 path.moveTo(333.292084f, 624.570984f);
2524 path.lineTo(614.229797f, 98.9735107f);
2525 path.lineTo(933.457764f, 269.604431f);
2526 path.lineTo(652.52002f, 795.201904f);
2527 path.lineTo(333.292084f, 624.570984f);
2528 path.close();
2529 SkPath pathB;
2530 pathB.setFillType(SkPath::kWinding_FillType);
2531 pathB.moveTo(613.368042f, 100.585754f);
2532 pathB.cubicTo(613.685303f, 99.9921265f, 614.423767f, 99.7681885f, 615.017395f, 100.085449f);
2533 pathB.lineTo(932.633057f, 269.854553f);
2534 pathB.cubicTo(933.226685f, 270.171875f, 933.450623f, 270.910278f, 933.133301f, 271.503906f);
2535 pathB.lineTo(653.631897f, 794.414307f);
2536 pathB.cubicTo(653.314636f, 795.007935f, 652.576172f, 795.231934f, 651.982544f, 794.914612f);
2537 pathB.lineTo(334.366943f, 625.145508f);
2538 pathB.cubicTo(333.773315f, 624.828247f, 333.549286f, 624.089783f, 333.866608f, 623.496155f);
2539 pathB.lineTo(613.368042f, 100.585754f);
2540 pathB.close();
2541 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2542}
2543
2544static void skpadoption_org196(skiatest::Reporter* reporter, const char* filename) {
2545 SkPath path;
2546 path.setFillType(SkPath::kEvenOdd_FillType);
2547 path.moveTo(802, 367);
2548 path.lineTo(802, 324);
2549 path.lineTo(956, 324);
2550 path.lineTo(956, 371);
2551 path.quadTo(956, 373.071075f, 954.536011f, 374.536011f);
2552 path.quadTo(953.071045f, 376, 951, 376);
2553 path.lineTo(811, 376);
2554 path.cubicTo(806.029419f, 376, 802, 371.970551f, 802, 367);
2555 path.close();
2556 SkPath pathB;
2557 pathB.setFillType(SkPath::kInverseWinding_FillType);
2558 pathB.moveTo(803, 326);
2559 pathB.lineTo(955, 326);
2560 pathB.lineTo(955, 370);
2561 pathB.cubicTo(955, 372.761414f, 952.761414f, 375, 950, 375);
2562 pathB.lineTo(808, 375);
2563 pathB.cubicTo(805.238586f, 375, 803, 372.761414f, 803, 370);
2564 pathB.lineTo(803, 326);
2565 pathB.close();
2566 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2567}
2568
2569static void skpadspert_net23(skiatest::Reporter* reporter, const char* filename) {
2570 SkPath path;
2571 path.setFillType(SkPath::kEvenOdd_FillType);
2572 path.moveTo(-2.220446e-018f, 483.5f);
2573 path.lineTo(0, 482.5f);
2574 path.lineTo(30.5f, 482.5f);
2575 path.cubicTo(32.709137f, 482.5f, 34.5f, 484.290863f, 34.5f, 486.5f);
2576 path.lineTo(34.5f, 678.5f);
2577 path.cubicTo(34.5f, 680.709167f, 32.709137f, 682.5f, 30.5f, 682.5f);
2578 path.lineTo(-4.4408921e-016f, 682.5f);
2579 path.lineTo(-4.41868766e-016f, 681.5f);
2580 path.lineTo(30.5f, 681.5f);
2581 path.cubicTo(32.1568565f, 681.5f, 33.5f, 680.15686f, 33.5f, 678.5f);
2582 path.lineTo(33.5f, 486.5f);
2583 path.cubicTo(33.5f, 484.84314f, 32.1568565f, 483.5f, 30.5f, 483.5f);
2584 path.lineTo(-2.220446e-018f, 483.5f);
2585 path.close();
2586 SkPath pathB;
2587 pathB.setFillType(SkPath::kWinding_FillType);
2588 pathB.moveTo(0, 482);
2589 pathB.lineTo(35, 482);
2590 pathB.lineTo(35, 683);
2591 pathB.lineTo(0, 683);
2592 pathB.close();
2593 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2594}
2595
2596static void skpadventistmission_org572(skiatest::Reporter* reporter, const char* filename) {
2597 SkPath path;
2598 path.setFillType(SkPath::kEvenOdd_FillType);
2599 path.moveTo(1182.00037f, 926);
2600 path.cubicTo(1181.08813f, 924.785583f, 1179.63586f, 924, 1178, 924);
2601 path.lineTo(938, 924);
2602 path.cubicTo(936.364197f, 924, 934.911865f, 924.785583f, 933.999634f, 926);
2603 path.lineTo(1182.00037f, 926);
2604 path.close();
2605 SkPath pathB;
2606 pathB.setFillType(SkPath::kWinding_FillType);
2607 pathB.moveTo(934, 924);
2608 pathB.lineTo(1182, 924);
2609 pathB.lineTo(1182, 926);
2610 pathB.lineTo(934, 926);
2611 pathB.close();
2612 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2613}
2614
2615static void skpagentxsites_com55(skiatest::Reporter* reporter, const char* filename) {
2616 SkPath path;
2617 path.setFillType(SkPath::kEvenOdd_FillType);
2618 path.moveTo(925, 27);
2619 path.cubicTo(924.447693f, 27, 924, 27.4477158f, 924, 28);
2620 path.lineTo(924, 55);
2621 path.cubicTo(924, 55.5522842f, 924.447693f, 56, 925, 56);
2622 path.lineTo(1103, 56);
2623 path.cubicTo(1103.55225f, 56, 1104, 55.5522842f, 1104, 55);
2624 path.lineTo(1104, 28);
2625 path.cubicTo(1104, 27.4477158f, 1103.55225f, 27, 1103, 27);
2626 path.lineTo(925, 27);
2627 path.close();
2628 SkPath pathB;
2629 pathB.setFillType(SkPath::kWinding_FillType);
2630 pathB.moveTo(1103, 27);
2631 pathB.cubicTo(1104.10461f, 27, 1105, 27.8954315f, 1105, 29);
2632 pathB.lineTo(1105, 54);
2633 pathB.cubicTo(1105, 55.1045685f, 1104.10461f, 56, 1103, 56);
2634 pathB.lineTo(926, 56);
2635 pathB.cubicTo(924.895447f, 56, 924, 55.1045685f, 924, 54);
2636 pathB.lineTo(924, 29);
2637 pathB.cubicTo(924, 27.8954315f, 924.895447f, 27, 926, 27);
2638 pathB.lineTo(1103, 27);
2639 pathB.close();
2640 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2641}
2642
2643static void skpbakosoft_com10(skiatest::Reporter* reporter, const char* filename) {
2644 SkPath path;
2645 path.setFillType(SkPath::kEvenOdd_FillType);
2646 path.moveTo(190, 170);
2647 path.cubicTo(178.9543f, 170, 170, 178.9543f, 170, 190);
2648 path.cubicTo(170, 201.0457f, 178.9543f, 210, 190, 210);
2649 path.lineTo(370, 210);
2650 path.cubicTo(381.045685f, 210, 390, 201.0457f, 390, 190);
2651 path.cubicTo(390, 178.9543f, 381.045685f, 170, 370, 170);
2652 path.lineTo(190, 170);
2653 path.close();
2654 SkPath pathB;
2655 pathB.setFillType(SkPath::kWinding_FillType);
2656 pathB.moveTo(210, 190);
2657 pathB.quadTo(210, 198.284271f, 204.142136f, 204.142136f);
2658 pathB.quadTo(198.284271f, 210, 190, 210);
2659 pathB.quadTo(181.715729f, 210, 175.857864f, 204.142136f);
2660 pathB.quadTo(170, 198.284271f, 170, 190);
2661 pathB.quadTo(170, 181.715729f, 175.857864f, 175.857864f);
2662 pathB.quadTo(181.715729f, 170, 190, 170);
2663 pathB.quadTo(198.284271f, 170, 204.142136f, 175.857864f);
2664 pathB.quadTo(210, 181.715729f, 210, 190);
2665 pathB.close();
2666 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2667}
2668
2669static void skpbambootheme_com12(skiatest::Reporter* reporter, const char* filename) {
2670 SkPath path;
2671 path.setFillType(SkPath::kEvenOdd_FillType);
2672 path.moveTo(47.8780937f, 58);
2673 path.lineTo(0, 58);
2674 path.lineTo(-8.65973959e-015f, 96.9914017f);
2675 path.quadTo(20.0654926f, 96.6451874f, 34.3553391f, 82.3553391f);
2676 path.quadTo(44.9466133f, 71.764061f, 47.8780937f, 58);
2677 path.close();
2678 SkPath pathB;
2679 pathB.setFillType(SkPath::kEvenOdd_FillType);
2680 pathB.moveTo(-1, -3);
2681 pathB.lineTo(-1, -3);
2682 pathB.cubicTo(26.6142502f, -3, 49, 19.3857498f, 49, 47);
2683 pathB.lineTo(49, 47);
2684 pathB.cubicTo(49, 74.6142502f, 26.6142502f, 97, -1, 97);
2685 pathB.lineTo(-1, 97);
2686 pathB.cubicTo(-28.6142502f, 97, -51, 74.6142502f, -51, 47);
2687 pathB.lineTo(-51, 47);
2688 pathB.cubicTo(-51, 19.3857498f, -28.6142502f, -3, -1, -3);
2689 pathB.close();
2690 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2691}
2692
2693static void skpakmmos_ru100(skiatest::Reporter* reporter, const char* filename) {
2694 SkPath path;
2695 path.setFillType(SkPath::kEvenOdd_FillType);
2696 path.moveTo(693.000488f, 926);
2697 path.cubicTo(692.164734f, 925.37207f, 691.125793f, 925, 690, 925);
2698 path.lineTo(578, 925);
2699 path.cubicTo(576.874207f, 925, 575.835266f, 925.37207f, 574.999512f, 926);
2700 path.lineTo(693.000488f, 926);
2701 path.close();
2702 SkPath pathB;
2703 pathB.setFillType(SkPath::kWinding_FillType);
2704 pathB.moveTo(575, 925);
2705 pathB.lineTo(693, 925);
2706 pathB.lineTo(693, 926);
2707 pathB.lineTo(575, 926);
2708 pathB.close();
2709 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2710}
2711
2712static void skpcarpetplanet_ru22(skiatest::Reporter* reporter, const char* filename) {
2713 SkPath path;
2714 path.setFillType(SkPath::kEvenOdd_FillType);
2715 path.moveTo(195, 785);
2716 path.cubicTo(124.307556f, 785, 67, 841.859863f, 67, 912);
2717 path.lineTo(67, 913);
2718 path.cubicTo(67, 917.388916f, 67.2243805f, 921.725769f, 67.662384f, 926);
2719 path.lineTo(322, 926);
2720 path.lineTo(322, 896.048035f);
2721 path.cubicTo(314.09201f, 833.437622f, 260.247131f, 785, 195, 785);
2722 path.close();
2723 SkPath pathB;
2724 pathB.setFillType(SkPath::kWinding_FillType);
2725 pathB.moveTo(195, 785);
2726 pathB.cubicTo(265.140167f, 785, 322, 842.307556f, 322, 913);
2727 pathB.cubicTo(322, 983.692444f, 265.140167f, 1041, 195, 1041);
2728 pathB.lineTo(194, 1041);
2729 pathB.cubicTo(123.85984f, 1041, 67, 983.692444f, 67, 913);
2730 pathB.cubicTo(67, 842.307556f, 123.85984f, 785, 194, 785);
2731 pathB.lineTo(195, 785);
2732 pathB.close();
2733 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2734}
2735
2736static void skpcarrot_is24(skiatest::Reporter* reporter, const char* filename) {
2737 SkPath path;
2738 path.setFillType(SkPath::kEvenOdd_FillType);
2739 path.moveTo(945, 597);
2740 path.quadTo(913.93396f, 597, 891.96698f, 618.96698f);
2741 path.quadTo(870, 640.93396f, 870, 672);
2742 path.quadTo(870, 703.06604f, 891.96698f, 725.03302f);
2743 path.quadTo(913.93396f, 747, 945, 747);
2744 path.quadTo(976.06604f, 747, 998.03302f, 725.03302f);
2745 path.quadTo(1020, 703.06604f, 1020, 672);
2746 path.quadTo(1020, 640.93396f, 998.03302f, 618.96698f);
2747 path.quadTo(976.06604f, 597, 945, 597);
2748 path.close();
2749 SkPath pathB;
2750 pathB.setFillType(SkPath::kWinding_FillType);
2751 pathB.moveTo(945.080994f, 597.161987f);
2752 pathB.cubicTo(903.659973f, 597.161987f, 870.080994f, 630.73999f, 870.080994f, 672.161987f);
2753 pathB.cubicTo(870.080994f, 676.096008f, 870.387024f, 679.957031f, 870.971008f, 683.726013f);
2754 pathB.cubicTo(876.53302f, 719.656006f, 907.593994f, 747.161987f, 945.080994f, 747.161987f);
2755 pathB.cubicTo(982.567993f, 747.161987f, 1013.62903f, 719.656006f, 1019.19104f, 683.726013f);
2756 pathB.cubicTo(1019.77502f, 679.955017f, 1020.08099f, 676.094971f, 1020.08099f, 672.161987f);
2757 pathB.cubicTo(1020.08002f, 630.73999f, 986.502014f, 597.161987f, 945.080994f, 597.161987f);
2758 pathB.close();
2759 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2760}
2761
2762static void skpbangalorenest_com4(skiatest::Reporter* reporter, const char* filename) {
2763 SkPath path;
2764 path.setFillType(SkPath::kEvenOdd_FillType);
2765 path.moveTo(0, 926);
2766 path.lineTo(0, 0);
2767 path.lineTo(1265, 0);
2768 path.lineTo(1265, 926);
2769 path.lineTo(0, 926);
2770 path.close();
2771 SkPath pathB;
2772 pathB.setFillType(SkPath::kWinding_FillType);
2773 pathB.moveTo(0, 290);
2774 pathB.lineTo(-2.64514972e-014f, 146);
2775 pathB.lineTo(30, 146);
2776 pathB.lineTo(30, 290);
2777 pathB.close();
2778 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2779}
2780
2781static void skpbenzoteh_ru152(skiatest::Reporter* reporter, const char* filename) {
2782 SkPath path;
2783 path.setFillType(SkPath::kEvenOdd_FillType);
2784 path.moveTo(883, 23);
2785 path.lineTo(883, 0);
2786 path.lineTo(1122.5f, 0);
2787 path.lineTo(1122.5f, 25.2136822f);
2788 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2789 path.quadTo(1120.07104f, 28, 1118, 28);
2790 path.lineTo(888, 28);
2791 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2792 path.quadTo(883, 25.0710678f, 883, 23);
2793 path.close();
2794 SkPath pathB;
2795 pathB.setFillType(SkPath::kWinding_FillType);
2796 pathB.moveTo(883, 0);
2797 pathB.lineTo(1123, 0);
2798 pathB.lineTo(1123, 23);
2799 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2800 pathB.quadTo(1120.07104f, 28, 1118, 28);
2801 pathB.lineTo(888, 28);
2802 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2803 pathB.quadTo(883, 25.0710678f, 883, 23);
2804 pathB.close();
2805 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2806}
2807
2808static void skpbestred_ru37(skiatest::Reporter* reporter, const char* filename) {
2809 SkPath path;
2810 path.setFillType(SkPath::kEvenOdd_FillType);
2811 path.moveTo(883, 23);
2812 path.lineTo(883, 0);
2813 path.lineTo(1122.5f, 0);
2814 path.lineTo(1122.5f, 25.2136822f);
2815 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2816 path.quadTo(1120.07104f, 28, 1118, 28);
2817 path.lineTo(888, 28);
2818 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2819 path.quadTo(883, 25.0710678f, 883, 23);
2820 path.close();
2821 SkPath pathB;
2822 pathB.setFillType(SkPath::kWinding_FillType);
2823 pathB.moveTo(883, 0);
2824 pathB.lineTo(1123, 0);
2825 pathB.lineTo(1123, 23);
2826 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2827 pathB.quadTo(1120.07104f, 28, 1118, 28);
2828 pathB.lineTo(888, 28);
2829 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2830 pathB.quadTo(883, 25.0710678f, 883, 23);
2831 pathB.close();
2832 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2833}
2834
2835static void skpbingoentertainment_net189(skiatest::Reporter* reporter, const char* filename) {
2836 SkPath path;
2837 path.setFillType(SkPath::kEvenOdd_FillType);
2838 path.moveTo(896, 745.38678f);
2839 path.lineTo(896, 873.38678f);
2840 path.lineTo(922.567993f, 876.683716f);
2841 path.lineTo(922.567993f, 748.683716f);
2842 path.lineTo(896, 745.38678f);
2843 path.close();
2844 SkPath pathB;
2845 pathB.setFillType(SkPath::kWinding_FillType);
2846 pathB.moveTo(899.200928f, 745.783997f);
2847 pathB.cubicTo(897.119385f, 745.525696f, 895.432007f, 752.031982f, 895.432007f, 760.316284f);
2848 pathB.lineTo(895.432007f, 858.316284f);
2849 pathB.cubicTo(895.432007f, 866.600586f, 897.119385f, 873.525696f, 899.200928f, 873.783997f);
2850 pathB.lineTo(918.799133f, 876.216003f);
2851 pathB.cubicTo(920.880615f, 876.474304f, 922.567993f, 869.968018f, 922.567993f, 861.683716f);
2852 pathB.lineTo(922.567993f, 763.683716f);
2853 pathB.cubicTo(922.567993f, 755.399414f, 920.880615f, 748.474304f, 918.799133f, 748.216003f);
2854 pathB.lineTo(899.200928f, 745.783997f);
2855 pathB.close();
2856 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2857}
2858
2859static void skpcarrefour_ro62(skiatest::Reporter* reporter, const char* filename) {
2860 SkPath path;
2861 path.setFillType(SkPath::kEvenOdd_FillType);
2862 path.moveTo(1104, 453);
2863 path.lineTo(399, 453);
2864 path.lineTo(399, 657);
2865 path.cubicTo(399, 661.970581f, 403.029449f, 666, 408, 666);
2866 path.lineTo(1095, 666);
2867 path.cubicTo(1099.97058f, 666, 1104, 661.970581f, 1104, 657);
2868 path.lineTo(1104, 453);
2869 path.close();
2870 SkPath pathB;
2871 pathB.setFillType(SkPath::kInverseWinding_FillType);
2872 pathB.moveTo(400, 453);
2873 pathB.lineTo(1103, 453);
2874 pathB.lineTo(1103, 666);
2875 pathB.lineTo(406, 666);
2876 pathB.cubicTo(402.686279f, 666, 400, 663.313721f, 400, 660);
2877 pathB.lineTo(400, 453);
2878 pathB.close();
2879 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2880}
2881
2882static void skpcaffelavazzait_com_ua21(skiatest::Reporter* reporter, const char* filename) {
2883 SkPath path;
2884 path.setFillType(SkPath::kEvenOdd_FillType);
2885 path.moveTo(883, 23);
2886 path.lineTo(883, 0);
2887 path.lineTo(1122.5f, 0);
2888 path.lineTo(1122.5f, 25.2136822f);
2889 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2890 path.quadTo(1120.07104f, 28, 1118, 28);
2891 path.lineTo(888, 28);
2892 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2893 path.quadTo(883, 25.0710678f, 883, 23);
2894 path.close();
2895 SkPath pathB;
2896 pathB.setFillType(SkPath::kWinding_FillType);
2897 pathB.moveTo(883, 0);
2898 pathB.lineTo(1123, 0);
2899 pathB.lineTo(1123, 23);
2900 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2901 pathB.quadTo(1120.07104f, 28, 1118, 28);
2902 pathB.lineTo(888, 28);
2903 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2904 pathB.quadTo(883, 25.0710678f, 883, 23);
2905 pathB.close();
2906 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2907}
2908
2909static void skpcamcorder_kz21(skiatest::Reporter* reporter, const char* filename) {
2910 SkPath path;
2911 path.setFillType(SkPath::kEvenOdd_FillType);
2912 path.moveTo(883, 23);
2913 path.lineTo(883, 0);
2914 path.lineTo(1122.5f, 0);
2915 path.lineTo(1122.5f, 25.2136822f);
2916 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2917 path.quadTo(1120.07104f, 28, 1118, 28);
2918 path.lineTo(888, 28);
2919 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2920 path.quadTo(883, 25.0710678f, 883, 23);
2921 path.close();
2922 SkPath pathB;
2923 pathB.setFillType(SkPath::kWinding_FillType);
2924 pathB.moveTo(883, 0);
2925 pathB.lineTo(1123, 0);
2926 pathB.lineTo(1123, 23);
2927 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2928 pathB.quadTo(1120.07104f, 28, 1118, 28);
2929 pathB.lineTo(888, 28);
2930 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2931 pathB.quadTo(883, 25.0710678f, 883, 23);
2932 pathB.close();
2933 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2934}
2935
2936static void skpcavablar_net563(skiatest::Reporter* reporter, const char* filename) {
2937 SkPath path;
2938 path.setFillType(SkPath::kEvenOdd_FillType);
2939 path.moveTo(160.000488f, 918);
2940 path.cubicTo(159.164749f, 917.37207f, 158.125824f, 917, 157, 917);
2941 path.lineTo(94, 917);
2942 path.cubicTo(92.874176f, 917, 91.8352661f, 917.37207f, 90.9995193f, 918);
2943 path.lineTo(160.000488f, 918);
2944 path.close();
2945 SkPath pathB;
2946 pathB.setFillType(SkPath::kWinding_FillType);
2947 pathB.moveTo(91, 917);
2948 pathB.lineTo(160, 917);
2949 pathB.lineTo(160, 918);
2950 pathB.lineTo(91, 918);
2951 pathB.close();
2952 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2953}
2954
2955static void skpinsomnia_gr72(skiatest::Reporter* reporter, const char* filename) {
2956 SkPath path;
2957 path.setFillType(SkPath::kEvenOdd_FillType);
2958 path.moveTo(1138, 231);
2959 path.lineTo(1137, 243.625748f);
2960 path.lineTo(1137, 926);
2961 path.lineTo(1139, 926);
2962 path.lineTo(1139, 231);
2963 path.lineTo(1138, 231);
2964 path.close();
2965 SkPath pathB;
2966 pathB.setFillType(SkPath::kWinding_FillType);
2967 pathB.moveTo(1139, 231);
2968 pathB.lineTo(1138, 231);
2969 pathB.lineTo(633, 6101);
2970 pathB.lineTo(1139, 6607);
2971 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
2972}
2973
2974static void cubicOp95u(skiatest::Reporter* reporter, const char* filename) {
2975 SkPath path, pathB;
2976 path.setFillType(SkPath::kEvenOdd_FillType);
2977 path.moveTo(0, 2);
2978 path.cubicTo(2, 3, 5, 1, 3, 2);
2979 path.close();
2980 pathB.setFillType(SkPath::kEvenOdd_FillType);
2981 pathB.moveTo(1, 5);
2982 pathB.cubicTo(2, 3, 2, 0, 3, 2);
2983 pathB.close();
2984 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
2985}
2986
2987static void cubicOp96d(skiatest::Reporter* reporter, const char* filename) {
2988 SkPath path, pathB;
2989 path.setFillType(SkPath::kEvenOdd_FillType);
2990 path.moveTo(1, 6);
2991 path.cubicTo(0, 3, 6, 3, 5, 0);
2992 path.close();
2993 pathB.setFillType(SkPath::kEvenOdd_FillType);
2994 pathB.moveTo(3, 6);
2995 pathB.cubicTo(0, 5, 6, 1, 3, 0);
2996 pathB.close();
2997 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
2998}
2999
3000static void cubicOp97x(skiatest::Reporter* reporter, const char* filename) {
3001 SkPath path, pathB;
3002 path.setFillType(SkPath::kEvenOdd_FillType);
3003 path.moveTo(0, 2);
3004 path.cubicTo(0, 6, 2, 1, 2, 1);
3005 path.close();
3006 pathB.setFillType(SkPath::kEvenOdd_FillType);
3007 pathB.moveTo(1, 2);
3008 pathB.cubicTo(1, 2, 2, 0, 6, 0);
3009 pathB.close();
3010 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
3011}
3012
3013static void cubicOp98x(skiatest::Reporter* reporter, const char* filename) {
3014 SkPath path, pathB;
3015 path.setFillType(SkPath::kEvenOdd_FillType);
3016 path.moveTo(0, 3);
3017 path.cubicTo(3, 6, 4, 1, 6, 3);
3018 path.close();
3019 pathB.setFillType(SkPath::kEvenOdd_FillType);
3020 pathB.moveTo(1, 4);
3021 pathB.cubicTo(3, 6, 3, 0, 6, 3);
3022 pathB.close();
3023 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
3024}
3025
3026static void cubicOp99(skiatest::Reporter* reporter, const char* filename) {
3027 SkPath path, pathB;
3028 path.setFillType(SkPath::kWinding_FillType);
3029 path.moveTo(3,6);
3030 path.cubicTo(0,3, 6,5, 5,4);
3031 path.close();
3032 pathB.setFillType(SkPath::kWinding_FillType);
3033 pathB.moveTo(5,6);
3034 pathB.cubicTo(4,5, 6,3, 3,0);
3035 pathB.close();
3036 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3037}
3038
3039static void cubicOp100(skiatest::Reporter* reporter, const char* filename) {
3040 SkPath path, pathB;
3041 path.setFillType(SkPath::kWinding_FillType);
3042 path.moveTo(0,1);
3043 path.cubicTo(0,2, 2,1, 4,2);
3044 path.close();
3045 pathB.setFillType(SkPath::kWinding_FillType);
3046 pathB.moveTo(1,2);
3047 pathB.cubicTo(2,4, 1,0, 2,0);
3048 pathB.close();
3049 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3050}
3051
3052static void cubicOp101(skiatest::Reporter* reporter, const char* filename) {
3053 SkPath path, pathB;
3054 path.setFillType(SkPath::kWinding_FillType);
3055 path.moveTo(0, 1);
3056 path.cubicTo(2, 3, 2, 1, 5, 3);
3057 path.close();
3058 pathB.setFillType(SkPath::kWinding_FillType);
3059 pathB.moveTo(1, 2);
3060 pathB.cubicTo(3, 5, 1, 0, 3, 2);
3061 pathB.close();
3062 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3063}
3064
3065static void cubicOp102(skiatest::Reporter* reporter, const char* filename) {
3066 SkPath path, pathB;
3067 path.setFillType(SkPath::kWinding_FillType);
3068 path.moveTo(0,1);
3069 path.cubicTo(1,2, 1,0, 3,0);
3070 path.close();
3071 pathB.setFillType(SkPath::kWinding_FillType);
3072 pathB.moveTo(0,1);
3073 pathB.cubicTo(0,3, 1,0, 2,1);
3074 pathB.close();
3075 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3076}
3077
3078static void cubicOp103(skiatest::Reporter* reporter, const char* filename) {
3079 SkPath path, pathB;
3080 path.setFillType(SkPath::kWinding_FillType);
3081 path.moveTo(0,1);
3082 path.cubicTo(1,5, 2,0, 2,1);
3083 path.close();
3084 pathB.setFillType(SkPath::kWinding_FillType);
3085 pathB.moveTo(0,2);
3086 pathB.cubicTo(1,2, 1,0, 5,1);
3087 pathB.close();
3088 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3089}
3090
3091static void cubicOp104(skiatest::Reporter* reporter, const char* filename) {
3092 SkPath path, pathB;
3093 path.setFillType(SkPath::kWinding_FillType);
3094 path.moveTo(0,1);
3095 path.cubicTo(0,6, 4,0, 6,1);
3096 path.close();
3097 pathB.setFillType(SkPath::kWinding_FillType);
3098 pathB.moveTo(0,4);
3099 pathB.cubicTo(1,6, 1,0, 6,0);
3100 pathB.close();
3101 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3102}
3103
3104static void cubicOp105(skiatest::Reporter* reporter, const char* filename) {
3105 SkPath path, pathB;
3106 path.setFillType(SkPath::kWinding_FillType);
3107 path.moveTo(0,1);
3108 path.cubicTo(0,4, 6,5, 2,0);
3109 path.close();
3110 pathB.setFillType(SkPath::kWinding_FillType);
3111 pathB.moveTo(5,6);
3112 pathB.cubicTo(0,2, 1,0, 4,0);
3113 pathB.close();
3114 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3115}
3116
3117static void cubicOp106(skiatest::Reporter* reporter, const char* filename) {
3118 SkPath path, pathB;
3119 path.setFillType(SkPath::kWinding_FillType);
3120 path.moveTo(0, 1);
3121 path.cubicTo(4, 6, 2, 1, 2, 0);
3122 path.close();
3123 pathB.setFillType(SkPath::kWinding_FillType);
3124 pathB.moveTo(1, 2);
3125 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3126 pathB.close();
3127 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3128}
3129
3130static void cubicOp107(skiatest::Reporter* reporter, const char* filename) {
3131 SkPath path, pathB;
3132 path.setFillType(SkPath::kWinding_FillType);
3133 path.moveTo(0, 1);
3134 path.cubicTo(4, 6, 2, 1, 2, 0);
3135 path.close();
3136 pathB.setFillType(SkPath::kWinding_FillType);
3137 pathB.moveTo(1, 2);
3138 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3139 pathB.close();
3140 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3141}
3142
3143static void cubicOp108(skiatest::Reporter* reporter, const char* filename) {
3144 SkPath path, pathB;
3145 path.setFillType(SkPath::kWinding_FillType);
3146 path.moveTo(0, 1);
3147 path.cubicTo(4, 6, 2, 1, 2, 0);
3148 path.close();
3149 pathB.setFillType(SkPath::kWinding_FillType);
3150 pathB.moveTo(1, 2);
3151 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3152 pathB.close();
3153 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3154}
3155
3156static void cubicOp109(skiatest::Reporter* reporter, const char* filename) {
3157 SkPath path, pathB;
3158 path.setFillType(SkPath::kWinding_FillType);
3159 path.moveTo(0,1);
3160 path.cubicTo(4,5, 6,3, 5,4);
3161 path.close();
3162 pathB.setFillType(SkPath::kWinding_FillType);
3163 pathB.moveTo(3,6);
3164 pathB.cubicTo(4,5, 1,0, 5,4);
3165 pathB.close();
3166 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3167}
3168
3169static void cubicOp110(skiatest::Reporter* reporter, const char* filename) {
3170 SkPath path, pathB;
3171 path.setFillType(SkPath::kEvenOdd_FillType);
3172 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3173 path.addRect(0, 0, 4, 4, SkPath::kCW_Direction);
3174 pathB.setFillType(SkPath::kEvenOdd_FillType);
3175 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3176 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3177 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3178}
3179
3180static void cubicOp111(skiatest::Reporter* reporter, const char* filename) {
3181 SkPath path, pathB;
3182 path.setFillType(SkPath::kWinding_FillType);
3183 path.moveTo(1,4);
3184 path.cubicTo(0,5, 4,1, 3,1);
3185 path.close();
3186 pathB.setFillType(SkPath::kWinding_FillType);
3187 pathB.moveTo(1,4);
3188 pathB.cubicTo(1,3, 4,1, 5,0);
3189 pathB.close();
3190 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3191}
3192
3193static void xOp1u(skiatest::Reporter* reporter, const char* filename) {
3194 SkPath path, pathB;
3195 path.setFillType(SkPath::kEvenOdd_FillType);
3196 path.moveTo(1, 4);
3197 path.cubicTo(4, 5, 3, 2, 6, 3);
3198 path.close();
3199 pathB.setFillType(SkPath::kEvenOdd_FillType);
3200 pathB.moveTo(2, 3);
3201 pathB.cubicTo(3, 6, 4, 1, 5, 4);
3202 pathB.close();
3203 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3204}
3205
3206static void xOp1i(skiatest::Reporter* reporter, const char* filename) {
3207 SkPath path, pathB;
3208 path.setFillType(SkPath::kEvenOdd_FillType);
3209 path.moveTo(1, 4);
3210 path.cubicTo(1, 5, 6, 0, 5, 1);
3211 path.close();
3212 pathB.setFillType(SkPath::kEvenOdd_FillType);
3213 pathB.moveTo(0, 6);
3214 pathB.cubicTo(1, 5, 4, 1, 5, 1);
3215 pathB.close();
3216 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3217}
3218
3219static void xOp2i(skiatest::Reporter* reporter, const char* filename) {
3220 SkPath path, pathB;
3221 path.setFillType(SkPath::kEvenOdd_FillType);
3222 path.moveTo(1, 5);
3223 path.cubicTo(0, 4, 3, 2, 6, 1);
3224 path.close();
3225 pathB.setFillType(SkPath::kEvenOdd_FillType);
3226 pathB.moveTo(2, 3);
3227 pathB.cubicTo(1, 6, 5, 1, 4, 0);
3228 pathB.close();
3229 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3230}
3231
3232static void xOp3i(skiatest::Reporter* reporter, const char* filename) {
3233 SkPath path, pathB;
3234 path.setFillType(SkPath::kWinding_FillType);
3235 path.moveTo(1,4);
3236 path.cubicTo(0,5, 4,1, 3,1);
3237 path.close();
3238 pathB.setFillType(SkPath::kWinding_FillType);
3239 pathB.moveTo(1,4);
3240 pathB.cubicTo(1,3, 4,1, 5,0);
3241 pathB.close();
3242 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3243}
3244
3245static void findFirst1(skiatest::Reporter* reporter, const char* filename) {
3246 SkPath path, pathB;
3247 path.setFillType(SkPath::kWinding_FillType);
3248 path.moveTo(0,1);
3249 path.cubicTo(1,6, 5,0, 2,1);
3250 path.close();
3251 pathB.setFillType(SkPath::kWinding_FillType);
3252 pathB.moveTo(0,5);
3253 pathB.cubicTo(1,2, 1,0, 6,1);
3254 pathB.close();
3255 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3256}
3257
3258static void cubicOp112(skiatest::Reporter* reporter, const char* filename) {
3259 SkPath path, pathB;
3260 path.setFillType(SkPath::kWinding_FillType);
3261 path.moveTo(2,4);
3262 path.cubicTo(2,3, 6,4, 1,0);
3263 path.close();
3264 pathB.setFillType(SkPath::kWinding_FillType);
3265 pathB.moveTo(4,6);
3266 pathB.cubicTo(0,1, 4,2, 3,2);
3267 pathB.close();
3268 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3269}
3270
3271static void cubicOp113(skiatest::Reporter* reporter, const char* filename) {
3272 SkPath path, pathB;
3273 path.moveTo(2,4);
3274 path.cubicTo(3,5, 2.33333325f,4.33333349f, 3.83333325f,3.83333349f);
3275 path.close();
3276 pathB.moveTo(3,5);
3277 pathB.cubicTo(2.33333325f,4.33333349f, 3.83333325f,3.83333349f, 2,4);
3278 pathB.close();
3279 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3280}
3281
3282static void cubicOp114(skiatest::Reporter* reporter, const char* filename) {
3283 SkPath path, pathB;
3284 path.setFillType(SkPath::kWinding_FillType);
3285 path.moveTo(0, 1);
3286 path.cubicTo(1, 3, -1, 2, 3.5f, 1.33333337f);
3287 path.close();
3288 pathB.setFillType(SkPath::kWinding_FillType);
3289 pathB.moveTo(1, 3);
3290 pathB.cubicTo(-1, 2, 3.5f, 1.33333337f, 0, 1);
3291 pathB.close();
3292 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3293}
3294
3295static void cubicOp114asQuad(skiatest::Reporter* reporter, const char* filename) {
3296 SkPath path, pathB;
3297 path.setFillType(SkPath::kWinding_FillType);
3298 path.moveTo(0, 1);
3299 path.cubicTo(1, 3, -1, 2, 3.5f, 1.33333337f);
3300 path.close();
3301 pathB.setFillType(SkPath::kWinding_FillType);
3302 pathB.moveTo(1, 3);
3303 pathB.cubicTo(-1, 2, 3.5f, 1.33333337f, 0, 1);
3304 pathB.close();
3305 SkPath qPath, qPathB;
3306 CubicPathToQuads(path, &qPath);
3307 CubicPathToQuads(pathB, &qPathB);
3308 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
3309}
3310
3311static void quadOp10i(skiatest::Reporter* reporter, const char* filename) {
3312 SkPath path, pathB;
3313 path.moveTo(0, 0);
3314 path.quadTo(1, 8, 3, 5);
3315 path.lineTo(8, 1);
3316 path.close();
3317 pathB.moveTo(0, 0);
3318 pathB.quadTo(8, 1, 4, 8);
3319 pathB.close();
3320 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3321}
3322
3323static void kari1(skiatest::Reporter* reporter, const char* filename) {
3324 SkPath path1;
3325 path1.moveTo(39.9375, -5.8359375);
3326 path1.lineTo(40.625, -5.7890625);
3327 path1.lineTo(37.7109375, 1.3515625);
3328 path1.lineTo(37.203125, 0.9609375);
3329 path1.close();
3330
3331 SkPath path2;
3332 path2.moveTo(37.52734375f, -1.44140625f);
3333 path2.cubicTo(37.8736991882324f, -1.69921875f, 38.1640625f, -2.140625f, 38.3984375f, -2.765625f);
3334 path2.lineTo(38.640625f, -2.609375f);
3335 path2.cubicTo(38.53125f, -1.89583337306976f, 38.0664443969727f, -0.154893040657043f, 38.0664443969727f, -0.154893040657043f);
3336 path2.cubicTo(38.0664443969727f, -0.154893040657043f, 37.1809883117676f, -1.18359375f, 37.52734375, -1.44140625f);
3337 path2.close();
3338
3339 testPathOp(reporter, path1, path2, kDifference_SkPathOp, filename);
3340}
3341
3342static void issue2504(skiatest::Reporter* reporter, const char* filename) {
3343 SkPath path1;
3344 path1.moveTo(34.2421875, -5.976562976837158203125);
3345 path1.lineTo(35.453121185302734375, 0);
3346 path1.lineTo(31.9375, 0);
3347 path1.close();
3348
3349 SkPath path2;
3350 path2.moveTo(36.71843719482421875, 0.8886508941650390625);
3351 path2.cubicTo(36.71843719482421875, 0.8886508941650390625,
3352 35.123386383056640625, 0.554015457630157470703125,
3353 34.511409759521484375, -0.1152553558349609375);
3354 path2.cubicTo(33.899425506591796875, -0.7845261096954345703125,
3355 34.53484344482421875, -5.6777553558349609375,
3356 34.53484344482421875, -5.6777553558349609375);
3357 path2.close();
3358 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3359}
3360
3361static void issue2540(skiatest::Reporter* reporter, const char* filename) {
3362 SkPath path1;
3363 path1.moveTo(26.5054988861083984375, 85.73960113525390625);
3364 path1.cubicTo(84.19739532470703125, 17.77140045166015625, 16.93920135498046875, 101.86199951171875, 12.631000518798828125, 105.24700164794921875);
3365 path1.cubicTo(11.0819997787475585937500000, 106.46399688720703125, 11.5260000228881835937500000, 104.464996337890625, 11.5260000228881835937500000, 104.464996337890625);
3366 path1.lineTo(23.1654987335205078125, 89.72879791259765625);
3367 path1.cubicTo(23.1654987335205078125, 89.72879791259765625, -10.1713008880615234375, 119.9160003662109375, -17.1620006561279296875, 120.8249969482421875);
3368 path1.cubicTo(-19.1149997711181640625, 121.07900238037109375, -18.0380001068115234375, 119.79299163818359375, -18.0380001068115234375, 119.79299163818359375);
3369 path1.cubicTo(-18.0380001068115234375, 119.79299163818359375, 14.22100067138671875, 90.60700225830078125, 26.5054988861083984375, 85.73960113525390625);
3370 path1.close();
3371
3372 SkPath path2;
3373 path2.moveTo(-25.077999114990234375, 124.9120025634765625);
3374 path2.cubicTo(-25.077999114990234375, 124.9120025634765625, -25.9509983062744140625, 125.95400238037109375, -24.368999481201171875, 125.7480010986328125);
3375 path2.cubicTo(-16.06999969482421875, 124.66899871826171875, 1.2680000066757202148437500, 91.23999786376953125, 37.264003753662109375, 95.35400390625);
3376 path2.cubicTo(37.264003753662109375, 95.35400390625, 11.3710002899169921875, 83.7339935302734375, -25.077999114990234375, 124.9120025634765625);
3377 path2.close();
3378 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3379}
3380
3381static void rects1(skiatest::Reporter* reporter, const char* filename) {
3382 SkPath path, pathB;
3383 path.setFillType(SkPath::kEvenOdd_FillType);
3384 path.moveTo(0, 0);
3385 path.lineTo(1, 0);
3386 path.lineTo(1, 1);
3387 path.lineTo(0, 1);
3388 path.close();
3389 path.moveTo(0, 0);
3390 path.lineTo(6, 0);
3391 path.lineTo(6, 6);
3392 path.lineTo(0, 6);
3393 path.close();
3394 pathB.setFillType(SkPath::kEvenOdd_FillType);
3395 pathB.moveTo(0, 0);
3396 pathB.lineTo(1, 0);
3397 pathB.lineTo(1, 1);
3398 pathB.lineTo(0, 1);
3399 pathB.close();
3400 pathB.moveTo(0, 0);
3401 pathB.lineTo(2, 0);
3402 pathB.lineTo(2, 2);
3403 pathB.lineTo(0, 2);
3404 pathB.close();
3405 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3406}
3407
3408static void rects2(skiatest::Reporter* reporter, const char* filename) {
3409 SkPath path, pathB;
3410 path.setFillType(SkPath::kEvenOdd_FillType);
3411 path.moveTo(0, 0);
3412 path.lineTo(4, 0);
3413 path.lineTo(4, 4);
3414 path.lineTo(0, 4);
3415 path.close();
3416 path.moveTo(3, 3);
3417 path.lineTo(4, 3);
3418 path.lineTo(4, 4);
3419 path.lineTo(3, 4);
3420 path.close();
3421 pathB.setFillType(SkPath::kWinding_FillType);
3422 pathB.moveTo(3, 3);
3423 pathB.lineTo(6, 3);
3424 pathB.lineTo(6, 6);
3425 pathB.lineTo(3, 6);
3426 pathB.close();
3427 pathB.moveTo(3, 3);
3428 pathB.lineTo(4, 3);
3429 pathB.lineTo(4, 4);
3430 pathB.lineTo(3, 4);
3431 pathB.close();
3432 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3433}
3434
3435static void rects3(skiatest::Reporter* reporter, const char* filename) {
3436 SkPath path, pathB;
3437 path.setFillType(SkPath::kEvenOdd_FillType);
3438 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3439 path.addRect(0, 0, 4, 4, SkPath::kCW_Direction);
3440 pathB.setFillType(SkPath::kWinding_FillType);
3441 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3442 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3443 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3444}
3445
3446static void rects4(skiatest::Reporter* reporter, const char* filename) {
3447 SkPath path, pathB;
3448 path.setFillType(SkPath::kEvenOdd_FillType);
3449 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3450 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3451 pathB.setFillType(SkPath::kWinding_FillType);
3452 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3453 pathB.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
3454 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3455}
3456
3457static void issue2753(skiatest::Reporter* reporter, const char* filename) {
3458 SkPath path1;
3459 path1.moveTo(142.701f, 110.568f);
3460 path1.lineTo(142.957f, 100);
3461 path1.lineTo(153.835f, 100);
3462 path1.lineTo(154.592f, 108.188f);
3463 path1.cubicTo(154.592f, 108.188f, 153.173f, 108.483f, 152.83f, 109.412f);
3464 path1.cubicTo(152.83f, 109.412f, 142.701f, 110.568f, 142.701f, 110.568f);
3465 path1.close();
3466
3467 SkPath path2;
3468 path2.moveTo(39, 124.001f);
3469 path2.cubicTo(39, 124.001f, 50.6f, 117.001f, 50.6f, 117.001f);
3470 path2.cubicTo(50.6f, 117.001f, 164.601f, 85.2f, 188.201f, 117.601f);
3471 path2.cubicTo(188.201f, 117.601f, 174.801f, 93, 39, 124.001f);
3472 path2.close();
3473
3474 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3475}
3476
3477static void issue2808(skiatest::Reporter* reporter, const char* filename) {
3478 SkPath path1, path2;
3479
3480 path1.moveTo(509.20300293f, 385.601989746f);
3481 path1.quadTo(509.20300293f, 415.68838501f, 487.928710938f, 436.96270752f);
3482 path1.quadTo(466.654388428f, 458.236999512f, 436.567993164f, 458.236999512f);
3483 path1.quadTo(406.4815979f, 458.236999512f, 385.207275391f, 436.96270752f);
3484 path1.quadTo(363.932983398f, 415.68838501f, 363.932983398f, 385.601989746f);
3485 path1.quadTo(363.932983398f, 355.515594482f, 385.207275391f, 334.241271973f);
3486 path1.quadTo(406.4815979f, 312.96697998f, 436.567993164f, 312.96697998f);
3487 path1.quadTo(466.654388428f, 312.96697998f, 487.928710938f, 334.241271973f);
3488 path1.quadTo(509.20300293f, 355.515594482f, 509.20300293f, 385.601989746f);
3489 path1.close();
3490
3491 path2.moveTo(449.033996582f, 290.87298584f);
3492 path2.quadTo(449.033996582f, 301.028259277f, 441.853149414f, 308.209106445f);
3493 path2.quadTo(434.672271729f, 315.389984131f, 424.516998291f, 315.389984131f);
3494 path2.quadTo(414.361724854f, 315.389984131f, 407.180847168f, 308.209106445f);
3495 path2.quadTo(400, 301.028259277f, 400, 290.87298584f);
3496 path2.quadTo(400, 280.717712402f, 407.180847168f, 273.536865234f);
3497 path2.quadTo(414.361724854f, 266.355987549f, 424.516998291f, 266.355987549f);
3498 path2.quadTo(434.672271729f, 266.355987549f, 441.853149414f, 273.536865234f);
3499 path2.quadTo(449.033996582f, 280.717712402f, 449.033996582f, 290.87298584f);
3500 path2.close();
3501
3502 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3503}
3504
3505static void cubicOp115(skiatest::Reporter* reporter, const char* filename) {
3506 SkPath path, pathB;
3507 path.setFillType(SkPath::kWinding_FillType);
3508 path.moveTo(0,1);
3509 path.cubicTo(3,4, 2,1, 5,3);
3510 path.close();
3511 pathB.setFillType(SkPath::kWinding_FillType);
3512 pathB.moveTo(1,2);
3513 pathB.cubicTo(3,5, 1,0, 4,3);
3514 pathB.close();
3515 SkPath path2(path);
3516 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3517}
3518
3519static void testRect1(skiatest::Reporter* reporter, const char* filename) {
3520 SkPath path, path2;
3521 path.addRect(0, 0, 60, 60, SkPath::kCCW_Direction);
3522 path.addRect(30, 20, 50, 50, SkPath::kCCW_Direction);
3523 path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
3524// path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
3525 testPathOp(reporter, path, path2, kUnion_SkPathOp, filename);
3526}
3527
3528static void testRect2(skiatest::Reporter* reporter, const char* filename) {
3529 SkPath path, pathB;
3530 path.setFillType(SkPath::kWinding_FillType);
3531 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3532 path.addRect(4, 4, 5, 5, SkPath::kCW_Direction);
3533 pathB.setFillType(SkPath::kEvenOdd_FillType);
3534 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3535 pathB.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
3536 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3537}
3538
3539static void cubicOp116(skiatest::Reporter* reporter, const char* filename) {
3540 SkPath path, pathB;
3541 path.setFillType(SkPath::kWinding_FillType);
3542 path.moveTo(0,1);
3543 path.cubicTo(4,6, 2,0, 2,0);
3544 path.close();
3545 pathB.setFillType(SkPath::kWinding_FillType);
3546 pathB.moveTo(0,2);
3547 pathB.cubicTo(0,2, 1,0, 6,4);
3548 pathB.close();
3549 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3550}
3551
3552static void cubicOp117(skiatest::Reporter* reporter, const char* filename) {
3553 SkPath path, pathB;
3554 path.setFillType(SkPath::kWinding_FillType);
3555 path.moveTo(0,1);
3556 path.cubicTo(4,5, 6,0, 1,0);
3557 path.close();
3558 pathB.setFillType(SkPath::kWinding_FillType);
3559 pathB.moveTo(0,6);
3560 pathB.cubicTo(0,1, 1,0, 5,4);
3561 pathB.close();
3562 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3563}
3564
3565static void cubicOp118(skiatest::Reporter* reporter, const char* filename) {
3566 SkPath path, pathB;
3567 path.setFillType(SkPath::kWinding_FillType);
3568 path.moveTo(0,1);
3569 path.cubicTo(4,6, 5,1, 6,2);
3570 path.close();
3571 pathB.setFillType(SkPath::kWinding_FillType);
3572 pathB.moveTo(1,5);
3573 pathB.cubicTo(2,6, 1,0, 6,4);
3574 pathB.close();
3575 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3576}
3577
3578static void loop1(skiatest::Reporter* reporter, const char* filename) {
3579 SkPath path, pathB;
3580 path.moveTo(0,1);
3581 path.cubicTo(1,5, -5.66666651f,3.33333349f, 8.83333302f,2.33333349f);
3582 path.close();
3583 pathB.moveTo(1,5);
3584 pathB.cubicTo(-5.66666651f,3.33333349f, 8.83333302f,2.33333349f, 0,1);
3585 pathB.close();
3586 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3587}
3588
3589#include "SkPathOpsCubic.h"
3590
3591static void loop1asQuad(skiatest::Reporter* reporter, const char* filename) {
3592 CubicPts cubic1 = {{{0,1}, {1,5}, {-5.66666651f,3.33333349f}, {8.83333302f,2.33333349f}}};
3593 CubicPts cubic2 = {{{1,5}, {-5.66666651f,3.33333349f}, {8.83333302f,2.33333349f}, {0,1}}};
3594 SkDCubic c1, c2;
3595 c1.debugSet(cubic1.fPts);
3596 c2.debugSet(cubic2.fPts);
3597 double c1InflectionTs[2], c2InflectionTs[2];
3598 SkDEBUGCODE(int c1InfTCount =) c1.findInflections(c1InflectionTs);
3599 SkASSERT(c1InfTCount == 2);
3600 SkDEBUGCODE(int c2InfTCount =) c2.findInflections(c2InflectionTs);
3601 SkASSERT(c2InfTCount == 1);
3602 SkASSERT(c1InflectionTs[0] > c1InflectionTs[1]);
3603 SkDCubicPair c1pair = c1.chopAt(c1InflectionTs[0]);
3604 SkDCubicPair c1apair = c1pair.first().chopAt(c1InflectionTs[1]);
3605 SkDCubicPair c2pair = c2.chopAt(c2InflectionTs[0]);
3606 SkDQuad q1[2] = { c1pair.first().toQuad(), c1pair.second().toQuad() };
3607 SkDQuad q1a[2] = { c1apair.first().toQuad(), c1apair.second().toQuad() };
3608 SkDQuad q2[2] = { c2pair.first().toQuad(), c2pair.second().toQuad() };
3609 SkPath path, pathB;
3610 path.moveTo(q1a[0].fPts[0].asSkPoint());
3611 path.quadTo(q1a[0].fPts[1].asSkPoint(), q1a[0].fPts[2].asSkPoint());
3612 path.quadTo(q1a[1].fPts[1].asSkPoint(), q1a[1].fPts[2].asSkPoint());
3613 path.quadTo(q1[1].fPts[1].asSkPoint(), q1[1].fPts[2].asSkPoint());
3614 path.close();
3615 pathB.moveTo(q2[0].fPts[0].asSkPoint());
3616 pathB.quadTo(q2[0].fPts[1].asSkPoint(), q2[0].fPts[2].asSkPoint());
3617 pathB.quadTo(q2[1].fPts[1].asSkPoint(), q2[1].fPts[2].asSkPoint());
3618 pathB.close();
3619 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3620}
3621
3622static void loop2(skiatest::Reporter* reporter, const char* filename) {
3623 SkPath path, pathB;
3624 path.moveTo(0,1);
3625 path.cubicTo(3,4, 3.f,4.f, 4.5f,1.5f);
3626 path.close();
3627 pathB.moveTo(3,4);
3628 pathB.cubicTo(3.f,4.f, 4.5f,1.5f, 0,1);
3629 pathB.close();
3630 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3631}
3632
3633static void loop3(skiatest::Reporter* reporter, const char* filename) {
3634 SkPath path, pathB;
3635 path.moveTo(0,1);
3636 path.cubicTo(3,5, -3.66666651f,0, 10.5f,-1.66666651f);
3637 path.close();
3638 pathB.moveTo(3,5);
3639 pathB.cubicTo(-3.66666651f,0, 10.5f,-1.66666651f, 0,1);
3640 pathB.close();
3641 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3642}
3643
3644static void loop4(skiatest::Reporter* reporter, const char* filename) {
3645 SkPath path, pathB;
3646 path.moveTo(0,5);
3647 path.cubicTo(1,5, 1,4, 0.833333313f,3);
3648 path.close();
3649 pathB.moveTo(1,5);
3650 pathB.cubicTo(1,4, 0.833333313f,3, 0,5);
3651 pathB.close();
3652 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3653}
3654
3655#include "SkParsePath.h"
3656
3657static void issue3517(skiatest::Reporter* reporter, const char* filename) {
3658 SkPath path, pathB;
3659
3660 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";
3661 SkParsePath::FromSVGString(str, &path);
3662
3663 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";
3664 SkParsePath::FromSVGString(strB, &pathB);
3665 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
3666}
3667
3668static void cubicOp119(skiatest::Reporter* reporter, const char* filename) {
3669 SkPath path, pathB;
3670 path.setFillType(SkPath::kWinding_FillType);
3671 path.moveTo(0,1);
3672 path.cubicTo(3,5, 2,1, 3,1);
3673 path.close();
3674 pathB.setFillType(SkPath::kWinding_FillType);
3675 pathB.moveTo(1,2);
3676 pathB.cubicTo(1,3, 1,0, 5,3);
3677 pathB.close();
3678 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3679}
3680
3681static void cubicOp120(skiatest::Reporter* reporter, const char* filename) {
3682 SkPath path, pathB;
3683 path.setFillType(SkPath::kWinding_FillType);
3684 path.moveTo(0,1);
3685 path.cubicTo(2,4, 2,1, 4,0);
3686 path.close();
3687 pathB.setFillType(SkPath::kWinding_FillType);
3688 pathB.moveTo(1,2);
3689 pathB.cubicTo(0,4, 1,0, 4,2);
3690 pathB.close();
3691 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3692}
3693
3694static void cubicOp121(skiatest::Reporter* reporter, const char* filename) {
3695 SkPath path, pathB;
3696 path.setFillType(SkPath::kWinding_FillType);
3697 path.moveTo(0,1);
3698 path.cubicTo(3,4, 3,2, 4,3);
3699 path.close();
3700 pathB.setFillType(SkPath::kWinding_FillType);
3701 pathB.moveTo(2,3);
3702 pathB.cubicTo(3,4, 1,0, 4,3);
3703 pathB.close();
3704 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3705}
3706
3707// FIXME : haven't debugged this failure yet
3708static void cubicOp122(skiatest::Reporter* reporter, const char* filename) {
3709 SkPath path, pathB;
3710 path.setFillType(SkPath::kWinding_FillType);
3711 path.moveTo(0,1);
3712 path.cubicTo(3,5, 4,1, 4,0);
3713 path.close();
3714 pathB.setFillType(SkPath::kWinding_FillType);
3715 pathB.moveTo(1,4);
3716 pathB.cubicTo(0,4, 1,0, 5,3);
3717 pathB.close();
3718 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3719}
3720
3721static void cubicOp123(skiatest::Reporter* reporter, const char* filename) {
3722 SkPath path, pathB;
3723 path.setFillType(SkPath::kWinding_FillType);
3724 path.moveTo(0,1);
3725 path.cubicTo(1,5, 2,0, 6,0);
3726 path.close();
3727 pathB.setFillType(SkPath::kWinding_FillType);
3728 pathB.moveTo(0,2);
3729 pathB.cubicTo(0,6, 1,0, 5,1);
3730 pathB.close();
3731 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3732}
3733
3734static void loop5(skiatest::Reporter* reporter, const char* filename) {
3735 SkPath path, pathB;
3736 path.moveTo(0,2);
3737 path.cubicTo(1,2, 1,1.66666663f, 0.833333313f,1.33333325f);
3738 path.close();
3739 pathB.moveTo(1,2);
3740 pathB.cubicTo(1,1.66666663f, 0.833333313f,1.33333325f, 0,2);
3741 pathB.close();
3742 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3743}
3744
3745static void loop6(skiatest::Reporter* reporter, const char* filename) {
3746 SkPath path, pathB;
3747 path.moveTo(0,1);
3748 path.cubicTo(1,3, -1.66666675f,1.66666663f, 4.16666651f,1.00000012f);
3749 path.close();
3750 pathB.moveTo(1,3);
3751 pathB.cubicTo(-1.66666675f,1.66666663f, 4.16666651f,1.00000012f, 0,1);
3752 pathB.close();
3753 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3754}
3755
3756static void cubicOp124(skiatest::Reporter* reporter, const char* filename) {
3757 SkPath path, pathB;
3758 path.setFillType(SkPath::kWinding_FillType);
3759 path.moveTo(0,1);
3760 path.cubicTo(1,5, 6,0, 3,0);
3761 path.close();
3762 pathB.setFillType(SkPath::kWinding_FillType);
3763 pathB.moveTo(0,6);
3764 pathB.cubicTo(0,3, 1,0, 5,1);
3765 pathB.close();
3766 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3767}
3768
3769static void cubicOp125(skiatest::Reporter* reporter, const char* filename) {
3770 SkPath path, pathB;
3771 path.setFillType(SkPath::kWinding_FillType);
3772 path.moveTo(0,1);
3773 path.cubicTo(3,6, 3,1, 6,2);
3774 path.close();
3775 pathB.setFillType(SkPath::kWinding_FillType);
3776 pathB.moveTo(1,3);
3777 pathB.cubicTo(2,6, 1,0, 6,3);
3778 pathB.close();
3779 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3780}
3781
3782static void cubicOp126(skiatest::Reporter* reporter, const char* filename) {
3783 SkPath path, pathB;
3784 path.setFillType(SkPath::kWinding_FillType);
3785 path.moveTo(0,1);
3786 path.cubicTo(0,3, 6,0, 2,1);
3787 path.close();
3788 pathB.setFillType(SkPath::kWinding_FillType);
3789 pathB.moveTo(0,6);
3790 pathB.cubicTo(1,2, 1,0, 3,0);
3791 pathB.close();
3792 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3793}
3794
3795static void cubicOp127(skiatest::Reporter* reporter, const char* filename) {
3796 SkPath path, pathB;
3797 path.setFillType(SkPath::kWinding_FillType);
3798 path.moveTo(0,1);
3799 path.cubicTo(1,5, 6,0, 3,0);
3800 path.close();
3801 pathB.setFillType(SkPath::kWinding_FillType);
3802 pathB.moveTo(0,6);
3803 pathB.cubicTo(0,3, 1,0, 5,1);
3804 pathB.close();
3805 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3806}
3807
3808static void cubicOp128(skiatest::Reporter* reporter, const char* filename) {
3809 SkPath path, pathB;
3810 path.setFillType(SkPath::kWinding_FillType);
3811 path.moveTo(0,1);
3812 path.cubicTo(0,3, 3,2, 5,2);
3813 path.close();
3814 pathB.setFillType(SkPath::kWinding_FillType);
3815 pathB.moveTo(2,3);
3816 pathB.cubicTo(2,5, 1,0, 3,0);
3817 pathB.close();
3818 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3819}
3820
3821static void cubicOp129(skiatest::Reporter* reporter, const char* filename) {
3822 SkPath path, pathB;
3823 path.setFillType(SkPath::kWinding_FillType);
3824 path.moveTo(5,6);
3825 path.cubicTo(3,4, 2,0, 2,1);
3826 path.close();
3827 pathB.setFillType(SkPath::kWinding_FillType);
3828 pathB.moveTo(0,2);
3829 pathB.cubicTo(1,2, 6,5, 4,3);
3830 pathB.close();
3831 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3832}
3833
3834static void cubicOp130(skiatest::Reporter* reporter, const char* filename) {
3835 SkPath path, pathB;
3836 path.setFillType(SkPath::kWinding_FillType);
3837 path.moveTo(5,6);
3838 path.cubicTo(4,6, 3,0, 2,1);
3839 path.close();
3840 pathB.setFillType(SkPath::kWinding_FillType);
3841 pathB.moveTo(0,3);
3842 pathB.cubicTo(1,2, 6,5, 6,4);
3843 pathB.close();
3844 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3845}
3846
3847#include "SkGeometry.h"
3848
3849static void complex_to_quads(const SkPoint pts[], SkPath* path) {
3850 SkScalar loopT[3];
3851 if (SkDCubic::ComplexBreak(pts, loopT)) {
3852 SkPoint cubicPair[7];
3853 SkChopCubicAt(pts, cubicPair, loopT[0]);
3854 SkDCubic c1, c2;
3855 c1.set(cubicPair);
3856 c2.set(&cubicPair[3]);
3857 SkDQuad q1 = c1.toQuad();
3858 SkDQuad q2 = c2.toQuad();
3859 path->quadTo(q1[1].asSkPoint(), q1[2].asSkPoint());
3860 path->quadTo(q2[1].asSkPoint(), q2[2].asSkPoint());
3861 } else {
3862 path->cubicTo(pts[1], pts[2], pts[3]);
3863 }
3864}
3865
3866static void cubicOp130a(skiatest::Reporter* reporter, const char* filename) {
3867 SkPath path, pathB;
3868 path.setFillType(SkPath::kWinding_FillType);
3869 path.moveTo(5,6);
3870 SkPoint pts[] = { {5,6}, {4,6}, {3,0}, {2,1} };
3871 complex_to_quads(pts, &path);
3872 path.close();
3873 pathB.setFillType(SkPath::kWinding_FillType);
3874 pathB.moveTo(0,3);
3875 SkPoint pts2[] = { {0,3}, {1,2}, {6,5}, {6,4} };
3876 complex_to_quads(pts2, &path);
3877 pathB.close();
3878 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3879}
3880
3881static void cubicOp131(skiatest::Reporter* reporter, const char* filename) {
3882 SkPath path, pathB;
3883 path.setFillType(SkPath::kWinding_FillType);
3884 path.moveTo(0,1);
3885 path.cubicTo(3,4, 3,0, 6,2);
3886 path.close();
3887 pathB.setFillType(SkPath::kWinding_FillType);
3888 pathB.moveTo(0,3);
3889 pathB.cubicTo(2,6, 1,0, 4,3);
3890 pathB.close();
3891 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3892}
3893
3894static void circlesOp1(skiatest::Reporter* reporter, const char* filename) {
3895 SkPath path, pathB;
3896 path.setFillType(SkPath::kWinding_FillType);
3897 path.addCircle(0, 1, 2, SkPath::kCCW_Direction);
3898 pathB.setFillType(SkPath::kWinding_FillType);
3899 pathB.addCircle(0, 1, 1, SkPath::kCW_Direction);
3900 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3901}
3902
3903static void circlesOp2(skiatest::Reporter* reporter, const char* filename) {
3904 SkPath path, pathB;
3905 path.setFillType(SkPath::kWinding_FillType);
3906 path.addCircle(0, 1, 4, SkPath::kCCW_Direction);
3907 pathB.setFillType(SkPath::kWinding_FillType);
3908 pathB.addCircle(0, 4, 3, SkPath::kCW_Direction);
3909 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3910}
3911
3912static void rRect1x(skiatest::Reporter* reporter, const char* filename) {
3913 SkPath path, pathB;
3914 path.setFillType(SkPath::kEvenOdd_FillType);
3915 path.moveTo(20.65f, 5.65f);
3916 path.conicTo(20.65f, 1.13612f, 25.1404f, 0.65f, 0.888488f);
3917 path.lineTo(25.65f, 0.65f);
3918 path.lineTo(26.1596f, 0.67604f);
3919 path.conicTo(30.65f, 1.13612f, 30.65f, 5.65f, 0.888488f);
3920 path.lineTo(30.65f, 25.65f);
3921 path.conicTo(30.65f, 20.65f, 25.65f, 20.65f, 0.707107f);
3922 path.lineTo(20.65f, 20.65f);
3923 path.lineTo(20.65f, 5.65f);
3924 path.close();
3925 path.moveTo(20.65f, 20.65f);
3926 path.lineTo(5.65f, 20.65f);
3927 path.conicTo(0.65f, 20.65f, 0.65f, 25.65f, 0.707107f);
3928 path.lineTo(0.65f, 45.65f);
3929 path.conicTo(0.65f, 50.65f, 5.65f, 50.65f, 0.707107f);
3930 path.lineTo(25.65f, 50.65f);
3931 path.conicTo(30.65f, 50.65f, 30.65f, 45.65f, 0.707107f);
3932 path.lineTo(30.65f, 25.65f);
3933 path.conicTo(30.65f, 30.65f, 25.65f, 30.65f, 0.707107f);
3934 path.conicTo(20.65f, 30.65f, 20.65f, 25.65f, 0.707107f);
3935 path.lineTo(20.65f, 20.65f);
3936 path.close();
3937 SkPath path1(path);
3938
3939 path.reset();
3940 path.setFillType(SkPath::kWinding_FillType);
3941 path.moveTo(20.65f, 45.65f);
3942 path.lineTo(20.65f, 25.65f);
3943 path.conicTo(20.65f, 20.65f, 25.65f, 20.65f, 0.707107f);
3944 path.lineTo(45.65f, 20.65f);
3945 path.conicTo(50.65f, 20.65f, 50.65f, 25.65f, 0.707107f);
3946 path.lineTo(50.65f, 45.65f);
3947 path.conicTo(50.65f, 50.65f, 45.65f, 50.65f, 0.707107f);
3948 path.lineTo(25.65f, 50.65f);
3949 path.conicTo(20.65f, 50.65f, 20.65f, 45.65f, 0.707107f);
3950 path.close();
3951 SkPath path2(path);
3952
3953 testPathOp(reporter, path1, path2, kDifference_SkPathOp, filename);
3954}
3955
3956static void loop7(skiatest::Reporter* reporter, const char* filename) {
3957 SkPath path, pathB;
3958 path.moveTo(0,1);
3959 path.cubicTo(3,4, -1,0, 8.5f,-2.5f);
3960 path.close();
3961 pathB.moveTo(3,4);
3962 pathB.cubicTo(-1,0, 8.5f,-2.5f, 0,1);
3963 pathB.close();
3964 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3965}
3966
3967static void rects5(skiatest::Reporter* reporter, const char* filename) {
3968 SkPath path, pathB;
3969 path.setFillType(SkPath::kWinding_FillType);
3970 path.addRect(5, 5, 6, 6, SkPath::kCW_Direction);
3971 path.addRect(5, 5, 6, 6, SkPath::kCW_Direction);
3972 pathB.setFillType(SkPath::kEvenOdd_FillType);
3973 pathB.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
3974 pathB.addRect(5, 5, 6, 6, SkPath::kCW_Direction);
3975 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3976}
3977
3978static void loop8(skiatest::Reporter* reporter, const char* filename) {
3979 SkPath path, pathB;
3980 path.moveTo(0,1);
3981 path.cubicTo(1,4, -3.83333325f,0.166666627f, 6,-1);
3982 path.close();
3983 pathB.moveTo(1,4);
3984 pathB.cubicTo(-3.83333325f,0.166666627f, 6,-1, 0,1);
3985 pathB.close();
3986 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3987}
3988
3989static void loop9(skiatest::Reporter* reporter, const char* filename) {
3990 SkPath path, pathB;
3991 path.moveTo(0,1);
3992 path.cubicTo(1,3, -2.5f,0, 3.33333325f,-0.666666627f);
3993 path.close();
3994 pathB.moveTo(1,3);
3995 pathB.cubicTo(-2.5f,0, 3.33333325f,-0.666666627f, 0,1);
3996 pathB.close();
3997 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3998}
3999
4000static void circlesOp3(skiatest::Reporter* reporter, const char* filename) {
4001 SkPath path, pathB;
4002 path.setFillType(SkPath::kWinding_FillType);
4003 path.addCircle(0, 1, 2, SkPath::kCCW_Direction);
4004 pathB.setFillType(SkPath::kWinding_FillType);
4005 pathB.addCircle(3, 5, 3, SkPath::kCW_Direction);
4006 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4007}
4008
4009static void loop10(skiatest::Reporter* reporter, const char* filename) {
4010 SkPath path, pathB;
4011 path.moveTo(5,6);
4012 path.cubicTo(1,2, 1,2, -3.66666651f,13.333334f);
4013 path.close();
4014 pathB.moveTo(1,2);
4015 pathB.cubicTo(1,2, -3.66666651f,13.333334f, 5,6);
4016 pathB.close();
4017 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4018}
4019
4020static void loop11(skiatest::Reporter* reporter, const char* filename) {
4021 SkPath path, pathB;
4022 path.moveTo(0,1);
4023 path.cubicTo(1,3, -1.83333349f,1.33333337f, 4,-1);
4024 path.close();
4025 pathB.moveTo(1,3);
4026 pathB.cubicTo(-1.83333349f,1.33333337f, 4,-1, 0,1);
4027 pathB.close();
4028 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4029}
4030
4031static void cubicOp132(skiatest::Reporter* reporter, const char* filename) {
4032 SkPath path, pathB;
4033 path.setFillType(SkPath::kWinding_FillType);
4034 path.moveTo(5,6);
4035 path.cubicTo(3,4, 3,0, 3,2);
4036 path.close();
4037 pathB.setFillType(SkPath::kWinding_FillType);
4038 pathB.moveTo(0,3);
4039 pathB.cubicTo(2,3, 6,5, 4,3);
4040 pathB.close();
4041 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4042}
4043
4044static void loop12(skiatest::Reporter* reporter, const char* filename) {
4045 SkPath path, pathB;
4046 path.moveTo(1,2);
4047 path.cubicTo(0,6, -3.16666675f,3.66666675f, 6.33333349f,3.33333349f);
4048 path.close();
4049 pathB.moveTo(0,6);
4050 pathB.cubicTo(-3.16666675f,3.66666675f, 6.33333349f,3.33333349f, 1,2);
4051 pathB.close();
4052 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4053}
4054
4055static void cubicOp133(skiatest::Reporter* reporter, const char* filename) {
4056 SkPath path, pathB;
4057 path.setFillType(SkPath::kWinding_FillType);
4058 path.moveTo(5,6);
4059 path.cubicTo(5,6, 5,0, 4,1);
4060 path.close();
4061 pathB.setFillType(SkPath::kWinding_FillType);
4062 pathB.moveTo(0,5);
4063 pathB.cubicTo(1,4, 6,5, 6,5);
4064 pathB.close();
4065 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4066}
4067
4068static void cubicOp134(skiatest::Reporter* reporter, const char* filename) {
4069 SkPath path, pathB;
4070 path.setFillType(SkPath::kWinding_FillType);
4071 path.moveTo(5,6);
4072 path.cubicTo(5,6, 6,0, 3,1);
4073 path.close();
4074 pathB.setFillType(SkPath::kWinding_FillType);
4075 pathB.moveTo(0,6);
4076 pathB.cubicTo(1,3, 6,5, 6,5);
4077 pathB.close();
4078 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4079}
4080
4081static void cubicOp135(skiatest::Reporter* reporter, const char* filename) {
4082 SkPath path, pathB;
4083 path.setFillType(SkPath::kWinding_FillType);
4084 path.moveTo(5,6);
4085 path.cubicTo(5,6, 6,0, 4,1);
4086 path.close();
4087 pathB.setFillType(SkPath::kWinding_FillType);
4088 pathB.moveTo(0,6);
4089 pathB.cubicTo(1,4, 6,5, 6,5);
4090 pathB.close();
4091 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4092}
4093
4094static void cubicOp136(skiatest::Reporter* reporter, const char* filename) {
4095 SkPath path, pathB;
4096 path.setFillType(SkPath::kWinding_FillType);
4097 path.moveTo(5,6);
4098 path.cubicTo(5,6, 5,0, 3,1);
4099 path.close();
4100 pathB.setFillType(SkPath::kWinding_FillType);
4101 pathB.moveTo(0,5);
4102 pathB.cubicTo(1,3, 6,5, 6,5);
4103 pathB.close();
4104 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4105}
4106
4107static void cubicOp136a(skiatest::Reporter* reporter, const char* filename) {
4108 SkPath path, pathB;
4109 path.setFillType(SkPath::kWinding_FillType);
4110 path.moveTo(5,6);
4111 path.quadTo(5,0, 3,1);
4112 path.close();
4113 pathB.setFillType(SkPath::kWinding_FillType);
4114 pathB.moveTo(0,5);
4115 pathB.cubicTo(1,3, 6,5, 6,5);
4116 pathB.close();
4117 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4118}
4119
4120static void cubics137(skiatest::Reporter* reporter, const char* filename) {
4121 SkPath path, pathB;
4122 path.setFillType(SkPath::kWinding_FillType);
4123 path.moveTo(0, 5);
4124 path.cubicTo(3, 6, 1, 0, 3, 2);
4125 path.close();
4126 pathB.setFillType(SkPath::kWinding_FillType);
4127 pathB.moveTo(0, 1);
4128 pathB.cubicTo(2, 3, 5, 0, 6, 3);
4129 pathB.close();
4130 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4131}
4132
4133static void cubics138(skiatest::Reporter* reporter, const char* filename) {
4134 SkPath path, pathB;
4135 path.setFillType(SkPath::kWinding_FillType);
4136 path.moveTo(0, 5);
4137 path.cubicTo(3, 6, 1, 0, 4, 2);
4138 path.close();
4139 pathB.setFillType(SkPath::kWinding_FillType);
4140 pathB.moveTo(0, 1);
4141 pathB.cubicTo(2, 4, 5, 0, 6, 3);
4142 pathB.close();
4143 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4144}
4145
4146// three curves intersect successfully nearby -- the angle only gets 2 of the 3 pts
4147static void cubicOp139(skiatest::Reporter* reporter, const char* filename) {
4148 SkPath path, pathB;
4149 path.setFillType(SkPath::kWinding_FillType);
4150 path.moveTo(0,2);
4151 path.cubicTo(0,4, 3,1, 5,1);
4152 path.close();
4153 pathB.setFillType(SkPath::kWinding_FillType);
4154 pathB.moveTo(1,3);
4155 pathB.cubicTo(1,5, 2,0, 4,0);
4156 pathB.close();
4157 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4158}
4159
4160static void cubicOp140(skiatest::Reporter* reporter, const char* filename) {
4161 SkPath path, pathB;
4162 path.setFillType(SkPath::kWinding_FillType);
4163 path.moveTo(0,2);
4164 path.cubicTo(1,2, 5,4, 3,2);
4165 path.close();
4166 pathB.setFillType(SkPath::kWinding_FillType);
4167 pathB.moveTo(4,5);
4168 pathB.cubicTo(2,3, 2,0, 2,1);
4169 pathB.close();
4170 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4171}
4172
4173static void cubicOp141(skiatest::Reporter* reporter, const char* filename) {
4174 SkPath path, pathB;
4175 path.setFillType(SkPath::kWinding_FillType);
4176 path.moveTo(0,2);
4177 path.cubicTo(1,2, 6,4, 3,2);
4178 path.close();
4179 pathB.setFillType(SkPath::kWinding_FillType);
4180 pathB.moveTo(4,6);
4181 pathB.cubicTo(2,3, 2,0, 2,1);
4182 pathB.close();
4183 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4184}
4185
4186static void quadRect1(skiatest::Reporter* reporter, const char* filename) {
4187 SkPath path, pathB;
4188 path.moveTo(6,15);
4189 path.quadTo(16,0, 8,4);
4190 path.quadTo(2,7, 12,12);
4191 path.close();
4192 pathB.addRect(4,11, 13,16);
4193 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4194}
4195
4196static void quadRect2(skiatest::Reporter* reporter, const char* filename) {
4197 SkPath path, pathB;
4198 path.moveTo(5,12);
4199 path.quadTo(15,7, 9,4);
4200 path.quadTo(1,0, 11,15);
4201 path.close();
4202 pathB.addRect(4,11, 13,16);
4203 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4204}
4205
4206static void quadRect3(skiatest::Reporter* reporter, const char* filename) {
4207 SkPath path, pathB;
4208 path.moveTo(12,12);
4209 path.quadTo(2,7, 8,4);
4210 path.quadTo(16,0, 6,15);
4211 path.close();
4212 pathB.addRect(4,11, 13,16);
4213 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4214}
4215
4216static void quadRect4(skiatest::Reporter* reporter, const char* filename) {
4217 SkPath path, pathB;
4218 path.moveTo(11,15);
4219 path.quadTo(1,0, 9,4);
4220 path.quadTo(15,7, 5,12);
4221 path.close();
4222 pathB.addRect(4,11, 13,16);
4223 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4224}
4225
4226static void quadRect5(skiatest::Reporter* reporter, const char* filename) {
4227 SkPath path, pathB;
4228 path.moveTo(11,13);
4229 path.quadTo(4,4, 8,4);
4230 path.quadTo(12,4, 5,13);
4231 path.close();
4232 pathB.addRect(4,11, 13,16);
4233 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4234}
4235
4236static void quadRect6(skiatest::Reporter* reporter, const char* filename) {
4237 SkPath path, pathB;
4238 path.moveTo(5,13);
4239 path.quadTo(12,4, 8,4);
4240 path.quadTo(4,4, 11,13);
4241 path.close();
4242 pathB.addRect(4,11, 13,16);
4243 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4244}
4245
4246static void loops4i(skiatest::Reporter* reporter, const char* filename) {
4247 SkPath path, pathB;
4248 path.setFillType(SkPath::kWinding_FillType);
4249 path.moveTo(0, 3);
4250 path.cubicTo(0, 2, 0, 2, -1.66666663f, 2.16666675f);
4251 path.close();
4252 pathB.setFillType(SkPath::kWinding_FillType);
4253 pathB.moveTo(0, 2);
4254 pathB.cubicTo(0, 2, -1.66666663f, 2.16666675f, 0, 3);
4255 pathB.close();
4256 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4257}
4258
4259static void loops5i(skiatest::Reporter* reporter, const char* filename) {
4260 SkPath path, pathB;
4261 path.setFillType(SkPath::kWinding_FillType);
4262 path.moveTo(1, 2);
4263 path.cubicTo(0, 2, 0, 2, 0.166666672f, 2.66666675f);
4264 path.close();
4265 pathB.setFillType(SkPath::kWinding_FillType);
4266 pathB.moveTo(0, 2);
4267 pathB.cubicTo(0, 2, 0.166666672f, 2.66666675f, 1, 2);
4268 pathB.close();
4269 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4270}
4271
4272static void cubicOp142(skiatest::Reporter* reporter, const char* filename) {
4273 SkPath path, pathB;
4274 path.setFillType(SkPath::kWinding_FillType);
4275 path.moveTo(5,6);
4276 path.cubicTo(2,5, 2,1, 1,0);
4277 path.close();
4278 pathB.setFillType(SkPath::kWinding_FillType);
4279 pathB.moveTo(1,2);
4280 pathB.cubicTo(0,1, 6,5, 5,2);
4281 pathB.close();
4282 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4283}
4284
4285static void cubics6d(skiatest::Reporter* reporter, const char* filename) {
4286 SkPath path, pathB;
4287 path.setFillType(SkPath::kWinding_FillType);
4288 path.moveTo(3, 5);
4289 path.cubicTo(1, 5, 4, 2, 4, 0);
4290 path.close();
4291 pathB.setFillType(SkPath::kWinding_FillType);
4292 pathB.moveTo(2, 4);
4293 pathB.cubicTo(0, 4, 5, 3, 5, 1);
4294 pathB.close();
4295 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4296}
4297
4298static void cubics7d(skiatest::Reporter* reporter, const char* filename) {
4299 SkPath path, pathB;
4300 path.setFillType(SkPath::kWinding_FillType);
4301 path.moveTo(2, 6);
4302 path.cubicTo(2, 4, 5, 1, 3, 1);
4303 path.close();
4304 pathB.setFillType(SkPath::kWinding_FillType);
4305 pathB.moveTo(1, 5);
4306 pathB.cubicTo(1, 3, 6, 2, 4, 2);
4307 pathB.close();
4308 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4309}
4310
4311static void cubics8d(skiatest::Reporter* reporter, const char* filename) {
4312 SkPath path, pathB;
4313 path.setFillType(SkPath::kWinding_FillType);
4314 path.moveTo(2, 5);
4315 path.cubicTo(2, 4, 5, 1, 3, 2);
4316 path.close();
4317 pathB.setFillType(SkPath::kWinding_FillType);
4318 pathB.moveTo(1, 5);
4319 pathB.cubicTo(2, 3, 5, 2, 4, 2);
4320 pathB.close();
4321 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4322}
4323
4324static void cubics9d(skiatest::Reporter* reporter, const char* filename) {
4325 SkPath path, pathB;
4326 path.setFillType(SkPath::kWinding_FillType);
4327 path.moveTo(2, 4);
4328 path.cubicTo(2, 6, 3, 1, 5, 1);
4329 path.close();
4330 pathB.setFillType(SkPath::kWinding_FillType);
4331 pathB.moveTo(1, 3);
4332 pathB.cubicTo(1, 5, 4, 2, 6, 2);
4333 pathB.close();
4334 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4335}
4336
4337static void cubics10u(skiatest::Reporter* reporter, const char* filename) {
4338 SkPath path, pathB;
4339 path.setFillType(SkPath::kWinding_FillType);
4340 path.moveTo(2, 4);
4341 path.cubicTo(1, 6, 4, 1, 5, 1);
4342 path.close();
4343 pathB.setFillType(SkPath::kWinding_FillType);
4344 pathB.moveTo(1, 4);
4345 pathB.cubicTo(1, 5, 4, 2, 6, 1);
4346 pathB.close();
4347 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
4348}
4349
4350static void cubics11i(skiatest::Reporter* reporter, const char* filename) {
4351 SkPath path, pathB;
4352 path.setFillType(SkPath::kWinding_FillType);
4353 path.moveTo(2, 4);
4354 path.cubicTo(2, 5, 3, 2, 5, 1);
4355 path.close();
4356 pathB.setFillType(SkPath::kWinding_FillType);
4357 pathB.moveTo(2, 3);
4358 pathB.cubicTo(1, 5, 4, 2, 5, 2);
4359 pathB.close();
4360 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4361}
4362
4363static void cubics12d(skiatest::Reporter* reporter, const char* filename) {
4364 SkPath path, pathB;
4365 path.setFillType(SkPath::kWinding_FillType);
4366 path.moveTo(2, 4);
4367 path.cubicTo(0, 4, 5, 3, 5, 1);
4368 path.close();
4369 pathB.setFillType(SkPath::kWinding_FillType);
4370 pathB.moveTo(3, 5);
4371 pathB.cubicTo(1, 5, 4, 2, 4, 0);
4372 pathB.close();
4373 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4374}
4375
4376static void cubics13d(skiatest::Reporter* reporter, const char* filename) {
4377 SkPath path, pathB;
4378 path.setFillType(SkPath::kWinding_FillType);
4379 path.moveTo(2, 3);
4380 path.cubicTo(1, 5, 4, 2, 5, 2);
4381 path.close();
4382 pathB.setFillType(SkPath::kWinding_FillType);
4383 pathB.moveTo(2, 4);
4384 pathB.cubicTo(2, 5, 3, 2, 5, 1);
4385 pathB.close();
4386 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4387}
4388
4389static void cubics14d(skiatest::Reporter* reporter, const char* filename) {
4390 SkPath path, pathB;
4391 path.setFillType(SkPath::kWinding_FillType);
4392 path.moveTo(2, 3);
4393 path.cubicTo(0, 4, 3, 1, 3, 0);
4394 path.close();
4395 pathB.setFillType(SkPath::kWinding_FillType);
4396 pathB.moveTo(1, 3);
4397 pathB.cubicTo(0, 3, 3, 2, 4, 0);
4398 pathB.close();
4399 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4400}
4401
4402static void cubics15d(skiatest::Reporter* reporter, const char* filename) {
4403 SkPath path, pathB;
4404 path.setFillType(SkPath::kWinding_FillType);
4405 path.moveTo(1, 5);
4406 path.cubicTo(3, 5, 4, 0, 4, 2);
4407 path.close();
4408 pathB.setFillType(SkPath::kWinding_FillType);
4409 pathB.moveTo(0, 4);
4410 pathB.cubicTo(2, 4, 5, 1, 5, 3);
4411 pathB.close();
4412 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4413}
4414
4415static void cubics16i(skiatest::Reporter* reporter, const char* filename) {
4416 SkPath path, pathB;
4417 path.setFillType(SkPath::kWinding_FillType);
4418 path.moveTo(1, 5);
4419 path.cubicTo(2, 5, 5, 0, 4, 2);
4420 path.close();
4421 pathB.setFillType(SkPath::kWinding_FillType);
4422 pathB.moveTo(0, 5);
4423 pathB.cubicTo(2, 4, 5, 1, 5, 2);
4424 pathB.close();
4425 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4426}
4427
4428static void cubics17d(skiatest::Reporter* reporter, const char* filename) {
4429 SkPath path, pathB;
4430 path.setFillType(SkPath::kWinding_FillType);
4431 path.moveTo(1, 5);
4432 path.cubicTo(3, 4, 4, 1, 4, 2);
4433 path.close();
4434 pathB.setFillType(SkPath::kWinding_FillType);
4435 pathB.moveTo(1, 4);
4436 pathB.cubicTo(2, 4, 5, 1, 4, 3);
4437 pathB.close();
4438 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4439}
4440
4441static void cubics18d(skiatest::Reporter* reporter, const char* filename) {
4442 SkPath path, pathB;
4443 path.setFillType(SkPath::kWinding_FillType);
4444 path.moveTo(1, 5);
4445 path.cubicTo(1, 3, 4, 0, 2, 0);
4446 path.close();
4447 pathB.setFillType(SkPath::kWinding_FillType);
4448 pathB.moveTo(0, 4);
4449 pathB.cubicTo(0, 2, 5, 1, 3, 1);
4450 pathB.close();
4451 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4452}
4453
4454static void cubics19d(skiatest::Reporter* reporter, const char* filename) {
4455 SkPath path, pathB;
4456 path.setFillType(SkPath::kWinding_FillType);
4457 path.moveTo(1, 5);
4458 path.cubicTo(2, 3, 5, 2, 4, 2);
4459 path.close();
4460 pathB.setFillType(SkPath::kWinding_FillType);
4461 pathB.moveTo(2, 5);
4462 pathB.cubicTo(2, 4, 5, 1, 3, 2);
4463 pathB.close();
4464 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4465}
4466
4467static void cubicOp157(skiatest::Reporter* reporter, const char* filename) {
4468 SkPath path, pathB;
4469 path.setFillType(SkPath::kWinding_FillType);
4470 path.moveTo(1,5);
4471 path.cubicTo(1,3, 6,2, 4,2);
4472 path.close();
4473 pathB.setFillType(SkPath::kWinding_FillType);
4474 pathB.moveTo(2,6);
4475 pathB.cubicTo(2,4, 5,1, 3,1);
4476 pathB.close();
4477 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4478}
4479
4480static void cubics20d(skiatest::Reporter* reporter, const char* filename) {
4481 SkPath path, pathB;
4482 path.setFillType(SkPath::kWinding_FillType);
4483 path.moveTo(1, 2);
4484 path.cubicTo(0, 3, 6, 0, 3, 2);
4485 path.close();
4486 pathB.setFillType(SkPath::kWinding_FillType);
4487 pathB.moveTo(0, 6);
4488 pathB.cubicTo(2, 3, 2, 1, 3, 0);
4489 pathB.close();
4490 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4491}
4492
4493static void loops20i(skiatest::Reporter* reporter, const char* filename) {
4494 SkPath path, pathB;
4495 path.setFillType(SkPath::kWinding_FillType);
4496 path.moveTo(1, 2);
4497 path.cubicTo(0, 2, 0.833333313f, 2, 1, 3.66666651f);
4498 path.close();
4499 pathB.setFillType(SkPath::kWinding_FillType);
4500 pathB.moveTo(0, 2);
4501 pathB.cubicTo(0.833333313f, 2, 1, 3.66666651f, 1, 2);
4502 pathB.close();
4503 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4504}
4505
4506static void loops21i(skiatest::Reporter* reporter, const char* filename) {
4507 SkPath path, pathB;
4508 path.setFillType(SkPath::kWinding_FillType);
4509 path.moveTo(1, 2);
4510 path.cubicTo(0, 2, 0.833333313f, 2, 1, 4);
4511 path.close();
4512 pathB.setFillType(SkPath::kWinding_FillType);
4513 pathB.moveTo(0, 2);
4514 pathB.cubicTo(0.833333313f, 2, 1, 4, 1, 2);
4515 pathB.close();
4516 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4517}
4518
4519static void loops22i(skiatest::Reporter* reporter, const char* filename) {
4520 SkPath path, pathB;
4521 path.setFillType(SkPath::kWinding_FillType);
4522 path.moveTo(1, 3);
4523 path.cubicTo(0, 3, 0.833333313f, 3, 1, 4.66666651f);
4524 path.close();
4525 pathB.setFillType(SkPath::kWinding_FillType);
4526 pathB.moveTo(0, 3);
4527 pathB.cubicTo(0.833333313f, 3, 1, 4.66666651f, 1, 3);
4528 pathB.close();
4529 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4530}
4531
4532static void loops23i(skiatest::Reporter* reporter, const char* filename) {
4533 SkPath path, pathB;
4534 path.setFillType(SkPath::kWinding_FillType);
4535 path.moveTo(1, 5);
4536 path.cubicTo(0, 1, 6.16666698f, 5.66666698f, -5.66666651f, 6.66666651f);
4537 path.close();
4538 pathB.setFillType(SkPath::kWinding_FillType);
4539 pathB.moveTo(0, 1);
4540 pathB.cubicTo(6.16666698f, 5.66666698f, -5.66666651f, 6.66666651f, 1, 5);
4541 pathB.close();
4542 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4543}
4544
4545static void loops24i(skiatest::Reporter* reporter, const char* filename) {
4546 SkPath path, pathB;
4547 path.setFillType(SkPath::kWinding_FillType);
4548 path.moveTo(1, 2);
4549 path.cubicTo(0, 2, 0.833333313f, 2, 1, 3);
4550 path.close();
4551 pathB.setFillType(SkPath::kWinding_FillType);
4552 pathB.moveTo(0, 2);
4553 pathB.cubicTo(0.833333313f, 2, 1, 3, 1, 2);
4554 pathB.close();
4555 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4556}
4557
4558static void loops25i(skiatest::Reporter* reporter, const char* filename) {
4559 SkPath path, pathB;
4560 path.setFillType(SkPath::kWinding_FillType);
4561 path.moveTo(1, 5);
4562 path.cubicTo(0, 5, 0.833333313f, 5, 1, 7);
4563 path.close();
4564 pathB.setFillType(SkPath::kWinding_FillType);
4565 pathB.moveTo(0, 5);
4566 pathB.cubicTo(0.833333313f, 5, 1, 7, 1, 5);
4567 pathB.close();
4568 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4569}
4570
4571static void loops26i(skiatest::Reporter* reporter, const char* filename) {
4572 SkPath path, pathB;
4573 path.setFillType(SkPath::kWinding_FillType);
4574 path.moveTo(1, 6);
4575 path.cubicTo(0, 2, 6.16666698f, 6.66666698f, -5.66666651f, 7.66666651f);
4576 path.close();
4577 pathB.setFillType(SkPath::kWinding_FillType);
4578 pathB.moveTo(0, 2);
4579 pathB.cubicTo(6.16666698f, 6.66666698f, -5.66666651f, 7.66666651f, 1, 6);
4580 pathB.close();
4581 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4582}
4583
4584static void loops27i(skiatest::Reporter* reporter, const char* filename) {
4585 SkPath path, pathB;
4586 path.setFillType(SkPath::kWinding_FillType);
4587 path.moveTo(1, 3);
4588 path.cubicTo(0, 3, 0.833333313f, 3, 1, 4.33333349f);
4589 path.close();
4590 pathB.setFillType(SkPath::kWinding_FillType);
4591 pathB.moveTo(0, 3);
4592 pathB.cubicTo(0.833333313f, 3, 1, 4.33333349f, 1, 3);
4593 pathB.close();
4594 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4595}
4596
4597static void loops28i(skiatest::Reporter* reporter, const char* filename) {
4598 SkPath path, pathB;
4599 path.setFillType(SkPath::kWinding_FillType);
4600 path.moveTo(2, 3);
4601 path.cubicTo(1, 3, 1.83333337f, 3, 2, 4.66666651f);
4602 path.close();
4603 pathB.setFillType(SkPath::kWinding_FillType);
4604 pathB.moveTo(1, 3);
4605 pathB.cubicTo(1.83333337f, 3, 2, 4.66666651f, 2, 3);
4606 pathB.close();
4607 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4608}
4609
4610static void loops29i(skiatest::Reporter* reporter, const char* filename) {
4611 SkPath path, pathB;
4612 path.setFillType(SkPath::kWinding_FillType);
4613 path.moveTo(2, 4);
4614 path.cubicTo(0, 4, 1.66666663f, 4, 2, 7.33333302f);
4615 path.close();
4616 pathB.setFillType(SkPath::kWinding_FillType);
4617 pathB.moveTo(0, 4);
4618 pathB.cubicTo(1.66666663f, 4, 2, 7.33333302f, 2, 4);
4619 pathB.close();
4620 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4621}
4622
4623static void loops30i(skiatest::Reporter* reporter, const char* filename) {
4624 SkPath path, pathB;
4625 path.setFillType(SkPath::kWinding_FillType);
4626 path.moveTo(2, 4);
4627 path.cubicTo(0, 4, 1.66666663f, 4, 2, 8);
4628 path.close();
4629 pathB.setFillType(SkPath::kWinding_FillType);
4630 pathB.moveTo(0, 4);
4631 pathB.cubicTo(1.66666663f, 4, 2, 8, 2, 4);
4632 pathB.close();
4633 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4634}
4635
4636static void loops31i(skiatest::Reporter* reporter, const char* filename) {
4637 SkPath path, pathB;
4638 path.setFillType(SkPath::kWinding_FillType);
4639 path.moveTo(2, 5);
4640 path.cubicTo(1, 5, 1.83333337f, 5, 2, 6.66666651f);
4641 path.close();
4642 pathB.setFillType(SkPath::kWinding_FillType);
4643 pathB.moveTo(1, 5);
4644 pathB.cubicTo(1.83333337f, 5, 2, 6.66666651f, 2, 5);
4645 pathB.close();
4646 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4647}
4648
4649static void loops32i(skiatest::Reporter* reporter, const char* filename) {
4650 SkPath path, pathB;
4651 path.setFillType(SkPath::kWinding_FillType);
4652 path.moveTo(2, 6);
4653 path.cubicTo(1, 6, 1.83333337f, 6, 2, 8);
4654 path.close();
4655 pathB.setFillType(SkPath::kWinding_FillType);
4656 pathB.moveTo(1, 6);
4657 pathB.cubicTo(1.83333337f, 6, 2, 8, 2, 6);
4658 pathB.close();
4659 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4660}
4661
4662static void loops33i(skiatest::Reporter* reporter, const char* filename) {
4663 SkPath path, pathB;
4664 path.setFillType(SkPath::kWinding_FillType);
4665 path.moveTo(2, 6);
4666 path.cubicTo(1, 2, 7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f);
4667 path.close();
4668 pathB.setFillType(SkPath::kWinding_FillType);
4669 pathB.moveTo(1, 2);
4670 pathB.cubicTo(7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f, 2, 6);
4671 pathB.close();
4672 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4673}
4674
4675static void loops33iMod(skiatest::Reporter* reporter, const char* filename) {
4676 SkPoint pts[] = {{2, 6}, {1, 2}, {7.16666698f, 6.66666698f}, {-4.66666651f, 7.66666651f},
4677 {1, 2}, {7.16666698f, 6.66666698f}, {-4.66666651f, 7.66666651f}, {2, 6}};
4678 bool up = false;
4679 float offset = 0.0380172729f;
4680 float step = 7.62939453e-006f;
4681 bool lastResult = true;
4682 // for (int i = 0; i < 30; ++i) {
4683 SkString name(filename);
4684 // name.appendS32(i);
4685 // if (i > 0) {
4686 // SkDebugf("\n\n<div id=\"%s\">\n", name.c_str());
4687 // }
4688 pts[5].fY = 6.66666698f + offset;
4689 SkPath path, pathB;
4690 path.setFillType(SkPath::kWinding_FillType);
4691 path.moveTo(pts[0]);
4692 path.cubicTo(pts[1], pts[2], pts[3]);
4693 path.close();
4694 pathB.setFillType(SkPath::kWinding_FillType);
4695 pathB.moveTo(pts[4]);
4696 pathB.cubicTo(pts[5], pts[6], pts[7]);
4697 pathB.close();
4698 bool result = testPathOp(reporter, path, pathB, kIntersect_SkPathOp, name.c_str());
4699 if (lastResult != result) {
4700 up = !up;
4701 }
4702 step /= 2;
4703 offset += up ? step : -step;
4704 lastResult = result;
4705 // }
4706}
4707
4708
4709static void loops33iAsQuads(skiatest::Reporter* reporter, const char* filename) {
4710 SkPath path, pathB;
4711 path.setFillType(SkPath::kWinding_FillType);
4712 path.moveTo(2, 6);
4713 path.cubicTo(1, 2, 7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f);
4714 path.close();
4715 pathB.setFillType(SkPath::kWinding_FillType);
4716 pathB.moveTo(1, 2);
4717 pathB.cubicTo(7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f, 2, 6);
4718 pathB.close();
4719 SkPath qPath, qPathB;
4720 CubicPathToQuads(path, &qPath);
4721 CubicPathToQuads(pathB, &qPathB);
4722 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
4723}
4724
4725static void loops34i(skiatest::Reporter* reporter, const char* filename) {
4726 SkPath path, pathB;
4727 path.setFillType(SkPath::kWinding_FillType);
4728 path.moveTo(3, 4);
4729 path.cubicTo(0, 4, 2.5f, 4, 3, 9);
4730 path.close();
4731 pathB.setFillType(SkPath::kWinding_FillType);
4732 pathB.moveTo(0, 4);
4733 pathB.cubicTo(2.5f, 4, 3, 9, 3, 4);
4734 pathB.close();
4735 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4736}
4737
4738static void loops35i(skiatest::Reporter* reporter, const char* filename) {
4739 SkPath path, pathB;
4740 path.setFillType(SkPath::kWinding_FillType);
4741 path.moveTo(3, 4);
4742 path.cubicTo(0, 4, 2.5f, 4, 3, 10);
4743 path.close();
4744 pathB.setFillType(SkPath::kWinding_FillType);
4745 pathB.moveTo(0, 4);
4746 pathB.cubicTo(2.5f, 4, 3, 10, 3, 4);
4747 pathB.close();
4748 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4749}
4750
4751static void loops36i(skiatest::Reporter* reporter, const char* filename) {
4752 SkPath path, pathB;
4753 path.setFillType(SkPath::kWinding_FillType);
4754 path.moveTo(3, 4);
4755 path.cubicTo(1, 4, 2.66666675f, 4, 3, 8);
4756 path.close();
4757 pathB.setFillType(SkPath::kWinding_FillType);
4758 pathB.moveTo(1, 4);
4759 pathB.cubicTo(2.66666675f, 4, 3, 8, 3, 4);
4760 pathB.close();
4761 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4762}
4763
4764static void loops37i(skiatest::Reporter* reporter, const char* filename) {
4765 SkPath path, pathB;
4766 path.setFillType(SkPath::kWinding_FillType);
4767 path.moveTo(2, 4);
4768 path.cubicTo(1, 4, 1.83333337f, 4, 2, 5.33333349f);
4769 path.close();
4770 pathB.setFillType(SkPath::kWinding_FillType);
4771 pathB.moveTo(1, 4);
4772 pathB.cubicTo(1.83333337f, 4, 2, 5.33333349f, 2, 4);
4773 pathB.close();
4774 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4775}
4776
4777static void loops38i(skiatest::Reporter* reporter, const char* filename) {
4778 SkPath path, pathB;
4779 path.setFillType(SkPath::kWinding_FillType);
4780 path.moveTo(3, 4);
4781 path.cubicTo(2, 4, 2.83333325f, 4, 3, 6);
4782 path.close();
4783 pathB.setFillType(SkPath::kWinding_FillType);
4784 pathB.moveTo(2, 4);
4785 pathB.cubicTo(2.83333325f, 4, 3, 6, 3, 4);
4786 pathB.close();
4787 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4788}
4789
4790static void loops39i(skiatest::Reporter* reporter, const char* filename) {
4791 SkPath path, pathB;
4792 path.setFillType(SkPath::kWinding_FillType);
4793 path.moveTo(3, 5);
4794 path.cubicTo(0, 5, 2.5f, 5, 3, 10);
4795 path.close();
4796 pathB.setFillType(SkPath::kWinding_FillType);
4797 pathB.moveTo(0, 5);
4798 pathB.cubicTo(2.5f, 5, 3, 10, 3, 5);
4799 pathB.close();
4800 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4801}
4802
4803static void loops40i(skiatest::Reporter* reporter, const char* filename) {
4804 SkPath path, pathB;
4805 path.setFillType(SkPath::kWinding_FillType);
4806 path.moveTo(3, 5);
4807 path.cubicTo(0, 5, 2.5f, 5, 3, 11);
4808 path.close();
4809 pathB.setFillType(SkPath::kWinding_FillType);
4810 pathB.moveTo(0, 5);
4811 pathB.cubicTo(2.5f, 5, 3, 11, 3, 5);
4812 pathB.close();
4813 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4814}
4815
4816static void loops40iAsQuads(skiatest::Reporter* reporter, const char* filename) {
4817 SkPath path, pathB;
4818 path.setFillType(SkPath::kWinding_FillType);
4819 path.moveTo(3, 5);
4820 path.cubicTo(0, 5, 2.5f, 5, 3, 11);
4821 path.close();
4822 pathB.setFillType(SkPath::kWinding_FillType);
4823 pathB.moveTo(0, 5);
4824 pathB.cubicTo(2.5f, 5, 3, 11, 3, 5);
4825 pathB.close();
4826 SkPath qPath, qPathB;
4827 CubicPathToQuads(path, &qPath);
4828 CubicPathToQuads(pathB, &qPathB);
4829 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
4830}
4831
4832static void loops44i(skiatest::Reporter* reporter, const char* filename) {
4833 SkPath path, pathB;
4834 path.setFillType(SkPath::kWinding_FillType);
4835 path.moveTo(1, 5);
4836 path.cubicTo(0, 1, 7.33333302f, 5.33333349f, -7, 7);
4837 path.close();
4838 pathB.setFillType(SkPath::kWinding_FillType);
4839 pathB.moveTo(0, 1);
4840 pathB.cubicTo(7.33333302f, 5.33333349f, -7, 7, 1, 5);
4841 pathB.close();
4842 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4843}
4844
4845static void loops45i(skiatest::Reporter* reporter, const char* filename) {
4846 SkPath path, pathB;
4847 path.setFillType(SkPath::kWinding_FillType);
4848 path.moveTo(1, 6);
4849 path.cubicTo(0, 2, 7.33333302f, 6.33333302f, -7, 8);
4850 path.close();
4851 pathB.setFillType(SkPath::kWinding_FillType);
4852 pathB.moveTo(0, 2);
4853 pathB.cubicTo(7.33333302f, 6.33333302f, -7, 8, 1, 6);
4854 pathB.close();
4855 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4856}
4857
4858static void loops46i(skiatest::Reporter* reporter, const char* filename) {
4859 SkPath path, pathB;
4860 path.setFillType(SkPath::kWinding_FillType);
4861 path.moveTo(2, 6);
4862 path.cubicTo(1, 2, 8.33333302f, 6.33333302f, -6, 8);
4863 path.close();
4864 pathB.setFillType(SkPath::kWinding_FillType);
4865 pathB.moveTo(1, 2);
4866 pathB.cubicTo(8.33333302f, 6.33333302f, -6, 8, 2, 6);
4867 pathB.close();
4868 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4869}
4870
4871/*
4872FAILED: d:\cygwin\puregit\tests\pathopsextendedtest.cpp:346 0 */
4873static void loops47i(skiatest::Reporter* reporter, const char* filename) {
4874 SkPath path, pathB;
4875 path.setFillType(SkPath::kWinding_FillType);
4876 path.moveTo(2, 4);
4877 path.cubicTo(0, 1, 6, 5.83333302f, -4, 8);
4878 path.close();
4879 pathB.setFillType(SkPath::kWinding_FillType);
4880 pathB.moveTo(0, 1);
4881 pathB.cubicTo(6, 5.83333302f, -4, 8, 2, 4);
4882 pathB.close();
4883 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4884}
4885
4886static void loops48i(skiatest::Reporter* reporter, const char* filename) {
4887 SkPath path, pathB;
4888 path.setFillType(SkPath::kWinding_FillType);
4889 path.moveTo(2, 6);
4890 path.cubicTo(0, 1, 9.33333302f, 6.83333302f, -8.33333302f, 9.16666603f);
4891 path.close();
4892 pathB.setFillType(SkPath::kWinding_FillType);
4893 pathB.moveTo(0, 1);
4894 pathB.cubicTo(9.33333302f, 6.83333302f, -8.33333302f, 9.16666603f, 2, 6);
4895 pathB.close();
4896 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4897}
4898
4899static void loops49i(skiatest::Reporter* reporter, const char* filename) {
4900 SkPath path, pathB;
4901 path.setFillType(SkPath::kWinding_FillType);
4902 path.moveTo(0, 2);
4903 path.cubicTo(1, 4, -0.166666687f, 2.66666675f, 1.66666675f, 2);
4904 path.close();
4905 pathB.setFillType(SkPath::kWinding_FillType);
4906 pathB.moveTo(1, 4);
4907 pathB.cubicTo(-0.166666687f, 2.66666675f, 1.66666675f, 2, 0, 2);
4908 pathB.close();
4909 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4910}
4911
4912static void loops50i(skiatest::Reporter* reporter, const char* filename) {
4913 SkPath path, pathB;
4914 path.setFillType(SkPath::kWinding_FillType);
4915 path.moveTo(0, 3);
4916 path.cubicTo(1, 5, -0.166666687f, 3.66666675f, 1.66666675f, 3);
4917 path.close();
4918 pathB.setFillType(SkPath::kWinding_FillType);
4919 pathB.moveTo(1, 5);
4920 pathB.cubicTo(-0.166666687f, 3.66666675f, 1.66666675f, 3, 0, 3);
4921 pathB.close();
4922 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4923}
4924
4925static void loops51i(skiatest::Reporter* reporter, const char* filename) {
4926 SkPath path, pathB;
4927 path.setFillType(SkPath::kWinding_FillType);
4928 path.moveTo(1, 2);
4929 path.cubicTo(2, 4, 0.833333313f, 2.66666675f, 2.66666675f, 2);
4930 path.close();
4931 pathB.setFillType(SkPath::kWinding_FillType);
4932 pathB.moveTo(2, 4);
4933 pathB.cubicTo(0.833333313f, 2.66666675f, 2.66666675f, 2, 1, 2);
4934 pathB.close();
4935 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4936}
4937
4938static void loops52i(skiatest::Reporter* reporter, const char* filename) {
4939 SkPath path, pathB;
4940 path.setFillType(SkPath::kWinding_FillType);
4941 path.moveTo(1, 3);
4942 path.cubicTo(2, 5, 0.833333313f, 3.66666675f, 2.66666675f, 3);
4943 path.close();
4944 pathB.setFillType(SkPath::kWinding_FillType);
4945 pathB.moveTo(2, 5);
4946 pathB.cubicTo(0.833333313f, 3.66666675f, 2.66666675f, 3, 1, 3);
4947 pathB.close();
4948 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4949}
4950
4951static void loops53i(skiatest::Reporter* reporter, const char* filename) {
4952 SkPath path, pathB;
4953 path.setFillType(SkPath::kWinding_FillType);
4954 path.moveTo(2, 3);
4955 path.cubicTo(3, 5, 1.83333325f, 3.66666675f, 3.66666651f, 3);
4956 path.close();
4957 pathB.setFillType(SkPath::kWinding_FillType);
4958 pathB.moveTo(3, 5);
4959 pathB.cubicTo(1.83333325f, 3.66666675f, 3.66666651f, 3, 2, 3);
4960 pathB.close();
4961 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4962}
4963
4964static void loops54i(skiatest::Reporter* reporter, const char* filename) {
4965 SkPath path, pathB;
4966 path.setFillType(SkPath::kWinding_FillType);
4967 path.moveTo(0, 2);
4968 path.cubicTo(1, 4, 0, 3, 1.66666675f, 2);
4969 path.close();
4970 pathB.setFillType(SkPath::kWinding_FillType);
4971 pathB.moveTo(1, 4);
4972 pathB.cubicTo(0, 3, 1.66666675f, 2, 0, 2);
4973 pathB.close();
4974 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4975}
4976
4977static void loops55i(skiatest::Reporter* reporter, const char* filename) {
4978 SkPath path, pathB;
4979 path.setFillType(SkPath::kWinding_FillType);
4980 path.moveTo(0, 3);
4981 path.cubicTo(1, 5, 0, 4, 1.66666675f, 3);
4982 path.close();
4983 pathB.setFillType(SkPath::kWinding_FillType);
4984 pathB.moveTo(1, 5);
4985 pathB.cubicTo(0, 4, 1.66666675f, 3, 0, 3);
4986 pathB.close();
4987 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4988}
4989
4990static void loops56i(skiatest::Reporter* reporter, const char* filename) {
4991 SkPath path, pathB;
4992 path.setFillType(SkPath::kWinding_FillType);
4993 path.moveTo(1, 2);
4994 path.cubicTo(2, 4, 0.99999994f, 3, 2.66666675f, 2);
4995 path.close();
4996 pathB.setFillType(SkPath::kWinding_FillType);
4997 pathB.moveTo(2, 4);
4998 pathB.cubicTo(0.99999994f, 3, 2.66666675f, 2, 1, 2);
4999 pathB.close();
5000 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5001}
5002
5003static void loops57i(skiatest::Reporter* reporter, const char* filename) {
5004 SkPath path, pathB;
5005 path.setFillType(SkPath::kWinding_FillType);
5006 path.moveTo(1, 3);
5007 path.cubicTo(2, 5, 0.99999994f, 4, 2.66666675f, 3);
5008 path.close();
5009 pathB.setFillType(SkPath::kWinding_FillType);
5010 pathB.moveTo(2, 5);
5011 pathB.cubicTo(0.99999994f, 4, 2.66666675f, 3, 1, 3);
5012 pathB.close();
5013 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5014}
5015
5016static void loops58i(skiatest::Reporter* reporter, const char* filename) {
5017 SkPath path, pathB;
5018 path.setFillType(SkPath::kWinding_FillType);
5019 path.moveTo(2, 3);
5020 path.cubicTo(3, 5, 2, 4, 3.66666651f, 3);
5021 path.close();
5022 pathB.setFillType(SkPath::kWinding_FillType);
5023 pathB.moveTo(3, 5);
5024 pathB.cubicTo(2, 4, 3.66666651f, 3, 2, 3);
5025 pathB.close();
5026 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5027}
5028
5029static void loops58iAsQuads(skiatest::Reporter* reporter, const char* filename) {
5030 SkPath path, pathB;
5031 path.setFillType(SkPath::kWinding_FillType);
5032 path.moveTo(2, 3);
5033 path.cubicTo(3, 5, 2, 4, 3.66666651f, 3);
5034 path.close();
5035 pathB.setFillType(SkPath::kWinding_FillType);
5036 pathB.moveTo(3, 5);
5037 pathB.cubicTo(2, 4, 3.66666651f, 3, 2, 3);
5038 pathB.close();
5039 SkPath qPath, qPathB;
5040 CubicPathToQuads(path, &qPath);
5041 CubicPathToQuads(pathB, &qPathB);
5042// SkPoint from = {2.61714339f,1.90228665f};
5043// SkPoint to = {2.617045833359139f,1.9013528935803314f};
5044// path_edit(from, to, &qPathB);
5045 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
5046}
5047
5048static void loops59i(skiatest::Reporter* reporter, const char* filename) {
5049 SkPath path, pathB;
5050 path.setFillType(SkPath::kWinding_FillType);
5051 path.moveTo(0, 6);
5052 path.cubicTo(1, 2, 7.33333302f, 1.66666663f, -7.5f, 2);
5053 path.close();
5054 pathB.setFillType(SkPath::kWinding_FillType);
5055 pathB.moveTo(1, 2);
5056 pathB.cubicTo(7.33333302f, 1.66666663f, -7.5f, 2, 0, 6);
5057 pathB.close();
5058 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5059}
5060
5061static void loops59iasQuads(skiatest::Reporter* reporter, const char* filename) {
5062 SkPath path, pathB;
5063 path.setFillType(SkPath::kWinding_FillType);
5064 path.moveTo(0, 6);
5065 path.cubicTo(1, 2, 7.33333302f, 1.66666663f, -7.5f, 2);
5066 path.close();
5067 pathB.setFillType(SkPath::kWinding_FillType);
5068 pathB.moveTo(1, 2);
5069 pathB.cubicTo(7.33333302f, 1.66666663f, -7.5f, 2, 0, 6);
5070 pathB.close();
5071 SkPath qPath, qPathB;
5072 CubicPathToQuads(path, &qPath);
5073 CubicPathToQuads(pathB, &qPathB);
5074 SkPoint from = {2.61714339f,1.90228665f};
5075 SkPoint to = {2.617045833359139f,1.9013528935803314f};
5076 path_edit(from, to, &qPathB);
5077 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
5078}
5079
5080static void cubics41d(skiatest::Reporter* reporter, const char* filename) {
5081 SkPath path, pathB;
5082 path.setFillType(SkPath::kWinding_FillType);
5083 path.moveTo(0, 1);
5084 path.cubicTo(1, 4, 3, 0, 3, 1);
5085 path.close();
5086 pathB.setFillType(SkPath::kWinding_FillType);
5087 pathB.moveTo(0, 3);
5088 pathB.cubicTo(1, 3, 1, 0, 4, 1);
5089 pathB.close();
5090 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5091}
5092
5093void loops61i(skiatest::Reporter* reporter, const char* filename) {
5094 SkPath path, pathB;
5095 path.setFillType(SkPath::kWinding_FillType);
5096 path.moveTo(0, 1);
5097 path.cubicTo(1, 5, -6.33333302f, 0.666666627f, 8, -1);
5098 path.close();
5099 pathB.setFillType(SkPath::kWinding_FillType);
5100 pathB.moveTo(1, 5);
5101 pathB.cubicTo(-6.33333302f, 0.666666627f, 8, -1, 0, 1);
5102 pathB.close();
5103 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5104}
5105
5106static void loops62i(skiatest::Reporter* reporter, const char* filename) {
5107 SkPath path, pathB;
5108 path.setFillType(SkPath::kWinding_FillType);
5109 path.moveTo(0, 2);
5110 path.cubicTo(1, 6, -6.33333302f, 1.66666663f, 8, 0);
5111 path.close();
5112 pathB.setFillType(SkPath::kWinding_FillType);
5113 pathB.moveTo(1, 6);
5114 pathB.cubicTo(-6.33333302f, 1.66666663f, 8, 0, 0, 2);
5115 pathB.close();
5116 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5117}
5118
5119static void loops63i(skiatest::Reporter* reporter, const char* filename) {
5120 SkPath path, pathB;
5121 path.setFillType(SkPath::kWinding_FillType);
5122 path.moveTo(0, 1);
5123 path.cubicTo(2, 4, -4, -0.833333254f, 6, -3);
5124 path.close();
5125 pathB.setFillType(SkPath::kWinding_FillType);
5126 pathB.moveTo(2, 4);
5127 pathB.cubicTo(-4, -0.833333254f, 6, -3, 0, 1);
5128 pathB.close();
5129 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5130}
5131
5132static void cubics44d(skiatest::Reporter* reporter, const char* filename) {
5133 SkPath path, pathB;
5134 path.setFillType(SkPath::kWinding_FillType);
5135 path.moveTo(3, 4);
5136 path.cubicTo(2, 5, 3, 1, 6, 2);
5137 path.close();
5138 pathB.setFillType(SkPath::kWinding_FillType);
5139 pathB.moveTo(1, 3);
5140 pathB.cubicTo(2, 6, 4, 3, 5, 2);
5141 pathB.close();
5142 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5143}
5144
5145static void cubics45u(skiatest::Reporter* reporter, const char* filename) {
5146 SkPath path, pathB;
5147 path.setFillType(SkPath::kWinding_FillType);
5148 path.moveTo(1, 3);
5149 path.cubicTo(2, 6, 4, 3, 5, 2);
5150 path.close();
5151 pathB.setFillType(SkPath::kWinding_FillType);
5152 pathB.moveTo(3, 4);
5153 pathB.cubicTo(2, 5, 3, 1, 6, 2);
5154 pathB.close();
5155 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
5156}
5157
5158static void fuzz38(skiatest::Reporter* reporter, const char* filename) {
5159 SkPath path, pathB;
5160 path.moveTo(100.34f, 303.312f);
5161 path.lineTo(-1e+08, 303.312f);
5162 path.lineTo(102, 310.156f);
5163 path.lineTo(100.34f, 310.156f);
5164 path.lineTo(100.34f, 303.312f);
5165 path.close();
5166 testPathOpCheck(reporter, path, pathB, kUnion_SkPathOp, filename, true);
5167}
5168
5169static void crbug_526025(skiatest::Reporter* reporter, const char* filename) {
5170 SkPath path;
5171 path.setFillType((SkPath::FillType) 1);
5172path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.14748e+09f
5173path.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
5174path.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
5175path.lineTo(SkBits2Float(0x444bf3bc), SkBits2Float(0x4460537e)); // 815.808f, 897.305f
5176path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
5177path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
5178path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
5179path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
5180path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
5181path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
5182
5183 SkPath path1(path);
5184 path.reset();
5185 path.setFillType((SkPath::FillType) 0);
5186path.moveTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
5187path.lineTo(SkBits2Float(0x45d5c000), SkBits2Float(0x43870000)); // 6840, 270
5188path.lineTo(SkBits2Float(0xd0a00000), SkBits2Float(0x4cbebc20)); // -2.14748e+10f, 1e+08
5189path.lineTo(SkBits2Float(0x451f7000), SkBits2Float(0x42800000)); // 2551, 64
5190path.lineTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
5191path.close();
5192
5193 SkPath path2(path);
5194 testPathOp(reporter, path1, path2, (SkPathOp) 2, filename);
5195}
5196
5197static void fuzzX_392(skiatest::Reporter* reporter, const char* filename) {
5198 SkPath path;
5199 path.setFillType(SkPath::kEvenOdd_FillType);
5200path.moveTo(SkBits2Float(0x41e80000), SkBits2Float(0x43bde212)); // 29, 379.766f
5201path.lineTo(SkBits2Float(0x41e80000), SkBits2Float(0x43bdc7ef)); // 29, 379.562f
5202path.conicTo(SkBits2Float(0x42a5861e), SkBits2Float(0x43c61f86), SkBits2Float(0x430b0610), SkBits2Float(0x43c61f86), SkBits2Float(0x3f7d23f3)); // 82.7619f, 396.246f, 139.024f, 396.246f, 0.98883f
5203path.conicTo(SkBits2Float(0x42a58e20), SkBits2Float(0x43c61f86), SkBits2Float(0x41e80000), SkBits2Float(0x43bde212), SkBits2Float(0x3f7d2cf5)); // 82.7776f, 396.246f, 29, 379.766f, 0.988967f
5204path.close();
5205
5206 SkPath path1(path);
5207 path.setFillType(SkPath::kWinding_FillType);
5208path.moveTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0xc3a31d72)); // -236.484f, -326.23f
5209path.lineTo(SkBits2Float(0xc367a4ae), SkBits2Float(0xc3a31d72)); // -231.643f, -326.23f
5210path.lineTo(SkBits2Float(0x430b0610), SkBits2Float(0x43c61f86)); // 139.024f, 396.246f
5211path.lineTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0x43c61f86)); // -236.484f, 396.246f
5212
5213 SkPath path2(path);
5214 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
5215}
5216
5217static void dean2(skiatest::Reporter* reporter, const char* filename) {
5218 SkPath path;
5219 path.setFillType((SkPath::FillType) 0);
5220path.moveTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5221path.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
5222path.cubicTo(SkBits2Float(0x414a835a), SkBits2Float(0x3ec07ba6), SkBits2Float(0x413fcc0d), SkBits2Float(0x3e193319), SkBits2Float(0x4134a02b), SkBits2Float(0x00000000)); // 12.6571f, 0.375943f, 11.9873f, 0.149609f, 11.2891f, 0
5223path.lineTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5224path.close();
5225 SkPath path1(path);
5226
5227 path.reset();
5228 path.setFillType((SkPath::FillType) 0);
5229path.moveTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5230path.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
5231path.lineTo(SkBits2Float(0x417ab74b), SkBits2Float(0x4154a02b)); // 15.6697f, 13.2891f
5232path.lineTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5233path.close();
5234 SkPath path2(path);
5235 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
5236}
5237
5238static void cubics_d(skiatest::Reporter* reporter, const char* filename) {
5239 SkPath path, pathB;
5240 path.setFillType(SkPath::kWinding_FillType);
5241 path.moveTo(0, 1);
5242 path.cubicTo(3, 5, 1, 0, 3, 0);
5243 path.close();
5244 pathB.setFillType(SkPath::kWinding_FillType);
5245 pathB.moveTo(0, 1);
5246 pathB.cubicTo(0, 3, 1, 0, 5, 3);
5247 pathB.close();
5248 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5249}
5250
5251static void cubics_d2(skiatest::Reporter* reporter, const char* filename) {
5252 SkPath path, pathB;
5253 path.setFillType(SkPath::kWinding_FillType);
5254 path.moveTo(0, 1);
5255 path.cubicTo(2, 5, 2, 0, 2, 1);
5256 path.close();
5257 pathB.setFillType(SkPath::kWinding_FillType);
5258 pathB.moveTo(0, 2);
5259 pathB.cubicTo(1, 2, 1, 0, 5, 2);
5260 pathB.close();
5261 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5262}
5263
5264static void loops_i1(skiatest::Reporter* reporter, const char* filename) {
5265 SkPath path, pathB;
5266 path.setFillType(SkPath::kWinding_FillType);
5267 path.moveTo(2, 3);
5268 path.cubicTo(0, 4, -0.333333343f, 4.66666651f, 3, 5.83333349f);
5269 path.close();
5270 pathB.setFillType(SkPath::kWinding_FillType);
5271 pathB.moveTo(0, 4);
5272 pathB.cubicTo(-0.333333343f, 4.66666651f, 3, 5.83333349f, 2, 3);
5273 pathB.close();
5274 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5275}
5276
5277static void loops_i2(skiatest::Reporter* reporter, const char* filename) {
5278 SkPath path, pathB;
5279 path.setFillType(SkPath::kWinding_FillType);
5280 path.moveTo(2, 4);
5281 path.cubicTo(0, 5, -0.333333343f, 5.66666651f, 3, 6.83333302f);
5282 path.close();
5283 pathB.setFillType(SkPath::kWinding_FillType);
5284 pathB.moveTo(0, 5);
5285 pathB.cubicTo(-0.333333343f, 5.66666651f, 3, 6.83333302f, 2, 4);
5286 pathB.close();
5287 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5288}
5289
5290static void loops_i3(skiatest::Reporter* reporter, const char* filename) {
5291 SkPath path, pathB;
5292 path.setFillType(SkPath::kWinding_FillType);
5293 path.moveTo(2, 5);
5294 path.cubicTo(0, 6, -0.333333343f, 6.66666651f, 3, 7.83333302f);
5295 path.close();
5296 pathB.setFillType(SkPath::kWinding_FillType);
5297 pathB.moveTo(0, 6);
5298 pathB.cubicTo(-0.333333343f, 6.66666651f, 3, 7.83333302f, 2, 5);
5299 pathB.close();
5300 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5301}
5302
5303static void loops_i4(skiatest::Reporter* reporter, const char* filename) {
5304 SkPath path, pathB;
5305 path.setFillType(SkPath::kWinding_FillType);
5306 path.moveTo(3, 4);
5307 path.cubicTo(1, 5, 0.666666627f, 5.66666651f, 4, 6.83333302f);
5308 path.close();
5309 pathB.setFillType(SkPath::kWinding_FillType);
5310 pathB.moveTo(1, 5);
5311 pathB.cubicTo(0.666666627f, 5.66666651f, 4, 6.83333302f, 3, 4);
5312 pathB.close();
5313 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5314}
5315
5316static void loops_i5(skiatest::Reporter* reporter, const char* filename) {
5317 SkPath path, pathB;
5318 path.setFillType(SkPath::kWinding_FillType);
5319 path.moveTo(3, 5);
5320 path.cubicTo(1, 6, 0.666666627f, 6.66666651f, 4, 7.83333302f);
5321 path.close();
5322 pathB.setFillType(SkPath::kWinding_FillType);
5323 pathB.moveTo(1, 6);
5324 pathB.cubicTo(0.666666627f, 6.66666651f, 4, 7.83333302f, 3, 5);
5325 pathB.close();
5326 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5327}
5328
5329static void loops_i6(skiatest::Reporter* reporter, const char* filename) {
5330 SkPath path, pathB;
5331 path.setFillType(SkPath::kWinding_FillType);
5332 path.moveTo(4, 5);
5333 path.cubicTo(2, 6, 1.66666663f, 6.66666651f, 5, 7.83333302f);
5334 path.close();
5335 pathB.setFillType(SkPath::kWinding_FillType);
5336 pathB.moveTo(2, 6);
5337 pathB.cubicTo(1.66666663f, 6.66666651f, 5, 7.83333302f, 4, 5);
5338 pathB.close();
5339 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5340}
5341
5342static void cubics_d3(skiatest::Reporter* reporter, const char* filename) {
5343 SkPath path, pathB;
5344 path.setFillType(SkPath::kWinding_FillType);
5345 path.moveTo(3, 4);
5346 path.cubicTo(0, 6, 6, 1, 4, 2);
5347 path.close();
5348 pathB.setFillType(SkPath::kWinding_FillType);
5349 pathB.moveTo(1, 6);
5350 pathB.cubicTo(2, 4, 4, 3, 6, 0);
5351 pathB.close();
5352 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5353}
5354
5355static void cubics_o(skiatest::Reporter* reporter, const char* filename) {
5356 SkPath path, pathB;
5357 path.setFillType(SkPath::kWinding_FillType);
5358 path.moveTo(1, 4);
5359 path.cubicTo(2, 6, 5, 0, 5, 3);
5360 path.close();
5361 pathB.setFillType(SkPath::kWinding_FillType);
5362 pathB.moveTo(0, 5);
5363 pathB.cubicTo(3, 5, 4, 1, 6, 2);
5364 pathB.close();
5365 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
5366}
5367
5368static void cubicOp158(skiatest::Reporter* reporter, const char* filename) {
5369 SkPath path, pathB;
5370 path.setFillType(SkPath::kWinding_FillType);
5371 path.moveTo(0,1);
5372 path.cubicTo(2,4, 2,0, 2,0);
5373 path.close();
5374 pathB.setFillType(SkPath::kWinding_FillType);
5375 pathB.moveTo(0,2);
5376 pathB.cubicTo(0,2, 1,0, 4,2);
5377 pathB.close();
5378 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5379}
5380
5381static void loop17(skiatest::Reporter* reporter, const char* filename) {
5382 SkPath path, pathB;
5383 path.moveTo(1, 2);
5384 path.cubicTo(0, 3, -0.333333343f, 3.33333325f, 0.833333373f, 3.5f);
5385 path.close();
5386 pathB.moveTo(0, 3);
5387 pathB.cubicTo(-0.333333343f, 3.33333325f, 0.833333373f, 3.5f, 1, 2);
5388 pathB.close();
5389 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5390}
5391
5392static void circlesOp4(skiatest::Reporter* reporter, const char* filename) {
5393 SkPath path, pathB;
5394 path.setFillType(SkPath::kWinding_FillType);
5395 path.addCircle(0, 1, 5, SkPath::kCW_Direction);
5396 pathB.setFillType(SkPath::kWinding_FillType);
5397 pathB.addCircle(0, 1, 0, SkPath::kCW_Direction);
5398 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5399}
5400
5401static void bug5240(skiatest::Reporter* reporter, const char* filename) {
5402 SkPath path;
5403path.moveTo(815, 82);
5404path.cubicTo(814.4794311523438f, 82.7868881225586f, 814.5330810546875f,
540582.6266555786133f, 814.5291137695312f, 82.6252212524414f);
5406path.cubicTo(814.5229492187500f, 82.6230010986328f, 814.3790283203125f,
540783.0008087158203f, 813.8533935546875f, 82.7072601318359f);
5408path.close();
5409 testPathOp(reporter, path, path, kUnion_SkPathOp, filename);
5410}
5411
5412static void android1(skiatest::Reporter* reporter, const char* filename) {
5413 SkPath path, pathB;
5414path.moveTo(SkBits2Float(0xc0a00000), SkBits2Float(0x00000000)); // -5, 0
5415path.lineTo(SkBits2Float(0x44866000), SkBits2Float(0x00000000)); // 1075, 0
5416path.lineTo(SkBits2Float(0x44866000), SkBits2Float(0x43720000)); // 1075, 242
5417path.lineTo(SkBits2Float(0xc0a00000), SkBits2Float(0x43720000)); // -5, 242
5418path.lineTo(SkBits2Float(0xc0a00000), SkBits2Float(0x00000000)); // -5, 0
5419path.close();
5420pathB.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
5421pathB.lineTo(SkBits2Float(0x44870000), SkBits2Float(0x00000000)); // 1080, 0
5422pathB.lineTo(SkBits2Float(0x44870000), SkBits2Float(0x43720000)); // 1080, 242
5423pathB.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x43720000)); // 0, 242
5424pathB.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
5425pathB.close();
5426 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5427}
5428
Cary Clark22582502017-12-13 14:56:53 -05005429static void seanbug(skiatest::Reporter* reporter, const char* filename) {
5430 SkPath path;
5431 path.setFillType(SkPath::kEvenOdd_FillType);
5432 path.moveTo(SkBits2Float(0x45b56000), SkBits2Float(0x45bca000)); // 5804, 6036
5433 path.lineTo(SkBits2Float(0x45b55f0a), SkBits2Float(0x45bc9fc0)); // 5803.88f, 6035.97f
5434 path.lineTo(SkBits2Float(0x45b55e15), SkBits2Float(0x45bc9f7b)); // 5803.76f, 6035.94f
5435 path.lineTo(SkBits2Float(0x45b55d1f), SkBits2Float(0x45bc9f32)); // 5803.64f, 6035.9f
5436 path.lineTo(SkBits2Float(0x45b55c29), SkBits2Float(0x45bc9ee3)); // 5803.52f, 6035.86f
5437 path.lineTo(SkBits2Float(0x45b55b34), SkBits2Float(0x45bc9e90)); // 5803.4f, 6035.82f
5438 path.lineTo(SkBits2Float(0x45b55a3f), SkBits2Float(0x45bc9e38)); // 5803.28f, 6035.78f
5439 path.lineTo(SkBits2Float(0x45b5594a), SkBits2Float(0x45bc9ddc)); // 5803.16f, 6035.73f
5440 path.lineTo(SkBits2Float(0x45b55856), SkBits2Float(0x45bc9d7a)); // 5803.04f, 6035.68f
5441 path.lineTo(SkBits2Float(0x45b55762), SkBits2Float(0x45bc9d14)); // 5802.92f, 6035.63f
5442 path.lineTo(SkBits2Float(0x45b5566f), SkBits2Float(0x45bc9caa)); // 5802.8f, 6035.58f
5443 path.lineTo(SkBits2Float(0x45b5557c), SkBits2Float(0x45bc9c3b)); // 5802.69f, 6035.53f
5444 path.lineTo(SkBits2Float(0x45b55489), SkBits2Float(0x45bc9bc7)); // 5802.57f, 6035.47f
5445 path.lineTo(SkBits2Float(0x45b55397), SkBits2Float(0x45bc9b4f)); // 5802.45f, 6035.41f
5446 path.lineTo(SkBits2Float(0x45b552a6), SkBits2Float(0x45bc9ad3)); // 5802.33f, 6035.35f
5447 path.lineTo(SkBits2Float(0x45b551b5), SkBits2Float(0x45bc9a52)); // 5802.21f, 6035.29f
5448 path.lineTo(SkBits2Float(0x45b550c5), SkBits2Float(0x45bc99cd)); // 5802.1f, 6035.23f
5449 path.lineTo(SkBits2Float(0x45b54fd6), SkBits2Float(0x45bc9943)); // 5801.98f, 6035.16f
5450 path.lineTo(SkBits2Float(0x45b54ee8), SkBits2Float(0x45bc98b6)); // 5801.86f, 6035.09f
5451 path.lineTo(SkBits2Float(0x45b54dfb), SkBits2Float(0x45bc9824)); // 5801.75f, 6035.02f
5452 path.lineTo(SkBits2Float(0x45b54d0e), SkBits2Float(0x45bc978d)); // 5801.63f, 6034.94f
5453 path.lineTo(SkBits2Float(0x45b54c23), SkBits2Float(0x45bc96f3)); // 5801.52f, 6034.87f
5454 path.lineTo(SkBits2Float(0x45b54b39), SkBits2Float(0x45bc9654)); // 5801.4f, 6034.79f
5455 path.lineTo(SkBits2Float(0x45b54a4f), SkBits2Float(0x45bc95b2)); // 5801.29f, 6034.71f
5456 path.lineTo(SkBits2Float(0x45b54967), SkBits2Float(0x45bc950b)); // 5801.18f, 6034.63f
5457 path.lineTo(SkBits2Float(0x45b54880), SkBits2Float(0x45bc9460)); // 5801.06f, 6034.55f
5458 path.lineTo(SkBits2Float(0x45b5479a), SkBits2Float(0x45bc93b1)); // 5800.95f, 6034.46f
5459 path.lineTo(SkBits2Float(0x45b546b6), SkBits2Float(0x45bc92fe)); // 5800.84f, 6034.37f
5460 path.lineTo(SkBits2Float(0x45b545d3), SkBits2Float(0x45bc9248)); // 5800.73f, 6034.29f
5461 path.lineTo(SkBits2Float(0x45b544f1), SkBits2Float(0x45bc918d)); // 5800.62f, 6034.19f
5462 path.lineTo(SkBits2Float(0x45b54410), SkBits2Float(0x45bc90cf)); // 5800.51f, 6034.1f
5463 path.lineTo(SkBits2Float(0x45b54331), SkBits2Float(0x45bc900d)); // 5800.4f, 6034.01f
5464 path.lineTo(SkBits2Float(0x45b54254), SkBits2Float(0x45bc8f47)); // 5800.29f, 6033.91f
5465 path.lineTo(SkBits2Float(0x45b54178), SkBits2Float(0x45bc8e7d)); // 5800.18f, 6033.81f
5466 path.lineTo(SkBits2Float(0x45b5409e), SkBits2Float(0x45bc8db0)); // 5800.08f, 6033.71f
5467 path.lineTo(SkBits2Float(0x45b53fc6), SkBits2Float(0x45bc8cde)); // 5799.97f, 6033.61f
5468 path.lineTo(SkBits2Float(0x45b53eef), SkBits2Float(0x45bc8c0a)); // 5799.87f, 6033.5f
5469 path.lineTo(SkBits2Float(0x45b53e1a), SkBits2Float(0x45bc8b31)); // 5799.76f, 6033.4f
5470 path.lineTo(SkBits2Float(0x45b53d47), SkBits2Float(0x45bc8a56)); // 5799.66f, 6033.29f
5471 path.lineTo(SkBits2Float(0x45b53c75), SkBits2Float(0x45bc8976)); // 5799.56f, 6033.18f
5472 path.lineTo(SkBits2Float(0x45b53ba6), SkBits2Float(0x45bc8893)); // 5799.46f, 6033.07f
5473 path.lineTo(SkBits2Float(0x45b53ad8), SkBits2Float(0x45bc87ad)); // 5799.36f, 6032.96f
5474 path.lineTo(SkBits2Float(0x45b53a0d), SkBits2Float(0x45bc86c4)); // 5799.26f, 6032.85f
5475 path.lineTo(SkBits2Float(0x45b53944), SkBits2Float(0x45bc85d6)); // 5799.16f, 6032.73f
5476 path.lineTo(SkBits2Float(0x45b5387c), SkBits2Float(0x45bc84e6)); // 5799.06f, 6032.61f
5477 path.lineTo(SkBits2Float(0x45b537b7), SkBits2Float(0x45bc83f2)); // 5798.96f, 6032.49f
5478 path.lineTo(SkBits2Float(0x45b536f4), SkBits2Float(0x45bc82fc)); // 5798.87f, 6032.37f
5479 path.lineTo(SkBits2Float(0x45b53634), SkBits2Float(0x45bc8201)); // 5798.78f, 6032.25f
5480 path.lineTo(SkBits2Float(0x45b53575), SkBits2Float(0x45bc8104)); // 5798.68f, 6032.13f
5481 path.lineTo(SkBits2Float(0x45b534ba), SkBits2Float(0x45bc8004)); // 5798.59f, 6032
5482 path.lineTo(SkBits2Float(0x45b53400), SkBits2Float(0x45bc7f00)); // 5798.5f, 6031.88f
5483 path.lineTo(SkBits2Float(0x45b53349), SkBits2Float(0x45bc7df9)); // 5798.41f, 6031.75f
5484 path.lineTo(SkBits2Float(0x45b53294), SkBits2Float(0x45bc7cf0)); // 5798.32f, 6031.62f
5485 path.lineTo(SkBits2Float(0x45b531e2), SkBits2Float(0x45bc7be3)); // 5798.24f, 6031.49f
5486 path.lineTo(SkBits2Float(0x45b53133), SkBits2Float(0x45bc7ad3)); // 5798.15f, 6031.35f
5487 path.lineTo(SkBits2Float(0x45b53086), SkBits2Float(0x45bc79c1)); // 5798.07f, 6031.22f
5488 path.lineTo(SkBits2Float(0x45b52fdc), SkBits2Float(0x45bc78ab)); // 5797.98f, 6031.08f
5489 path.lineTo(SkBits2Float(0x45b52f35), SkBits2Float(0x45bc7793)); // 5797.9f, 6030.95f
5490 path.lineTo(SkBits2Float(0x45b52e90), SkBits2Float(0x45bc7678)); // 5797.82f, 6030.81f
5491 path.lineTo(SkBits2Float(0x45b52def), SkBits2Float(0x45bc755a)); // 5797.74f, 6030.67f
5492 path.lineTo(SkBits2Float(0x45b52d50), SkBits2Float(0x45bc7439)); // 5797.66f, 6030.53f
5493 path.lineTo(SkBits2Float(0x45b52cb4), SkBits2Float(0x45bc7316)); // 5797.59f, 6030.39f
5494 path.lineTo(SkBits2Float(0x45b52c1b), SkBits2Float(0x45bc71f0)); // 5797.51f, 6030.24f
5495 path.lineTo(SkBits2Float(0x45b52b86), SkBits2Float(0x45bc70c7)); // 5797.44f, 6030.1f
5496 path.lineTo(SkBits2Float(0x45b52af3), SkBits2Float(0x45bc6f9c)); // 5797.37f, 6029.95f
5497 path.lineTo(SkBits2Float(0x45b52a63), SkBits2Float(0x45bc6e6e)); // 5797.3f, 6029.8f
5498 path.lineTo(SkBits2Float(0x45b529d7), SkBits2Float(0x45bc6d3e)); // 5797.23f, 6029.66f
5499 path.lineTo(SkBits2Float(0x45b5294e), SkBits2Float(0x45bc6c0b)); // 5797.16f, 6029.51f
5500 path.lineTo(SkBits2Float(0x45b528c8), SkBits2Float(0x45bc6ad6)); // 5797.1f, 6029.35f
5501 path.lineTo(SkBits2Float(0x45b52846), SkBits2Float(0x45bc699e)); // 5797.03f, 6029.2f
5502 path.lineTo(SkBits2Float(0x45b527c7), SkBits2Float(0x45bc6864)); // 5796.97f, 6029.05f
5503 path.lineTo(SkBits2Float(0x45b5274b), SkBits2Float(0x45bc6728)); // 5796.91f, 6028.89f
5504 path.lineTo(SkBits2Float(0x45b526d3), SkBits2Float(0x45bc65e9)); // 5796.85f, 6028.74f
5505 path.lineTo(SkBits2Float(0x45b5265e), SkBits2Float(0x45bc64a8)); // 5796.8f, 6028.58f
5506 path.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45bc639b)); // 5796.75f, 6028.45f
5507 path.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45bab032)); // 5796.75f, 5974.02f
5508 path.lineTo(SkBits2Float(0x45b52611), SkBits2Float(0x45baaffd)); // 5796.76f, 5974
5509 path.lineTo(SkBits2Float(0x45b52687), SkBits2Float(0x45baae9d)); // 5796.82f, 5973.83f
5510 path.lineTo(SkBits2Float(0x45b52700), SkBits2Float(0x45baad40)); // 5796.88f, 5973.66f
5511 path.lineTo(SkBits2Float(0x45b5277d), SkBits2Float(0x45baabe7)); // 5796.94f, 5973.49f
5512 path.lineTo(SkBits2Float(0x45b527fe), SkBits2Float(0x45baaa91)); // 5797, 5973.32f
5513 path.lineTo(SkBits2Float(0x45b52883), SkBits2Float(0x45baa93f)); // 5797.06f, 5973.16f
5514 path.lineTo(SkBits2Float(0x45b5290b), SkBits2Float(0x45baa7f1)); // 5797.13f, 5972.99f
5515 path.lineTo(SkBits2Float(0x45b52998), SkBits2Float(0x45baa6a6)); // 5797.2f, 5972.83f
5516 path.lineTo(SkBits2Float(0x45b52a28), SkBits2Float(0x45baa55f)); // 5797.27f, 5972.67f
5517 path.lineTo(SkBits2Float(0x45b52abb), SkBits2Float(0x45baa41c)); // 5797.34f, 5972.51f
5518 path.lineTo(SkBits2Float(0x45b52b52), SkBits2Float(0x45baa2dc)); // 5797.42f, 5972.36f
5519 path.lineTo(SkBits2Float(0x45b52bed), SkBits2Float(0x45baa1a0)); // 5797.49f, 5972.2f
5520 path.lineTo(SkBits2Float(0x45b52c8c), SkBits2Float(0x45baa068)); // 5797.57f, 5972.05f
5521 path.lineTo(SkBits2Float(0x45b52d2e), SkBits2Float(0x45ba9f34)); // 5797.65f, 5971.9f
5522 path.lineTo(SkBits2Float(0x45b52dd3), SkBits2Float(0x45ba9e04)); // 5797.73f, 5971.75f
5523 path.lineTo(SkBits2Float(0x45b52e7c), SkBits2Float(0x45ba9cd8)); // 5797.81f, 5971.61f
5524 path.lineTo(SkBits2Float(0x45b52f28), SkBits2Float(0x45ba9baf)); // 5797.89f, 5971.46f
5525 path.lineTo(SkBits2Float(0x45b52fd8), SkBits2Float(0x45ba9a8b)); // 5797.98f, 5971.32f
5526 path.lineTo(SkBits2Float(0x45b5308b), SkBits2Float(0x45ba996b)); // 5798.07f, 5971.18f
5527 path.lineTo(SkBits2Float(0x45b53141), SkBits2Float(0x45ba984f)); // 5798.16f, 5971.04f
5528 path.lineTo(SkBits2Float(0x45b531fa), SkBits2Float(0x45ba9736)); // 5798.25f, 5970.9f
5529 path.lineTo(SkBits2Float(0x45b532b7), SkBits2Float(0x45ba9623)); // 5798.34f, 5970.77f
5530 path.lineTo(SkBits2Float(0x45b53377), SkBits2Float(0x45ba9513)); // 5798.43f, 5970.63f
5531 path.lineTo(SkBits2Float(0x45b5343a), SkBits2Float(0x45ba9407)); // 5798.53f, 5970.5f
5532 path.lineTo(SkBits2Float(0x45b53500), SkBits2Float(0x45ba9300)); // 5798.63f, 5970.38f
5533 path.lineTo(SkBits2Float(0x45b535c9), SkBits2Float(0x45ba91fd)); // 5798.72f, 5970.25f
5534 path.lineTo(SkBits2Float(0x45b53695), SkBits2Float(0x45ba90fe)); // 5798.82f, 5970.12f
5535 path.lineTo(SkBits2Float(0x45b53765), SkBits2Float(0x45ba9004)); // 5798.92f, 5970
5536 path.lineTo(SkBits2Float(0x45b53837), SkBits2Float(0x45ba8f0e)); // 5799.03f, 5969.88f
5537 path.lineTo(SkBits2Float(0x45b5390c), SkBits2Float(0x45ba8e1d)); // 5799.13f, 5969.76f
5538 path.lineTo(SkBits2Float(0x45b539e4), SkBits2Float(0x45ba8d30)); // 5799.24f, 5969.65f
5539 path.lineTo(SkBits2Float(0x45b53abf), SkBits2Float(0x45ba8c48)); // 5799.34f, 5969.54f
5540 path.lineTo(SkBits2Float(0x45b53b9d), SkBits2Float(0x45ba8b64)); // 5799.45f, 5969.42f
5541 path.lineTo(SkBits2Float(0x45b53c7d), SkBits2Float(0x45ba8a85)); // 5799.56f, 5969.31f
5542 path.lineTo(SkBits2Float(0x45b53d60), SkBits2Float(0x45ba89aa)); // 5799.67f, 5969.21f
5543 path.lineTo(SkBits2Float(0x45b53e46), SkBits2Float(0x45ba88d4)); // 5799.78f, 5969.1f
5544 path.lineTo(SkBits2Float(0x45b53f2f), SkBits2Float(0x45ba8803)); // 5799.9f, 5969
5545 path.lineTo(SkBits2Float(0x45b5401a), SkBits2Float(0x45ba8736)); // 5800.01f, 5968.9f
5546 path.lineTo(SkBits2Float(0x45b54108), SkBits2Float(0x45ba866f)); // 5800.13f, 5968.8f
5547 path.lineTo(SkBits2Float(0x45b541f8), SkBits2Float(0x45ba85ac)); // 5800.25f, 5968.71f
5548 path.lineTo(SkBits2Float(0x45b542eb), SkBits2Float(0x45ba84ee)); // 5800.36f, 5968.62f
5549 path.lineTo(SkBits2Float(0x45b543e0), SkBits2Float(0x45ba8435)); // 5800.48f, 5968.53f
5550 path.lineTo(SkBits2Float(0x45b544d8), SkBits2Float(0x45ba8380)); // 5800.61f, 5968.44f
5551 path.lineTo(SkBits2Float(0x45b545d2), SkBits2Float(0x45ba82d1)); // 5800.73f, 5968.35f
5552 path.lineTo(SkBits2Float(0x45b546cf), SkBits2Float(0x45ba8227)); // 5800.85f, 5968.27f
5553 path.lineTo(SkBits2Float(0x45b547ce), SkBits2Float(0x45ba8182)); // 5800.98f, 5968.19f
5554 path.lineTo(SkBits2Float(0x45b548cf), SkBits2Float(0x45ba80e2)); // 5801.1f, 5968.11f
5555 path.lineTo(SkBits2Float(0x45b549d2), SkBits2Float(0x45ba8047)); // 5801.23f, 5968.03f
5556 path.lineTo(SkBits2Float(0x45b54ad8), SkBits2Float(0x45ba7fb1)); // 5801.36f, 5967.96f
5557 path.lineTo(SkBits2Float(0x45b54be0), SkBits2Float(0x45ba7f20)); // 5801.48f, 5967.89f
5558 path.lineTo(SkBits2Float(0x45b54cea), SkBits2Float(0x45ba7e95)); // 5801.61f, 5967.82f
5559 path.lineTo(SkBits2Float(0x45b54df6), SkBits2Float(0x45ba7e0e)); // 5801.75f, 5967.76f
5560 path.lineTo(SkBits2Float(0x45b54f04), SkBits2Float(0x45ba7d8d)); // 5801.88f, 5967.69f
5561 path.lineTo(SkBits2Float(0x45b55015), SkBits2Float(0x45ba7d12)); // 5802.01f, 5967.63f
5562 path.lineTo(SkBits2Float(0x45b55127), SkBits2Float(0x45ba7c9c)); // 5802.14f, 5967.58f
5563 path.lineTo(SkBits2Float(0x45b551b5), SkBits2Float(0x45ba7c62)); // 5802.21f, 5967.55f
5564 path.lineTo(SkBits2Float(0x45c7b29a), SkBits2Float(0x45ba7c62)); // 6390.33f, 5967.55f
5565 path.lineTo(SkBits2Float(0x45c7b2f2), SkBits2Float(0x45ba7c8b)); // 6390.37f, 5967.57f
5566 path.lineTo(SkBits2Float(0x45c7b3dd), SkBits2Float(0x45ba7cff)); // 6390.48f, 5967.62f
5567 path.lineTo(SkBits2Float(0x45c7b4c7), SkBits2Float(0x45ba7d78)); // 6390.6f, 5967.68f
5568 path.lineTo(SkBits2Float(0x45c7b5b1), SkBits2Float(0x45ba7df5)); // 6390.71f, 5967.74f
5569 path.lineTo(SkBits2Float(0x45c7b699), SkBits2Float(0x45ba7e78)); // 6390.82f, 5967.81f
5570 path.lineTo(SkBits2Float(0x45c7b780), SkBits2Float(0x45ba7f00)); // 6390.94f, 5967.88f
5571 path.lineTo(SkBits2Float(0x45c7b866), SkBits2Float(0x45ba7f8d)); // 6391.05f, 5967.94f
5572 path.lineTo(SkBits2Float(0x45c7b94a), SkBits2Float(0x45ba801e)); // 6391.16f, 5968.01f
5573 path.lineTo(SkBits2Float(0x45c7ba2d), SkBits2Float(0x45ba80b5)); // 6391.27f, 5968.09f
5574 path.lineTo(SkBits2Float(0x45c7bb0f), SkBits2Float(0x45ba8150)); // 6391.38f, 5968.16f
5575 path.lineTo(SkBits2Float(0x45c7bbf0), SkBits2Float(0x45ba81f0)); // 6391.49f, 5968.24f
5576 path.lineTo(SkBits2Float(0x45c7bccf), SkBits2Float(0x45ba8294)); // 6391.6f, 5968.32f
5577 path.lineTo(SkBits2Float(0x45c7bdac), SkBits2Float(0x45ba833d)); // 6391.71f, 5968.4f
5578 path.lineTo(SkBits2Float(0x45c7be88), SkBits2Float(0x45ba83eb)); // 6391.82f, 5968.49f
5579 path.lineTo(SkBits2Float(0x45c7bf62), SkBits2Float(0x45ba849d)); // 6391.92f, 5968.58f
5580 path.lineTo(SkBits2Float(0x45c7c03a), SkBits2Float(0x45ba8554)); // 6392.03f, 5968.67f
5581 path.lineTo(SkBits2Float(0x45c7c111), SkBits2Float(0x45ba860f)); // 6392.13f, 5968.76f
5582 path.lineTo(SkBits2Float(0x45c7c1e6), SkBits2Float(0x45ba86cf)); // 6392.24f, 5968.85f
5583 path.lineTo(SkBits2Float(0x45c7c2b9), SkBits2Float(0x45ba8792)); // 6392.34f, 5968.95f
5584 path.lineTo(SkBits2Float(0x45c7c38b), SkBits2Float(0x45ba885b)); // 6392.44f, 5969.04f
5585 path.lineTo(SkBits2Float(0x45c7c45a), SkBits2Float(0x45ba8927)); // 6392.54f, 5969.14f
5586 path.lineTo(SkBits2Float(0x45c7c528), SkBits2Float(0x45ba89f7)); // 6392.64f, 5969.25f
5587 path.lineTo(SkBits2Float(0x45c7c5f3), SkBits2Float(0x45ba8acc)); // 6392.74f, 5969.35f
5588 path.lineTo(SkBits2Float(0x45c7c6bc), SkBits2Float(0x45ba8ba5)); // 6392.84f, 5969.46f
5589 path.lineTo(SkBits2Float(0x45c7c784), SkBits2Float(0x45ba8c82)); // 6392.94f, 5969.56f
5590 path.lineTo(SkBits2Float(0x45c7c849), SkBits2Float(0x45ba8d62)); // 6393.04f, 5969.67f
5591 path.lineTo(SkBits2Float(0x45c7c90c), SkBits2Float(0x45ba8e47)); // 6393.13f, 5969.78f
5592 path.lineTo(SkBits2Float(0x45c7c9cc), SkBits2Float(0x45ba8f30)); // 6393.22f, 5969.9f
5593 path.lineTo(SkBits2Float(0x45c7ca8b), SkBits2Float(0x45ba901c)); // 6393.32f, 5970.01f
5594 path.lineTo(SkBits2Float(0x45c7cb46), SkBits2Float(0x45ba910c)); // 6393.41f, 5970.13f
5595 path.lineTo(SkBits2Float(0x45c7cc00), SkBits2Float(0x45ba9200)); // 6393.5f, 5970.25f
5596 path.lineTo(SkBits2Float(0x45c7ccb7), SkBits2Float(0x45ba92f8)); // 6393.59f, 5970.37f
5597 path.lineTo(SkBits2Float(0x45c7cd6c), SkBits2Float(0x45ba93f3)); // 6393.68f, 5970.49f
5598 path.lineTo(SkBits2Float(0x45c7ce1e), SkBits2Float(0x45ba94f2)); // 6393.76f, 5970.62f
5599 path.lineTo(SkBits2Float(0x45c7cecd), SkBits2Float(0x45ba95f4)); // 6393.85f, 5970.74f
5600 path.lineTo(SkBits2Float(0x45c7cf7a), SkBits2Float(0x45ba96fa)); // 6393.93f, 5970.87f
5601 path.lineTo(SkBits2Float(0x45c7d024), SkBits2Float(0x45ba9803)); // 6394.02f, 5971
5602 path.lineTo(SkBits2Float(0x45c7d0cb), SkBits2Float(0x45ba9910)); // 6394.1f, 5971.13f
5603 path.lineTo(SkBits2Float(0x45c7d170), SkBits2Float(0x45ba9a20)); // 6394.18f, 5971.27f
5604 path.lineTo(SkBits2Float(0x45c7d211), SkBits2Float(0x45ba9b33)); // 6394.26f, 5971.4f
5605 path.lineTo(SkBits2Float(0x45c7d2b0), SkBits2Float(0x45ba9c4a)); // 6394.34f, 5971.54f
5606 path.lineTo(SkBits2Float(0x45c7d34c), SkBits2Float(0x45ba9d63)); // 6394.41f, 5971.67f
5607 path.lineTo(SkBits2Float(0x45c7d3e5), SkBits2Float(0x45ba9e80)); // 6394.49f, 5971.81f
5608 path.lineTo(SkBits2Float(0x45c7d47a), SkBits2Float(0x45ba9fa0)); // 6394.56f, 5971.95f
5609 path.lineTo(SkBits2Float(0x45c7d50d), SkBits2Float(0x45baa0c3)); // 6394.63f, 5972.1f
5610 path.lineTo(SkBits2Float(0x45c7d59d), SkBits2Float(0x45baa1e9)); // 6394.7f, 5972.24f
5611 path.lineTo(SkBits2Float(0x45c7d629), SkBits2Float(0x45baa312)); // 6394.77f, 5972.38f
5612 path.lineTo(SkBits2Float(0x45c7d6b2), SkBits2Float(0x45baa43e)); // 6394.84f, 5972.53f
5613 path.lineTo(SkBits2Float(0x45c7d738), SkBits2Float(0x45baa56d)); // 6394.9f, 5972.68f
5614 path.lineTo(SkBits2Float(0x45c7d7ba), SkBits2Float(0x45baa69f)); // 6394.97f, 5972.83f
5615 path.lineTo(SkBits2Float(0x45c7d839), SkBits2Float(0x45baa7d3)); // 6395.03f, 5972.98f
5616 path.lineTo(SkBits2Float(0x45c7d8b5), SkBits2Float(0x45baa90a)); // 6395.09f, 5973.13f
5617 path.lineTo(SkBits2Float(0x45c7d92d), SkBits2Float(0x45baaa44)); // 6395.15f, 5973.28f
5618 path.lineTo(SkBits2Float(0x45c7d9a2), SkBits2Float(0x45baab80)); // 6395.2f, 5973.44f
5619 path.lineTo(SkBits2Float(0x45c7da13), SkBits2Float(0x45baacbf)); // 6395.26f, 5973.59f
5620 path.lineTo(SkBits2Float(0x45c7da80), SkBits2Float(0x45baae00)); // 6395.31f, 5973.75f
5621 path.lineTo(SkBits2Float(0x45c7daea), SkBits2Float(0x45baaf44)); // 6395.36f, 5973.91f
5622 path.lineTo(SkBits2Float(0x45c7db50), SkBits2Float(0x45bab08a)); // 6395.41f, 5974.07f
5623 path.lineTo(SkBits2Float(0x45c7dbb2), SkBits2Float(0x45bab1d3)); // 6395.46f, 5974.23f
5624 path.lineTo(SkBits2Float(0x45c7dc10), SkBits2Float(0x45bab31d)); // 6395.51f, 5974.39f
5625 path.lineTo(SkBits2Float(0x45c7dc6a), SkBits2Float(0x45bab46a)); // 6395.55f, 5974.55f
5626 path.lineTo(SkBits2Float(0x45c7dc6b), SkBits2Float(0x45bc5fbe)); // 6395.55f, 6027.97f
5627 path.lineTo(SkBits2Float(0x45c7dc10), SkBits2Float(0x45bc60e7)); // 6395.51f, 6028.11f
5628 path.lineTo(SkBits2Float(0x45c7dbb2), SkBits2Float(0x45bc620f)); // 6395.46f, 6028.26f
5629 path.lineTo(SkBits2Float(0x45c7db50), SkBits2Float(0x45bc6336)); // 6395.41f, 6028.4f
5630 path.lineTo(SkBits2Float(0x45c7daea), SkBits2Float(0x45bc645c)); // 6395.36f, 6028.54f
5631 path.lineTo(SkBits2Float(0x45c7da80), SkBits2Float(0x45bc6580)); // 6395.31f, 6028.69f
5632 path.lineTo(SkBits2Float(0x45c7da13), SkBits2Float(0x45bc66a3)); // 6395.26f, 6028.83f
5633 path.lineTo(SkBits2Float(0x45c7d9a2), SkBits2Float(0x45bc67c5)); // 6395.2f, 6028.97f
5634 path.lineTo(SkBits2Float(0x45c7d92d), SkBits2Float(0x45bc68e6)); // 6395.15f, 6029.11f
5635 path.lineTo(SkBits2Float(0x45c7d8b5), SkBits2Float(0x45bc6a05)); // 6395.09f, 6029.25f
5636 path.lineTo(SkBits2Float(0x45c7d839), SkBits2Float(0x45bc6b23)); // 6395.03f, 6029.39f
5637 path.lineTo(SkBits2Float(0x45c7d7ba), SkBits2Float(0x45bc6c3f)); // 6394.97f, 6029.53f
5638 path.lineTo(SkBits2Float(0x45c7d738), SkBits2Float(0x45bc6d5a)); // 6394.9f, 6029.67f
5639 path.lineTo(SkBits2Float(0x45c7d6b2), SkBits2Float(0x45bc6e73)); // 6394.84f, 6029.81f
5640 path.lineTo(SkBits2Float(0x45c7d629), SkBits2Float(0x45bc6f8b)); // 6394.77f, 6029.94f
5641 path.lineTo(SkBits2Float(0x45c7d59d), SkBits2Float(0x45bc70a1)); // 6394.7f, 6030.08f
5642 path.lineTo(SkBits2Float(0x45c7d50d), SkBits2Float(0x45bc71b5)); // 6394.63f, 6030.21f
5643 path.lineTo(SkBits2Float(0x45c7d47a), SkBits2Float(0x45bc72c7)); // 6394.56f, 6030.35f
5644 path.lineTo(SkBits2Float(0x45c7d3e5), SkBits2Float(0x45bc73d8)); // 6394.49f, 6030.48f
5645 path.lineTo(SkBits2Float(0x45c7d34c), SkBits2Float(0x45bc74e7)); // 6394.41f, 6030.61f
5646 path.lineTo(SkBits2Float(0x45c7d2b0), SkBits2Float(0x45bc75f4)); // 6394.34f, 6030.74f
5647 path.lineTo(SkBits2Float(0x45c7d211), SkBits2Float(0x45bc76ff)); // 6394.26f, 6030.87f
5648 path.lineTo(SkBits2Float(0x45c7d170), SkBits2Float(0x45bc7807)); // 6394.18f, 6031
5649 path.lineTo(SkBits2Float(0x45c7d0cb), SkBits2Float(0x45bc790e)); // 6394.1f, 6031.13f
5650 path.lineTo(SkBits2Float(0x45c7d024), SkBits2Float(0x45bc7a13)); // 6394.02f, 6031.26f
5651 path.lineTo(SkBits2Float(0x45c7cf7a), SkBits2Float(0x45bc7b16)); // 6393.93f, 6031.39f
5652 path.lineTo(SkBits2Float(0x45c7cecd), SkBits2Float(0x45bc7c16)); // 6393.85f, 6031.51f
5653 path.lineTo(SkBits2Float(0x45c7ce1e), SkBits2Float(0x45bc7d14)); // 6393.76f, 6031.63f
5654 path.lineTo(SkBits2Float(0x45c7cd6c), SkBits2Float(0x45bc7e10)); // 6393.68f, 6031.76f
5655 path.lineTo(SkBits2Float(0x45c7ccb7), SkBits2Float(0x45bc7f09)); // 6393.59f, 6031.88f
5656 path.lineTo(SkBits2Float(0x45c7cc00), SkBits2Float(0x45bc8000)); // 6393.5f, 6032
5657 path.lineTo(SkBits2Float(0x45c7cb46), SkBits2Float(0x45bc80f5)); // 6393.41f, 6032.12f
5658 path.lineTo(SkBits2Float(0x45c7ca8b), SkBits2Float(0x45bc81e7)); // 6393.32f, 6032.24f
5659 path.lineTo(SkBits2Float(0x45c7c9cc), SkBits2Float(0x45bc82d6)); // 6393.22f, 6032.35f
5660 path.lineTo(SkBits2Float(0x45c7c90c), SkBits2Float(0x45bc83c3)); // 6393.13f, 6032.47f
5661 path.lineTo(SkBits2Float(0x45c7c849), SkBits2Float(0x45bc84ad)); // 6393.04f, 6032.58f
5662 path.lineTo(SkBits2Float(0x45c7c784), SkBits2Float(0x45bc8595)); // 6392.94f, 6032.7f
5663 path.lineTo(SkBits2Float(0x45c7c6bc), SkBits2Float(0x45bc8679)); // 6392.84f, 6032.81f
5664 path.lineTo(SkBits2Float(0x45c7c5f3), SkBits2Float(0x45bc875b)); // 6392.74f, 6032.92f
5665 path.lineTo(SkBits2Float(0x45c7c528), SkBits2Float(0x45bc883a)); // 6392.64f, 6033.03f
5666 path.lineTo(SkBits2Float(0x45c7c45a), SkBits2Float(0x45bc8917)); // 6392.54f, 6033.14f
5667 path.lineTo(SkBits2Float(0x45c7c38b), SkBits2Float(0x45bc89f0)); // 6392.44f, 6033.24f
5668 path.lineTo(SkBits2Float(0x45c7c2b9), SkBits2Float(0x45bc8ac6)); // 6392.34f, 6033.35f
5669 path.lineTo(SkBits2Float(0x45c7c1e6), SkBits2Float(0x45bc8b99)); // 6392.24f, 6033.45f
5670 path.lineTo(SkBits2Float(0x45c7c111), SkBits2Float(0x45bc8c69)); // 6392.13f, 6033.55f
5671 path.lineTo(SkBits2Float(0x45c7c03a), SkBits2Float(0x45bc8d36)); // 6392.03f, 6033.65f
5672 path.lineTo(SkBits2Float(0x45c7bf62), SkBits2Float(0x45bc8e00)); // 6391.92f, 6033.75f
5673 path.lineTo(SkBits2Float(0x45c7be88), SkBits2Float(0x45bc8ec7)); // 6391.82f, 6033.85f
5674 path.lineTo(SkBits2Float(0x45c7bdac), SkBits2Float(0x45bc8f8a)); // 6391.71f, 6033.94f
5675 path.lineTo(SkBits2Float(0x45c7bccf), SkBits2Float(0x45bc904a)); // 6391.6f, 6034.04f
5676 path.lineTo(SkBits2Float(0x45c7bbf0), SkBits2Float(0x45bc9106)); // 6391.49f, 6034.13f
5677 path.lineTo(SkBits2Float(0x45c7bb0f), SkBits2Float(0x45bc91bf)); // 6391.38f, 6034.22f
5678 path.lineTo(SkBits2Float(0x45c7ba2d), SkBits2Float(0x45bc9275)); // 6391.27f, 6034.31f
5679 path.lineTo(SkBits2Float(0x45c7b94a), SkBits2Float(0x45bc9327)); // 6391.16f, 6034.39f
5680 path.lineTo(SkBits2Float(0x45c7b866), SkBits2Float(0x45bc93d5)); // 6391.05f, 6034.48f
5681 path.lineTo(SkBits2Float(0x45c7b780), SkBits2Float(0x45bc9480)); // 6390.94f, 6034.56f
5682 path.lineTo(SkBits2Float(0x45c7b699), SkBits2Float(0x45bc9527)); // 6390.82f, 6034.64f
5683 path.lineTo(SkBits2Float(0x45c7b5b1), SkBits2Float(0x45bc95ca)); // 6390.71f, 6034.72f
5684 path.lineTo(SkBits2Float(0x45c7b4c8), SkBits2Float(0x45bc966a)); // 6390.6f, 6034.8f
5685 path.lineTo(SkBits2Float(0x45c7b3dd), SkBits2Float(0x45bc9706)); // 6390.48f, 6034.88f
5686 path.lineTo(SkBits2Float(0x45c7b2f2), SkBits2Float(0x45bc979e)); // 6390.37f, 6034.95f
5687 path.lineTo(SkBits2Float(0x45c7b205), SkBits2Float(0x45bc9832)); // 6390.25f, 6035.02f
5688 path.lineTo(SkBits2Float(0x45c7b118), SkBits2Float(0x45bc98c2)); // 6390.14f, 6035.09f
5689 path.lineTo(SkBits2Float(0x45c7b02a), SkBits2Float(0x45bc994e)); // 6390.02f, 6035.16f
5690 path.lineTo(SkBits2Float(0x45c7af3b), SkBits2Float(0x45bc99d5)); // 6389.9f, 6035.23f
5691 path.lineTo(SkBits2Float(0x45c7ae4b), SkBits2Float(0x45bc9a59)); // 6389.79f, 6035.29f
5692 path.lineTo(SkBits2Float(0x45c7ad5a), SkBits2Float(0x45bc9ad9)); // 6389.67f, 6035.36f
5693 path.lineTo(SkBits2Float(0x45c7ac69), SkBits2Float(0x45bc9b54)); // 6389.55f, 6035.42f
5694 path.lineTo(SkBits2Float(0x45c7ab77), SkBits2Float(0x45bc9bcb)); // 6389.43f, 6035.47f
5695 path.lineTo(SkBits2Float(0x45c7aa84), SkBits2Float(0x45bc9c3e)); // 6389.31f, 6035.53f
5696 path.lineTo(SkBits2Float(0x45c7a991), SkBits2Float(0x45bc9cac)); // 6389.2f, 6035.58f
5697 path.lineTo(SkBits2Float(0x45c7a89e), SkBits2Float(0x45bc9d16)); // 6389.08f, 6035.64f
5698 path.lineTo(SkBits2Float(0x45c7a7aa), SkBits2Float(0x45bc9d7b)); // 6388.96f, 6035.69f
5699 path.lineTo(SkBits2Float(0x45c7a6b6), SkBits2Float(0x45bc9ddc)); // 6388.84f, 6035.73f
5700 path.lineTo(SkBits2Float(0x45c7a5c1), SkBits2Float(0x45bc9e39)); // 6388.72f, 6035.78f
5701 path.lineTo(SkBits2Float(0x45c7a4cc), SkBits2Float(0x45bc9e90)); // 6388.6f, 6035.82f
5702 path.lineTo(SkBits2Float(0x45c7a3d7), SkBits2Float(0x45bc9ee3)); // 6388.48f, 6035.86f
5703 path.lineTo(SkBits2Float(0x45c7a2e1), SkBits2Float(0x45bc9f32)); // 6388.36f, 6035.9f
5704 path.lineTo(SkBits2Float(0x45c7a1eb), SkBits2Float(0x45bc9f7b)); // 6388.24f, 6035.94f
5705 path.lineTo(SkBits2Float(0x45c7a0f6), SkBits2Float(0x45bc9fc0)); // 6388.12f, 6035.97f
5706 path.lineTo(SkBits2Float(0x45c7a000), SkBits2Float(0x45bca000)); // 6388, 6036
5707 path.lineTo(SkBits2Float(0x45b56000), SkBits2Float(0x45bca000)); // 5804, 6036
5708 path.close();
5709
5710 SkPath path2;
5711 path2.setFillType(SkPath::kWinding_FillType);
5712 path2.moveTo(SkBits2Float(0x45b52600), SkBits2Float(0x45ba7c62)); // 5796.75f, 5967.55f
5713 path2.lineTo(SkBits2Float(0x45c7dc6b), SkBits2Float(0x45ba7c62)); // 6395.55f, 5967.55f
5714 path2.lineTo(SkBits2Float(0x45c7dc6b), SkBits2Float(0x45bca239)); // 6395.55f, 6036.28f
5715 path2.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45bca239)); // 5796.75f, 6036.28f
5716 path2.lineTo(SkBits2Float(0x45b52600), SkBits2Float(0x45ba7c62)); // 5796.75f, 5967.55f
5717 path2.close();
5718
5719 SkPath result_path;
5720 testPathOp(reporter, path, path2, kIntersect_SkPathOp, filename);
5721}
Yuqian Li3154a532017-09-06 13:33:30 -04005722
Cary Clark3a4a3212018-06-06 15:22:08 -04005723static void halbug(skiatest::Reporter* reporter, const char* filename) {
5724 SkPath path, path2;
5725 path.setFillType(SkPath::kEvenOdd_FillType);
5726 path.addRect(SkRect{278.653992f, 155.747406f, 580.15918f, 593.602051f});
5727 path2.setFillType(SkPath::kWinding_FillType);
5728 path2.addRect(SkRect{278.657715f, 155.747314f, 580.238281f, 594.114014f});
5729 testPathOp(reporter, path, path2, kIntersect_SkPathOp, filename);
5730}
5731
Cary Clark1bb47df2018-06-18 08:53:00 -04005732static void testRect1_u(skiatest::Reporter* reporter, const char* filename) {
5733 SkPath path, pathB;
5734 path.setFillType(SkPath::kWinding_FillType);
5735 path.moveTo(0, 0);
5736 path.lineTo(0, 60);
5737 path.lineTo(60, 60);
5738 path.lineTo(60, 0);
5739 path.close();
5740 path.moveTo(30, 20);
5741 path.lineTo(30, 50);
5742 path.lineTo(50, 50);
5743 path.lineTo(50, 20);
5744 path.close();
5745 path.moveTo(24, 20);
5746 path.lineTo(24, 30);
5747 path.lineTo(36, 30);
5748 path.lineTo(36, 20);
5749 path.close();
5750 pathB.setFillType(SkPath::kWinding_FillType);
5751 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
5752}
5753
Cary Clark1d314432018-07-10 10:57:54 -04005754static void filinmangust14(skiatest::Reporter* reporter, const char* filename) {
Cary Clark1d314432018-07-10 10:57:54 -04005755SkPath path, path1;
5756path.setFillType(SkPath::kWinding_FillType);
5757 path.moveTo(SkBits2Float(0x440bc02c), SkBits2Float(0x4409c000)); // 559.003f, 551
5758 path.lineTo(SkBits2Float(0x440bc02c), SkBits2Float(0x440e8000)); // 559.003f, 570
5759 path.lineTo(SkBits2Float(0x440bbfda), SkBits2Float(0x440e8000)); // 558.998f, 570
5760 path.lineTo(SkBits2Float(0x440bbfda), SkBits2Float(0x4409c000)); // 558.998f, 551
5761 path.lineTo(SkBits2Float(0x440bc02c), SkBits2Float(0x4409c000)); // 559.003f, 551
5762 path.close();
5763path1 = path;
5764path.reset();
5765 path.setFillType(SkPath::kWinding_FillType);
5766 path.moveTo(SkBits2Float(0x45582000), SkBits2Float(0x45be9805)); // 3458, 6099
5767 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x45be9805)); // 3403.4f, 6099
5768 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x45be97fb)); // 3403.4f, 6099
5769 path.lineTo(SkBits2Float(0x45582000), SkBits2Float(0x45be97fb)); // 3458, 6099
5770 path.lineTo(SkBits2Float(0x45582000), SkBits2Float(0x45be9805)); // 3458, 6099
5771 path.close();
5772 path.moveTo(SkBits2Float(0x43b60000), SkBits2Float(0x443dffd7)); // 364, 759.997f
5773 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x443dffd7)); // 3403.4f, 759.997f
5774 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x443e0029)); // 3403.4f, 760.003f
5775 path.lineTo(SkBits2Float(0x43b60000), SkBits2Float(0x443e0029)); // 364, 760.003f
5776 path.lineTo(SkBits2Float(0x43b60000), SkBits2Float(0x443dffd7)); // 364, 759.997f
5777 path.close();
5778 path.moveTo(SkBits2Float(0x4554b65d), SkBits2Float(0x45be9800)); // 3403.4f, 6099
5779 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x443e0000)); // 3403.4f, 760
5780 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x443e0000)); // 3403.4f, 760
5781 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x45be9800)); // 3403.4f, 6099
5782 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x45be9800)); // 3403.4f, 6099
5783 path.close();
5784 path.moveTo(SkBits2Float(0x449f4000), SkBits2Float(0x43bdffae)); // 1274, 379.997f
5785 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x43bdffae)); // 3403.4f, 379.997f
5786 path.lineTo(SkBits2Float(0x4554b667), SkBits2Float(0x43be0052)); // 3403.4f, 380.003f
5787 path.lineTo(SkBits2Float(0x449f4000), SkBits2Float(0x43be0052)); // 1274, 380.003f
5788 path.lineTo(SkBits2Float(0x449f4000), SkBits2Float(0x43bdffae)); // 1274, 379.997f
5789 path.close();
5790 path.moveTo(SkBits2Float(0x4554b65d), SkBits2Float(0x443e0000)); // 3403.4f, 760
5791 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x43be0000)); // 3403.4f, 380
5792 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x43be0000)); // 3403.4f, 380
5793 path.lineTo(SkBits2Float(0x4554b671), SkBits2Float(0x443e0000)); // 3403.4f, 760
5794 path.lineTo(SkBits2Float(0x4554b65d), SkBits2Float(0x443e0000)); // 3403.4f, 760
5795 path.close();
5796 testPathOp(reporter, path1, path, kUnion_SkPathOp, filename);
5797}
5798
Cary Clark2587f412018-07-24 12:40:10 -04005799static void grshapearcs1(skiatest::Reporter* reporter, const char* filename) {
5800SkPath path, path1;
5801path.setFillType(SkPath::kWinding_FillType);
5802path.moveTo(25.0098f, 23.1973f);
5803path.lineTo(25.5689f, 22.3682f);
5804path.conicTo(26.1281f, 21.5392f, 26.9572f, 22.0984f, 0.707107f);
5805path.conicTo(27.7862f, 22.6576f, 27.227f, 23.4866f, 0.707107f);
5806path.lineTo(26.6678f, 24.3156f);
5807path.conicTo(26.1086f, 25.1447f, 25.2796f, 24.5855f, 0.707107f);
5808path.conicTo(24.4506f, 24.0263f, 25.0098f, 23.1973f, 0.707107f);
5809path.close();
5810path.moveTo(26.6873f, 20.7101f);
5811path.lineTo(27.2465f, 19.8811f);
5812path.conicTo(27.8057f, 19.0521f, 28.6348f, 19.6113f, 0.707107f);
5813path.conicTo(29.4638f, 20.1704f, 28.9046f, 20.9995f, 0.707107f);
5814path.lineTo(28.3454f, 21.8285f);
5815path.conicTo(27.7862f, 22.6576f, 26.9572f, 22.0984f, 0.707107f);
5816path.conicTo(26.1281f, 21.5392f, 26.6873f, 20.7101f, 0.707107f);
5817path.close();
5818path.moveTo(28.3649f, 18.223f);
5819path.lineTo(28.9241f, 17.394f);
5820path.conicTo(29.4833f, 16.565f, 30.3123f, 17.1241f, 0.707107f);
5821path.conicTo(31.1414f, 17.6833f, 30.5822f, 18.5124f, 0.707107f);
5822path.lineTo(30.023f, 19.3414f);
5823path.conicTo(29.4638f, 20.1704f, 28.6348f, 19.6113f, 0.707107f);
5824path.conicTo(27.8057f, 19.0521f, 28.3649f, 18.223f, 0.707107f);
5825path.close();
5826path.moveTo(30.0425f, 15.7359f);
5827path.lineTo(30.6017f, 14.9069f);
5828path.conicTo(31.1609f, 14.0778f, 31.9899f, 14.637f, 0.707107f);
5829path.conicTo(32.8189f, 15.1962f, 32.2598f, 16.0253f, 0.707107f);
5830path.lineTo(31.7006f, 16.8543f);
5831path.conicTo(31.1414f, 17.6833f, 30.3123f, 17.1241f, 0.707107f);
5832path.conicTo(29.4833f, 16.565f, 30.0425f, 15.7359f, 0.707107f);
5833path.close();
5834path.moveTo(31.7201f, 13.2488f);
5835path.lineTo(32.2793f, 12.4198f);
5836path.conicTo(32.8385f, 11.5907f, 33.6675f, 12.1499f, 0.707107f);
5837path.conicTo(34.4965f, 12.7091f, 33.9373f, 13.5381f, 0.707107f);
5838path.lineTo(33.3781f, 14.3672f);
5839path.conicTo(32.8189f, 15.1962f, 31.9899f, 14.637f, 0.707107f);
5840path.conicTo(31.1609f, 14.0778f, 31.7201f, 13.2488f, 0.707107f);
5841path.close();
5842path.moveTo(33.3976f, 10.7617f);
5843path.lineTo(33.9568f, 9.93265f);
5844path.conicTo(34.516f, 9.10361f, 35.3451f, 9.6628f, 0.707107f);
5845path.conicTo(36.1741f, 10.222f, 35.6149f, 11.051f, 0.707107f);
5846path.lineTo(35.0557f, 11.8801f);
5847path.conicTo(34.4965f, 12.7091f, 33.6675f, 12.1499f, 0.707107f);
5848path.conicTo(32.8385f, 11.5907f, 33.3976f, 10.7617f, 0.707107f);
5849path.close();
5850path.moveTo(35.0752f, 8.27457f);
5851path.lineTo(35.6344f, 7.44554f);
5852path.conicTo(36.1936f, 6.6165f, 37.0226f, 7.17569f, 0.707107f);
5853path.conicTo(37.8517f, 7.73488f, 37.2925f, 8.56392f, 0.707107f);
5854path.lineTo(36.7333f, 9.39296f);
5855path.conicTo(36.1741f, 10.222f, 35.3451f, 9.6628f, 0.707107f);
5856path.conicTo(34.516f, 9.10361f, 35.0752f, 8.27457f, 0.707107f);
5857path.close();
5858path.moveTo(36.7528f, 5.78746f);
5859path.lineTo(37.312f, 4.95842f);
5860path.conicTo(37.8712f, 4.12939f, 38.7002f, 4.68858f, 0.707107f);
5861path.conicTo(39.5293f, 5.24777f, 38.9701f, 6.07681f, 0.707107f);
5862path.lineTo(38.4109f, 6.90585f);
5863path.conicTo(37.8517f, 7.73488f, 37.0226f, 7.17569f, 0.707107f);
5864path.conicTo(36.1936f, 6.6165f, 36.7528f, 5.78746f, 0.707107f);
5865path.close();
5866path.moveTo(39.9447f, 3.72429f);
5867path.quadTo(40.3524f, 4.01069f, 40.7489f, 4.31248f);
5868path.conicTo(41.5445f, 4.9182f, 40.9388f, 5.71387f, 0.707107f);
5869path.conicTo(40.3331f, 6.50955f, 39.5374f, 5.90383f, 0.707107f);
5870path.quadTo(39.1714f, 5.62521f, 38.7951f, 5.36088f);
5871path.conicTo(37.9768f, 4.78608f, 38.5516f, 3.96779f, 0.707107f);
5872path.conicTo(39.1264f, 3.14949f, 39.9447f, 3.72429f, 0.707107f);
5873path.close();
5874path.moveTo(42.3194f, 5.60826f);
5875path.quadTo(42.707f, 5.95446f, 43.0804f, 6.31583f);
5876path.conicTo(43.7991f, 7.01122f, 43.1037f, 7.72985f, 0.707107f);
5877path.conicTo(42.4083f, 8.44848f, 41.6896f, 7.75308f, 0.707107f);
5878path.quadTo(41.3448f, 7.41944f, 40.9871f, 7.09992f);
5879path.conicTo(40.2413f, 6.43379f, 40.9074f, 5.68796f, 0.707107f);
5880path.conicTo(41.5735f, 4.94212f, 42.3194f, 5.60826f, 0.707107f);
5881path.close();
5882path.moveTo(44.5406f, 7.84871f);
5883path.quadTo(44.8959f, 8.25352f, 45.2341f, 8.67266f);
5884path.conicTo(45.862f, 9.4509f, 45.0838f, 10.0789f, 0.707107f);
5885path.conicTo(44.3056f, 10.7068f, 43.6776f, 9.9286f, 0.707107f);
5886path.quadTo(43.3654f, 9.54174f, 43.0374f, 9.16805f);
5887path.conicTo(42.3778f, 8.41649f, 43.1293f, 7.75682f, 0.707107f);
5888path.conicTo(43.8809f, 7.09715f, 44.5406f, 7.84871f, 0.707107f);
5889path.close();
5890path.moveTo(46.528f, 10.4211f);
5891path.quadTo(46.815f, 10.8449f, 47.0851f, 11.2796f);
5892path.conicTo(47.6128f, 12.129f, 46.7633f, 12.6567f, 0.707107f);
5893path.conicTo(45.9139f, 13.1844f, 45.3862f, 12.335f, 0.707107f);
5894path.quadTo(45.1369f, 11.9337f, 44.872f, 11.5426f);
5895path.conicTo(44.3113f, 10.7146f, 45.1393f, 10.1538f, 0.707107f);
5896path.conicTo(45.9673f, 9.5931f, 46.528f, 10.4211f, 0.707107f);
5897path.close();
5898path.moveTo(48.1056f, 13.0782f);
5899path.quadTo(48.3449f, 13.542f, 48.5654f, 14.015f);
5900path.conicTo(48.9879f, 14.9213f, 48.0816f, 15.3438f, 0.707107f);
5901path.conicTo(47.1752f, 15.7663f, 46.7527f, 14.86f, 0.707107f);
5902path.quadTo(46.5492f, 14.4234f, 46.3283f, 13.9953f);
5903path.conicTo(45.8698f, 13.1066f, 46.7584f, 12.6481f, 0.707107f);
5904path.conicTo(47.6471f, 12.1895f, 48.1056f, 13.0782f, 0.707107f);
5905path.close();
5906path.moveTo(49.3755f, 15.9538f);
5907path.quadTo(49.5594f, 16.4493f, 49.7229f, 16.9516f);
5908path.conicTo(50.0325f, 17.9025f, 49.0816f, 18.2121f, 0.707107f);
5909path.conicTo(48.1307f, 18.5216f, 47.8212f, 17.5707f, 0.707107f);
5910path.quadTo(47.6702f, 17.1069f, 47.5005f, 16.6497f);
5911path.conicTo(47.1526f, 15.7122f, 48.0901f, 15.3642f, 0.707107f);
5912path.conicTo(49.0276f, 15.0163f, 49.3755f, 15.9538f, 0.707107f);
5913path.close();
5914path.moveTo(50.2964f, 18.9923f);
5915path.quadTo(50.4191f, 19.5089f, 50.5206f, 20.0302f);
5916path.conicTo(50.7117f, 21.0117f, 49.7302f, 21.2029f, 0.707107f);
5917path.conicTo(48.7486f, 21.394f, 48.5575f, 20.4125f, 0.707107f);
5918path.quadTo(48.4638f, 19.9313f, 48.3505f, 19.4544f);
5919path.conicTo(48.1194f, 18.4815f, 49.0924f, 18.2504f, 0.707107f);
5920path.conicTo(50.0653f, 18.0193f, 50.2964f, 18.9923f, 0.707107f);
5921path.close();
5922path.moveTo(50.8373f, 22.0956f);
5923path.quadTo(50.8955f, 22.6138f, 50.933f, 23.1341f);
5924path.conicTo(51.0047f, 24.1315f, 50.0073f, 24.2033f, 0.707107f);
5925path.conicTo(49.0099f, 24.275f, 48.9381f, 23.2776f, 0.707107f);
5926path.quadTo(48.9036f, 22.7975f, 48.8498f, 22.3191f);
5927path.conicTo(48.7381f, 21.3253f, 49.7318f, 21.2136f, 0.707107f);
5928path.conicTo(50.7255f, 21.1019f, 50.8373f, 22.0956f, 0.707107f);
5929path.close();
5930path.moveTo(50.9992f, 25.2099f);
5931path.quadTo(50.9949f, 25.7358f, 50.9694f, 26.2608f);
5932path.conicTo(50.9209f, 27.2596f, 49.9221f, 27.2111f, 0.707107f);
5933path.conicTo(48.9233f, 27.1626f, 48.9718f, 26.1638f, 0.707107f);
5934path.quadTo(48.9953f, 25.679f, 48.9992f, 25.1938f);
5935path.conicTo(49.0073f, 24.1938f, 50.0073f, 24.2019f, 0.707107f);
5936path.conicTo(51.0072f, 24.21f, 50.9992f, 25.2099f, 0.707107f);
5937path.close();
5938path.moveTo(50.7839f, 28.3454f);
5939path.quadTo(50.7172f, 28.8596f, 50.63f, 29.3708f);
5940path.conicTo(50.4619f, 30.3565f, 49.4761f, 30.1884f, 0.707107f);
5941path.conicTo(48.4903f, 30.0203f, 48.6584f, 29.0346f, 0.707107f);
5942path.quadTo(48.7389f, 28.5627f, 48.8005f, 28.088f);
5943path.conicTo(48.9292f, 27.0963f, 49.9209f, 27.225f, 0.707107f);
5944path.conicTo(50.9126f, 27.3537f, 50.7839f, 28.3454f, 0.707107f);
5945path.close();
5946path.moveTo(50.1906f, 31.437f);
5947path.quadTo(50.0558f, 31.9646f, 49.899f, 32.4861f);
5948path.conicTo(49.611f, 33.4438f, 48.6534f, 33.1558f, 0.707107f);
5949path.conicTo(47.6957f, 32.8679f, 47.9837f, 31.9103f, 0.707107f);
5950path.quadTo(48.1284f, 31.4289f, 48.2528f, 30.9418f);
5951path.conicTo(48.5004f, 29.9729f, 49.4693f, 30.2205f, 0.707107f);
5952path.conicTo(50.4382f, 30.4681f, 50.1906f, 31.437f, 0.707107f);
5953path.close();
5954path.moveTo(49.1978f, 34.5114f);
5955path.quadTo(49.0051f, 35.0016f, 48.7927f, 35.4837f);
5956path.conicTo(48.3895f, 36.3988f, 47.4744f, 35.9956f, 0.707107f);
5957path.conicTo(46.5593f, 35.5923f, 46.9625f, 34.6772f, 0.707107f);
5958path.quadTo(47.1586f, 34.2323f, 47.3364f, 33.7797f);
5959path.conicTo(47.7023f, 32.849f, 48.6329f, 33.2149f, 0.707107f);
5960path.conicTo(49.5636f, 33.5807f, 49.1978f, 34.5114f, 0.707107f);
5961path.close();
5962path.moveTo(47.8852f, 37.3397f);
5963path.quadTo(47.6449f, 37.7853f, 47.3876f, 38.2211f);
5964path.conicTo(46.879f, 39.0821f, 46.018f, 38.5736f, 0.707107f);
5965path.conicTo(45.1569f, 38.0651f, 45.6655f, 37.204f, 0.707107f);
5966path.quadTo(45.903f, 36.8018f, 46.1248f, 36.3906f);
5967path.conicTo(46.5993f, 35.5103f, 47.4796f, 35.9849f, 0.707107f);
5968path.conicTo(48.3598f, 36.4595f, 47.8852f, 37.3397f, 0.707107f);
5969path.close();
5970path.moveTo(46.3154f, 39.8881f);
5971path.quadTo(46.0303f, 40.2962f, 45.7299f, 40.693f);
5972path.conicTo(45.1264f, 41.4903f, 44.3291f, 40.8867f, 0.707107f);
5973path.conicTo(43.5318f, 40.2831f, 44.1353f, 39.4858f, 0.707107f);
5974path.quadTo(44.4126f, 39.1195f, 44.6757f, 38.7428f);
5975path.conicTo(45.2483f, 37.923f, 46.0682f, 38.4956f, 0.707107f);
5976path.conicTo(46.888f, 39.0682f, 46.3154f, 39.8881f, 0.707107f);
5977path.close();
5978path.moveTo(44.4398f, 42.2654f);
5979path.quadTo(44.095f, 42.6536f, 43.7349f, 43.0278f);
5980path.conicTo(43.0415f, 43.7484f, 42.321f, 43.055f, 0.707107f);
5981path.conicTo(41.6004f, 42.3616f, 42.2938f, 41.641f, 0.707107f);
5982path.quadTo(42.6261f, 41.2957f, 42.9444f, 40.9374f);
5983path.conicTo(43.6084f, 40.1897f, 44.3561f, 40.8537f, 0.707107f);
5984path.conicTo(45.1038f, 41.5177f, 44.4398f, 42.2654f, 0.707107f);
5985path.close();
5986path.moveTo(42.2075f, 44.4911f);
5987path.quadTo(41.804f, 44.8473f, 41.3862f, 45.1865f);
5988path.conicTo(40.6098f, 45.8167f, 39.9795f, 45.0403f, 0.707107f);
5989path.conicTo(39.3493f, 44.2639f, 40.1257f, 43.6336f, 0.707107f);
5990path.quadTo(40.5114f, 43.3205f, 40.8838f, 42.9918f);
5991path.conicTo(41.6335f, 42.3299f, 42.2953f, 43.0796f, 0.707107f);
5992path.conicTo(42.9572f, 43.8292f, 42.2075f, 44.4911f, 0.707107f);
5993path.close();
5994path.moveTo(39.6379f, 46.488f);
5995path.quadTo(39.2151f, 46.776f, 38.7814f, 47.0471f);
5996path.conicTo(37.9334f, 47.5771f, 37.4034f, 46.7292f, 0.707107f);
5997path.conicTo(36.8733f, 45.8812f, 37.7213f, 45.3511f, 0.707107f);
5998path.quadTo(38.1217f, 45.1009f, 38.5119f, 44.835f);
5999path.conicTo(39.3383f, 44.2721f, 39.9013f, 45.0985f, 0.707107f);
6000path.conicTo(40.4643f, 45.925f, 39.6379f, 46.488f, 0.707107f);
6001path.close();
6002path.moveTo(36.9864f, 48.0722f);
6003path.quadTo(36.5234f, 48.3127f, 36.0513f, 48.5344f);
6004path.conicTo(35.1461f, 48.9595f, 34.7211f, 48.0543f, 0.707107f);
6005path.conicTo(34.296f, 47.1491f, 35.2012f, 46.7241f, 0.707107f);
6006path.quadTo(35.6371f, 46.5194f, 36.0644f, 46.2974f);
6007path.conicTo(36.9518f, 45.8364f, 37.4128f, 46.7238f, 0.707107f);
6008path.conicTo(37.8738f, 47.6112f, 36.9864f, 48.0722f, 0.707107f);
6009path.close();
6010path.moveTo(34.1153f, 49.3498f);
6011path.quadTo(33.6206f, 49.535f, 33.1187f, 49.6999f);
6012path.conicTo(32.1687f, 50.0122f, 31.8565f, 49.0622f, 0.707107f);
6013path.conicTo(31.5442f, 48.1122f, 32.4942f, 47.7999f, 0.707107f);
6014path.quadTo(32.9575f, 47.6477f, 33.4141f, 47.4767f);
6015path.conicTo(34.3507f, 47.1261f, 34.7012f, 48.0627f, 0.707107f);
6016path.conicTo(35.0518f, 48.9992f, 34.1153f, 49.3498f, 0.707107f);
6017path.close();
6018path.moveTo(31.08f, 50.2791f);
6019path.quadTo(30.5637f, 50.4033f, 30.0427f, 50.5063f);
6020path.conicTo(29.0617f, 50.7002f, 28.8678f, 49.7192f, 0.707107f);
6021path.conicTo(28.6738f, 48.7382f, 29.6548f, 48.5443f, 0.707107f);
6022path.quadTo(30.1357f, 48.4492f, 30.6122f, 48.3346f);
6023path.conicTo(31.5845f, 48.1007f, 31.8184f, 49.073f, 0.707107f);
6024path.conicTo(32.0522f, 50.0453f, 31.08f, 50.2791f, 0.707107f);
6025path.close();
6026path.moveTo(27.9769f, 50.829f);
6027path.quadTo(27.4588f, 50.8887f, 26.9386f, 50.9276f);
6028path.conicTo(25.9414f, 51.0022f, 25.8668f, 50.005f, 0.707107f);
6029path.conicTo(25.7923f, 49.0078f, 26.7895f, 48.9332f, 0.707107f);
6030path.quadTo(27.2696f, 48.8973f, 27.7479f, 48.8422f);
6031path.conicTo(28.7413f, 48.7277f, 28.8558f, 49.7211f, 0.707107f);
6032path.conicTo(28.9703f, 50.7145f, 27.9769f, 50.829f, 0.707107f);
6033path.close();
6034path.moveTo(24.8625f, 50.9996f);
6035path.quadTo(24.3373f, 50.9969f, 23.8128f, 50.9729f);
6036path.conicTo(22.8138f, 50.9272f, 22.8595f, 49.9283f, 0.707107f);
6037path.conicTo(22.9051f, 48.9293f, 23.9041f, 48.975f, 0.707107f);
6038path.quadTo(24.3884f, 48.9971f, 24.8731f, 48.9997f);
6039path.conicTo(25.8731f, 49.005f, 25.8678f, 50.005f, 0.707107f);
6040path.conicTo(25.8624f, 51.0049f, 24.8625f, 50.9996f, 0.707107f);
6041path.close();
6042path.moveTo(21.7268f, 50.7931f);
6043path.quadTo(21.2121f, 50.7278f, 20.7005f, 50.642f);
6044path.conicTo(19.7143f, 50.4767f, 19.8796f, 49.4905f, 0.707107f);
6045path.conicTo(20.045f, 48.5042f, 21.0312f, 48.6696f, 0.707107f);
6046path.quadTo(21.5036f, 48.7488f, 21.9786f, 48.8091f);
6047path.conicTo(22.9707f, 48.9349f, 22.8448f, 49.927f, 0.707107f);
6048path.conicTo(22.7189f, 50.919f, 21.7268f, 50.7931f, 0.707107f);
6049path.close();
6050path.moveTo(18.6372f, 50.2094f);
6051path.quadTo(18.1089f, 50.0761f, 17.5865f, 49.9207f);
6052path.conicTo(16.628f, 49.6356f, 16.9132f, 48.6771f, 0.707107f);
6053path.conicTo(17.1983f, 47.7186f, 18.1568f, 48.0037f, 0.707107f);
6054path.quadTo(18.639f, 48.1472f, 19.1267f, 48.2702f);
6055path.conicTo(20.0963f, 48.515f, 19.8516f, 49.4846f, 0.707107f);
6056path.conicTo(19.6068f, 50.4542f, 18.6372f, 50.2094f, 0.707107f);
6057path.close();
6058path.moveTo(15.5577f, 49.2248f);
6059path.quadTo(15.0665f, 49.0334f, 14.5834f, 48.8222f);
6060path.conicTo(13.6672f, 48.4215f, 14.0678f, 47.5053f, 0.707107f);
6061path.conicTo(14.4684f, 46.589f, 15.3847f, 46.9897f, 0.707107f);
6062path.quadTo(15.8306f, 47.1846f, 16.284f, 47.3614f);
6063path.conicTo(17.2158f, 47.7246f, 16.8526f, 48.6563f, 0.707107f);
6064path.conicTo(16.4894f, 49.588f, 15.5577f, 49.2248f, 0.707107f);
6065path.close();
6066path.moveTo(12.7231f, 47.9189f);
6067path.quadTo(12.2765f, 47.6797f, 11.8395f, 47.4233f);
6068path.conicTo(10.9771f, 46.9171f, 11.4833f, 46.0547f, 0.707107f);
6069path.conicTo(11.9894f, 45.1922f, 12.8519f, 45.6984f, 0.707107f);
6070path.quadTo(13.2552f, 45.9351f, 13.6675f, 46.156f);
6071path.conicTo(14.549f, 46.6282f, 14.0768f, 47.5096f, 0.707107f);
6072path.conicTo(13.6046f, 48.3911f, 12.7231f, 47.9189f, 0.707107f);
6073path.close();
6074path.moveTo(10.1686f, 46.3548f);
6075path.quadTo(9.76024f, 46.0712f, 9.363f, 45.7722f);
6076path.conicTo(8.56406f, 45.1708f, 9.16549f, 44.3718f, 0.707107f);
6077path.conicTo(9.76691f, 43.5729f, 10.5658f, 44.1743f, 0.707107f);
6078path.quadTo(10.9325f, 44.4504f, 11.3095f, 44.7122f);
6079path.conicTo(12.1308f, 45.2826f, 11.5604f, 46.1039f, 0.707107f);
6080path.conicTo(10.9899f, 46.9253f, 10.1686f, 46.3548f, 0.707107f);
6081path.close();
6082path.moveTo(7.78853f, 44.4876f);
6083path.quadTo(7.39972f, 44.1442f, 7.02492f, 43.7855f);
6084path.conicTo(6.3024f, 43.0942f, 6.99374f, 42.3717f, 0.707107f);
6085path.conicTo(7.68509f, 41.6492f, 8.40761f, 42.3405f, 0.707107f);
6086path.quadTo(8.7536f, 42.6715f, 9.11249f, 42.9885f);
6087path.conicTo(9.86201f, 43.6505f, 9.20003f, 44.4f, 0.707107f);
6088path.conicTo(8.53805f, 45.1496f, 7.78853f, 44.4876f, 0.707107f);
6089path.close();
6090path.moveTo(5.55855f, 42.2635f);
6091path.quadTo(5.20148f, 41.8614f, 4.86131f, 41.4449f);
6092path.conicTo(4.22883f, 40.6703f, 5.0034f, 40.0378f, 0.707107f);
6093path.conicTo(5.77797f, 39.4053f, 6.41046f, 40.1799f, 0.707107f);
6094path.quadTo(6.72443f, 40.5644f, 7.05403f, 40.9356f);
6095path.conicTo(7.71802f, 41.6833f, 6.97028f, 42.3473f, 0.707107f);
6096path.conicTo(6.22254f, 43.0113f, 5.55855f, 42.2635f, 0.707107f);
6097path.close();
6098path.moveTo(3.55261f, 39.6973f);
6099path.quadTo(3.26341f, 39.2752f, 2.99107f, 38.8422f);
6100path.conicTo(2.45867f, 37.9957f, 3.30517f, 37.4633f, 0.707107f);
6101path.conicTo(4.15167f, 36.9309f, 4.68406f, 37.7774f, 0.707107f);
6102path.quadTo(4.93548f, 38.1772f, 5.20241f, 38.5667f);
6103path.conicTo(5.76769f, 39.3916f, 4.94279f, 39.9569f, 0.707107f);
6104path.conicTo(4.11789f, 40.5222f, 3.55261f, 39.6973f, 0.707107f);
6105path.close();
6106path.moveTo(1.96145f, 37.0509f);
6107path.quadTo(1.71975f, 36.5889f, 1.49677f, 36.1175f);
6108path.conicTo(1.06917f, 35.2135f, 1.97315f, 34.7859f, 0.707107f);
6109path.conicTo(2.87712f, 34.3583f, 3.30471f, 35.2623f, 0.707107f);
6110path.quadTo(3.51053f, 35.6974f, 3.73364f, 36.1239f);
6111path.conicTo(4.19714f, 37.01f, 3.31105f, 37.4735f, 0.707107f);
6112path.conicTo(2.42495f, 37.937f, 1.96145f, 37.0509f, 0.707107f);
6113path.close();
6114path.moveTo(0.676191f, 34.1844f);
6115path.quadTo(0.489621f, 33.6902f, 0.323275f, 33.189f);
6116path.conicTo(0.00831527f, 32.2399f, 0.95742f, 31.9249f, 0.707107f);
6117path.conicTo(1.90653f, 31.6099f, 2.22149f, 32.559f, 0.707107f);
6118path.quadTo(2.37504f, 33.0218f, 2.54726f, 33.4779f);
6119path.conicTo(2.9005f, 34.4134f, 1.96497f, 34.7666f, 0.707107f);
6120path.conicTo(1.02943f, 35.1199f, 0.676191f, 34.1844f, 0.707107f);
6121path.close();
6122path.moveTo(-0.261658f, 31.1521f);
6123path.quadTo(-0.387304f, 30.6362f, -0.491779f, 30.1156f);
6124path.conicTo(-0.68853f, 29.1351f, 0.291923f, 28.9384f, 0.707107f);
6125path.conicTo(1.27238f, 28.7416f, 1.46913f, 29.7221f, 0.707107f);
6126path.quadTo(1.56557f, 30.2026f, 1.68155f, 30.6789f);
6127path.conicTo(1.91817f, 31.6505f, 0.946565f, 31.8871f, 0.707107f);
6128path.conicTo(-0.0250367f, 32.1237f, -0.261658f, 31.1521f, 0.707107f);
6129path.close();
6130path.moveTo(-0.820549f, 28.0495f);
6131path.quadTo(-0.881733f, 27.5314f, -0.922089f, 27.0113f);
6132path.conicTo(-0.999449f, 26.0143f, -0.00244591f, 25.9369f, 0.707107f);
6133path.conicTo(0.994557f, 25.8596f, 1.07192f, 26.8566f, 0.707107f);
6134path.quadTo(1.10917f, 27.3367f, 1.16565f, 27.8149f);
6135path.conicTo(1.28293f, 28.808f, 0.289834f, 28.9253f, 0.707107f);
6136path.conicTo(-0.703265f, 29.0426f, -0.820549f, 28.0495f, 0.707107f);
6137path.close();
6138path.moveTo(-0.999918f, 24.9349f);
6139path.quadTo(-0.998605f, 24.4104f, -0.976138f, 23.8863f);
6140path.conicTo(-0.933305f, 22.8873f, 0.0657772f, 22.9301f, 0.707107f);
6141path.conicTo(1.06486f, 22.9729f, 1.02203f, 23.972f, 0.707107f);
6142path.quadTo(1.00129f, 24.4557f, 1.00008f, 24.9399f);
6143path.conicTo(0.997572f, 25.9399f, -0.0024244f, 25.9374f, 0.707107f);
6144path.conicTo(-1.00242f, 25.9349f, -0.999918f, 24.9349f, 0.707107f);
6145path.close();
6146path.moveTo(-0.802212f, 21.7991f);
6147path.quadTo(-0.738311f, 21.284f, -0.653903f, 20.7719f);
6148path.conicTo(-0.491283f, 19.7852f, 0.495406f, 19.9478f, 0.707107f);
6149path.conicTo(1.48209f, 20.1104f, 1.31948f, 21.0971f, 0.707107f);
6150path.quadTo(1.24156f, 21.5698f, 1.18257f, 22.0453f);
6151path.conicTo(1.05946f, 23.0377f, 0.0670681f, 22.9146f, 0.707107f);
6152path.conicTo(-0.925325f, 22.7915f, -0.802212f, 21.7991f, 0.707107f);
6153path.close();
6154path.moveTo(-0.228066f, 18.7115f);
6155path.quadTo(-0.096172f, 18.1824f, 0.0577899f, 17.6593f);
6156path.conicTo(0.340124f, 16.7f, 1.29944f, 16.9823f, 0.707107f);
6157path.conicTo(2.25876f, 17.2646f, 1.97642f, 18.2239f, 0.707107f);
6158path.quadTo(1.8343f, 18.7068f, 1.71255f, 19.1953f);
6159path.conicTo(1.47069f, 20.1656f, 0.50038f, 19.9237f, 0.707107f);
6160path.conicTo(-0.46993f, 19.6819f, -0.228066f, 18.7115f, 0.707107f);
6161path.close();
6162path.moveTo(0.74831f, 15.6269f);
6163path.quadTo(0.938539f, 15.1347f, 1.14857f, 14.6506f);
6164path.conicTo(1.54662f, 13.7333f, 2.46398f, 14.1313f, 0.707107f);
6165path.conicTo(3.38135f, 14.5294f, 2.9833f, 15.4467f, 0.707107f);
6166path.quadTo(2.78942f, 15.8936f, 2.61382f, 16.3479f);
6167path.conicTo(2.25331f, 17.2806f, 1.32056f, 16.9201f, 0.707107f);
6168path.conicTo(0.387801f, 16.5596f, 0.74831f, 15.6269f, 0.707107f);
6169path.close();
6170path.moveTo(2.04744f, 12.7861f);
6171path.quadTo(2.28569f, 12.3384f, 2.5412f, 11.9003f);
6172path.conicTo(3.04504f, 11.0365f, 3.90884f, 11.5403f, 0.707107f);
6173path.conicTo(4.77264f, 12.0442f, 4.26881f, 12.908f, 0.707107f);
6174path.quadTo(4.03293f, 13.3123f, 3.81302f, 13.7256f);
6175path.conicTo(3.34325f, 14.6084f, 2.46046f, 14.1386f, 0.707107f);
6176path.conicTo(1.57767f, 13.6689f, 2.04744f, 12.7861f, 0.707107f);
6177path.close();
6178path.moveTo(3.60589f, 10.2253f);
6179path.quadTo(3.88812f, 9.81661f, 4.18576f, 9.419f);
6180path.conicTo(4.78503f, 8.61845f, 5.58558f, 9.21772f, 0.707107f);
6181path.conicTo(6.38613f, 9.81699f, 5.78686f, 10.6175f, 0.707107f);
6182path.quadTo(5.51211f, 10.9846f, 5.25159f, 11.3618f);
6183path.conicTo(4.68333f, 12.1847f, 3.86048f, 11.6164f, 0.707107f);
6184path.conicTo(3.03763f, 11.0481f, 3.60589f, 10.2253f, 0.707107f);
6185path.close();
6186path.moveTo(5.46482f, 7.84259f);
6187path.quadTo(5.80682f, 7.4532f, 6.16407f, 7.07773f);
6188path.conicTo(6.85339f, 6.35327f, 7.57785f, 7.04259f, 0.707107f);
6189path.conicTo(8.30231f, 7.73191f, 7.61299f, 8.45636f, 0.707107f);
6190path.quadTo(7.28322f, 8.80295f, 6.96752f, 9.16239f);
6191path.conicTo(6.30762f, 9.91375f, 5.55627f, 9.25385f, 0.707107f);
6192path.conicTo(4.80492f, 8.59395f, 5.46482f, 7.84259f, 0.707107f);
6193path.close();
6194path.moveTo(7.68062f, 5.60827f);
6195path.quadTo(8.08142f, 5.25031f, 8.49666f, 4.90921f);
6196path.conicTo(9.26938f, 4.27447f, 9.90412f, 5.04719f, 0.707107f);
6197path.conicTo(10.5389f, 5.81992f, 9.76614f, 6.45466f, 0.707107f);
6198path.quadTo(9.38285f, 6.76951f, 9.01289f, 7.09994f);
6199path.conicTo(8.26705f, 7.76607f, 7.60092f, 7.02024f, 0.707107f);
6200path.conicTo(6.93479f, 6.2744f, 7.68062f, 5.60827f, 0.707107f);
6201path.close();
6202path.moveTo(10.2392f, 3.59627f);
6203path.quadTo(10.6626f, 3.30433f, 11.0971f, 3.02935f);
6204path.conicTo(11.9421f, 2.49463f, 12.4768f, 3.33965f, 0.707107f);
6205path.conicTo(13.0116f, 4.18467f, 12.1666f, 4.7194f, 0.707107f);
6206path.quadTo(11.7654f, 4.97322f, 11.3747f, 5.24271f);
6207path.conicTo(10.5515f, 5.81043f, 9.98373f, 4.98721f, 0.707107f);
6208path.conicTo(9.41601f, 4.16399f, 10.2392f, 3.59627f, 0.707107f);
6209path.close();
6210path.moveTo(12.8847f, 1.99524f);
6211path.quadTo(13.3459f, 1.75234f, 13.8165f, 1.52812f);
6212path.conicTo(14.7193f, 1.09799f, 15.1494f, 2.00075f, 0.707107f);
6213path.conicTo(15.5795f, 2.90352f, 14.6768f, 3.33365f, 0.707107f);
6214path.quadTo(14.2424f, 3.54063f, 13.8166f, 3.76484f);
6215path.conicTo(12.9318f, 4.23081f, 12.4658f, 3.34601f, 0.707107f);
6216path.conicTo(11.9999f, 2.46122f, 12.8847f, 1.99524f, 0.707107f);
6217path.close();
6218path.moveTo(15.7467f, 0.702339f);
6219path.quadTo(16.2402f, 0.514409f, 16.7409f, 0.346672f);
6220path.conicTo(17.6891f, 0.029011f, 18.0067f, 0.977215f, 0.707107f);
6221path.conicTo(18.3244f, 1.92542f, 17.3762f, 2.24308f, 0.707107f);
6222path.quadTo(16.914f, 2.39792f, 16.4585f, 2.57139f);
6223path.conicTo(15.524f, 2.92729f, 15.1681f, 1.99276f, 0.707107f);
6224path.conicTo(14.8122f, 1.05824f, 15.7467f, 0.702339f, 0.707107f);
6225path.close();
6226path.moveTo(18.7758f, -0.24399f);
6227path.quadTo(19.2913f, -0.371107f, 19.8116f, -0.477061f);
6228path.conicTo(20.7915f, -0.676608f, 20.9911f, 0.303281f, 0.707107f);
6229path.conicTo(21.1906f, 1.28317f, 20.2107f, 1.48272f, 0.707107f);
6230path.quadTo(19.7304f, 1.58052f, 19.2546f, 1.69785f);
6231path.conicTo(18.2836f, 1.93725f, 18.0443f, 0.966329f, 0.707107f);
6232path.conicTo(17.8049f, -0.00459272f, 18.7758f, -0.24399f, 0.707107f);
6233path.close();
6234path.moveTo(21.878f, -0.811882f);
6235path.quadTo(22.396f, -0.874528f, 22.916f, -0.916348f);
6236path.conicTo(23.9128f, -0.996504f, 23.993f, 0.000278629f, 0.707107f);
6237path.conicTo(24.0731f, 0.997061f, 23.0764f, 1.07722f, 0.707107f);
6238path.quadTo(22.5963f, 1.11582f, 22.1182f, 1.17365f);
6239path.conicTo(21.1254f, 1.29372f, 21.0053f, 0.300958f, 0.707107f);
6240path.conicTo(20.8853f, -0.691807f, 21.878f, -0.811882f, 0.707107f);
6241path.close();
6242path.moveTo(24.9926f, -0.999999f);
6243path.quadTo(25.5166f, -1.00015f, 26.0401f, -0.979188f);
6244path.conicTo(27.0393f, -0.939179f, 26.9992f, 0.0600199f, 0.707107f);
6245path.conicTo(26.9592f, 1.05922f, 25.96f, 1.01921f, 0.707107f);
6246path.quadTo(25.4768f, 0.999863f, 24.9932f, 1);
6247path.conicTo(23.9932f, 1.00029f, 23.9929f, 0.000287339f, 0.707107f);
6248path.conicTo(23.9926f, -0.999713f, 24.9926f, -0.999999f, 0.707107f);
6249path.close();
6250path.moveTo(28.1286f, -0.811081f);
6251path.quadTo(28.6441f, -0.748593f, 29.1567f, -0.665572f);
6252path.conicTo(30.1439f, -0.505698f, 29.984f, 0.48144f, 0.707107f);
6253path.conicTo(29.8241f, 1.46858f, 28.837f, 1.3087f, 0.707107f);
6254path.quadTo(28.3638f, 1.23207f, 27.8879f, 1.17439f);
6255path.conicTo(26.8952f, 1.05406f, 27.0155f, 0.0613233f, 0.707107f);
6256path.conicTo(27.1359f, -0.931411f, 28.1286f, -0.811081f, 0.707107f);
6257path.close();
6258path.moveTo(31.214f, -0.246499f);
6259path.quadTo(31.7439f, -0.116076f, 32.2679f, 0.0364622f);
6260path.conicTo(33.228f, 0.315996f, 32.9485f, 1.27613f, 0.707107f);
6261path.conicTo(32.6689f, 2.23627f, 31.7088f, 1.95673f, 0.707107f);
6262path.quadTo(31.2252f, 1.81593f, 30.736f, 1.69554f);
6263path.conicTo(29.765f, 1.45654f, 30.004f, 0.48552f, 0.707107f);
6264path.conicTo(30.243f, -0.485499f, 31.214f, -0.246499f, 0.707107f);
6265path.close();
6266path.moveTo(34.3038f, 0.721629f);
6267path.quadTo(34.797f, 0.910612f, 35.282f, 1.11946f);
6268path.conicTo(36.2005f, 1.51493f, 35.805f, 2.43341f, 0.707107f);
6269path.conicTo(35.4096f, 3.35189f, 34.4911f, 2.95642f, 0.707107f);
6270path.quadTo(34.0434f, 2.76365f, 33.5881f, 2.5892f);
6271path.conicTo(32.6543f, 2.23137f, 33.0122f, 1.29758f, 0.707107f);
6272path.conicTo(33.37f, 0.363796f, 34.3038f, 0.721629f, 0.707107f);
6273path.close();
6274path.moveTo(37.1508f, 2.01396f);
6275path.quadTo(37.5996f, 2.2512f, 38.0388f, 2.50578f);
6276path.conicTo(38.904f, 3.00727f, 38.4025f, 3.87244f, 0.707107f);
6277path.conicTo(37.901f, 4.7376f, 37.0358f, 4.23612f, 0.707107f);
6278path.quadTo(36.6304f, 4.00111f, 36.2161f, 3.78211f);
6279path.conicTo(35.332f, 3.31476f, 35.7994f, 2.43069f, 0.707107f);
6280path.conicTo(36.2667f, 1.54661f, 37.1508f, 2.01396f, 0.707107f);
6281path.close();
6282path.moveTo(39.718f, 3.56681f);
6283path.quadTo(40.1269f, 3.84765f, 40.5249f, 4.14392f);
6284path.conicTo(41.3271f, 4.74104f, 40.73f, 5.54319f, 0.707107f);
6285path.conicTo(40.1329f, 6.34535f, 39.3307f, 5.74823f, 0.707107f);
6286path.quadTo(38.9634f, 5.47478f, 38.5858f, 5.21552f);
6287path.conicTo(37.7615f, 4.64945f, 38.3275f, 3.82509f, 0.707107f);
6288path.conicTo(38.8936f, 3.00074f, 39.718f, 3.56681f, 0.707107f);
6289path.close();
6290path.moveTo(42.1033f, 5.41741f);
6291path.quadTo(42.4933f, 5.75802f, 42.8694f, 6.11388f);
6292path.conicTo(43.5958f, 6.80115f, 42.9085f, 7.52755f, 0.707107f);
6293path.conicTo(42.2212f, 8.25394f, 41.4948f, 7.56667f, 0.707107f);
6294path.quadTo(41.1476f, 7.23817f, 40.7876f, 6.92375f);
6295path.conicTo(40.0345f, 6.26593f, 40.6923f, 5.51275f, 0.707107f);
6296path.conicTo(41.3501f, 4.75958f, 42.1033f, 5.41741f, 0.707107f);
6297path.close();
6298path.moveTo(44.3419f, 7.62498f);
6299path.quadTo(44.7007f, 8.02444f, 45.0428f, 8.43835f);
6300path.conicTo(45.6797f, 9.20922f, 44.9089f, 9.84622f, 0.707107f);
6301path.conicTo(44.138f, 10.4832f, 43.501f, 9.71234f, 0.707107f);
6302path.quadTo(43.1852f, 9.3302f, 42.854f, 8.96151f);
6303path.conicTo(42.1858f, 8.21759f, 42.9297f, 7.54932f, 0.707107f);
6304path.conicTo(43.6736f, 6.88106f, 44.3419f, 7.62498f, 0.707107f);
6305path.close();
6306path.moveTo(46.3599f, 10.1759f);
6307path.quadTo(46.6546f, 10.6005f, 46.9322f, 11.0366f);
6308path.conicTo(47.4693f, 11.8801f, 46.6257f, 12.4172f, 0.707107f);
6309path.conicTo(45.7822f, 12.9542f, 45.2451f, 12.1107f, 0.707107f);
6310path.quadTo(44.9889f, 11.7082f, 44.7168f, 11.3162f);
6311path.conicTo(44.1467f, 10.4947f, 44.9682f, 9.92452f, 0.707107f);
6312path.conicTo(45.7897f, 9.35435f, 46.3599f, 10.1759f, 0.707107f);
6313path.close();
6314path.moveTo(47.9708f, 12.8204f);
6315path.quadTo(48.2149f, 13.2808f, 48.4403f, 13.7506f);
6316path.conicTo(48.873f, 14.6521f, 47.9715f, 15.0848f, 0.707107f);
6317path.conicTo(47.0699f, 15.5174f, 46.6372f, 14.6159f, 0.707107f);
6318path.quadTo(46.4291f, 14.1822f, 46.2038f, 13.7573f);
6319path.conicTo(45.7354f, 12.8738f, 46.6188f, 12.4054f, 0.707107f);
6320path.conicTo(47.5023f, 11.9369f, 47.9708f, 12.8204f, 0.707107f);
6321path.close();
6322path.moveTo(49.2713f, 15.6778f);
6323path.quadTo(49.4606f, 16.1706f, 49.6297f, 16.6708f);
6324path.conicTo(49.9501f, 17.6181f, 49.0028f, 17.9384f, 0.707107f);
6325path.conicTo(48.0555f, 18.2588f, 47.7351f, 17.3115f, 0.707107f);
6326path.quadTo(47.5791f, 16.8499f, 47.4043f, 16.3949f);
6327path.conicTo(47.0458f, 15.4614f, 47.9793f, 15.1029f, 0.707107f);
6328path.conicTo(48.9128f, 14.7443f, 49.2713f, 15.6778f, 0.707107f);
6329path.close();
6330path.moveTo(50.2261f, 18.7037f);
6331path.quadTo(50.3547f, 19.2188f, 50.4621f, 19.7388f);
6332path.conicTo(50.6645f, 20.7182f, 49.6852f, 20.9205f, 0.707107f);
6333path.conicTo(48.7059f, 21.1229f, 48.5035f, 20.1436f, 0.707107f);
6334path.quadTo(48.4043f, 19.6636f, 48.2856f, 19.1881f);
6335path.conicTo(48.0435f, 18.2178f, 49.0137f, 17.9757f, 0.707107f);
6336path.conicTo(49.984f, 17.7335f, 50.2261f, 18.7037f, 0.707107f);
6337path.close();
6338path.moveTo(50.803f, 21.8055f);
6339path.quadTo(50.8671f, 22.3234f, 50.9104f, 22.8434f);
6340path.conicTo(50.9934f, 23.8399f, 49.9968f, 23.9229f, 0.707107f);
6341path.conicTo(49.0002f, 24.0058f, 48.9173f, 23.0093f, 0.707107f);
6342path.quadTo(48.8773f, 22.5293f, 48.8182f, 22.0513f);
6343path.conicTo(48.6953f, 21.0588f, 49.6877f, 20.936f, 0.707107f);
6344path.conicTo(50.6801f, 20.8131f, 50.803f, 21.8055f, 0.707107f);
6345path.close();
6346path.moveTo(50.9999f, 24.9202f);
6347path.quadTo(51.0015f, 25.4434f, 50.982f, 25.9664f);
6348path.conicTo(50.9449f, 26.9657f, 49.9456f, 26.9286f, 0.707107f);
6349path.conicTo(48.9463f, 26.8914f, 48.9834f, 25.8921f, 0.707107f);
6350path.quadTo(49.0014f, 25.4094f, 48.9999f, 24.9263f);
6351path.conicTo(48.9968f, 23.9263f, 49.9968f, 23.9232f, 0.707107f);
6352path.conicTo(50.9968f, 23.9202f, 50.9999f, 24.9202f, 0.707107f);
6353path.close();
6354path.moveTo(50.8198f, 28.0562f);
6355path.quadTo(50.7587f, 28.5721f, 50.677f, 29.0852f);
6356path.conicTo(50.5199f, 30.0728f, 49.5323f, 29.9157f, 0.707107f);
6357path.conicTo(48.5448f, 29.7586f, 48.7019f, 28.771f, 0.707107f);
6358path.quadTo(48.7772f, 28.2974f, 48.8336f, 27.8211f);
6359path.conicTo(48.9512f, 26.8281f, 49.9442f, 26.9456f, 0.707107f);
6360path.conicTo(50.9373f, 27.0632f, 50.8198f, 28.0562f, 0.707107f);
6361path.close();
6362path.moveTo(50.2647f, 31.1395f);
6363path.quadTo(50.1358f, 31.6701f, 49.9847f, 32.1949f);
6364path.conicTo(49.7079f, 33.1558f, 48.747f, 32.8791f, 0.707107f);
6365path.conicTo(47.786f, 32.6024f, 48.0628f, 31.6414f, 0.707107f);
6366path.quadTo(48.2022f, 31.1571f, 48.3213f, 30.6672f);
6367path.conicTo(48.5574f, 29.6955f, 49.5291f, 29.9317f, 0.707107f);
6368path.conicTo(50.5009f, 30.1678f, 50.2647f, 31.1395f, 0.707107f);
6369path.close();
6370path.moveTo(49.3049f, 34.2343f);
6371path.quadTo(49.1171f, 34.7285f, 48.9095f, 35.2145f);
6372path.conicTo(48.5166f, 36.1341f, 47.597f, 35.7412f, 0.707107f);
6373path.conicTo(46.6774f, 35.3483f, 47.0703f, 34.4288f, 0.707107f);
6374path.quadTo(47.262f, 33.9801f, 47.4353f, 33.524f);
6375path.conicTo(47.7904f, 32.5892f, 48.7252f, 32.9444f, 0.707107f);
6376path.conicTo(49.66f, 33.2995f, 49.3049f, 34.2343f, 0.707107f);
6377path.close();
6378path.moveTo(48.0194f, 37.0875f);
6379path.quadTo(47.7831f, 37.5374f, 47.5295f, 37.9777f);
6380path.conicTo(47.0304f, 38.8443f, 46.1638f, 38.3451f, 0.707107f);
6381path.conicTo(45.2973f, 37.846f, 45.7965f, 36.9795f, 0.707107f);
6382path.quadTo(46.0306f, 36.5729f, 46.2487f, 36.1577f);
6383path.conicTo(46.7136f, 35.2723f, 47.5989f, 35.7372f, 0.707107f);
6384path.conicTo(48.4843f, 36.2021f, 48.0194f, 37.0875f, 0.707107f);
6385path.close();
6386path.moveTo(46.4721f, 39.6612f);
6387path.quadTo(46.1926f, 40.0705f, 45.8977f, 40.4688f);
6388path.conicTo(45.3028f, 41.2726f, 44.499f, 40.6776f, 0.707107f);
6389path.conicTo(43.6953f, 40.0827f, 44.2902f, 39.2789f, 0.707107f);
6390path.quadTo(44.5624f, 38.9112f, 44.8204f, 38.5334f);
6391path.conicTo(45.3843f, 37.7075f, 46.2101f, 38.2714f, 0.707107f);
6392path.conicTo(47.036f, 38.8353f, 46.4721f, 39.6612f, 0.707107f);
6393path.close();
6394path.moveTo(44.6298f, 42.0491f);
6395path.quadTo(44.2906f, 42.4396f, 43.9361f, 42.8164f);
6396path.conicTo(43.2509f, 43.5447f, 42.5226f, 42.8595f, 0.707107f);
6397path.conicTo(41.7942f, 42.1742f, 42.4795f, 41.4459f, 0.707107f);
6398path.quadTo(42.8067f, 41.0981f, 43.1198f, 40.7376f);
6399path.conicTo(43.7756f, 39.9826f, 44.5306f, 40.6383f, 0.707107f);
6400path.conicTo(45.2856f, 41.2941f, 44.6298f, 42.0491f, 0.707107f);
6401path.close();
6402path.moveTo(42.4305f, 44.2919f);
6403path.quadTo(42.0324f, 44.6516f, 41.6198f, 44.9946f);
6404path.conicTo(40.8507f, 45.6338f, 40.2115f, 44.8648f, 0.707107f);
6405path.conicTo(39.5723f, 44.0958f, 40.3413f, 43.4566f, 0.707107f);
6406path.quadTo(40.7222f, 43.1399f, 41.0897f, 42.8079f);
6407path.conicTo(41.8317f, 42.1375f, 42.5021f, 42.8795f, 0.707107f);
6408path.conicTo(43.1725f, 43.6215f, 42.4305f, 44.2919f, 0.707107f);
6409path.close();
6410path.moveTo(39.8873f, 46.3159f);
6411path.quadTo(39.4613f, 46.6134f, 39.0238f, 46.8936f);
6412path.conicTo(38.1818f, 47.433f, 37.6424f, 46.5909f, 0.707107f);
6413path.conicTo(37.103f, 45.7489f, 37.9451f, 45.2095f, 0.707107f);
6414path.quadTo(38.3489f, 44.9508f, 38.7421f, 44.6763f);
6415path.conicTo(39.5619f, 44.1037f, 40.1345f, 44.9235f, 0.707107f);
6416path.conicTo(40.7071f, 45.7434f, 39.8873f, 46.3159f, 0.707107f);
6417path.close();
6418path.moveTo(37.2437f, 47.9367f);
6419path.quadTo(36.7842f, 48.182f, 36.3153f, 48.4086f);
6420path.conicTo(35.415f, 48.8439f, 34.9797f, 47.9435f, 0.707107f);
6421path.conicTo(34.5445f, 47.0432f, 35.4449f, 46.608f, 0.707107f);
6422path.quadTo(35.8778f, 46.3987f, 36.3019f, 46.1723f);
6423path.conicTo(37.1841f, 45.7014f, 37.655f, 46.5836f, 0.707107f);
6424path.conicTo(38.1259f, 47.4658f, 37.2437f, 47.9367f, 0.707107f);
6425path.close();
6426path.moveTo(34.3909f, 49.2448f);
6427path.quadTo(33.8988f, 49.4354f, 33.3992f, 49.606f);
6428path.conicTo(32.4528f, 49.929f, 32.1298f, 48.9826f, 0.707107f);
6429path.conicTo(31.8068f, 48.0362f, 32.7532f, 47.7132f, 0.707107f);
6430path.quadTo(33.2142f, 47.5558f, 33.6685f, 47.3798f);
6431path.conicTo(34.601f, 47.0186f, 34.9622f, 47.9511f, 0.707107f);
6432path.conicTo(35.3234f, 48.8836f, 34.3909f, 49.2448f, 0.707107f);
6433path.close();
6434path.moveTo(31.3682f, 50.208f);
6435path.quadTo(30.8535f, 50.3381f, 30.3338f, 50.447f);
6436path.conicTo(29.3551f, 50.6521f, 29.15f, 49.6734f, 0.707107f);
6437path.conicTo(28.9448f, 48.6947f, 29.9236f, 48.4895f, 0.707107f);
6438path.quadTo(30.4033f, 48.389f, 30.8784f, 48.269f);
6439path.conicTo(31.8479f, 48.024f, 32.0929f, 48.9936f, 0.707107f);
6440path.conicTo(32.3378f, 49.9631f, 31.3682f, 50.208f, 0.707107f);
6441path.close();
6442path.moveTo(28.2669f, 50.7939f);
6443path.quadTo(27.7491f, 50.8595f, 27.2292f, 50.9043f);
6444path.conicTo(26.2329f, 50.99f, 26.1472f, 49.9937f, 0.707107f);
6445path.conicTo(26.0615f, 48.9973f, 27.0578f, 48.9116f, 0.707107f);
6446path.quadTo(27.5378f, 48.8703f, 28.0156f, 48.8098f);
6447path.conicTo(29.0077f, 48.6841f, 29.1334f, 49.6762f, 0.707107f);
6448path.conicTo(29.259f, 50.6683f, 28.2669f, 50.7939f, 0.707107f);
6449path.close();
6450path.moveTo(25.1523f, 50.9996f);
6451path.quadTo(24.6297f, 51.0026f, 24.1072f, 50.9847f);
6452path.conicTo(23.1078f, 50.9503f, 23.1422f, 49.9509f, 0.707107f);
6453path.conicTo(23.1765f, 48.9515f, 24.1759f, 48.9858f, 0.707107f);
6454path.quadTo(24.658f, 49.0024f, 25.1406f, 48.9996f);
6455path.conicTo(26.1406f, 48.9937f, 26.1464f, 49.9937f, 0.707107f);
6456path.conicTo(26.1523f, 50.9937f, 25.1523f, 50.9996f, 0.707107f);
6457path.close();
6458path.moveTo(22.0162f, 50.8282f);
6459path.quadTo(21.4999f, 50.7686f, 20.9863f, 50.6883f);
6460path.conicTo(19.9983f, 50.5339f, 20.1527f, 49.5459f, 0.707107f);
6461path.conicTo(20.307f, 48.5579f, 21.295f, 48.7123f, 0.707107f);
6462path.quadTo(21.7691f, 48.7864f, 22.2457f, 48.8414f);
6463path.conicTo(23.2391f, 48.9562f, 23.1243f, 49.9496f, 0.707107f);
6464path.conicTo(23.0096f, 50.943f, 22.0162f, 50.8282f, 0.707107f);
6465path.close();
6466path.moveTo(18.9351f, 50.2827f);
6467path.quadTo(18.4037f, 50.1553f, 17.8782f, 50.0056f);
6468path.conicTo(16.9164f, 49.7317f, 17.1904f, 48.7699f, 0.707107f);
6469path.conicTo(17.4643f, 47.8082f, 18.426f, 48.0821f, 0.707107f);
6470path.quadTo(18.9112f, 48.2203f, 19.4016f, 48.3379f);
6471path.conicTo(20.374f, 48.5712f, 20.1408f, 49.5436f, 0.707107f);
6472path.conicTo(19.9075f, 50.516f, 18.9351f, 50.2827f, 0.707107f);
6473path.close();
6474path.moveTo(15.8352f, 49.3312f);
6475path.quadTo(15.3403f, 49.1448f, 14.8531f, 48.9383f);
6476path.conicTo(13.9324f, 48.548f, 14.3227f, 47.6273f, 0.707107f);
6477path.conicTo(14.713f, 46.7066f, 15.6337f, 47.0969f, 0.707107f);
6478path.quadTo(16.0832f, 47.2874f, 16.5402f, 47.4596f);
6479path.conicTo(17.476f, 47.812f, 17.1235f, 48.7479f, 0.707107f);
6480path.conicTo(16.771f, 49.6837f, 15.8352f, 49.3312f, 0.707107f);
6481path.close();
6482path.moveTo(12.9759f, 48.0526f);
6483path.quadTo(12.5249f, 47.8173f, 12.0835f, 47.5647f);
6484path.conicTo(11.2156f, 47.0679f, 11.7124f, 46.2f, 0.707107f);
6485path.conicTo(12.2092f, 45.3321f, 13.0771f, 45.8289f, 0.707107f);
6486path.quadTo(13.4846f, 46.0622f, 13.9009f, 46.2793f);
6487path.conicTo(14.7875f, 46.7418f, 14.325f, 47.6284f, 0.707107f);
6488path.conicTo(13.8626f, 48.5151f, 12.9759f, 48.0526f, 0.707107f);
6489path.close();
6490path.moveTo(10.3957f, 46.5108f);
6491path.quadTo(9.9861f, 46.2327f, 9.58733f, 45.9392f);
6492path.conicTo(8.78198f, 45.3464f, 9.37478f, 44.541f, 0.707107f);
6493path.conicTo(9.96757f, 43.7357f, 10.7729f, 44.3285f, 0.707107f);
6494path.quadTo(11.141f, 44.5994f, 11.5191f, 44.8561f);
6495path.conicTo(12.3464f, 45.4178f, 11.7847f, 46.2451f, 0.707107f);
6496path.conicTo(11.223f, 47.0725f, 10.3957f, 46.5108f, 0.707107f);
6497path.close();
6498path.moveTo(8.00525f, 44.6769f);
6499path.quadTo(7.6141f, 44.339f, 7.23672f, 43.9859f);
6500path.conicTo(6.50649f, 43.3027f, 7.18969f, 42.5725f, 0.707107f);
6501path.conicTo(7.87289f, 41.8423f, 8.60312f, 42.5255f, 0.707107f);
6502path.quadTo(8.95149f, 42.8514f, 9.31254f, 43.1632f);
6503path.conicTo(10.0693f, 43.8169f, 9.4157f, 44.5737f, 0.707107f);
6504path.conicTo(8.76206f, 45.3305f, 8.00525f, 44.6769f, 0.707107f);
6505path.close();
6506path.moveTo(5.75818f, 42.4858f);
6507path.quadTo(5.39763f, 42.089f, 5.05371f, 41.6777f);
6508path.conicTo(4.41226f, 40.9105f, 5.17942f, 40.2691f, 0.707107f);
6509path.conicTo(5.94658f, 39.6276f, 6.58804f, 40.3948f, 0.707107f);
6510path.quadTo(6.90548f, 40.7744f, 7.23832f, 41.1407f);
6511path.conicTo(7.91085f, 41.8808f, 7.17078f, 42.5533f, 0.707107f);
6512path.conicTo(6.43071f, 43.2258f, 5.75818f, 42.4858f, 0.707107f);
6513path.close();
6514path.moveTo(3.72821f, 39.9503f);
6515path.quadTo(3.42794f, 39.523f, 3.1451f, 39.0842f);
6516path.conicTo(2.6034f, 38.2436f, 3.44397f, 37.7019f, 0.707107f);
6517path.conicTo(4.28454f, 37.1602f, 4.82624f, 38.0008f, 0.707107f);
6518path.quadTo(5.08734f, 38.4059f, 5.3645f, 38.8003f);
6519path.conicTo(5.93951f, 39.6184f, 5.12137f, 40.1934f, 0.707107f);
6520path.conicTo(4.30322f, 40.7684f, 3.72821f, 39.9503f, 0.707107f);
6521path.close();
6522path.moveTo(2.09762f, 37.3078f);
6523path.quadTo(1.85114f, 36.8491f, 1.62324f, 36.381f);
6524path.conicTo(1.18551f, 35.4819f, 2.08461f, 35.0442f, 0.707107f);
6525path.conicTo(2.98372f, 34.6064f, 3.42145f, 35.5055f, 0.707107f);
6526path.quadTo(3.63184f, 35.9377f, 3.85934f, 36.361f);
6527path.conicTo(4.33272f, 37.2419f, 3.45185f, 37.7153f, 0.707107f);
6528path.conicTo(2.57099f, 38.1886f, 2.09762f, 37.3078f, 0.707107f);
6529path.close();
6530path.moveTo(0.781912f, 34.4596f);
6531path.quadTo(0.589924f, 33.9681f, 0.418029f, 33.4692f);
6532path.conicTo(0.0922952f, 32.5237f, 1.03776f, 32.198f, 0.707107f);
6533path.conicTo(1.98322f, 31.8722f, 2.30895f, 32.8177f, 0.707107f);
6534path.quadTo(2.46761f, 33.2782f, 2.64484f, 33.7319f);
6535path.conicTo(3.00867f, 34.6634f, 2.07721f, 35.0272f, 0.707107f);
6536path.conicTo(1.14575f, 35.3911f, 0.781912f, 34.4596f, 0.707107f);
6537path.close();
6538path.moveTo(-0.189761f, 31.4402f);
6539path.quadTo(-0.321263f, 30.9258f, -0.431662f, 30.4065f);
6540path.conicTo(-0.639608f, 29.4284f, 0.338532f, 29.2205f, 0.707107f);
6541path.conicTo(1.31667f, 29.0125f, 1.52462f, 29.9906f, 0.707107f);
6542path.quadTo(1.62653f, 30.47f, 1.74791f, 30.9448f);
6543path.conicTo(1.99561f, 31.9136f, 1.02677f, 32.1613f, 0.707107f);
6544path.conicTo(0.0579369f, 32.409f, -0.189761f, 31.4402f, 0.707107f);
6545path.close();
6546path.moveTo(-0.784658f, 28.3394f);
6547path.quadTo(-0.851693f, 27.8218f, -0.897902f, 27.3019f);
6548path.conicTo(-0.986437f, 26.3058f, 0.00963629f, 26.2173f, 0.707107f);
6549path.conicTo(1.00571f, 26.1288f, 1.09424f, 27.1248f, 0.707107f);
6550path.quadTo(1.1369f, 27.6047f, 1.19878f, 28.0825f);
6551path.conicTo(1.32721f, 29.0742f, 0.335496f, 29.2027f, 0.707107f);
6552path.conicTo(-0.656222f, 29.3311f, -0.784658f, 28.3394f, 0.707107f);
6553path.close();
6554path.moveTo(-0.999031f, 25.2248f);
6555path.quadTo(-1.00354f, 24.7027f, -0.987098f, 24.1809f);
6556path.conicTo(-0.955596f, 23.1814f, 0.0439078f, 23.2129f, 0.707107f);
6557path.conicTo(1.04341f, 23.2444f, 1.01191f, 24.2439f, 0.707107f);
6558path.quadTo(0.996728f, 24.7256f, 1.00089f, 25.2075f);
6559path.conicTo(1.00954f, 26.2075f, 0.00957754f, 26.2161f, 0.707107f);
6560path.conicTo(-0.990385f, 26.2248f, -0.999031f, 25.2248f, 0.707107f);
6561path.close();
6562path.moveTo(-0.836492f, 22.0887f);
6563path.quadTo(-0.778263f, 21.5719f, -0.699419f, 21.0579f);
6564path.conicTo(-0.5478f, 20.0695f, 0.440639f, 20.2211f, 0.707107f);
6565path.conicTo(1.42908f, 20.3727f, 1.27746f, 21.3612f, 0.707107f);
6566path.quadTo(1.20468f, 21.8356f, 1.15093f, 22.3126f);
6567path.conicTo(1.03896f, 23.3063f, 0.0452449f, 23.1944f, 0.707107f);
6568path.conicTo(-0.948466f, 23.0824f, -0.836492f, 22.0887f, 0.707107f);
6569path.close();
6570path.moveTo(-0.300548f, 19.0098f);
6571path.quadTo(-0.174573f, 18.4777f, -0.0263361f, 17.9514f);
6572path.conicTo(0.244762f, 16.9889f, 1.20731f, 17.26f, 0.707107f);
6573path.conicTo(2.16987f, 17.5311f, 1.89877f, 18.4936f, 0.707107f);
6574path.quadTo(1.76193f, 18.9794f, 1.64565f, 19.4706f);
6575path.conicTo(1.41526f, 20.4437f, 0.442159f, 20.2133f, 0.707107f);
6576path.conicTo(-0.530939f, 19.9829f, -0.300548f, 19.0098f, 0.707107f);
6577path.close();
6578path.moveTo(0.642658f, 15.9049f);
6579path.quadTo(0.827861f, 15.409f, 1.0331f, 14.9209f);
6580path.conicTo(1.42076f, 13.9991f, 2.34256f, 14.3868f, 0.707107f);
6581path.conicTo(3.26437f, 14.7744f, 2.87671f, 15.6962f, 0.707107f);
6582path.quadTo(2.68726f, 16.1467f, 2.5163f, 16.6046f);
6583path.conicTo(2.16648f, 17.5414f, 1.22967f, 17.1916f, 0.707107f);
6584path.conicTo(0.292846f, 16.8418f, 0.642658f, 15.9049f, 0.707107f);
6585path.close();
6586path.moveTo(1.91434f, 13.0395f);
6587path.quadTo(2.14856f, 12.5875f, 2.40031f, 12.1449f);
6588path.conicTo(2.89473f, 11.2757f, 3.76395f, 11.7701f, 0.707107f);
6589path.conicTo(4.63317f, 12.2645f, 4.13875f, 13.1337f, 0.707107f);
6590path.quadTo(3.90637f, 13.5423f, 3.69016f, 13.9596f);
6591path.conicTo(3.23014f, 14.8475f, 2.34223f, 14.3875f, 0.707107f);
6592path.conicTo(1.45432f, 13.9275f, 1.91434f, 13.0395f, 0.707107f);
6593path.close();
6594path.moveTo(3.45073f, 10.4525f);
6595path.quadTo(3.72744f, 10.0426f, 4.01954f, 9.64356f);
6596path.conicTo(4.61017f, 8.83661f, 5.41711f, 9.42725f, 0.707107f);
6597path.conicTo(6.22405f, 10.0179f, 5.63342f, 10.8248f, 0.707107f);
6598path.quadTo(5.36379f, 11.1932f, 5.10836f, 11.5716f);
6599path.conicTo(4.54884f, 12.4004f, 3.72003f, 11.8409f, 0.707107f);
6600path.conicTo(2.89121f, 11.2813f, 3.45073f, 10.4525f, 0.707107f);
6601path.close();
6602path.moveTo(5.2763f, 8.05964f);
6603path.quadTo(5.61273f, 7.66793f, 5.96445f, 7.2899f);
6604path.conicTo(6.6456f, 6.55776f, 7.37774f, 7.23892f, 0.707107f);
6605path.conicTo(8.10988f, 7.92008f, 7.42872f, 8.65221f, 0.707107f);
6606path.quadTo(7.10407f, 9.00116f, 6.79351f, 9.36274f);
6607path.conicTo(6.14196f, 10.1213f, 5.38336f, 9.46979f, 0.707107f);
6608path.conicTo(4.62475f, 8.81824f, 5.2763f, 8.05964f, 0.707107f);
6609path.close();
6610path.moveTo(7.45913f, 5.80839f);
6611path.quadTo(7.85457f, 5.44696f, 8.26455f, 5.10214f);
6612path.conicTo(9.02985f, 4.45847f, 9.67352f, 5.22377f, 0.707107f);
6613path.conicTo(10.3172f, 5.98907f, 9.5519f, 6.63274f, 0.707107f);
6614path.quadTo(9.17345f, 6.95105f, 8.80843f, 7.28467f);
6615path.conicTo(8.07029f, 7.95931f, 7.39564f, 7.22117f, 0.707107f);
6616path.conicTo(6.72099f, 6.48303f, 7.45913f, 5.80839f, 0.707107f);
6617path.close();
6618path.moveTo(9.98688f, 3.77251f);
6619path.quadTo(10.4153f, 3.46948f, 10.8557f, 3.18397f);
6620path.conicTo(11.6948f, 2.63996f, 12.2388f, 3.47904f, 0.707107f);
6621path.conicTo(12.7828f, 4.31812f, 11.9437f, 4.86213f, 0.707107f);
6622path.quadTo(11.5373f, 5.12566f, 11.1417f, 5.40539f);
6623path.conicTo(10.3253f, 5.98282f, 9.74787f, 5.16638f, 0.707107f);
6624path.conicTo(9.17044f, 4.34994f, 9.98688f, 3.77251f, 0.707107f);
6625path.close();
6626path.moveTo(12.6283f, 2.13208f);
6627path.quadTo(13.0861f, 1.88442f, 13.5534f, 1.65529f);
6628path.conicTo(14.4513f, 1.21504f, 14.8915f, 2.11291f, 0.707107f);
6629path.conicTo(15.3318f, 3.01078f, 14.4339f, 3.45104f, 0.707107f);
6630path.quadTo(14.0025f, 3.66255f, 13.58f, 3.89115f);
6631path.conicTo(12.7005f, 4.36698f, 12.2246f, 3.48744f, 0.707107f);
6632path.conicTo(11.7488f, 2.60791f, 12.6283f, 2.13208f, 0.707107f);
6633path.close();
6634path.moveTo(15.4718f, 0.808815f);
6635path.quadTo(15.9627f, 0.615476f, 16.461f, 0.442208f);
6636path.conicTo(17.4055f, 0.113784f, 17.7339f, 1.05831f, 0.707107f);
6637path.conicTo(18.0624f, 2.00284f, 17.1178f, 2.33127f, 0.707107f);
6638path.quadTo(16.6578f, 2.49121f, 16.2047f, 2.66968f);
6639path.conicTo(15.2743f, 3.03614f, 14.9078f, 2.10571f, 0.707107f);
6640path.conicTo(14.5414f, 1.17528f, 15.4718f, 0.808815f, 0.707107f);
6641path.close();
6642path.moveTo(18.4879f, -0.171272f);
6643path.quadTo(19.0019f, -0.304236f, 19.5208f, -0.416111f);
6644path.conicTo(20.4984f, -0.62685f, 20.7091f, 0.350692f, 0.707107f);
6645path.conicTo(20.9198f, 1.32823f, 19.9423f, 1.53897f, 0.707107f);
6646path.quadTo(19.4633f, 1.64224f, 18.9889f, 1.76498f);
6647path.conicTo(18.0207f, 2.01544f, 17.7703f, 1.04732f, 0.707107f);
6648path.conicTo(17.5198f, 0.0791926f, 18.4879f, -0.171272f, 0.707107f);
6649path.close();
6650path.moveTo(21.5882f, -0.77517f);
6651path.quadTo(22.1056f, -0.843665f, 22.6254f, -0.891339f);
6652path.conicTo(23.6212f, -0.982672f, 23.7126f, 0.0131486f, 0.707107f);
6653path.conicTo(23.8039f, 1.00897f, 22.8081f, 1.1003f, 0.707107f);
6654path.quadTo(22.3283f, 1.14431f, 21.8506f, 1.20754f);
6655path.conicTo(20.8592f, 1.33876f, 20.728f, 0.347405f, 0.707107f);
6656path.conicTo(20.5968f, -0.643948f, 21.5882f, -0.77517f, 0.707107f);
6657path.close();
6658path.moveTo(24.7026f, -0.998301f);
6659path.quadTo(25.2241f, -1.00426f, 25.7453f, -0.989316f);
6660path.conicTo(26.7449f, -0.960651f, 26.7162f, 0.0389383f, 0.707107f);
6661path.conicTo(26.6876f, 1.03853f, 25.688f, 1.00986f, 0.707107f);
6662path.quadTo(25.2068f, 0.996064f, 24.7255f, 1.00157f);
6663path.conicTo(23.7256f, 1.013f, 23.7141f, 0.0130688f, 0.707107f);
6664path.conicTo(23.7027f, -0.986866f, 24.7026f, -0.998301f, 0.707107f);
6665path.close();
6666path.moveTo(27.8388f, -0.844563f);
6667path.quadTo(28.3559f, -0.787759f, 28.8704f, -0.710314f);
6668path.conicTo(29.8592f, -0.561454f, 29.7104f, 0.427404f, 0.707107f);
6669path.conicTo(29.5615f, 1.41626f, 28.5726f, 1.2674f, 0.707107f);
6670path.quadTo(28.0978f, 1.19591f, 27.6204f, 1.14348f);
6671path.conicTo(26.6264f, 1.0343f, 26.7356f, 0.0402742f, 0.707107f);
6672path.conicTo(26.8447f, -0.953747f, 27.8388f, -0.844563f, 0.707107f);
6673path.close();
6674path.moveTo(30.9153f, -0.318153f);
6675path.quadTo(31.4481f, -0.193671f, 31.9752f, -0.046875f);
6676path.conicTo(32.9386f, 0.221405f, 32.6703f, 1.18475f, 0.707107f);
6677path.conicTo(32.402f, 2.14809f, 31.4387f, 1.87981f, 0.707107f);
6678path.quadTo(30.9521f, 1.74431f, 30.4603f, 1.6294f);
6679path.conicTo(29.4865f, 1.40189f, 29.714f, 0.428111f, 0.707107f);
6680path.conicTo(29.9416f, -0.545664f, 30.9153f, -0.318153f, 0.707107f);
6681path.close();
6682path.moveTo(34.0252f, 0.616677f);
6683path.quadTo(34.5221f, 0.800609f, 35.0111f, 1.00465f);
6684path.conicTo(35.934f, 1.3897f, 35.549f, 2.31259f, 0.707107f);
6685path.conicTo(35.1639f, 3.23549f, 34.241f, 2.85044f, 0.707107f);
6686path.quadTo(33.7896f, 2.66211f, 33.3309f, 2.49232f);
6687path.conicTo(32.3931f, 2.1452f, 32.7402f, 1.20738f, 0.707107f);
6688path.conicTo(33.0873f, 0.269559f, 34.0252f, 0.616677f, 0.707107f);
6689path.close();
6690path.moveTo(36.8967f, 1.88141f);
6691path.quadTo(37.3499f, 2.11462f, 37.7936f, 2.3654f);
6692path.conicTo(38.6641f, 2.85746f, 38.1721f, 3.72802f, 0.707107f);
6693path.conicTo(37.68f, 4.59858f, 36.8094f, 4.10652f, 0.707107f);
6694path.quadTo(36.3999f, 3.87504f, 35.9815f, 3.65976f);
6695path.conicTo(35.0924f, 3.2022f, 35.5499f, 2.31302f, 0.707107f);
6696path.conicTo(36.0075f, 1.42384f, 36.8967f, 1.88141f, 0.707107f);
6697path.close();
6698path.moveTo(39.4914f, 3.413f);
6699path.lineTo(39.5381f, 3.44439f);
6700path.quadTo(39.9244f, 3.70494f, 40.3002f, 3.97845f);
6701path.conicTo(41.1087f, 4.56692f, 40.5202f, 5.37544f, 0.707107f);
6702path.conicTo(39.9317f, 6.18396f, 39.1232f, 5.59549f, 0.707107f);
6703path.quadTo(38.7763f, 5.34298f, 38.4215f, 5.10371f);
6704path.lineTo(38.3749f, 5.07232f);
6705path.conicTo(37.5452f, 4.51406f, 38.1035f, 3.68439f, 0.707107f);
6706path.conicTo(38.6618f, 2.85473f, 39.4914f, 3.413f, 0.707107f);
6707path.close();
6708path.moveTo(41.8859f, 5.22965f);
6709path.quadTo(42.2782f, 5.56471f, 42.6568f, 5.91499f);
6710path.conicTo(43.3908f, 6.5941f, 42.7117f, 7.32814f, 0.707107f);
6711path.conicTo(42.0326f, 8.06218f, 41.2986f, 7.38308f, 0.707107f);
6712path.quadTo(40.949f, 7.05968f, 40.587f, 6.75043f);
6713path.conicTo(39.8266f, 6.10097f, 40.476f, 5.34058f, 0.707107f);
6714path.conicTo(41.1255f, 4.58018f, 41.8859f, 5.22965f, 0.707107f);
6715path.close();
6716path.moveTo(44.1413f, 7.40421f);
6717path.quadTo(44.5035f, 7.79829f, 44.8493f, 8.20695f);
6718path.conicTo(45.4952f, 8.97038f, 44.7317f, 9.61627f, 0.707107f);
6719path.conicTo(43.9683f, 10.2622f, 43.3224f, 9.49874f, 0.707107f);
6720path.quadTo(43.0033f, 9.1215f, 42.6689f, 8.75773f);
6721path.conicTo(41.9921f, 8.02152f, 42.7283f, 7.34476f, 0.707107f);
6722path.conicTo(43.4645f, 6.668f, 44.1413f, 7.40421f, 0.707107f);
6723path.close();
6724path.moveTo(46.183f, 9.9242f);
6725path.quadTo(46.4888f, 10.3539f, 46.777f, 10.7957f);
6726path.conicTo(47.3233f, 11.6332f, 46.4857f, 12.1796f, 0.707107f);
6727path.conicTo(45.6482f, 12.7259f, 45.1018f, 11.8883f, 0.707107f);
6728path.quadTo(44.8358f, 11.4805f, 44.5535f, 11.0839f);
6729path.conicTo(43.9737f, 10.2691f, 44.7884f, 9.6893f, 0.707107f);
6730path.conicTo(45.6032f, 9.10947f, 46.183f, 9.9242f, 0.707107f);
6731path.close();
6732path.moveTo(47.8333f, 12.5645f);
6733path.quadTo(48.0821f, 13.0214f, 48.3125f, 13.4879f);
6734path.conicTo(48.7552f, 14.3845f, 47.8586f, 14.8273f, 0.707107f);
6735path.conicTo(46.962f, 15.2701f, 46.5192f, 14.3734f, 0.707107f);
6736path.quadTo(46.3065f, 13.9428f, 46.0769f, 13.5211f);
6737path.conicTo(45.5986f, 12.6429f, 46.4768f, 12.1646f, 0.707107f);
6738path.conicTo(47.355f, 11.6863f, 47.8333f, 12.5645f, 0.707107f);
6739path.close();
6740path.moveTo(49.1641f, 15.4033f);
6741path.quadTo(49.3588f, 15.8935f, 49.5334f, 16.3912f);
6742path.conicTo(49.8645f, 17.3348f, 48.9209f, 17.6659f, 0.707107f);
6743path.conicTo(47.9773f, 17.997f, 47.6462f, 17.0534f, 0.707107f);
6744path.quadTo(47.485f, 16.5939f, 47.3053f, 16.1415f);
6745path.conicTo(46.9362f, 15.2121f, 47.8656f, 14.843f, 0.707107f);
6746path.conicTo(48.795f, 14.4739f, 49.1641f, 15.4033f, 0.707107f);
6747path.close();
6748path.moveTo(50.1526f, 18.4161f);
6749path.quadTo(50.287f, 18.9296f, 50.4003f, 19.4482f);
6750path.conicTo(50.6139f, 20.4252f, 49.6369f, 20.6387f, 0.707107f);
6751path.conicTo(48.66f, 20.8522f, 48.4465f, 19.8753f, 0.707107f);
6752path.quadTo(48.3419f, 19.3966f, 48.2178f, 18.9225f);
6753path.conicTo(47.9645f, 17.9551f, 48.9319f, 17.7019f, 0.707107f);
6754path.conicTo(49.8993f, 17.4487f, 50.1526f, 18.4161f, 0.707107f);
6755path.close();
6756path.moveTo(50.7655f, 21.5157f);
6757path.quadTo(50.8354f, 22.033f, 50.8846f, 22.5528f);
6758path.conicTo(50.9787f, 23.5483f, 49.9831f, 23.6425f, 0.707107f);
6759path.conicTo(48.9876f, 23.7366f, 48.8935f, 22.741f, 0.707107f);
6760path.quadTo(48.8481f, 22.2613f, 48.7835f, 21.7837f);
6761path.conicTo(48.6495f, 20.7928f, 49.6405f, 20.6587f, 0.707107f);
6762path.conicTo(50.6315f, 20.5247f, 50.7655f, 21.5157f, 0.707107f);
6763path.close();
6764path.moveTo(50.9974f, 24.6301f);
6765path.quadTo(51.0048f, 25.1509f, 50.9913f, 25.6715f);
6766path.conicTo(50.9655f, 26.6712f, 49.9658f, 26.6454f, 0.707107f);
6767path.conicTo(48.9662f, 26.6196f, 48.992f, 25.6199f, 0.707107f);
6768path.quadTo(49.0044f, 25.1393f, 48.9976f, 24.6585f);
6769path.conicTo(48.9834f, 23.6586f, 49.9833f, 23.6444f, 0.707107f);
6770path.conicTo(50.9832f, 23.6302f, 50.9974f, 24.6301f, 0.707107f);
6771path.close();
6772path.moveTo(50.8524f, 27.7662f);
6773path.quadTo(50.7971f, 28.2837f, 50.721f, 28.7986f);
6774path.conicTo(50.5749f, 29.7879f, 49.5856f, 29.6418f, 0.707107f);
6775path.conicTo(48.5963f, 29.4957f, 48.7425f, 28.5064f, 0.707107f);
6776path.quadTo(48.8127f, 28.0311f, 48.8638f, 27.5534f);
6777path.conicTo(48.9702f, 26.5591f, 49.9645f, 26.6655f, 0.707107f);
6778path.conicTo(50.9588f, 26.7718f, 50.8524f, 27.7662f, 0.707107f);
6779path.close();
6780path.moveTo(50.3355f, 30.8404f);
6781path.quadTo(50.2125f, 31.3739f, 50.0672f, 31.9018f);
6782path.conicTo(49.8018f, 32.8659f, 48.8376f, 32.6005f, 0.707107f);
6783path.conicTo(47.8735f, 32.335f, 48.139f, 31.3709f, 0.707107f);
6784path.quadTo(48.2731f, 30.8836f, 48.3867f, 30.3912f);
6785path.conicTo(48.6113f, 29.4167f, 49.5857f, 29.6413f, 0.707107f);
6786path.conicTo(50.5602f, 29.866f, 50.3355f, 30.8404f, 0.707107f);
6787path.close();
6788path.moveTo(49.4091f, 33.9552f);
6789path.quadTo(49.2264f, 34.4531f, 49.0236f, 34.9431f);
6790path.conicTo(48.6412f, 35.8671f, 47.7172f, 35.4846f, 0.707107f);
6791path.conicTo(46.7932f, 35.1022f, 47.1757f, 34.1782f, 0.707107f);
6792path.quadTo(47.3629f, 33.7259f, 47.5315f, 33.2663f);
6793path.conicTo(47.8759f, 32.3275f, 48.8147f, 32.672f, 0.707107f);
6794path.conicTo(49.7535f, 33.0164f, 49.4091f, 33.9552f, 0.707107f);
6795path.close();
6796path.moveTo(48.1514f, 36.8328f);
6797path.quadTo(47.9191f, 37.2871f, 47.6694f, 37.7318f);
6798path.conicTo(47.1797f, 38.6038f, 46.3078f, 38.1141f, 0.707107f);
6799path.conicTo(45.4359f, 37.6244f, 45.9256f, 36.7525f, 0.707107f);
6800path.quadTo(46.1562f, 36.3418f, 46.3705f, 35.9226f);
6801path.conicTo(46.8256f, 35.0321f, 47.716f, 35.4872f, 0.707107f);
6802path.conicTo(48.6065f, 35.9423f, 48.1514f, 36.8328f, 0.707107f);
6803path.close();
6804path.moveTo(46.6245f, 39.4354f);
6805path.lineTo(46.5563f, 39.537f);
6806path.quadTo(46.3146f, 39.8955f, 46.0624f, 40.2438f);
6807path.conicTo(45.4761f, 41.0539f, 44.666f, 40.4676f, 0.707107f);
6808path.conicTo(43.8559f, 39.8813f, 44.4422f, 39.0712f, 0.707107f);
6809path.quadTo(44.6749f, 38.7498f, 44.8955f, 38.4226f);
6810path.lineTo(44.9637f, 38.3211f);
6811path.conicTo(45.5209f, 37.4907f, 46.3513f, 38.0479f, 0.707107f);
6812path.conicTo(47.1817f, 38.605f, 46.6245f, 39.4354f, 0.707107f);
6813path.close();
6814path.moveTo(44.8168f, 41.8314f);
6815path.quadTo(44.4832f, 42.2241f, 44.1342f, 42.6034f);
6816path.conicTo(43.4572f, 43.3394f, 42.7212f, 42.6623f, 0.707107f);
6817path.conicTo(41.9853f, 41.9853f, 42.6623f, 41.2494f, 0.707107f);
6818path.quadTo(42.9845f, 40.8992f, 43.2924f, 40.5366f);
6819path.conicTo(43.9398f, 39.7745f, 44.702f, 40.4218f, 0.707107f);
6820path.conicTo(45.4642f, 41.0692f, 44.8168f, 41.8314f, 0.707107f);
6821path.close();
6822path.moveTo(42.6505f, 44.0908f);
6823path.quadTo(42.2577f, 44.454f, 41.8504f, 44.8006f);
6824path.conicTo(41.0888f, 45.4487f, 40.4408f, 44.6871f, 0.707107f);
6825path.conicTo(39.7927f, 43.9256f, 40.5542f, 43.2775f, 0.707107f);
6826path.quadTo(40.9302f, 42.9575f, 41.2928f, 42.6223f);
6827path.conicTo(42.027f, 41.9434f, 42.7059f, 42.6777f, 0.707107f);
6828path.conicTo(43.3848f, 43.412f, 42.6505f, 44.0908f, 0.707107f);
6829path.close();
6830path.moveTo(40.1383f, 46.1384f);
6831path.quadTo(39.7073f, 46.4471f, 39.2641f, 46.7378f);
6832path.conicTo(38.4281f, 47.2865f, 37.8795f, 46.4504f, 0.707107f);
6833path.conicTo(37.3308f, 45.6143f, 38.1669f, 45.0657f, 0.707107f);
6834path.quadTo(38.576f, 44.7972f, 38.9738f, 44.5124f);
6835path.conicTo(39.7868f, 43.9301f, 40.369f, 44.7432f, 0.707107f);
6836path.conicTo(40.9513f, 45.5562f, 40.1383f, 46.1384f, 0.707107f);
6837path.close();
6838path.moveTo(37.4991f, 47.7985f);
6839path.quadTo(37.0431f, 48.0485f, 36.5775f, 48.2801f);
6840path.conicTo(35.6821f, 48.7254f, 35.2368f, 47.83f, 0.707107f);
6841path.conicTo(34.7915f, 46.9346f, 35.6869f, 46.4893f, 0.707107f);
6842path.quadTo(36.1167f, 46.2755f, 36.5376f, 46.0448f);
6843path.conicTo(37.4145f, 45.5641f, 37.8952f, 46.4409f, 0.707107f);
6844path.conicTo(38.376f, 47.3178f, 37.4991f, 47.7985f, 0.707107f);
6845path.close();
6846path.moveTo(34.6651f, 49.1368f);
6847path.quadTo(34.1756f, 49.3328f, 33.6785f, 49.5089f);
6848path.conicTo(32.7358f, 49.8427f, 32.402f, 48.9f, 0.707107f);
6849path.conicTo(32.0682f, 47.9574f, 33.0109f, 47.6236f, 0.707107f);
6850path.quadTo(33.4697f, 47.4611f, 33.9216f, 47.2801f);
6851path.conicTo(34.85f, 46.9084f, 35.2217f, 47.8368f, 0.707107f);
6852path.conicTo(35.5934f, 48.7651f, 34.6651f, 49.1368f, 0.707107f);
6853path.close();
6854path.moveTo(31.6557f, 50.1337f);
6855path.quadTo(31.1425f, 50.2696f, 30.6243f, 50.3844f);
6856path.conicTo(29.648f, 50.6007f, 29.4317f, 49.6244f, 0.707107f);
6857path.conicTo(29.2153f, 48.6481f, 30.1917f, 48.4317f, 0.707107f);
6858path.quadTo(30.6701f, 48.3257f, 31.1437f, 48.2003f);
6859path.conicTo(32.1104f, 47.9443f, 32.3664f, 48.911f, 0.707107f);
6860path.conicTo(32.6223f, 49.8777f, 31.6557f, 50.1337f, 0.707107f);
6861path.close();
6862path.moveTo(28.5567f, 50.7556f);
6863path.quadTo(28.0395f, 50.827f, 27.5198f, 50.8776f);
6864path.conicTo(26.5245f, 50.9745f, 26.4276f, 49.9792f, 0.707107f);
6865path.conicTo(26.3307f, 48.9839f, 27.326f, 48.887f, 0.707107f);
6866path.quadTo(27.8056f, 48.8403f, 28.2831f, 48.7744f);
6867path.conicTo(29.2737f, 48.6376f, 29.4105f, 49.6282f, 0.707107f);
6868path.conicTo(29.5473f, 50.6188f, 28.5567f, 50.7556f, 0.707107f);
6869path.close();
6870path.moveTo(25.4424f, 50.9962f);
6871path.quadTo(24.9222f, 51.0051f, 24.4022f, 50.9931f);
6872path.conicTo(23.4025f, 50.9701f, 23.4255f, 49.9704f, 0.707107f);
6873path.conicTo(23.4485f, 48.9707f, 24.4482f, 48.9937f, 0.707107f);
6874path.quadTo(24.9283f, 49.0047f, 25.4084f, 48.9965f);
6875path.conicTo(26.4083f, 48.9795f, 26.4253f, 49.9794f, 0.707107f);
6876path.conicTo(26.4423f, 50.9792f, 25.4424f, 50.9962f, 0.707107f);
6877path.close();
6878path.moveTo(22.3065f, 50.8601f);
6879path.quadTo(21.7885f, 50.8062f, 21.2732f, 50.7315f);
6880path.conicTo(20.2835f, 50.5882f, 20.4268f, 49.5985f, 0.707107f);
6881path.conicTo(20.5702f, 48.6088f, 21.5599f, 48.7522f, 0.707107f);
6882path.quadTo(22.0355f, 48.8211f, 22.5136f, 48.8709f);
6883path.conicTo(23.5083f, 48.9745f, 23.4047f, 49.9691f, 0.707107f);
6884path.conicTo(23.3011f, 50.9637f, 22.3065f, 50.8601f, 0.707107f);
6885path.close();
6886path.moveTo(19.2346f, 50.3527f);
6887path.quadTo(18.7003f, 50.2312f, 18.1717f, 50.0873f);
6888path.conicTo(17.2068f, 49.8247f, 17.4694f, 48.8598f, 0.707107f);
6889path.conicTo(17.732f, 47.8949f, 18.6969f, 48.1575f, 0.707107f);
6890path.quadTo(19.185f, 48.2904f, 19.6781f, 48.4025f);
6891path.conicTo(20.6532f, 48.6243f, 20.4314f, 49.5994f, 0.707107f);
6892path.conicTo(20.2097f, 50.5745f, 19.2346f, 50.3527f, 0.707107f);
6893path.close();
6894path.moveTo(16.1149f, 49.4347f);
6895path.quadTo(15.6161f, 49.2533f, 15.1251f, 49.0517f);
6896path.conicTo(14.2f, 48.6719f, 14.5798f, 47.7469f, 0.707107f);
6897path.conicTo(14.9596f, 46.8218f, 15.8847f, 47.2016f, 0.707107f);
6898path.quadTo(16.3379f, 47.3877f, 16.7984f, 47.5551f);
6899path.conicTo(17.7382f, 47.8969f, 17.3964f, 48.8366f, 0.707107f);
6900path.conicTo(17.0547f, 49.7764f, 16.1149f, 49.4347f, 0.707107f);
6901path.close();
6902path.moveTo(13.2313f, 48.184f);
6903path.quadTo(12.776f, 47.9529f, 12.33f, 47.704f);
6904path.conicTo(11.4568f, 47.2167f, 11.9441f, 46.3434f, 0.707107f);
6905path.conicTo(12.4314f, 45.4702f, 13.3046f, 45.9575f, 0.707107f);
6906path.quadTo(13.7162f, 46.1872f, 14.1365f, 46.4006f);
6907path.conicTo(15.0282f, 46.8532f, 14.5756f, 47.7449f, 0.707107f);
6908path.conicTo(14.123f, 48.6366f, 13.2313f, 48.184f, 0.707107f);
6909path.close();
6910path.moveTo(10.6208f, 46.6619f);
6911path.lineTo(10.4641f, 46.5571f);
6912path.quadTo(10.1333f, 46.334f, 9.81253f, 46.1031f);
6913path.conicTo(9.00087f, 45.519f, 9.585f, 44.7073f, 0.707107f);
6914path.conicTo(10.1691f, 43.8957f, 10.9808f, 44.4798f, 0.707107f);
6915path.quadTo(11.2769f, 44.6929f, 11.5763f, 44.8948f);
6916path.lineTo(11.7329f, 44.9996f);
6917path.conicTo(12.564f, 45.5557f, 12.008f, 46.3868f, 0.707107f);
6918path.conicTo(11.4519f, 47.2179f, 10.6208f, 46.6619f, 0.707107f);
6919path.close();
6920path.moveTo(8.22326f, 44.8631f);
6921path.quadTo(7.82986f, 44.5308f, 7.44999f, 44.1833f);
6922path.conicTo(6.71217f, 43.5082f, 7.38718f, 42.7704f, 0.707107f);
6923path.conicTo(8.06219f, 42.0326f, 8.8f, 42.7076f, 0.707107f);
6924path.quadTo(9.15066f, 43.0284f, 9.51375f, 43.3351f);
6925path.conicTo(10.2777f, 43.9804f, 9.63248f, 44.7443f, 0.707107f);
6926path.conicTo(8.98724f, 45.5083f, 8.22326f, 44.8631f, 0.707107f);
6927path.close();
6928path.moveTo(5.95972f, 42.705f);
6929path.quadTo(5.59577f, 42.3136f, 5.24823f, 41.9076f);
6930path.conicTo(4.59793f, 41.148f, 5.3576f, 40.4977f, 0.707107f);
6931path.conicTo(6.11728f, 39.8473f, 6.76758f, 40.607f, 0.707107f);
6932path.quadTo(7.08843f, 40.9818f, 7.42436f, 41.3431f);
6933path.conicTo(8.10532f, 42.0754f, 7.373f, 42.7564f, 0.707107f);
6934path.conicTo(6.64068f, 43.4373f, 5.95972f, 42.705f, 0.707107f);
6935path.close();
6936path.moveTo(3.90635f, 40.2006f);
6937path.quadTo(3.59492f, 39.7684f, 3.30147f, 39.3239f);
6938path.conicTo(2.75055f, 38.4893f, 3.58511f, 37.9384f, 0.707107f);
6939path.conicTo(4.41967f, 37.3875f, 4.97059f, 38.222f, 0.707107f);
6940path.quadTo(5.24148f, 38.6324f, 5.52894f, 39.0313f);
6941path.conicTo(6.11358f, 39.8426f, 5.30228f, 40.4272f, 0.707107f);
6942path.conicTo(4.49099f, 41.0119f, 3.90635f, 40.2006f, 0.707107f);
6943path.close();
6944path.moveTo(2.23643f, 37.5626f);
6945path.quadTo(1.98525f, 37.1075f, 1.75248f, 36.6427f);
6946path.conicTo(1.30469f, 35.7486f, 2.19883f, 35.3008f, 0.707107f);
6947path.conicTo(3.09296f, 34.853f, 3.54076f, 35.7471f, 0.707107f);
6948path.quadTo(3.75563f, 36.1762f, 3.98747f, 36.5963f);
6949path.conicTo(4.47065f, 37.4718f, 3.59513f, 37.955f, 0.707107f);
6950path.conicTo(2.71961f, 38.4382f, 2.23643f, 37.5626f, 0.707107f);
6951path.close();
6952path.moveTo(0.890647f, 34.7334f);
6953path.quadTo(0.69328f, 34.2445f, 0.515902f, 33.7481f);
6954path.conicTo(0.179435f, 32.8064f, 1.12113f, 32.4699f, 0.707107f);
6955path.conicTo(2.06282f, 32.1335f, 2.39929f, 33.0752f, 0.707107f);
6956path.quadTo(2.56303f, 33.5334f, 2.74521f, 33.9847f);
6957path.conicTo(3.11957f, 34.912f, 2.19229f, 35.2863f, 0.707107f);
6958path.conicTo(1.26501f, 35.6607f, 0.890647f, 34.7334f, 0.707107f);
6959path.close();
6960path.moveTo(-0.114587f, 31.7274f);
6961path.quadTo(-0.251922f, 31.2147f, -0.368218f, 30.6968f);
6962path.conicTo(-0.587327f, 29.7211f, 0.388373f, 29.502f, 0.707107f);
6963path.conicTo(1.36407f, 29.2829f, 1.58318f, 30.2586f, 0.707107f);
6964path.quadTo(1.69053f, 30.7366f, 1.8173f, 31.2099f);
6965path.conicTo(2.07605f, 32.1758f, 1.1101f, 32.4346f, 0.707107f);
6966path.conicTo(0.144159f, 32.6933f, -0.114587f, 31.7274f, 0.707107f);
6967path.close();
6968path.moveTo(-0.745485f, 28.6291f);
6969path.quadTo(-0.818367f, 28.112f, -0.870432f, 27.5925f);
6970path.conicTo(-0.970142f, 26.5974f, 0.0248742f, 26.4977f, 0.707107f);
6971path.conicTo(1.01989f, 26.398f, 1.1196f, 27.393f, 0.707107f);
6972path.quadTo(1.16766f, 27.8726f, 1.23494f, 28.3499f);
6973path.conicTo(1.37452f, 29.3401f, 0.384305f, 29.4797f, 0.707107f);
6974path.conicTo(-0.605905f, 29.6193f, -0.745485f, 28.6291f, 0.707107f);
6975path.close();
6976path.moveTo(-0.994901f, 25.515f);
6977path.quadTo(-1.00519f, 24.9955f, -0.994722f, 24.4761f);
6978path.conicTo(-0.97457f, 23.4763f, 0.0252273f, 23.4964f, 0.707107f);
6979path.conicTo(1.02502f, 23.5166f, 1.00487f, 24.5164f, 0.707107f);
6980path.quadTo(0.995207f, 24.9959f, 1.00471f, 25.4754f);
6981path.conicTo(1.02451f, 26.4752f, 0.0247103f, 26.495f, 0.707107f);
6982path.conicTo(-0.975093f, 26.5148f, -0.994901f, 25.515f, 0.707107f);
6983path.close();
6984path.moveTo(-0.867571f, 22.3792f);
6985path.quadTo(-0.81506f, 21.8609f, -0.741825f, 21.3451f);
6986path.conicTo(-0.60125f, 20.355f, 0.38882f, 20.4956f, 0.707107f);
6987path.conicTo(1.37889f, 20.6361f, 1.23831f, 21.6262f, 0.707107f);
6988path.quadTo(1.17071f, 22.1023f, 1.12224f, 22.5807f);
6989path.conicTo(1.02144f, 23.5757f, 0.026537f, 23.4749f, 0.707107f);
6990path.conicTo(-0.96837f, 23.3741f, -0.867571f, 22.3792f, 0.707107f);
6991path.close();
6992path.moveTo(-0.369678f, 19.3097f);
6993path.quadTo(-0.249693f, 18.7748f, -0.107265f, 18.2453f);
6994path.conicTo(0.152529f, 17.2797f, 1.11819f, 17.5395f, 0.707107f);
6995path.conicTo(2.08386f, 17.7993f, 1.82406f, 18.7649f, 0.707107f);
6996path.quadTo(1.69259f, 19.2536f, 1.58184f, 19.7474f);
6997path.conicTo(1.36298f, 20.7232f, 0.387221f, 20.5043f, 0.707107f);
6998path.conicTo(-0.588536f, 20.2855f, -0.369678f, 19.3097f, 0.707107f);
6999path.close();
7000path.moveTo(0.539863f, 16.1851f);
7001path.quadTo(0.719962f, 15.6854f, 0.920307f, 15.1934f);
7002path.conicTo(1.29748f, 14.2673f, 2.22362f, 14.6445f, 0.707107f);
7003path.conicTo(3.14976f, 15.0216f, 2.7726f, 15.9478f, 0.707107f);
7004path.quadTo(2.58765f, 16.4019f, 2.42141f, 16.8632f);
7005path.conicTo(2.08237f, 17.804f, 1.1416f, 17.4649f, 0.707107f);
7006path.conicTo(0.200823f, 17.1259f, 0.539863f, 16.1851f, 0.707107f);
7007path.close();
7008path.moveTo(1.78353f, 13.2955f);
7009path.quadTo(2.01364f, 12.8391f, 2.26151f, 12.392f);
7010path.conicTo(2.74643f, 11.5175f, 3.62099f, 12.0024f, 0.707107f);
7011path.conicTo(4.49555f, 12.4873f, 4.01063f, 13.3618f, 0.707107f);
7012path.quadTo(3.78183f, 13.7745f, 3.56941f, 14.1958f);
7013path.conicTo(3.11923f, 15.0888f, 2.22629f, 14.6386f, 0.707107f);
7014path.conicTo(1.33336f, 14.1884f, 1.78353f, 13.2955f, 0.707107f);
7015path.close();
7016path.moveTo(3.30083f, 10.6771f);
7017path.lineTo(3.44218f, 10.4652f);
7018path.quadTo(3.6466f, 10.1621f, 3.85641f, 9.86895f);
7019path.conicTo(4.43837f, 9.05574f, 5.25159f, 9.6377f, 0.707107f);
7020path.conicTo(6.0648f, 10.2197f, 5.48284f, 11.0329f, 0.707107f);
7021path.quadTo(5.28917f, 11.3035f, 5.10592f, 11.5752f);
7022path.lineTo(4.96457f, 11.787f);
7023path.conicTo(4.4096f, 12.6189f, 3.57773f, 12.0639f, 0.707107f);
7024path.conicTo(2.74586f, 11.509f, 3.30083f, 10.6771f, 0.707107f);
7025path.close();
7026path.moveTo(5.0909f, 8.27793f);
7027path.quadTo(5.42174f, 7.88403f, 5.76791f, 7.50353f);
7028path.conicTo(6.44085f, 6.76383f, 7.18054f, 7.43678f, 0.707107f);
7029path.conicTo(7.92024f, 8.10972f, 7.24729f, 8.84942f, 0.707107f);
7030path.quadTo(6.92775f, 9.20065f, 6.62237f, 9.56424f);
7031path.conicTo(5.97921f, 10.33f, 5.21348f, 9.68682f, 0.707107f);
7032path.conicTo(4.44774f, 9.04367f, 5.0909f, 8.27793f, 0.707107f);
7033path.close();
7034path.moveTo(7.24064f, 6.0104f);
7035path.quadTo(7.63069f, 5.64561f, 8.03537f, 5.29717f);
7036path.conicTo(8.79318f, 4.64469f, 9.44566f, 5.40249f, 0.707107f);
7037path.conicTo(10.0981f, 6.16029f, 9.34034f, 6.81278f, 0.707107f);
7038path.quadTo(8.96678f, 7.13442f, 8.60675f, 7.47113f);
7039path.conicTo(7.87638f, 8.15419f, 7.19332f, 7.42382f, 0.707107f);
7040path.conicTo(6.51027f, 6.69345f, 7.24064f, 6.0104f, 0.707107f);
7041path.close();
7042path.moveTo(9.73726f, 3.95128f);
7043path.quadTo(10.1706f, 3.63704f, 10.6165f, 3.34092f);
7044path.conicTo(11.4496f, 2.78771f, 12.0028f, 3.62075f, 0.707107f);
7045path.conicTo(12.556f, 4.4538f, 11.7229f, 5.007f, 0.707107f);
7046path.quadTo(11.3113f, 5.28035f, 10.9113f, 5.57041f);
7047path.conicTo(10.1018f, 6.15744f, 9.51472f, 5.34787f, 0.707107f);
7048path.conicTo(8.92769f, 4.53831f, 9.73726f, 3.95128f, 0.707107f);
7049path.close();
7050path.moveTo(12.374f, 2.27153f);
7051path.quadTo(12.8282f, 2.01921f, 13.2921f, 1.78522f);
7052path.conicTo(14.185f, 1.33492f, 14.6353f, 2.22779f, 0.707107f);
7053path.conicTo(15.0856f, 3.12067f, 14.1927f, 3.57097f, 0.707107f);
7054path.quadTo(13.7645f, 3.78696f, 13.3452f, 4.01988f);
7055path.conicTo(12.471f, 4.5055f, 11.9854f, 3.63132f, 0.707107f);
7056path.conicTo(11.4998f, 2.75715f, 12.374f, 2.27153f, 0.707107f);
7057path.close();
7058path.moveTo(15.1984f, 0.918296f);
7059path.quadTo(15.6866f, 0.719602f, 16.1824f, 0.540851f);
7060path.conicTo(17.1231f, 0.20171f, 17.4623f, 1.14245f, 0.707107f);
7061path.conicTo(17.8014f, 2.08318f, 16.8607f, 2.42232f, 0.707107f);
7062path.quadTo(16.403f, 2.58733f, 15.9524f, 2.77074f);
7063path.conicTo(15.0261f, 3.14772f, 14.6492f, 2.2215f, 0.707107f);
7064path.conicTo(14.2722f, 1.29528f, 15.1984f, 0.918296f, 0.707107f);
7065path.close();
7066path.moveTo(18.201f, -0.0952874f);
7067path.quadTo(18.7132f, -0.234075f, 19.2308f, -0.351842f);
7068path.conicTo(20.2058f, -0.573734f, 20.4277f, 0.401338f, 0.707107f);
7069path.conicTo(20.6496f, 1.37641f, 19.6745f, 1.5983f, 0.707107f);
7070path.quadTo(19.1968f, 1.70701f, 18.724f, 1.83512f);
7071path.conicTo(17.7588f, 2.09662f, 17.4973f, 1.13142f, 0.707107f);
7072path.conicTo(17.2358f, 0.166216f, 18.201f, -0.0952874f, 0.707107f);
7073path.close();
7074path.moveTo(21.2986f, -0.73518f);
7075path.quadTo(21.8155f, -0.809526f, 22.3349f, -0.863052f);
7076path.conicTo(23.3297f, -0.965552f, 23.4322f, 0.029181f, 0.707107f);
7077path.conicTo(23.5347f, 1.02391f, 22.5399f, 1.12641f, 0.707107f);
7078path.quadTo(22.0604f, 1.17582f, 21.5833f, 1.24445f);
7079path.conicTo(20.5935f, 1.38681f, 20.4511f, 0.397f, 0.707107f);
7080path.conicTo(20.3088f, -0.592814f, 21.2986f, -0.73518f, 0.707107f);
7081path.close();
7082path.moveTo(24.4124f, -0.993361f);
7083path.quadTo(24.9312f, -1.00509f, 25.4501f, -0.996107f);
7084path.conicTo(26.4499f, -0.978799f, 26.4326f, 0.0210512f, 0.707107f);
7085path.conicTo(26.4153f, 1.0209f, 25.4155f, 1.00359f, 0.707107f);
7086path.quadTo(24.9365f, 0.995302f, 24.4576f, 1.00613f);
7087path.conicTo(23.4578f, 1.02873f, 23.4352f, 0.0289853f, 0.707107f);
7088path.conicTo(23.4126f, -0.970759f, 24.4124f, -0.993361f, 0.707107f);
7089path.close();
7090path.moveTo(27.5481f, -0.87484f);
7091path.quadTo(28.0668f, -0.823762f, 28.583f, -0.75194f);
7092path.conicTo(29.5734f, -0.614138f, 29.4356f, 0.376322f, 0.707107f);
7093path.conicTo(29.2978f, 1.36678f, 28.3074f, 1.22898f, 0.707107f);
7094path.quadTo(27.8309f, 1.16268f, 27.3521f, 1.11553f);
7095path.conicTo(26.3569f, 1.01753f, 26.4549f, 0.0223428f, 0.707107f);
7096path.conicTo(26.5529f, -0.972843f, 27.5481f, -0.87484f, 0.707107f);
7097path.close();
7098path.moveTo(30.6151f, -0.386432f);
7099path.quadTo(31.1507f, -0.267954f, 31.6809f, -0.126991f);
7100path.conicTo(32.6473f, 0.129965f, 32.3904f, 1.09639f, 0.707107f);
7101path.conicTo(32.1334f, 2.06281f, 31.167f, 1.80585f, 0.707107f);
7102path.quadTo(30.6776f, 1.67574f, 30.1832f, 1.56637f);
7103path.conicTo(29.2068f, 1.35041f, 29.4227f, 0.374005f, 0.707107f);
7104path.conicTo(29.6387f, -0.602396f, 30.6151f, -0.386432f, 0.707107f);
7105path.close();
7106path.moveTo(33.7445f, 0.514616f);
7107path.quadTo(34.2452f, 0.693421f, 34.7381f, 0.892536f);
7108path.conicTo(35.6653f, 1.26708f, 35.2908f, 2.19429f, 0.707107f);
7109path.conicTo(34.9162f, 3.1215f, 33.989f, 2.74696f, 0.707107f);
7110path.quadTo(33.534f, 2.56316f, 33.0718f, 2.3981f);
7111path.conicTo(32.1301f, 2.06177f, 32.4664f, 1.12003f, 0.707107f);
7112path.conicTo(32.8027f, 0.178285f, 33.7445f, 0.514616f, 0.707107f);
7113path.close();
7114path.moveTo(36.6402f, 1.7512f);
7115path.quadTo(37.0977f, 1.98026f, 37.5458f, 2.22715f);
7116path.conicTo(38.4217f, 2.70968f, 37.9392f, 3.58556f, 0.707107f);
7117path.conicTo(37.4566f, 4.46144f, 36.5808f, 3.97891f, 0.707107f);
7118path.quadTo(36.1671f, 3.75102f, 35.7448f, 3.53956f);
7119path.conicTo(34.8506f, 3.09185f, 35.2983f, 2.19767f, 0.707107f);
7120path.conicTo(35.746f, 1.30349f, 36.6402f, 1.7512f, 0.707107f);
7121path.close();
7122path.moveTo(39.2611f, 3.26012f);
7123path.quadTo(39.4005f, 3.35159f, 39.539f, 3.44501f);
7124path.quadTo(39.8091f, 3.62717f, 40.0746f, 3.81611f);
7125path.conicTo(40.8893f, 4.3959f, 40.3096f, 5.21067f, 0.707107f);
7126path.conicTo(39.7298f, 6.02543f, 38.915f, 5.44564f, 0.707107f);
7127path.quadTo(38.67f, 5.2713f, 38.4206f, 5.10309f);
7128path.quadTo(38.293f, 5.017f, 38.164f, 4.9324f);
7129path.conicTo(37.3279f, 4.38388f, 37.8764f, 3.54775f, 0.707107f);
7130path.conicTo(38.4249f, 2.71161f, 39.2611f, 3.26012f, 0.707107f);
7131path.close();
7132path.moveTo(41.6673f, 5.04503f);
7133path.quadTo(42.0618f, 5.37449f, 42.4428f, 5.71927f);
7134path.conicTo(43.1844f, 6.39015f, 42.5135f, 7.13171f, 0.707107f);
7135path.conicTo(41.8426f, 7.87327f, 41.1011f, 7.20239f, 0.707107f);
7136path.quadTo(40.7493f, 6.88414f, 40.3852f, 6.58004f);
7137path.conicTo(39.6177f, 5.93899f, 40.2588f, 5.17149f, 0.707107f);
7138path.conicTo(40.8998f, 4.40399f, 41.6673f, 5.04503f, 0.707107f);
7139path.close();
7140path.moveTo(43.9388f, 7.1865f);
7141path.quadTo(44.3044f, 7.57519f, 44.6538f, 7.97856f);
7142path.conicTo(45.3084f, 8.73448f, 44.5525f, 9.38914f, 0.707107f);
7143path.conicTo(43.7966f, 10.0438f, 43.1419f, 9.28789f, 0.707107f);
7144path.quadTo(42.8195f, 8.91555f, 42.482f, 8.55677f);
7145path.conicTo(41.7969f, 7.82836f, 42.5253f, 7.14322f, 0.707107f);
7146path.conicTo(43.2537f, 6.45808f, 43.9388f, 7.1865f, 0.707107f);
7147path.close();
7148path.moveTo(46.0036f, 9.6753f);
7149path.quadTo(46.3207f, 10.1098f, 46.6195f, 10.5571f);
7150path.conicTo(47.175f, 11.3886f, 46.3435f, 11.9441f, 0.707107f);
7151path.conicTo(45.5119f, 12.4996f, 44.9564f, 11.6681f, 0.707107f);
7152path.quadTo(44.6806f, 11.2552f, 44.388f, 10.8541f);
7153path.conicTo(43.7986f, 10.0463f, 44.6064f, 9.45688f, 0.707107f);
7154path.conicTo(45.4142f, 8.86747f, 46.0036f, 9.6753f, 0.707107f);
7155path.close();
7156path.moveTo(47.6932f, 12.3107f);
7157path.quadTo(47.9467f, 12.764f, 48.1819f, 13.2271f);
7158path.conicTo(48.6347f, 14.1187f, 47.7431f, 14.5715f, 0.707107f);
7159path.conicTo(46.8514f, 15.0243f, 46.3986f, 14.1327f, 0.707107f);
7160path.quadTo(46.1816f, 13.7053f, 45.9476f, 13.2868f);
7161path.conicTo(45.4595f, 12.414f, 46.3323f, 11.9259f, 0.707107f);
7162path.conicTo(47.2051f, 11.4379f, 47.6932f, 12.3107f, 0.707107f);
7163path.close();
7164path.moveTo(49.0539f, 15.1303f);
7165path.quadTo(49.2539f, 15.6178f, 49.434f, 16.113f);
7166path.conicTo(49.7758f, 17.0527f, 48.836f, 17.3946f, 0.707107f);
7167path.conicTo(47.8963f, 17.7364f, 47.5545f, 16.7966f, 0.707107f);
7168path.quadTo(47.3882f, 16.3395f, 47.2036f, 15.8895f);
7169path.conicTo(46.824f, 14.9643f, 47.7491f, 14.5847f, 0.707107f);
7170path.conicTo(48.6743f, 14.2051f, 49.0539f, 15.1303f, 0.707107f);
7171path.close();
7172path.moveTo(50.0758f, 18.1294f);
7173path.quadTo(50.216f, 18.6412f, 50.3352f, 19.1584f);
7174path.conicTo(50.5599f, 20.1328f, 49.5855f, 20.3575f, 0.707107f);
7175path.conicTo(48.6111f, 20.5821f, 48.3864f, 19.6077f, 0.707107f);
7176path.quadTo(48.2763f, 19.1304f, 48.1469f, 18.6579f);
7177path.conicTo(47.8826f, 17.6935f, 48.8471f, 17.4292f, 0.707107f);
7178path.conicTo(49.8115f, 17.165f, 50.0758f, 18.1294f, 0.707107f);
7179path.close();
7180path.moveTo(50.7247f, 21.2262f);
7181path.quadTo(50.8005f, 21.743f, 50.8555f, 22.2623f);
7182path.conicTo(50.9607f, 23.2568f, 49.9663f, 23.3621f, 0.707107f);
7183path.conicTo(48.9719f, 23.4673f, 48.8666f, 22.4729f, 0.707107f);
7184path.quadTo(48.8158f, 21.9935f, 48.7458f, 21.5165f);
7185path.conicTo(48.6007f, 20.5271f, 49.5901f, 20.382f, 0.707107f);
7186path.conicTo(50.5795f, 20.2368f, 50.7247f, 21.2262f, 0.707107f);
7187path.close();
7188path.moveTo(50.9916f, 24.3398f);
7189path.quadTo(51.0048f, 24.858f, 50.9973f, 25.3762f);
7190path.conicTo(50.9828f, 26.3761f, 49.9829f, 26.3616f, 0.707107f);
7191path.conicTo(48.983f, 26.3472f, 48.9975f, 25.3473f, 0.707107f);
7192path.quadTo(49.0044f, 24.8687f, 48.9923f, 24.3906f);
7193path.conicTo(48.9669f, 23.3909f, 49.9665f, 23.3655f, 0.707107f);
7194path.conicTo(50.9662f, 23.3401f, 50.9916f, 24.3398f, 0.707107f);
7195path.close();
7196path.moveTo(50.8819f, 27.4753f);
7197path.quadTo(50.8323f, 27.9943f, 50.7618f, 28.511f);
7198path.conicTo(50.6268f, 29.5018f, 49.636f, 29.3668f, 0.707107f);
7199path.conicTo(48.6451f, 29.2317f, 48.7802f, 28.2409f, 0.707107f);
7200path.quadTo(48.8452f, 27.7641f, 48.891f, 27.2849f);
7201path.conicTo(48.9862f, 26.2894f, 49.9816f, 26.3846f, 0.707107f);
7202path.conicTo(50.9771f, 26.4798f, 50.8819f, 27.4753f, 0.707107f);
7203path.close();
7204path.moveTo(50.4023f, 30.5429f);
7205path.quadTo(50.2856f, 31.0775f, 50.1465f, 31.607f);
7206path.conicTo(49.8924f, 32.5742f, 48.9252f, 32.3201f, 0.707107f);
7207path.conicTo(47.9581f, 32.066f, 48.2122f, 31.0988f, 0.707107f);
7208path.quadTo(48.3405f, 30.6102f, 48.4483f, 30.1165f);
7209path.conicTo(48.6614f, 29.1395f, 49.6385f, 29.3527f, 0.707107f);
7210path.conicTo(50.6155f, 29.5659f, 50.4023f, 30.5429f, 0.707107f);
7211path.close();
7212path.moveTo(49.5104f, 33.674f);
7213path.quadTo(49.3329f, 34.1756f, 49.1351f, 34.6695f);
7214path.conicTo(48.7632f, 35.5977f, 47.8349f, 35.2258f, 0.707107f);
7215path.conicTo(46.9066f, 34.854f, 47.2785f, 33.9257f, 0.707107f);
7216path.quadTo(47.4612f, 33.4697f, 47.625f, 33.0067f);
7217path.conicTo(47.9587f, 32.064f, 48.9014f, 32.3977f, 0.707107f);
7218path.conicTo(49.8441f, 32.7313f, 49.5104f, 33.674f, 0.707107f);
7219path.close();
7220path.moveTo(48.281f, 36.5756f);
7221path.quadTo(48.053f, 37.0342f, 47.8071f, 37.4835f);
7222path.conicTo(47.3269f, 38.3607f, 46.4497f, 37.8805f, 0.707107f);
7223path.conicTo(45.5725f, 37.4004f, 46.0527f, 36.5232f, 0.707107f);
7224path.quadTo(46.2797f, 36.1085f, 46.4901f, 35.6852f);
7225path.conicTo(46.9353f, 34.7898f, 47.8307f, 35.235f, 0.707107f);
7226path.conicTo(48.7262f, 35.6802f, 48.281f, 36.5756f, 0.707107f);
7227path.close();
7228path.moveTo(46.7777f, 39.2033f);
7229path.quadTo(46.6677f, 39.3719f, 46.555f, 39.539f);
7230path.quadTo(46.3865f, 39.7888f, 46.2121f, 40.0349f);
7231path.conicTo(45.6338f, 40.8507f, 44.818f, 40.2724f, 0.707107f);
7232path.conicTo(44.0021f, 39.6942f, 44.5804f, 38.8783f, 0.707107f);
7233path.quadTo(44.7413f, 38.6513f, 44.8969f, 38.4206f);
7234path.quadTo(45.0008f, 38.2665f, 45.1025f, 38.1107f);
7235path.conicTo(45.6488f, 37.2731f, 46.4864f, 37.8194f, 0.707107f);
7236path.conicTo(47.324f, 38.3657f, 46.7777f, 39.2033f, 0.707107f);
7237path.close();
7238path.moveTo(44.9527f, 41.6701f);
7239path.quadTo(44.6177f, 42.0709f, 44.267f, 42.458f);
7240path.conicTo(43.5955f, 43.1991f, 42.8545f, 42.5276f, 0.707107f);
7241path.conicTo(42.1135f, 41.8561f, 42.7849f, 41.1151f, 0.707107f);
7242path.quadTo(43.1087f, 40.7578f, 43.4178f, 40.3878f);
7243path.conicTo(44.059f, 39.6203f, 44.8264f, 40.2615f, 0.707107f);
7244path.conicTo(45.5938f, 40.9027f, 44.9527f, 41.6701f, 0.707107f);
7245path.close();
7246path.moveTo(42.7884f, 43.9624f);
7247path.quadTo(42.4083f, 44.319f, 42.014f, 44.6602f);
7248path.conicTo(41.2578f, 45.3146f, 40.6034f, 44.5585f, 0.707107f);
7249path.conicTo(39.949f, 43.8023f, 40.7052f, 43.1479f, 0.707107f);
7250path.quadTo(41.0691f, 42.833f, 41.4201f, 42.5037f);
7251path.conicTo(42.1494f, 41.8196f, 42.8336f, 42.5489f, 0.707107f);
7252path.conicTo(43.5178f, 43.2782f, 42.7884f, 43.9624f, 0.707107f);
7253path.close();
7254path.moveTo(40.3892f, 45.9564f);
7255path.quadTo(39.9683f, 46.2655f, 39.5354f, 46.5574f);
7256path.conicTo(38.7062f, 47.1165f, 38.1472f, 46.2873f, 0.707107f);
7257path.conicTo(37.5881f, 45.4582f, 38.4173f, 44.8992f, 0.707107f);
7258path.quadTo(38.8169f, 44.6297f, 39.2054f, 44.3444f);
7259path.conicTo(40.0114f, 43.7525f, 40.6033f, 44.5585f, 0.707107f);
7260path.conicTo(41.1952f, 45.3645f, 40.3892f, 45.9564f, 0.707107f);
7261path.close();
7262path.moveTo(37.7543f, 47.6568f);
7263path.quadTo(37.2977f, 47.9138f, 36.8312f, 48.1522f);
7264path.conicTo(35.9407f, 48.6072f, 35.4857f, 47.7167f, 0.707107f);
7265path.conicTo(35.0306f, 46.8263f, 35.9211f, 46.3712f, 0.707107f);
7266path.quadTo(36.3518f, 46.1511f, 36.7732f, 45.9139f);
7267path.conicTo(37.6446f, 45.4234f, 38.1351f, 46.2948f, 0.707107f);
7268path.conicTo(38.6257f, 47.1662f, 37.7543f, 47.6568f, 0.707107f);
7269path.close();
7270path.moveTo(34.9311f, 49.0286f);
7271path.quadTo(34.4488f, 49.2279f, 33.9589f, 49.4077f);
7272path.conicTo(33.0202f, 49.7523f, 32.6756f, 48.8136f, 0.707107f);
7273path.conicTo(32.331f, 47.8748f, 33.2698f, 47.5302f, 0.707107f);
7274path.quadTo(33.722f, 47.3642f, 34.1672f, 47.1802f);
7275path.conicTo(35.0914f, 46.7983f, 35.4733f, 47.7224f, 0.707107f);
7276path.conicTo(35.8553f, 48.6466f, 34.9311f, 49.0286f, 0.707107f);
7277path.close();
7278path.moveTo(31.9824f, 50.0449f);
7279path.quadTo(31.4774f, 50.1857f, 30.9668f, 50.3061f);
7280path.conicTo(29.9935f, 50.5355f, 29.764f, 49.5622f, 0.707107f);
7281path.conicTo(29.5346f, 48.5889f, 30.5079f, 48.3594f, 0.707107f);
7282path.quadTo(30.9789f, 48.2484f, 31.4453f, 48.1184f);
7283path.conicTo(32.4086f, 47.8498f, 32.6771f, 48.8131f, 0.707107f);
7284path.conicTo(32.9457f, 49.7763f, 31.9824f, 50.0449f, 0.707107f);
7285path.close();
7286path.moveTo(28.899f, 50.706f);
7287path.quadTo(28.3834f, 50.7842f, 27.8652f, 50.8416f);
7288path.conicTo(26.8713f, 50.9518f, 26.7611f, 49.9579f, 0.707107f);
7289path.conicTo(26.6509f, 48.964f, 27.6448f, 48.8538f, 0.707107f);
7290path.quadTo(28.1231f, 48.8008f, 28.599f, 48.7286f);
7291path.conicTo(29.5877f, 48.5786f, 29.7377f, 49.5673f, 0.707107f);
7292path.conicTo(29.8877f, 50.556f, 28.899f, 50.706f, 0.707107f);
7293path.close();
7294path.moveTo(25.8106f, 50.9874f);
7295path.quadTo(25.6321f, 50.9929f, 25.4537f, 50.996f);
7296path.conicTo(24.4539f, 51.0135f, 24.4365f, 50.0136f, 0.707115f);
7297path.lineTo(24.4251f, 49.3638f);
7298path.conicTo(24.4077f, 48.364f, 25.4075f, 48.3465f, 0.707107f);
7299path.conicTo(26.4073f, 48.3291f, 26.4248f, 49.3289f, 0.707107f);
7300path.lineTo(26.4361f, 49.9787f);
7301path.lineTo(25.4363f, 49.9962f);
7302path.lineTo(25.4189f, 48.9963f);
7303path.quadTo(25.5836f, 48.9935f, 25.7482f, 48.9883f);
7304path.conicTo(26.7477f, 48.9571f, 26.7789f, 49.9567f, 0.707107f);
7305path.conicTo(26.8101f, 50.9562f, 25.8106f, 50.9874f, 0.707107f);
7306path.close();
7307path.moveTo(24.3902f, 47.3641f);
7308path.lineTo(24.3728f, 46.3643f);
7309path.conicTo(24.3553f, 45.3645f, 25.3551f, 45.347f, 0.707107f);
7310path.conicTo(26.355f, 45.3295f, 26.3724f, 46.3294f, 0.707107f);
7311path.lineTo(26.3899f, 47.3292f);
7312path.conicTo(26.4074f, 48.3291f, 25.4075f, 48.3465f, 0.707107f);
7313path.conicTo(24.4077f, 48.364f, 24.3902f, 47.3641f, 0.707107f);
7314path.close();
7315path.moveTo(24.3378f, 44.3646f);
7316path.lineTo(24.3204f, 43.3648f);
7317path.conicTo(24.3029f, 42.3649f, 25.3028f, 42.3475f, 0.707107f);
7318path.conicTo(26.3026f, 42.33f, 26.3201f, 43.3298f, 0.707107f);
7319path.lineTo(26.3375f, 44.3297f);
7320path.conicTo(26.355f, 45.3295f, 25.3551f, 45.347f, 0.707107f);
7321path.conicTo(24.3553f, 45.3645f, 24.3378f, 44.3646f, 0.707107f);
7322path.close();
7323path.moveTo(24.2855f, 41.3651f);
7324path.lineTo(24.268f, 40.3652f);
7325path.conicTo(24.2506f, 39.3654f, 25.2504f, 39.3479f, 0.707107f);
7326path.conicTo(26.2503f, 39.3305f, 26.2677f, 40.3303f, 0.707107f);
7327path.lineTo(26.2852f, 41.3302f);
7328path.conicTo(26.3026f, 42.33f, 25.3028f, 42.3475f, 0.707107f);
7329path.conicTo(24.3029f, 42.3649f, 24.2855f, 41.3651f, 0.707107f);
7330path.close();
7331path.moveTo(24.2331f, 38.3655f);
7332path.lineTo(24.2157f, 37.3657f);
7333path.conicTo(24.1982f, 36.3658f, 25.1981f, 36.3484f, 0.707107f);
7334path.conicTo(26.1979f, 36.3309f, 26.2154f, 37.3308f, 0.707107f);
7335path.lineTo(26.2328f, 38.3306f);
7336path.conicTo(26.2503f, 39.3305f, 25.2504f, 39.3479f, 0.707107f);
7337path.conicTo(24.2506f, 39.3654f, 24.2331f, 38.3655f, 0.707107f);
7338path.close();
7339path.moveTo(24.1808f, 35.366f);
7340path.lineTo(24.1633f, 34.3661f);
7341path.conicTo(24.1459f, 33.3663f, 25.1457f, 33.3488f, 0.707107f);
7342path.conicTo(26.1456f, 33.3314f, 26.163f, 34.3312f, 0.707107f);
7343path.lineTo(26.1805f, 35.3311f);
7344path.conicTo(26.1979f, 36.3309f, 25.1981f, 36.3484f, 0.707107f);
7345path.conicTo(24.1982f, 36.3658f, 24.1808f, 35.366f, 0.707107f);
7346path.close();
7347path.moveTo(24.1284f, 32.3664f);
7348path.lineTo(24.111f, 31.3666f);
7349path.conicTo(24.0935f, 30.3667f, 25.0934f, 30.3493f, 0.707107f);
7350path.conicTo(26.0932f, 30.3318f, 26.1107f, 31.3317f, 0.707107f);
7351path.lineTo(26.1281f, 32.3315f);
7352path.conicTo(26.1456f, 33.3314f, 25.1457f, 33.3488f, 0.707107f);
7353path.conicTo(24.1459f, 33.3663f, 24.1284f, 32.3664f, 0.707107f);
7354path.close();
7355path.moveTo(24.0761f, 29.3669f);
7356path.lineTo(24.0586f, 28.367f);
7357path.conicTo(24.0412f, 27.3672f, 25.041f, 27.3497f, 0.707107f);
7358path.conicTo(26.0409f, 27.3323f, 26.0583f, 28.3321f, 0.707107f);
7359path.lineTo(26.0758f, 29.332f);
7360path.conicTo(26.0932f, 30.3318f, 25.0934f, 30.3493f, 0.707107f);
7361path.conicTo(24.0935f, 30.3667f, 24.0761f, 29.3669f, 0.707107f);
7362path.close();
7363path.moveTo(24.0237f, 26.3673f);
7364path.lineTo(24.0063f, 25.3675f);
7365path.conicTo(23.9888f, 24.3676f, 24.9887f, 24.3502f, 0.707107f);
7366path.conicTo(25.9885f, 24.3327f, 26.006f, 25.3326f, 0.707107f);
7367path.lineTo(26.0234f, 26.3324f);
7368path.conicTo(26.0409f, 27.3323f, 25.041f, 27.3497f, 0.707107f);
7369path.conicTo(24.0412f, 27.3672f, 24.0237f, 26.3673f, 0.707107f);
7370path.close();
7371path1 = path;
7372path.reset();
7373path.setFillType(SkPath::kWinding_FillType);
7374path.moveTo(25.0098f, 23.1973f);
7375path.lineTo(25.5689f, 22.3682f);
7376path.conicTo(26.1281f, 21.5392f, 26.9572f, 22.0984f, 0.707107f);
7377path.conicTo(27.7862f, 22.6576f, 27.227f, 23.4866f, 0.707107f);
7378path.lineTo(26.6678f, 24.3156f);
7379path.conicTo(26.1086f, 25.1447f, 25.2796f, 24.5855f, 0.707107f);
7380path.conicTo(24.4506f, 24.0263f, 25.0098f, 23.1973f, 0.707107f);
7381path.close();
7382path.moveTo(26.6873f, 20.7101f);
7383path.lineTo(27.2465f, 19.8811f);
7384path.conicTo(27.8057f, 19.0521f, 28.6348f, 19.6113f, 0.707107f);
7385path.conicTo(29.4638f, 20.1704f, 28.9046f, 20.9995f, 0.707107f);
7386path.lineTo(28.3454f, 21.8285f);
7387path.conicTo(27.7862f, 22.6576f, 26.9572f, 22.0984f, 0.707107f);
7388path.conicTo(26.1281f, 21.5392f, 26.6873f, 20.7101f, 0.707107f);
7389path.close();
7390path.moveTo(28.3649f, 18.223f);
7391path.lineTo(28.9241f, 17.394f);
7392path.conicTo(29.4833f, 16.565f, 30.3123f, 17.1241f, 0.707107f);
7393path.conicTo(31.1414f, 17.6833f, 30.5822f, 18.5124f, 0.707107f);
7394path.lineTo(30.023f, 19.3414f);
7395path.conicTo(29.4638f, 20.1704f, 28.6348f, 19.6113f, 0.707107f);
7396path.conicTo(27.8057f, 19.0521f, 28.3649f, 18.223f, 0.707107f);
7397path.close();
7398path.moveTo(30.0425f, 15.7359f);
7399path.lineTo(30.6017f, 14.9069f);
7400path.conicTo(31.1609f, 14.0778f, 31.9899f, 14.637f, 0.707107f);
7401path.conicTo(32.8189f, 15.1962f, 32.2598f, 16.0253f, 0.707107f);
7402path.lineTo(31.7006f, 16.8543f);
7403path.conicTo(31.1414f, 17.6833f, 30.3123f, 17.1241f, 0.707107f);
7404path.conicTo(29.4833f, 16.565f, 30.0425f, 15.7359f, 0.707107f);
7405path.close();
7406path.moveTo(31.7201f, 13.2488f);
7407path.lineTo(32.2793f, 12.4198f);
7408path.conicTo(32.8385f, 11.5907f, 33.6675f, 12.1499f, 0.707107f);
7409path.conicTo(34.4965f, 12.7091f, 33.9373f, 13.5381f, 0.707107f);
7410path.lineTo(33.3781f, 14.3672f);
7411path.conicTo(32.8189f, 15.1962f, 31.9899f, 14.637f, 0.707107f);
7412path.conicTo(31.1609f, 14.0778f, 31.7201f, 13.2488f, 0.707107f);
7413path.close();
7414path.moveTo(33.3976f, 10.7617f);
7415path.lineTo(33.9568f, 9.93265f);
7416path.conicTo(34.516f, 9.10361f, 35.3451f, 9.6628f, 0.707107f);
7417path.conicTo(36.1741f, 10.222f, 35.6149f, 11.051f, 0.707107f);
7418path.lineTo(35.0557f, 11.8801f);
7419path.conicTo(34.4965f, 12.7091f, 33.6675f, 12.1499f, 0.707107f);
7420path.conicTo(32.8385f, 11.5907f, 33.3976f, 10.7617f, 0.707107f);
7421path.close();
7422path.moveTo(35.0752f, 8.27457f);
7423path.lineTo(35.6344f, 7.44554f);
7424path.conicTo(36.1936f, 6.6165f, 37.0226f, 7.17569f, 0.707107f);
7425path.conicTo(37.8517f, 7.73488f, 37.2925f, 8.56392f, 0.707107f);
7426path.lineTo(36.7333f, 9.39296f);
7427path.conicTo(36.1741f, 10.222f, 35.3451f, 9.6628f, 0.707107f);
7428path.conicTo(34.516f, 9.10361f, 35.0752f, 8.27457f, 0.707107f);
7429path.close();
7430path.moveTo(36.7528f, 5.78746f);
7431path.lineTo(37.312f, 4.95842f);
7432path.conicTo(37.8712f, 4.12939f, 38.7002f, 4.68858f, 0.707107f);
7433path.conicTo(39.5293f, 5.24777f, 38.9701f, 6.07681f, 0.707107f);
7434path.lineTo(38.4109f, 6.90585f);
7435path.conicTo(37.8517f, 7.73488f, 37.0226f, 7.17569f, 0.707107f);
7436path.conicTo(36.1936f, 6.6165f, 36.7528f, 5.78746f, 0.707107f);
7437path.close();
7438path.moveTo(39.9447f, 3.72429f);
7439path.quadTo(40.3524f, 4.01069f, 40.7489f, 4.31248f);
7440path.conicTo(41.5445f, 4.9182f, 40.9388f, 5.71387f, 0.707107f);
7441path.conicTo(40.3331f, 6.50955f, 39.5374f, 5.90383f, 0.707107f);
7442path.quadTo(39.1714f, 5.62521f, 38.7951f, 5.36088f);
7443path.conicTo(37.9768f, 4.78608f, 38.5516f, 3.96779f, 0.707107f);
7444path.conicTo(39.1264f, 3.14949f, 39.9447f, 3.72429f, 0.707107f);
7445path.close();
7446path.moveTo(42.3194f, 5.60826f);
7447path.quadTo(42.707f, 5.95446f, 43.0804f, 6.31583f);
7448path.conicTo(43.7991f, 7.01122f, 43.1037f, 7.72985f, 0.707107f);
7449path.conicTo(42.4083f, 8.44848f, 41.6896f, 7.75308f, 0.707107f);
7450path.quadTo(41.3448f, 7.41944f, 40.9871f, 7.09992f);
7451path.conicTo(40.2413f, 6.43379f, 40.9074f, 5.68796f, 0.707107f);
7452path.conicTo(41.5735f, 4.94212f, 42.3194f, 5.60826f, 0.707107f);
7453path.close();
7454path.moveTo(44.5406f, 7.84871f);
7455path.quadTo(44.8959f, 8.25352f, 45.2341f, 8.67266f);
7456path.conicTo(45.862f, 9.4509f, 45.0838f, 10.0789f, 0.707107f);
7457path.conicTo(44.3056f, 10.7068f, 43.6776f, 9.9286f, 0.707107f);
7458path.quadTo(43.3654f, 9.54174f, 43.0374f, 9.16805f);
7459path.conicTo(42.3778f, 8.41649f, 43.1293f, 7.75682f, 0.707107f);
7460path.conicTo(43.8809f, 7.09715f, 44.5406f, 7.84871f, 0.707107f);
7461path.close();
7462path.moveTo(46.528f, 10.4211f);
7463path.quadTo(46.815f, 10.8449f, 47.0851f, 11.2796f);
7464path.conicTo(47.6128f, 12.129f, 46.7633f, 12.6567f, 0.707107f);
7465path.conicTo(45.9139f, 13.1844f, 45.3862f, 12.335f, 0.707107f);
7466path.quadTo(45.1369f, 11.9337f, 44.872f, 11.5426f);
7467path.conicTo(44.3113f, 10.7146f, 45.1393f, 10.1538f, 0.707107f);
7468path.conicTo(45.9673f, 9.5931f, 46.528f, 10.4211f, 0.707107f);
7469path.close();
7470path.moveTo(48.1056f, 13.0782f);
7471path.quadTo(48.3449f, 13.542f, 48.5654f, 14.015f);
7472path.conicTo(48.9879f, 14.9213f, 48.0816f, 15.3438f, 0.707107f);
7473path.conicTo(47.1752f, 15.7663f, 46.7527f, 14.86f, 0.707107f);
7474path.quadTo(46.5492f, 14.4234f, 46.3283f, 13.9953f);
7475path.conicTo(45.8698f, 13.1066f, 46.7584f, 12.6481f, 0.707107f);
7476path.conicTo(47.6471f, 12.1895f, 48.1056f, 13.0782f, 0.707107f);
7477path.close();
7478path.moveTo(49.3755f, 15.9538f);
7479path.quadTo(49.5594f, 16.4493f, 49.7229f, 16.9516f);
7480path.conicTo(50.0325f, 17.9025f, 49.0816f, 18.2121f, 0.707107f);
7481path.conicTo(48.1307f, 18.5216f, 47.8212f, 17.5707f, 0.707107f);
7482path.quadTo(47.6702f, 17.1069f, 47.5005f, 16.6497f);
7483path.conicTo(47.1526f, 15.7122f, 48.0901f, 15.3642f, 0.707107f);
7484path.conicTo(49.0276f, 15.0163f, 49.3755f, 15.9538f, 0.707107f);
7485path.close();
7486path.moveTo(50.2964f, 18.9923f);
7487path.quadTo(50.4191f, 19.5089f, 50.5206f, 20.0302f);
7488path.conicTo(50.7117f, 21.0117f, 49.7302f, 21.2029f, 0.707107f);
7489path.conicTo(48.7486f, 21.394f, 48.5575f, 20.4125f, 0.707107f);
7490path.quadTo(48.4638f, 19.9313f, 48.3505f, 19.4544f);
7491path.conicTo(48.1194f, 18.4815f, 49.0924f, 18.2504f, 0.707107f);
7492path.conicTo(50.0653f, 18.0193f, 50.2964f, 18.9923f, 0.707107f);
7493path.close();
7494path.moveTo(50.8373f, 22.0956f);
7495path.quadTo(50.8955f, 22.6138f, 50.933f, 23.1341f);
7496path.conicTo(51.0047f, 24.1315f, 50.0073f, 24.2033f, 0.707107f);
7497path.conicTo(49.0099f, 24.275f, 48.9381f, 23.2776f, 0.707107f);
7498path.quadTo(48.9036f, 22.7975f, 48.8498f, 22.3191f);
7499path.conicTo(48.7381f, 21.3253f, 49.7318f, 21.2136f, 0.707107f);
7500path.conicTo(50.7255f, 21.1019f, 50.8373f, 22.0956f, 0.707107f);
7501path.close();
7502path.moveTo(50.9992f, 25.2099f);
7503path.quadTo(50.9949f, 25.7358f, 50.9694f, 26.2608f);
7504path.conicTo(50.9209f, 27.2596f, 49.9221f, 27.2111f, 0.707107f);
7505path.conicTo(48.9233f, 27.1626f, 48.9718f, 26.1638f, 0.707107f);
7506path.quadTo(48.9953f, 25.679f, 48.9992f, 25.1938f);
7507path.conicTo(49.0073f, 24.1938f, 50.0073f, 24.2019f, 0.707107f);
7508path.conicTo(51.0072f, 24.21f, 50.9992f, 25.2099f, 0.707107f);
7509path.close();
7510path.moveTo(50.7839f, 28.3454f);
7511path.quadTo(50.7172f, 28.8596f, 50.63f, 29.3708f);
7512path.conicTo(50.4619f, 30.3565f, 49.4761f, 30.1884f, 0.707107f);
7513path.conicTo(48.4903f, 30.0203f, 48.6584f, 29.0346f, 0.707107f);
7514path.quadTo(48.7389f, 28.5627f, 48.8005f, 28.088f);
7515path.conicTo(48.9292f, 27.0963f, 49.9209f, 27.225f, 0.707107f);
7516path.conicTo(50.9126f, 27.3537f, 50.7839f, 28.3454f, 0.707107f);
7517path.close();
7518path.moveTo(50.1906f, 31.437f);
7519path.quadTo(50.0558f, 31.9646f, 49.899f, 32.4861f);
7520path.conicTo(49.611f, 33.4438f, 48.6534f, 33.1558f, 0.707107f);
7521path.conicTo(47.6957f, 32.8679f, 47.9837f, 31.9103f, 0.707107f);
7522path.quadTo(48.1284f, 31.4289f, 48.2528f, 30.9418f);
7523path.conicTo(48.5004f, 29.9729f, 49.4693f, 30.2205f, 0.707107f);
7524path.conicTo(50.4382f, 30.4681f, 50.1906f, 31.437f, 0.707107f);
7525path.close();
7526path.moveTo(49.1978f, 34.5114f);
7527path.quadTo(49.0051f, 35.0016f, 48.7927f, 35.4837f);
7528path.conicTo(48.3895f, 36.3988f, 47.4744f, 35.9956f, 0.707107f);
7529path.conicTo(46.5593f, 35.5923f, 46.9625f, 34.6772f, 0.707107f);
7530path.quadTo(47.1586f, 34.2323f, 47.3364f, 33.7797f);
7531path.conicTo(47.7023f, 32.849f, 48.6329f, 33.2149f, 0.707107f);
7532path.conicTo(49.5636f, 33.5807f, 49.1978f, 34.5114f, 0.707107f);
7533path.close();
7534path.moveTo(47.8852f, 37.3397f);
7535path.quadTo(47.6449f, 37.7853f, 47.3876f, 38.2211f);
7536path.conicTo(46.879f, 39.0821f, 46.018f, 38.5736f, 0.707107f);
7537path.conicTo(45.1569f, 38.0651f, 45.6655f, 37.204f, 0.707107f);
7538path.quadTo(45.903f, 36.8018f, 46.1248f, 36.3906f);
7539path.conicTo(46.5993f, 35.5103f, 47.4796f, 35.9849f, 0.707107f);
7540path.conicTo(48.3598f, 36.4595f, 47.8852f, 37.3397f, 0.707107f);
7541path.close();
7542path.moveTo(46.3154f, 39.8881f);
7543path.quadTo(46.0303f, 40.2962f, 45.7299f, 40.693f);
7544path.conicTo(45.1264f, 41.4903f, 44.3291f, 40.8867f, 0.707107f);
7545path.conicTo(43.5318f, 40.2831f, 44.1353f, 39.4858f, 0.707107f);
7546path.quadTo(44.4126f, 39.1195f, 44.6757f, 38.7428f);
7547path.conicTo(45.2483f, 37.923f, 46.0682f, 38.4956f, 0.707107f);
7548path.conicTo(46.888f, 39.0682f, 46.3154f, 39.8881f, 0.707107f);
7549path.close();
7550path.moveTo(44.4398f, 42.2654f);
7551path.quadTo(44.095f, 42.6536f, 43.7349f, 43.0278f);
7552path.conicTo(43.0415f, 43.7484f, 42.321f, 43.055f, 0.707107f);
7553path.conicTo(41.6004f, 42.3616f, 42.2938f, 41.641f, 0.707107f);
7554path.quadTo(42.6261f, 41.2957f, 42.9444f, 40.9374f);
7555path.conicTo(43.6084f, 40.1897f, 44.3561f, 40.8537f, 0.707107f);
7556path.conicTo(45.1038f, 41.5177f, 44.4398f, 42.2654f, 0.707107f);
7557path.close();
7558path.moveTo(42.2075f, 44.4911f);
7559path.quadTo(41.804f, 44.8473f, 41.3862f, 45.1865f);
7560path.conicTo(40.6098f, 45.8167f, 39.9795f, 45.0403f, 0.707107f);
7561path.conicTo(39.3493f, 44.2639f, 40.1257f, 43.6336f, 0.707107f);
7562path.quadTo(40.5114f, 43.3205f, 40.8838f, 42.9918f);
7563path.conicTo(41.6335f, 42.3299f, 42.2953f, 43.0796f, 0.707107f);
7564path.conicTo(42.9572f, 43.8292f, 42.2075f, 44.4911f, 0.707107f);
7565path.close();
7566path.moveTo(39.6379f, 46.488f);
7567path.quadTo(39.2151f, 46.776f, 38.7814f, 47.0471f);
7568path.conicTo(37.9334f, 47.5771f, 37.4034f, 46.7292f, 0.707107f);
7569path.conicTo(36.8733f, 45.8812f, 37.7213f, 45.3511f, 0.707107f);
7570path.quadTo(38.1217f, 45.1009f, 38.5119f, 44.835f);
7571path.conicTo(39.3383f, 44.2721f, 39.9013f, 45.0985f, 0.707107f);
7572path.conicTo(40.4643f, 45.925f, 39.6379f, 46.488f, 0.707107f);
7573path.close();
7574path.moveTo(36.9864f, 48.0722f);
7575path.quadTo(36.5234f, 48.3127f, 36.0513f, 48.5344f);
7576path.conicTo(35.1461f, 48.9595f, 34.7211f, 48.0543f, 0.707107f);
7577path.conicTo(34.296f, 47.1491f, 35.2012f, 46.7241f, 0.707107f);
7578path.quadTo(35.6371f, 46.5194f, 36.0644f, 46.2974f);
7579path.conicTo(36.9518f, 45.8364f, 37.4128f, 46.7238f, 0.707107f);
7580path.conicTo(37.8738f, 47.6112f, 36.9864f, 48.0722f, 0.707107f);
7581path.close();
7582path.moveTo(34.1153f, 49.3498f);
7583path.quadTo(33.6206f, 49.535f, 33.1187f, 49.6999f);
7584path.conicTo(32.1687f, 50.0122f, 31.8565f, 49.0622f, 0.707107f);
7585path.conicTo(31.5442f, 48.1122f, 32.4942f, 47.7999f, 0.707107f);
7586path.quadTo(32.9575f, 47.6477f, 33.4141f, 47.4767f);
7587path.conicTo(34.3507f, 47.1261f, 34.7012f, 48.0627f, 0.707107f);
7588path.conicTo(35.0518f, 48.9992f, 34.1153f, 49.3498f, 0.707107f);
7589path.close();
7590path.moveTo(31.08f, 50.2791f);
7591path.quadTo(30.5637f, 50.4033f, 30.0427f, 50.5063f);
7592path.conicTo(29.0617f, 50.7002f, 28.8678f, 49.7192f, 0.707107f);
7593path.conicTo(28.6738f, 48.7382f, 29.6548f, 48.5443f, 0.707107f);
7594path.quadTo(30.1357f, 48.4492f, 30.6122f, 48.3346f);
7595path.conicTo(31.5845f, 48.1007f, 31.8184f, 49.073f, 0.707107f);
7596path.conicTo(32.0522f, 50.0453f, 31.08f, 50.2791f, 0.707107f);
7597path.close();
7598path.moveTo(27.9769f, 50.829f);
7599path.quadTo(27.4588f, 50.8887f, 26.9386f, 50.9276f);
7600path.conicTo(25.9414f, 51.0022f, 25.8668f, 50.005f, 0.707107f);
7601path.conicTo(25.7923f, 49.0078f, 26.7895f, 48.9332f, 0.707107f);
7602path.quadTo(27.2696f, 48.8973f, 27.7479f, 48.8422f);
7603path.conicTo(28.7413f, 48.7277f, 28.8558f, 49.7211f, 0.707107f);
7604path.conicTo(28.9703f, 50.7145f, 27.9769f, 50.829f, 0.707107f);
7605path.close();
7606path.moveTo(24.8625f, 50.9996f);
7607path.quadTo(24.3373f, 50.9969f, 23.8128f, 50.9729f);
7608path.conicTo(22.8138f, 50.9272f, 22.8595f, 49.9283f, 0.707107f);
7609path.conicTo(22.9051f, 48.9293f, 23.9041f, 48.975f, 0.707107f);
7610path.quadTo(24.3884f, 48.9971f, 24.8731f, 48.9997f);
7611path.conicTo(25.8731f, 49.005f, 25.8678f, 50.005f, 0.707107f);
7612path.conicTo(25.8624f, 51.0049f, 24.8625f, 50.9996f, 0.707107f);
7613path.close();
7614path.moveTo(21.7268f, 50.7931f);
7615path.quadTo(21.2121f, 50.7278f, 20.7005f, 50.642f);
7616path.conicTo(19.7143f, 50.4767f, 19.8796f, 49.4905f, 0.707107f);
7617path.conicTo(20.045f, 48.5042f, 21.0312f, 48.6696f, 0.707107f);
7618path.quadTo(21.5036f, 48.7488f, 21.9786f, 48.8091f);
7619path.conicTo(22.9707f, 48.9349f, 22.8448f, 49.927f, 0.707107f);
7620path.conicTo(22.7189f, 50.919f, 21.7268f, 50.7931f, 0.707107f);
7621path.close();
7622path.moveTo(18.6372f, 50.2094f);
7623path.quadTo(18.1089f, 50.0761f, 17.5865f, 49.9207f);
7624path.conicTo(16.628f, 49.6356f, 16.9132f, 48.6771f, 0.707107f);
7625path.conicTo(17.1983f, 47.7186f, 18.1568f, 48.0037f, 0.707107f);
7626path.quadTo(18.639f, 48.1472f, 19.1267f, 48.2702f);
7627path.conicTo(20.0963f, 48.515f, 19.8516f, 49.4846f, 0.707107f);
7628path.conicTo(19.6068f, 50.4542f, 18.6372f, 50.2094f, 0.707107f);
7629path.close();
7630path.moveTo(15.5577f, 49.2248f);
7631path.quadTo(15.0665f, 49.0334f, 14.5834f, 48.8222f);
7632path.conicTo(13.6672f, 48.4215f, 14.0678f, 47.5053f, 0.707107f);
7633path.conicTo(14.4684f, 46.589f, 15.3847f, 46.9897f, 0.707107f);
7634path.quadTo(15.8306f, 47.1846f, 16.284f, 47.3614f);
7635path.conicTo(17.2158f, 47.7246f, 16.8526f, 48.6563f, 0.707107f);
7636path.conicTo(16.4894f, 49.588f, 15.5577f, 49.2248f, 0.707107f);
7637path.close();
7638path.moveTo(12.7231f, 47.9189f);
7639path.quadTo(12.2765f, 47.6797f, 11.8395f, 47.4233f);
7640path.conicTo(10.9771f, 46.9171f, 11.4833f, 46.0547f, 0.707107f);
7641path.conicTo(11.9894f, 45.1922f, 12.8519f, 45.6984f, 0.707107f);
7642path.quadTo(13.2552f, 45.9351f, 13.6675f, 46.156f);
7643path.conicTo(14.549f, 46.6282f, 14.0768f, 47.5096f, 0.707107f);
7644path.conicTo(13.6046f, 48.3911f, 12.7231f, 47.9189f, 0.707107f);
7645path.close();
7646path.moveTo(10.1686f, 46.3548f);
7647path.quadTo(9.76024f, 46.0712f, 9.363f, 45.7722f);
7648path.conicTo(8.56406f, 45.1708f, 9.16549f, 44.3718f, 0.707107f);
7649path.conicTo(9.76691f, 43.5729f, 10.5658f, 44.1743f, 0.707107f);
7650path.quadTo(10.9325f, 44.4504f, 11.3095f, 44.7122f);
7651path.conicTo(12.1308f, 45.2826f, 11.5604f, 46.1039f, 0.707107f);
7652path.conicTo(10.9899f, 46.9253f, 10.1686f, 46.3548f, 0.707107f);
7653path.close();
7654path.moveTo(7.78853f, 44.4876f);
7655path.quadTo(7.39972f, 44.1442f, 7.02492f, 43.7855f);
7656path.conicTo(6.3024f, 43.0942f, 6.99374f, 42.3717f, 0.707107f);
7657path.conicTo(7.68509f, 41.6492f, 8.40761f, 42.3405f, 0.707107f);
7658path.quadTo(8.7536f, 42.6715f, 9.11249f, 42.9885f);
7659path.conicTo(9.86201f, 43.6505f, 9.20003f, 44.4f, 0.707107f);
7660path.conicTo(8.53805f, 45.1496f, 7.78853f, 44.4876f, 0.707107f);
7661path.close();
7662path.moveTo(5.55855f, 42.2635f);
7663path.quadTo(5.20148f, 41.8614f, 4.86131f, 41.4449f);
7664path.conicTo(4.22883f, 40.6703f, 5.0034f, 40.0378f, 0.707107f);
7665path.conicTo(5.77797f, 39.4053f, 6.41046f, 40.1799f, 0.707107f);
7666path.quadTo(6.72443f, 40.5644f, 7.05403f, 40.9356f);
7667path.conicTo(7.71802f, 41.6833f, 6.97028f, 42.3473f, 0.707107f);
7668path.conicTo(6.22254f, 43.0113f, 5.55855f, 42.2635f, 0.707107f);
7669path.close();
7670path.moveTo(3.55261f, 39.6973f);
7671path.quadTo(3.26341f, 39.2752f, 2.99107f, 38.8422f);
7672path.conicTo(2.45867f, 37.9957f, 3.30517f, 37.4633f, 0.707107f);
7673path.conicTo(4.15167f, 36.9309f, 4.68406f, 37.7774f, 0.707107f);
7674path.quadTo(4.93548f, 38.1772f, 5.20241f, 38.5667f);
7675path.conicTo(5.76769f, 39.3916f, 4.94279f, 39.9569f, 0.707107f);
7676path.conicTo(4.11789f, 40.5222f, 3.55261f, 39.6973f, 0.707107f);
7677path.close();
7678path.moveTo(1.96145f, 37.0509f);
7679path.quadTo(1.71975f, 36.5889f, 1.49677f, 36.1175f);
7680path.conicTo(1.06917f, 35.2135f, 1.97315f, 34.7859f, 0.707107f);
7681path.conicTo(2.87712f, 34.3583f, 3.30471f, 35.2623f, 0.707107f);
7682path.quadTo(3.51053f, 35.6974f, 3.73364f, 36.1239f);
7683path.conicTo(4.19714f, 37.01f, 3.31105f, 37.4735f, 0.707107f);
7684path.conicTo(2.42495f, 37.937f, 1.96145f, 37.0509f, 0.707107f);
7685path.close();
7686path.moveTo(0.676191f, 34.1844f);
7687path.quadTo(0.489621f, 33.6902f, 0.323275f, 33.189f);
7688path.conicTo(0.00831527f, 32.2399f, 0.95742f, 31.9249f, 0.707107f);
7689path.conicTo(1.90653f, 31.6099f, 2.22149f, 32.559f, 0.707107f);
7690path.quadTo(2.37504f, 33.0218f, 2.54726f, 33.4779f);
7691path.conicTo(2.9005f, 34.4134f, 1.96497f, 34.7666f, 0.707107f);
7692path.conicTo(1.02943f, 35.1199f, 0.676191f, 34.1844f, 0.707107f);
7693path.close();
7694path.moveTo(-0.261658f, 31.1521f);
7695path.quadTo(-0.387304f, 30.6362f, -0.491779f, 30.1156f);
7696path.conicTo(-0.68853f, 29.1351f, 0.291923f, 28.9384f, 0.707107f);
7697path.conicTo(1.27238f, 28.7416f, 1.46913f, 29.7221f, 0.707107f);
7698path.quadTo(1.56557f, 30.2026f, 1.68155f, 30.6789f);
7699path.conicTo(1.91817f, 31.6505f, 0.946565f, 31.8871f, 0.707107f);
7700path.conicTo(-0.0250367f, 32.1237f, -0.261658f, 31.1521f, 0.707107f);
7701path.close();
7702path.moveTo(-0.820549f, 28.0495f);
7703path.quadTo(-0.881733f, 27.5314f, -0.922089f, 27.0113f);
7704path.conicTo(-0.999449f, 26.0143f, -0.00244591f, 25.9369f, 0.707107f);
7705path.conicTo(0.994557f, 25.8596f, 1.07192f, 26.8566f, 0.707107f);
7706path.quadTo(1.10917f, 27.3367f, 1.16565f, 27.8149f);
7707path.conicTo(1.28293f, 28.808f, 0.289834f, 28.9253f, 0.707107f);
7708path.conicTo(-0.703265f, 29.0426f, -0.820549f, 28.0495f, 0.707107f);
7709path.close();
7710path.moveTo(-0.999918f, 24.9349f);
7711path.quadTo(-0.998605f, 24.4104f, -0.976138f, 23.8863f);
7712path.conicTo(-0.933305f, 22.8873f, 0.0657772f, 22.9301f, 0.707107f);
7713path.conicTo(1.06486f, 22.9729f, 1.02203f, 23.972f, 0.707107f);
7714path.quadTo(1.00129f, 24.4557f, 1.00008f, 24.9399f);
7715path.conicTo(0.997572f, 25.9399f, -0.0024244f, 25.9374f, 0.707107f);
7716path.conicTo(-1.00242f, 25.9349f, -0.999918f, 24.9349f, 0.707107f);
7717path.close();
7718path.moveTo(-0.802212f, 21.7991f);
7719path.quadTo(-0.738311f, 21.284f, -0.653903f, 20.7719f);
7720path.conicTo(-0.491283f, 19.7852f, 0.495406f, 19.9478f, 0.707107f);
7721path.conicTo(1.48209f, 20.1104f, 1.31948f, 21.0971f, 0.707107f);
7722path.quadTo(1.24156f, 21.5698f, 1.18257f, 22.0453f);
7723path.conicTo(1.05946f, 23.0377f, 0.0670681f, 22.9146f, 0.707107f);
7724path.conicTo(-0.925325f, 22.7915f, -0.802212f, 21.7991f, 0.707107f);
7725path.close();
7726path.moveTo(-0.228066f, 18.7115f);
7727path.quadTo(-0.096172f, 18.1824f, 0.0577899f, 17.6593f);
7728path.conicTo(0.340124f, 16.7f, 1.29944f, 16.9823f, 0.707107f);
7729path.conicTo(2.25876f, 17.2646f, 1.97642f, 18.2239f, 0.707107f);
7730path.quadTo(1.8343f, 18.7068f, 1.71255f, 19.1953f);
7731path.conicTo(1.47069f, 20.1656f, 0.50038f, 19.9237f, 0.707107f);
7732path.conicTo(-0.46993f, 19.6819f, -0.228066f, 18.7115f, 0.707107f);
7733path.close();
7734path.moveTo(0.74831f, 15.6269f);
7735path.quadTo(0.938539f, 15.1347f, 1.14857f, 14.6506f);
7736path.conicTo(1.54662f, 13.7333f, 2.46398f, 14.1313f, 0.707107f);
7737path.conicTo(3.38135f, 14.5294f, 2.9833f, 15.4467f, 0.707107f);
7738path.quadTo(2.78942f, 15.8936f, 2.61382f, 16.3479f);
7739path.conicTo(2.25331f, 17.2806f, 1.32056f, 16.9201f, 0.707107f);
7740path.conicTo(0.387801f, 16.5596f, 0.74831f, 15.6269f, 0.707107f);
7741path.close();
7742path.moveTo(2.04744f, 12.7861f);
7743path.quadTo(2.28569f, 12.3384f, 2.5412f, 11.9003f);
7744path.conicTo(3.04504f, 11.0365f, 3.90884f, 11.5403f, 0.707107f);
7745path.conicTo(4.77264f, 12.0442f, 4.26881f, 12.908f, 0.707107f);
7746path.quadTo(4.03293f, 13.3123f, 3.81302f, 13.7256f);
7747path.conicTo(3.34325f, 14.6084f, 2.46046f, 14.1386f, 0.707107f);
7748path.conicTo(1.57767f, 13.6689f, 2.04744f, 12.7861f, 0.707107f);
7749path.close();
7750path.moveTo(3.60589f, 10.2253f);
7751path.quadTo(3.88812f, 9.81661f, 4.18576f, 9.419f);
7752path.conicTo(4.78503f, 8.61845f, 5.58558f, 9.21772f, 0.707107f);
7753path.conicTo(6.38613f, 9.81699f, 5.78686f, 10.6175f, 0.707107f);
7754path.quadTo(5.51211f, 10.9846f, 5.25159f, 11.3618f);
7755path.conicTo(4.68333f, 12.1847f, 3.86048f, 11.6164f, 0.707107f);
7756path.conicTo(3.03763f, 11.0481f, 3.60589f, 10.2253f, 0.707107f);
7757path.close();
7758path.moveTo(5.46482f, 7.84259f);
7759path.quadTo(5.80682f, 7.4532f, 6.16407f, 7.07773f);
7760path.conicTo(6.85339f, 6.35327f, 7.57785f, 7.04259f, 0.707107f);
7761path.conicTo(8.30231f, 7.73191f, 7.61299f, 8.45636f, 0.707107f);
7762path.quadTo(7.28322f, 8.80295f, 6.96752f, 9.16239f);
7763path.conicTo(6.30762f, 9.91375f, 5.55627f, 9.25385f, 0.707107f);
7764path.conicTo(4.80492f, 8.59395f, 5.46482f, 7.84259f, 0.707107f);
7765path.close();
7766path.moveTo(7.68062f, 5.60827f);
7767path.quadTo(8.08142f, 5.25031f, 8.49666f, 4.90921f);
7768path.conicTo(9.26938f, 4.27447f, 9.90412f, 5.04719f, 0.707107f);
7769path.conicTo(10.5389f, 5.81992f, 9.76614f, 6.45466f, 0.707107f);
7770path.quadTo(9.38285f, 6.76951f, 9.01289f, 7.09994f);
7771path.conicTo(8.26705f, 7.76607f, 7.60092f, 7.02024f, 0.707107f);
7772path.conicTo(6.93479f, 6.2744f, 7.68062f, 5.60827f, 0.707107f);
7773path.close();
7774path.moveTo(10.2392f, 3.59627f);
7775path.quadTo(10.6626f, 3.30433f, 11.0971f, 3.02935f);
7776path.conicTo(11.9421f, 2.49463f, 12.4768f, 3.33965f, 0.707107f);
7777path.conicTo(13.0116f, 4.18467f, 12.1666f, 4.7194f, 0.707107f);
7778path.quadTo(11.7654f, 4.97322f, 11.3747f, 5.24271f);
7779path.conicTo(10.5515f, 5.81043f, 9.98373f, 4.98721f, 0.707107f);
7780path.conicTo(9.41601f, 4.16399f, 10.2392f, 3.59627f, 0.707107f);
7781path.close();
7782path.moveTo(12.8847f, 1.99524f);
7783path.quadTo(13.3459f, 1.75234f, 13.8165f, 1.52812f);
7784path.conicTo(14.7193f, 1.09799f, 15.1494f, 2.00075f, 0.707107f);
7785path.conicTo(15.5795f, 2.90352f, 14.6768f, 3.33365f, 0.707107f);
7786path.quadTo(14.2424f, 3.54063f, 13.8166f, 3.76484f);
7787path.conicTo(12.9318f, 4.23081f, 12.4658f, 3.34601f, 0.707107f);
7788path.conicTo(11.9999f, 2.46122f, 12.8847f, 1.99524f, 0.707107f);
7789path.close();
7790path.moveTo(15.7467f, 0.702339f);
7791path.quadTo(16.2402f, 0.514409f, 16.7409f, 0.346672f);
7792path.conicTo(17.6891f, 0.029011f, 18.0067f, 0.977215f, 0.707107f);
7793path.conicTo(18.3244f, 1.92542f, 17.3762f, 2.24308f, 0.707107f);
7794path.quadTo(16.914f, 2.39792f, 16.4585f, 2.57139f);
7795path.conicTo(15.524f, 2.92729f, 15.1681f, 1.99276f, 0.707107f);
7796path.conicTo(14.8122f, 1.05824f, 15.7467f, 0.702339f, 0.707107f);
7797path.close();
7798path.moveTo(18.7758f, -0.24399f);
7799path.quadTo(19.2913f, -0.371107f, 19.8116f, -0.477061f);
7800path.conicTo(20.7915f, -0.676608f, 20.9911f, 0.303281f, 0.707107f);
7801path.conicTo(21.1906f, 1.28317f, 20.2107f, 1.48272f, 0.707107f);
7802path.quadTo(19.7304f, 1.58052f, 19.2546f, 1.69785f);
7803path.conicTo(18.2836f, 1.93725f, 18.0443f, 0.966329f, 0.707107f);
7804path.conicTo(17.8049f, -0.00459272f, 18.7758f, -0.24399f, 0.707107f);
7805path.close();
7806path.moveTo(21.878f, -0.811882f);
7807path.quadTo(22.396f, -0.874528f, 22.916f, -0.916348f);
7808path.conicTo(23.9128f, -0.996504f, 23.993f, 0.000278629f, 0.707107f);
7809path.conicTo(24.0731f, 0.997061f, 23.0764f, 1.07722f, 0.707107f);
7810path.quadTo(22.5963f, 1.11582f, 22.1182f, 1.17365f);
7811path.conicTo(21.1254f, 1.29372f, 21.0053f, 0.300958f, 0.707107f);
7812path.conicTo(20.8853f, -0.691807f, 21.878f, -0.811882f, 0.707107f);
7813path.close();
7814path.moveTo(24.9926f, -0.999999f);
7815path.quadTo(25.5166f, -1.00015f, 26.0401f, -0.979188f);
7816path.conicTo(27.0393f, -0.939179f, 26.9992f, 0.0600199f, 0.707107f);
7817path.conicTo(26.9592f, 1.05922f, 25.96f, 1.01921f, 0.707107f);
7818path.quadTo(25.4768f, 0.999863f, 24.9932f, 1);
7819path.conicTo(23.9932f, 1.00029f, 23.9929f, 0.000287339f, 0.707107f);
7820path.conicTo(23.9926f, -0.999713f, 24.9926f, -0.999999f, 0.707107f);
7821path.close();
7822path.moveTo(28.1286f, -0.811081f);
7823path.quadTo(28.6441f, -0.748593f, 29.1567f, -0.665572f);
7824path.conicTo(30.1439f, -0.505698f, 29.984f, 0.48144f, 0.707107f);
7825path.conicTo(29.8241f, 1.46858f, 28.837f, 1.3087f, 0.707107f);
7826path.quadTo(28.3638f, 1.23207f, 27.8879f, 1.17439f);
7827path.conicTo(26.8952f, 1.05406f, 27.0155f, 0.0613233f, 0.707107f);
7828path.conicTo(27.1359f, -0.931411f, 28.1286f, -0.811081f, 0.707107f);
7829path.close();
7830path.moveTo(31.214f, -0.246499f);
7831path.quadTo(31.7439f, -0.116076f, 32.2679f, 0.0364622f);
7832path.conicTo(33.228f, 0.315996f, 32.9485f, 1.27613f, 0.707107f);
7833path.conicTo(32.6689f, 2.23627f, 31.7088f, 1.95673f, 0.707107f);
7834path.quadTo(31.2252f, 1.81593f, 30.736f, 1.69554f);
7835path.conicTo(29.765f, 1.45654f, 30.004f, 0.48552f, 0.707107f);
7836path.conicTo(30.243f, -0.485499f, 31.214f, -0.246499f, 0.707107f);
7837path.close();
7838path.moveTo(34.3038f, 0.721629f);
7839path.quadTo(34.797f, 0.910612f, 35.282f, 1.11946f);
7840path.conicTo(36.2005f, 1.51493f, 35.805f, 2.43341f, 0.707107f);
7841path.conicTo(35.4096f, 3.35189f, 34.4911f, 2.95642f, 0.707107f);
7842path.quadTo(34.0434f, 2.76365f, 33.5881f, 2.5892f);
7843path.conicTo(32.6543f, 2.23137f, 33.0122f, 1.29758f, 0.707107f);
7844path.conicTo(33.37f, 0.363796f, 34.3038f, 0.721629f, 0.707107f);
7845path.close();
7846path.moveTo(37.1508f, 2.01396f);
7847path.quadTo(37.5996f, 2.2512f, 38.0388f, 2.50578f);
7848path.conicTo(38.904f, 3.00727f, 38.4025f, 3.87244f, 0.707107f);
7849path.conicTo(37.901f, 4.7376f, 37.0358f, 4.23612f, 0.707107f);
7850path.quadTo(36.6304f, 4.00111f, 36.2161f, 3.78211f);
7851path.conicTo(35.332f, 3.31476f, 35.7994f, 2.43069f, 0.707107f);
7852path.conicTo(36.2667f, 1.54661f, 37.1508f, 2.01396f, 0.707107f);
7853path.close();
7854path.moveTo(39.718f, 3.56681f);
7855path.quadTo(40.1269f, 3.84765f, 40.5249f, 4.14392f);
7856path.conicTo(41.3271f, 4.74104f, 40.73f, 5.54319f, 0.707107f);
7857path.conicTo(40.1329f, 6.34535f, 39.3307f, 5.74823f, 0.707107f);
7858path.quadTo(38.9634f, 5.47478f, 38.5858f, 5.21552f);
7859path.conicTo(37.7615f, 4.64945f, 38.3275f, 3.82509f, 0.707107f);
7860path.conicTo(38.8936f, 3.00074f, 39.718f, 3.56681f, 0.707107f);
7861path.close();
7862path.moveTo(42.1033f, 5.41741f);
7863path.quadTo(42.4933f, 5.75802f, 42.8694f, 6.11388f);
7864path.conicTo(43.5958f, 6.80115f, 42.9085f, 7.52755f, 0.707107f);
7865path.conicTo(42.2212f, 8.25394f, 41.4948f, 7.56667f, 0.707107f);
7866path.quadTo(41.1476f, 7.23817f, 40.7876f, 6.92375f);
7867path.conicTo(40.0345f, 6.26593f, 40.6923f, 5.51275f, 0.707107f);
7868path.conicTo(41.3501f, 4.75958f, 42.1033f, 5.41741f, 0.707107f);
7869path.close();
7870path.moveTo(44.3419f, 7.62498f);
7871path.quadTo(44.7007f, 8.02444f, 45.0428f, 8.43835f);
7872path.conicTo(45.6797f, 9.20922f, 44.9089f, 9.84622f, 0.707107f);
7873path.conicTo(44.138f, 10.4832f, 43.501f, 9.71234f, 0.707107f);
7874path.quadTo(43.1852f, 9.3302f, 42.854f, 8.96151f);
7875path.conicTo(42.1858f, 8.21759f, 42.9297f, 7.54932f, 0.707107f);
7876path.conicTo(43.6736f, 6.88106f, 44.3419f, 7.62498f, 0.707107f);
7877path.close();
7878path.moveTo(46.3599f, 10.1759f);
7879path.quadTo(46.6546f, 10.6005f, 46.9322f, 11.0366f);
7880path.conicTo(47.4693f, 11.8801f, 46.6257f, 12.4172f, 0.707107f);
7881path.conicTo(45.7822f, 12.9542f, 45.2451f, 12.1107f, 0.707107f);
7882path.quadTo(44.9889f, 11.7082f, 44.7168f, 11.3162f);
7883path.conicTo(44.1467f, 10.4947f, 44.9682f, 9.92452f, 0.707107f);
7884path.conicTo(45.7897f, 9.35435f, 46.3599f, 10.1759f, 0.707107f);
7885path.close();
7886path.moveTo(47.9708f, 12.8204f);
7887path.quadTo(48.2149f, 13.2808f, 48.4403f, 13.7506f);
7888path.conicTo(48.873f, 14.6521f, 47.9715f, 15.0848f, 0.707107f);
7889path.conicTo(47.0699f, 15.5174f, 46.6372f, 14.6159f, 0.707107f);
7890path.quadTo(46.4291f, 14.1822f, 46.2038f, 13.7573f);
7891path.conicTo(45.7354f, 12.8738f, 46.6188f, 12.4054f, 0.707107f);
7892path.conicTo(47.5023f, 11.9369f, 47.9708f, 12.8204f, 0.707107f);
7893path.close();
7894path.moveTo(49.2713f, 15.6778f);
7895path.quadTo(49.4606f, 16.1706f, 49.6297f, 16.6708f);
7896path.conicTo(49.9501f, 17.6181f, 49.0028f, 17.9384f, 0.707107f);
7897path.conicTo(48.0555f, 18.2588f, 47.7351f, 17.3115f, 0.707107f);
7898path.quadTo(47.5791f, 16.8499f, 47.4043f, 16.3949f);
7899path.conicTo(47.0458f, 15.4614f, 47.9793f, 15.1029f, 0.707107f);
7900path.conicTo(48.9128f, 14.7443f, 49.2713f, 15.6778f, 0.707107f);
7901path.close();
7902path.moveTo(50.2261f, 18.7037f);
7903path.quadTo(50.3547f, 19.2188f, 50.4621f, 19.7388f);
7904path.conicTo(50.6645f, 20.7182f, 49.6852f, 20.9205f, 0.707107f);
7905path.conicTo(48.7059f, 21.1229f, 48.5035f, 20.1436f, 0.707107f);
7906path.quadTo(48.4043f, 19.6636f, 48.2856f, 19.1881f);
7907path.conicTo(48.0435f, 18.2178f, 49.0137f, 17.9757f, 0.707107f);
7908path.conicTo(49.984f, 17.7335f, 50.2261f, 18.7037f, 0.707107f);
7909path.close();
7910path.moveTo(50.803f, 21.8055f);
7911path.quadTo(50.8671f, 22.3234f, 50.9104f, 22.8434f);
7912path.conicTo(50.9934f, 23.8399f, 49.9968f, 23.9229f, 0.707107f);
7913path.conicTo(49.0002f, 24.0058f, 48.9173f, 23.0093f, 0.707107f);
7914path.quadTo(48.8773f, 22.5293f, 48.8182f, 22.0513f);
7915path.conicTo(48.6953f, 21.0588f, 49.6877f, 20.936f, 0.707107f);
7916path.conicTo(50.6801f, 20.8131f, 50.803f, 21.8055f, 0.707107f);
7917path.close();
7918path.moveTo(50.9999f, 24.9202f);
7919path.quadTo(51.0015f, 25.4434f, 50.982f, 25.9664f);
7920path.conicTo(50.9449f, 26.9657f, 49.9456f, 26.9286f, 0.707107f);
7921path.conicTo(48.9463f, 26.8914f, 48.9834f, 25.8921f, 0.707107f);
7922path.quadTo(49.0014f, 25.4094f, 48.9999f, 24.9263f);
7923path.conicTo(48.9968f, 23.9263f, 49.9968f, 23.9232f, 0.707107f);
7924path.conicTo(50.9968f, 23.9202f, 50.9999f, 24.9202f, 0.707107f);
7925path.close();
7926path.moveTo(50.8198f, 28.0562f);
7927path.quadTo(50.7587f, 28.5721f, 50.677f, 29.0852f);
7928path.conicTo(50.5199f, 30.0728f, 49.5323f, 29.9157f, 0.707107f);
7929path.conicTo(48.5448f, 29.7586f, 48.7019f, 28.771f, 0.707107f);
7930path.quadTo(48.7772f, 28.2974f, 48.8336f, 27.8211f);
7931path.conicTo(48.9512f, 26.8281f, 49.9442f, 26.9456f, 0.707107f);
7932path.conicTo(50.9373f, 27.0632f, 50.8198f, 28.0562f, 0.707107f);
7933path.close();
7934path.moveTo(50.2647f, 31.1395f);
7935path.quadTo(50.1358f, 31.6701f, 49.9847f, 32.1949f);
7936path.conicTo(49.7079f, 33.1558f, 48.747f, 32.8791f, 0.707107f);
7937path.conicTo(47.786f, 32.6024f, 48.0628f, 31.6414f, 0.707107f);
7938path.quadTo(48.2022f, 31.1571f, 48.3213f, 30.6672f);
7939path.conicTo(48.5574f, 29.6955f, 49.5291f, 29.9317f, 0.707107f);
7940path.conicTo(50.5009f, 30.1678f, 50.2647f, 31.1395f, 0.707107f);
7941path.close();
7942path.moveTo(49.3049f, 34.2343f);
7943path.quadTo(49.1171f, 34.7285f, 48.9095f, 35.2145f);
7944path.conicTo(48.5166f, 36.1341f, 47.597f, 35.7412f, 0.707107f);
7945path.conicTo(46.6774f, 35.3483f, 47.0703f, 34.4288f, 0.707107f);
7946path.quadTo(47.262f, 33.9801f, 47.4353f, 33.524f);
7947path.conicTo(47.7904f, 32.5892f, 48.7252f, 32.9444f, 0.707107f);
7948path.conicTo(49.66f, 33.2995f, 49.3049f, 34.2343f, 0.707107f);
7949path.close();
7950path.moveTo(48.0194f, 37.0875f);
7951path.quadTo(47.7831f, 37.5374f, 47.5295f, 37.9777f);
7952path.conicTo(47.0304f, 38.8443f, 46.1638f, 38.3451f, 0.707107f);
7953path.conicTo(45.2973f, 37.846f, 45.7965f, 36.9795f, 0.707107f);
7954path.quadTo(46.0306f, 36.5729f, 46.2487f, 36.1577f);
7955path.conicTo(46.7136f, 35.2723f, 47.5989f, 35.7372f, 0.707107f);
7956path.conicTo(48.4843f, 36.2021f, 48.0194f, 37.0875f, 0.707107f);
7957path.close();
7958path.moveTo(46.4721f, 39.6612f);
7959path.quadTo(46.1926f, 40.0705f, 45.8977f, 40.4688f);
7960path.conicTo(45.3028f, 41.2726f, 44.499f, 40.6776f, 0.707107f);
7961path.conicTo(43.6953f, 40.0827f, 44.2902f, 39.2789f, 0.707107f);
7962path.quadTo(44.5624f, 38.9112f, 44.8204f, 38.5334f);
7963path.conicTo(45.3843f, 37.7075f, 46.2101f, 38.2714f, 0.707107f);
7964path.conicTo(47.036f, 38.8353f, 46.4721f, 39.6612f, 0.707107f);
7965path.close();
7966path.moveTo(44.6298f, 42.0491f);
7967path.quadTo(44.2906f, 42.4396f, 43.9361f, 42.8164f);
7968path.conicTo(43.2509f, 43.5447f, 42.5226f, 42.8595f, 0.707107f);
7969path.conicTo(41.7942f, 42.1742f, 42.4795f, 41.4459f, 0.707107f);
7970path.quadTo(42.8067f, 41.0981f, 43.1198f, 40.7376f);
7971path.conicTo(43.7756f, 39.9826f, 44.5306f, 40.6383f, 0.707107f);
7972path.conicTo(45.2856f, 41.2941f, 44.6298f, 42.0491f, 0.707107f);
7973path.close();
7974path.moveTo(42.4305f, 44.2919f);
7975path.quadTo(42.0324f, 44.6516f, 41.6198f, 44.9946f);
7976path.conicTo(40.8507f, 45.6338f, 40.2115f, 44.8648f, 0.707107f);
7977path.conicTo(39.5723f, 44.0958f, 40.3413f, 43.4566f, 0.707107f);
7978path.quadTo(40.7222f, 43.1399f, 41.0897f, 42.8079f);
7979path.conicTo(41.8317f, 42.1375f, 42.5021f, 42.8795f, 0.707107f);
7980path.conicTo(43.1725f, 43.6215f, 42.4305f, 44.2919f, 0.707107f);
7981path.close();
7982path.moveTo(39.8873f, 46.3159f);
7983path.quadTo(39.4613f, 46.6134f, 39.0238f, 46.8936f);
7984path.conicTo(38.1818f, 47.433f, 37.6424f, 46.5909f, 0.707107f);
7985path.conicTo(37.103f, 45.7489f, 37.9451f, 45.2095f, 0.707107f);
7986path.quadTo(38.3489f, 44.9508f, 38.7421f, 44.6763f);
7987path.conicTo(39.5619f, 44.1037f, 40.1345f, 44.9235f, 0.707107f);
7988path.conicTo(40.7071f, 45.7434f, 39.8873f, 46.3159f, 0.707107f);
7989path.close();
7990path.moveTo(37.2437f, 47.9367f);
7991path.quadTo(36.7842f, 48.182f, 36.3153f, 48.4086f);
7992path.conicTo(35.415f, 48.8439f, 34.9797f, 47.9435f, 0.707107f);
7993path.conicTo(34.5445f, 47.0432f, 35.4449f, 46.608f, 0.707107f);
7994path.quadTo(35.8778f, 46.3987f, 36.3019f, 46.1723f);
7995path.conicTo(37.1841f, 45.7014f, 37.655f, 46.5836f, 0.707107f);
7996path.conicTo(38.1259f, 47.4658f, 37.2437f, 47.9367f, 0.707107f);
7997path.close();
7998path.moveTo(34.3909f, 49.2448f);
7999path.quadTo(33.8988f, 49.4354f, 33.3992f, 49.606f);
8000path.conicTo(32.4528f, 49.929f, 32.1298f, 48.9826f, 0.707107f);
8001path.conicTo(31.8068f, 48.0362f, 32.7532f, 47.7132f, 0.707107f);
8002path.quadTo(33.2142f, 47.5558f, 33.6685f, 47.3798f);
8003path.conicTo(34.601f, 47.0186f, 34.9622f, 47.9511f, 0.707107f);
8004path.conicTo(35.3234f, 48.8836f, 34.3909f, 49.2448f, 0.707107f);
8005path.close();
8006path.moveTo(31.3682f, 50.208f);
8007path.quadTo(30.8535f, 50.3381f, 30.3338f, 50.447f);
8008path.conicTo(29.3551f, 50.6521f, 29.15f, 49.6734f, 0.707107f);
8009path.conicTo(28.9448f, 48.6947f, 29.9236f, 48.4895f, 0.707107f);
8010path.quadTo(30.4033f, 48.389f, 30.8784f, 48.269f);
8011path.conicTo(31.8479f, 48.024f, 32.0929f, 48.9936f, 0.707107f);
8012path.conicTo(32.3378f, 49.9631f, 31.3682f, 50.208f, 0.707107f);
8013path.close();
8014path.moveTo(28.2669f, 50.7939f);
8015path.quadTo(27.7491f, 50.8595f, 27.2292f, 50.9043f);
8016path.conicTo(26.2329f, 50.99f, 26.1472f, 49.9937f, 0.707107f);
8017path.conicTo(26.0615f, 48.9973f, 27.0578f, 48.9116f, 0.707107f);
8018path.quadTo(27.5378f, 48.8703f, 28.0156f, 48.8098f);
8019path.conicTo(29.0077f, 48.6841f, 29.1334f, 49.6762f, 0.707107f);
8020path.conicTo(29.259f, 50.6683f, 28.2669f, 50.7939f, 0.707107f);
8021path.close();
8022path.moveTo(25.1523f, 50.9996f);
8023path.quadTo(24.6297f, 51.0026f, 24.1072f, 50.9847f);
8024path.conicTo(23.1078f, 50.9503f, 23.1422f, 49.9509f, 0.707107f);
8025path.conicTo(23.1765f, 48.9515f, 24.1759f, 48.9858f, 0.707107f);
8026path.quadTo(24.658f, 49.0024f, 25.1406f, 48.9996f);
8027path.conicTo(26.1406f, 48.9937f, 26.1464f, 49.9937f, 0.707107f);
8028path.conicTo(26.1523f, 50.9937f, 25.1523f, 50.9996f, 0.707107f);
8029path.close();
8030path.moveTo(22.0162f, 50.8282f);
8031path.quadTo(21.4999f, 50.7686f, 20.9863f, 50.6883f);
8032path.conicTo(19.9983f, 50.5339f, 20.1527f, 49.5459f, 0.707107f);
8033path.conicTo(20.307f, 48.5579f, 21.295f, 48.7123f, 0.707107f);
8034path.quadTo(21.7691f, 48.7864f, 22.2457f, 48.8414f);
8035path.conicTo(23.2391f, 48.9562f, 23.1243f, 49.9496f, 0.707107f);
8036path.conicTo(23.0096f, 50.943f, 22.0162f, 50.8282f, 0.707107f);
8037path.close();
8038path.moveTo(18.9351f, 50.2827f);
8039path.quadTo(18.4037f, 50.1553f, 17.8782f, 50.0056f);
8040path.conicTo(16.9164f, 49.7317f, 17.1904f, 48.7699f, 0.707107f);
8041path.conicTo(17.4643f, 47.8082f, 18.426f, 48.0821f, 0.707107f);
8042path.quadTo(18.9112f, 48.2203f, 19.4016f, 48.3379f);
8043path.conicTo(20.374f, 48.5712f, 20.1408f, 49.5436f, 0.707107f);
8044path.conicTo(19.9075f, 50.516f, 18.9351f, 50.2827f, 0.707107f);
8045path.close();
8046path.moveTo(15.8352f, 49.3312f);
8047path.quadTo(15.3403f, 49.1448f, 14.8531f, 48.9383f);
8048path.conicTo(13.9324f, 48.548f, 14.3227f, 47.6273f, 0.707107f);
8049path.conicTo(14.713f, 46.7066f, 15.6337f, 47.0969f, 0.707107f);
8050path.quadTo(16.0832f, 47.2874f, 16.5402f, 47.4596f);
8051path.conicTo(17.476f, 47.812f, 17.1235f, 48.7479f, 0.707107f);
8052path.conicTo(16.771f, 49.6837f, 15.8352f, 49.3312f, 0.707107f);
8053path.close();
8054path.moveTo(12.9759f, 48.0526f);
8055path.quadTo(12.5249f, 47.8173f, 12.0835f, 47.5647f);
8056path.conicTo(11.2156f, 47.0679f, 11.7124f, 46.2f, 0.707107f);
8057path.conicTo(12.2092f, 45.3321f, 13.0771f, 45.8289f, 0.707107f);
8058path.quadTo(13.4846f, 46.0622f, 13.9009f, 46.2793f);
8059path.conicTo(14.7875f, 46.7418f, 14.325f, 47.6284f, 0.707107f);
8060path.conicTo(13.8626f, 48.5151f, 12.9759f, 48.0526f, 0.707107f);
8061path.close();
8062path.moveTo(10.3957f, 46.5108f);
8063path.quadTo(9.9861f, 46.2327f, 9.58733f, 45.9392f);
8064path.conicTo(8.78198f, 45.3464f, 9.37478f, 44.541f, 0.707107f);
8065path.conicTo(9.96757f, 43.7357f, 10.7729f, 44.3285f, 0.707107f);
8066path.quadTo(11.141f, 44.5994f, 11.5191f, 44.8561f);
8067path.conicTo(12.3464f, 45.4178f, 11.7847f, 46.2451f, 0.707107f);
8068path.conicTo(11.223f, 47.0725f, 10.3957f, 46.5108f, 0.707107f);
8069path.close();
8070path.moveTo(8.00525f, 44.6769f);
8071path.quadTo(7.6141f, 44.339f, 7.23672f, 43.9859f);
8072path.conicTo(6.50649f, 43.3027f, 7.18969f, 42.5725f, 0.707107f);
8073path.conicTo(7.87289f, 41.8423f, 8.60312f, 42.5255f, 0.707107f);
8074path.quadTo(8.95149f, 42.8514f, 9.31254f, 43.1632f);
8075path.conicTo(10.0693f, 43.8169f, 9.4157f, 44.5737f, 0.707107f);
8076path.conicTo(8.76206f, 45.3305f, 8.00525f, 44.6769f, 0.707107f);
8077path.close();
8078path.moveTo(5.75818f, 42.4858f);
8079path.quadTo(5.39763f, 42.089f, 5.05371f, 41.6777f);
8080path.conicTo(4.41226f, 40.9105f, 5.17942f, 40.2691f, 0.707107f);
8081path.conicTo(5.94658f, 39.6276f, 6.58804f, 40.3948f, 0.707107f);
8082path.quadTo(6.90548f, 40.7744f, 7.23832f, 41.1407f);
8083path.conicTo(7.91085f, 41.8808f, 7.17078f, 42.5533f, 0.707107f);
8084path.conicTo(6.43071f, 43.2258f, 5.75818f, 42.4858f, 0.707107f);
8085path.close();
8086path.moveTo(3.72821f, 39.9503f);
8087path.quadTo(3.42794f, 39.523f, 3.1451f, 39.0842f);
8088path.conicTo(2.6034f, 38.2436f, 3.44397f, 37.7019f, 0.707107f);
8089path.conicTo(4.28454f, 37.1602f, 4.82624f, 38.0008f, 0.707107f);
8090path.quadTo(5.08734f, 38.4059f, 5.3645f, 38.8003f);
8091path.conicTo(5.93951f, 39.6184f, 5.12137f, 40.1934f, 0.707107f);
8092path.conicTo(4.30322f, 40.7684f, 3.72821f, 39.9503f, 0.707107f);
8093path.close();
8094path.moveTo(2.09762f, 37.3078f);
8095path.quadTo(1.85114f, 36.8491f, 1.62324f, 36.381f);
8096path.conicTo(1.18551f, 35.4819f, 2.08461f, 35.0442f, 0.707107f);
8097path.conicTo(2.98372f, 34.6064f, 3.42145f, 35.5055f, 0.707107f);
8098path.quadTo(3.63184f, 35.9377f, 3.85934f, 36.361f);
8099path.conicTo(4.33272f, 37.2419f, 3.45185f, 37.7153f, 0.707107f);
8100path.conicTo(2.57099f, 38.1886f, 2.09762f, 37.3078f, 0.707107f);
8101path.close();
8102path.moveTo(0.781912f, 34.4596f);
8103path.quadTo(0.589924f, 33.9681f, 0.418029f, 33.4692f);
8104path.conicTo(0.0922952f, 32.5237f, 1.03776f, 32.198f, 0.707107f);
8105path.conicTo(1.98322f, 31.8722f, 2.30895f, 32.8177f, 0.707107f);
8106path.quadTo(2.46761f, 33.2782f, 2.64484f, 33.7319f);
8107path.conicTo(3.00867f, 34.6634f, 2.07721f, 35.0272f, 0.707107f);
8108path.conicTo(1.14575f, 35.3911f, 0.781912f, 34.4596f, 0.707107f);
8109path.close();
8110path.moveTo(-0.189761f, 31.4402f);
8111path.quadTo(-0.321263f, 30.9258f, -0.431662f, 30.4065f);
8112path.conicTo(-0.639608f, 29.4284f, 0.338532f, 29.2205f, 0.707107f);
8113path.conicTo(1.31667f, 29.0125f, 1.52462f, 29.9906f, 0.707107f);
8114path.quadTo(1.62653f, 30.47f, 1.74791f, 30.9448f);
8115path.conicTo(1.99561f, 31.9136f, 1.02677f, 32.1613f, 0.707107f);
8116path.conicTo(0.0579369f, 32.409f, -0.189761f, 31.4402f, 0.707107f);
8117path.close();
8118path.moveTo(-0.784658f, 28.3394f);
8119path.quadTo(-0.851693f, 27.8218f, -0.897902f, 27.3019f);
8120path.conicTo(-0.986437f, 26.3058f, 0.00963629f, 26.2173f, 0.707107f);
8121path.conicTo(1.00571f, 26.1288f, 1.09424f, 27.1248f, 0.707107f);
8122path.quadTo(1.1369f, 27.6047f, 1.19878f, 28.0825f);
8123path.conicTo(1.32721f, 29.0742f, 0.335496f, 29.2027f, 0.707107f);
8124path.conicTo(-0.656222f, 29.3311f, -0.784658f, 28.3394f, 0.707107f);
8125path.close();
8126path.moveTo(-0.999031f, 25.2248f);
8127path.quadTo(-1.00354f, 24.7027f, -0.987098f, 24.1809f);
8128path.conicTo(-0.955596f, 23.1814f, 0.0439078f, 23.2129f, 0.707107f);
8129path.conicTo(1.04341f, 23.2444f, 1.01191f, 24.2439f, 0.707107f);
8130path.quadTo(0.996728f, 24.7256f, 1.00089f, 25.2075f);
8131path.conicTo(1.00954f, 26.2075f, 0.00957754f, 26.2161f, 0.707107f);
8132path.conicTo(-0.990385f, 26.2248f, -0.999031f, 25.2248f, 0.707107f);
8133path.close();
8134path.moveTo(-0.836492f, 22.0887f);
8135path.quadTo(-0.778263f, 21.5719f, -0.699419f, 21.0579f);
8136path.conicTo(-0.5478f, 20.0695f, 0.440639f, 20.2211f, 0.707107f);
8137path.conicTo(1.42908f, 20.3727f, 1.27746f, 21.3612f, 0.707107f);
8138path.quadTo(1.20468f, 21.8356f, 1.15093f, 22.3126f);
8139path.conicTo(1.03896f, 23.3063f, 0.0452449f, 23.1944f, 0.707107f);
8140path.conicTo(-0.948466f, 23.0824f, -0.836492f, 22.0887f, 0.707107f);
8141path.close();
8142path.moveTo(-0.300548f, 19.0098f);
8143path.quadTo(-0.174573f, 18.4777f, -0.0263361f, 17.9514f);
8144path.conicTo(0.244762f, 16.9889f, 1.20731f, 17.26f, 0.707107f);
8145path.conicTo(2.16987f, 17.5311f, 1.89877f, 18.4936f, 0.707107f);
8146path.quadTo(1.76193f, 18.9794f, 1.64565f, 19.4706f);
8147path.conicTo(1.41526f, 20.4437f, 0.442159f, 20.2133f, 0.707107f);
8148path.conicTo(-0.530939f, 19.9829f, -0.300548f, 19.0098f, 0.707107f);
8149path.close();
8150path.moveTo(0.642658f, 15.9049f);
8151path.quadTo(0.827861f, 15.409f, 1.0331f, 14.9209f);
8152path.conicTo(1.42076f, 13.9991f, 2.34256f, 14.3868f, 0.707107f);
8153path.conicTo(3.26437f, 14.7744f, 2.87671f, 15.6962f, 0.707107f);
8154path.quadTo(2.68726f, 16.1467f, 2.5163f, 16.6046f);
8155path.conicTo(2.16648f, 17.5414f, 1.22967f, 17.1916f, 0.707107f);
8156path.conicTo(0.292846f, 16.8418f, 0.642658f, 15.9049f, 0.707107f);
8157path.close();
8158path.moveTo(1.91434f, 13.0395f);
8159path.quadTo(2.14856f, 12.5875f, 2.40031f, 12.1449f);
8160path.conicTo(2.89473f, 11.2757f, 3.76395f, 11.7701f, 0.707107f);
8161path.conicTo(4.63317f, 12.2645f, 4.13875f, 13.1337f, 0.707107f);
8162path.quadTo(3.90637f, 13.5423f, 3.69016f, 13.9596f);
8163path.conicTo(3.23014f, 14.8475f, 2.34223f, 14.3875f, 0.707107f);
8164path.conicTo(1.45432f, 13.9275f, 1.91434f, 13.0395f, 0.707107f);
8165path.close();
8166path.moveTo(3.45073f, 10.4525f);
8167path.quadTo(3.72744f, 10.0426f, 4.01954f, 9.64356f);
8168path.conicTo(4.61017f, 8.83661f, 5.41711f, 9.42725f, 0.707107f);
8169path.conicTo(6.22405f, 10.0179f, 5.63342f, 10.8248f, 0.707107f);
8170path.quadTo(5.36379f, 11.1932f, 5.10836f, 11.5716f);
8171path.conicTo(4.54884f, 12.4004f, 3.72003f, 11.8409f, 0.707107f);
8172path.conicTo(2.89121f, 11.2813f, 3.45073f, 10.4525f, 0.707107f);
8173path.close();
8174path.moveTo(5.2763f, 8.05964f);
8175path.quadTo(5.61273f, 7.66793f, 5.96445f, 7.2899f);
8176path.conicTo(6.6456f, 6.55776f, 7.37774f, 7.23892f, 0.707107f);
8177path.conicTo(8.10988f, 7.92008f, 7.42872f, 8.65221f, 0.707107f);
8178path.quadTo(7.10407f, 9.00116f, 6.79351f, 9.36274f);
8179path.conicTo(6.14196f, 10.1213f, 5.38336f, 9.46979f, 0.707107f);
8180path.conicTo(4.62475f, 8.81824f, 5.2763f, 8.05964f, 0.707107f);
8181path.close();
8182path.moveTo(7.45913f, 5.80839f);
8183path.quadTo(7.85457f, 5.44696f, 8.26455f, 5.10214f);
8184path.conicTo(9.02985f, 4.45847f, 9.67352f, 5.22377f, 0.707107f);
8185path.conicTo(10.3172f, 5.98907f, 9.5519f, 6.63274f, 0.707107f);
8186path.quadTo(9.17345f, 6.95105f, 8.80843f, 7.28467f);
8187path.conicTo(8.07029f, 7.95931f, 7.39564f, 7.22117f, 0.707107f);
8188path.conicTo(6.72099f, 6.48303f, 7.45913f, 5.80839f, 0.707107f);
8189path.close();
8190path.moveTo(9.98688f, 3.77251f);
8191path.quadTo(10.4153f, 3.46948f, 10.8557f, 3.18397f);
8192path.conicTo(11.6948f, 2.63996f, 12.2388f, 3.47904f, 0.707107f);
8193path.conicTo(12.7828f, 4.31812f, 11.9437f, 4.86213f, 0.707107f);
8194path.quadTo(11.5373f, 5.12566f, 11.1417f, 5.40539f);
8195path.conicTo(10.3253f, 5.98282f, 9.74787f, 5.16638f, 0.707107f);
8196path.conicTo(9.17044f, 4.34994f, 9.98688f, 3.77251f, 0.707107f);
8197path.close();
8198path.moveTo(12.6283f, 2.13208f);
8199path.quadTo(13.0861f, 1.88442f, 13.5534f, 1.65529f);
8200path.conicTo(14.4513f, 1.21504f, 14.8915f, 2.11291f, 0.707107f);
8201path.conicTo(15.3318f, 3.01078f, 14.4339f, 3.45104f, 0.707107f);
8202path.quadTo(14.0025f, 3.66255f, 13.58f, 3.89115f);
8203path.conicTo(12.7005f, 4.36698f, 12.2246f, 3.48744f, 0.707107f);
8204path.conicTo(11.7488f, 2.60791f, 12.6283f, 2.13208f, 0.707107f);
8205path.close();
8206path.moveTo(15.4718f, 0.808815f);
8207path.quadTo(15.9627f, 0.615476f, 16.461f, 0.442208f);
8208path.conicTo(17.4055f, 0.113784f, 17.7339f, 1.05831f, 0.707107f);
8209path.conicTo(18.0624f, 2.00284f, 17.1178f, 2.33127f, 0.707107f);
8210path.quadTo(16.6578f, 2.49121f, 16.2047f, 2.66968f);
8211path.conicTo(15.2743f, 3.03614f, 14.9078f, 2.10571f, 0.707107f);
8212path.conicTo(14.5414f, 1.17528f, 15.4718f, 0.808815f, 0.707107f);
8213path.close();
8214path.moveTo(18.4879f, -0.171272f);
8215path.quadTo(19.0019f, -0.304236f, 19.5208f, -0.416111f);
8216path.conicTo(20.4984f, -0.62685f, 20.7091f, 0.350692f, 0.707107f);
8217path.conicTo(20.9198f, 1.32823f, 19.9423f, 1.53897f, 0.707107f);
8218path.quadTo(19.4633f, 1.64224f, 18.9889f, 1.76498f);
8219path.conicTo(18.0207f, 2.01544f, 17.7703f, 1.04732f, 0.707107f);
8220path.conicTo(17.5198f, 0.0791926f, 18.4879f, -0.171272f, 0.707107f);
8221path.close();
8222path.moveTo(21.5882f, -0.77517f);
8223path.quadTo(22.1056f, -0.843665f, 22.6254f, -0.891339f);
8224path.conicTo(23.6212f, -0.982672f, 23.7126f, 0.0131486f, 0.707107f);
8225path.conicTo(23.8039f, 1.00897f, 22.8081f, 1.1003f, 0.707107f);
8226path.quadTo(22.3283f, 1.14431f, 21.8506f, 1.20754f);
8227path.conicTo(20.8592f, 1.33876f, 20.728f, 0.347405f, 0.707107f);
8228path.conicTo(20.5968f, -0.643948f, 21.5882f, -0.77517f, 0.707107f);
8229path.close();
8230path.moveTo(24.7026f, -0.998301f);
8231path.quadTo(25.2241f, -1.00426f, 25.7453f, -0.989316f);
8232path.conicTo(26.7449f, -0.960651f, 26.7162f, 0.0389383f, 0.707107f);
8233path.conicTo(26.6876f, 1.03853f, 25.688f, 1.00986f, 0.707107f);
8234path.quadTo(25.2068f, 0.996064f, 24.7255f, 1.00157f);
8235path.conicTo(23.7256f, 1.013f, 23.7141f, 0.0130688f, 0.707107f);
8236path.conicTo(23.7027f, -0.986866f, 24.7026f, -0.998301f, 0.707107f);
8237path.close();
8238path.moveTo(27.8388f, -0.844563f);
8239path.quadTo(28.3559f, -0.787759f, 28.8704f, -0.710314f);
8240path.conicTo(29.8592f, -0.561454f, 29.7104f, 0.427404f, 0.707107f);
8241path.conicTo(29.5615f, 1.41626f, 28.5726f, 1.2674f, 0.707107f);
8242path.quadTo(28.0978f, 1.19591f, 27.6204f, 1.14348f);
8243path.conicTo(26.6264f, 1.0343f, 26.7356f, 0.0402742f, 0.707107f);
8244path.conicTo(26.8447f, -0.953747f, 27.8388f, -0.844563f, 0.707107f);
8245path.close();
8246path.moveTo(30.9153f, -0.318153f);
8247path.quadTo(31.4481f, -0.193671f, 31.9752f, -0.046875f);
8248path.conicTo(32.9386f, 0.221405f, 32.6703f, 1.18475f, 0.707107f);
8249path.conicTo(32.402f, 2.14809f, 31.4387f, 1.87981f, 0.707107f);
8250path.quadTo(30.9521f, 1.74431f, 30.4603f, 1.6294f);
8251path.conicTo(29.4865f, 1.40189f, 29.714f, 0.428111f, 0.707107f);
8252path.conicTo(29.9416f, -0.545664f, 30.9153f, -0.318153f, 0.707107f);
8253path.close();
8254path.moveTo(34.0252f, 0.616677f);
8255path.quadTo(34.5221f, 0.800609f, 35.0111f, 1.00465f);
8256path.conicTo(35.934f, 1.3897f, 35.549f, 2.31259f, 0.707107f);
8257path.conicTo(35.1639f, 3.23549f, 34.241f, 2.85044f, 0.707107f);
8258path.quadTo(33.7896f, 2.66211f, 33.3309f, 2.49232f);
8259path.conicTo(32.3931f, 2.1452f, 32.7402f, 1.20738f, 0.707107f);
8260path.conicTo(33.0873f, 0.269559f, 34.0252f, 0.616677f, 0.707107f);
8261path.close();
8262path.moveTo(36.8967f, 1.88141f);
8263path.quadTo(37.3499f, 2.11462f, 37.7936f, 2.3654f);
8264path.conicTo(38.6641f, 2.85746f, 38.1721f, 3.72802f, 0.707107f);
8265path.conicTo(37.68f, 4.59858f, 36.8094f, 4.10652f, 0.707107f);
8266path.quadTo(36.3999f, 3.87504f, 35.9815f, 3.65976f);
8267path.conicTo(35.0924f, 3.2022f, 35.5499f, 2.31302f, 0.707107f);
8268path.conicTo(36.0075f, 1.42384f, 36.8967f, 1.88141f, 0.707107f);
8269path.close();
8270path.moveTo(39.4914f, 3.413f);
8271path.lineTo(39.5381f, 3.44439f);
8272path.quadTo(39.9244f, 3.70494f, 40.3002f, 3.97845f);
8273path.conicTo(41.1087f, 4.56692f, 40.5202f, 5.37544f, 0.707107f);
8274path.conicTo(39.9317f, 6.18396f, 39.1232f, 5.59549f, 0.707107f);
8275path.quadTo(38.7763f, 5.34298f, 38.4215f, 5.10371f);
8276path.lineTo(38.3749f, 5.07232f);
8277path.conicTo(37.5452f, 4.51406f, 38.1035f, 3.68439f, 0.707107f);
8278path.conicTo(38.6618f, 2.85473f, 39.4914f, 3.413f, 0.707107f);
8279path.close();
8280path.moveTo(41.8859f, 5.22965f);
8281path.quadTo(42.2782f, 5.56471f, 42.6568f, 5.91499f);
8282path.conicTo(43.3908f, 6.5941f, 42.7117f, 7.32814f, 0.707107f);
8283path.conicTo(42.0326f, 8.06218f, 41.2986f, 7.38308f, 0.707107f);
8284path.quadTo(40.949f, 7.05968f, 40.587f, 6.75043f);
8285path.conicTo(39.8266f, 6.10097f, 40.476f, 5.34058f, 0.707107f);
8286path.conicTo(41.1255f, 4.58018f, 41.8859f, 5.22965f, 0.707107f);
8287path.close();
8288path.moveTo(44.1413f, 7.40421f);
8289path.quadTo(44.5035f, 7.79829f, 44.8493f, 8.20695f);
8290path.conicTo(45.4952f, 8.97038f, 44.7317f, 9.61627f, 0.707107f);
8291path.conicTo(43.9683f, 10.2622f, 43.3224f, 9.49874f, 0.707107f);
8292path.quadTo(43.0033f, 9.1215f, 42.6689f, 8.75773f);
8293path.conicTo(41.9921f, 8.02152f, 42.7283f, 7.34476f, 0.707107f);
8294path.conicTo(43.4645f, 6.668f, 44.1413f, 7.40421f, 0.707107f);
8295path.close();
8296path.moveTo(46.183f, 9.9242f);
8297path.quadTo(46.4888f, 10.3539f, 46.777f, 10.7957f);
8298path.conicTo(47.3233f, 11.6332f, 46.4857f, 12.1796f, 0.707107f);
8299path.conicTo(45.6482f, 12.7259f, 45.1018f, 11.8883f, 0.707107f);
8300path.quadTo(44.8358f, 11.4805f, 44.5535f, 11.0839f);
8301path.conicTo(43.9737f, 10.2691f, 44.7884f, 9.6893f, 0.707107f);
8302path.conicTo(45.6032f, 9.10947f, 46.183f, 9.9242f, 0.707107f);
8303path.close();
8304path.moveTo(47.8333f, 12.5645f);
8305path.quadTo(48.0821f, 13.0214f, 48.3125f, 13.4879f);
8306path.conicTo(48.7552f, 14.3845f, 47.8586f, 14.8273f, 0.707107f);
8307path.conicTo(46.962f, 15.2701f, 46.5192f, 14.3734f, 0.707107f);
8308path.quadTo(46.3065f, 13.9428f, 46.0769f, 13.5211f);
8309path.conicTo(45.5986f, 12.6429f, 46.4768f, 12.1646f, 0.707107f);
8310path.conicTo(47.355f, 11.6863f, 47.8333f, 12.5645f, 0.707107f);
8311path.close();
8312path.moveTo(49.1641f, 15.4033f);
8313path.quadTo(49.3588f, 15.8935f, 49.5334f, 16.3912f);
8314path.conicTo(49.8645f, 17.3348f, 48.9209f, 17.6659f, 0.707107f);
8315path.conicTo(47.9773f, 17.997f, 47.6462f, 17.0534f, 0.707107f);
8316path.quadTo(47.485f, 16.5939f, 47.3053f, 16.1415f);
8317path.conicTo(46.9362f, 15.2121f, 47.8656f, 14.843f, 0.707107f);
8318path.conicTo(48.795f, 14.4739f, 49.1641f, 15.4033f, 0.707107f);
8319path.close();
8320path.moveTo(50.1526f, 18.4161f);
8321path.quadTo(50.287f, 18.9296f, 50.4003f, 19.4482f);
8322path.conicTo(50.6139f, 20.4252f, 49.6369f, 20.6387f, 0.707107f);
8323path.conicTo(48.66f, 20.8522f, 48.4465f, 19.8753f, 0.707107f);
8324path.quadTo(48.3419f, 19.3966f, 48.2178f, 18.9225f);
8325path.conicTo(47.9645f, 17.9551f, 48.9319f, 17.7019f, 0.707107f);
8326path.conicTo(49.8993f, 17.4487f, 50.1526f, 18.4161f, 0.707107f);
8327path.close();
8328path.moveTo(50.7655f, 21.5157f);
8329path.quadTo(50.8354f, 22.033f, 50.8846f, 22.5528f);
8330path.conicTo(50.9787f, 23.5483f, 49.9831f, 23.6425f, 0.707107f);
8331path.conicTo(48.9876f, 23.7366f, 48.8935f, 22.741f, 0.707107f);
8332path.quadTo(48.8481f, 22.2613f, 48.7835f, 21.7837f);
8333path.conicTo(48.6495f, 20.7928f, 49.6405f, 20.6587f, 0.707107f);
8334path.conicTo(50.6315f, 20.5247f, 50.7655f, 21.5157f, 0.707107f);
8335path.close();
8336path.moveTo(50.9974f, 24.6301f);
8337path.quadTo(51.0048f, 25.1509f, 50.9913f, 25.6715f);
8338path.conicTo(50.9655f, 26.6712f, 49.9658f, 26.6454f, 0.707107f);
8339path.conicTo(48.9662f, 26.6196f, 48.992f, 25.6199f, 0.707107f);
8340path.quadTo(49.0044f, 25.1393f, 48.9976f, 24.6585f);
8341path.conicTo(48.9834f, 23.6586f, 49.9833f, 23.6444f, 0.707107f);
8342path.conicTo(50.9832f, 23.6302f, 50.9974f, 24.6301f, 0.707107f);
8343path.close();
8344path.moveTo(50.8524f, 27.7662f);
8345path.quadTo(50.7971f, 28.2837f, 50.721f, 28.7986f);
8346path.conicTo(50.5749f, 29.7879f, 49.5856f, 29.6418f, 0.707107f);
8347path.conicTo(48.5963f, 29.4957f, 48.7425f, 28.5064f, 0.707107f);
8348path.quadTo(48.8127f, 28.0311f, 48.8638f, 27.5534f);
8349path.conicTo(48.9702f, 26.5591f, 49.9645f, 26.6655f, 0.707107f);
8350path.conicTo(50.9588f, 26.7718f, 50.8524f, 27.7662f, 0.707107f);
8351path.close();
8352path.moveTo(50.3355f, 30.8404f);
8353path.quadTo(50.2125f, 31.3739f, 50.0672f, 31.9018f);
8354path.conicTo(49.8018f, 32.8659f, 48.8376f, 32.6005f, 0.707107f);
8355path.conicTo(47.8735f, 32.335f, 48.139f, 31.3709f, 0.707107f);
8356path.quadTo(48.2731f, 30.8836f, 48.3867f, 30.3912f);
8357path.conicTo(48.6113f, 29.4167f, 49.5857f, 29.6413f, 0.707107f);
8358path.conicTo(50.5602f, 29.866f, 50.3355f, 30.8404f, 0.707107f);
8359path.close();
8360path.moveTo(49.4091f, 33.9552f);
8361path.quadTo(49.2264f, 34.4531f, 49.0236f, 34.9431f);
8362path.conicTo(48.6412f, 35.8671f, 47.7172f, 35.4846f, 0.707107f);
8363path.conicTo(46.7932f, 35.1022f, 47.1757f, 34.1782f, 0.707107f);
8364path.quadTo(47.3629f, 33.7259f, 47.5315f, 33.2663f);
8365path.conicTo(47.8759f, 32.3275f, 48.8147f, 32.672f, 0.707107f);
8366path.conicTo(49.7535f, 33.0164f, 49.4091f, 33.9552f, 0.707107f);
8367path.close();
8368path.moveTo(48.1514f, 36.8328f);
8369path.quadTo(47.9191f, 37.2871f, 47.6694f, 37.7318f);
8370path.conicTo(47.1797f, 38.6038f, 46.3078f, 38.1141f, 0.707107f);
8371path.conicTo(45.4359f, 37.6244f, 45.9256f, 36.7525f, 0.707107f);
8372path.quadTo(46.1562f, 36.3418f, 46.3705f, 35.9226f);
8373path.conicTo(46.8256f, 35.0321f, 47.716f, 35.4872f, 0.707107f);
8374path.conicTo(48.6065f, 35.9423f, 48.1514f, 36.8328f, 0.707107f);
8375path.close();
8376path.moveTo(46.6245f, 39.4354f);
8377path.lineTo(46.5563f, 39.537f);
8378path.quadTo(46.3146f, 39.8955f, 46.0624f, 40.2438f);
8379path.conicTo(45.4761f, 41.0539f, 44.666f, 40.4676f, 0.707107f);
8380path.conicTo(43.8559f, 39.8813f, 44.4422f, 39.0712f, 0.707107f);
8381path.quadTo(44.6749f, 38.7498f, 44.8955f, 38.4226f);
8382path.lineTo(44.9637f, 38.3211f);
8383path.conicTo(45.5209f, 37.4907f, 46.3513f, 38.0479f, 0.707107f);
8384path.conicTo(47.1817f, 38.605f, 46.6245f, 39.4354f, 0.707107f);
8385path.close();
8386path.moveTo(44.8168f, 41.8314f);
8387path.quadTo(44.4832f, 42.2241f, 44.1342f, 42.6034f);
8388path.conicTo(43.4572f, 43.3394f, 42.7212f, 42.6623f, 0.707107f);
8389path.conicTo(41.9853f, 41.9853f, 42.6623f, 41.2494f, 0.707107f);
8390path.quadTo(42.9845f, 40.8992f, 43.2924f, 40.5366f);
8391path.conicTo(43.9398f, 39.7745f, 44.702f, 40.4218f, 0.707107f);
8392path.conicTo(45.4642f, 41.0692f, 44.8168f, 41.8314f, 0.707107f);
8393path.close();
8394path.moveTo(42.6505f, 44.0908f);
8395path.quadTo(42.2577f, 44.454f, 41.8504f, 44.8006f);
8396path.conicTo(41.0888f, 45.4487f, 40.4408f, 44.6871f, 0.707107f);
8397path.conicTo(39.7927f, 43.9256f, 40.5542f, 43.2775f, 0.707107f);
8398path.quadTo(40.9302f, 42.9575f, 41.2928f, 42.6223f);
8399path.conicTo(42.027f, 41.9434f, 42.7059f, 42.6777f, 0.707107f);
8400path.conicTo(43.3848f, 43.412f, 42.6505f, 44.0908f, 0.707107f);
8401path.close();
8402path.moveTo(40.1383f, 46.1384f);
8403path.quadTo(39.7073f, 46.4471f, 39.2641f, 46.7378f);
8404path.conicTo(38.4281f, 47.2865f, 37.8795f, 46.4504f, 0.707107f);
8405path.conicTo(37.3308f, 45.6143f, 38.1669f, 45.0657f, 0.707107f);
8406path.quadTo(38.576f, 44.7972f, 38.9738f, 44.5124f);
8407path.conicTo(39.7868f, 43.9301f, 40.369f, 44.7432f, 0.707107f);
8408path.conicTo(40.9513f, 45.5562f, 40.1383f, 46.1384f, 0.707107f);
8409path.close();
8410path.moveTo(37.4991f, 47.7985f);
8411path.quadTo(37.0431f, 48.0485f, 36.5775f, 48.2801f);
8412path.conicTo(35.6821f, 48.7254f, 35.2368f, 47.83f, 0.707107f);
8413path.conicTo(34.7915f, 46.9346f, 35.6869f, 46.4893f, 0.707107f);
8414path.quadTo(36.1167f, 46.2755f, 36.5376f, 46.0448f);
8415path.conicTo(37.4145f, 45.5641f, 37.8952f, 46.4409f, 0.707107f);
8416path.conicTo(38.376f, 47.3178f, 37.4991f, 47.7985f, 0.707107f);
8417path.close();
8418path.moveTo(34.6651f, 49.1368f);
8419path.quadTo(34.1756f, 49.3328f, 33.6785f, 49.5089f);
8420path.conicTo(32.7358f, 49.8427f, 32.402f, 48.9f, 0.707107f);
8421path.conicTo(32.0682f, 47.9574f, 33.0109f, 47.6236f, 0.707107f);
8422path.quadTo(33.4697f, 47.4611f, 33.9216f, 47.2801f);
8423path.conicTo(34.85f, 46.9084f, 35.2217f, 47.8368f, 0.707107f);
8424path.conicTo(35.5934f, 48.7651f, 34.6651f, 49.1368f, 0.707107f);
8425path.close();
8426path.moveTo(31.6557f, 50.1337f);
8427path.quadTo(31.1425f, 50.2696f, 30.6243f, 50.3844f);
8428path.conicTo(29.648f, 50.6007f, 29.4317f, 49.6244f, 0.707107f);
8429path.conicTo(29.2153f, 48.6481f, 30.1917f, 48.4317f, 0.707107f);
8430path.quadTo(30.6701f, 48.3257f, 31.1437f, 48.2003f);
8431path.conicTo(32.1104f, 47.9443f, 32.3664f, 48.911f, 0.707107f);
8432path.conicTo(32.6223f, 49.8777f, 31.6557f, 50.1337f, 0.707107f);
8433path.close();
8434path.moveTo(28.5567f, 50.7556f);
8435path.quadTo(28.0395f, 50.827f, 27.5198f, 50.8776f);
8436path.conicTo(26.5245f, 50.9745f, 26.4276f, 49.9792f, 0.707107f);
8437path.conicTo(26.3307f, 48.9839f, 27.326f, 48.887f, 0.707107f);
8438path.quadTo(27.8056f, 48.8403f, 28.2831f, 48.7744f);
8439path.conicTo(29.2737f, 48.6376f, 29.4105f, 49.6282f, 0.707107f);
8440path.conicTo(29.5473f, 50.6188f, 28.5567f, 50.7556f, 0.707107f);
8441path.close();
8442path.moveTo(25.4424f, 50.9962f);
8443path.quadTo(24.9222f, 51.0051f, 24.4022f, 50.9931f);
8444path.conicTo(23.4025f, 50.9701f, 23.4255f, 49.9704f, 0.707107f);
8445path.conicTo(23.4485f, 48.9707f, 24.4482f, 48.9937f, 0.707107f);
8446path.quadTo(24.9283f, 49.0047f, 25.4084f, 48.9965f);
8447path.conicTo(26.4083f, 48.9795f, 26.4253f, 49.9794f, 0.707107f);
8448path.conicTo(26.4423f, 50.9792f, 25.4424f, 50.9962f, 0.707107f);
8449path.close();
8450path.moveTo(22.3065f, 50.8601f);
8451path.quadTo(21.7885f, 50.8062f, 21.2732f, 50.7315f);
8452path.conicTo(20.2835f, 50.5882f, 20.4268f, 49.5985f, 0.707107f);
8453path.conicTo(20.5702f, 48.6088f, 21.5599f, 48.7522f, 0.707107f);
8454path.quadTo(22.0355f, 48.8211f, 22.5136f, 48.8709f);
8455path.conicTo(23.5083f, 48.9745f, 23.4047f, 49.9691f, 0.707107f);
8456path.conicTo(23.3011f, 50.9637f, 22.3065f, 50.8601f, 0.707107f);
8457path.close();
8458path.moveTo(19.2346f, 50.3527f);
8459path.quadTo(18.7003f, 50.2312f, 18.1717f, 50.0873f);
8460path.conicTo(17.2068f, 49.8247f, 17.4694f, 48.8598f, 0.707107f);
8461path.conicTo(17.732f, 47.8949f, 18.6969f, 48.1575f, 0.707107f);
8462path.quadTo(19.185f, 48.2904f, 19.6781f, 48.4025f);
8463path.conicTo(20.6532f, 48.6243f, 20.4314f, 49.5994f, 0.707107f);
8464path.conicTo(20.2097f, 50.5745f, 19.2346f, 50.3527f, 0.707107f);
8465path.close();
8466path.moveTo(16.1149f, 49.4347f);
8467path.quadTo(15.6161f, 49.2533f, 15.1251f, 49.0517f);
8468path.conicTo(14.2f, 48.6719f, 14.5798f, 47.7469f, 0.707107f);
8469path.conicTo(14.9596f, 46.8218f, 15.8847f, 47.2016f, 0.707107f);
8470path.quadTo(16.3379f, 47.3877f, 16.7984f, 47.5551f);
8471path.conicTo(17.7382f, 47.8969f, 17.3964f, 48.8366f, 0.707107f);
8472path.conicTo(17.0547f, 49.7764f, 16.1149f, 49.4347f, 0.707107f);
8473path.close();
8474path.moveTo(13.2313f, 48.184f);
8475path.quadTo(12.776f, 47.9529f, 12.33f, 47.704f);
8476path.conicTo(11.4568f, 47.2167f, 11.9441f, 46.3434f, 0.707107f);
8477path.conicTo(12.4314f, 45.4702f, 13.3046f, 45.9575f, 0.707107f);
8478path.quadTo(13.7162f, 46.1872f, 14.1365f, 46.4006f);
8479path.conicTo(15.0282f, 46.8532f, 14.5756f, 47.7449f, 0.707107f);
8480path.conicTo(14.123f, 48.6366f, 13.2313f, 48.184f, 0.707107f);
8481path.close();
8482path.moveTo(10.6208f, 46.6619f);
8483path.lineTo(10.4641f, 46.5571f);
8484path.quadTo(10.1333f, 46.334f, 9.81253f, 46.1031f);
8485path.conicTo(9.00087f, 45.519f, 9.585f, 44.7073f, 0.707107f);
8486path.conicTo(10.1691f, 43.8957f, 10.9808f, 44.4798f, 0.707107f);
8487path.quadTo(11.2769f, 44.6929f, 11.5763f, 44.8948f);
8488path.lineTo(11.7329f, 44.9996f);
8489path.conicTo(12.564f, 45.5557f, 12.008f, 46.3868f, 0.707107f);
8490path.conicTo(11.4519f, 47.2179f, 10.6208f, 46.6619f, 0.707107f);
8491path.close();
8492path.moveTo(8.22326f, 44.8631f);
8493path.quadTo(7.82986f, 44.5308f, 7.44999f, 44.1833f);
8494path.conicTo(6.71217f, 43.5082f, 7.38718f, 42.7704f, 0.707107f);
8495path.conicTo(8.06219f, 42.0326f, 8.8f, 42.7076f, 0.707107f);
8496path.quadTo(9.15066f, 43.0284f, 9.51375f, 43.3351f);
8497path.conicTo(10.2777f, 43.9804f, 9.63248f, 44.7443f, 0.707107f);
8498path.conicTo(8.98724f, 45.5083f, 8.22326f, 44.8631f, 0.707107f);
8499path.close();
8500path.moveTo(5.95972f, 42.705f);
8501path.quadTo(5.59577f, 42.3136f, 5.24823f, 41.9076f);
8502path.conicTo(4.59793f, 41.148f, 5.3576f, 40.4977f, 0.707107f);
8503path.conicTo(6.11728f, 39.8473f, 6.76758f, 40.607f, 0.707107f);
8504path.quadTo(7.08843f, 40.9818f, 7.42436f, 41.3431f);
8505path.conicTo(8.10532f, 42.0754f, 7.373f, 42.7564f, 0.707107f);
8506path.conicTo(6.64068f, 43.4373f, 5.95972f, 42.705f, 0.707107f);
8507path.close();
8508path.moveTo(3.90635f, 40.2006f);
8509path.quadTo(3.59492f, 39.7684f, 3.30147f, 39.3239f);
8510path.conicTo(2.75055f, 38.4893f, 3.58511f, 37.9384f, 0.707107f);
8511path.conicTo(4.41967f, 37.3875f, 4.97059f, 38.222f, 0.707107f);
8512path.quadTo(5.24148f, 38.6324f, 5.52894f, 39.0313f);
8513path.conicTo(6.11358f, 39.8426f, 5.30228f, 40.4272f, 0.707107f);
8514path.conicTo(4.49099f, 41.0119f, 3.90635f, 40.2006f, 0.707107f);
8515path.close();
8516path.moveTo(2.23643f, 37.5626f);
8517path.quadTo(1.98525f, 37.1075f, 1.75248f, 36.6427f);
8518path.conicTo(1.30469f, 35.7486f, 2.19883f, 35.3008f, 0.707107f);
8519path.conicTo(3.09296f, 34.853f, 3.54076f, 35.7471f, 0.707107f);
8520path.quadTo(3.75563f, 36.1762f, 3.98747f, 36.5963f);
8521path.conicTo(4.47065f, 37.4718f, 3.59513f, 37.955f, 0.707107f);
8522path.conicTo(2.71961f, 38.4382f, 2.23643f, 37.5626f, 0.707107f);
8523path.close();
8524path.moveTo(0.890647f, 34.7334f);
8525path.quadTo(0.69328f, 34.2445f, 0.515902f, 33.7481f);
8526path.conicTo(0.179435f, 32.8064f, 1.12113f, 32.4699f, 0.707107f);
8527path.conicTo(2.06282f, 32.1335f, 2.39929f, 33.0752f, 0.707107f);
8528path.quadTo(2.56303f, 33.5334f, 2.74521f, 33.9847f);
8529path.conicTo(3.11957f, 34.912f, 2.19229f, 35.2863f, 0.707107f);
8530path.conicTo(1.26501f, 35.6607f, 0.890647f, 34.7334f, 0.707107f);
8531path.close();
8532path.moveTo(-0.114587f, 31.7274f);
8533path.quadTo(-0.251922f, 31.2147f, -0.368218f, 30.6968f);
8534path.conicTo(-0.587327f, 29.7211f, 0.388373f, 29.502f, 0.707107f);
8535path.conicTo(1.36407f, 29.2829f, 1.58318f, 30.2586f, 0.707107f);
8536path.quadTo(1.69053f, 30.7366f, 1.8173f, 31.2099f);
8537path.conicTo(2.07605f, 32.1758f, 1.1101f, 32.4346f, 0.707107f);
8538path.conicTo(0.144159f, 32.6933f, -0.114587f, 31.7274f, 0.707107f);
8539path.close();
8540path.moveTo(-0.745485f, 28.6291f);
8541path.quadTo(-0.818367f, 28.112f, -0.870432f, 27.5925f);
8542path.conicTo(-0.970142f, 26.5974f, 0.0248742f, 26.4977f, 0.707107f);
8543path.conicTo(1.01989f, 26.398f, 1.1196f, 27.393f, 0.707107f);
8544path.quadTo(1.16766f, 27.8726f, 1.23494f, 28.3499f);
8545path.conicTo(1.37452f, 29.3401f, 0.384305f, 29.4797f, 0.707107f);
8546path.conicTo(-0.605905f, 29.6193f, -0.745485f, 28.6291f, 0.707107f);
8547path.close();
8548path.moveTo(-0.994901f, 25.515f);
8549path.quadTo(-1.00519f, 24.9955f, -0.994722f, 24.4761f);
8550path.conicTo(-0.97457f, 23.4763f, 0.0252273f, 23.4964f, 0.707107f);
8551path.conicTo(1.02502f, 23.5166f, 1.00487f, 24.5164f, 0.707107f);
8552path.quadTo(0.995207f, 24.9959f, 1.00471f, 25.4754f);
8553path.conicTo(1.02451f, 26.4752f, 0.0247103f, 26.495f, 0.707107f);
8554path.conicTo(-0.975093f, 26.5148f, -0.994901f, 25.515f, 0.707107f);
8555path.close();
8556path.moveTo(-0.867571f, 22.3792f);
8557path.quadTo(-0.81506f, 21.8609f, -0.741825f, 21.3451f);
8558path.conicTo(-0.60125f, 20.355f, 0.38882f, 20.4956f, 0.707107f);
8559path.conicTo(1.37889f, 20.6361f, 1.23831f, 21.6262f, 0.707107f);
8560path.quadTo(1.17071f, 22.1023f, 1.12224f, 22.5807f);
8561path.conicTo(1.02144f, 23.5757f, 0.026537f, 23.4749f, 0.707107f);
8562path.conicTo(-0.96837f, 23.3741f, -0.867571f, 22.3792f, 0.707107f);
8563path.close();
8564path.moveTo(-0.369678f, 19.3097f);
8565path.quadTo(-0.249693f, 18.7748f, -0.107265f, 18.2453f);
8566path.conicTo(0.152529f, 17.2797f, 1.11819f, 17.5395f, 0.707107f);
8567path.conicTo(2.08386f, 17.7993f, 1.82406f, 18.7649f, 0.707107f);
8568path.quadTo(1.69259f, 19.2536f, 1.58184f, 19.7474f);
8569path.conicTo(1.36298f, 20.7232f, 0.387221f, 20.5043f, 0.707107f);
8570path.conicTo(-0.588536f, 20.2855f, -0.369678f, 19.3097f, 0.707107f);
8571path.close();
8572path.moveTo(0.539863f, 16.1851f);
8573path.quadTo(0.719962f, 15.6854f, 0.920307f, 15.1934f);
8574path.conicTo(1.29748f, 14.2673f, 2.22362f, 14.6445f, 0.707107f);
8575path.conicTo(3.14976f, 15.0216f, 2.7726f, 15.9478f, 0.707107f);
8576path.quadTo(2.58765f, 16.4019f, 2.42141f, 16.8632f);
8577path.conicTo(2.08237f, 17.804f, 1.1416f, 17.4649f, 0.707107f);
8578path.conicTo(0.200823f, 17.1259f, 0.539863f, 16.1851f, 0.707107f);
8579path.close();
8580path.moveTo(1.78353f, 13.2955f);
8581path.quadTo(2.01364f, 12.8391f, 2.26151f, 12.392f);
8582path.conicTo(2.74643f, 11.5175f, 3.62099f, 12.0024f, 0.707107f);
8583path.conicTo(4.49555f, 12.4873f, 4.01063f, 13.3618f, 0.707107f);
8584path.quadTo(3.78183f, 13.7745f, 3.56941f, 14.1958f);
8585path.conicTo(3.11923f, 15.0888f, 2.22629f, 14.6386f, 0.707107f);
8586path.conicTo(1.33336f, 14.1884f, 1.78353f, 13.2955f, 0.707107f);
8587path.close();
8588path.moveTo(3.30083f, 10.6771f);
8589path.lineTo(3.44218f, 10.4652f);
8590path.quadTo(3.6466f, 10.1621f, 3.85641f, 9.86895f);
8591path.conicTo(4.43837f, 9.05574f, 5.25159f, 9.6377f, 0.707107f);
8592path.conicTo(6.0648f, 10.2197f, 5.48284f, 11.0329f, 0.707107f);
8593path.quadTo(5.28917f, 11.3035f, 5.10592f, 11.5752f);
8594path.lineTo(4.96457f, 11.787f);
8595path.conicTo(4.4096f, 12.6189f, 3.57773f, 12.0639f, 0.707107f);
8596path.conicTo(2.74586f, 11.509f, 3.30083f, 10.6771f, 0.707107f);
8597path.close();
8598path.moveTo(5.0909f, 8.27793f);
8599path.quadTo(5.42174f, 7.88403f, 5.76791f, 7.50353f);
8600path.conicTo(6.44085f, 6.76383f, 7.18054f, 7.43678f, 0.707107f);
8601path.conicTo(7.92024f, 8.10972f, 7.24729f, 8.84942f, 0.707107f);
8602path.quadTo(6.92775f, 9.20065f, 6.62237f, 9.56424f);
8603path.conicTo(5.97921f, 10.33f, 5.21348f, 9.68682f, 0.707107f);
8604path.conicTo(4.44774f, 9.04367f, 5.0909f, 8.27793f, 0.707107f);
8605path.close();
8606path.moveTo(7.24064f, 6.0104f);
8607path.quadTo(7.63069f, 5.64561f, 8.03537f, 5.29717f);
8608path.conicTo(8.79318f, 4.64469f, 9.44566f, 5.40249f, 0.707107f);
8609path.conicTo(10.0981f, 6.16029f, 9.34034f, 6.81278f, 0.707107f);
8610path.quadTo(8.96678f, 7.13442f, 8.60675f, 7.47113f);
8611path.conicTo(7.87638f, 8.15419f, 7.19332f, 7.42382f, 0.707107f);
8612path.conicTo(6.51027f, 6.69345f, 7.24064f, 6.0104f, 0.707107f);
8613path.close();
8614path.moveTo(9.73726f, 3.95128f);
8615path.quadTo(10.1706f, 3.63704f, 10.6165f, 3.34092f);
8616path.conicTo(11.4496f, 2.78771f, 12.0028f, 3.62075f, 0.707107f);
8617path.conicTo(12.556f, 4.4538f, 11.7229f, 5.007f, 0.707107f);
8618path.quadTo(11.3113f, 5.28035f, 10.9113f, 5.57041f);
8619path.conicTo(10.1018f, 6.15744f, 9.51472f, 5.34787f, 0.707107f);
8620path.conicTo(8.92769f, 4.53831f, 9.73726f, 3.95128f, 0.707107f);
8621path.close();
8622path.moveTo(12.374f, 2.27153f);
8623path.quadTo(12.8282f, 2.01921f, 13.2921f, 1.78522f);
8624path.conicTo(14.185f, 1.33492f, 14.6353f, 2.22779f, 0.707107f);
8625path.conicTo(15.0856f, 3.12067f, 14.1927f, 3.57097f, 0.707107f);
8626path.quadTo(13.7645f, 3.78696f, 13.3452f, 4.01988f);
8627path.conicTo(12.471f, 4.5055f, 11.9854f, 3.63132f, 0.707107f);
8628path.conicTo(11.4998f, 2.75715f, 12.374f, 2.27153f, 0.707107f);
8629path.close();
8630path.moveTo(15.1984f, 0.918296f);
8631path.quadTo(15.6866f, 0.719602f, 16.1824f, 0.540851f);
8632path.conicTo(17.1231f, 0.20171f, 17.4623f, 1.14245f, 0.707107f);
8633path.conicTo(17.8014f, 2.08318f, 16.8607f, 2.42232f, 0.707107f);
8634path.quadTo(16.403f, 2.58733f, 15.9524f, 2.77074f);
8635path.conicTo(15.0261f, 3.14772f, 14.6492f, 2.2215f, 0.707107f);
8636path.conicTo(14.2722f, 1.29528f, 15.1984f, 0.918296f, 0.707107f);
8637path.close();
8638path.moveTo(18.201f, -0.0952874f);
8639path.quadTo(18.7132f, -0.234075f, 19.2308f, -0.351842f);
8640path.conicTo(20.2058f, -0.573734f, 20.4277f, 0.401338f, 0.707107f);
8641path.conicTo(20.6496f, 1.37641f, 19.6745f, 1.5983f, 0.707107f);
8642path.quadTo(19.1968f, 1.70701f, 18.724f, 1.83512f);
8643path.conicTo(17.7588f, 2.09662f, 17.4973f, 1.13142f, 0.707107f);
8644path.conicTo(17.2358f, 0.166216f, 18.201f, -0.0952874f, 0.707107f);
8645path.close();
8646path.moveTo(21.2986f, -0.73518f);
8647path.quadTo(21.8155f, -0.809526f, 22.3349f, -0.863052f);
8648path.conicTo(23.3297f, -0.965552f, 23.4322f, 0.029181f, 0.707107f);
8649path.conicTo(23.5347f, 1.02391f, 22.5399f, 1.12641f, 0.707107f);
8650path.quadTo(22.0604f, 1.17582f, 21.5833f, 1.24445f);
8651path.conicTo(20.5935f, 1.38681f, 20.4511f, 0.397f, 0.707107f);
8652path.conicTo(20.3088f, -0.592814f, 21.2986f, -0.73518f, 0.707107f);
8653path.close();
8654path.moveTo(24.4124f, -0.993361f);
8655path.quadTo(24.9312f, -1.00509f, 25.4501f, -0.996107f);
8656path.conicTo(26.4499f, -0.978799f, 26.4326f, 0.0210512f, 0.707107f);
8657path.conicTo(26.4153f, 1.0209f, 25.4155f, 1.00359f, 0.707107f);
8658path.quadTo(24.9365f, 0.995302f, 24.4576f, 1.00613f);
8659path.conicTo(23.4578f, 1.02873f, 23.4352f, 0.0289853f, 0.707107f);
8660path.conicTo(23.4126f, -0.970759f, 24.4124f, -0.993361f, 0.707107f);
8661path.close();
8662path.moveTo(27.5481f, -0.87484f);
8663path.quadTo(28.0668f, -0.823762f, 28.583f, -0.75194f);
8664path.conicTo(29.5734f, -0.614138f, 29.4356f, 0.376322f, 0.707107f);
8665path.conicTo(29.2978f, 1.36678f, 28.3074f, 1.22898f, 0.707107f);
8666path.quadTo(27.8309f, 1.16268f, 27.3521f, 1.11553f);
8667path.conicTo(26.3569f, 1.01753f, 26.4549f, 0.0223428f, 0.707107f);
8668path.conicTo(26.5529f, -0.972843f, 27.5481f, -0.87484f, 0.707107f);
8669path.close();
8670path.moveTo(30.6151f, -0.386432f);
8671path.quadTo(31.1507f, -0.267954f, 31.6809f, -0.126991f);
8672path.conicTo(32.6473f, 0.129965f, 32.3904f, 1.09639f, 0.707107f);
8673path.conicTo(32.1334f, 2.06281f, 31.167f, 1.80585f, 0.707107f);
8674path.quadTo(30.6776f, 1.67574f, 30.1832f, 1.56637f);
8675path.conicTo(29.2068f, 1.35041f, 29.4227f, 0.374005f, 0.707107f);
8676path.conicTo(29.6387f, -0.602396f, 30.6151f, -0.386432f, 0.707107f);
8677path.close();
8678path.moveTo(33.7445f, 0.514616f);
8679path.quadTo(34.2452f, 0.693421f, 34.7381f, 0.892536f);
8680path.conicTo(35.6653f, 1.26708f, 35.2908f, 2.19429f, 0.707107f);
8681path.conicTo(34.9162f, 3.1215f, 33.989f, 2.74696f, 0.707107f);
8682path.quadTo(33.534f, 2.56316f, 33.0718f, 2.3981f);
8683path.conicTo(32.1301f, 2.06177f, 32.4664f, 1.12003f, 0.707107f);
8684path.conicTo(32.8027f, 0.178285f, 33.7445f, 0.514616f, 0.707107f);
8685path.close();
8686path.moveTo(36.6402f, 1.7512f);
8687path.quadTo(37.0977f, 1.98026f, 37.5458f, 2.22715f);
8688path.conicTo(38.4217f, 2.70968f, 37.9392f, 3.58556f, 0.707107f);
8689path.conicTo(37.4566f, 4.46144f, 36.5808f, 3.97891f, 0.707107f);
8690path.quadTo(36.1671f, 3.75102f, 35.7448f, 3.53956f);
8691path.conicTo(34.8506f, 3.09185f, 35.2983f, 2.19767f, 0.707107f);
8692path.conicTo(35.746f, 1.30349f, 36.6402f, 1.7512f, 0.707107f);
8693path.close();
8694path.moveTo(39.2611f, 3.26012f);
8695path.quadTo(39.4005f, 3.35159f, 39.539f, 3.44501f);
8696path.quadTo(39.8091f, 3.62717f, 40.0746f, 3.81611f);
8697path.conicTo(40.8893f, 4.3959f, 40.3096f, 5.21067f, 0.707107f);
8698path.conicTo(39.7298f, 6.02543f, 38.915f, 5.44564f, 0.707107f);
8699path.quadTo(38.67f, 5.2713f, 38.4206f, 5.10309f);
8700path.quadTo(38.293f, 5.017f, 38.164f, 4.9324f);
8701path.conicTo(37.3279f, 4.38388f, 37.8764f, 3.54775f, 0.707107f);
8702path.conicTo(38.4249f, 2.71161f, 39.2611f, 3.26012f, 0.707107f);
8703path.close();
8704path.moveTo(41.6673f, 5.04503f);
8705path.quadTo(42.0618f, 5.37449f, 42.4428f, 5.71927f);
8706path.conicTo(43.1844f, 6.39015f, 42.5135f, 7.13171f, 0.707107f);
8707path.conicTo(41.8426f, 7.87327f, 41.1011f, 7.20239f, 0.707107f);
8708path.quadTo(40.7493f, 6.88414f, 40.3852f, 6.58004f);
8709path.conicTo(39.6177f, 5.93899f, 40.2588f, 5.17149f, 0.707107f);
8710path.conicTo(40.8998f, 4.40399f, 41.6673f, 5.04503f, 0.707107f);
8711path.close();
8712path.moveTo(43.9388f, 7.1865f);
8713path.quadTo(44.3044f, 7.57519f, 44.6538f, 7.97856f);
8714path.conicTo(45.3084f, 8.73448f, 44.5525f, 9.38914f, 0.707107f);
8715path.conicTo(43.7966f, 10.0438f, 43.1419f, 9.28789f, 0.707107f);
8716path.quadTo(42.8195f, 8.91555f, 42.482f, 8.55677f);
8717path.conicTo(41.7969f, 7.82836f, 42.5253f, 7.14322f, 0.707107f);
8718path.conicTo(43.2537f, 6.45808f, 43.9388f, 7.1865f, 0.707107f);
8719path.close();
8720path.moveTo(46.0036f, 9.6753f);
8721path.quadTo(46.3207f, 10.1098f, 46.6195f, 10.5571f);
8722path.conicTo(47.175f, 11.3886f, 46.3435f, 11.9441f, 0.707107f);
8723path.conicTo(45.5119f, 12.4996f, 44.9564f, 11.6681f, 0.707107f);
8724path.quadTo(44.6806f, 11.2552f, 44.388f, 10.8541f);
8725path.conicTo(43.7986f, 10.0463f, 44.6064f, 9.45688f, 0.707107f);
8726path.conicTo(45.4142f, 8.86747f, 46.0036f, 9.6753f, 0.707107f);
8727path.close();
8728path.moveTo(47.6932f, 12.3107f);
8729path.quadTo(47.9467f, 12.764f, 48.1819f, 13.2271f);
8730path.conicTo(48.6347f, 14.1187f, 47.7431f, 14.5715f, 0.707107f);
8731path.conicTo(46.8514f, 15.0243f, 46.3986f, 14.1327f, 0.707107f);
8732path.quadTo(46.1816f, 13.7053f, 45.9476f, 13.2868f);
8733path.conicTo(45.4595f, 12.414f, 46.3323f, 11.9259f, 0.707107f);
8734path.conicTo(47.2051f, 11.4379f, 47.6932f, 12.3107f, 0.707107f);
8735path.close();
8736path.moveTo(49.0539f, 15.1303f);
8737path.quadTo(49.2539f, 15.6178f, 49.434f, 16.113f);
8738path.conicTo(49.7758f, 17.0527f, 48.836f, 17.3946f, 0.707107f);
8739path.conicTo(47.8963f, 17.7364f, 47.5545f, 16.7966f, 0.707107f);
8740path.quadTo(47.3882f, 16.3395f, 47.2036f, 15.8895f);
8741path.conicTo(46.824f, 14.9643f, 47.7491f, 14.5847f, 0.707107f);
8742path.conicTo(48.6743f, 14.2051f, 49.0539f, 15.1303f, 0.707107f);
8743path.close();
8744path.moveTo(50.0758f, 18.1294f);
8745path.quadTo(50.216f, 18.6412f, 50.3352f, 19.1584f);
8746path.conicTo(50.5599f, 20.1328f, 49.5855f, 20.3575f, 0.707107f);
8747path.conicTo(48.6111f, 20.5821f, 48.3864f, 19.6077f, 0.707107f);
8748path.quadTo(48.2763f, 19.1304f, 48.1469f, 18.6579f);
8749path.conicTo(47.8826f, 17.6935f, 48.8471f, 17.4292f, 0.707107f);
8750path.conicTo(49.8115f, 17.165f, 50.0758f, 18.1294f, 0.707107f);
8751path.close();
8752path.moveTo(50.7247f, 21.2262f);
8753path.quadTo(50.8005f, 21.743f, 50.8555f, 22.2623f);
8754path.conicTo(50.9607f, 23.2568f, 49.9663f, 23.3621f, 0.707107f);
8755path.conicTo(48.9719f, 23.4673f, 48.8666f, 22.4729f, 0.707107f);
8756path.quadTo(48.8158f, 21.9935f, 48.7458f, 21.5165f);
8757path.conicTo(48.6007f, 20.5271f, 49.5901f, 20.382f, 0.707107f);
8758path.conicTo(50.5795f, 20.2368f, 50.7247f, 21.2262f, 0.707107f);
8759path.close();
8760path.moveTo(50.9916f, 24.3398f);
8761path.quadTo(51.0048f, 24.858f, 50.9973f, 25.3762f);
8762path.conicTo(50.9828f, 26.3761f, 49.9829f, 26.3616f, 0.707107f);
8763path.conicTo(48.983f, 26.3472f, 48.9975f, 25.3473f, 0.707107f);
8764path.quadTo(49.0044f, 24.8687f, 48.9923f, 24.3906f);
8765path.conicTo(48.9669f, 23.3909f, 49.9665f, 23.3655f, 0.707107f);
8766path.conicTo(50.9662f, 23.3401f, 50.9916f, 24.3398f, 0.707107f);
8767path.close();
8768path.moveTo(50.8819f, 27.4753f);
8769path.quadTo(50.8323f, 27.9943f, 50.7618f, 28.511f);
8770path.conicTo(50.6268f, 29.5018f, 49.636f, 29.3668f, 0.707107f);
8771path.conicTo(48.6451f, 29.2317f, 48.7802f, 28.2409f, 0.707107f);
8772path.quadTo(48.8452f, 27.7641f, 48.891f, 27.2849f);
8773path.conicTo(48.9862f, 26.2894f, 49.9816f, 26.3846f, 0.707107f);
8774path.conicTo(50.9771f, 26.4798f, 50.8819f, 27.4753f, 0.707107f);
8775path.close();
8776path.moveTo(50.4023f, 30.5429f);
8777path.quadTo(50.2856f, 31.0775f, 50.1465f, 31.607f);
8778path.conicTo(49.8924f, 32.5742f, 48.9252f, 32.3201f, 0.707107f);
8779path.conicTo(47.9581f, 32.066f, 48.2122f, 31.0988f, 0.707107f);
8780path.quadTo(48.3405f, 30.6102f, 48.4483f, 30.1165f);
8781path.conicTo(48.6614f, 29.1395f, 49.6385f, 29.3527f, 0.707107f);
8782path.conicTo(50.6155f, 29.5659f, 50.4023f, 30.5429f, 0.707107f);
8783path.close();
8784path.moveTo(49.5104f, 33.674f);
8785path.quadTo(49.3329f, 34.1756f, 49.1351f, 34.6695f);
8786path.conicTo(48.7632f, 35.5977f, 47.8349f, 35.2258f, 0.707107f);
8787path.conicTo(46.9066f, 34.854f, 47.2785f, 33.9257f, 0.707107f);
8788path.quadTo(47.4612f, 33.4697f, 47.625f, 33.0067f);
8789path.conicTo(47.9587f, 32.064f, 48.9014f, 32.3977f, 0.707107f);
8790path.conicTo(49.8441f, 32.7313f, 49.5104f, 33.674f, 0.707107f);
8791path.close();
8792path.moveTo(48.281f, 36.5756f);
8793path.quadTo(48.053f, 37.0342f, 47.8071f, 37.4835f);
8794path.conicTo(47.3269f, 38.3607f, 46.4497f, 37.8805f, 0.707107f);
8795path.conicTo(45.5725f, 37.4004f, 46.0527f, 36.5232f, 0.707107f);
8796path.quadTo(46.2797f, 36.1085f, 46.4901f, 35.6852f);
8797path.conicTo(46.9353f, 34.7898f, 47.8307f, 35.235f, 0.707107f);
8798path.conicTo(48.7262f, 35.6802f, 48.281f, 36.5756f, 0.707107f);
8799path.close();
8800path.moveTo(46.7777f, 39.2033f);
8801path.quadTo(46.6677f, 39.3719f, 46.555f, 39.539f);
8802path.quadTo(46.3865f, 39.7888f, 46.2121f, 40.0349f);
8803path.conicTo(45.6338f, 40.8507f, 44.818f, 40.2724f, 0.707107f);
8804path.conicTo(44.0021f, 39.6942f, 44.5804f, 38.8783f, 0.707107f);
8805path.quadTo(44.7413f, 38.6513f, 44.8969f, 38.4206f);
8806path.quadTo(45.0008f, 38.2665f, 45.1025f, 38.1107f);
8807path.conicTo(45.6488f, 37.2731f, 46.4864f, 37.8194f, 0.707107f);
8808path.conicTo(47.324f, 38.3657f, 46.7777f, 39.2033f, 0.707107f);
8809path.close();
8810path.moveTo(44.9527f, 41.6701f);
8811path.quadTo(44.6177f, 42.0709f, 44.267f, 42.458f);
8812path.conicTo(43.5955f, 43.1991f, 42.8545f, 42.5276f, 0.707107f);
8813path.conicTo(42.1135f, 41.8561f, 42.7849f, 41.1151f, 0.707107f);
8814path.quadTo(43.1087f, 40.7578f, 43.4178f, 40.3878f);
8815path.conicTo(44.059f, 39.6203f, 44.8264f, 40.2615f, 0.707107f);
8816path.conicTo(45.5938f, 40.9027f, 44.9527f, 41.6701f, 0.707107f);
8817path.close();
8818path.moveTo(42.7884f, 43.9624f);
8819path.quadTo(42.4083f, 44.319f, 42.014f, 44.6602f);
8820path.conicTo(41.2578f, 45.3146f, 40.6034f, 44.5585f, 0.707107f);
8821path.conicTo(39.949f, 43.8023f, 40.7052f, 43.1479f, 0.707107f);
8822path.quadTo(41.0691f, 42.833f, 41.4201f, 42.5037f);
8823path.conicTo(42.1494f, 41.8196f, 42.8336f, 42.5489f, 0.707107f);
8824path.conicTo(43.5178f, 43.2782f, 42.7884f, 43.9624f, 0.707107f);
8825path.close();
8826path.moveTo(40.3892f, 45.9564f);
8827path.quadTo(39.9683f, 46.2655f, 39.5354f, 46.5574f);
8828path.conicTo(38.7062f, 47.1165f, 38.1472f, 46.2873f, 0.707107f);
8829path.conicTo(37.5881f, 45.4582f, 38.4173f, 44.8992f, 0.707107f);
8830path.quadTo(38.8169f, 44.6297f, 39.2054f, 44.3444f);
8831path.conicTo(40.0114f, 43.7525f, 40.6033f, 44.5585f, 0.707107f);
8832path.conicTo(41.1952f, 45.3645f, 40.3892f, 45.9564f, 0.707107f);
8833path.close();
8834path.moveTo(37.7543f, 47.6568f);
8835path.quadTo(37.2977f, 47.9138f, 36.8312f, 48.1522f);
8836path.conicTo(35.9407f, 48.6072f, 35.4857f, 47.7167f, 0.707107f);
8837path.conicTo(35.0306f, 46.8263f, 35.9211f, 46.3712f, 0.707107f);
8838path.quadTo(36.3518f, 46.1511f, 36.7732f, 45.9139f);
8839path.conicTo(37.6446f, 45.4234f, 38.1351f, 46.2948f, 0.707107f);
8840path.conicTo(38.6257f, 47.1662f, 37.7543f, 47.6568f, 0.707107f);
8841path.close();
8842path.moveTo(34.9311f, 49.0286f);
8843path.quadTo(34.4488f, 49.2279f, 33.9589f, 49.4077f);
8844path.conicTo(33.0202f, 49.7523f, 32.6756f, 48.8136f, 0.707107f);
8845path.conicTo(32.331f, 47.8748f, 33.2698f, 47.5302f, 0.707107f);
8846path.quadTo(33.722f, 47.3642f, 34.1672f, 47.1802f);
8847path.conicTo(35.0914f, 46.7983f, 35.4733f, 47.7224f, 0.707107f);
8848path.conicTo(35.8553f, 48.6466f, 34.9311f, 49.0286f, 0.707107f);
8849path.close();
8850path.moveTo(31.9824f, 50.0449f);
8851path.quadTo(31.4774f, 50.1857f, 30.9668f, 50.3061f);
8852path.conicTo(29.9935f, 50.5355f, 29.764f, 49.5622f, 0.707107f);
8853path.conicTo(29.5346f, 48.5889f, 30.5079f, 48.3594f, 0.707107f);
8854path.quadTo(30.9789f, 48.2484f, 31.4453f, 48.1184f);
8855path.conicTo(32.4086f, 47.8498f, 32.6771f, 48.8131f, 0.707107f);
8856path.conicTo(32.9457f, 49.7763f, 31.9824f, 50.0449f, 0.707107f);
8857path.close();
8858path.moveTo(28.899f, 50.706f);
8859path.quadTo(28.3834f, 50.7842f, 27.8652f, 50.8416f);
8860path.conicTo(26.8713f, 50.9518f, 26.7611f, 49.9579f, 0.707107f);
8861path.conicTo(26.6509f, 48.964f, 27.6448f, 48.8538f, 0.707107f);
8862path.quadTo(28.1231f, 48.8008f, 28.599f, 48.7286f);
8863path.conicTo(29.5877f, 48.5786f, 29.7377f, 49.5673f, 0.707107f);
8864path.conicTo(29.8877f, 50.556f, 28.899f, 50.706f, 0.707107f);
8865path.close();
8866path.moveTo(25.8106f, 50.9874f);
8867path.quadTo(25.6321f, 50.9929f, 25.4537f, 50.996f);
8868path.conicTo(24.4539f, 51.0135f, 24.4365f, 50.0136f, 0.707115f);
8869path.lineTo(24.4251f, 49.3638f);
8870path.conicTo(24.4077f, 48.364f, 25.4075f, 48.3465f, 0.707107f);
8871path.conicTo(26.4073f, 48.3291f, 26.4248f, 49.3289f, 0.707107f);
8872path.lineTo(26.4361f, 49.9787f);
8873path.lineTo(25.4363f, 49.9962f);
8874path.lineTo(25.4189f, 48.9963f);
8875path.quadTo(25.5836f, 48.9935f, 25.7482f, 48.9883f);
8876path.conicTo(26.7477f, 48.9571f, 26.7789f, 49.9567f, 0.707107f);
8877path.conicTo(26.8101f, 50.9562f, 25.8106f, 50.9874f, 0.707107f);
8878path.close();
8879path.moveTo(24.3902f, 47.3641f);
8880path.lineTo(24.3728f, 46.3643f);
8881path.conicTo(24.3553f, 45.3645f, 25.3551f, 45.347f, 0.707107f);
8882path.conicTo(26.355f, 45.3295f, 26.3724f, 46.3294f, 0.707107f);
8883path.lineTo(26.3899f, 47.3292f);
8884path.conicTo(26.4074f, 48.3291f, 25.4075f, 48.3465f, 0.707107f);
8885path.conicTo(24.4077f, 48.364f, 24.3902f, 47.3641f, 0.707107f);
8886path.close();
8887path.moveTo(24.3378f, 44.3646f);
8888path.lineTo(24.3204f, 43.3648f);
8889path.conicTo(24.3029f, 42.3649f, 25.3028f, 42.3475f, 0.707107f);
8890path.conicTo(26.3026f, 42.33f, 26.3201f, 43.3298f, 0.707107f);
8891path.lineTo(26.3375f, 44.3297f);
8892path.conicTo(26.355f, 45.3295f, 25.3551f, 45.347f, 0.707107f);
8893path.conicTo(24.3553f, 45.3645f, 24.3378f, 44.3646f, 0.707107f);
8894path.close();
8895path.moveTo(24.2855f, 41.3651f);
8896path.lineTo(24.268f, 40.3652f);
8897path.conicTo(24.2506f, 39.3654f, 25.2504f, 39.3479f, 0.707107f);
8898path.conicTo(26.2503f, 39.3305f, 26.2677f, 40.3303f, 0.707107f);
8899path.lineTo(26.2852f, 41.3302f);
8900path.conicTo(26.3026f, 42.33f, 25.3028f, 42.3475f, 0.707107f);
8901path.conicTo(24.3029f, 42.3649f, 24.2855f, 41.3651f, 0.707107f);
8902path.close();
8903path.moveTo(24.2331f, 38.3655f);
8904path.lineTo(24.2157f, 37.3657f);
8905path.conicTo(24.1982f, 36.3658f, 25.1981f, 36.3484f, 0.707107f);
8906path.conicTo(26.1979f, 36.3309f, 26.2154f, 37.3308f, 0.707107f);
8907path.lineTo(26.2328f, 38.3306f);
8908path.conicTo(26.2503f, 39.3305f, 25.2504f, 39.3479f, 0.707107f);
8909path.conicTo(24.2506f, 39.3654f, 24.2331f, 38.3655f, 0.707107f);
8910path.close();
8911path.moveTo(24.1808f, 35.366f);
8912path.lineTo(24.1633f, 34.3661f);
8913path.conicTo(24.1459f, 33.3663f, 25.1457f, 33.3488f, 0.707107f);
8914path.conicTo(26.1456f, 33.3314f, 26.163f, 34.3312f, 0.707107f);
8915path.lineTo(26.1805f, 35.3311f);
8916path.conicTo(26.1979f, 36.3309f, 25.1981f, 36.3484f, 0.707107f);
8917path.conicTo(24.1982f, 36.3658f, 24.1808f, 35.366f, 0.707107f);
8918path.close();
8919path.moveTo(24.1284f, 32.3664f);
8920path.lineTo(24.111f, 31.3666f);
8921path.conicTo(24.0935f, 30.3667f, 25.0934f, 30.3493f, 0.707107f);
8922path.conicTo(26.0932f, 30.3318f, 26.1107f, 31.3317f, 0.707107f);
8923path.lineTo(26.1281f, 32.3315f);
8924path.conicTo(26.1456f, 33.3314f, 25.1457f, 33.3488f, 0.707107f);
8925path.conicTo(24.1459f, 33.3663f, 24.1284f, 32.3664f, 0.707107f);
8926path.close();
8927path.moveTo(24.0761f, 29.3669f);
8928path.lineTo(24.0586f, 28.367f);
8929path.conicTo(24.0412f, 27.3672f, 25.041f, 27.3497f, 0.707107f);
8930path.conicTo(26.0409f, 27.3323f, 26.0583f, 28.3321f, 0.707107f);
8931path.lineTo(26.0758f, 29.332f);
8932path.conicTo(26.0932f, 30.3318f, 25.0934f, 30.3493f, 0.707107f);
8933path.conicTo(24.0935f, 30.3667f, 24.0761f, 29.3669f, 0.707107f);
8934path.close();
8935path.moveTo(24.0237f, 26.3673f);
8936path.lineTo(24.0063f, 25.3675f);
8937path.conicTo(23.9888f, 24.3676f, 24.9887f, 24.3502f, 0.707107f);
8938path.conicTo(25.9885f, 24.3327f, 26.006f, 25.3326f, 0.707107f);
8939path.lineTo(26.0234f, 26.3324f);
8940path.conicTo(26.0409f, 27.3323f, 25.041f, 27.3497f, 0.707107f);
8941path.conicTo(24.0412f, 27.3672f, 24.0237f, 26.3673f, 0.707107f);
8942path.close();
8943 testPathOpFail(reporter, path, path1, kXOR_SkPathOp, filename);
8944}
8945
Cary Clarkcadc5062018-08-06 17:24:04 -04008946static void op_1(skiatest::Reporter* reporter, const char* filename) {
8947 SkPath path;
8948 path.setFillType((SkPath::FillType) 0);
8949path.setFillType(SkPath::kWinding_FillType);
8950path.moveTo(SkBits2Float(0x15e80300), SkBits2Float(0x400004dc)); // 9.37088e-26f, 2.0003f
8951path.quadTo(SkBits2Float(0xe56c206c), SkBits2Float(0x646c5f40), SkBits2Float(0x6c80885e), SkBits2Float(0xb4bc576c)); // -6.96923e+22f, 1.74412e+22f, 1.24309e+27f, -3.50813e-07f
8952
8953 SkPath path1(path);
8954 path.reset();
8955 path.setFillType((SkPath::FillType) 0);
8956path.setFillType(SkPath::kWinding_FillType);
8957path.moveTo(SkBits2Float(0x1b000010), SkBits2Float(0x6e5a5a1b)); // 1.05879e-22f, 1.68942e+28f
8958path.quadTo(SkBits2Float(0xef646464), SkBits2Float(0xefefefef), SkBits2Float(0x000000ef), SkBits2Float(0x1bb4bc00)); // -7.06839e+28f, -1.48514e+29f, 3.3491e-43f, 2.99e-22f
8959
8960 SkPath path2(path);
8961 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
8962}
8963
8964
8965static void op_2(skiatest::Reporter* reporter, const char* filename) {
8966 SkPath path;
8967 path.setFillType((SkPath::FillType) 1);
8968path.setFillType(SkPath::kEvenOdd_FillType);
8969path.moveTo(SkBits2Float(0xeee3ef57), SkBits2Float(0xef6300f8)); // -3.52712e+28f, -7.02543e+28f
8970path.quadTo(SkBits2Float(0xeeee9c6e), SkBits2Float(0xef609993), SkBits2Float(0x00000000), SkBits2Float(0x6e5a5a1b)); // -3.69233e+28f, -6.95103e+28f, 0, 1.68942e+28f
8971path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8972path.quadTo(SkBits2Float(0xe56c206c), SkBits2Float(0x646c5f40), SkBits2Float(0x6c80885e), SkBits2Float(0x00000000)); // -6.96923e+22f, 1.74412e+22f, 1.24309e+27f, 0
8973path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8974path.quadTo(SkBits2Float(0xeeda2c5a), SkBits2Float(0xef6533a7), SkBits2Float(0xeee3ef57), SkBits2Float(0xef6300f8)); // -3.37607e+28f, -7.09345e+28f, -3.52712e+28f, -7.02543e+28f
8975path.close();
8976
8977 SkPath path1(path);
8978 path.reset();
8979 path.setFillType((SkPath::FillType) 0);
8980path.setFillType(SkPath::kWinding_FillType);
8981path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8982path.lineTo(SkBits2Float(0x1b1b1b00), SkBits2Float(0x1b5a5a1b)); // 1.283e-22f, 1.80617e-22f
8983
8984 SkPath path2(path);
8985 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
8986}
8987
8988
8989static void op_3(skiatest::Reporter* reporter, const char* filename) {
8990 SkPath path;
8991 path.setFillType((SkPath::FillType) 1);
8992path.setFillType(SkPath::kEvenOdd_FillType);
8993path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6e5a5a1b)); // 0, 1.68942e+28f
8994path.quadTo(SkBits2Float(0xeeee9c6e), SkBits2Float(0xef609993), SkBits2Float(0xeee3ef57), SkBits2Float(0xef6300f8)); // -3.69233e+28f, -6.95103e+28f, -3.52712e+28f, -7.02543e+28f
8995path.quadTo(SkBits2Float(0xeeda2c5a), SkBits2Float(0xef6533a7), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // -3.37607e+28f, -7.09345e+28f, 0, 0
8996path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6e5a5a1b)); // 0, 1.68942e+28f
8997path.close();
8998path.moveTo(SkBits2Float(0x6c80885e), SkBits2Float(0x00000000)); // 1.24309e+27f, 0
8999path.quadTo(SkBits2Float(0xe56c206c), SkBits2Float(0x646c5f40), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // -6.96923e+22f, 1.74412e+22f, 0, 0
9000path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9001path.lineTo(SkBits2Float(0x6c80885e), SkBits2Float(0x00000000)); // 1.24309e+27f, 0
9002path.close();
9003
9004 SkPath path1(path);
9005 path.reset();
9006 path.setFillType((SkPath::FillType) 0);
9007path.setFillType(SkPath::kWinding_FillType);
9008
9009 SkPath path2(path);
9010 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
9011}
9012
9013static void op_4(skiatest::Reporter* reporter, const char* filename) {
9014 SkPath patha, pathb;
9015
9016 patha.setFillType(SkPath::kEvenOdd_FillType);
9017 patha.moveTo(SkBits2Float(0x40d7ea90), SkBits2Float(0x3fa58930)); // 6.74738f, 1.29325f
9018 patha.lineTo(SkBits2Float(0x40ad3d93), SkBits2Float(0x3fa58930)); // 5.41377f, 1.29325f
9019 patha.lineTo(SkBits2Float(0x40ad3d93), SkBits2Float(0x3edba819)); // 5.41377f, 0.429017f
9020 patha.lineTo(SkBits2Float(0x40fc41e0), SkBits2Float(0x3edba819)); // 7.88304f, 0.429017f
9021 patha.lineTo(SkBits2Float(0x40fc41e0), SkBits2Float(0x3f3b7c94)); // 7.88304f, 0.73237f
9022 patha.lineTo(SkBits2Float(0x40d7ea90), SkBits2Float(0x3f3b7c94)); // 6.74738f, 0.73237f
9023 patha.lineTo(SkBits2Float(0x40d7ea90), SkBits2Float(0x3fa58930)); // 6.74738f, 1.29325f
9024 patha.close();
9025
9026 pathb.setFillType(SkPath::kEvenOdd_FillType);
9027 pathb.moveTo(SkBits2Float(0x40d7ea89), SkBits2Float(0x409a721d)); // 6.74738f, 4.82643f
9028 pathb.lineTo(SkBits2Float(0x411a9d73), SkBits2Float(0x409a721d)); // 9.66344f, 4.82643f
9029 pathb.lineTo(SkBits2Float(0x411a9d73), SkBits2Float(0x3f3b7c9a)); // 9.66344f, 0.73237f
9030 pathb.lineTo(SkBits2Float(0x40d7ea89), SkBits2Float(0x3f3b7c9a)); // 6.74738f, 0.73237f
9031 pathb.lineTo(SkBits2Float(0x40d7ea89), SkBits2Float(0x409a721d)); // 6.74738f, 4.82643f
9032 pathb.close();
9033 testPathOp(reporter, patha, pathb, kDifference_SkPathOp, filename);
9034}
9035
Yuqian Li3154a532017-09-06 13:33:30 -04009036static void (*skipTest)(skiatest::Reporter* , const char* filename) = 0;
9037static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0;
9038static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0;
9039
9040#define TEST(name) { name, #name }
9041
9042static struct TestDesc tests[] = {
Cary Clarkcadc5062018-08-06 17:24:04 -04009043 TEST(op_4),
9044 TEST(op_1),
9045 TEST(op_2),
9046 TEST(op_3),
Cary Clark2587f412018-07-24 12:40:10 -04009047 TEST(grshapearcs1),
Cary Clark1d314432018-07-10 10:57:54 -04009048 TEST(filinmangust14),
Cary Clark1bb47df2018-06-18 08:53:00 -04009049 TEST(testRect1_u),
Cary Clark3a4a3212018-06-06 15:22:08 -04009050 TEST(halbug),
Cary Clark22582502017-12-13 14:56:53 -05009051 TEST(seanbug),
Yuqian Li3154a532017-09-06 13:33:30 -04009052 TEST(android1),
9053 TEST(bug5240),
9054 TEST(circlesOp4),
9055 TEST(loop17),
9056 TEST(cubicOp158),
9057 TEST(loops_i1),
9058 TEST(loops_i2),
9059 TEST(loops_i3),
9060 TEST(loops_i4),
9061 TEST(loops_i5),
9062 TEST(loops_i6),
9063 TEST(cubics_d3),
9064 TEST(cubics_o),
9065 TEST(cubics_d2),
9066 TEST(cubics_d),
9067 TEST(dean2),
9068 TEST(fuzzX_392),
9069 TEST(crbug_526025),
9070 TEST(fuzz38),
9071 TEST(cubics44d),
9072 TEST(cubics45u),
9073 TEST(loops61i),
9074 TEST(loops62i),
9075 TEST(loops63i),
9076 TEST(loops58iAsQuads),
9077 TEST(cubics41d),
9078 TEST(loops59iasQuads),
9079 TEST(loops59i),
9080 TEST(loops44i),
9081 TEST(loops45i),
9082 TEST(loops46i),
9083 TEST(loops47i),
9084 TEST(loops48i),
9085 TEST(loops49i),
9086 TEST(loops50i),
9087 TEST(loops51i),
9088 TEST(loops52i),
9089 TEST(loops53i),
9090 TEST(loops54i),
9091 TEST(loops55i),
9092 TEST(loops56i),
9093 TEST(loops57i),
9094 TEST(loops58i),
9095 TEST(loops33iMod),
9096 TEST(loops33iAsQuads),
9097 TEST(loops33i),
9098 TEST(loops40i),
9099 TEST(loops40iAsQuads),
9100 TEST(loops39i),
9101 TEST(loops38i),
9102 TEST(loops37i),
9103 TEST(loops36i),
9104 TEST(loops35i),
9105 TEST(loops34i),
9106 TEST(loops32i),
9107 TEST(loops31i),
9108 TEST(loops30i),
9109 TEST(loops29i),
9110 TEST(loops28i),
9111 TEST(loops27i),
9112 TEST(loops26i),
9113 TEST(loops25i),
9114 TEST(loops24i),
9115 TEST(loops23i),
9116 TEST(loops22i),
9117 TEST(loops21i),
9118 TEST(loops20i),
9119 TEST(cubics20d),
9120 TEST(cubics6d),
9121 TEST(cubics7d),
9122 TEST(cubics8d),
9123 TEST(cubics9d),
9124 TEST(cubics10u),
9125 TEST(cubics11i),
9126 TEST(cubics12d),
9127 TEST(cubics13d),
9128 TEST(cubics14d),
9129 TEST(cubics15d),
9130 TEST(cubics16i),
9131 TEST(cubics17d),
9132 TEST(cubics18d),
9133 TEST(cubics19d),
9134 TEST(cubicOp157),
9135 TEST(cubicOp142),
9136 TEST(loops4i),
9137 TEST(quadRect1),
9138 TEST(quadRect2),
9139 TEST(quadRect3),
9140 TEST(quadRect4),
9141 TEST(quadRect5),
9142 TEST(quadRect6),
9143 TEST(cubicOp141),
9144 TEST(cubicOp58d),
9145 TEST(loops5i),
9146 TEST(cubicOp140),
9147 TEST(cubicOp139),
9148 TEST(cubics138),
9149 TEST(cubics137),
9150 TEST(cubicOp136a),
9151 TEST(cubicOp136),
9152 TEST(cubicOp135),
9153 TEST(cubicOp134),
9154 TEST(cubicOp133),
9155 TEST(loop12),
9156 TEST(cubicOp132),
9157 TEST(loop11),
9158 TEST(loop10),
9159 TEST(circlesOp3),
9160 TEST(loop9),
9161 TEST(loop8),
9162 TEST(rects5),
9163 TEST(loop7),
9164 TEST(cubicOp130a),
9165 TEST(rRect1x),
9166 TEST(circlesOp2),
9167 TEST(circlesOp1),
9168 TEST(cubicOp131),
9169 TEST(cubicOp130),
9170 TEST(cubicOp129),
9171 TEST(cubicOp128),
9172 TEST(cubicOp127),
9173 TEST(cubicOp126),
9174 TEST(cubicOp125),
9175 TEST(cubicOp124),
9176 TEST(loop6),
9177 TEST(loop5),
9178 TEST(cubicOp123),
9179 TEST(cubicOp122),
9180 TEST(cubicOp121),
9181 TEST(cubicOp120),
9182 TEST(cubicOp119),
9183 TEST(loop4),
9184 TEST(loop3),
9185 TEST(loop2),
9186 TEST(loop1asQuad),
9187 TEST(loop1),
9188 TEST(issue3517),
9189 TEST(cubicOp118),
9190 TEST(cubicOp117),
9191 TEST(cubicOp116),
9192 TEST(testRect2),
9193 TEST(testRect1),
9194 TEST(cubicOp115),
9195 TEST(issue2753),
9196 TEST(cubicOp114),
9197 TEST(issue2808),
9198 TEST(cubicOp114asQuad),
9199 TEST(rects4),
9200 TEST(rects3),
9201 TEST(rects2),
9202 TEST(rects1),
9203 TEST(issue2540),
9204 TEST(issue2504),
9205 TEST(kari1),
9206 TEST(quadOp10i),
9207 TEST(cubicOp113),
9208 TEST(skpcarrot_is24),
9209 TEST(issue1417),
9210 TEST(cubicOp112),
9211 TEST(skpadspert_net23),
9212 TEST(skpadspert_de11),
9213 TEST(findFirst1),
9214 TEST(xOp2i),
9215 TEST(xOp3i),
9216 TEST(xOp1u),
9217 TEST(xOp1i),
9218 TEST(cubicOp111),
9219 TEST(cubicOp110),
9220 TEST(cubicOp109),
9221 TEST(cubicOp108),
9222 TEST(cubicOp107),
9223 TEST(cubicOp106),
9224 TEST(cubicOp105),
9225 TEST(cubicOp104),
9226 TEST(cubicOp103),
9227 TEST(cubicOp102),
9228 TEST(cubicOp101),
9229 TEST(cubicOp100),
9230 TEST(cubicOp99),
9231 TEST(issue1435),
9232 TEST(cubicOp98x),
9233 TEST(cubicOp97x),
9234 TEST(skpcarpetplanet_ru22),
9235 TEST(cubicOp96d),
9236 TEST(cubicOp95u),
9237 TEST(skpadbox_lt15),
9238 TEST(skpagentxsites_com55),
9239 TEST(skpadventistmission_org572),
9240 TEST(skpadoption_org196),
9241 TEST(skpbambootheme_com12),
9242 TEST(skpbakosoft_com10),
9243 TEST(skpakmmos_ru100),
9244 TEST(skpbangalorenest_com4),
9245 TEST(skpbingoentertainment_net189),
9246 TEST(skpbestred_ru37),
9247 TEST(skpbenzoteh_ru152),
9248 TEST(skpcamcorder_kz21),
9249 TEST(skpcaffelavazzait_com_ua21),
9250 TEST(skpcarrefour_ro62),
9251 TEST(skpcavablar_net563),
9252 TEST(skpinsomnia_gr72),
9253 TEST(skpadbox_lt8),
9254 TEST(skpact_com43),
9255 TEST(skpacesoftech_com47),
9256 TEST(skpabcspark_ca103),
9257 TEST(cubicOp94u),
9258 TEST(cubicOp93d),
9259 TEST(cubicOp92i),
9260 TEST(skpadithya_putr4_blogspot_com551),
9261 TEST(skpadindex_de4),
9262 TEST(skpaiaigames_com870),
9263 TEST(skpaaalgarve_org53),
9264 TEST(skpkkiste_to716),
9265 TEST(cubicOp91u),
9266 TEST(cubicOp90u),
9267 TEST(cubicOp89u),
9268 TEST(cubicOp88u),
9269 TEST(cubicOp87u),
9270 TEST(cubicOp86i),
9271 TEST(loopEdge2),
9272 TEST(loopEdge1),
9273 TEST(rectOp3x),
9274 TEST(rectOp2i),
9275 TEST(rectOp1i),
9276 TEST(issue1418b),
9277 TEST(cubicOp85i),
9278 TEST(issue1418),
9279 TEST(skpkkiste_to98),
9280 TEST(skpahrefs_com29),
9281 TEST(cubicOp85d),
9282 TEST(skpahrefs_com88),
9283 TEST(skphealth_com76),
9284 TEST(skpancestry_com1),
9285 TEST(skpbyte_com1),
9286 TEST(skpeldorado_com_ua1),
9287 TEST(skp96prezzi1),
9288 TEST(skpClip2),
9289 TEST(skpClip1),
9290 TEST(cubicOp84d),
9291 TEST(cubicOp83i),
9292 TEST(cubicOp82i),
9293 TEST(cubicOp81d),
9294 TEST(cubicOp80i),
9295 TEST(cubicOp79u),
9296 TEST(cubicOp78u),
9297 TEST(cubicOp77i),
9298 TEST(cubicOp76u),
9299 TEST(cubicOp75d),
9300 TEST(cubicOp74d),
9301 TEST(cubicOp73d),
9302 TEST(cubicOp72i),
9303 TEST(cubicOp71d),
9304 TEST(skp5),
9305 TEST(skp4),
9306 TEST(skp3),
9307 TEST(skp2),
9308 TEST(skp1),
9309 TEST(rRect1),
9310 TEST(cubicOp70d),
9311 TEST(cubicOp69d),
9312 TEST(cubicOp68u),
9313 TEST(cubicOp67u),
9314 TEST(cubicOp66u),
9315 TEST(rectOp1d),
9316 TEST(cubicOp65d),
9317 TEST(cubicOp64d),
9318 TEST(cubicOp63d),
9319 TEST(cubicOp62d),
9320 TEST(cubicOp61d),
9321 TEST(cubicOp60d),
9322 TEST(cubicOp59d),
9323 TEST(cubicOp57d),
9324 TEST(cubicOp56d),
9325 TEST(cubicOp55d),
9326 TEST(cubicOp54d),
9327 TEST(cubicOp53d),
9328 TEST(cubicOp52d),
9329 TEST(cubicOp51d),
9330 TEST(cubicOp50d),
9331 TEST(cubicOp49d),
9332 TEST(cubicOp48d),
9333 TEST(cubicOp47d),
9334 TEST(cubicOp46d),
9335 TEST(cubicOp45d),
9336 TEST(cubicOp44d),
9337 TEST(cubicOp43d),
9338 TEST(cubicOp42d),
9339 TEST(cubicOp41i),
9340 TEST(cubicOp40d),
9341 TEST(cubicOp39d),
9342 TEST(cubicOp38d),
9343 TEST(cubicOp37d),
9344 TEST(cubicOp36u),
9345 TEST(cubicOp35d),
9346 TEST(cubicOp34d),
9347 TEST(cubicOp33i),
9348 TEST(cubicOp32d),
9349 TEST(cubicOp31d),
9350 TEST(cubicOp31x),
9351 TEST(cubicOp31u),
9352 TEST(cubicOp30d),
9353 TEST(cubicOp29d),
9354 TEST(cubicOp28u),
9355 TEST(cubicOp27d),
9356 TEST(cubicOp26d),
9357 TEST(cubicOp25i),
9358 TEST(testOp8d),
9359 TEST(testDiff1),
9360 TEST(testIntersect1),
9361 TEST(testUnion1),
9362 TEST(testXor1),
9363 TEST(testDiff2),
9364 TEST(testIntersect2),
9365 TEST(testUnion2),
9366 TEST(testXor2),
9367 TEST(testOp1d),
9368 TEST(testOp2d),
9369 TEST(testOp3d),
9370 TEST(testOp1u),
9371 TEST(testOp4d),
9372 TEST(testOp5d),
9373 TEST(testOp6d),
9374 TEST(testOp7d),
9375 TEST(testOp2u),
9376
9377 TEST(cubicOp24d),
9378 TEST(cubicOp23d),
9379 TEST(cubicOp22d),
9380 TEST(cubicOp21d),
9381 TEST(cubicOp20d),
9382 TEST(cubicOp19i),
9383 TEST(cubicOp18d),
9384 TEST(cubicOp17d),
9385 TEST(cubicOp16d),
9386 TEST(cubicOp15d),
9387 TEST(cubicOp14d),
9388 TEST(cubicOp13d),
9389 TEST(cubicOp12d),
9390 TEST(cubicOp11d),
9391 TEST(cubicOp10d),
9392 TEST(cubicOp1i),
9393 TEST(cubicOp9d),
9394 TEST(quadOp9d),
9395 TEST(lineOp9d),
9396 TEST(cubicOp8d),
9397 TEST(cubicOp7d),
9398 TEST(cubicOp6d),
9399 TEST(cubicOp5d),
9400 TEST(cubicOp3d),
9401 TEST(cubicOp2d),
9402 TEST(cubicOp1d),
9403};
9404
9405static const size_t testCount = SK_ARRAY_COUNT(tests);
9406
9407static struct TestDesc subTests[] = {
9408 TEST(loops47i),
9409 TEST(loops61i),
9410 TEST(loops62i),
9411 TEST(issue3517),
9412};
9413
9414static const size_t subTestCount = SK_ARRAY_COUNT(subTests);
9415
9416static void (*firstSubTest)(skiatest::Reporter* , const char* filename) = nullptr;
9417
9418static bool runSubTests = false;
9419static bool runSubTestsFirst = true;
9420static bool runReverse = false;
9421
9422DEF_TEST(PathOpsOp, reporter) {
9423#if DEBUG_SHOW_TEST_NAME
9424 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
9425#endif
9426 if (runSubTests && runSubTestsFirst) {
9427 RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
9428 }
9429 RunTestSet(reporter, tests, testCount, firstTest, skipTest, stopTest, runReverse);
9430 if (runSubTests && !runSubTestsFirst) {
9431 RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
9432 }
9433}
9434
Cary Clarkafca4d62017-12-01 15:23:00 -05009435static void fuzz767834(skiatest::Reporter* reporter, const char* filename) {
9436 SkPath one;
9437 SkPath two;
9438one.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9439
9440one.conicTo(SkBits2Float(0x02807252), SkBits2Float(0xee23000a), SkBits2Float(0x00000000), SkBits2Float(0x0fe00008), SkBits2Float(0x52526831)); // 1.88735e-37f, -1.26115e+28f, 0, 2.20881e-29f, 2.25923e+11f
9441
9442one.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
9443
9444one.quadTo(SkBits2Float(0x52727272), SkBits2Float(0x52595252), SkBits2Float(0x8e460900), SkBits2Float(0x7272db72)); // 2.60326e+11f, 2.33347e+11f, -2.44097e-30f, 4.81028e+30f
9445
9446one.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9447
9448one.close();
9449
9450one.moveTo(SkBits2Float(0x72000400), SkBits2Float(0x72727272)); // 2.53561e+30f, 4.80216e+30f
9451
9452one.quadTo(SkBits2Float(0x60727272), SkBits2Float(0x72727272), SkBits2Float(0x2a527272), SkBits2Float(0x72525252)); // 6.98806e+19f, 4.80216e+30f, 1.86915e-13f, 4.16585e+30f
9453
9454one.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
9455
9456one.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
9457
9458one.lineTo(SkBits2Float(0x72000400), SkBits2Float(0x72727272)); // 2.53561e+30f, 4.80216e+30f
9459
9460one.close();
9461
9462one.moveTo(SkBits2Float(0x8e524603), SkBits2Float(0x72727272)); // -2.59182e-30f, 4.80216e+30f
9463
9464one.close();
9465
9466one.moveTo(SkBits2Float(0x8e524603), SkBits2Float(0x72727272)); // -2.59182e-30f, 4.80216e+30f
9467
9468one.quadTo(SkBits2Float(0x72725d72), SkBits2Float(0x52008072), SkBits2Float(0x00016552), SkBits2Float(0x72724000)); // 4.80053e+30f, 1.37978e+11f, 1.28182e-40f, 4.79826e+30f
9469
9470one.quadTo(SkBits2Float(0x00807272), SkBits2Float(0x392a5b25), SkBits2Float(0x72685768), SkBits2Float(0x000000ff)); // 1.1796e-38f, 0.000162464f, 4.602e+30f, 3.57331e-43f
9471
9472one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9473
9474one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0xd2008072), SkBits2Float(0x8e460900), SkBits2Float(0x72727072)); // 4.80216e+30f, -1.37978e+11f, -2.44097e-30f, 4.802e+30f
9475
9476one.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
9477
9478one.quadTo(SkBits2Float(0x005252ec), SkBits2Float(0x72000400), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 7.56026e-39f, 2.53561e+30f, 4.80216e+30f, 4.80216e+30f
9479
9480one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9481
9482one.close();
9483
9484one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9485
9486one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x522a5272), SkBits2Float(0x20725252), SkBits2Float(0x72727251)); // 4.80216e+30f, 1.82882e+11f, 2.05254e-19f, 4.80215e+30f
9487
9488one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x59525252), SkBits2Float(0x46090052), SkBits2Float(0x72db728e)); // 4.80216e+30f, 3.70002e+15f, 8768.08f, 8.69321e+30f
9489
9490one.quadTo(SkBits2Float(0x005252ec), SkBits2Float(0x72000400), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 7.56026e-39f, 2.53561e+30f, 4.80216e+30f, 4.80216e+30f
9491
9492one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9493
9494one.close();
9495
9496one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9497
9498one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x522a5272), SkBits2Float(0x20725252), SkBits2Float(0x72727251)); // 4.80216e+30f, 1.82882e+11f, 2.05254e-19f, 4.80215e+30f
9499
9500one.quadTo(SkBits2Float(0x52526172), SkBits2Float(0x8e460323), SkBits2Float(0x72727272), SkBits2Float(0x525c5272)); // 2.25894e+11f, -2.44069e-30f, 4.80216e+30f, 2.36569e+11f
9501
9502one.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
9503
9504one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9505
9506one.close();
9507
9508one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9509
9510one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x0052525f), SkBits2Float(0x8e524603), SkBits2Float(0x72727272)); // 4.80216e+30f, 7.56006e-39f, -2.59182e-30f, 4.80216e+30f
9511
9512one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9513
9514one.close();
9515
9516one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9517
9518one.quadTo(SkBits2Float(0x72725d72), SkBits2Float(0x52008072), SkBits2Float(0x00016552), SkBits2Float(0x72724000)); // 4.80053e+30f, 1.37978e+11f, 1.28182e-40f, 4.79826e+30f
9519
9520one.quadTo(SkBits2Float(0x00807272), SkBits2Float(0x392a5b25), SkBits2Float(0x72685768), SkBits2Float(0x000000ff)); // 1.1796e-38f, 0.000162464f, 4.602e+30f, 3.57331e-43f
9521
9522one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9523
9524one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0xd2008072), SkBits2Float(0x8e460900), SkBits2Float(0x72727072)); // 4.80216e+30f, -1.37978e+11f, -2.44097e-30f, 4.802e+30f
9525
9526one.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
9527
9528one.quadTo(SkBits2Float(0x005252ec), SkBits2Float(0x72000400), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 7.56026e-39f, 2.53561e+30f, 4.80216e+30f, 4.80216e+30f
9529
9530one.lineTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9531
9532one.close();
9533
9534one.moveTo(SkBits2Float(0xe0e060e0), SkBits2Float(0x728f5740)); // -1.29345e+20f, 5.67831e+30f
9535
9536one.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x522a5272), SkBits2Float(0x20725252), SkBits2Float(0x72727251)); // 4.80216e+30f, 1.82882e+11f, 2.05254e-19f, 4.80215e+30f
9537
9538 testPathOpFuzz(reporter, two, one, kIntersect_SkPathOp, filename);
9539}
9540
Yuqian Li3154a532017-09-06 13:33:30 -04009541static void fuzz535151(skiatest::Reporter* reporter, const char* filename) {
9542 SkPath one;
9543 one.setFillType(SkPath::kWinding_FillType);
9544 SkPath two;
9545 two.setFillType(SkPath::kWinding_FillType);
9546 two.moveTo(0, 0);
9547 two.lineTo(0, 50);
9548 two.lineTo(4.29497e+09f, 50);
9549 SkPath dummy;
9550 testPathOpFuzz(reporter, one, two, kIntersect_SkPathOp, filename);
9551}
9552
9553static void bufferOverflow(skiatest::Reporter* reporter, const char* filename) {
9554 SkPath path;
9555 path.addRect(0,0, 300,170141183460469231731687303715884105728.f);
9556 SkPath pathB;
9557 pathB.addRect(0,0, 300,16);
9558 testPathOpFuzz(reporter, path, pathB, kUnion_SkPathOp, filename);
9559}
9560
9561// m 100,0 60,170 -160,-110 200,0 -170,11000000000 z
9562static void fuzz433(skiatest::Reporter* reporter, const char* filename) {
9563 SkPath path1, path2;
9564 path1.moveTo(100,0);
9565 path1.lineTo(60,170);
9566 path1.lineTo(-160,-110);
9567 path1.lineTo(200,0);
9568 path1.lineTo(-170,11000000000.0f);
9569 path1.close();
9570
9571 path2.moveTo(100 + 20,0 + 20);
9572 path2.lineTo(60 + 20,170 + 20);
9573 path2.lineTo(-160 + 20,-110 + 20);
9574 path2.lineTo(200 + 20,0 + 20);
9575 path2.lineTo(-170 + 20,11000000000.0f + 20);
9576 path2.close();
9577
9578 testPathOpFuzz(reporter, path1, path2, kIntersect_SkPathOp, filename);
9579}
9580
9581static void fuzz433b(skiatest::Reporter* reporter, const char* filename) {
9582 SkPath path1, path2;
9583 path1.setFillType(SkPath::kEvenOdd_FillType);
9584 path1.moveTo(140, 40);
9585 path1.lineTo(200, 210);
9586 path1.lineTo(40, 100);
9587 path1.lineTo(240, 100);
9588 path1.lineTo(70, 1.1e+10f);
9589 path1.lineTo(140, 40);
9590 path1.close();
9591
9592 path1.setFillType(SkPath::kWinding_FillType);
9593 path2.moveTo(190, 60);
9594 path2.lineTo(250, 230);
9595 path2.lineTo(90, 120);
9596 path2.lineTo(290, 120);
9597 path2.lineTo(120, 1.1e+10f);
9598 path2.lineTo(190, 60);
9599 path2.close();
9600
9601 testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
9602}
9603
9604static void fuzz487a(skiatest::Reporter* reporter, const char* filename) {
9605 SkPath path;
9606 path.setFillType((SkPath::FillType) 0);
9607path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9608path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9609path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42633333));
9610path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
9611path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41a3ffff));
9612path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9613path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9614path.cubicTo(SkBits2Float(0x429c6668), SkBits2Float(0x425d999a), SkBits2Float(0x4279999c), SkBits2Float(0x42886667), SkBits2Float(0x42673335), SkBits2Float(0x42ab0000));
9615path.lineTo(SkBits2Float(0x41c0ccd0), SkBits2Float(0x42990000));
9616path.cubicTo(SkBits2Float(0x41b33336), SkBits2Float(0x42a5999a), SkBits2Float(0x41ac0003), SkBits2Float(0x42b2cccd), SkBits2Float(0x41ac0003), SkBits2Float(0x42c00000));
9617path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9618path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9619path.cubicTo(SkBits2Float(0x4261999c), SkBits2Float(0x434d3333), SkBits2Float(0x4364e667), SkBits2Float(0x4346b333), SkBits2Float(0x4364e667), SkBits2Float(0x43400000));
9620path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9621path.close();
9622
9623 SkPath path1(path);
9624 path.reset();
9625 path.setFillType((SkPath::FillType) 0);
9626path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9627path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9628path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x42a20000), SkBits2Float(0x43016667), SkBits2Float(0x4287cccd), SkBits2Float(0x42ea999a), SkBits2Float(0x4273999a));
9629path.lineTo(SkBits2Float(0x4306cccd), SkBits2Float(0x41f5999a));
9630path.cubicTo(SkBits2Float(0x42f76667), SkBits2Float(0x41c26667), SkBits2Float(0x42dd999a), SkBits2Float(0x41a4cccd), SkBits2Float(0x42c23334), SkBits2Float(0x41a4cccd));
9631path.lineTo(SkBits2Float(0x42c23334), SkBits2Float(0x425e0000));
9632path.cubicTo(SkBits2Float(0x42a43334), SkBits2Float(0x425e0000), SkBits2Float(0x428a0001), SkBits2Float(0x427ecccd), SkBits2Float(0x42780002), SkBits2Float(0x4297999a));
9633path.lineTo(SkBits2Float(0x41fccccd), SkBits2Float(0x42693333));
9634path.cubicTo(SkBits2Float(0x41c9999a), SkBits2Float(0x428acccd), SkBits2Float(0x41ac0000), SkBits2Float(0x42a4999a), SkBits2Float(0x41ac0000), SkBits2Float(0x42c00000));
9635path.lineTo(SkBits2Float(0x4261999a), SkBits2Float(0x42c00000));
9636path.cubicTo(SkBits2Float(0x4261999a), SkBits2Float(0x42de0000), SkBits2Float(0x42813333), SkBits2Float(0x42f83333), SkBits2Float(0x42996666), SkBits2Float(0x4303199a));
9637path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x431cb334));
9638path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
9639path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
9640path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
9641path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
9642path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43080000));
9643path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9644path.close();
9645
9646 SkPath path2(path);
9647 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9648}
9649
9650static void fuzz487b(skiatest::Reporter* reporter, const char* filename) {
9651 SkPath path;
9652 path.setFillType((SkPath::FillType) 0);
9653path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9654path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9655path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42633333));
9656path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
9657path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41a3ffff));
9658path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9659path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
9660path.cubicTo(SkBits2Float(0x429c6668), SkBits2Float(0x425d999a), SkBits2Float(0x4279999c), SkBits2Float(0x42886667), SkBits2Float(0x42673335), SkBits2Float(0x42ab0000));
9661path.lineTo(SkBits2Float(0x41c0ccd0), SkBits2Float(0x42990000));
9662path.cubicTo(SkBits2Float(0x41b33336), SkBits2Float(0x42a5999a), SkBits2Float(0x41ac0003), SkBits2Float(0x42b2cccd), SkBits2Float(0x41ac0003), SkBits2Float(0x42c00000));
9663path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9664path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
9665path.cubicTo(SkBits2Float(0x4261999c), SkBits2Float(0x434d3333), SkBits2Float(0x4364e667), SkBits2Float(0x4346b333), SkBits2Float(0x4364e667), SkBits2Float(0x43400000));
9666path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9667path.close();
9668
9669 SkPath path1(path);
9670 path.reset();
9671 path.setFillType((SkPath::FillType) 0);
9672path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9673path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
9674path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x42a20000), SkBits2Float(0x43016667), SkBits2Float(0x4287cccd), SkBits2Float(0x42ea999a), SkBits2Float(0x4273999a));
9675path.lineTo(SkBits2Float(0x4306cccd), SkBits2Float(0x41f5999a));
9676path.cubicTo(SkBits2Float(0x42f76667), SkBits2Float(0x41c26667), SkBits2Float(0x42dd999a), SkBits2Float(0x41a4cccd), SkBits2Float(0x42c23334), SkBits2Float(0x41a4cccd));
9677path.lineTo(SkBits2Float(0x42c23334), SkBits2Float(0x425e0000));
9678path.cubicTo(SkBits2Float(0x42a43334), SkBits2Float(0x425e0000), SkBits2Float(0x428a0001), SkBits2Float(0x427ecccd), SkBits2Float(0x42780002), SkBits2Float(0x4297999a));
9679path.lineTo(SkBits2Float(0x41fccccd), SkBits2Float(0x42693333));
9680path.cubicTo(SkBits2Float(0x41c9999a), SkBits2Float(0x428acccd), SkBits2Float(0x41ac0000), SkBits2Float(0x42a4999a), SkBits2Float(0x41ac0000), SkBits2Float(0x42c00000));
9681path.lineTo(SkBits2Float(0x4261999a), SkBits2Float(0x42c00000));
9682path.cubicTo(SkBits2Float(0x4261999a), SkBits2Float(0x42de0000), SkBits2Float(0x42813333), SkBits2Float(0x42f83333), SkBits2Float(0x42996666), SkBits2Float(0x4303199a));
9683path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x431cb334));
9684path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
9685path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
9686path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
9687path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
9688path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43080000));
9689path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
9690path.close();
9691
9692 SkPath path2(path);
9693 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9694}
9695
9696static void fuzz714(skiatest::Reporter* reporter, const char* filename) {
9697 SkPath path;
9698 path.setFillType((SkPath::FillType) 1);
9699path.moveTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000));
9700path.lineTo(SkBits2Float(0x43480000), SkBits2Float(0x43520000));
9701path.lineTo(SkBits2Float(0x42200000), SkBits2Float(0x42c80000));
9702path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42c80000)); // 2.22222e+022f
9703path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43520000)); // 2.22222e+022f
9704path.lineTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000));
9705path.close();
9706
9707 SkPath path1(path);
9708 path.reset();
9709 path.setFillType((SkPath::FillType) 0);
9710path.moveTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000));
9711path.lineTo(SkBits2Float(0x435c0000), SkBits2Float(0x43660000));
9712path.lineTo(SkBits2Float(0x42700000), SkBits2Float(0x42f00000));
9713path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42f00000)); // 2.22222e+022f
9714path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43660000)); // 2.22222e+022f
9715path.lineTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000));
9716path.close();
9717
9718 SkPath path2(path);
9719 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9720}
9721
9722static void fuzz1(skiatest::Reporter* reporter, const char* filename) {
9723 SkPath path;
9724 path.setFillType((SkPath::FillType) 0);
9725path.moveTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9726path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9727path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9728path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7f800000));
9729path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000));
9730path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0xffc00000), SkBits2Float(0xffc00000), SkBits2Float(0xffc00000));
9731path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xff000001));
9732path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xffc00000));
9733path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
9734path.close();
9735
9736 SkPath path1(path);
9737 path.reset();
9738 path.setFillType((SkPath::FillType) 0);
9739
9740 SkPath path2(path);
9741 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9742}
9743
9744
9745static void fuzz753_91(skiatest::Reporter* reporter, const char* filename) {
9746 SkPath path;
9747 path.setFillType((SkPath::FillType) 0);
9748path.moveTo(SkBits2Float(0x42910000), SkBits2Float(0x00000000)); // 72.5f, 0
9749path.lineTo(SkBits2Float(0x42166668), SkBits2Float(0x00000000)); // 37.6f, 0
9750path.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
9751path.lineTo(SkBits2Float(0x41840004), SkBits2Float(0xc291cccd)); // 16.5f, -72.9f
9752path.lineTo(SkBits2Float(0x42fb6668), SkBits2Float(0x42c73334)); // 125.7f, 99.6f
9753path.lineTo(SkBits2Float(0x43646668), SkBits2Float(0x43880ccd)); // 228.4f, 272.1f
9754
9755 SkPath path1(path);
9756 path.reset();
9757 path.setFillType((SkPath::FillType) 0);
9758path.moveTo(SkBits2Float(0x428bf702), SkBits2Float(0xcf223cbf)); // 69.9824f, -2.72189e+09f
9759path.lineTo(SkBits2Float(0x42112d68), SkBits2Float(0xcf223cbf)); // 36.2943f, -2.72189e+09f
9760path.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
9761path.lineTo(SkBits2Float(0x424a99e0), SkBits2Float(0xcf223cc0)); // 50.6503f, -2.72189e+09f
9762path.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
9763path.lineTo(SkBits2Float(0x40f8fbe0), SkBits2Float(0xcf223cc0)); // 7.78075f, -2.72189e+09f
9764
9765 SkPath path2(path);
9766 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
9767}
9768
9769static void bug597926_0(skiatest::Reporter* reporter, const char* filename) {
9770SkPath path;
9771path.setFillType((SkPath::FillType) 0);
9772path.moveTo(SkBits2Float(0x43b38000), SkBits2Float(0x433e0000)); // 359, 190
9773path.lineTo(SkBits2Float(0x40c00000), SkBits2Float(0x449ce000)); // 6, 1255
9774path.cubicTo(SkBits2Float(0x438c0000), SkBits2Float(0x4497a000), SkBits2Float(0x43e40000), SkBits2Float(0x44750000), SkBits2Float(0x41000000), SkBits2Float(0x44aa2000)); // 280, 1213, 456, 980, 8, 1361
9775path.moveTo(SkBits2Float(0x43290000), SkBits2Float(0x4431c000)); // 169, 711
9776path.lineTo(SkBits2Float(0xd987d6ba), SkBits2Float(0xd93d0ad4)); // -4.7794e+15f, -3.32567e+15f
9777path.conicTo(SkBits2Float(0x43cc8000), SkBits2Float(0x445b8000), SkBits2Float(0xd888b096), SkBits2Float(0xd9a1ebfa), SkBits2Float(0x3ebcb199)); // 409, 878, -1.20234e+15f, -5.69712e+15f, 0.368542f
9778path.cubicTo(SkBits2Float(0x43c00000), SkBits2Float(0x443a8000), SkBits2Float(0x42380000), SkBits2Float(0x4421c000), SkBits2Float(0x42500000), SkBits2Float(0x448ca000)); // 384, 746, 46, 647, 52, 1125
9779path.quadTo(SkBits2Float(0x43948000), SkBits2Float(0x42ac0000), SkBits2Float(0x43880000), SkBits2Float(0x4487e000)); // 297, 86, 272, 1087
9780SkPath path1(path);
9781path.reset();
9782path.setFillType((SkPath::FillType) 0);
9783path.moveTo(SkBits2Float(0xc51d735c), SkBits2Float(0xc49db029)); // -2519.21f, -1261.51f
9784path.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
9785path.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
9786path.quadTo(SkBits2Float(0xc51bf7eb), SkBits2Float(0xc49cf010), SkBits2Float(0xc51ba866), SkBits2Float(0xc49cb9e6)); // -2495.49f, -1255.5f, -2490.52f, -1253.81f
9787path.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
9788SkPath path2(path);
9789testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9790}
9791
9792static void fuzz1450_0(skiatest::Reporter* reporter, const char* filename) {
9793SkPath path;
9794path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.14748e+09f
9795path.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
9796path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x43348000), SkBits2Float(0x43800001), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, 256, 180.5f, 256, 0.707107f
9797SkPath path1(path);
9798path.reset();
9799path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
9800path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55f, 3600, 4434.55f, 0.707107f
9801path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.55f, 6840, 4140, 0.707107f
9802path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
9803path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
9804path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
9805path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
9806path.close();
9807SkPath path2(path);
9808testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
9809}
9810
9811static void fuzz1450_1(skiatest::Reporter* reporter, const char* filename) {
9812SkPath path;
9813path.setFillType(SkPath::kEvenOdd_FillType);
9814path.moveTo(SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe)); // 1.07374e+09f, -1.07374e+09f
9815path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x43b40000), SkBits2Float(0xcf000000), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, -2.14748e+09f, 360, -2.14748e+09f, 0.707107f
9816path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256
9817path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
9818path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
9819path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
9820path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
9821path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
9822path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55f, 3600, 4434.55f, 0.707107f
9823path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.55f, 6840, 4140, 0.707107f
9824path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
9825path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256
9826path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, 256, 1.07374e+09f, -1.07374e+09f, 0.707107f
9827path.close();
9828SkPath path1(path);
9829path.reset();
9830path.moveTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
9831path.lineTo(SkBits2Float(0x45d5c000), SkBits2Float(0x43870000)); // 6840, 270
9832path.lineTo(SkBits2Float(0xd0a00000), SkBits2Float(0x4cbebc20)); // -2.14748e+10f, 1e+08
9833path.lineTo(SkBits2Float(0x451f7000), SkBits2Float(0x42800000)); // 2551, 64
9834path.lineTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
9835path.close();
9836SkPath path2(path);
9837testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
9838}
9839
9840static void fuzz763_9(skiatest::Reporter* reporter, const char* filename) {
9841 SkPath path;
9842 path.setFillType((SkPath::FillType) 1);
9843
9844 SkPath path1(path);
9845 path.reset();
9846 path.setFillType((SkPath::FillType) 0);
9847path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9848path.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
9849path.lineTo(SkBits2Float(0x7bc00321), SkBits2Float(0xed7a6a4b)); // 1.99397e+36f, -4.84373e+27f
9850path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f, 0.000617492f
9851path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9852path.close();
9853path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9854path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3), SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6)); // -8.10388e-33f, 0.00148185f, 2.25206e-21f, 5.54035e+21f
9855path.moveTo(SkBits2Float(0x29272a81), SkBits2Float(0x2ab03a55)); // 3.71183e-14f, 3.13044e-13f
9856path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xdf28282a), SkBits2Float(0x8a2f2121)); // 2.22225e-15f, 0.000615227f, -1.2117e+19f, -8.43217e-33f
9857path.quadTo(SkBits2Float(0x373b3a27), SkBits2Float(0x201fc4c1), SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d)); // 1.11596e-05f, 1.35329e-19f, 2.98959e-15f, 2.8457e+15f
9858path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21)); // 2.22225e-15f, 0.000615227f, -1.2117e+19f, 0.00105459f
9859path.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
9860path.quadTo(SkBits2Float(0xd912102a), SkBits2Float(0x284f9a28), SkBits2Float(0xb38a1f30), SkBits2Float(0x3a3ac23a)); // -2.56957e+15f, 1.15242e-14f, -6.4318e-08f, 0.000712428f
9861path.lineTo(SkBits2Float(0xc809272a), SkBits2Float(0x29b02829)); // -140445, 7.82294e-14f
9862
9863 SkPath path2(path);
9864 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9865}
9866
9867
9868static void fuzz763_4(skiatest::Reporter* reporter, const char* filename) {
9869 SkPath path;
9870 path.setFillType((SkPath::FillType) 1);
9871
9872 SkPath path1(path);
9873 path.reset();
9874 path.setFillType((SkPath::FillType) 0);
9875path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9876path.lineTo(SkBits2Float(0x555b3a2d), SkBits2Float(0x2a212a8c)); // 1.50652e+13f, 1.43144e-13f
9877path.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
9878path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac2b33a)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148544f
9879path.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
9880path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9881path.close();
9882path.moveTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9883path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x2a21081f)); // 1.43144e-13f, 1.43025e-13f
9884path.conicTo(SkBits2Float(0xde6a4b7b), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // -4.22068e+18f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121589
9885path.lineTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9886path.close();
9887path.moveTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9888path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
9889path.lineTo(SkBits2Float(0x2928088c), SkBits2Float(0x2be61d2a)); // 3.73109e-14f, 1.63506e-12f
9890path.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
9891path.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
9892path.lineTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
9893path.close();
9894path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
9895path.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
9896
9897 SkPath path2(path);
9898 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9899}
9900
9901static void fuzz763_3(skiatest::Reporter* reporter, const char* filename) {
9902 SkPath path;
9903 path.setFillType((SkPath::FillType) 1);
9904
9905 SkPath path1(path);
9906 path.reset();
9907 path.setFillType((SkPath::FillType) 0);
9908path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9909path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
9910path.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
9911path.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
9912path.moveTo(SkBits2Float(0x25682929), SkBits2Float(0x212a8c5b)); // 2.01367e-16f, 5.7784e-19f
9913path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4a7bc0)); // 4.7323e-37f, 6.11969e+25f
9914path.conicTo(SkBits2Float(0x032108ed), SkBits2Float(0x283a7bc0), SkBits2Float(0x47ed7a6a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21ff28)); // 4.73239e-37f, 1.03519e-14f, 121589, 9.4495e-15f, 0.000617968f
9915path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.00148185f, 1.50241e-13f, -1.38859e-25f
9916path.lineTo(SkBits2Float(0x295b2d2a), SkBits2Float(0x2d296868)); // 4.86669e-14f, 9.62972e-12f
9917path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
9918path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x898ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, -3.39271e-33f, 4.61198e-19f, 0.00096035f, 121589
9919path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
9920path.close();
9921path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
9922path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0xb38a281a), SkBits2Float(0x29283ac2)); // -1.2117e+19f, 0.00105459f, -6.43342e-08f, 3.73545e-14f
9923path.moveTo(SkBits2Float(0x962be61d), SkBits2Float(0x432a2927)); // -1.38859e-25f, 170.161f
9924path.conicTo(SkBits2Float(0x3a2a552a), SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x3b3ac527), SkBits2Float(0x1fc42236)); // 0.000649768f, 0.00241343f, 3.71093e-14f, 0.00284989f, 8.30658e-20f
9925path.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
9926path.lineTo(SkBits2Float(0x272927b0), SkBits2Float(0x5b392929)); // 2.3475e-15f, 5.21181e+16f
9927path.moveTo(SkBits2Float(0x3a1127b4), SkBits2Float(0x2921ee3b)); // 0.000553723f, 3.59558e-14f
9928path.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
9929path.moveTo(SkBits2Float(0x21081f3f), SkBits2Float(0x9fd4e62a)); // 4.61199e-19f, -9.01663e-20f
9930path.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
9931
9932 SkPath path2(path);
9933 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9934}
9935
9936static void fuzz763_5(skiatest::Reporter* reporter, const char* filename) {
9937 SkPath path;
9938 path.setFillType((SkPath::FillType) 1);
9939
9940 SkPath path1(path);
9941 path.reset();
9942 path.setFillType((SkPath::FillType) 0);
9943path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
9944path.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
9945path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
9946path.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
9947path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
9948path.close();
9949path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
9950path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121589
9951path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
9952path.close();
9953path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
9954path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3b21), SkBits2Float(0x28ee4f9a), SkBits2Float(0x68293b78)); // -1.2117e+19f, 0.00105462f, 2.64578e-14f, 3.19671e+24f
9955path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x5b2d8c55)); // 4.87407e+16f, 4.88495e+16f
9956
9957 SkPath path2(path);
9958 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
9959}
9960
9961static void fuzz763_2(skiatest::Reporter* reporter, const char* filename) {
9962 SkPath path;
9963 path.setFillType((SkPath::FillType) 1);
9964
9965 SkPath path1(path);
9966 path.reset();
9967 path.setFillType((SkPath::FillType) 0);
9968path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
9969path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
9970path.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
9971path.lineTo(SkBits2Float(0x081f2ad7), SkBits2Float(0x7bc00321)); // 4.78977e-34f, 1.99397e+36f
9972path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
9973path.quadTo(SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28), SkBits2Float(0x29283ac2), SkBits2Float(0x962be62a)); // 2.58753e+09f, 0.00136978f, 3.73545e-14f, -1.38859e-25f
9974path.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
9975path.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
9976path.lineTo(SkBits2Float(0x29292727), SkBits2Float(0x21475b3b)); // 3.75595e-14f, 6.75446e-19f
9977path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
9978path.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
9979path.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
9980path.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
9981path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21)); // 2.50338e-13f, 4.61198e-19f
9982path.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
9983path.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
9984path.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
9985path.quadTo(SkBits2Float(0x29210f21), SkBits2Float(0x282a085d), SkBits2Float(0xc2ab2127), SkBits2Float(0xa6800028)); // 3.57623e-14f, 9.43871e-15f, -85.5648f, -8.88183e-16f
9986path.lineTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
9987path.close();
9988path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
9989path.quadTo(SkBits2Float(0x216a2770), SkBits2Float(0x2ab73b28), SkBits2Float(0x4b28f427), SkBits2Float(0x283b5b28)); // 7.93345e-19f, 3.25484e-13f, 1.10726e+07f, 1.04004e-14f
9990path.lineTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
9991path.close();
9992path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
9993path.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
9994path.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
9995
9996 SkPath path2(path);
9997 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
9998}
9999
10000// crbug.com/626164
10001static void fuzz763_1c(skiatest::Reporter* reporter, const char* filename) {
10002 SkPath path;
10003 path.setFillType((SkPath::FillType) 0);
10004
10005 SkPath path1(path);
10006 path.reset();
10007 path.setFillType((SkPath::FillType) 0);
10008 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10009 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
10010 path.moveTo(SkBits2Float(0x000010a1), SkBits2Float(0x19312000)); // 5.96533e-42f, 9.15715e-24f
10011 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
10012 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
10013
10014 SkPath path2(path);
10015 SkPath dummy;
10016 testPathOpFuzz(reporter, path1, path2, (SkPathOp)4, filename);
10017}
10018
10019// crbug.com/626186
10020static void fuzz763_1b(skiatest::Reporter* reporter, const char* filename) {
10021 SkPath path;
10022 path.setFillType((SkPath::FillType) 0);
10023 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10024 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
10025 path.lineTo(SkBits2Float(0xda1905ed), SkBits2Float(0x3c05fbfb)); // -1.0768e+16f, 0.00817775f
10026 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
10027
10028 SkPath path1(path);
10029 path.reset();
10030 path.setFillType((SkPath::FillType) 0);
10031 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10032 path.quadTo(SkBits2Float(0x3c3c3c3c), SkBits2Float(0xfa253c3c), SkBits2Float(0xfefa00d3), SkBits2Float(0x25fad9df)); // 0.011489f, -2.14488e+35f, -1.66156e+38f, 4.35157e-16f
10033 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10034 path.close();
10035 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10036 path.lineTo(SkBits2Float(0x8dfefa00), SkBits2Float(0xf0f9fad9)); // -1.57141e-30f, -6.1892e+29f
10037 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
10038
10039 SkPath path2(path);
10040 testPathOpFuzz(reporter, path1, path2, (SkPathOp)2, filename);
10041}
10042
10043static void fuzz763_1a(skiatest::Reporter* reporter, const char* filename) {
10044 SkPath path;
10045 path.setFillType((SkPath::FillType) 0);
10046 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10047 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
10048
10049 SkPath path1(path);
10050 path.reset();
10051 path.setFillType((SkPath::FillType) 0);
10052 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10053 path.quadTo(SkBits2Float(0x5559a419), SkBits2Float(0x59d55928), SkBits2Float(0xbd595959), SkBits2Float(0x3f3f3f09)); // 1.49562e+13f, 7.50652e+15f, -0.0530637f, 0.747056f
10054 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0x3f3f3f3f)); // 0.747059f, 0.747059f
10055 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10056 path.lineTo(SkBits2Float(0x09090909), SkBits2Float(0x3038d509)); // 1.6495e-33f, 6.72416e-10f
10057 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
10058 path.lineTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10059 path.close();
10060 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10061 path.lineTo(SkBits2Float(0x38d57f4b), SkBits2Float(0x59597f4b)); // 0.000101803f, 3.82625e+15f
10062 path.lineTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
10063 path.close();
10064 path.moveTo(SkBits2Float(0x384700ff), SkBits2Float(0x0108804b)); // 4.74462e-05f, 2.50713e-38f
10065
10066 SkPath path2(path);
10067 testPathOpFuzz(reporter, path1, path2, (SkPathOp)0, filename);
10068}
10069
10070// crbug.com/627780
10071static void fuzz763_3a(skiatest::Reporter* reporter, const char* filename) {
10072 SkPath path;
10073 path.setFillType((SkPath::FillType) 1);
10074
10075 SkPath path1(path);
10076 path.reset();
10077 path.setFillType((SkPath::FillType) 0);
10078path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10079path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
10080path.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
10081path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
10082path.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
10083path.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
10084path.moveTo(SkBits2Float(0x8adf2028), SkBits2Float(0x3a219a3a)); // -2.14862e-32f, 0.000616464f
10085path.quadTo(SkBits2Float(0x3ab38e28), SkBits2Float(0x29283ac2), SkBits2Float(0x2be61d2a), SkBits2Float(0x812a4396)); // 0.0013699f, 3.73545e-14f, 1.63506e-12f, -3.12726e-38f
10086
10087 SkPath path2(path);
10088 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
10089}
10090
10091// crbug.com/627689
10092static void fuzz763_5a(skiatest::Reporter* reporter, const char* filename) {
10093 SkPath path;
10094 path.setFillType((SkPath::FillType) 1);
10095path.moveTo(SkBits2Float(0x38bd8610), SkBits2Float(0x00000000)); // 9.03719e-05f, 0
10096path.conicTo(SkBits2Float(0x4183d871), SkBits2Float(0x41fea321), SkBits2Float(0xb700ff00), SkBits2Float(0x4240b8b8), SkBits2Float(0x3b058283)); // 16.4807f, 31.8297f, -7.68877e-06f, 48.1804f, 0.0020372f
10097path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
10098path.conicTo(SkBits2Float(0x3a455ec8), SkBits2Float(0xb8b8b8b3), SkBits2Float(0x38b2418d), SkBits2Float(0xb730d014), SkBits2Float(0x3f7ffff3)); // 0.000752908f, -8.80821e-05f, 8.49991e-05f, -1.05389e-05f, 0.999999f
10099path.quadTo(SkBits2Float(0x3a51246a), SkBits2Float(0xb6da45a3), SkBits2Float(0x38bc5c3c), SkBits2Float(0x00000000)); // 0.000797814f, -6.50501e-06f, 8.98172e-05f, 0
10100path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
10101path.quadTo(SkBits2Float(0x39a32d2d), SkBits2Float(0x00000000), SkBits2Float(0xb8a13a00), SkBits2Float(0x00000000)); // 0.000311234f, 0, -7.68788e-05f, 0
10102path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
10103path.quadTo(SkBits2Float(0x39ba814c), SkBits2Float(0xb838fed2), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0.00035573f, -4.41063e-05f, 0, 0
10104path.lineTo(SkBits2Float(0x38bd8610), SkBits2Float(0x00000000)); // 9.03719e-05f, 0
10105path.close();
10106
10107 SkPath path1(path);
10108 path.reset();
10109 path.setFillType((SkPath::FillType) 0);
10110
10111 SkPath path2(path);
10112 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10113}
10114
10115// crbug.com/627401
10116static void fuzz763_2a(skiatest::Reporter* reporter, const char* filename) {
10117 SkPath path;
10118 path.setFillType((SkPath::FillType) 1);
10119
10120 SkPath path1(path);
10121 path.reset();
10122 path.setFillType((SkPath::FillType) 0);
10123path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10124path.quadTo(SkBits2Float(0x3e484500), SkBits2Float(0x164f3a30), SkBits2Float(0x49484801), SkBits2Float(0x7d0100c8)); // 0.195576f, 1.67397e-25f, 820352, 1.07172e+37f
10125path.conicTo(SkBits2Float(0xff7f36fd), SkBits2Float(0x3e647d01), SkBits2Float(0x0c00f430), SkBits2Float(0x486b6448), SkBits2Float(0x00484848)); // -3.39239e+38f, 0.223133f, 9.93424e-32f, 241041, 6.63809e-39f
10126path.lineTo(SkBits2Float(0x4f4f557d), SkBits2Float(0x48480112)); // 3.47849e+09f, 204804
10127path.lineTo(SkBits2Float(0xf40c01ff), SkBits2Float(0x45008000)); // -4.43702e+31f, 2056
10128path.moveTo(SkBits2Float(0x4bfffa00), SkBits2Float(0x7d4ac859)); // 3.35514e+07f, 1.68465e+37f
10129path.conicTo(SkBits2Float(0x7d014f3e), SkBits2Float(0x00f4ff01), SkBits2Float(0x6b64480c), SkBits2Float(0x48484848), SkBits2Float(0x557d0100)); // 1.07426e+37f, 2.24993e-38f, 2.75975e+26f, 205089, 1.73863e+13f
10130
10131 SkPath path2(path);
10132 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10133}
10134
10135// crbug.com/627761
10136static void fuzz763_2b(skiatest::Reporter* reporter, const char* filename) {
10137 SkPath path;
10138 path.setFillType((SkPath::FillType) 1);
10139
10140 SkPath path1(path);
10141 path.reset();
10142 path.setFillType((SkPath::FillType) 0);
10143path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55)); // 4.76191e+16f, 5.7784e-19f
10144path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10145path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21)); // 2.50338e-13f, 4.61198e-19f
10146path.conicTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x4721ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28), SkBits2Float(0x4f9a3a8a)); // 5.63611e+25f, 41453.5f, 9.4495e-15f, 0.000617492f, 5.17506e+09f
10147path.lineTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10148path.close();
10149path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10150path.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
10151path.lineTo(SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321)); // 4.78968e-34f, 1.99397e+36f
10152path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f, 0.000617492f
10153path.lineTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10154path.close();
10155path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
10156path.quadTo(SkBits2Float(0x8a4fc29a), SkBits2Float(0x3ab3283a), SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6)); // -1.00033e-32f, 0.00136686f, 2.25206e-21f, 300.343f
10157path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10158path.conicTo(SkBits2Float(0x1e2ab03a), SkBits2Float(0x2920213b), SkBits2Float(0x3b3ac527), SkBits2Float(0xc422333b), SkBits2Float(0x6c2a9f1f)); // 9.03617e-21f, 3.5556e-14f, 0.00284989f, -648.8f, 8.25075e+26f
10159path.quadTo(SkBits2Float(0xc25d2757), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152), SkBits2Float(0x28d91210)); // -55.2884f, 0.000916855f, 1.2818e-13f, 2.40997e-14f
10160path.quadTo(SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19905e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
10161path.lineTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10162path.close();
10163path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10164path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0xcb7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, -1.64987e+07f, 121589
10165path.lineTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10166path.close();
10167path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
10168path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x2d8a3a21), SkBits2Float(0x5b682b68), SkBits2Float(0x5b292d55)); // -1.2117e+19f, 1.57146e-11f, 6.53499e+16f, 4.76191e+16f
10169path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x0321081f)); // 1.43144e-13f, 4.7323e-37f
10170path.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
10171path.moveTo(SkBits2Float(0x21df2828), SkBits2Float(0x9a3a8a3a)); // 1.51217e-18f, -3.85756e-23f
10172path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x28273ac2), SkBits2Float(0xe61d2a29), SkBits2Float(0x2a63962b)); // 0.00136978f, 9.2831e-15f, -1.85547e+23f, 2.02138e-13f
10173path.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
10174path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10175path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
10176path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10177path.close();
10178
10179 SkPath path2(path);
10180 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10181}
10182
10183static void fuzz763_2c(skiatest::Reporter* reporter, const char* filename) {
10184 SkPath path;
10185 path.setFillType((SkPath::FillType) 1);
10186
10187path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x36344a4a)); // 0, 2.68653e-06f
10188path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x364a4a4a), SkBits2Float(0x364a4a4a), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0, 3.01436e-06f, 3.01436e-06f, 0, 0
10189path.lineTo(SkBits2Float(0x364a4a4a), SkBits2Float(0x00000000)); // 3.01436e-06f, 0
10190path.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
10191path.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
10192path.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
10193path.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
10194path.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
10195path.close();
10196 SkPath path1(path);
10197 path.reset();
10198 path.setFillType((SkPath::FillType) 0);
10199path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10200path.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
10201path.moveTo(SkBits2Float(0x000010a1), SkBits2Float(0x19312000)); // 5.96533e-42f, 9.15715e-24f
10202path.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
10203path.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
10204 SkPath path2(path);
10205 testPathOpFuzz(reporter, path1, path2, kReverseDifference_SkPathOp, filename);
10206}
10207
10208static void fuzz763_6(skiatest::Reporter* reporter, const char* filename) {
10209 SkPath path;
10210 path.setFillType((SkPath::FillType) 1);
10211path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10212path.cubicTo(SkBits2Float(0x68295b2d), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 3.19905e+24f, 0, 0, 0, 0, 4.03114e+24f
10213path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10214path.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
10215path.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
10216path.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
10217path.conicTo(SkBits2Float(0x68295b02), SkBits2Float(0x60f7f28b), SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f), SkBits2Float(0x42784f5a)); // 3.19903e+24f, 1.42932e+20f, 0, 5.14279e+25f, 62.0775f
10218path.close();
10219path.moveTo(SkBits2Float(0x654d6d10), SkBits2Float(0x00000000)); // 6.06311e+22f, 0
10220path.lineTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000)); // 6.14991e+25f, 0
10221path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc0)); // 0, 6.14991e+25f
10222path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10223
10224 SkPath path1(path);
10225 path.reset();
10226 path.setFillType((SkPath::FillType) 0);
10227path.moveTo(SkBits2Float(0x3ac23a55), SkBits2Float(0x2a292827)); // 0.00148184f, 1.50241e-13f
10228path.lineTo(SkBits2Float(0x63962be6), SkBits2Float(0x272a812a)); // 5.54035e+21f, 2.36623e-15f
10229
10230 SkPath path2(path);
10231 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10232}
10233
10234static void fuzz763_7(skiatest::Reporter* reporter, const char* filename) {
10235 SkPath path;
10236 path.setFillType((SkPath::FillType) 0);
10237
10238 SkPath path1(path);
10239 path.reset();
10240 path.setFillType((SkPath::FillType) 0);
10241path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10242path.moveTo(SkBits2Float(0x0f2a312a), SkBits2Float(0xc0032108)); // 8.39112e-30f, -2.04889f
10243path.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
10244path.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
10245path.moveTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
10246path.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
10247path.lineTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
10248path.close();
10249path.moveTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
10250path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10251path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10252path.lineTo(SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a281a4f)); // 0.00105461f, -8.09385e-33f
10253path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f
10254path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
10255path.conicTo(SkBits2Float(0xba1f203a), SkBits2Float(0xc422c538), SkBits2Float(0x215d5927), SkBits2Float(0x70ec2ac2), SkBits2Float(0x2a51523a)); // -0.000607017f, -651.082f, 7.49957e-19f, 5.84721e+29f, 1.85915e-13f
10256path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x683a5b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.52017e+24f
10257path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
10258path.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
10259path.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
10260path.quadTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
10261path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10262path.close();
10263path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10264path.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
10265path.moveTo(SkBits2Float(0x2d212d08), SkBits2Float(0x5568295b)); // 9.16179e-12f, 1.5954e+13f
10266path.moveTo(SkBits2Float(0x5529685b), SkBits2Float(0x11295b68)); // 1.16416e+13f, 1.33599e-28f
10267path.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
10268path.moveTo(SkBits2Float(0x555b8c55), SkBits2Float(0x21682929)); // 1.50872e+13f, 7.86591e-19f
10269path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10270path.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
10271path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10272path.close();
10273path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10274path.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
10275path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10276path.close();
10277path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10278path.quadTo(SkBits2Float(0x2d28282a), SkBits2Float(0x5568295b), SkBits2Float(0x3a21df68), SkBits2Float(0x4f9a3a8a)); // 9.55861e-12f, 1.5954e+13f, 0.000617495f, 5.17506e+09f
10279path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10280path.close();
10281path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10282path.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
10283
10284 SkPath path2(path);
10285 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10286}
10287
10288static void kfuzz2(skiatest::Reporter* reporter, const char* filename) {
10289 SkPath path1;
10290 SkPath path;
10291path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10292path.close();
10293path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10294path.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
10295path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10296path.close();
10297path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10298path.lineTo(SkBits2Float(0x60601a1d), SkBits2Float(0x60606060)); // 6.4593e+19f, 6.46721e+19f
10299path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
10300path.close();
10301path.moveTo(SkBits2Float(0xe5e2f300), SkBits2Float(0xee244a40)); // -1.33967e+23f, -1.27113e+28f
10302path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10303path.close();
10304path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10305path.lineTo(SkBits2Float(0xfafafafa), SkBits2Float(0xe30000fa)); // -6.51582e+35f, -2.36125e+21f
10306path.conicTo(SkBits2Float(0x92e592e5), SkBits2Float(0xfafafafb), SkBits2Float(0xc4fa0000), SkBits2Float(0x6060fafa), SkBits2Float(0x60606060)); // -1.44881e-27f, -6.51582e+35f, -2000, 6.48462e+19f, 6.46721e+19f
10307path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10308path.close();
10309path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10310path.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
10311path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10312path.close();
10313path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10314path.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
10315path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
10316path.close();
10317SkPath path2(path);
10318 testPathOpFuzz(reporter, path1, path2, kXOR_SkPathOp, filename);
10319}
10320
10321static void fuzz763_10(skiatest::Reporter* reporter, const char* filename) {
10322 SkPath path;
10323 path.setFillType((SkPath::FillType) 1);
10324path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 0, 4.03114e+24f
10325path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10326path.quadTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 6.14991e+25f, 0, 0, 6.14991e+25f
10327path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 0, 4.03114e+24f
10328path.close();
10329
10330 SkPath path1(path);
10331 path.reset();
10332 path.setFillType((SkPath::FillType) 0);
10333path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10334path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x2a8c8f55)); // 4.87407e+16f, 2.49685e-13f
10335path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10336path.close();
10337path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10338path.conicTo(SkBits2Float(0x682d2fed), SkBits2Float(0x755b6829), SkBits2Float(0x5b292d2b), SkBits2Float(0xc92a8c55), SkBits2Float(0x081f2a21)); // 3.27141e+24f, 2.78131e+32f, 4.76189e+16f, -698565, 4.78968e-34f
10339path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10340path.close();
10341path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10342path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a29)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121588
10343path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10344path.close();
10345path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10346path.quadTo(SkBits2Float(0x6829682d), SkBits2Float(0x292d555b), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a29)); // 3.20001e+24f, 3.84878e-14f, 2.49282e-13f, 4.78969e-34f
10347path.conicTo(SkBits2Float(0x6a497b19), SkBits2Float(0x218ced7a), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x47ed3a7a)); // 6.08939e+25f, 9.54963e-19f, 4.7323e-37f, 5.63611e+25f, 121461
10348path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10349path.close();
10350path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10351path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3a21df), SkBits2Float(0x2728282a), SkBits2Float(0x8a3a2129)); // 9.4456e-15f, -8.96194e-33f, 2.33365e-15f, -8.96181e-33f
10352path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3a3ac2b3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.000712435f, 1.50241e-13f, -1.38859e-25f
10353path.lineTo(SkBits2Float(0x272a802a), SkBits2Float(0x2a8c2d29)); // 2.36617e-15f, 2.49003e-13f
10354path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10355path.close();
10356path.moveTo(SkBits2Float(0x4f9a3a29), SkBits2Float(0x3ab38a28)); // 5.17501e+09f, 0.00136978f
10357path.quadTo(SkBits2Float(0xc368305b), SkBits2Float(0x5b296855), SkBits2Float(0x2d8c5568), SkBits2Float(0x1f2a2172)); // -232.189f, 4.7684e+16f, 1.59541e-11f, 3.60266e-20f
10358path.lineTo(SkBits2Float(0x29c00321), SkBits2Float(0x5b4b7b13)); // 8.52706e-14f, 5.72747e+16f
10359
10360 SkPath path2(path);
10361 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10362}
10363
10364static void fuzz763_11(skiatest::Reporter* reporter, const char* filename) {
10365 SkPath path;
10366 path.setFillType((SkPath::FillType) 0);
10367
10368 SkPath path1(path);
10369 path.reset();
10370 path.setFillType((SkPath::FillType) 0);
10371path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10372path.moveTo(SkBits2Float(0x2a0f312a), SkBits2Float(0xc0032108)); // 1.2718e-13f, -2.04889f
10373path.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
10374path.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
10375path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
10376path.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
10377path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
10378path.close();
10379path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
10380path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10381path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10382path.lineTo(SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a281a4f)); // 0.00105461f, -8.09385e-33f
10383path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x2a812a3b), SkBits2Float(0x2a552927)); // 2.25206e-21f, 300.343f, 2.29443e-13f, 1.89325e-13f
10384path.quadTo(SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x203a3b27), SkBits2Float(0x22c5381f)); // 0.00241343f, 3.71093e-14f, 1.57744e-19f, 5.34564e-18f
10385path.moveTo(SkBits2Float(0x5d27ec2a), SkBits2Float(0x705921c2)); // 7.56256e+17f, 2.68796e+29f
10386path.quadTo(SkBits2Float(0x102a5152), SkBits2Float(0x5b2dd912), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 3.35892e-29f, 4.89338e+16f, 4.03114e+24f, 1.50617e+13f
10387path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032127)); // 3.60396e-20f, -2.0489f
10388path.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
10389path.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
10390path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10391path.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
10392path.lineTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10393path.close();
10394path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10395path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x2a21211f)); // 4.85282e+16f, 1.43112e-13f
10396path.lineTo(SkBits2Float(0x03552a8c), SkBits2Float(0x6a4f7b28)); // 6.26439e-37f, 6.27073e+25f
10397path.conicTo(SkBits2Float(0x2347ed93), SkBits2Float(0x282a3a21), SkBits2Float(0x3adf2128), SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28)); // 1.08381e-17f, 9.4495e-15f, 0.00170234f, 2.58753e+09f, 0.00136978f
10398path.lineTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10399path.close();
10400path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
10401path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x262a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 5.91556e-16f, 0.000649768f
10402path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
10403path.conicTo(SkBits2Float(0x371f203a), SkBits2Float(0xc52a22c4), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x5210513a)); // 9.48464e-06f, -2722.17f, -55.289f, 0.000916855f, 1.5496e+11f
10404path.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
10405path.moveTo(SkBits2Float(0x682d6829), SkBits2Float(0x29685555)); // 3.27556e+24f, 5.15884e-14f
10406path.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
10407path.quadTo(SkBits2Float(0x2d685568), SkBits2Float(0x5568295b), SkBits2Float(0x2a552d29), SkBits2Float(0x295b2d27)); // 1.32066e-11f, 1.5954e+13f, 1.89339e-13f, 4.86669e-14f
10408path.lineTo(SkBits2Float(0x682d6829), SkBits2Float(0x29685555)); // 3.27556e+24f, 5.15884e-14f
10409path.close();
10410
10411 SkPath path2(path);
10412 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10413}
10414
10415static void fuzz763_12(skiatest::Reporter* reporter, const char* filename) {
10416 SkPath path;
10417 path.setFillType((SkPath::FillType) 1);
10418path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10419path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a29082a)); // 0, 5.10868e+25f
10420path.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
10421path.conicTo(SkBits2Float(0x67aedf99), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x3f801112)); // 1.65163e+24f, 0, 0, 0, 1.00052f
10422path.close();
10423path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10424path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 6.14991e+25f, 0, 0, 4.03114e+24f, 1.50617e+13f
10425path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10426path.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
10427path.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
10428path.cubicTo(SkBits2Float(0x679158b0), SkBits2Float(0x00000000), SkBits2Float(0x67531e34), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 1.37276e+24f, 0, 9.96976e+23f, 0, 0, 0
10429path.close();
10430
10431 SkPath path1(path);
10432 path.reset();
10433 path.setFillType((SkPath::FillType) 0);
10434path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10435path.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
10436path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10437path.close();
10438path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10439path.lineTo(SkBits2Float(0x3a6821df), SkBits2Float(0x2a8c3a8a)); // 0.000885514f, 2.49096e-13f
10440path.moveTo(SkBits2Float(0x29272a1d), SkBits2Float(0xb03a2a55)); // 3.7118e-14f, -6.77266e-10f
10441path.moveTo(SkBits2Float(0x20213b1e), SkBits2Float(0xc5272927)); // 1.36568e-19f, -2674.57f
10442path.quadTo(SkBits2Float(0xc422373b), SkBits2Float(0xec2a201f), SkBits2Float(0x21c25d27), SkBits2Float(0x523a7059)); // -648.863f, -8.22676e+26f, 1.31706e-18f, 2.00187e+11f
10443path.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
10444path.moveTo(SkBits2Float(0x68556809), SkBits2Float(0x555b2d29)); // 4.03113e+24f, 1.50617e+13f
10445path.moveTo(SkBits2Float(0x1f2a212a), SkBits2Float(0x2d032108)); // 3.60263e-20f, 7.45382e-12f
10446path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // 4.03114e+24f, 1.89339e-13f
10447path.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
10448
10449 SkPath path2(path);
10450 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10451}
10452
10453static void fuzz763_13(skiatest::Reporter* reporter, const char* filename) {
10454 SkPath path;
10455 path.setFillType((SkPath::FillType) 1);
10456
10457 SkPath path1(path);
10458 path.reset();
10459 path.setFillType((SkPath::FillType) 0);
10460path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10461path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3adf2128), SkBits2Float(0x4f1a3a8a)); // 6.14991e+25f, 75739, 9.4495e-15f, 0.00170234f, 2.58753e+09f
10462path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10463path.close();
10464path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10465path.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
10466path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10467path.close();
10468path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10469path.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
10470path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x68295b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.19905e+24f
10471path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
10472path.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
10473path.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
10474path.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
10475path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10476path.close();
10477path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10478path.lineTo(SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55)); // 4.88097e+16f, 5.7784e-19f
10479path.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
10480path.lineTo(SkBits2Float(0x68295b68), SkBits2Float(0x2d296855)); // 3.19906e+24f, 9.6297e-12f
10481path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
10482path.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
10483path.quadTo(SkBits2Float(0x6028282a), SkBits2Float(0x68292ddf), SkBits2Float(0x5b2d555b), SkBits2Float(0x68556829)); // 4.84679e+19f, 3.1957e+24f, 4.8789e+16f, 4.03114e+24f
10484
10485 SkPath path2(path);
10486 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10487}
10488
10489static void fuzz763_14(skiatest::Reporter* reporter, const char* filename) {
10490 SkPath path;
10491 path.setFillType((SkPath::FillType) 0);
10492
10493 SkPath path1(path);
10494 path.reset();
10495 path.setFillType((SkPath::FillType) 0);
10496path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0xf45b2d29)); // 4.03114e+24f, -6.94598e+31f
10497path.moveTo(SkBits2Float(0x1f2a302a), SkBits2Float(0xc8032108)); // 3.60387e-20f, -134276
10498path.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
10499
10500 SkPath path2(path);
10501 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10502}
10503
10504static void fuzz763_15(skiatest::Reporter* reporter, const char* filename) {
10505 SkPath path;
10506 path.setFillType((SkPath::FillType) 1);
10507
10508 SkPath path1(path);
10509 path.reset();
10510 path.setFillType((SkPath::FillType) 0);
10511path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55)); // 4.76191e+16f, 5.7784e-19f
10512path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10513path.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
10514path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10515path.close();
10516path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10517path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0xdf218a28), SkBits2Float(0x4f1a3a3a)); // 6.14991e+25f, 75739, 9.4495e-15f, -1.16402e+19f, 2.58751e+09f
10518path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x283ac221), SkBits2Float(0xe6432a29), SkBits2Float(0x2a96812b)); // 0.00136978f, 1.03672e-14f, -2.3041e+23f, 2.6735e-13f
10519path.lineTo(SkBits2Float(0x5529272a), SkBits2Float(0x1eb03a2a)); // 1.16241e+13f, 1.86588e-20f
10520path.conicTo(SkBits2Float(0x2a272021), SkBits2Float(0x3ac52729), SkBits2Float(0xc422313b), SkBits2Float(0xec2a201f), SkBits2Float(0x21c25d27)); // 1.48437e-13f, 0.00150416f, -648.769f, -8.22676e+26f, 1.31706e-18f
10521path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
10522path.close();
10523path.moveTo(SkBits2Float(0x1051523a), SkBits2Float(0xd912102a)); // 4.12813e-29f, -2.56957e+15f
10524path.close();
10525path.moveTo(SkBits2Float(0x1051523a), SkBits2Float(0xd912102a)); // 4.12813e-29f, -2.56957e+15f
10526path.quadTo(SkBits2Float(0xc82763e7), SkBits2Float(0x2927b029), SkBits2Float(0x295b2d27), SkBits2Float(0x2d685568)); // -171408, 3.72342e-14f, 4.86669e-14f, 1.32066e-11f
10527path.moveTo(SkBits2Float(0x68556809), SkBits2Float(0x8c555b2d)); // 4.03113e+24f, -1.64364e-31f
10528path.moveTo(SkBits2Float(0x081f2a21), SkBits2Float(0x252d0321)); // 4.78968e-34f, 1.50064e-16f
10529path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x5b2df068)); // 1.59583e+13f, 4.89595e+16f
10530path.quadTo(SkBits2Float(0x2a1f2a8c), SkBits2Float(0x21482a21), SkBits2Float(0x4b7bc003), SkBits2Float(0x8ced3a6a)); // 1.41368e-13f, 6.78184e-19f, 1.64987e+07f, -3.65508e-31f
10531path.moveTo(SkBits2Float(0x21481f21), SkBits2Float(0x4b7bc003)); // 6.78038e-19f, 1.64987e+07f
10532path.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
10533path.lineTo(SkBits2Float(0x21481f21), SkBits2Float(0x4b7bc003)); // 6.78038e-19f, 1.64987e+07f
10534path.close();
10535path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10536path.conicTo(SkBits2Float(0x682d2fed), SkBits2Float(0x755b6829), SkBits2Float(0x5b292d2b), SkBits2Float(0xc92a8c55), SkBits2Float(0x081f2a21)); // 3.27141e+24f, 2.78131e+32f, 4.76189e+16f, -698565, 4.78968e-34f
10537path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10538path.close();
10539path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10540path.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
10541path.quadTo(SkBits2Float(0x6829682d), SkBits2Float(0x292d555b), SkBits2Float(0x292a8c55), SkBits2Float(0x21081f2a)); // 3.20001e+24f, 3.84878e-14f, 3.78693e-14f, 4.61198e-19f
10542path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x218ced7a), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x47ed3a7a)); // 6.14991e+25f, 9.54963e-19f, 4.7323e-37f, 5.63611e+25f, 121461
10543path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10544path.close();
10545path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10546path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3a21df), SkBits2Float(0x2728282a), SkBits2Float(0x8a3a21df)); // 9.4456e-15f, -8.96194e-33f, 2.33365e-15f, -8.96194e-33f
10547path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3a3ac2b3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.000712435f, 1.50241e-13f, -1.38859e-25f
10548path.lineTo(SkBits2Float(0x272a802a), SkBits2Float(0x2a8c2d29)); // 2.36617e-15f, 2.49003e-13f
10549path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
10550path.close();
10551path.moveTo(SkBits2Float(0x4f9a3a29), SkBits2Float(0x3ab38a28)); // 5.17501e+09f, 0.00136978f
10552path.quadTo(SkBits2Float(0xc368305b), SkBits2Float(0x5b296855), SkBits2Float(0x2d8c5568), SkBits2Float(0x1f2a2172)); // -232.189f, 4.7684e+16f, 1.59541e-11f, 3.60266e-20f
10553path.lineTo(SkBits2Float(0x29c00321), SkBits2Float(0x5b4b7b13)); // 8.52706e-14f, 5.72747e+16f
10554
10555 SkPath path2(path);
10556 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
10557}
10558
10559static void fuzz763_16(skiatest::Reporter* reporter, const char* filename) {
10560 SkPath path;
10561 path.setFillType((SkPath::FillType) 0);
10562
10563 SkPath path1(path);
10564 path.reset();
10565 path.setFillType((SkPath::FillType) 0);
10566path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10567path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10568path.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
10569path.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
10570path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
10571path.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
10572path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
10573path.close();
10574path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
10575path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10576path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10577path.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
10578path.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
10579path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10580path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 6.14991e+25f, 75739
10581path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10582path.close();
10583path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10584path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
10585path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10586path.close();
10587path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10588path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10589path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10590path.close();
10591path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10592path.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
10593path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21512727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 7.08638e-19f
10594path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10595path.close();
10596path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10597path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10598path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0xc0032108)); // 3.60404e-20f, -2.04889f
10599path.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
10600path.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
10601path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10602path.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
10603path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10604path.close();
10605path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10606path.lineTo(SkBits2Float(0x555b6829), SkBits2Float(0x6c212a8c)); // 1.50775e+13f, 7.79352e+26f
10607path.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
10608path.lineTo(SkBits2Float(0x8c558c55), SkBits2Float(0x212a1f2a)); // -1.64512e-31f, 5.76395e-19f
10609
10610 SkPath path2(path);
10611 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10612}
10613
10614static void fuzz763_17(skiatest::Reporter* reporter, const char* filename) {
10615 SkPath path;
10616 path.setFillType((SkPath::FillType) 0);
10617
10618 SkPath path1(path);
10619 path.reset();
10620 path.setFillType((SkPath::FillType) 0);
10621path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10622path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10623path.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
10624path.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
10625path.moveTo(SkBits2Float(0x6835282d), SkBits2Float(0xf0682955)); // 3.42196e+24f, -2.87402e+29f
10626path.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
10627path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10628path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10629path.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
10630path.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
10631path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10632path.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
10633path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10634path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10635path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10636path.close();
10637path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10638path.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
10639path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0x16c52a22), SkBits2Float(0x515d27ec)); // 2.22225e-15f, 0.000713932f, -732.486f, 3.18537e-25f, 5.93661e+10f
10640path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10641path.close();
10642path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10643path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10644path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10645path.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
10646path.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
10647path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10648path.lineTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x2a212a1f)); // 2.49282e-13f, 1.43143e-13f
10649path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10650path.close();
10651path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10652path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x2a1f08c0)); // -1.31678e-31f, 1.41251e-13f
10653path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10654path.close();
10655path.moveTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
10656path.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
10657path.lineTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
10658path.close();
10659path.moveTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
10660path.lineTo(SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a)); // 1.16348e+26f, 0.000209024f
10661
10662 SkPath path2(path);
10663 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10664}
10665
10666static void fuzz763_18(skiatest::Reporter* reporter, const char* filename) {
10667 SkPath path;
10668 path.setFillType((SkPath::FillType) 0);
10669
10670 SkPath path1(path);
10671 path.reset();
10672 path.setFillType((SkPath::FillType) 0);
10673path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10674path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10675path.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
10676path.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
10677path.moveTo(SkBits2Float(0x6835282d), SkBits2Float(0xf0682955)); // 3.42196e+24f, -2.87402e+29f
10678path.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
10679path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10680path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10681path.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
10682path.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
10683path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10684path.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
10685path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10686path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10687path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10688path.close();
10689path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10690path.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
10691path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0x16c52a22), SkBits2Float(0x515d27ec)); // 2.22225e-15f, 0.000713932f, -732.486f, 3.18537e-25f, 5.93661e+10f
10692path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10693path.close();
10694path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10695path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10696path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10697path.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
10698path.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
10699path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10700path.lineTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x2a212a1f)); // 2.49282e-13f, 1.43143e-13f
10701path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10702path.close();
10703path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10704path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x2a1f08c0)); // -1.31678e-31f, 1.41251e-13f
10705
10706path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10707path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10708path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10709path.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
10710path.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
10711path.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
10712
10713 SkPath path2(path);
10714 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10715}
10716
10717static void fuzz763_19(skiatest::Reporter* reporter, const char* filename) {
10718 SkPath path;
10719 path.setFillType((SkPath::FillType) 1);
10720
10721 SkPath path1(path);
10722 path.reset();
10723 path.setFillType((SkPath::FillType) 0);
10724path.moveTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003)); // 4.61198e-19f, 1.64987e+07f
10725path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 9.43289e-15f, 1.61207e+25f
10726path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10727path.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
10728path.moveTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10729path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10730path.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
10731path.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
10732path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10733path.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
10734path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10735path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10736path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10737path.close();
10738path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10739path.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
10740path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21515d27)); // 2.22225e-15f, 0.000713932f, -732.486f, -1.90686e+27f, 7.09352e-19f
10741path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10742path.close();
10743path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10744path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10745path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10746path.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
10747path.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
10748path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10749path.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
10750path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10751path.close();
10752path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10753path.lineTo(SkBits2Float(0x555b2c29), SkBits2Float(0x6c212a8c)); // 1.50614e+13f, 7.79352e+26f
10754path.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
10755path.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
10756path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10757path.close();
10758path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10759path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x1f2128c0)); // -1.31678e-31f, 3.41268e-20f
10760path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10761path.close();
10762
10763 SkPath path2(path);
10764 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10765}
10766
10767static void fuzz763_20(skiatest::Reporter* reporter, const char* filename) {
10768 SkPath path;
10769 path.setFillType((SkPath::FillType) 0);
10770
10771 SkPath path1(path);
10772 path.reset();
10773 path.setFillType((SkPath::FillType) 0);
10774path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10775path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10776path.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
10777path.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
10778path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10779path.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
10780path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10781path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10782path.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
10783path.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
10784path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10785path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321182a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.73414e-37f, 6.14991e+25f, 75739
10786path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10787path.close();
10788path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10789path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
10790path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10791path.close();
10792path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10793path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10794path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10795path.close();
10796path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10797path.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
10798path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x51282727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 4.51382e+10f
10799path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
10800path.close();
10801path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10802path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x8c555b2d)); // 4.03114e+24f, -1.64364e-31f
10803path.moveTo(SkBits2Float(0x081f2a31), SkBits2Float(0xc0032921)); // 4.78969e-34f, -2.04939f
10804path.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
10805path.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
10806path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10807path.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
10808path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10809path.close();
10810path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10811path.lineTo(SkBits2Float(0x555b6829), SkBits2Float(0x6c212a8c)); // 1.50775e+13f, 7.79352e+26f
10812path.lineTo(SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556830)); // 4.88298e+16f, -2.64185e+29f
10813path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10814path.close();
10815path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10816path.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
10817path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x212128c0)); // -1.31678e-31f, 5.46029e-19f
10818path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
10819path.close();
10820
10821 SkPath path2(path);
10822 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10823}
10824
10825static void fuzz763_21(skiatest::Reporter* reporter, const char* filename) {
10826 SkPath path;
10827 path.setFillType((SkPath::FillType) 1);
10828path.moveTo(SkBits2Float(0x6828c6f9), SkBits2Float(0x6614dc9e)); // 3.18811e+24f, 1.75745e+23f
10829path.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
10830path.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
10831path.lineTo(SkBits2Float(0x6828c6f9), SkBits2Float(0x6614dc9e)); // 3.18811e+24f, 1.75745e+23f
10832path.close();
10833path.moveTo(SkBits2Float(0x68226c73), SkBits2Float(0x660bd15e)); // 3.0681e+24f, 1.65068e+23f
10834path.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
10835path.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
10836path.lineTo(SkBits2Float(0x6828d720), SkBits2Float(0x6604a1a2)); // 3.1893e+24f, 1.56583e+23f
10837path.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
10838path.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
10839path.close();
10840path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10841path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10842path.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
10843path.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
10844path.close();
10845path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10846path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
10847path.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
10848path.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
10849path.conicTo(SkBits2Float(0x68295b21), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x492bb324)); // 3.19904e+24f, 0, 0, 0, 703282
10850path.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
10851path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68156829)); // 0, 2.82222e+24f
10852path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
10853path.lineTo(SkBits2Float(0x673918f3), SkBits2Float(0x681b0f5f)); // 8.74098e+23f, 2.929e+24f
10854path.lineTo(SkBits2Float(0x67391759), SkBits2Float(0x681b0fae)); // 8.74068e+23f, 2.92902e+24f
10855path.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
10856path.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
10857path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
10858path.close();
10859
10860 SkPath path1(path);
10861 path.reset();
10862 path.setFillType((SkPath::FillType) 0);
10863
10864 SkPath path2(path);
10865 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
10866}
10867
10868static void fuzz763_22(skiatest::Reporter* reporter, const char* filename) {
10869 SkPath path;
10870 path.setFillType((SkPath::FillType) 1);
10871path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x68295b2d)); // 0, 3.19905e+24f
10872path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10873path.lineTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x00000000)); // 5.63611e+25f, 0
10874path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a034b21)); // 0, 3.9681e+25f
10875path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68295b2d)); // 0, 3.19905e+24f
10876path.close();
10877path.moveTo(SkBits2Float(0x6617da56), SkBits2Float(0x00000000)); // 1.79276e+23f, 0
10878path.conicTo(SkBits2Float(0x5e704d09), SkBits2Float(0x5e3a4dfd), SkBits2Float(0x00000000), SkBits2Float(0x65eb62ef), SkBits2Float(0x430fa5e6)); // 4.32888e+18f, 3.35617e+18f, 0, 1.38948e+23f, 143.648f
10879path.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
10880path.conicTo(SkBits2Float(0x62743d2d), SkBits2Float(0x5e49b862), SkBits2Float(0x6617da56), SkBits2Float(0x00000000), SkBits2Float(0x410ef54c)); // 1.12635e+21f, 3.63387e+18f, 1.79276e+23f, 0, 8.93489f
10881path.close();
10882
10883 SkPath path1(path);
10884 path.reset();
10885 path.setFillType((SkPath::FillType) 0);
10886path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10887path.quadTo(SkBits2Float(0x4f9a3a8a), SkBits2Float(0xc28a0d28), SkBits2Float(0x273a3ab3), SkBits2Float(0x8b2a2928)); // 5.17506e+09f, -69.0257f, 2.58445e-15f, -3.27718e-32f
10888path.lineTo(SkBits2Float(0x63283ae6), SkBits2Float(0x27282a81)); // 3.1033e+21f, 2.33377e-15f
10889
10890 SkPath path2(path);
10891 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
10892}
10893
10894static void fuzz763_23(skiatest::Reporter* reporter, const char* filename) {
10895 SkPath path;
10896 path.setFillType((SkPath::FillType) 0);
10897
10898 SkPath path1(path);
10899 path.reset();
10900 path.setFillType((SkPath::FillType) 0);
10901path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10902path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10903path.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
10904path.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
10905path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10906path.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
10907path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
10908path.close();
10909path.moveTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
10910path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
10911path.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
10912path.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
10913path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10914path.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
10915path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
10916path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
10917path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10918path.close();
10919path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10920path.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
10921path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21515d27)); // 2.22225e-15f, 0.000713932f, -732.486f, -1.90686e+27f, 7.09352e-19f
10922path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
10923path.close();
10924path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
10925path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
10926path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
10927path.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
10928path.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
10929path.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
10930
10931 SkPath path2(path);
10932 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
10933}
10934
10935static void fuzz763_24(skiatest::Reporter* reporter, const char* filename) {
10936 SkPath path;
10937 path.setFillType((SkPath::FillType) 1);
10938
10939 SkPath path1(path);
10940 path.reset();
10941 path.setFillType((SkPath::FillType) 0);
10942path.moveTo(SkBits2Float(0xededed02), SkBits2Float(0xedededed)); // -9.20431e+27f, -9.20445e+27f
10943path.close();
10944path.moveTo(SkBits2Float(0xededed02), SkBits2Float(0xedededed)); // -9.20431e+27f, -9.20445e+27f
10945path.quadTo(SkBits2Float(0x9fb9c16e), SkBits2Float(0x27737375), SkBits2Float(0xb7c5ff00), SkBits2Float(0x00ff9908)); // -7.86706e-20f, 3.37856e-15f, -2.3603e-05f, 2.34729e-38f
10946path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10947path.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
10948path.quadTo(SkBits2Float(0x04007f41), SkBits2Float(0xecececec), SkBits2Float(0xecececec), SkBits2Float(0xecec41ec)); // 1.51048e-36f, -2.2914e+27f, -2.2914e+27f, -2.28494e+27f
10949path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10950path.close();
10951path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10952path.quadTo(SkBits2Float(0x000000ec), SkBits2Float(0xececcc00), SkBits2Float(0x48ececec), SkBits2Float(0x0278806e)); // 3.30706e-43f, -2.29016e+27f, 485223, 1.8257e-37f
10953path.lineTo(SkBits2Float(0x72ececec), SkBits2Float(0xecec02ec)); // 9.38559e+30f, -2.28256e+27f
10954path.quadTo(SkBits2Float(0xec04007f), SkBits2Float(0xecececec), SkBits2Float(0xecececec), SkBits2Float(0xecec0400)); // -6.38322e+26f, -2.2914e+27f, -2.2914e+27f, -2.2826e+27f
10955path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10956path.close();
10957path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10958path.quadTo(SkBits2Float(0x000040ec), SkBits2Float(0x3a333300), SkBits2Float(0xecec3333), SkBits2Float(0xececdbec)); // 2.32896e-41f, 0.000683591f, -2.28439e+27f, -2.29076e+27f
10959path.lineTo(SkBits2Float(0x3300007f), SkBits2Float(0x33d83333)); // 2.98028e-08f, 1.00676e-07f
10960path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10961path.close();
10962path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10963path.quadTo(SkBits2Float(0x9e9ea900), SkBits2Float(0x33ececec), SkBits2Float(0xececec33), SkBits2Float(0xec336e6e)); // -1.67988e-20f, 1.10327e-07f, -2.29138e+27f, -8.67677e+26f
10964path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10965path.close();
10966path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10967path.lineTo(SkBits2Float(0xedededed), SkBits2Float(0xedededed)); // -9.20445e+27f, -9.20445e+27f
10968path.lineTo(SkBits2Float(0xecececec), SkBits2Float(0xecececec)); // -2.2914e+27f, -2.2914e+27f
10969path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10970path.close();
10971path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10972path.lineTo(SkBits2Float(0x01003300), SkBits2Float(0x33d83333)); // 2.35465e-38f, 1.00676e-07f
10973path.quadTo(SkBits2Float(0xecec3333), SkBits2Float(0x04eeedec), SkBits2Float(0xe0e0e0e0), SkBits2Float(0x9ee0e0e0)); // -2.28439e+27f, 5.6172e-36f, -1.29634e+20f, -2.38099e-20f
10974path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10975path.close();
10976path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
10977path.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
10978path.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
10979
10980 SkPath path2(path);
10981 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
10982}
10983
10984static void fuzz763_25(skiatest::Reporter* reporter, const char* filename) {
10985 SkPath path;
10986 path.setFillType((SkPath::FillType) 1);
10987path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
10988path.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
10989path.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
10990path.lineTo(SkBits2Float(0x68555b29), SkBits2Float(0x00000000)); // 4.03018e+24f, 0
10991path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x682d2927), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6829686f)); // 0, 3.27091e+24f, 0, 0, 3.20003e+24f
10992path.lineTo(SkBits2Float(0xdf218a28), SkBits2Float(0x00000000)); // -1.16402e+19f, 0
10993path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
10994path.close();
10995path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
10996path.conicTo(SkBits2Float(0x6642c40c), SkBits2Float(0x00000000), SkBits2Float(0x65906630), SkBits2Float(0x6a25a070), SkBits2Float(0x3edcd74d)); // 2.29939e+23f, 0, 8.52382e+22f, 5.00576e+25f, 0.43133f
10997path.conicTo(SkBits2Float(0x68295afa), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x4277a57b)); // 3.19903e+24f, 0, 0, 0, 61.9116f
10998path.close();
10999
11000 SkPath path1(path);
11001 path.reset();
11002 path.setFillType((SkPath::FillType) 0);
11003
11004 SkPath path2(path);
11005 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11006}
11007
11008
11009static void fuzz763_26(skiatest::Reporter* reporter, const char* filename) {
11010 SkPath path;
11011 path.setFillType((SkPath::FillType) 0);
11012
11013 SkPath path1(path);
11014 path.reset();
11015 path.setFillType((SkPath::FillType) 0);
11016path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11017path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc003210a)); // 3.60396e-20f, -2.04889f
11018path.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
11019path.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
11020path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
11021path.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
11022path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
11023path.close();
11024path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
11025path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11026path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11027path.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
11028path.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
11029path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11030path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 6.14991e+25f, 75739
11031path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11032path.close();
11033path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11034path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
11035path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11036path.close();
11037path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11038path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2127ed29)); // 2.25206e-21f, 300.343f, 0.000650423f, 5.68957e-19f
11039path.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
11040path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21512727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 7.08638e-19f
11041path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
11042path.close();
11043path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
11044path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x5b2d5529)); // 4.03114e+24f, 4.87888e+16f
11045path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0xc0032108)); // 3.60404e-20f, -2.04889f
11046path.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
11047path.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
11048path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11049path.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
11050path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11051path.close();
11052path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11053path.lineTo(SkBits2Float(0x555b1b29), SkBits2Float(0x6c212a8c)); // 1.50569e+13f, 7.79352e+26f
11054path.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
11055path.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
11056path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11057path.close();
11058path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11059path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x1f2128c0)); // -1.31678e-31f, 3.41268e-20f
11060path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
11061path.close();
11062
11063 SkPath path2(path);
11064 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11065}
11066
11067static void fuzz763_28(skiatest::Reporter* reporter, const char* filename) {
11068 SkPath path;
11069 path.setFillType((SkPath::FillType) 0);
11070
11071 SkPath path1(path);
11072 path.reset();
11073 path.setFillType((SkPath::FillType) 0);
11074path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11075path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11076path.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
11077path.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
11078path.moveTo(SkBits2Float(0x6c395b2d), SkBits2Float(0xf0682955)); // 8.96327e+26f, -2.87402e+29f
11079path.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
11080path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11081path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11082path.lineTo(SkBits2Float(0x8a283a28), SkBits2Float(0x284f1a3a)); // -8.09984e-33f, 1.14965e-14f
11083path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f
11084path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
11085path.conicTo(SkBits2Float(0x381f203a), SkBits2Float(0x2ac422c5), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152)); // 3.79386e-05f, 3.48407e-13f, -55.289f, 0.000916855f, 1.2818e-13f
11086path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x683a5b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.52017e+24f
11087path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
11088path.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
11089path.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
11090path.quadTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
11091path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11092path.close();
11093path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11094path.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
11095path.lineTo(SkBits2Float(0x5b2d212d), SkBits2Float(0x2d556829)); // 4.87316e+16f, 1.21308e-11f
11096path.moveTo(SkBits2Float(0x68552968), SkBits2Float(0x5568295b)); // 4.02651e+24f, 1.5954e+13f
11097path.moveTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55)); // 4.87407e+16f, 5.7784e-19f
11098path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
11099path.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
11100
11101 SkPath path2(path);
11102 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11103}
11104
11105static void fuzz763_27(skiatest::Reporter* reporter, const char* filename) {
11106 SkPath path;
11107 path.setFillType((SkPath::FillType) 0);
11108
11109 SkPath path1(path);
11110 path.reset();
11111 path.setFillType((SkPath::FillType) 0);
11112path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11113path.quadTo(SkBits2Float(0x30309ab8), SkBits2Float(0x305b3030), SkBits2Float(0x00f53030), SkBits2Float(0x3a3a0000)); // 6.42483e-10f, 7.97402e-10f, 2.2517e-38f, 0.000709534f
11114path.quadTo(SkBits2Float(0xb8b8d5b8), SkBits2Float(0x0b0b0b03), SkBits2Float(0x0b0b0b0b), SkBits2Float(0x3a3a0b0b)); // -8.81361e-05f, 2.67787e-32f, 2.67787e-32f, 0.000709698f
11115path.quadTo(SkBits2Float(0xb8b8b8b8), SkBits2Float(0x0b1203b8), SkBits2Float(0x0b0b0b0b), SkBits2Float(0x3a3a2110)); // -8.80821e-05f, 2.81214e-32f, 2.67787e-32f, 0.000710026f
11116
11117 SkPath path2(path);
11118 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11119}
11120
11121static void fuzz763_29(skiatest::Reporter* reporter, const char* filename) {
11122 SkPath path;
11123 path.setFillType((SkPath::FillType) 1);
11124path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11125path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x743e0000)); // 0, 6.02134e+31f
11126path.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
11127path.quadTo(SkBits2Float(0x74360ca0), SkBits2Float(0x7401e10c), SkBits2Float(0x7436a382), SkBits2Float(0x7401cc18)); // 5.76937e+31f, 4.11603e+31f, 5.78805e+31f, 4.11344e+31f
11128path.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
11129path.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
11130path.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
11131path.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
11132path.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
11133path.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
11134path.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
11135path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11136path.close();
11137
11138 SkPath path1(path);
11139 path.reset();
11140 path.setFillType((SkPath::FillType) 0);
11141path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11142path.lineTo(SkBits2Float(0xf0682955), SkBits2Float(0x211f5b2d)); // -2.87402e+29f, 5.3992e-19f
11143path.moveTo(SkBits2Float(0x2d2aff2d), SkBits2Float(0x74747474)); // 9.72004e-12f, 7.74708e+31f
11144path.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
11145path.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
11146path.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
11147path.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
11148
11149 SkPath path2(path);
11150 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11151}
11152
11153static void fuzz763_30(skiatest::Reporter* reporter, const char* filename) {
11154 SkPath path;
11155 path.setFillType((SkPath::FillType) 1);
11156
11157 SkPath path1(path);
11158 path.reset();
11159 path.setFillType((SkPath::FillType) 0);
11160path.moveTo(SkBits2Float(0x1f2108c0), SkBits2Float(0x4b7b0321)); // 3.41003e-20f, 1.64503e+07f
11161path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
11162path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
11163path.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
11164path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55)); // 4.87407e+16f, 5.7784e-19f
11165path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x4b7b28c0)); // 4.7323e-37f, 1.646e+07f
11166path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x2d081f21)); // 2.50338e-13f, 7.73762e-12f
11167path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11168path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11169path.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
11170path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0xed7a6a1f), SkBits2Float(0x3a214793), SkBits2Float(0x3328282a), SkBits2Float(0x3a8a3adf)); // 5.77848e-19f, -4.84372e+27f, 0.000615233f, 3.91521e-08f, 0.00105461f
11171path.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
11172path.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
11173path.lineTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11174path.close();
11175path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11176path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x3ac22c21), SkBits2Float(0x6c401057), SkBits2Float(0x6d6d6b64)); // 0.00136978f, 0.00148142f, 9.28764e+26f, 4.59236e+27f
11177path.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
11178
11179 SkPath path2(path);
11180 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11181}
11182
11183static void fuzz763_31(skiatest::Reporter* reporter, const char* filename) {
11184 SkPath path;
11185 path.setFillType((SkPath::FillType) 1);
11186
11187 SkPath path1(path);
11188 path.reset();
11189 path.setFillType((SkPath::FillType) 0);
11190path.moveTo(SkBits2Float(0xd72a8c55), SkBits2Float(0x61081f2a)); // -1.8752e+14f, 1.56938e+20f
11191path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0xdf3a2128), SkBits2Float(0x471ac575)); // 6.14991e+25f, 75739, 9.4495e-15f, -1.3412e+19f, 39621.5f
11192path.lineTo(SkBits2Float(0x28404040), SkBits2Float(0x552a298a)); // 1.06721e-14f, 1.16935e+13f
11193path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11194path.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
11195path.lineTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11196path.close();
11197path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11198path.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
11199path.lineTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11200path.close();
11201path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
11202path.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
11203
11204 SkPath path2(path);
11205 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11206}
11207
11208static void fuzz763_33(skiatest::Reporter* reporter, const char* filename) {
11209 SkPath path;
11210 path.setFillType((SkPath::FillType) 1);
11211path.moveTo(SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 7.66623e+30f, 7.66608e+30f
11212path.quadTo(SkBits2Float(0x724341bf), SkBits2Float(0x72433fc4), SkBits2Float(0x6d757575), SkBits2Float(0x6d6d6d6d)); // 3.86746e+30f, 3.86731e+30f, 4.74786e+27f, 4.59251e+27f
11213path.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
11214path.conicTo(SkBits2Float(0x6c6c8b72), SkBits2Float(0x00000000), SkBits2Float(0x6c6c6c6c), SkBits2Float(0x00000000), SkBits2Float(0x400812df)); // 1.14386e+27f, 0, 1.14327e+27f, 0, 2.12615f
11215path.quadTo(SkBits2Float(0x72432acb), SkBits2Float(0x72432295), SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 3.86568e+30f, 3.86505e+30f, 7.66623e+30f, 7.66608e+30f
11216path.close();
11217path.moveTo(SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 7.66623e+30f, 7.66608e+30f
11218path.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
11219path.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
11220path.close();
11221path.moveTo(SkBits2Float(0x6c6c69d8), SkBits2Float(0x6d20df31)); // 1.14323e+27f, 3.11171e+27f
11222path.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
11223path.lineTo(SkBits2Float(0x6a674231), SkBits2Float(0x6c0c3394)); // 6.98936e+25f, 6.77973e+26f
11224path.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
11225path.close();
11226
11227 SkPath path1(path);
11228 path.reset();
11229 path.setFillType((SkPath::FillType) 0);
11230path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11231path.lineTo(SkBits2Float(0x6c6b6ba7), SkBits2Float(0x886b6b6b)); // 1.13842e+27f, -7.0844e-34f
11232path.quadTo(SkBits2Float(0x0000206b), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d)); // 1.16294e-41f, 4.59251e+27f, 4.59251e+27f, 4.59251e+27f
11233path.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
11234path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x95066b78)); // 2.01583e+34f, -2.71459e-26f
11235path.lineTo(SkBits2Float(0x6c6b6ba7), SkBits2Float(0x886b6b6b)); // 1.13842e+27f, -7.0844e-34f
11236path.quadTo(SkBits2Float(0x0000206b), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d)); // 1.16294e-41f, 4.59251e+27f, 4.59251e+27f, 4.59251e+27f
11237path.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
11238path.lineTo(SkBits2Float(0x8787878f), SkBits2Float(0x87878787)); // -2.03922e-34f, -2.03922e-34f
11239path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11240path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11241path.lineTo(SkBits2Float(0x6c105778), SkBits2Float(0x6d406b64)); // 6.97994e+26f, 3.72193e+27f
11242path.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
11243path.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
11244path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11245path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11246path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11247path.lineTo(SkBits2Float(0xb4bcacbc), SkBits2Float(0xbcadbcbc)); // -3.51434e-07f, -0.0212082f
11248path.moveTo(SkBits2Float(0xa03aacbc), SkBits2Float(0x757575a0)); // -1.5812e-19f, 3.11157e+32f
11249path.close();
11250
11251 SkPath path2(path);
11252 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11253}
11254
11255static void fuzz763_32(skiatest::Reporter* reporter, const char* filename) {
11256 SkPath path;
11257 path.setFillType((SkPath::FillType) 1);
11258
11259 SkPath path1(path);
11260 path.reset();
11261 path.setFillType((SkPath::FillType) 0);
11262path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11263path.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
11264path.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
11265path.moveTo(SkBits2Float(0xe0f2f210), SkBits2Float(0xc3f2eef2)); // -1.40049e+20f, -485.867f
11266path.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
11267path.moveTo(SkBits2Float(0x556c0010), SkBits2Float(0x002a8768)); // 1.62178e+13f, 3.90567e-39f
11268path.quadTo(SkBits2Float(0xf2f22021), SkBits2Float(0xf2f2f56e), SkBits2Float(0xf2f2f2f2), SkBits2Float(0xf22040d9)); // -9.59158e+30f, -9.62459e+30f, -9.6242e+30f, -3.17414e+30f
11269path.lineTo(SkBits2Float(0xc013f2f2), SkBits2Float(0x0000294d)); // -2.3117f, 1.48159e-41f
11270
11271 SkPath path2(path);
11272 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11273}
11274
11275static void fuzz763_34(skiatest::Reporter* reporter, const char* filename) {
11276 SkPath path;
11277 path.setFillType((SkPath::FillType) 1);
11278path.moveTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11279path.quadTo(SkBits2Float(0x63690f37), SkBits2Float(0x6d0a3d9b), SkBits2Float(0x00000000), SkBits2Float(0x6d3e3e3e)); // 4.29919e+21f, 2.67396e+27f, 0, 3.67984e+27f
11280path.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
11281path.lineTo(SkBits2Float(0x6c6c586c), SkBits2Float(0x00000000)); // 1.1429e+27f, 0
11282path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11283path.conicTo(SkBits2Float(0x6c8c6c6c), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6cc8e82a), SkBits2Float(0x5b684b68)); // 1.35809e+27f, 0, 0, 1.94305e+27f, 6.53851e+16f
11284path.lineTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11285path.close();
11286path.moveTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11287path.quadTo(SkBits2Float(0x641ae35f), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 1.14287e+22f, 0, 0, 0
11288path.lineTo(SkBits2Float(0x6c6c586c), SkBits2Float(0x00000000)); // 1.1429e+27f, 0
11289path.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
11290path.lineTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
11291path.close();
11292
11293 SkPath path1(path);
11294 path.reset();
11295 path.setFillType((SkPath::FillType) 0);
11296path.moveTo(SkBits2Float(0x6c3e3e3e), SkBits2Float(0x586c79ff)); // 9.19959e+26f, 1.04003e+15f
11297path.quadTo(SkBits2Float(0x6c6c4a6c), SkBits2Float(0x6c6c6c6c), SkBits2Float(0xc83e6c6c), SkBits2Float(0x3e313e3e)); // 1.14263e+27f, 1.14327e+27f, -194994, 0.173089f
11298
11299 SkPath path2(path);
11300 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11301}
11302
11303static void fuzz763_36(skiatest::Reporter* reporter, const char* filename) {
11304 SkPath path;
11305 path.setFillType((SkPath::FillType) 0);
11306
11307 SkPath path1(path);
11308 path.reset();
11309 path.setFillType((SkPath::FillType) 0);
11310path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
11311path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
11312path.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
11313path.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
11314path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11315path.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
11316path.lineTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11317path.close();
11318path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11319path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11320path.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
11321path.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
11322path.lineTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11323path.close();
11324path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
11325path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
11326path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11327path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x03210807), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 5.76399e-19f, 4.73229e-37f, 6.14984e+25f, 75739
11328path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11329path.close();
11330path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11331path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3adf21), SkBits2Float(0x284f1a3a), SkBits2Float(0x213ab38a)); // 9.4456e-15f, -8.99754e-33f, 1.14965e-14f, 6.32569e-19f
11332path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11333path.close();
11334path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11335path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a20002a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000610354f, 2.50336e-13f
11336path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11337path.close();
11338path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11339path.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
11340path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4341f20), SkBits2Float(0xecc52a22)); // 2.22225e-15f, 0.000713932f, -720.486f, -1.90686e+27f
11341path.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
11342path.lineTo(SkBits2Float(0x1f2a2a8c), SkBits2Float(0x03210821)); // 3.60341e-20f, 4.7323e-37f
11343path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11344path.close();
11345path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11346path.conicTo(SkBits2Float(0x2eed6a7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28), SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28)); // 1.07964e-10f, 9.4495e-15f, 0.000617492f, 2.58753e+09f, 0.00136978f
11347path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11348path.close();
11349path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11350path.quadTo(SkBits2Float(0xe61d2a28), SkBits2Float(0x2a43962b), SkBits2Float(0x29272a81), SkBits2Float(0x2bb02a55)); // -1.85547e+23f, 1.73716e-13f, 3.71183e-14f, 1.25173e-12f
11351path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3ac52729), SkBits2Float(0xc4223b32), SkBits2Float(0x6c2a201f)); // 2.22225e-15f, 0.00150416f, -648.925f, 8.22676e+26f
11352
11353 SkPath path2(path);
11354 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11355}
11356
11357static void fuzz763_35(skiatest::Reporter* reporter, const char* filename) {
11358 SkPath path;
11359 path.setFillType((SkPath::FillType) 1);
11360
11361 SkPath path1(path);
11362 path.reset();
11363 path.setFillType((SkPath::FillType) 0);
11364path.moveTo(SkBits2Float(0x2aed2a8c), SkBits2Float(0x03210a1f)); // 4.21292e-13f, 4.73253e-37f
11365path.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
11366path.quadTo(SkBits2Float(0x74747474), SkBits2Float(0x74747474), SkBits2Float(0x20437474), SkBits2Float(0x43a52b02)); // 7.74708e+31f, 7.74708e+31f, 1.65557e-19f, 330.336f
11367path.moveTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
11368path.lineTo(SkBits2Float(0x4b7bd603), SkBits2Float(0x6cf33b6a)); // 1.65043e+07f, 2.3524e+27f
11369path.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
11370path.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
11371path.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
11372path.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
11373path.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
11374path.lineTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
11375path.close();
11376path.moveTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
11377path.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
11378path.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
11379path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x742974e8)); // 7.74706e+31f, 5.3703e+31f
11380path.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
11381path.moveTo(SkBits2Float(0x31292768), SkBits2Float(0x212d2aff)); // 2.46151e-09f, 5.86716e-19f
11382path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x323adf81), SkBits2Float(0x77291a3a), SkBits2Float(0x00002a49)); // 5.69738e-19f, 1.08774e-08f, 3.42981e+33f, 1.51691e-41f
11383path.moveTo(SkBits2Float(0x7474743e), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11384path.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
11385path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11386path.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
11387path.lineTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11388path.close();
11389path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
11390path.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
11391
11392 SkPath path2(path);
11393 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11394}
11395
11396static void fuzz763_37(skiatest::Reporter* reporter, const char* filename) {
11397 SkPath path;
11398 path.setFillType((SkPath::FillType) 0);
11399path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x5b2d3368)); // 1.59583e+13f, 4.87517e+16f
11400path.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
11401path.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
11402path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
11403path.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
11404path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
11405path.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
11406path.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
11407path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
11408path.close();
11409path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
11410path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
11411path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11412path.conicTo(SkBits2Float(0x721f2a5b), SkBits2Float(0x212a8c55), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4793ed7a)); // 3.1526e+30f, 5.7784e-19f, 4.7323e-37f, 6.14984e+25f, 75739
11413path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11414path.close();
11415path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11416path.quadTo(SkBits2Float(0x28282a2a), SkBits2Float(0x2c682921), SkBits2Float(0x8c555bf6), SkBits2Float(0x6d03de30)); // 9.33502e-15f, 3.2992e-12f, -1.64366e-31f, 2.5507e+27f
11417path.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
11418path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11419path.close();
11420path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11421path.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
11422path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11423path.close();
11424path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11425path.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
11426path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11427path.close();
11428path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
11429path.lineTo(SkBits2Float(0x8ced293a), SkBits2Float(0x5c5c5c5c)); // -3.65404e-31f, 2.48104e+17f
11430path.moveTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003)); // 4.61198e-19f, 1.64987e+07f
11431path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 9.43289e-15f, 4.8745e+16f
11432path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
11433path.lineTo(SkBits2Float(0x682d2952), SkBits2Float(0xee682103)); // 3.27093e+24f, -1.79601e+28f
11434path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x2a3b0355)); // 4.85282e+16f, 1.66101e-13f
11435path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
11436path.close();
11437path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
11438path.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
11439
11440 SkPath path1(path);
11441 path.reset();
11442 path.setFillType((SkPath::FillType) 0);
11443path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11444path.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
11445
11446 SkPath path2(path);
11447 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11448}
11449
11450static void fuzz763_38(skiatest::Reporter* reporter, const char* filename) {
11451 SkPath path;
11452 path.setFillType((SkPath::FillType) 0);
11453path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11454path.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
11455path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11456path.close();
11457path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11458path.close();
11459path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11460path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x2ac05252), SkBits2Float(0x727fb721)); // 4.80216e+30f, 2.25832e+11f, 3.41632e-13f, 5.06496e+30f
11461path.lineTo(SkBits2Float(0x73727322), SkBits2Float(0x555b2d29)); // 1.92088e+31f, 1.50617e+13f
11462path.lineTo(SkBits2Float(0xab2a212e), SkBits2Float(0x7a27872a)); // -6.04422e-13f, 2.17464e+35f
11463path.moveTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
11464path.quadTo(SkBits2Float(0x52524852), SkBits2Float(0x72525228), SkBits2Float(0x72727272), SkBits2Float(0x3a727272)); // 2.25789e+11f, 4.16584e+30f, 4.80216e+30f, 0.000924862f
11465path.lineTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
11466path.close();
11467path.moveTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
11468path.quadTo(SkBits2Float(0x2a292827), SkBits2Float(0x962b0080), SkBits2Float(0x5252752a), SkBits2Float(0x72725252)); // 1.50241e-13f, -1.38134e-25f, 2.25977e+11f, 4.79967e+30f
11469path.quadTo(SkBits2Float(0x72725252), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.79967e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
11470path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda000072), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.00732e+15f, 2.25867e+11f, 2.25831e+11f
11471path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525272), SkBits2Float(0x72525248), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16584e+30f, 4.80216e+30f
11472path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 2.25831e+11f
11473path.quadTo(SkBits2Float(0x86727272), SkBits2Float(0x5252528d), SkBits2Float(0x72525252), SkBits2Float(0x72727227)); // -4.55992e-35f, 2.25832e+11f, 4.16585e+30f, 4.80214e+30f
11474path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x29217272), SkBits2Float(0xc003211c), SkBits2Float(0x556a4b7b)); // 4.80216e+30f, 3.58484e-14f, -2.0489f, 1.61006e+13f
11475path.moveTo(SkBits2Float(0x72557272), SkBits2Float(0x00727272)); // 4.22775e+30f, 1.05103e-38f
11476path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11477path.close();
11478path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11479path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x3a727272), SkBits2Float(0x28273ac2), SkBits2Float(0x00802a29)); // 4.80216e+30f, 0.000924862f, 9.2831e-15f, 1.17701e-38f
11480path.lineTo(SkBits2Float(0x52752a96), SkBits2Float(0x72525252)); // 2.63245e+11f, 4.16585e+30f
11481path.quadTo(SkBits2Float(0x72525272), SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72727272)); // 4.16586e+30f, 2.25966e+11f, 2.25831e+11f, 4.80216e+30f
11482path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
11483path.lineTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11484path.close();
11485path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11486path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525272), SkBits2Float(0x72525248), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16584e+30f, 4.80216e+30f
11487path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x72525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 4.16585e+30f
11488path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x72727252), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada)); // 4.80216e+30f, 4.80215e+30f, -9.04113e+15f, 2.25867e+11f
11489path.lineTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11490path.close();
11491path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
11492path.quadTo(SkBits2Float(0x86727272), SkBits2Float(0x5252528d), SkBits2Float(0x72525252), SkBits2Float(0x72727227)); // -4.55992e-35f, 2.25832e+11f, 4.16585e+30f, 4.80214e+30f
11493path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x29217272), SkBits2Float(0xc003211c), SkBits2Float(0x556a4b7b)); // 4.80216e+30f, 3.58484e-14f, -2.0489f, 1.61006e+13f
11494path.moveTo(SkBits2Float(0x72557272), SkBits2Float(0x00727272)); // 4.22775e+30f, 1.05103e-38f
11495path.moveTo(SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 2.34994e+11f, 2.25831e+11f
11496path.close();
11497path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11498path.close();
11499path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11500path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
11501path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 2.25831e+11f
11502path.quadTo(SkBits2Float(0x52525272), SkBits2Float(0x3b3b0052), SkBits2Float(0x5b2d553a), SkBits2Float(0x68556829)); // 2.25832e+11f, 0.00285341f, 4.87889e+16f, 4.03114e+24f
11503
11504 SkPath path1(path);
11505 path.reset();
11506 path.setFillType((SkPath::FillType) 0);
11507path.moveTo(SkBits2Float(0x52528c55), SkBits2Float(0x29215252)); // 2.26074e+11f, 3.58206e-14f
11508
11509 SkPath path2(path);
11510 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11511}
11512
11513static void fuzz763_41(skiatest::Reporter* reporter, const char* filename) {
11514 SkPath path;
11515 path.setFillType((SkPath::FillType) 0);
11516
11517 SkPath path1(path);
11518 path.reset();
11519 path.setFillType((SkPath::FillType) 0);
11520path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11521path.quadTo(SkBits2Float(0x7a057c72), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x055f0089)); // 1.73275e+35f, 4.80216e+30f, 4.34505e+30f, 1.04855e-35f
11522path.quadTo(SkBits2Float(0x00057272), SkBits2Float(0x72ff0000), SkBits2Float(0xba405e72), SkBits2Float(0x031b0074)); // 5.00233e-40f, 1.01016e+31f, -0.000733829f, 4.55509e-37f
11523path.lineTo(SkBits2Float(0x664af700), SkBits2Float(0x56397d39)); // 2.39619e+23f, 5.09869e+13f
11524path.quadTo(SkBits2Float(0x7a057273), SkBits2Float(0x057300e4), SkBits2Float(0x257c0c9f), SkBits2Float(0x72400006)); // 1.73224e+35f, 1.1426e-35f, 2.18618e-16f, 3.80295e+30f
11525path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x030000ff), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8ec4000)); // -0.000836826f, 3.7617e-37f, 1.17894e+32f, -8.92527e+24f
11526path.moveTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d)); // 0.000231069f, 2.53975e+30f
11527path.quadTo(SkBits2Float(0x827a0572), SkBits2Float(0x08727272), SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // -1.83687e-37f, 7.29588e-34f, 4.09355e-34f, 4.09355e-34f
11528path.lineTo(SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // 4.09355e-34f, 4.09355e-34f
11529path.lineTo(SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // 4.09355e-34f, 4.09355e-34f
11530path.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
11531path.quadTo(SkBits2Float(0x00800039), SkBits2Float(0x72100039), SkBits2Float(0x727a0572), SkBits2Float(0x7a727272)); // 1.1755e-38f, 2.85223e+30f, 4.95218e+30f, 3.14714e+35f
11532path.lineTo(SkBits2Float(0x7272727a), SkBits2Float(0xdb5e6472)); // 4.80216e+30f, -6.25979e+16f
11533path.moveTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
11534path.lineTo(SkBits2Float(0x666d0100), SkBits2Float(0x726efe62)); // 2.79805e+23f, 4.73376e+30f
11535path.lineTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
11536path.close();
11537path.moveTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
11538path.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
11539path.quadTo(SkBits2Float(0x72057272), SkBits2Float(0x8c7a3472), SkBits2Float(0x72727272), SkBits2Float(0x00f6475e)); // 2.64319e+30f, -1.92751e-31f, 4.80216e+30f, 2.26171e-38f
11540path.moveTo(SkBits2Float(0x6d106d43), SkBits2Float(0x6efe6266)); // 2.79362e+27f, 3.93641e+28f
11541path.quadTo(SkBits2Float(0x72727a05), SkBits2Float(0xba5b7272), SkBits2Float(0x03000074), SkBits2Float(0x5aff00e8)); // 4.80274e+30f, -0.000837124f, 3.76163e-37f, 3.58886e+16f
11542path.quadTo(SkBits2Float(0x00da0039), SkBits2Float(0x72100039), SkBits2Float(0x727a0572), SkBits2Float(0x7a727272)); // 2.00202e-38f, 2.85223e+30f, 4.95218e+30f, 3.14714e+35f
11543path.lineTo(SkBits2Float(0x7272727a), SkBits2Float(0xdb5e6472)); // 4.80216e+30f, -6.25979e+16f
11544path.lineTo(SkBits2Float(0xfc5b97fc), SkBits2Float(0x47440039)); // -4.56078e+36f, 50176.2f
11545path.lineTo(SkBits2Float(0x00710000), SkBits2Float(0x62766d01)); // 1.03774e-38f, 1.13644e+21f
11546path.quadTo(SkBits2Float(0x7a05726e), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
11547
11548 SkPath path2(path);
11549 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11550}
11551
11552static void fuzz763_40(skiatest::Reporter* reporter, const char* filename) {
11553 SkPath path;
11554 path.setFillType((SkPath::FillType) 1);
11555
11556 SkPath path1(path);
11557 path.reset();
11558 path.setFillType((SkPath::FillType) 0);
11559path.moveTo(SkBits2Float(0x10190004), SkBits2Float(0x7272727a)); // 3.01739e-29f, 4.80216e+30f
11560path.quadTo(SkBits2Float(0xf3db5e64), SkBits2Float(0x5b97fc16), SkBits2Float(0x000039fc), SkBits2Float(0x01008000)); // -3.47604e+31f, 8.55598e+16f, 2.08009e-41f, 2.36017e-38f
11561path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x41720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 15.1251f
11562path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
11563path.lineTo(SkBits2Float(0x01000000), SkBits2Float(0x10010004)); // 2.35099e-38f, 2.54408e-29f
11564path.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
11565path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x63720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 4.46415e+21f
11566path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
11567path.lineTo(SkBits2Float(0x72000000), SkBits2Float(0x5b5e72b4)); // 2.5353e+30f, 6.26136e+16f
11568path.quadTo(SkBits2Float(0x05720089), SkBits2Float(0x05727272), SkBits2Float(0x7272727a), SkBits2Float(0x5b5e7272)); // 1.13789e-35f, 1.13998e-35f, 4.80216e+30f, 6.26133e+16f
11569path.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
11570path.moveTo(SkBits2Float(0x72008972), SkBits2Float(0x458fe705)); // 2.54594e+30f, 4604.88f
11571path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0xe8727272), SkBits2Float(0xba5b5e03), SkBits2Float(0x03000074)); // 1.73224e+35f, -4.5797e+24f, -0.00083682f, 3.76163e-37f
11572path.lineTo(SkBits2Float(0xf3dbff00), SkBits2Float(0x00397d16)); // -3.48598e+31f, 5.2795e-39f
11573path.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
11574
11575 SkPath path2(path);
11576 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11577}
11578
11579static void fuzz763_39(skiatest::Reporter* reporter, const char* filename) {
11580 SkPath path;
11581 path.setFillType((SkPath::FillType) 0);
11582
11583 SkPath path1(path);
11584 path.reset();
11585 path.setFillType((SkPath::FillType) 0);
11586path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11587path.quadTo(SkBits2Float(0x7a057c72), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x055f0089)); // 1.73275e+35f, 4.80216e+30f, 4.34505e+30f, 1.04855e-35f
11588path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xba405e72), SkBits2Float(0x03000074)); // 1.73224e+35f, 4.80216e+30f, -0.000733829f, 3.76163e-37f
11589path.lineTo(SkBits2Float(0x664aff00), SkBits2Float(0x56397d39)); // 2.39655e+23f, 5.09869e+13f
11590path.quadTo(SkBits2Float(0x7a057273), SkBits2Float(0x057300ff), SkBits2Float(0x257c0c9f), SkBits2Float(0x72787257)); // 1.73224e+35f, 1.1426e-35f, 2.18618e-16f, 4.92099e+30f
11591path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x03000093), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8ecff00)); // -0.000836826f, 3.76165e-37f, 1.17894e+32f, -8.95346e+24f
11592path.moveTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d)); // 0.000231069f, 2.53975e+30f
11593path.quadTo(SkBits2Float(0x827a0572), SkBits2Float(0x72727272), SkBits2Float(0x724adf00), SkBits2Float(0x00397d39)); // -1.83687e-37f, 4.80216e+30f, 4.01828e+30f, 5.27954e-39f
11594path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x16f3abab), SkBits2Float(0xfc5b97fc), SkBits2Float(0x47440039)); // 1.73224e+35f, 3.93671e-25f, -4.56078e+36f, 50176.2f
11595path.lineTo(SkBits2Float(0x00710000), SkBits2Float(0x62767201)); // 1.03774e-38f, 1.13653e+21f
11596path.quadTo(SkBits2Float(0x7a05726e), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
11597
11598 SkPath path2(path);
11599 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11600}
11601
11602
11603static void fuzz763_42(skiatest::Reporter* reporter, const char* filename) {
11604 SkPath path;
11605 path.setFillType((SkPath::FillType) 0);
11606
11607 SkPath path1(path);
11608 path.reset();
11609 path.setFillType((SkPath::FillType) 0);
11610path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11611path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x05720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 1.13789e-35f
11612path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xba405e72), SkBits2Float(0x03000074)); // 1.73224e+35f, 4.80216e+30f, -0.000733829f, 3.76163e-37f
11613path.lineTo(SkBits2Float(0x724aff00), SkBits2Float(0x56397d39)); // 4.02075e+30f, 5.09869e+13f
11614path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0xfa8d00ff), SkBits2Float(0x25727272), SkBits2Float(0x7272727a)); // 1.73224e+35f, -3.66067e+35f, 2.10289e-16f, 4.80216e+30f
11615path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x03000093), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8e0ff00)); // -0.000836826f, 3.76165e-37f, 1.17894e+32f, -8.50011e+24f
11616path.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
11617path.quadTo(SkBits2Float(0x00397d39), SkBits2Float(0x05727272), SkBits2Float(0x7272727a), SkBits2Float(0x385e7272)); // 5.27954e-39f, 1.13998e-35f, 4.80216e+30f, 5.30355e-05f
11618path.quadTo(SkBits2Float(0x057200ff), SkBits2Float(0x25727272), SkBits2Float(0x7272727a), SkBits2Float(0x5b5e7272)); // 1.1379e-35f, 2.10289e-16f, 4.80216e+30f, 6.26133e+16f
11619path.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
11620path.quadTo(SkBits2Float(0x2b2d16f3), SkBits2Float(0x0039fc4d), SkBits2Float(0x68800000), SkBits2Float(0x0100fafa)); // 6.14938e-13f, 5.32513e-39f, 4.8357e+24f, 2.369e-38f
11621path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x63720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 4.46415e+21f
11622path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
11623path.lineTo(SkBits2Float(0x72720000), SkBits2Float(0xff725b5e)); // 4.7933e+30f, -3.22148e+38f
11624path.moveTo(SkBits2Float(0x72720572), SkBits2Float(0x5b5e2572)); // 4.79373e+30f, 6.25286e+16f
11625path.quadTo(SkBits2Float(0x05720089), SkBits2Float(0x25727272), SkBits2Float(0x72728c7a), SkBits2Float(0x5b5e7272)); // 1.13789e-35f, 2.10289e-16f, 4.80417e+30f, 6.26133e+16f
11626path.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
11627path.quadTo(SkBits2Float(0x97fc16f3), SkBits2Float(0x0039fc5b), SkBits2Float(0x00f6472e), SkBits2Float(0x01008000)); // -1.62909e-24f, 5.32515e-39f, 2.26171e-38f, 2.36017e-38f
11628path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
11629
11630 SkPath path2(path);
11631 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11632}
11633
11634static void fuzz763_43(skiatest::Reporter* reporter, const char* filename) {
11635 SkPath path;
11636 path.setFillType((SkPath::FillType) 1);
11637
11638 SkPath path1(path);
11639 path.reset();
11640 path.setFillType((SkPath::FillType) 0);
11641path.moveTo(SkBits2Float(0x5c386c3a), SkBits2Float(0x4e691a3e)); // 2.07642e+17f, 9.77703e+08f
11642path.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
11643path.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
11644path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11645path.close();
11646path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11647path.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
11648path.lineTo(SkBits2Float(0x438a0b9c), SkBits2Float(0x60a1d2c8)); // 276.091f, 9.32848e+19f
11649path.quadTo(SkBits2Float(0xe13fb902), SkBits2Float(0x07ee536f), SkBits2Float(0x971d8ac1), SkBits2Float(0x2f9f174b)); // -2.21041e+20f, 3.58593e-34f, -5.09046e-25f, 2.89385e-10f
11650path.lineTo(SkBits2Float(0x0f2cf5d8), SkBits2Float(0xe271654c)); // 8.5276e-30f, -1.11324e+21f
11651path.lineTo(SkBits2Float(0xe6cf24d2), SkBits2Float(0xd9537742)); // -4.89105e+23f, -3.72015e+15f
11652path.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
11653path.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
11654path.lineTo(SkBits2Float(0xda45ad4e), SkBits2Float(0xedce4a04)); // -1.39103e+16f, -7.98042e+27f
11655path.lineTo(SkBits2Float(0xac0e45da), SkBits2Float(0x8f632841)); // -2.02182e-12f, -1.11997e-29f
11656path.lineTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11657path.close();
11658path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
11659path.quadTo(SkBits2Float(0xf35c4ad5), SkBits2Float(0x0692f251), SkBits2Float(0x69632126), SkBits2Float(0xb927af67)); // -1.74534e+31f, 5.52751e-35f, 1.71614e+25f, -0.000159917f
11660path.moveTo(SkBits2Float(0x6534bff9), SkBits2Float(0x434a9986)); // 5.3348e+22f, 202.6f
11661path.quadTo(SkBits2Float(0x37c603e5), SkBits2Float(0xa0683953), SkBits2Float(0x751915e4), SkBits2Float(0x831c911a)); // 2.36053e-05f, -1.96701e-19f, 1.94059e+32f, -4.60108e-37f
11662path.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
11663path.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
11664
11665 SkPath path2(path);
11666 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11667}
11668
11669static void fuzz763_44(skiatest::Reporter* reporter, const char* filename) {
11670 SkPath path;
11671 path.setFillType((SkPath::FillType) 1);
11672path.moveTo(SkBits2Float(0x7c223bab), SkBits2Float(0x7cf35966)); // 3.36945e+36f, 1.01083e+37f
11673path.quadTo(SkBits2Float(0x00000000), SkBits2Float(0x7ccaca6d), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 8.4236e+36f, 0, 0
11674path.lineTo(SkBits2Float(0x7d7d7d7d), SkBits2Float(0x00000000)); // 2.10591e+37f, 0
11675path.quadTo(SkBits2Float(0x7ccacab0), SkBits2Float(0x7d1817f4), SkBits2Float(0x7c223bab), SkBits2Float(0x7cf35966)); // 8.42364e+36f, 1.26354e+37f, 3.36945e+36f, 1.01083e+37f
11676path.close();
11677
11678 SkPath path1(path);
11679 path.reset();
11680 path.setFillType((SkPath::FillType) 0);
11681path.moveTo(SkBits2Float(0x109d0000), SkBits2Float(0xff7bc000)); // 6.19256e-29f, -3.34633e+38f
11682path.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
11683path.quadTo(SkBits2Float(0x72728302), SkBits2Float(0x8b727272), SkBits2Float(0x72727272), SkBits2Float(0xc00308f6)); // 4.80344e+30f, -4.66936e-32f, 4.80216e+30f, -2.04742f
11684path.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
11685
11686 SkPath path2(path);
11687 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11688}
11689
11690static void fuzz763_45(skiatest::Reporter* reporter, const char* filename) {
11691 SkPath path;
11692 path.setFillType((SkPath::FillType) 0);
11693
11694 SkPath path1(path);
11695 path.reset();
11696 path.setFillType((SkPath::FillType) 0);
11697path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11698path.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
11699path.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
11700path.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
11701path.moveTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11702path.moveTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
11703path.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
11704path.lineTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
11705path.close();
11706path.moveTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
11707path.lineTo(SkBits2Float(0x7f303030), SkBits2Float(0x7a303030)); // 2.34194e+38f, 2.28705e+35f
11708path.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
11709path.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
11710path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11711path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
11712path.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
11713path.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
11714path.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
11715path.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
11716path.moveTo(SkBits2Float(0x77303030), SkBits2Float(0xff303030)); // 3.57352e+33f, -2.34194e+38f
11717path.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
11718path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x77303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 3.57352e+33f, 6.40969e-10f
11719path.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
11720path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a7a3030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 3.24763e+35f
11721 SkPath path2(path);
11722 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11723}
11724
11725static void fuzz763_46(skiatest::Reporter* reporter, const char* filename) {
11726 SkPath path;
11727 path.setFillType((SkPath::FillType) 0);
11728
11729 SkPath path1(path);
11730 path.reset();
11731 path.setFillType((SkPath::FillType) 0);
11732path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11733 path.conicTo(SkBits2Float(0x44444444), SkBits2Float(0x44444444), SkBits2Float(0x44263030), SkBits2Float(0x44304430), SkBits2Float(0x4c444430)); // 785.067f, 785.067f, 664.753f, 705.065f, 5.145e+07f
11734path.moveTo(SkBits2Float(0x44444444), SkBits2Float(0x44444444)); // 785.067f, 785.067f
11735path.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
11736 SkPath path2(path);
11737 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11738}
11739
11740static void fuzz763_47(skiatest::Reporter* reporter, const char* filename) {
11741 SkPath path;
11742 path.setFillType((SkPath::FillType) 1);
11743
11744 SkPath path1(path);
11745 path.reset();
11746 path.setFillType((SkPath::FillType) 0);
11747path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11748path.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
11749path.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
11750path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11751path.close();
11752path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11753path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x7272081f)); // 1.43144e-13f, 4.79393e+30f
11754path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x5974fa80), SkBits2Float(0x00747474), SkBits2Float(0x59585264)); // 4.80216e+30f, 4.30971e+15f, 1.06947e-38f, 3.80557e+15f
11755path.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
11756path.quadTo(SkBits2Float(0x80807d80), SkBits2Float(0x80808080), SkBits2Float(0xff7f0000), SkBits2Float(0x80808080)); // -1.18e-38f, -1.1801e-38f, -3.38953e+38f, -1.1801e-38f
11757path.quadTo(SkBits2Float(0x80808080), SkBits2Float(0x80808080), SkBits2Float(0xed842b00), SkBits2Float(0x7252ff6d)); // -1.1801e-38f, -1.1801e-38f, -5.113e+27f, 4.17924e+30f
11758path.quadTo(SkBits2Float(0x72577200), SkBits2Float(0x55525352), SkBits2Float(0x2a212a8c), SkBits2Float(0x7272081f)); // 4.26733e+30f, 1.44535e+13f, 1.43144e-13f, 4.79393e+30f
11759path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x6f740080), SkBits2Float(0x8c556874), SkBits2Float(0x2982ffff)); // 4.80216e+30f, 7.55149e+28f, -1.64404e-31f, 5.81757e-14f
11760
11761 SkPath path2(path);
11762 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11763}
11764
11765static void fuzz763_48(skiatest::Reporter* reporter, const char* filename) {
11766 SkPath path;
11767 path.setFillType((SkPath::FillType) 1);
11768
11769 SkPath path1(path);
11770 path.reset();
11771 path.setFillType((SkPath::FillType) 0);
11772path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11773path.lineTo(SkBits2Float(0xed0081bc), SkBits2Float(0x1b2d8040)); // -2.48568e+27f, 1.43517e-22f
11774path.moveTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
11775path.close();
11776path.moveTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
11777path.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
11778path.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
11779path.lineTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
11780path.close();
11781path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11782path.close();
11783path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11784path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52524872), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.2579e+11f, 4.16585e+30f, 4.80216e+30f
11785path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0x80406666), SkBits2Float(0x68291b2d), SkBits2Float(0x0315ff80)); // 4.80215e+30f, -5.91421e-39f, 3.19432e+24f, 4.40805e-37f
11786path.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
11787path.lineTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11788path.close();
11789path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11790path.quadTo(SkBits2Float(0x72727227), SkBits2Float(0x72727272), SkBits2Float(0x74727272), SkBits2Float(0x55747421)); // 4.80214e+30f, 4.80216e+30f, 7.68345e+31f, 1.67987e+13f
11791path.lineTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
11792path.close();
11793path.moveTo(SkBits2Float(0x724b0000), SkBits2Float(0x00725f72)); // 4.02083e+30f, 1.05035e-38f
11794path.lineTo(SkBits2Float(0x52525252), SkBits2Float(0x72725252)); // 2.25831e+11f, 4.79967e+30f
11795path.quadTo(SkBits2Float(0x26727272), SkBits2Float(0x0303a525), SkBits2Float(0x52005c03), SkBits2Float(0x72525252)); // 8.41157e-16f, 3.8687e-37f, 1.37825e+11f, 4.16585e+30f
11796path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x1ff07255), SkBits2Float(0x2a8c5572), SkBits2Float(0x21082a21)); // 4.80216e+30f, 1.01833e-19f, 2.49283e-13f, 4.61343e-19f
11797path.lineTo(SkBits2Float(0x2a2a3a21), SkBits2Float(0x29212828)); // 1.51192e-13f, 3.5784e-14f
11798
11799 SkPath path2(path);
11800 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11801}
11802
11803static void fuzz763_49(skiatest::Reporter* reporter, const char* filename) {
11804 SkPath path;
11805 path.setFillType((SkPath::FillType) 0);
11806
11807 SkPath path1(path);
11808 path.reset();
11809 path.setFillType((SkPath::FillType) 0);
11810path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11811path.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
11812path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11813path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11814path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
11815path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x78787878), SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 6.40969e-10f, 2.01583e+34f, 2.01583e+34f, 2.01583e+34f
11816path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11817path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11818path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11819path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11820path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11821path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11822path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11823path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11824path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11825path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11826path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11827path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11828path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
11829path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x7878788d)); // 2.01583e+34f, 2.01584e+34f
11830path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x30303030)); // 2.01583e+34f, 6.40969e-10f
11831
11832 SkPath path2(path);
11833 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11834}
11835
11836static void fuzz763_50(skiatest::Reporter* reporter, const char* filename) {
11837 SkPath path;
11838 path.setFillType((SkPath::FillType) 1);
11839path.moveTo(SkBits2Float(0x70621ede), SkBits2Float(0x00000000)); // 2.79924e+29f, 0
11840path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x74fc5b97), SkBits2Float(0x7d458fe4)); // 0, 0, 0, 1.59951e+32f, 1.64128e+37f
11841path.lineTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
11842path.lineTo(SkBits2Float(0x70621ede), SkBits2Float(0x00000000)); // 2.79924e+29f, 0
11843path.close();
11844path.moveTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
11845path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11846path.lineTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
11847path.close();
11848
11849 SkPath path1(path);
11850 path.reset();
11851 path.setFillType((SkPath::FillType) 0);
11852
11853 SkPath path2(path);
11854 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
11855}
11856
11857static void fuzz763_51(skiatest::Reporter* reporter, const char* filename) {
11858 SkPath path;
11859 path.setFillType((SkPath::FillType) 1);
11860
11861 SkPath path1(path);
11862 path.reset();
11863 path.setFillType((SkPath::FillType) 0);
11864path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11865path.quadTo(SkBits2Float(0x868b5aae), SkBits2Float(0x626c45ab), SkBits2Float(0xefea1ffe), SkBits2Float(0x0029fc76)); // -5.24192e-35f, 1.08961e+21f, -1.44916e+29f, 3.85582e-39f
11866path.moveTo(SkBits2Float(0xfacbff01), SkBits2Float(0x56fc5b97)); // -5.29604e+35f, 1.38735e+14f
11867path.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
11868
11869 SkPath path2(path);
11870 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11871}
11872
11873static void fuzz763_52(skiatest::Reporter* reporter, const char* filename) {
11874 SkPath path;
11875 path.setFillType((SkPath::FillType) 1);
11876
11877 SkPath path1(path);
11878 path.reset();
11879 path.setFillType((SkPath::FillType) 0);
11880path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11881path.quadTo(SkBits2Float(0x29ff4bae), SkBits2Float(0xa1d75590), SkBits2Float(0x9fd6f6c3), SkBits2Float(0x70621ede)); // 1.13374e-13f, -1.45916e-18f, -9.10408e-20f, 2.79924e+29f
11882path.quadTo(SkBits2Float(0x57a839d3), SkBits2Float(0x1a80d34b), SkBits2Float(0x0147a31b), SkBits2Float(0xff7fffff)); // 3.69933e+14f, 5.32809e-23f, 3.66675e-38f, -3.40282e+38f
11883path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11884path.close();
11885path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11886path.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
11887path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11888path.close();
11889path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11890path.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
11891path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11892path.close();
11893path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11894path.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
11895path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
11896path.close();
11897
11898 SkPath path2(path);
11899 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
11900}
11901
11902static void fuzz763_53(skiatest::Reporter* reporter, const char* filename) {
11903 SkPath path;
11904 path.setFillType((SkPath::FillType) 1);
11905path.moveTo(SkBits2Float(0x7644b829), SkBits2Float(0x00000000)); // 9.97486e+32f, 0
11906path.lineTo(SkBits2Float(0x74fc5b97), SkBits2Float(0x77df944a)); // 1.59951e+32f, 9.06945e+33f
11907path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf8fbe3ff)); // 0, -4.08716e+34f
11908path.lineTo(SkBits2Float(0x7644b829), SkBits2Float(0x00000000)); // 9.97486e+32f, 0
11909path.close();
11910
11911 SkPath path1(path);
11912 path.reset();
11913 path.setFillType((SkPath::FillType) 0);
11914path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11915path.quadTo(SkBits2Float(0x45ab86ae), SkBits2Float(0xd6d6626c), SkBits2Float(0xd6d6d6d6), SkBits2Float(0x7644d6d6)); // 5488.83f, -1.17859e+14f, -1.18109e+14f, 9.98093e+32f
11916path.moveTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0xd6d6d6d6)); // -1.18109e+14f, -1.18109e+14f
11917path.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
11918path.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
11919path.lineTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0xd6d6d6d6)); // -1.18109e+14f, -1.18109e+14f
11920path.close();
11921path.moveTo(SkBits2Float(0xef08a412), SkBits2Float(0x5aaeff7f)); // -4.22883e+28f, 2.46288e+16f
11922path.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
11923path.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
11924path.lineTo(SkBits2Float(0xef08a412), SkBits2Float(0x5aaeff7f)); // -4.22883e+28f, 2.46288e+16f
11925path.close();
11926
11927 SkPath path2(path);
11928 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
11929}
11930
11931// hangs 654939
11932static void fuzz763_54(skiatest::Reporter* reporter, const char* filename) {
11933 SkPath path;
11934 path.setFillType((SkPath::FillType) 0);
11935path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11936path.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
11937path.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
11938path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11939path.close();
11940path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11941path.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
11942path.quadTo(SkBits2Float(0xd7da0000), SkBits2Float(0x5252525a), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // -4.79387e+14f, 2.25831e+11f, 4.16585e+30f, 4.80216e+30f
11943path.quadTo(SkBits2Float(0x48525252), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 215369, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
11944path.quadTo(SkBits2Float(0xdada007b), SkBits2Float(0x5252525a), SkBits2Float(0x72675252), SkBits2Float(0x72727272)); // -3.0681e+16f, 2.25831e+11f, 4.5818e+30f, 4.80216e+30f
11945path.quadTo(SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 2.25831e+11f, 3.36289e-15f, 4.80216e+30f, 4.80216e+30f
11946path.quadTo(SkBits2Float(0x1c292172), SkBits2Float(0x7bc00321), SkBits2Float(0x9aaaaaaa), SkBits2Float(0x8c556a4b)); // 5.59606e-22f, 1.99397e+36f, -7.05861e-23f, -1.64409e-31f
11947path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
11948path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
11949path.close();
11950path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11951path.close();
11952path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
11953path.quadTo(SkBits2Float(0x72725570), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.79991e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
11954path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0x555bb672), SkBits2Float(0x29686968), SkBits2Float(0x252a081f)); // 4.80215e+30f, 1.50985e+13f, 5.16058e-14f, 1.47479e-16f
11955path.moveTo(SkBits2Float(0x5d68392a), SkBits2Float(0x01002780)); // 1.04584e+18f, 2.35382e-38f
11956path.moveTo(SkBits2Float(0x72727200), SkBits2Float(0x72725252)); // 4.80212e+30f, 4.79967e+30f
11957path.quadTo(SkBits2Float(0x5adada00), SkBits2Float(0xa5252652), SkBits2Float(0x727272ad), SkBits2Float(0xda007b72)); // 3.08006e+16f, -1.43245e-16f, 4.80218e+30f, -9.04113e+15f
11958path.lineTo(SkBits2Float(0x5252525a), SkBits2Float(0x72525252)); // 2.25831e+11f, 4.16585e+30f
11959path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
11960path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x74217472), SkBits2Float(0x005b5574), SkBits2Float(0x72680000)); // 4.80216e+30f, 5.11671e+31f, 8.38768e-39f, 4.59523e+30f
11961path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x007b7272), SkBits2Float(0x525adada)); // 4.80216e+30f, 2.25831e+11f, 1.13368e-38f, 2.34994e+11f
11962path.lineTo(SkBits2Float(0x72727200), SkBits2Float(0x72725252)); // 4.80212e+30f, 4.79967e+30f
11963path.close();
11964
11965 SkPath path1(path);
11966 path.reset();
11967 path.setFillType((SkPath::FillType) 0);
11968
11969 SkPath path2(path);
11970 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
11971}
11972
11973
11974// afl crash
11975static void fuzz763_55(skiatest::Reporter* reporter, const char* filename) {
11976 SkPath path;
11977 path.setFillType((SkPath::FillType) 0);
11978path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
11979path.lineTo(SkBits2Float(0x55555568), SkBits2Float(0x55555555)); // 1.46602e+13f, 1.46602e+13f
11980path.lineTo(SkBits2Float(0x98989898), SkBits2Float(0x55989898)); // -3.94452e-24f, 2.09726e+13f
11981path.lineTo(SkBits2Float(0xf6f65555), SkBits2Float(0x101006f6)); // -2.49812e+33f, 2.84044e-29f
11982path.quadTo(SkBits2Float(0xdca33f10), SkBits2Float(0xf6f6f6f6), SkBits2Float(0xf621f6f6), SkBits2Float(0xf70ff6f6)); // -3.67598e+17f, -2.50452e+33f, -8.21259e+32f, -2.91995e+33f
11983path.lineTo(SkBits2Float(0x9400f6f6), SkBits2Float(0x10530000)); // -6.51105e-27f, 4.16124e-29f
11984path.quadTo(SkBits2Float(0x0f101010), SkBits2Float(0x00101010), SkBits2Float(0xf610f720), SkBits2Float(0xf6f6f6f6)); // 7.10284e-30f, 1.47513e-39f, -7.35062e+32f, -2.50452e+33f
11985path.lineTo(SkBits2Float(0x105352f6), SkBits2Float(0x1cf6ff10)); // 4.16763e-29f, 1.63448e-21f
11986path.lineTo(SkBits2Float(0xf6f6220a), SkBits2Float(0x003700f6)); // -2.49608e+33f, 5.0513e-39f
11987path.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
11988path.quadTo(SkBits2Float(0x10101007), SkBits2Float(0x10f7fd10), SkBits2Float(0xf6f6f6f6), SkBits2Float(0xf6f645e0)); // 2.84113e-29f, 9.78142e-29f, -2.50452e+33f, -2.4975e+33f
11989path.lineTo(SkBits2Float(0xed9ef6f6), SkBits2Float(0x53535353)); // -6.14965e+27f, 9.07636e+11f
11990path.lineTo(SkBits2Float(0x53006cf6), SkBits2Float(0x53295353)); // 5.51584e+11f, 7.27247e+11f
11991path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
11992path.close();
11993path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
11994path.lineTo(SkBits2Float(0xf6f6f6f6), SkBits2Float(0x5353d9f6)); // -2.50452e+33f, 9.09895e+11f
11995
11996 SkPath path1(path);
11997 path.reset();
11998 path.setFillType((SkPath::FillType) 0);
11999
12000 SkPath path2(path);
12001 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
12002}
12003
12004// 656149
12005static void fuzz763_56(skiatest::Reporter* reporter, const char* filename) {
12006 SkPath path;
12007 path.setFillType((SkPath::FillType) 0);
12008path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12009path.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
12010path.quadTo(SkBits2Float(0x525252c7), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 2.25833e+11f, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
12011path.quadTo(SkBits2Float(0xd7da0000), SkBits2Float(0x5adada00), SkBits2Float(0x52525252), SkBits2Float(0x00005252)); // -4.79387e+14f, 3.08006e+16f, 2.25831e+11f, 2.9531e-41f
12012path.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
12013path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12014path.close();
12015path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12016path.quadTo(SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255), SkBits2Float(0xda007b72)); // 4.79967e+30f, 4.80216e+30f, 4.80215e+30f, -9.04113e+15f
12017path.lineTo(SkBits2Float(0x5252525a), SkBits2Float(0x72525252)); // 2.25831e+11f, 4.16585e+30f
12018path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
12019path.lineTo(SkBits2Float(0x7bc00321), SkBits2Float(0x9aaaaaaa)); // 1.99397e+36f, -7.05861e-23f
12020path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
12021path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12022path.close();
12023path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
12024path.close();
12025path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
12026path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
12027path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x26525ada), SkBits2Float(0x72ada525)); // 4.80215e+30f, -9.04113e+15f, 7.29815e-16f, 6.87879e+30f
12028path.quadTo(SkBits2Float(0x007b7272), SkBits2Float(0x525adada), SkBits2Float(0x52525252), SkBits2Float(0x72727252)); // 1.13368e-38f, 2.34994e+11f, 2.25831e+11f, 4.80215e+30f
12029path.quadTo(SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72722772), SkBits2Float(0x72727272)); // 2.25966e+11f, 2.25831e+11f, 4.79636e+30f, 4.80216e+30f
12030path.quadTo(SkBits2Float(0x74727272), SkBits2Float(0x55747421), SkBits2Float(0x0000005b), SkBits2Float(0x72727268)); // 7.68345e+31f, 1.67987e+13f, 1.27518e-43f, 4.80216e+30f
12031path.quadTo(SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72727272), SkBits2Float(0x72557272)); // 2.25966e+11f, 2.25831e+11f, 4.80216e+30f, 4.22775e+30f
12032path.quadTo(SkBits2Float(0x5adada72), SkBits2Float(0x52525252), SkBits2Float(0x72725252), SkBits2Float(0x72727272)); // 3.08009e+16f, 2.25831e+11f, 4.79967e+30f, 4.80216e+30f
12033
12034 SkPath path1(path);
12035 path.reset();
12036 path.setFillType((SkPath::FillType) 0);
12037
12038 SkPath path2(path);
12039 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
12040}
12041
12042static void fuzz763_57(skiatest::Reporter* reporter, const char* filename) {
12043 SkPath path;
12044 path.setFillType((SkPath::FillType) 0);
12045
12046 SkPath path1(path);
12047 path.reset();
12048 path.setFillType((SkPath::FillType) 0);
12049path.moveTo(SkBits2Float(0x68546829), SkBits2Float(0x555b2d29)); // 4.01225e+24f, 1.50617e+13f
12050path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0x4b7b2108)); // 3.60404e-20f, 1.6458e+07f
12051path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 9.43289e-15f, 4.8745e+16f
12052path.moveTo(SkBits2Float(0x6838552d), SkBits2Float(0xf0684f5b)); // 3.48195e+24f, -2.87586e+29f
12053path.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
12054path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x3b2a8c55)); // 4.85282e+16f, 0.00260236f
12055path.lineTo(SkBits2Float(0x6838552d), SkBits2Float(0xf0684f5b)); // 3.48195e+24f, -2.87586e+29f
12056path.close();
12057path.moveTo(SkBits2Float(0x6838552d), SkBits2Float(0xf0684f5b)); // 3.48195e+24f, -2.87586e+29f
12058path.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
12059path.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
12060path.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
12061path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
12062path.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
12063path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
12064path.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
12065path.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
12066path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
12067path.close();
12068path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
12069path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
12070path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12071path.conicTo(SkBits2Float(0x721f2a5b), SkBits2Float(0x212a8c55), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4797ed7a)); // 3.1526e+30f, 5.7784e-19f, 4.7323e-37f, 6.14984e+25f, 77787
12072path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12073path.close();
12074path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12075path.quadTo(SkBits2Float(0x2828102a), SkBits2Float(0x2c682921), SkBits2Float(0x8c555bf6), SkBits2Float(0x6d03de30)); // 9.32938e-15f, 3.2992e-12f, -1.64366e-31f, 2.5507e+27f
12076path.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
12077path.lineTo(SkBits2Float(0x3a803adf), SkBits2Float(0x8a294f1a)); // 0.000978317f, -8.15193e-33f
12078path.quadTo(SkBits2Float(0x291d9628), SkBits2Float(0x2a43e62b), SkBits2Float(0x093a2a81), SkBits2Float(0x5c5c8ced)); // 3.49912e-14f, 1.73993e-13f, 2.24089e-33f, 2.48318e+17f
12079path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12080path.close();
12081path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
12082path.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
12083path.lineTo(SkBits2Float(0x1f212a8c), SkBits2Float(0xc0032108)); // 3.41283e-20f, -2.04889f
12084path.lineTo(SkBits2Float(0xed847b4b), SkBits2Float(0x2d552829)); // -5.12513e+27f, 1.21166e-11f
12085path.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
12086
12087 SkPath path2(path);
12088 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
12089}
12090
12091static void fuzzhang_1(skiatest::Reporter* reporter, const char* filename) {
12092 SkPath path;
12093 path.setFillType((SkPath::FillType) 1);
12094path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12095path.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
12096path.conicTo(SkBits2Float(0x66f837a9), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x3f823406)); // 5.86087e+23f, 0, 0, 0, 1.01721f
12097path.close();
12098path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12099path.quadTo(SkBits2Float(0x675b1bfe), SkBits2Float(0x00000000), SkBits2Float(0x67d76c42), SkBits2Float(0x6292c469)); // 1.03471e+24f, 0, 2.03461e+24f, 1.35369e+21f
12100path.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
12101path.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
12102path.quadTo(SkBits2Float(0x679e1b26), SkBits2Float(0x687703c4), SkBits2Float(0x00000000), SkBits2Float(0x687d2968)); // 1.49327e+24f, 4.66598e+24f, 0, 4.78209e+24f
12103path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12104path.close();
12105
12106 SkPath path1(path);
12107 path.reset();
12108 path.setFillType((SkPath::FillType) 0);
12109path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12110path.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
12111path.quadTo(SkBits2Float(0xf8f8c0ed), SkBits2Float(0xf8f8f8f8), SkBits2Float(0x9f9f9f9f), SkBits2Float(0x3014149f)); // -4.03626e+34f, -4.03981e+34f, -6.76032e-20f, 5.38714e-10f
12112
12113 SkPath path2(path);
12114 testPathOp(reporter, path1, path2, (SkPathOp) 0, filename);
12115}
12116
12117static void release_13(skiatest::Reporter* reporter, const char* filename) {
12118 SkPath path;
12119 path.setFillType((SkPath::FillType) 1);
12120path.setFillType(SkPath::kEvenOdd_FillType);
12121path.moveTo(SkBits2Float(0xd4438848), SkBits2Float(0xd488cf64)); // -3.35922e+12f, -4.70076e+12f
12122path.lineTo(SkBits2Float(0xd43a056e), SkBits2Float(0xd4851696)); // -3.19582e+12f, -4.57288e+12f
12123path.quadTo(SkBits2Float(0xd3d48e79), SkBits2Float(0xd49fb136), SkBits2Float(0x00000000), SkBits2Float(0xd4d4d4d4)); // -1.82585e+12f, -5.48698e+12f, 0, -7.31283e+12f
12124path.quadTo(SkBits2Float(0xd3d06670), SkBits2Float(0xd4a0bb38), SkBits2Float(0xd41d628f), SkBits2Float(0xd472c531)); // -1.79014e+12f, -5.52269e+12f, -2.70385e+12f, -4.17076e+12f
12125path.lineTo(SkBits2Float(0xd43a0559), SkBits2Float(0xd485168e)); // -3.19581e+12f, -4.57287e+12f
12126path.lineTo(SkBits2Float(0xd446958b), SkBits2Float(0xd4810278)); // -3.41165e+12f, -4.43274e+12f
12127path.lineTo(SkBits2Float(0xd443884a), SkBits2Float(0xd488cf65)); // -3.35922e+12f, -4.70076e+12f
12128path.quadTo(SkBits2Float(0xd47efa09), SkBits2Float(0xd49fd72a), SkBits2Float(0xd4a63f0f), SkBits2Float(0xd4b83ab3)); // -4.38047e+12f, -5.49208e+12f, -5.71218e+12f, -6.33007e+12f
12129path.lineTo(SkBits2Float(0xd497ca70), SkBits2Float(0xd4c4d4ae)); // -5.21549e+12f, -6.76305e+12f
12130path.lineTo(SkBits2Float(0xd459d4d4), SkBits2Float(0xd4c4d4d4)); // -3.74231e+12f, -6.76307e+12f
12131path.lineTo(SkBits2Float(0xd440daf9), SkBits2Float(0xd4c632d3)); // -3.31323e+12f, -6.81005e+12f
12132path.lineTo(SkBits2Float(0xd4438848), SkBits2Float(0xd488cf64)); // -3.35922e+12f, -4.70076e+12f
12133path.close();
12134path.moveTo(SkBits2Float(0xd4767560), SkBits2Float(0xd4d1ca84)); // -4.23412e+12f, -7.20837e+12f
12135path.lineTo(SkBits2Float(0xd4422174), SkBits2Float(0xd4d02069)); // -3.33514e+12f, -7.15118e+12f
12136path.lineTo(SkBits2Float(0xd440daa3), SkBits2Float(0xd4c632d9)); // -3.31321e+12f, -6.81005e+12f
12137path.lineTo(SkBits2Float(0xd41017bc), SkBits2Float(0xd4cb99b6)); // -2.47549e+12f, -6.99566e+12f
12138path.lineTo(SkBits2Float(0xd442213b), SkBits2Float(0xd4d02067)); // -3.33512e+12f, -7.15117e+12f
12139path.lineTo(SkBits2Float(0xd442d4d4), SkBits2Float(0xd4d4d4d4)); // -3.34718e+12f, -7.31283e+12f
12140path.lineTo(SkBits2Float(0xd4767560), SkBits2Float(0xd4d1ca84)); // -4.23412e+12f, -7.20837e+12f
12141path.close();
12142path.moveTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12143path.lineTo(SkBits2Float(0xd484e02c), SkBits2Float(0xd45fafcd)); // -4.56557e+12f, -3.84291e+12f
12144path.lineTo(SkBits2Float(0xd462c867), SkBits2Float(0xd45655f7)); // -3.8961e+12f, -3.68226e+12f
12145path.lineTo(SkBits2Float(0xd45ac463), SkBits2Float(0xd45ac505)); // -3.75839e+12f, -3.75843e+12f
12146path.lineTo(SkBits2Float(0xd43d2fa9), SkBits2Float(0xd43d2fb5)); // -3.25019e+12f, -3.2502e+12f
12147path.lineTo(SkBits2Float(0xd41d6287), SkBits2Float(0xd472c52a)); // -2.70385e+12f, -4.17076e+12f
12148path.quadTo(SkBits2Float(0x00000000), SkBits2Float(0xd3db1b95), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, -1.88212e+12f, 0, 0
12149path.quadTo(SkBits2Float(0xd4b7efac), SkBits2Float(0x00000000), SkBits2Float(0xd4d0e88f), SkBits2Float(0xd40b8b46)); // -6.32e+12f, 0, -7.17804e+12f, -2.39735e+12f
12150path.lineTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0x00000000)); // -7.31283e+12f, 0
12151path.lineTo(SkBits2Float(0xdcdc154b), SkBits2Float(0x00000000)); // -4.95583e+17f, 0
12152path.lineTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4c4d477)); // -7.31283e+12f, -6.76303e+12f
12153path.lineTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d442)); // -7.31283e+12f, -7.31275e+12f
12154path.lineTo(SkBits2Float(0xd4d4a691), SkBits2Float(0xd4d4d442)); // -7.30662e+12f, -7.31275e+12f
12155path.lineTo(SkBits2Float(0xd454d4d4), SkBits2Float(0xd4d4aa30)); // -3.65641e+12f, -7.30711e+12f
12156path.lineTo(SkBits2Float(0xd4bd9def), SkBits2Float(0xd4d43df0)); // -6.51519e+12f, -7.29258e+12f
12157path.lineTo(SkBits2Float(0xd4767560), SkBits2Float(0xd4d1ca84)); // -4.23412e+12f, -7.20837e+12f
12158path.lineTo(SkBits2Float(0xd497ca70), SkBits2Float(0xd4c4d4ae)); // -5.21549e+12f, -6.76305e+12f
12159path.lineTo(SkBits2Float(0xd4bab953), SkBits2Float(0xd4c4d48e)); // -6.41579e+12f, -6.76304e+12f
12160path.lineTo(SkBits2Float(0xd4a63f0f), SkBits2Float(0xd4b83ab3)); // -5.71218e+12f, -6.33007e+12f
12161path.lineTo(SkBits2Float(0xd4ae61eb), SkBits2Float(0xd4ae61f4)); // -5.99174e+12f, -5.99174e+12f
12162path.lineTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12163path.close();
12164path.moveTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12165path.lineTo(SkBits2Float(0xd446965c), SkBits2Float(0xd4810237)); // -3.4117e+12f, -4.4327e+12f
12166path.lineTo(SkBits2Float(0xd45ac549), SkBits2Float(0xd45ac55f)); // -3.75845e+12f, -3.75846e+12f
12167path.lineTo(SkBits2Float(0xd46c7a11), SkBits2Float(0xd46c7a2e)); // -4.06264e+12f, -4.06265e+12f
12168path.close();
12169path.moveTo(SkBits2Float(0xd4b46028), SkBits2Float(0xd41e572a)); // -6.19766e+12f, -2.72027e+12f
12170path.lineTo(SkBits2Float(0xd4cde20a), SkBits2Float(0xd434bb57)); // -7.07408e+12f, -3.10495e+12f
12171path.lineTo(SkBits2Float(0xd4c75ffe), SkBits2Float(0xd46f215d)); // -6.85047e+12f, -4.10823e+12f
12172path.lineTo(SkBits2Float(0xd4b46028), SkBits2Float(0xd41e572a)); // -6.19766e+12f, -2.72027e+12f
12173path.close();
12174
12175 SkPath path1(path);
12176 path.reset();
12177 path.setFillType((SkPath::FillType) 0);
12178path.setFillType(SkPath::kWinding_FillType);
12179path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12180path.quadTo(SkBits2Float(0x00000000), SkBits2Float(0xa5a50000), SkBits2Float(0xd4d4a5a5), SkBits2Float(0xd4d4d4d4)); // 0, -2.86229e-16f, -7.3065e+12f, -7.31283e+12f
12181path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4cfd4d4), SkBits2Float(0xd4d41dd4)); // -7.31283e+12f, -7.31283e+12f, -7.14103e+12f, -7.28827e+12f
12182path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d432d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4a5a5d4)); // -7.31283e+12f, -7.29109e+12f, -7.31283e+12f, -5.69161e+12f
12183path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0x00000000)); // -7.31283e+12f, -7.31283e+12f, -7.31283e+12f, 0
12184path.moveTo(SkBits2Float(0xa5a5a500), SkBits2Float(0xd4d4d4a5)); // -2.87347e-16f, -7.31281e+12f
12185path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0x2ad4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4cfd4d4)); // -7.31283e+12f, 3.78064e-13f, -7.31283e+12f, -7.14103e+12f
12186path.quadTo(SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4)); // -7.31283e+12f, -7.31283e+12f, -7.31283e+12f, -7.31283e+12f
12187path.quadTo(SkBits2Float(0xd4d40000), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4), SkBits2Float(0xd4d4d4d4)); // -7.28426e+12f, -7.31283e+12f, -7.31283e+12f, -7.31283e+12f
12188
12189 SkPath path2(path);
12190 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
12191}
12192
12193static void fuzzhang_2(skiatest::Reporter* reporter, const char* filename) {
12194 SkPath path;
12195 path.setFillType((SkPath::FillType) 0);
12196path.setFillType(SkPath::kWinding_FillType);
12197path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12198path.quadTo(SkBits2Float(0xe0e02972), SkBits2Float(0xe0e060e0), SkBits2Float(0x728e4603), SkBits2Float(0x72727272)); // -1.29221e+20f, -1.29345e+20f, 5.63603e+30f, 4.80216e+30f
12199path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12200path.close();
12201path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12202path.quadTo(SkBits2Float(0x68720052), SkBits2Float(0x52527372), SkBits2Float(0x00527252), SkBits2Float(0x728e4601)); // 4.57127e+24f, 2.2597e+11f, 7.57152e-39f, 5.63603e+30f
12203path.quadTo(SkBits2Float(0x52ec7272), SkBits2Float(0x6265527f), SkBits2Float(0x8e460152), SkBits2Float(0x72ff8072)); // 5.07766e+11f, 1.05756e+21f, -2.4406e-30f, 1.01215e+31f
12204path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12205path.close();
12206path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12207path.lineTo(SkBits2Float(0x52626552), SkBits2Float(0x72727272)); // 2.43091e+11f, 4.80216e+30f
12208path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x62727272), SkBits2Float(0x39393939), SkBits2Float(0x728bc739)); // 4.80216e+30f, 1.11809e+21f, 0.000176643f, 5.53719e+30f
12209path.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
12210path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x56727272), SkBits2Float(0x72720152), SkBits2Float(0x72727270)); // 4.80216e+30f, 6.66433e+13f, 4.79341e+30f, 4.80216e+30f
12211path.quadTo(SkBits2Float(0x52526172), SkBits2Float(0x8e460300), SkBits2Float(0x72727272), SkBits2Float(0x52525272)); // 2.25894e+11f, -2.44068e-30f, 4.80216e+30f, 2.25832e+11f
12212path.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
12213path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12214path.close();
12215path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12216path.lineTo(SkBits2Float(0x72727272), SkBits2Float(0x52525f72)); // 4.80216e+30f, 2.25886e+11f
12217path.lineTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12218path.close();
12219path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x72837268)); // 1.59583e+13f, 5.20715e+30f
12220path.quadTo(SkBits2Float(0x52727272), SkBits2Float(0x64655252), SkBits2Float(0x72c1c152), SkBits2Float(0x72727272)); // 2.60326e+11f, 1.69209e+22f, 7.67543e+30f, 4.80216e+30f
12221
12222 SkPath path1(path);
12223 path.reset();
12224 path.setFillType((SkPath::FillType) 0);
12225path.setFillType(SkPath::kWinding_FillType);
12226
12227 SkPath path2(path);
Cary Clarkafca4d62017-12-01 15:23:00 -050012228 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
Yuqian Li3154a532017-09-06 13:33:30 -040012229}
12230
12231static void fuzzhang_3(skiatest::Reporter* reporter, const char* filename) {
12232 SkPath path;
12233 path.setFillType((SkPath::FillType) 0);
12234path.setFillType(SkPath::kWinding_FillType);
12235
12236 SkPath path1(path);
12237 path.reset();
12238 path.setFillType((SkPath::FillType) 0);
12239path.setFillType(SkPath::kWinding_FillType);
12240path.moveTo(SkBits2Float(0x46090052), SkBits2Float(0x7270726c)); // 8768.08f, 4.76254e+30f
12241path.moveTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12242path.close();
12243path.moveTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12244path.lineTo(SkBits2Float(0x77727272), SkBits2Float(0x52520072)); // 4.91741e+33f, 2.25488e+11f
12245path.lineTo(SkBits2Float(0x46090052), SkBits2Float(0x727272ce)); // 8768.08f, 4.80219e+30f
12246path.quadTo(SkBits2Float(0x725252ec), SkBits2Float(0x72727272), SkBits2Float(0x72727272), SkBits2Float(0x39393962)); // 4.16589e+30f, 4.80216e+30f, 4.80216e+30f, 0.000176644f
12247path.lineTo(SkBits2Float(0x6c460900), SkBits2Float(0x72727072)); // 9.57639e+26f, 4.802e+30f
12248path.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
12249path.quadTo(SkBits2Float(0x725252ec), SkBits2Float(0x72727272), SkBits2Float(0x72727272), SkBits2Float(0x39393962)); // 4.16589e+30f, 4.80216e+30f, 4.80216e+30f, 0.000176644f
12250path.lineTo(SkBits2Float(0x0052ca00), SkBits2Float(0x728e4603)); // 7.60297e-39f, 5.63603e+30f
12251path.quadTo(SkBits2Float(0xff727272), SkBits2Float(0x52527272), SkBits2Float(0x39392072), SkBits2Float(0xe0393939)); // -3.22267e+38f, 2.25966e+11f, 0.000176551f, -5.3387e+19f
12252path.lineTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12253path.close();
12254path.moveTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12255path.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
12256path.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
12257path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0xdada0072), SkBits2Float(0x52524b5a), SkBits2Float(0x72528000)); // 4.79991e+30f, -3.0681e+16f, 2.25802e+11f, 4.16938e+30f
12258path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0xca005252), SkBits2Float(0x46030052), SkBits2Float(0x7272728e)); // 4.80216e+30f, -2.10242e+06f, 8384.08f, 4.80217e+30f
12259path.quadTo(SkBits2Float(0x7272ff72), SkBits2Float(0x20725252), SkBits2Float(0x39393939), SkBits2Float(0xd76ee039)); // 4.81307e+30f, 2.05254e-19f, 0.000176643f, -2.62647e+14f
12260path.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
12261path.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
12262path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0xdada0072), SkBits2Float(0x52524b5a), SkBits2Float(0x72528000)); // 4.79991e+30f, -3.0681e+16f, 2.25802e+11f, 4.16938e+30f
12263path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
12264path.quadTo(SkBits2Float(0x72667254), SkBits2Float(0x00000040), SkBits2Float(0x00a70155), SkBits2Float(0x726800ff)); // 4.56447e+30f, 8.96831e-44f, 1.5337e-38f, 4.59531e+30f
12265path.quadTo(SkBits2Float(0x7b727272), SkBits2Float(0xad000c52), SkBits2Float(0x1c10adad), SkBits2Float(0x72728d8a)); // 1.25886e+36f, -7.27869e-12f, 4.78701e-22f, 4.80425e+30f
12266path.quadTo(SkBits2Float(0xff056546), SkBits2Float(0x727205ff), SkBits2Float(0x524b5aff), SkBits2Float(0x64005252)); // -1.77313e+38f, 4.79377e+30f, 2.18351e+11f, 9.46846e+21f
12267path.quadTo(SkBits2Float(0x72524872), SkBits2Float(0xdada7272), SkBits2Float(0x5252525a), SkBits2Float(0x72727252)); // 4.16508e+30f, -3.07437e+16f, 2.25831e+11f, 4.80215e+30f
12268path.quadTo(SkBits2Float(0x72724172), SkBits2Float(0xdad10072), SkBits2Float(0x52524b5a), SkBits2Float(0x725b8000)); // 4.79837e+30f, -2.94144e+16f, 2.25802e+11f, 4.34765e+30f
12269path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
12270path.quadTo(SkBits2Float(0x72728372), SkBits2Float(0x00000040), SkBits2Float(0xf6a70147), SkBits2Float(0xc2c2c256)); // 4.80347e+30f, 8.96831e-44f, -1.69363e+33f, -97.3796f
12271path.lineTo(SkBits2Float(0xe0437272), SkBits2Float(0x03e0e060)); // -5.63338e+19f, 1.32171e-36f
12272path.close();
12273path.moveTo(SkBits2Float(0x7a787a7a), SkBits2Float(0x7a3a7a7a)); // 3.22543e+35f, 2.42063e+35f
12274path.lineTo(SkBits2Float(0x8f4603e0), SkBits2Float(0x72727272)); // -9.7629e-30f, 4.80216e+30f
12275path.quadTo(SkBits2Float(0x00807272), SkBits2Float(0x46090052), SkBits2Float(0x7270726c), SkBits2Float(0x60e04372)); // 1.1796e-38f, 8768.08f, 4.76254e+30f, 1.29279e+20f
12276path.moveTo(SkBits2Float(0x943603e0), SkBits2Float(0x77727272)); // -9.18942e-27f, 4.91741e+33f
12277path.quadTo(SkBits2Float(0x5c525200), SkBits2Float(0x46090052), SkBits2Float(0x727272ce), SkBits2Float(0x5252ec72)); // 2.368e+17f, 8768.08f, 4.80219e+30f, 2.26478e+11f
12278
12279 SkPath path2(path);
Cary Clarkafca4d62017-12-01 15:23:00 -050012280 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
Yuqian Li3154a532017-09-06 13:33:30 -040012281}
12282
12283static void fuzz754434_1(skiatest::Reporter* reporter, const char* filename) {
12284 SkPath path;
12285 path.setFillType((SkPath::FillType) 0);
12286path.setFillType(SkPath::kWinding_FillType);
12287
12288 SkPath path1(path);
12289 path.reset();
12290 path.setFillType((SkPath::FillType) 0);
12291path.setFillType(SkPath::kWinding_FillType);
12292path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12293path.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
12294path.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
12295path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00faf6f6)); // -1.71467e+38f, 2.30475e-38f
12296path.moveTo(SkBits2Float(0x60576bfa), SkBits2Float(0x006df653)); // 6.20911e+19f, 1.00984e-38f
12297path.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
12298
12299 SkPath path2(path);
12300 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
12301}
12302
12303static void fuzz754434_2(skiatest::Reporter* reporter, const char* filename) {
12304 SkPath path;
12305 path.setFillType((SkPath::FillType) 1);
12306path.setFillType(SkPath::kEvenOdd_FillType);
12307path.moveTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12308path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf66e5600)); // 0, -1.20851e+33f
12309path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf629168b)); // 0, -8.57378e+32f
12310path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12311path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12312path.close();
12313
12314 SkPath path1(path);
12315 path.reset();
12316 path.setFillType((SkPath::FillType) 0);
12317path.setFillType(SkPath::kWinding_FillType);
12318path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12319path.lineTo(SkBits2Float(0x03e8f6f6), SkBits2Float(0xf7060000)); // 1.36924e-36f, -2.71784e+33f
12320path.lineTo(SkBits2Float(0x4ff6f6f6), SkBits2Float(0x3e3e3e2a)); // 8.28676e+09f, 0.185784f
12321path.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
12322
12323 SkPath path2(path);
12324 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
12325}
12326
12327static void fuzz754434_3(skiatest::Reporter* reporter, const char* filename) {
12328 SkPath path;
12329 path.setFillType((SkPath::FillType) 0);
12330path.setFillType(SkPath::kWinding_FillType);
12331
12332 SkPath path1(path);
12333 path.reset();
12334 path.setFillType((SkPath::FillType) 0);
12335path.setFillType(SkPath::kWinding_FillType);
12336path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12337path.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
12338path.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
12339path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00faf6f6)); // -1.71467e+38f, 2.30475e-38f
12340path.moveTo(SkBits2Float(0x60576bfa), SkBits2Float(0x006df653)); // 6.20911e+19f, 1.00984e-38f
12341path.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
12342
12343 SkPath path2(path);
12344 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
12345}
12346
12347static void fuzz754434_4(skiatest::Reporter* reporter, const char* filename) {
12348 SkPath path;
12349 path.setFillType((SkPath::FillType) 1);
12350path.setFillType(SkPath::kEvenOdd_FillType);
12351path.moveTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12352path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf66e5600)); // 0, -1.20851e+33f
12353path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf629168b)); // 0, -8.57378e+32f
12354path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12355path.lineTo(SkBits2Float(0xff00ff56), SkBits2Float(0x00000000)); // -1.71467e+38f, 0
12356path.close();
12357
12358 SkPath path1(path);
12359 path.reset();
12360 path.setFillType((SkPath::FillType) 0);
12361path.setFillType(SkPath::kWinding_FillType);
12362path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
12363path.lineTo(SkBits2Float(0x03e8f6f6), SkBits2Float(0xf7060000)); // 1.36924e-36f, -2.71784e+33f
12364path.lineTo(SkBits2Float(0x4ff6f6f6), SkBits2Float(0x3e3e3e2a)); // 8.28676e+09f, 0.185784f
12365path.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
12366
12367 SkPath path2(path);
12368 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
12369}
12370
12371static struct TestDesc failTests[] = {
Cary Clarkafca4d62017-12-01 15:23:00 -050012372 TEST(fuzz767834),
Yuqian Li3154a532017-09-06 13:33:30 -040012373 TEST(fuzz754434_1),
12374 TEST(fuzz754434_2),
12375 TEST(fuzz754434_3),
12376 TEST(fuzz754434_4),
12377 TEST(fuzzhang_3),
12378 TEST(fuzzhang_2),
12379 TEST(release_13),
12380 TEST(fuzzhang_1),
12381 TEST(fuzz763_57),
12382 TEST(fuzz763_56),
12383 TEST(fuzz763_55),
12384 TEST(fuzz763_54),
12385 TEST(fuzz763_53),
12386 TEST(fuzz763_52),
12387 TEST(fuzz763_51),
12388 TEST(fuzz763_50),
12389 TEST(fuzz763_49),
12390 TEST(fuzz763_48),
12391 TEST(fuzz763_47),
12392 TEST(fuzz763_46),
12393 TEST(fuzz763_45),
12394 TEST(fuzz763_44),
12395 TEST(fuzz763_43),
12396 TEST(fuzz763_42),
12397 TEST(fuzz763_41),
12398 TEST(fuzz763_40),
12399 TEST(fuzz763_39),
12400 TEST(fuzz763_38),
12401 TEST(fuzz763_37),
12402 TEST(fuzz763_36),
12403 TEST(fuzz763_35),
12404 TEST(fuzz763_34),
12405 TEST(fuzz763_33),
12406 TEST(fuzz763_32),
12407 TEST(fuzz763_31),
12408 TEST(fuzz763_30),
12409 TEST(fuzz763_29),
12410 TEST(fuzz763_28),
12411 TEST(fuzz763_27),
12412 TEST(fuzz763_26),
12413 TEST(fuzz763_25),
12414 TEST(fuzz763_24),
12415 TEST(fuzz763_23),
12416 TEST(fuzz763_22),
12417 TEST(fuzz763_21),
12418 TEST(fuzz763_20),
12419 TEST(fuzz763_19),
12420 TEST(fuzz763_18),
12421 TEST(fuzz763_17),
12422 TEST(fuzz763_16),
12423 TEST(fuzz763_15),
12424 TEST(fuzz763_14),
12425 TEST(fuzz763_13),
12426 TEST(fuzz763_12),
12427 TEST(fuzz763_11),
12428 TEST(fuzz763_10),
12429 TEST(kfuzz2),
12430 TEST(fuzz763_7),
12431 TEST(fuzz763_6),
12432 TEST(fuzz763_2c),
12433 TEST(fuzz763_2b),
12434 TEST(fuzz763_2a),
12435 TEST(fuzz763_5a),
12436 TEST(fuzz763_3a),
12437 TEST(fuzz763_1a),
12438 TEST(fuzz763_1b),
12439 TEST(fuzz763_1c),
12440 TEST(fuzz763_2),
12441 TEST(fuzz763_5),
12442 TEST(fuzz763_3),
12443 TEST(fuzz763_4),
12444 TEST(fuzz763_9),
12445 TEST(fuzz1450_1),
12446 TEST(fuzz1450_0),
12447 TEST(bug597926_0),
12448 TEST(fuzz535151),
12449 TEST(fuzz753_91),
12450 TEST(fuzz714),
12451 TEST(fuzz487a),
12452 TEST(fuzz433),
12453 TEST(fuzz1),
12454 TEST(fuzz487b),
12455 TEST(fuzz433b),
12456 TEST(bufferOverflow),
12457};
12458
12459static const size_t failTestCount = SK_ARRAY_COUNT(failTests);
12460
12461DEF_TEST(PathOpsFailOp, reporter) {
12462#if DEBUG_SHOW_TEST_NAME
12463 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
12464#endif
12465 RunTestSet(reporter, failTests, failTestCount, nullptr, nullptr, nullptr, false);
12466}
12467
12468static struct TestDesc repTests[] = {
12469 TEST(fuzz763_5a),
12470};
12471
12472DEF_TEST(PathOpsRepOp, reporter) {
12473 for (int index = 0; index < 1; ++index)
12474 RunTestSet(reporter, repTests, SK_ARRAY_COUNT(repTests), nullptr, nullptr, nullptr, false);
12475}