1 /* 2 * Copyright 2021 Google LLC 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 8 #include "bench/Benchmark.h" 9 #include "include/core/SkPath.h" 10 #include "src/base/SkArenaAlloc.h" 11 #include "src/gpu/ganesh/GrEagerVertexAllocator.h" 12 #include "src/gpu/ganesh/geometry/GrInnerFanTriangulator.h" 13 #include "src/gpu/ganesh/geometry/GrTriangulator.h" 14 #include <vector> 15 16 using namespace skia_private; 17 18 #if !defined(SK_ENABLE_OPTIMIZE_SIZE) 19 20 struct TigerPath { 21 const char* fVerbs; 22 std::vector<SkPoint> fPoints; 23 }; 24 25 // Paths in desk_tigersvg.skp that take the "inner triangulation" path through the tessellator. 26 extern TigerPath kTigerPaths[]; 27 extern int kNumTigerPaths; 28 constexpr float kTigerTolerance = 0.728769f; 29 30 class TriangulatorBenchmark : public Benchmark, public GrEagerVertexAllocator { 31 public: TriangulatorBenchmark(const char * name)32 TriangulatorBenchmark(const char* name) { 33 fName.printf("triangulator_%s", name); 34 } 35 onGetName()36 const char* onGetName() override { return fName.c_str(); } isSuitableFor(Backend backend)37 bool isSuitableFor(Backend backend) final { return backend == kNonRendering_Backend; } 38 39 protected: onDelayedSetup()40 void onDelayedSetup() override { 41 for (int i = 0; i < kNumTigerPaths; ++i) { 42 SkPath& path = fPaths.push_back(); 43 const std::vector<SkPoint>& pts = kTigerPaths[i].fPoints; 44 int ptsIdx = 0; 45 for (const char* v = kTigerPaths[i].fVerbs; *v; ++v) { 46 switch (*v) { 47 case 'm': 48 path.moveTo(pts[ptsIdx]); 49 ++ptsIdx; 50 break; 51 case 'l': 52 path.lineTo(pts[ptsIdx]); 53 ++ptsIdx; 54 break; 55 case 'q': 56 path.quadTo(pts[ptsIdx], pts[ptsIdx + 1]); 57 ptsIdx += 2; 58 break; 59 case 'c': 60 path.cubicTo(pts[ptsIdx], pts[ptsIdx + 1], pts[ptsIdx + 2]); 61 ptsIdx += 3; 62 break; 63 case 'z': 64 path.close(); 65 break; 66 } 67 } 68 SkASSERT(ptsIdx == (int)pts.size()); 69 } 70 } 71 onDraw(int loops,SkCanvas *)72 void onDraw(int loops, SkCanvas*) final { 73 for (int i = 0; i < loops; ++i) { 74 this->doLoop(); 75 } 76 } 77 78 // GrEagerVertexAllocator. lock(size_t stride,int eagerCount)79 void* lock(size_t stride, int eagerCount) override { 80 size_t allocSize = eagerCount * stride; 81 if (allocSize > fVertexAllocSize) { 82 fVertexData.reset(allocSize); 83 } 84 return fVertexData; 85 } 86 unlock(int)87 void unlock(int) override {} 88 89 virtual void doLoop() = 0; 90 91 SkString fName; 92 SkTArray<SkPath> fPaths; 93 AutoTMalloc<char> fVertexData; 94 size_t fVertexAllocSize = 0; 95 SkArenaAllocWithReset fArena{GrTriangulator::kArenaDefaultChunkSize}; 96 }; 97 98 class PathToTrianglesBench : public TriangulatorBenchmark { 99 public: PathToTrianglesBench()100 PathToTrianglesBench() : TriangulatorBenchmark("PathToTriangles") {} 101 doLoop()102 void doLoop() override { 103 for (const SkPath& path : fPaths) { 104 bool isLinear; 105 GrTriangulator::PathToTriangles(path, kTigerTolerance, SkRect::MakeEmpty(), this, 106 &isLinear); 107 } 108 } 109 }; 110 111 DEF_BENCH( return new PathToTrianglesBench(); ); 112 113 class TriangulateInnerFanBench : public TriangulatorBenchmark { 114 public: TriangulateInnerFanBench()115 TriangulateInnerFanBench() : TriangulatorBenchmark("TriangulateInnerFan") {} 116 doLoop()117 void doLoop() override { 118 bool isLinear; 119 for (const SkPath& path : fPaths) { 120 GrInnerFanTriangulator::BreadcrumbTriangleList breadcrumbList; 121 GrInnerFanTriangulator(path, &fArena).pathToTriangles(this, &breadcrumbList, &isLinear); 122 } 123 fArena.reset(); 124 } 125 }; 126 127 DEF_BENCH( return new TriangulateInnerFanBench(); ); 128 129 #if 0 130 #include "src/gpu/tessellate/GrMiddleOutPolygonTriangulator.h" 131 132 class MiddleOutComparisonBench : public TriangulatorBenchmark { 133 public: 134 MiddleOutComparisonBench() : TriangulatorBenchmark("MiddleOutComparison") {} 135 void doLoop() override { 136 for (const SkPath& path : fPaths) { 137 int maxInnerTriangles = path.countVerbs() - 1; 138 auto* data = this->GrEagerVertexAllocator::lock<SkPoint>(maxInnerTriangles * 3); 139 int vertexCount = GrMiddleOutPolygonTriangulator::WritePathInnerFan( 140 data, 3/*perTriangleVertexAdvance*/, path) * 3; 141 this->unlock(vertexCount); 142 } 143 } 144 }; 145 146 DEF_BENCH( return new MiddleOutComparisonBench(); ); 147 #endif 148 149 TigerPath kTigerPaths[] = { 150 {"mcccccccclclclccccclcclccccccclclcccccccccccccccccccccccccccccllcclcccclccccccccccccccclz", 151 {{-129.83f,103.06f}, {-129.33f,109.11f}, {-128.34f,115.68f}, {-126.6f,118.8f}, 152 {-126.6f,118.8f}, {-130.2f,131.2f}, {-121.4f,144.4f}, {-121.4f,144.4f}, {-121.8f,151.6f}, 153 {-120.2f,154.8f}, {-120.2f,154.8f}, {-116.2f,163.2f}, {-111.4f,164.f}, {-107.52f,164.65f}, 154 {-98.793f,167.72f}, {-88.932f,169.12f}, {-88.932f,169.12f}, {-71.8f,183.2f}, {-75.f,196.f}, 155 {-75.f,196.f}, {-75.4f,212.4f}, {-79.f,214.f}, {-79.f,214.f}, {-67.4f,202.8f}, {-77.f,219.6f}, 156 {-81.4f,238.4f}, {-81.4f,238.4f}, {-55.8f,216.8f}, {-71.4f,235.2f}, {-81.4f,261.2f}, 157 {-81.4f,261.2f}, {-61.8f,242.8f}, {-69.f,251.2f}, {-72.2f,260.f}, {-72.2f,260.f}, 158 {-29.f,232.8f}, {-59.8f,262.4f}, {-59.8f,262.4f}, {-51.8f,258.8f}, {-47.4f,261.6f}, 159 {-47.4f,261.6f}, {-40.6f,260.4f}, {-41.4f,262.f}, {-41.4f,262.f}, {-62.2f,272.4f}, 160 {-65.8f,290.8f}, {-65.8f,290.8f}, {-57.4f,280.8f}, {-60.6f,291.6f}, {-60.2f,303.2f}, 161 {-60.2f,303.2f}, {-56.2f,281.6f}, {-56.6f,319.2f}, {-56.6f,319.2f}, {-37.4f,301.2f}, 162 {-49.f,322.f}, {-49.f,338.8f}, {-49.f,338.8f}, {-33.8f,322.4f}, {-40.2f,335.2f}, 163 {-40.2f,335.2f}, {-30.2f,326.4f}, {-34.2f,341.6f}, {-34.2f,341.6f}, {-35.f,352.f}, 164 {-30.6f,340.8f}, {-30.6f,340.8f}, {-14.6f,310.2f}, {-20.6f,336.4f}, {-20.6f,336.4f}, 165 {-21.4f,355.6f}, {-16.6f,340.8f}, {-16.6f,340.8f}, {-16.2f,351.2f}, {-7.f,358.4f}, 166 {-7.f,358.4f}, {-8.2f,307.6f}, {4.6f,343.6f}, {8.6f,360.f}, {8.6f,360.f}, {11.4f,350.8f}, 167 {11.f,345.6f}, {19.f,353.6f}, {19.f,353.6f}, {34.2f,330.8f}, {31.f,344.f}, {31.f,344.f}, 168 {23.4f,360.f}, {25.f,364.8f}, {25.f,364.8f}, {41.8f,330.f}, {43.f,328.4f}, {43.f,328.4f}, 169 {41.f,370.8f}, {51.8f,334.8f}, {51.8f,334.8f}, {57.4f,346.8f}, {54.6f,351.2f}, {54.6f,351.2f}, 170 {62.6f,343.2f}, {61.8f,340.f}, {61.8f,340.f}, {66.4f,331.8f}, {69.2f,345.4f}, {69.2f,345.4f}, 171 {71.f,354.8f}, {72.6f,351.6f}, {72.6f,351.6f}, {76.6f,375.6f}, {77.8f,352.8f}, {77.8f,352.8f}, 172 {79.4f,339.2f}, {72.2f,327.6f}, {72.2f,327.6f}, {73.f,324.4f}, {70.2f,320.4f}, {70.2f,320.4f}, 173 {83.8f,342.f}, {76.6f,313.2f}, {76.6f,313.2f}, {87.801f,321.2f}, {89.001f,321.2f}, 174 {89.001f,321.2f}, {75.4f,298.f}, {84.2f,302.8f}, {84.2f,302.8f}, {79.f,292.4f}, 175 {97.001f,304.4f}, {97.001f,304.4f}, {81.f,288.4f}, {98.601f,298.f}, {98.601f,298.f}, 176 {106.6f,304.4f}, {99.001f,294.4f}, {99.001f,294.4f}, {84.6f,278.4f}, {106.6f,296.4f}, 177 {106.6f,296.4f}, {118.2f,312.8f}, {119.f,315.6f}, {119.f,315.6f}, {109.f,286.4f}, 178 {104.6f,283.6f}, {104.6f,283.6f}, {113.f,247.2f}, {154.2f,262.8f}, {154.2f,262.8f}, 179 {161.f,280.f}, {165.4f,261.6f}, {165.4f,261.6f}, {178.2f,255.2f}, {189.4f,282.8f}, 180 {189.4f,282.8f}, {193.4f,269.2f}, {192.6f,266.4f}, {192.6f,266.4f}, {199.4f,267.6f}, 181 {198.6f,266.4f}, {198.6f,266.4f}, {211.8f,270.8f}, {213.f,270.f}, {213.f,270.f}, 182 {219.8f,276.8f}, {220.2f,273.2f}, {220.2f,273.2f}, {229.4f,276.f}, {227.4f,272.4f}, 183 {227.4f,272.4f}, {236.2f,288.f}, {236.6f,291.6f}, {239.f,277.6f}, {241.f,280.4f}, 184 {241.f,280.4f}, {242.6f,272.8f}, {241.8f,271.6f}, {241.f,270.4f}, {261.8f,278.4f}, 185 {266.6f,299.2f}, {268.6f,307.6f}, {268.6f,307.6f}, {274.6f,292.8f}, {273.f,288.8f}, 186 {273.f,288.8f}, {278.2f,289.6f}, {278.6f,294.f}, {278.6f,294.f}, {282.6f,270.8f}, 187 {277.8f,264.8f}, {277.8f,264.8f}, {282.2f,264.f}, {283.4f,267.6f}, {283.4f,260.4f}, 188 {283.4f,260.4f}, {290.6f,261.2f}, {290.6f,258.8f}, {290.6f,258.8f}, {295.f,254.8f}, 189 {297.f,259.6f}, {297.f,259.6f}, {284.6f,224.4f}, {303.f,243.6f}, {303.f,243.6f}, 190 {310.2f,254.4f}, {306.6f,235.6f}, {303.f,216.8f}, {299.f,215.2f}, {303.8f,214.8f}, 191 {303.8f,214.8f}, {304.6f,211.2f}, {302.6f,209.6f}, {300.6f,208.f}, {303.8f,209.6f}, 192 {303.8f,209.6f}, {303.8f,209.6f}, {308.6f,213.6f}, {303.4f,191.6f}, {303.4f,191.6f}, 193 {309.8f,193.2f}, {297.8f,164.f}, {297.8f,164.f}, {300.6f,161.6f}, {296.6f,153.2f}, 194 {296.6f,153.2f}, {304.6f,157.6f}, {307.4f,156.f}, {307.4f,156.f}, {307.f,154.4f}, 195 {303.8f,150.4f}, {303.8f,150.4f}, {282.2f,95.6f}, {302.6f,117.6f}, {302.6f,117.6f}, 196 {314.45f,131.15f}, {308.05f,108.35f}, {308.05f,108.35f}, {298.94f,84.341f}, {299.72f,80.045f}, 197 {-129.83f,103.06f}}}, 198 {"mcccccclclcccccccccccclccccccccccccccccccccz", 199 {{299.72f,80.245f}, {300.34f,80.426f}, {302.55f,81.55f}, {303.8f,83.2f}, {303.8f,83.2f}, 200 {310.6f,94.f}, {305.4f,75.6f}, {305.4f,75.6f}, {296.2f,46.8f}, {305.f,58.f}, {305.f,58.f}, 201 {311.f,65.2f}, {307.8f,51.6f}, {303.94f,35.173f}, {301.4f,28.8f}, {301.4f,28.8f}, 202 {301.4f,28.8f}, {313.f,33.6f}, {286.2f,-5.99999f}, {295.f,-2.39999f}, {295.f,-2.39999f}, 203 {275.4f,-42.f}, {253.8f,-47.2f}, {245.8f,-53.2f}, {245.8f,-53.2f}, {284.2f,-91.2f}, 204 {271.4f,-128.f}, {271.4f,-128.f}, {264.6f,-133.2f}, {255.f,-124.f}, {255.f,-124.f}, 205 {248.6f,-119.2f}, {242.6f,-120.8f}, {242.6f,-120.8f}, {211.8f,-119.6f}, {209.8f,-119.6f}, 206 {207.8f,-119.6f}, {173.f,-156.8f}, {107.4f,-139.2f}, {107.4f,-139.2f}, {102.2f,-137.2f}, 207 {97.801f,-138.4f}, {97.801f,-138.4f}, {79.4f,-154.4f}, {30.6f,-131.6f}, {30.6f,-131.6f}, 208 {20.6f,-129.6f}, {19.f,-129.6f}, {17.4f,-129.6f}, {14.6f,-129.6f}, {6.59998f,-123.2f}, 209 {-1.40002f,-116.8f}, {-1.80002f,-116.f}, {-3.80002f,-114.4f}, {-3.80002f,-114.4f}, 210 {-20.2f,-103.2f}, {-25.f,-102.4f}, {-25.f,-102.4f}, {-36.6f,-96.f}, {-41.f,-86.f}, 211 {-44.6f,-84.8f}, {-44.6f,-84.8f}, {-46.2f,-77.6f}, {-46.6f,-76.4f}, {-46.6f,-76.4f}, 212 {-51.4f,-72.8f}, {-52.2f,-67.2f}, {-52.2f,-67.2f}, {-61.f,-61.2f}, {-60.6f,-56.8f}, 213 {-60.6f,-56.8f}, {-62.2f,-51.6f}, {-63.f,-46.8f}, {-63.f,-46.8f}, {-70.2f,-42.f}, 214 {-69.4f,-39.2f}, {-69.4f,-39.2f}, {-77.f,-25.2f}, {-75.8f,-18.4f}, {-75.8f,-18.4f}, 215 {-82.2f,-18.8f}, {-85.f,-16.4f}, {-85.f,-16.4f}, {-85.8f,-11.6f}, {-87.4f,-11.2f}, 216 {-87.4f,-11.2f}, {-90.2f,-10.f}, {-87.8f,-6.00001f}, {-87.8f,-6.00001f}, {-89.4f,-3.20001f}, 217 {-89.8f,-1.60001f}, {-89.8f,-1.60001f}, {-89.f,1.19999f}, {-93.4f,6.79999f}, 218 {-93.4f,6.79999f}, {-99.8f,25.6f}, {-97.8f,30.8f}, {-97.8f,30.8f}, {-97.4f,35.6f}, 219 {-100.2f,37.2f}, {-100.2f,37.2f}, {-103.8f,36.8f}, {-95.4f,48.8f}, {-95.4f,48.8f}, 220 {-94.6f,50.f}, {-97.8f,52.4f}, {-97.8f,52.4f}, {-115.f,56.f}, {-117.4f,72.4f}, 221 {-117.4f,72.4f}, {-131.f,87.2f}, {-131.f,92.4f}, {-131.f,94.705f}, {-130.73f,97.852f}, 222 {-130.03f,102.46f}, {-130.03f,102.46f}, {-130.6f,110.8f}, {-103.f,111.6f}, {-75.4f,112.4f}, 223 {299.72f,80.245f}, {299.72f,80.245f}}}, 224 {"mcccclccccccccccclz", 225 {{-115.6f,102.6f}, {-140.6f,63.2f}, {-126.2f,119.6f}, {-126.2f,119.6f}, {-117.4f,154.f}, 226 {12.2f,116.4f}, {12.2f,116.4f}, {12.2f,116.4f}, {181.f,86.f}, {192.2f,82.f}, {203.4f,78.f}, 227 {298.6f,84.4f}, {298.6f,84.4f}, {293.f,67.6f}, {228.2f,21.2f}, {209.f,44.4f}, {195.4f,40.4f}, 228 {181.8f,36.4f}, {184.2f,46.f}, {181.f,46.8f}, {177.8f,47.6f}, {138.6f,22.8f}, {132.2f,23.6f}, 229 {125.8f,24.4f}, {100.46f,0.649006f}, {115.4f,32.4f}, {131.4f,66.4f}, {57.f,71.6f}, 230 {40.2f,60.4f}, {23.4f,49.2f}, {47.4f,78.8f}, {47.4f,78.8f}, {65.8f,98.8f}, {31.4f,82.f}, 231 {31.4f,82.f}, {-3.f,69.2f}, {-27.f,94.8f}, {-30.2f,95.6f}, {-33.4f,96.4f}, {-38.2f,99.6f}, 232 {-39.f,93.2f}, {-39.8f,86.8f}, {-47.31f,70.099f}, {-79.f,96.4f}, {-99.f,113.f}, 233 {-112.8f,91.f}, {-112.8f,91.f}, {-115.6f,102.6f}}}, 234 {"mcccccccclcccclcccz", 235 {{133.51f,25.346f}, {127.11f,26.146f}, {101.74f,2.407f}, {116.71f,34.146f}, {133.31f,69.346f}, 236 {58.31f,73.346f}, {41.51f,62.146f}, {24.709f,50.946f}, {48.71f,80.546f}, {48.71f,80.546f}, 237 {67.11f,100.55f}, {32.709f,83.746f}, {32.709f,83.746f}, {-1.69101f,70.946f}, 238 {-25.691f,96.546f}, {-28.891f,97.346f}, {-32.091f,98.146f}, {-36.891f,101.35f}, 239 {-37.691f,94.946f}, {-38.491f,88.546f}, {-45.87f,72.012f}, {-77.691f,98.146f}, 240 {-98.927f,115.49f}, {-112.42f,94.037f}, {-112.42f,94.037f}, {-115.62f,104.15f}, 241 {-140.62f,64.346f}, {-125.55f,122.66f}, {-125.55f,122.66f}, {-116.74f,157.06f}, 242 {13.51f,118.15f}, {13.51f,118.15f}, {13.51f,118.15f}, {182.31f,87.746f}, {193.51f,83.746f}, 243 {204.71f,79.746f}, {299.04f,86.073f}, {299.04f,86.073f}, {293.51f,68.764f}, {228.71f,22.364f}, 244 {210.31f,46.146f}, {196.71f,42.146f}, {183.11f,38.146f}, {185.51f,47.746f}, {182.31f,48.546f}, 245 {179.11f,49.346f}, {139.91f,24.546f}, {133.51f,25.346f}}}, 246 {"mcccccccclcccclcccz", 247 {{134.82f,27.091f}, {128.42f,27.891f}, {103.68f,3.862f}, {118.02f,35.891f}, {134.22f,72.092f}, 248 {59.619f,75.092f}, {42.819f,63.892f}, {26.019f,52.692f}, {50.019f,82.292f}, {50.019f,82.292f}, 249 {68.419f,102.29f}, {34.019f,85.492f}, {34.019f,85.492f}, {-0.380993f,72.692f}, 250 {-24.382f,98.292f}, {-27.582f,99.092f}, {-30.782f,99.892f}, {-35.582f,103.09f}, 251 {-36.382f,96.692f}, {-37.182f,90.292f}, {-44.43f,73.925f}, {-76.382f,99.892f}, 252 {-98.855f,117.98f}, {-112.04f,97.074f}, {-112.04f,97.074f}, {-115.64f,105.69f}, 253 {-139.44f,66.692f}, {-124.89f,125.71f}, {-124.89f,125.71f}, {-116.09f,160.11f}, 254 {14.82f,119.89f}, {14.82f,119.89f}, {14.82f,119.89f}, {183.62f,89.492f}, {194.82f,85.492f}, 255 {206.02f,81.492f}, {299.47f,87.746f}, {299.47f,87.746f}, {294.02f,69.928f}, {229.22f,23.528f}, 256 {211.62f,47.891f}, {198.02f,43.891f}, {184.42f,39.891f}, {186.82f,49.491f}, {183.62f,50.292f}, 257 {180.42f,51.092f}, {141.22f,26.291f}, {134.82f,27.091f}}}, 258 {"mcccccccclcccclcccz", 259 {{136.13f,28.837f}, {129.73f,29.637f}, {105.f,5.605f}, {119.33f,37.637f}, {136.13f,75.193f}, 260 {60.394f,76.482f}, {44.128f,65.637f}, {27.328f,54.437f}, {51.328f,84.037f}, {51.328f,84.037f}, 261 {69.728f,104.04f}, {35.328f,87.237f}, {35.328f,87.237f}, {0.927998f,74.437f}, 262 {-23.072f,100.04f}, {-26.272f,100.84f}, {-29.472f,101.64f}, {-34.272f,104.84f}, 263 {-35.072f,98.437f}, {-35.872f,92.037f}, {-42.989f,75.839f}, {-75.073f,101.64f}, 264 {-98.782f,120.47f}, {-111.66f,100.11f}, {-111.66f,100.11f}, {-115.66f,107.24f}, 265 {-137.46f,70.437f}, {-124.24f,128.76f}, {-124.24f,128.76f}, {-115.44f,163.16f}, 266 {16.13f,121.64f}, {16.13f,121.64f}, {16.13f,121.64f}, {184.93f,91.237f}, {196.13f,87.237f}, 267 {207.33f,83.237f}, {299.91f,89.419f}, {299.91f,89.419f}, {294.53f,71.092f}, {229.73f,24.691f}, 268 {212.93f,49.637f}, {199.33f,45.637f}, {185.73f,41.637f}, {188.13f,51.237f}, {184.93f,52.037f}, 269 {181.73f,52.837f}, {142.53f,28.037f}, {136.13f,28.837f}}}, 270 {"mcccccccclcccclcccz", 271 {{137.44f,30.583f}, {131.04f,31.383f}, {106.81f,7.129f}, {120.64f,39.383f}, {137.44f,78.583f}, 272 {62.237f,78.583f}, {45.437f,67.383f}, {28.637f,56.183f}, {52.637f,85.783f}, {52.637f,85.783f}, 273 {71.037f,105.78f}, {36.637f,88.983f}, {36.637f,88.983f}, {2.237f,76.183f}, {-21.763f,101.78f}, 274 {-24.963f,102.58f}, {-28.163f,103.38f}, {-32.963f,106.58f}, {-33.763f,100.18f}, 275 {-34.563f,93.783f}, {-41.548f,77.752f}, {-73.763f,103.38f}, {-98.709f,122.96f}, 276 {-111.27f,103.15f}, {-111.27f,103.15f}, {-115.67f,108.78f}, {-135.47f,73.982f}, 277 {-123.58f,131.82f}, {-123.58f,131.82f}, {-114.78f,166.22f}, {17.44f,123.38f}, 278 {17.44f,123.38f}, {17.44f,123.38f}, {186.24f,92.983f}, {197.44f,88.983f}, {208.64f,84.983f}, 279 {300.35f,91.092f}, {300.35f,91.092f}, {295.04f,72.255f}, {230.24f,25.855f}, {214.24f,51.383f}, 280 {200.64f,47.383f}, {187.04f,43.383f}, {189.44f,52.983f}, {186.24f,53.783f}, {183.04f,54.583f}, 281 {143.84f,29.783f}, {137.44f,30.583f}}}, 282 {"mcccccccclcccclcccz", 283 {{138.75f,32.328f}, {132.35f,33.128f}, {106.38f,9.677f}, {121.95f,41.128f}, {141.15f,79.928f}, 284 {63.546f,80.328f}, {46.746f,69.128f}, {29.946f,57.928f}, {53.946f,87.528f}, {53.946f,87.528f}, 285 {72.346f,107.53f}, {37.946f,90.728f}, {37.946f,90.728f}, {3.54599f,77.928f}, 286 {-20.454f,103.53f}, {-23.654f,104.33f}, {-26.854f,105.13f}, {-31.654f,108.33f}, 287 {-32.454f,101.93f}, {-33.254f,95.528f}, {-40.108f,79.665f}, {-72.454f,105.13f}, 288 {-98.636f,125.46f}, {-110.89f,106.18f}, {-110.89f,106.18f}, {-115.69f,110.33f}, 289 {-133.69f,77.128f}, {-122.93f,134.87f}, {-122.93f,134.87f}, {-114.13f,169.27f}, 290 {18.75f,125.13f}, {18.75f,125.13f}, {18.75f,125.13f}, {187.55f,94.728f}, {198.75f,90.728f}, 291 {209.95f,86.728f}, {300.78f,92.764f}, {300.78f,92.764f}, {295.55f,73.419f}, {230.75f,27.019f}, 292 {215.55f,53.128f}, {201.95f,49.128f}, {188.35f,45.128f}, {190.75f,54.728f}, {187.55f,55.528f}, 293 {184.35f,56.328f}, {145.15f,31.528f}, {138.75f,32.328f}}}, 294 {"mcccccccclcccclcccz", 295 {{140.06f,34.073f}, {133.66f,34.873f}, {107.31f,11.613f}, {123.26f,42.873f}, {143.66f,82.874f}, 296 {64.855f,82.074f}, {48.055f,70.874f}, {31.255f,59.674f}, {55.255f,89.274f}, {55.255f,89.274f}, 297 {73.655f,109.27f}, {39.255f,92.474f}, {39.255f,92.474f}, {4.85499f,79.674f}, 298 {-19.145f,105.27f}, {-22.345f,106.07f}, {-25.545f,106.87f}, {-30.345f,110.07f}, 299 {-31.145f,103.67f}, {-31.945f,97.274f}, {-38.668f,81.578f}, {-71.145f,106.87f}, 300 {-98.564f,127.95f}, {-110.51f,109.22f}, {-110.51f,109.22f}, {-115.71f,111.87f}, 301 {-131.71f,81.674f}, {-122.27f,137.93f}, {-122.27f,137.93f}, {-113.47f,172.33f}, 302 {20.05f,126.87f}, {20.05f,126.87f}, {20.05f,126.87f}, {188.85f,96.474f}, {200.05f,92.474f}, 303 {211.25f,88.474f}, {301.21f,94.437f}, {301.21f,94.437f}, {296.05f,74.583f}, {231.25f,28.183f}, 304 {216.85f,54.874f}, {203.25f,50.874f}, {189.65f,46.873f}, {192.05f,56.474f}, {188.85f,57.274f}, 305 {185.65f,58.074f}, {146.45f,33.273f}, {140.05f,34.073f}}}, 306 {"mcccccccclcccclcccz", 307 {{141.36f,35.819f}, {134.96f,36.619f}, {107.52f,13.944f}, {124.56f,44.619f}, {146.56f,84.219f}, 308 {66.164f,83.819f}, {49.364f,72.619f}, {32.564f,61.419f}, {56.564f,91.019f}, {56.564f,91.019f}, 309 {74.964f,111.02f}, {40.564f,94.219f}, {40.564f,94.219f}, {6.164f,81.419f}, {-17.836f,107.02f}, 310 {-21.036f,107.82f}, {-24.236f,108.62f}, {-29.036f,111.82f}, {-29.836f,105.42f}, 311 {-30.636f,99.019f}, {-37.227f,83.492f}, {-69.836f,108.62f}, {-98.491f,130.44f}, 312 {-110.13f,112.26f}, {-110.13f,112.26f}, {-115.73f,113.42f}, {-130.13f,85.019f}, 313 {-121.62f,140.98f}, {-121.62f,140.98f}, {-112.82f,175.38f}, {21.36f,128.62f}, 314 {21.36f,128.62f}, {21.36f,128.62f}, {190.16f,98.219f}, {201.36f,94.219f}, {212.56f,90.219f}, 315 {301.66f,96.11f}, {301.66f,96.11f}, {296.56f,75.746f}, {231.76f,29.346f}, {218.16f,56.619f}, 316 {204.56f,52.619f}, {190.96f,48.619f}, {193.36f,58.219f}, {190.16f,59.019f}, {186.96f,59.819f}, 317 {147.76f,35.019f}, {141.36f,35.819f}}}, 318 {"mcccccccclcccclcccz", 319 {{142.67f,37.565f}, {136.27f,38.365f}, {108.83f,15.689f}, {125.87f,46.365f}, {147.87f,85.965f}, 320 {67.474f,85.565f}, {50.674f,74.365f}, {33.874f,63.165f}, {57.874f,92.765f}, {57.874f,92.765f}, 321 {76.274f,112.76f}, {41.874f,95.965f}, {41.874f,95.965f}, {7.473f,83.165f}, {-16.527f,108.76f}, 322 {-19.727f,109.56f}, {-22.927f,110.36f}, {-27.727f,113.56f}, {-28.527f,107.16f}, 323 {-29.327f,100.76f}, {-35.786f,85.405f}, {-68.527f,110.36f}, {-98.418f,132.93f}, 324 {-109.74f,115.29f}, {-109.74f,115.29f}, {-115.74f,114.96f}, {-129.35f,88.564f}, 325 {-120.96f,144.04f}, {-120.96f,144.04f}, {-112.16f,178.44f}, {22.67f,130.36f}, 326 {22.67f,130.36f}, {22.67f,130.36f}, {191.47f,99.965f}, {202.67f,95.965f}, {213.87f,91.965f}, 327 {302.09f,97.783f}, {302.09f,97.783f}, {297.08f,76.91f}, {232.27f,30.51f}, {219.47f,58.365f}, 328 {205.87f,54.365f}, {192.27f,50.365f}, {194.67f,59.965f}, {191.47f,60.765f}, {188.27f,61.565f}, 329 {149.07f,36.765f}, {142.67f,37.565f}}}, 330 {"mcccccccclcccclcccz", 331 {{143.98f,39.31f}, {137.58f,40.11f}, {110.53f,17.223f}, {127.18f,48.11f}, {149.18f,88.91f}, 332 {68.783f,87.31f}, {51.983f,76.11f}, {35.183f,64.91f}, {59.183f,94.51f}, {59.183f,94.51f}, 333 {77.583f,114.51f}, {43.183f,97.71f}, {43.183f,97.71f}, {8.78299f,84.91f}, {-15.217f,110.51f}, 334 {-18.417f,111.31f}, {-21.618f,112.11f}, {-26.418f,115.31f}, {-27.218f,108.91f}, 335 {-28.018f,102.51f}, {-34.346f,87.318f}, {-67.218f,112.11f}, {-98.345f,135.42f}, 336 {-109.36f,118.33f}, {-109.36f,118.33f}, {-115.76f,116.51f}, {-128.76f,92.51f}, 337 {-120.31f,147.09f}, {-120.31f,147.09f}, {-111.51f,181.49f}, {23.98f,132.11f}, 338 {23.98f,132.11f}, {23.98f,132.11f}, {192.78f,101.71f}, {203.98f,97.71f}, {215.18f,93.71f}, 339 {302.53f,99.456f}, {302.53f,99.456f}, {297.58f,78.074f}, {232.78f,31.673f}, {220.78f,60.11f}, 340 {207.18f,56.11f}, {193.58f,52.11f}, {195.98f,61.71f}, {192.78f,62.51f}, {189.58f,63.31f}, 341 {150.38f,38.51f}, {143.98f,39.31f}}}, 342 {"mcccccccclcccclcccz", 343 {{145.29f,41.055f}, {138.89f,41.855f}, {112.92f,18.411f}, {128.49f,49.855f}, {149.69f,92.656f}, 344 {70.092f,89.056f}, {53.292f,77.856f}, {36.492f,66.656f}, {60.492f,96.256f}, {60.492f,96.256f}, 345 {78.892f,116.26f}, {44.492f,99.456f}, {44.492f,99.456f}, {10.092f,86.656f}, 346 {-13.908f,112.26f}, {-17.108f,113.06f}, {-20.308f,113.86f}, {-25.108f,117.06f}, 347 {-25.908f,110.66f}, {-26.708f,104.26f}, {-32.905f,89.232f}, {-65.908f,113.86f}, 348 {-98.273f,137.91f}, {-108.98f,121.36f}, {-108.98f,121.36f}, {-115.78f,118.06f}, 349 {-128.58f,94.856f}, {-119.65f,150.15f}, {-119.65f,150.15f}, {-110.85f,184.55f}, 350 {25.29f,133.86f}, {25.29f,133.86f}, {25.29f,133.86f}, {194.09f,103.46f}, {205.29f,99.456f}, 351 {216.49f,95.456f}, {302.96f,101.13f}, {302.96f,101.13f}, {298.09f,79.237f}, {233.29f,32.837f}, 352 {222.09f,61.856f}, {208.49f,57.856f}, {194.89f,53.855f}, {197.29f,63.456f}, {194.09f,64.256f}, 353 {190.89f,65.056f}, {151.69f,40.255f}, {145.29f,41.055f}}}, 354 {"mcccclccccccccccclz", 355 {{-115.8f,119.6f}, {-128.6f,97.6f}, {-119.f,153.2f}, {-119.f,153.2f}, {-110.2f,187.6f}, 356 {26.6f,135.6f}, {26.6f,135.6f}, {26.6f,135.6f}, {195.4f,105.2f}, {206.6f,101.2f}, 357 {217.8f,97.2f}, {303.4f,102.8f}, {303.4f,102.8f}, {298.6f,80.4f}, {233.8f,34.f}, 358 {223.4f,63.6f}, {209.8f,59.6f}, {196.2f,55.6f}, {198.6f,65.2f}, {195.4f,66.f}, {192.2f,66.8f}, 359 {153.f,42.f}, {146.6f,42.8f}, {140.2f,43.6f}, {114.98f,19.793f}, {129.8f,51.6f}, 360 {152.03f,99.307f}, {69.041f,89.227f}, {54.6f,79.6f}, {37.8f,68.4f}, {61.8f,98.f}, 361 {61.8f,98.f}, {80.2f,118.f}, {45.8f,101.2f}, {45.8f,101.2f}, {11.4f,88.4f}, {-12.6f,114.f}, 362 {-15.8f,114.8f}, {-19.f,115.6f}, {-23.8f,118.8f}, {-24.6f,112.4f}, {-25.4f,106.f}, 363 {-31.465f,91.144f}, {-64.6f,115.6f}, {-98.2f,140.4f}, {-108.6f,124.4f}, {-108.6f,124.4f}, 364 {-115.8f,119.6f}}}, 365 {"mlcccccccccccccclcccccclz", 366 {{-34.6f,266.4f}, {-44.6f,274.f}, {-44.6f,274.f}, {-34.2f,266.4f}, {-30.6f,267.6f}, 367 {-30.6f,267.6f}, {-37.4f,278.8f}, {-38.2f,284.f}, {-38.2f,284.f}, {-27.8f,271.2f}, 368 {-22.2f,271.6f}, {-22.2f,271.6f}, {-14.6f,272.f}, {-14.6f,282.8f}, {-14.6f,282.8f}, 369 {-9.f,272.4f}, {-5.8f,272.8f}, {-5.8f,272.8f}, {-4.6f,279.2f}, {-5.8f,286.f}, {-5.8f,286.f}, 370 {-1.8f,278.4f}, {2.2f,280.f}, {2.2f,280.f}, {8.6f,278.f}, {7.8f,289.6f}, {7.8f,289.6f}, 371 {7.8f,300.f}, {7.f,302.8f}, {7.f,302.8f}, {12.6f,276.4f}, {15.f,276.f}, {15.f,276.f}, 372 {23.f,274.8f}, {27.8f,283.6f}, {27.8f,283.6f}, {23.8f,276.f}, {28.6f,278.f}, {28.6f,278.f}, 373 {39.4f,279.6f}, {42.6f,286.4f}, {42.6f,286.4f}, {35.8f,274.4f}, {41.4f,277.6f}, {49.4f,284.f}, 374 {49.4f,284.f}, {57.8f,305.2f}, {59.8f,306.8f}, {59.8f,306.8f}, {52.2f,285.2f}, {53.8f,285.2f}, 375 {53.8f,285.2f}, {51.8f,273.2f}, {57.f,288.f}, {57.f,288.f}, {53.8f,274.f}, {59.4f,274.8f}, 376 {65.f,275.6f}, {69.4f,285.6f}, {77.8f,283.2f}, {77.8f,283.2f}, {87.401f,288.8f}, 377 {89.401f,219.6f}, {-34.599f,266.4f}}}, 378 {"mcccllccccccccz", 379 {{-29.8f,173.6f}, {-29.8f,173.6f}, {-15.f,167.6f}, {25.f,173.6f}, {25.f,173.6f}, {32.2f,174.f}, 380 {39.f,165.2f}, {45.8f,156.4f}, {72.6f,149.2f}, {79.f,151.2f}, {88.601f,157.6f}, 381 {89.401f,158.8f}, {89.401f,158.8f}, {101.8f,169.2f}, {102.2f,176.8f}, {102.6f,184.4f}, 382 {87.801f,232.4f}, {78.2f,248.4f}, {68.6f,264.4f}, {59.f,276.8f}, {39.8f,274.4f}, 383 {39.8f,274.4f}, {19.f,270.4f}, {-6.60001f,274.4f}, {-6.60001f,274.4f}, {-35.8f,272.8f}, 384 {-38.6f,264.8f}, {-41.4f,256.8f}, {-27.4f,241.6f}, {-27.4f,241.6f}, {-27.4f,241.6f}, 385 {-23.f,233.2f}, {-24.2f,218.8f}, {-25.4f,204.4f}, {-25.f,176.4f}, {-29.8f,173.6f}}}, 386 {"mccccccz", 387 {{-7.8f,175.6f}, {0.599999f,194.f}, {-29.f,259.2f}, {-29.f,259.2f}, {-31.f,260.8f}, 388 {-16.34f,266.85f}, {-6.2f,264.4f}, {4.746f,261.76f}, {45.f,266.f}, {45.f,266.f}, 389 {68.6f,250.4f}, {81.4f,206.f}, {81.4f,206.f}, {81.4f,206.f}, {91.801f,182.f}, {74.2f,178.8f}, 390 {56.6f,175.6f}, {-7.8f,175.6f}, {-7.8f,175.6f}}}, 391 {"mccclccccccz", 392 {{-9.8f,174.4f}, {-9.8f,174.4f}, {-12.6f,196.8f}, {-9.4f,205.2f}, {-6.2f,213.6f}, 393 {-7.f,215.6f}, {-7.8f,219.6f}, {-8.6f,223.6f}, {-4.2f,233.6f}, {1.4f,239.6f}, {13.4f,241.2f}, 394 {13.4f,241.2f}, {28.6f,237.6f}, {37.8f,240.4f}, {37.8f,240.4f}, {46.794f,241.74f}, 395 {50.2f,226.8f}, {50.2f,226.8f}, {55.f,220.4f}, {62.2f,217.6f}, {69.4f,214.8f}, {76.6f,173.2f}, 396 {72.6f,165.2f}, {68.6f,157.2f}, {54.2f,152.8f}, {38.2f,168.4f}, {22.2f,184.f}, {20.2f,167.2f}, 397 {-9.8f,174.4f}}}, 398 {"mccccccccz", 399 {{43.88f,40.321f}, {71.601f,44.281f}, {97.121f,8.641f}, {98.881f,-1.04f}, {100.64f,-10.72f}, 400 {90.521f,-22.6f}, {90.521f,-22.6f}, {91.841f,-25.68f}, {87.001f,-39.76f}, {81.721f,-49.f}, 401 {76.441f,-58.24f}, {60.54f,-57.266f}, {43.f,-58.24f}, {27.16f,-59.12f}, {8.67999f,-35.8f}, 402 {7.35999f,-34.04f}, {6.03999f,-32.28f}, {12.2f,6.001f}, {13.52f,11.721f}, {14.84f,17.441f}, 403 {12.2f,43.841f}, {12.2f,43.841f}, {46.44f,34.741f}, {16.16f,36.361f}, {43.88f,40.321f}}}, 404 {"mccccccccz", 405 {{8.088f,-33.392f}, {6.792f,-31.664f}, {12.84f,5.921f}, {14.136f,11.537f}, {15.432f,17.153f}, 406 {12.84f,43.073f}, {12.84f,43.073f}, {45.512f,34.193f}, {16.728f,35.729f}, {43.944f,39.617f}, 407 {71.161f,43.505f}, {96.217f,8.513f}, {97.945f,-0.992001f}, {99.673f,-10.496f}, 408 {89.737f,-22.16f}, {89.737f,-22.16f}, {91.033f,-25.184f}, {86.281f,-39.008f}, 409 {81.097f,-48.08f}, {75.913f,-57.152f}, {60.302f,-56.195f}, {43.08f,-57.152f}, 410 {27.528f,-58.016f}, {9.384f,-35.12f}, {8.088f,-33.392f}}}, 411 {"mccccccccz", 412 {{8.816f,-32.744f}, {7.544f,-31.048f}, {13.48f,5.841f}, {14.752f,11.353f}, {16.024f,16.865f}, 413 {13.48f,42.305f}, {13.48f,42.305f}, {44.884f,33.145f}, {17.296f,35.097f}, {44.008f,38.913f}, 414 {70.721f,42.729f}, {95.313f,8.385f}, {97.009f,-0.943996f}, {98.705f,-10.272f}, 415 {88.953f,-21.72f}, {88.953f,-21.72f}, {90.225f,-24.688f}, {85.561f,-38.256f}, 416 {80.473f,-47.16f}, {75.385f,-56.064f}, {60.063f,-55.125f}, {43.16f,-56.064f}, 417 {27.896f,-56.912f}, {10.088f,-34.44f}, {8.81601f,-32.744f}}}, 418 {"mccccccccz", 419 {{9.544f,-32.096f}, {8.296f,-30.432f}, {14.12f,5.761f}, {15.368f,11.169f}, {16.616f,16.577f}, 420 {14.12f,41.537f}, {14.12f,41.537f}, {43.556f,32.497f}, {17.864f,34.465f}, {44.072f,38.209f}, 421 {70.281f,41.953f}, {94.409f,8.257f}, {96.073f,-0.895f}, {97.737f,-10.048f}, {88.169f,-21.28f}, 422 {88.169f,-21.28f}, {89.417f,-24.192f}, {84.841f,-37.504f}, {79.849f,-46.24f}, 423 {74.857f,-54.976f}, {59.824f,-54.055f}, {43.24f,-54.976f}, {28.264f,-55.808f}, 424 {10.792f,-33.76f}, {9.544f,-32.096f}}}, 425 {"mccccccccz", 426 {{10.272f,-31.448f}, {9.048f,-29.816f}, {14.76f,5.681f}, {15.984f,10.985f}, {17.208f,16.289f}, 427 {14.76f,40.769f}, {14.76f,40.769f}, {42.628f,31.849f}, {18.432f,33.833f}, {44.136f,37.505f}, 428 {69.841f,41.177f}, {93.505f,8.129f}, {95.137f,-0.848003f}, {96.769f,-9.824f}, 429 {87.385f,-20.84f}, {87.385f,-20.84f}, {88.609f,-23.696f}, {84.121f,-36.752f}, 430 {79.225f,-45.32f}, {74.329f,-53.888f}, {59.585f,-52.985f}, {43.32f,-53.888f}, 431 {28.632f,-54.704f}, {11.496f,-33.08f}, {10.272f,-31.448f}}}, 432 {"mccccccccz", 433 {{44.2f,36.8f}, {69.4f,40.4f}, {92.601f,8.f}, {94.201f,-0.799999f}, {95.801f,-9.6f}, 434 {86.601f,-20.4f}, {86.601f,-20.4f}, {87.801f,-23.2f}, {83.4f,-36.f}, {78.6f,-44.4f}, 435 {73.8f,-52.8f}, {59.346f,-51.914f}, {43.4f,-52.8f}, {29.f,-53.6f}, {12.2f,-32.4f}, 436 {11.f,-30.8f}, {9.8f,-29.2f}, {15.4f,5.6f}, {16.6f,10.8f}, {17.8f,16.f}, {15.4f,40.f}, 437 {15.4f,40.f}, {40.9f,31.4f}, {19.f,33.2f}, {44.2f,36.8f}}}, 438 {"mclllccccccccccccccclccccclcccccccclcccllclcccccccccccccccclccz", 439 {{143.8f,259.6f}, {143.8f,259.6f}, {164.2f,257.6f}, {171.f,250.8f}, {175.4f,254.4f}, 440 {193.f,216.f}, {196.6f,221.2f}, {196.6f,221.2f}, {211.f,206.4f}, {210.2f,198.4f}, 441 {209.4f,190.4f}, {223.f,204.4f}, {223.f,204.4f}, {223.f,204.4f}, {222.2f,192.8f}, 442 {229.4f,199.6f}, {229.4f,199.6f}, {227.f,184.f}, {235.4f,192.f}, {235.4f,192.f}, 443 {224.86f,161.84f}, {247.4f,187.6f}, {253.f,194.f}, {248.6f,187.2f}, {248.6f,187.2f}, 444 {248.6f,187.2f}, {222.6f,139.2f}, {244.2f,153.6f}, {244.2f,153.6f}, {246.2f,130.8f}, 445 {245.f,126.4f}, {243.8f,122.f}, {241.8f,99.6f}, {237.f,94.4f}, {232.2f,89.2f}, {237.4f,87.6f}, 446 {243.f,92.8f}, {243.f,92.8f}, {231.8f,68.8f}, {245.f,80.8f}, {245.f,80.8f}, {241.4f,65.6f}, 447 {237.f,62.8f}, {237.f,62.8f}, {231.4f,45.6f}, {246.6f,56.4f}, {246.6f,56.4f}, {242.2f,44.f}, 448 {239.f,40.8f}, {239.f,40.8f}, {227.4f,13.2f}, {234.6f,18.f}, {239.f,21.6f}, {239.f,21.6f}, 449 {232.2f,7.60001f}, {238.6f,12.f}, {245.f,16.4f}, {245.f,16.f}, {245.f,16.f}, {245.f,16.f}, 450 {223.8f,-17.2f}, {244.2f,0.400011f}, {244.2f,0.400011f}, {236.04f,-13.518f}, {232.6f,-20.4f}, 451 {232.6f,-20.4f}, {213.8f,-40.8f}, {228.2f,-34.4f}, {233.f,-32.8f}, {233.f,-32.8f}, 452 {224.2f,-42.8f}, {216.2f,-44.4f}, {208.2f,-46.f}, {218.6f,-52.4f}, {225.f,-50.4f}, 453 {231.4f,-48.4f}, {247.f,-40.8f}, {247.f,-40.8f}, {247.f,-40.8f}, {259.8f,-22.f}, 454 {263.8f,-21.6f}, {263.8f,-21.6f}, {243.8f,-29.2f}, {249.8f,-21.2f}, {249.8f,-21.2f}, 455 {264.2f,-7.19999f}, {257.f,-7.59999f}, {257.f,-7.59999f}, {251.f,-0.399987f}, 456 {255.8f,8.40001f}, {255.8f,8.40001f}, {237.34f,-9.99099f}, {252.2f,15.6f}, {259.f,32.f}, 457 {259.f,32.f}, {234.6f,7.20001f}, {245.8f,29.2f}, {245.8f,29.2f}, {263.f,52.8f}, {265.f,53.2f}, 458 {267.f,53.6f}, {271.4f,62.4f}, {271.4f,62.4f}, {267.f,60.4f}, {272.2f,69.2f}, {272.2f,69.2f}, 459 {261.f,57.2f}, {267.f,70.4f}, {272.6f,84.8f}, {272.6f,84.8f}, {252.2f,62.8f}, {265.8f,92.4f}, 460 {265.8f,92.4f}, {249.4f,87.2f}, {258.2f,104.4f}, {258.2f,104.4f}, {256.6f,120.4f}, 461 {257.f,125.6f}, {257.4f,130.8f}, {258.6f,159.2f}, {254.2f,167.2f}, {249.8f,175.2f}, 462 {260.2f,194.4f}, {262.2f,198.4f}, {264.2f,202.4f}, {267.8f,213.2f}, {259.f,204.f}, 463 {250.2f,194.8f}, {254.6f,200.4f}, {256.6f,209.2f}, {258.6f,218.f}, {264.6f,233.6f}, 464 {263.8f,239.2f}, {263.8f,239.2f}, {262.6f,240.4f}, {259.4f,236.8f}, {259.4f,236.8f}, 465 {244.6f,214.f}, {246.2f,228.4f}, {246.2f,228.4f}, {245.f,236.4f}, {241.8f,245.2f}, 466 {241.8f,245.2f}, {238.6f,256.f}, {238.6f,247.2f}, {238.6f,247.2f}, {235.4f,230.4f}, 467 {232.6f,238.f}, {229.8f,245.6f}, {226.2f,251.6f}, {223.4f,254.f}, {220.6f,256.4f}, 468 {215.4f,233.6f}, {214.2f,244.f}, {214.2f,244.f}, {202.2f,231.6f}, {197.4f,248.f}, 469 {185.8f,264.4f}, {185.8f,264.4f}, {185.4f,252.f}, {184.2f,258.f}, {184.2f,258.f}, 470 {154.2f,264.f}, {143.8f,259.6f}}}, 471 {"mcccccccccccccccccccccccccccccccccccccccccclccccccccccccccccccccccccccccccclccccccccccccccccl" 472 "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclccccccccccccz", 473 {{20.895f,54.407f}, {22.437f,55.87f}, {49.4f,84.8f}, {49.4f,84.8f}, {84.6f,121.4f}, 474 {56.6f,87.2f}, {56.6f,87.2f}, {49.f,82.4f}, {39.8f,63.6f}, {39.8f,63.6f}, {38.6f,60.8f}, 475 {53.8f,70.8f}, {53.8f,70.8f}, {57.8f,71.6f}, {71.4f,90.8f}, {71.4f,90.8f}, {64.6f,88.4f}, 476 {69.4f,95.6f}, {69.4f,95.6f}, {72.2f,97.6f}, {92.601f,113.2f}, {92.601f,113.2f}, 477 {96.201f,117.2f}, {100.2f,118.8f}, {100.2f,118.8f}, {114.2f,113.6f}, {107.8f,126.8f}, 478 {107.8f,126.8f}, {110.2f,133.6f}, {115.8f,122.f}, {115.8f,122.f}, {127.f,105.2f}, 479 {110.6f,107.6f}, {110.6f,107.6f}, {80.6f,110.4f}, {73.8f,94.4f}, {73.8f,94.4f}, {71.4f,92.f}, 480 {80.2f,94.4f}, {80.2f,94.4f}, {88.601f,96.4f}, {73.f,82.f}, {73.f,82.f}, {75.4f,82.f}, 481 {84.6f,88.8f}, {84.6f,88.8f}, {95.001f,98.f}, {97.001f,96.f}, {97.001f,96.f}, {115.f,87.2f}, 482 {125.4f,94.8f}, {125.4f,94.8f}, {127.4f,96.4f}, {121.8f,103.2f}, {123.4f,108.4f}, 483 {125.f,113.6f}, {129.8f,126.f}, {129.8f,126.f}, {127.4f,127.6f}, {127.8f,138.4f}, 484 {127.8f,138.4f}, {144.6f,161.6f}, {135.f,159.6f}, {135.f,159.6f}, {119.4f,159.2f}, 485 {134.2f,166.8f}, {134.2f,166.8f}, {137.4f,168.8f}, {146.2f,176.f}, {146.2f,176.f}, 486 {143.4f,174.8f}, {141.8f,180.f}, {141.8f,180.f}, {146.6f,184.f}, {143.8f,188.8f}, 487 {143.8f,188.8f}, {137.8f,190.f}, {136.6f,194.f}, {136.6f,194.f}, {143.4f,202.f}, 488 {133.4f,202.4f}, {133.4f,202.4f}, {137.f,206.8f}, {132.2f,218.8f}, {132.2f,218.8f}, 489 {127.4f,218.8f}, {121.f,224.4f}, {121.f,224.4f}, {123.4f,229.2f}, {113.f,234.8f}, 490 {113.f,234.8f}, {104.6f,236.4f}, {107.4f,243.2f}, {107.4f,243.2f}, {99.401f,249.2f}, 491 {97.001f,265.2f}, {97.001f,265.2f}, {96.201f,275.6f}, {93.801f,278.8f}, {99.001f,276.8f}, 492 {104.2f,274.8f}, {103.4f,262.4f}, {103.4f,262.4f}, {98.601f,246.8f}, {141.4f,230.8f}, 493 {141.4f,230.8f}, {145.4f,229.2f}, {146.2f,224.f}, {146.2f,224.f}, {148.2f,224.4f}, 494 {157.f,232.f}, {157.f,232.f}, {164.6f,243.2f}, {165.f,234.f}, {165.f,234.f}, {166.2f,230.4f}, 495 {164.6f,224.4f}, {164.6f,224.4f}, {170.6f,202.8f}, {156.6f,196.4f}, {156.6f,196.4f}, 496 {146.6f,162.8f}, {160.6f,171.2f}, {160.6f,171.2f}, {163.4f,176.8f}, {174.2f,182.f}, 497 {174.2f,182.f}, {177.8f,179.6f}, {176.2f,174.8f}, {184.6f,168.8f}, {184.6f,168.8f}, 498 {187.4f,175.2f}, {193.4f,167.2f}, {193.4f,167.2f}, {197.f,142.8f}, {209.4f,157.2f}, 499 {209.4f,157.2f}, {213.4f,158.4f}, {214.6f,151.6f}, {214.6f,151.6f}, {218.2f,141.2f}, 500 {214.6f,127.6f}, {214.6f,127.6f}, {218.2f,127.2f}, {227.8f,133.2f}, {227.8f,133.2f}, 501 {230.6f,129.6f}, {221.4f,112.8f}, {225.4f,115.2f}, {229.4f,117.6f}, {233.8f,119.2f}, 502 {233.8f,119.2f}, {234.6f,117.2f}, {224.6f,104.8f}, {224.6f,104.8f}, {220.2f,102.f}, 503 {215.f,81.5999f}, {215.f,81.5999f}, {222.2f,85.1999f}, {212.2f,69.9999f}, {212.2f,69.9999f}, 504 {212.2f,66.7999f}, {218.2f,55.5999f}, {218.2f,55.5999f}, {217.4f,48.7999f}, {218.2f,49.1999f}, 505 {218.2f,49.1999f}, {221.f,50.3999f}, {229.f,51.9999f}, {222.2f,45.5999f}, {215.4f,39.1999f}, 506 {223.f,34.3999f}, {223.f,34.3999f}, {227.4f,31.5999f}, {213.8f,31.9999f}, {213.8f,31.9999f}, 507 {208.6f,27.5999f}, {209.f,23.5999f}, {209.f,23.5999f}, {217.f,25.5999f}, {202.6f,11.1999f}, 508 {200.2f,7.59995f}, {197.8f,3.99994f}, {207.4f,-1.20006f}, {207.4f,-1.20006f}, 509 {220.6f,-4.80006f}, {209.f,-8.00006f}, {209.f,-8.00006f}, {189.4f,-7.60006f}, 510 {200.2f,-18.4001f}, {200.2f,-18.4001f}, {206.2f,-18.0001f}, {204.6f,-20.4001f}, 511 {204.6f,-20.4001f}, {199.4f,-21.6001f}, {189.8f,-28.0001f}, {189.8f,-28.0001f}, 512 {185.8f,-31.6001f}, {189.4f,-30.8001f}, {189.4f,-30.8001f}, {206.2f,-29.6001f}, 513 {177.4f,-40.8001f}, {177.4f,-40.8001f}, {185.4f,-40.8001f}, {167.4f,-51.2001f}, 514 {167.4f,-51.2001f}, {165.4f,-52.8001f}, {162.2f,-60.4001f}, {162.2f,-60.4001f}, 515 {156.2f,-65.6001f}, {151.4f,-72.4001f}, {151.4f,-72.4001f}, {151.f,-76.8001f}, 516 {146.2f,-81.6001f}, {146.2f,-81.6001f}, {134.6f,-95.2001f}, {129.f,-94.8f}, {129.f,-94.8f}, 517 {114.2f,-98.4f}, {109.f,-97.6001f}, {109.f,-97.6001f}, {56.2f,-93.2001f}, {29.8f,-80.4f}, 518 {37.6f,-59.4001f}, {37.6f,-59.4001f}, {44.f,-51.0001f}, {53.2f,-54.8001f}, {53.2f,-54.8001f}, 519 {57.8f,-61.0001f}, {69.4f,-58.8001f}, {69.4f,-58.8001f}, {89.801f,-55.6001f}, 520 {87.201f,-59.2001f}, {87.201f,-59.2001f}, {84.801f,-63.8001f}, {68.6f,-70.0001f}, 521 {68.4f,-70.6001f}, {68.2f,-71.2001f}, {59.4f,-74.6001f}, {59.4f,-74.6001f}, {56.4f,-75.8f}, 522 {52.f,-85.0001f}, {52.f,-85.0001f}, {48.8f,-88.4001f}, {64.6f,-82.6001f}, {64.6f,-82.6001f}, 523 {63.4f,-81.6001f}, {70.8f,-77.6001f}, {70.8f,-77.6001f}, {88.201f,-78.6001f}, 524 {98.801f,-67.8f}, {98.801f,-67.8f}, {109.6f,-51.2001f}, {109.8f,-59.4f}, {109.8f,-59.4f}, 525 {112.6f,-68.8f}, {100.8f,-90.f}, {100.8f,-90.f}, {101.2f,-92.f}, {109.4f,-85.4f}, 526 {109.4f,-85.4f}, {110.8f,-87.4f}, {111.6f,-81.6f}, {111.6f,-81.6f}, {111.8f,-79.2f}, 527 {115.6f,-71.2f}, {115.6f,-71.2f}, {118.4f,-58.2f}, {122.f,-65.6f}, {122.f,-65.6f}, 528 {126.6f,-56.2f}, {128.f,-53.6f}, {122.f,-46.f}, {122.f,-46.f}, {121.8f,-43.2f}, 529 {122.6f,-43.4f}, {117.f,-35.8f}, {111.4f,-28.2f}, {114.8f,-23.8f}, {114.8f,-23.8f}, 530 {113.4f,-17.2f}, {122.2f,-17.6f}, {122.2f,-17.6f}, {124.8f,-15.4f}, {128.2f,-15.4f}, 531 {128.2f,-15.4f}, {130.f,-13.4f}, {132.4f,-14.f}, {132.4f,-14.f}, {134.f,-17.8f}, 532 {140.2f,-15.8f}, {140.2f,-15.8f}, {141.6f,-18.2f}, {149.8f,-18.6f}, {149.8f,-18.6f}, 533 {150.8f,-21.2f}, {151.2f,-22.8f}, {154.6f,-23.4f}, {158.f,-24.f}, {133.4f,-67.f}, 534 {133.4f,-67.f}, {139.8f,-67.8f}, {131.6f,-80.2f}, {131.6f,-80.2f}, {129.4f,-86.8f}, 535 {140.8f,-72.2f}, {143.f,-70.8f}, {145.2f,-69.4f}, {146.2f,-67.2f}, {144.6f,-67.4f}, 536 {143.f,-67.6f}, {141.2f,-65.4f}, {142.6f,-65.2f}, {144.f,-65.f}, {157.f,-50.f}, 537 {160.4f,-39.8f}, {163.8f,-29.6f}, {169.8f,-25.6f}, {176.f,-19.6f}, {182.2f,-13.6f}, 538 {181.4f,10.6f}, {181.4f,10.6f}, {181.f,19.4f}, {187.f,30.f}, {187.f,30.f}, {189.f,33.8f}, 539 {184.8f,52.f}, {184.8f,52.f}, {182.8f,54.2f}, {184.2f,55.f}, {184.2f,55.f}, {185.2f,56.2f}, 540 {192.f,69.4f}, {192.f,69.4f}, {190.2f,69.2f}, {193.8f,72.8f}, {193.8f,72.8f}, {199.f,78.8f}, 541 {192.6f,75.8f}, {192.6f,75.8f}, {186.6f,74.2f}, {193.6f,84.f}, {193.6f,84.f}, {194.8f,85.8f}, 542 {185.8f,81.2f}, {185.8f,81.2f}, {176.6f,80.6f}, {188.2f,87.8f}, {188.2f,87.8f}, {196.8f,95.f}, 543 {185.4f,90.6f}, {185.4f,90.6f}, {180.8f,88.8f}, {184.f,95.6f}, {184.f,95.6f}, {187.2f,97.2f}, 544 {204.4f,104.2f}, {204.4f,104.2f}, {204.8f,108.f}, {201.8f,113.f}, {201.8f,113.f}, 545 {202.2f,117.f}, {200.f,120.4f}, {200.f,120.4f}, {198.8f,128.6f}, {198.2f,129.4f}, 546 {198.2f,129.4f}, {194.f,129.6f}, {186.6f,143.4f}, {186.6f,143.4f}, {184.8f,146.f}, 547 {174.6f,158.f}, {174.6f,158.f}, {172.6f,165.f}, {154.6f,157.8f}, {154.6f,157.8f}, 548 {148.f,161.2f}, {150.f,157.8f}, {150.f,157.8f}, {149.6f,155.6f}, {154.4f,149.6f}, 549 {154.4f,149.6f}, {161.4f,147.f}, {158.8f,136.2f}, {158.8f,136.2f}, {162.8f,134.8f}, 550 {151.6f,132.f}, {151.8f,130.8f}, {152.f,129.6f}, {157.8f,128.2f}, {157.8f,128.2f}, 551 {165.8f,126.2f}, {161.4f,123.8f}, {161.4f,123.8f}, {160.8f,119.8f}, {163.8f,114.2f}, 552 {163.8f,114.2f}, {175.4f,113.4f}, {163.8f,97.2f}, {163.8f,97.2f}, {153.f,89.6f}, 553 {152.f,83.8f}, {152.f,83.8f}, {164.6f,75.6f}, {156.4f,63.2f}, {156.6f,59.6f}, {156.8f,56.f}, 554 {158.f,34.4f}, {158.f,34.4f}, {156.f,28.2f}, {153.f,14.6f}, {153.f,14.6f}, {155.2f,9.39998f}, 555 {162.6f,-3.20002f}, {162.6f,-3.20002f}, {165.4f,-7.40002f}, {174.2f,-12.2f}, {172.f,-15.2f}, 556 {169.8f,-18.2f}, {162.f,-16.4f}, {162.f,-16.4f}, {154.2f,-17.8f}, {154.8f,-12.6f}, 557 {154.8f,-12.6f}, {153.2f,-11.6f}, {152.4f,-6.60002f}, {152.4f,-6.60002f}, {151.68f,1.33298f}, 558 {142.8f,7.59998f}, {142.8f,7.59998f}, {131.6f,13.8f}, {140.8f,17.8f}, {140.8f,17.8f}, 559 {146.8f,24.4f}, {137.f,24.6f}, {137.f,24.6f}, {126.f,22.8f}, {134.2f,33.f}, {134.2f,33.f}, 560 {145.f,45.8f}, {142.f,48.6f}, {142.f,48.6f}, {131.8f,49.6f}, {144.4f,58.8f}, {144.4f,58.8f}, 561 {144.4f,58.8f}, {143.6f,56.8f}, {143.8f,58.6f}, {144.f,60.4f}, {147.f,64.6f}, {147.8f,66.6f}, 562 {148.6f,68.6f}, {144.6f,68.8f}, {144.6f,68.8f}, {145.2f,78.4f}, {129.8f,74.2f}, 563 {129.8f,74.2f}, {128.2f,74.4f}, {126.6f,74.6f}, {115.4f,73.8f}, {109.6f,71.6f}, 564 {103.8f,69.4f}, {97.001f,69.4f}, {97.001f,69.4f}, {97.001f,69.4f}, {93.001f,71.2f}, 565 {85.4f,71.f}, {77.8f,70.8f}, {69.8f,73.6f}, {69.8f,73.6f}, {65.4f,73.2f}, {74.f,68.8f}, 566 {74.2f,69.f}, {74.4f,69.2f}, {80.f,63.6f}, {72.f,64.2f}, {50.203f,65.835f}, {39.4f,55.6f}, 567 {39.4f,55.6f}, {37.4f,54.2f}, {34.8f,51.4f}, {34.8f,51.4f}, {24.8f,49.4f}, {36.2f,63.8f}, 568 {36.2f,63.8f}, {37.4f,65.2f}, {36.f,66.2f}, {36.f,66.2f}, {35.2f,64.6f}, {27.4f,59.2f}, 569 {27.4f,59.2f}, {24.589f,58.227f}, {23.226f,56.893f}, {20.895f,54.407f}}}, 570 {"mcccz", 571 {{29.f,128.8f}, {29.f,128.8f}, {28.8f,127.f}, {30.6f,127.8f}, {32.4f,128.6f}, {205.8f,115.6f}, 572 {229.4f,148.f}, {229.4f,148.f}, {219.8f,122.4f}, {29.f,128.8f}}}, 573 {"mcccz", 574 {{11.526f,104.46f}, {11.526f,104.46f}, {11.082f,106.46f}, {12.631f,105.25f}, {28.699f,92.622f}, 575 {61.141f,33.72f}, {116.831f,28.086f}, {116.831f,28.086f}, {78.519f,15.976f}, 576 {11.531f,104.46f}}}, 577 {"mcccz", 578 {{22.726f,102.66f}, {22.726f,102.66f}, {21.363f,101.47f}, {23.231f,100.85f}, {25.099f,100.22f}, 579 {137.541f,27.72f}, {176.831f,35.686f}, {176.831f,35.686f}, {149.721f,28.176f}, 580 {22.731f,102.66f}}}, 581 {"mcccz", 582 {{36.855f,98.898f}, {36.855f,98.898f}, {35.654f,97.543f}, {37.586f,97.158f}, {39.518f,96.774f}, 583 {160.216f,39.061f}, {198.176f,51.927f}, {198.176f,51.927f}, {172.236f,41.053f}, 584 {36.856f,98.898f}}}, 585 }; 586 587 int kNumTigerPaths = (int)std::size(kTigerPaths); 588 589 #endif // SK_ENABLE_OPTIMIZE_SIZE 590