[
  {
    "path": ".gitignore",
    "content": ".DS_Store\n\n/Library\n/Temp\n/Movies\n\n/Assets/Plugins/Editor/JetBrains*\n\n.idea\n*.sln\n*.csproj\nobj\n\nGeneratedShader.shader\nUberShader.shader\n"
  },
  {
    "path": "Assets/Plugins/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 73d4632ce6e46454081ad6984856fee4\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Plugins.meta",
    "content": "fileFormatVersion: 2\nguid: ca2d50efbca8f49e587683c68c568310\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Rendering Assets/Lightweight Render Pipeline.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!114 &11400000\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 0}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3}\n  m_Name: Lightweight Render Pipeline\n  m_EditorClassIdentifier: \n  kAssetVersion: 2\n  m_MaxPixelLights: 4\n  m_SupportsVertexLight: 0\n  m_RequireDepthTexture: 0\n  m_RequireSoftParticles: 0\n  m_SupportsHDR: 0\n  m_MSAA: 4\n  m_RenderScale: 1\n  m_ShadowType: 1\n  m_ShadowAtlasResolution: 2048\n  m_ShadowNearPlaneOffset: 2\n  m_ShadowDistance: 50\n  m_ShadowCascades: 2\n  m_Cascade2Split: 0.25\n  m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}\n  m_ResourcesAsset: {fileID: 11400000, guid: aac5a08c32552a14c89394b703f1978a, type: 2}\n"
  },
  {
    "path": "Assets/Rendering Assets/Lightweight Render Pipeline.asset.meta",
    "content": "fileFormatVersion: 2\nguid: 3450f356d0f9942e3b26f29a5aeea0d1\nNativeFormatImporter:\n  externalObjects: {}\n  mainObjectFileID: 11400000\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Rendering Assets/Post-Process Stripping Config.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!114 &11400000\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 0}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 2f29da58f3a63f649a512733d24af22c, type: 3}\n  m_Name: PostProcessStrippingConfig\n  m_EditorClassIdentifier: \n  stripUnsupportedShaders: 1\n  stripDebugShaders: 0\n  stripComputeShaders: 0\n"
  },
  {
    "path": "Assets/Rendering Assets/Post-Process Stripping Config.asset.meta",
    "content": "fileFormatVersion: 2\nguid: e62f417b9c684418da29800c82f945f1\nNativeFormatImporter:\n  externalObjects: {}\n  mainObjectFileID: 11400000\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Rendering Assets.meta",
    "content": "fileFormatVersion: 2\nguid: 4acd1d27689444de2a0df7a5c297b977\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/BezierToVertex.cs",
    "content": "﻿using UnityEngine;\n\nnamespace SVGMeshUnity.Internals\n{\n    public class BezierToVertex\n    {\n        // https://github.com/mattdesl/svg-path-contours\n\n        public float Scale = 1f;\n        \n        public float PathDistanceEpsilon = 1f;\n        public int RecursionLimit = 8;\n        public float FLTEpsilon = 1.19209290e-7f;\n\n        public float AngleEpsilon = 0.01f;\n        public float AngleTolerance = 0f;\n        public float CuspLimit = 0f;\n\n        public WorkBufferPool WorkBufferPool;\n\n        private WorkBuffer<Vector2> WorkVertices;\n        \n        public void GetContours(SVGData svg, MeshData data)\n        {\n            WorkBufferPool.Get(ref WorkVertices);\n            \n            var pen = Vector2.zero;\n            \n            var curves = svg.Curves;\n            var l = curves.Count;\n            for (var i = 0; i < l; ++i)\n            {\n                var curve = curves[i];\n                if (curve.IsMove)\n                {\n                    EmitWorkVerticesIfNeeded(data);\n                }\n                else\n                {\n                    FillBezier(pen, curve.InControl, curve.OutControl, curve.Position);\n                }\n                pen = curve.Position;\n            }\n            \n            EmitWorkVerticesIfNeeded(data);\n            \n            WorkBufferPool.Release(ref WorkVertices);\n        }\n\n        private void EmitWorkVerticesIfNeeded(MeshData data)\n        {\n            if (WorkVertices.UsedSize == 0)\n            {\n                return;\n            }\n            \n            // TODO: Simplify\n            \n            data.AddVertices(WorkVertices);\n            WorkVertices.Clear();\n        }\n\n        ////// Based on:\n        ////// https://github.com/pelson/antigrain/blob/master/agg-2.4/src/agg_curves.cpp\n\n        private void FillBezier(Vector2 start, Vector2 c1, Vector2 c2, Vector2 end)\n        {\n            var distanceTolerance = PathDistanceEpsilon / Scale;\n            distanceTolerance *= distanceTolerance;\n            BeginFillBezier(start, c1, c2, end, distanceTolerance);\n        }\n        \n        private void BeginFillBezier(Vector2 start, Vector2 c1, Vector2 c2, Vector2 end, float distanceTolerance)\n        {\n            WorkVertices.Push(ref start);\n            RecursiveFillBezier(start, c1, c2, end, distanceTolerance, 0);\n            WorkVertices.Push(ref end);\n        }\n\n        private void RecursiveFillBezier(Vector2 v1, Vector2 v2, Vector2 v3, Vector2 v4, float distanceTolerance, int level)\n        {\n            if (level > RecursionLimit)\n            {\n                return;\n            }\n\n            var pi = Mathf.PI;\n\n            // Calculate all the mid-points of the line segments\n            //----------------------\n            var v12 = (v1 + v2) / 2f;\n            var v23 = (v2 + v3) / 2f;\n            var v34 = (v3 + v4) / 2f;\n            var v123 = (v12 + v23) / 2f;\n            var v234 = (v23 + v34) / 2f;\n            var v1234 = (v123 + v234) / 2f;\n            \n            // Enforce subdivision first time\n            if (level > 0)\n            {\n                // Try to approximate the full cubic curve by a single straight line\n                //------------------\n                var d = v4 - v1;\n\n                var d2 = Mathf.Abs((v2.x - v4.x) * d.y - (v2.y - v4.y) * d.x);\n                var d3 = Mathf.Abs((v3.x - v4.x) * d.y - (v3.y - v4.y) * d.x);\n\n                if (d2 > FLTEpsilon && d3 > FLTEpsilon)\n                {\n                    // Regular care\n                    //-----------------\n                    if ((d2 + d3) * (d2 + d3) <= distanceTolerance * (d.x * d.x + d.y * d.y))\n                    {\n                        // If the curvature doesn't exceed the distanceTolerance value\n                        // we tend to finish subdivisions.\n                        //----------------------\n                        if (AngleTolerance < AngleEpsilon)\n                        {\n                            WorkVertices.Push(ref v1234);\n                            return;\n                        }\n\n                        // Angle & Cusp Condition\n                        //----------------------\n                        var a23 = Mathf.Atan2(v3.y - v2.y, v3.x - v2.x);\n                        var da1 = Mathf.Abs(a23 - Mathf.Atan2(v2.y - v1.y, v2.x - v1.x));\n                        var da2 = Mathf.Abs(Mathf.Atan2(v4.y - v3.y, v4.x - v3.x) - a23);\n\n                        if (da1 >= pi)\n                        {\n                            da1 = 2 * pi - da1;\n                        }\n\n                        if (da2 >= pi)\n                        {\n                            da2 = 2 * pi - da2;\n                        }\n\n                        if (da1 + da2 < AngleTolerance)\n                        {\n                            // Finally we can stop the recursion\n                            //----------------------\n                            WorkVertices.Push(ref v1234);\n                            return;\n                        }\n\n                        if (CuspLimit > 0f)\n                        {\n                            if (da1 > CuspLimit)\n                            {\n                                WorkVertices.Push(ref v2);\n                                return;\n                            }\n\n                            if (da2 > CuspLimit)\n                            {\n                                WorkVertices.Push(ref v3);\n                                return;\n                            }\n                        }\n                    }\n                }\n                else\n                {\n                    if (d2 > FLTEpsilon)\n                    {\n                        // p1,p3,p4 are collinear, p2 is considerable\n                        //----------------------\n                        if (d2 * d2 <= distanceTolerance * (d.x * d.x + d.y * d.y))\n                        {\n                            if (AngleTolerance < AngleEpsilon)\n                            {\n                                WorkVertices.Push(ref v1234);\n                                return;\n                            }\n\n                            // Angle Condition\n                            //----------------------\n                            var da1 = Mathf.Abs(Mathf.Atan2(v3.y - v2.y, v3.x - v2.x) -\n                                                Mathf.Atan2(v2.y - v1.y, v2.x - v1.x));\n                            if (da1 >= pi)\n                            {\n                                da1 = 2 * pi - da1;\n                            }\n\n                            if (da1 < AngleTolerance)\n                            {\n                                WorkVertices.Push(ref v2);\n                                WorkVertices.Push(ref v3);\n                                return;\n                            }\n\n                            if (CuspLimit > 0f)\n                            {\n                                if (da1 > CuspLimit)\n                                {\n                                    WorkVertices.Push(ref v2);\n                                    return;\n                                }\n                            }\n                        }\n                    }\n                    else if (d3 > FLTEpsilon)\n                    {\n                        // p1,p2,p4 are collinear, p3 is considerable\n                        //----------------------\n                        if (d3 * d3 <= distanceTolerance * (d.x * d.x + d.y * d.y))\n                        {\n                            if (AngleTolerance < AngleEpsilon)\n                            {\n                                WorkVertices.Push(ref v1234);\n                                return;\n                            }\n\n                            // Angle Condition\n                            //----------------------\n                            var da1 = Mathf.Abs(Mathf.Atan2(v4.y - v3.y, v4.x - v3.x) -\n                                                Mathf.Atan2(v3.y - v2.y, v3.x - v2.x));\n                            if (da1 >= pi)\n                            {\n                                da1 = 2 * pi - da1;\n                            }\n\n                            if (da1 < AngleTolerance)\n                            {\n                                WorkVertices.Push(ref v2);\n                                WorkVertices.Push(ref v3);\n                                return;\n                            }\n\n                            if (CuspLimit > 0f)\n                            {\n                                if (da1 > CuspLimit)\n                                {\n                                    WorkVertices.Push(ref v3);\n                                    return;\n                                }\n                            }\n                        }\n                    }\n                    else\n                    {\n                        // Collinear case\n                        //-----------------\n                        var dx = v1234.x - (v1.x + v4.x) / 2f;\n                        var dy = v1234.y - (v1.y + v4.y) / 2f;\n                        if (dx * dx + dy * dy <= distanceTolerance)\n                        {\n                            WorkVertices.Push(ref v1234);\n                            return;\n                        }\n                    }\n                }\n            }\n\n            // Continue subdivision\n            //----------------------\n            RecursiveFillBezier(v1, v12, v123, v1234, distanceTolerance, level + 1);\n            RecursiveFillBezier(v1234, v234, v34, v4, distanceTolerance, level + 1);\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/BezierToVertex.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: d0446926ab40486abe8a0e4ab9380186\r\ntimeCreated: 1519697284"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/BinarySearch.cs",
    "content": "﻿using System;\n\nnamespace SVGMeshUnity.Internals.Cdt2d\n{\n    public static class BinarySearch\n    {\n        // https://github.com/mikolalysenko/binary-search-bounds\n\n        public interface IComparer<G, E>\n        {\n            int Compare(G x, E y);\n        }\n\n        public static int GE<G, E>(G[] a, E y, IComparer<G, E> c, int l, int h)\n        {\n            var i = h + 1;\n            while (l <= h)\n            {\n                var m = (int) (uint) (l + h) >> 1;\n                var x = a[m];\n                if (c.Compare(x, y) >= 0)\n                {\n                    i = m;\n                    h = m - 1;\n                }\n                else\n                {\n                    l = m + 1;\n                }\n            }\n\n            return i;\n        }\n\n        public static int GE<G>(G[] a, G y, int l, int h) where G : IComparable<G>\n        {\n            var i = h + 1;\n            while (l <= h)\n            {\n                var m = (int) (uint) (l + h) >> 1;\n                var x = a[m];\n                if (x.CompareTo(y) >= 0)\n                {\n                    i = m;\n                    h = m - 1;\n                }\n                else\n                {\n                    l = m + 1;\n                }\n            }\n\n            return i;\n        }\n\n        public static int GT<G, E>(G[] a, E y, IComparer<G, E> c, int l, int h)\n        {\n            var i = h + 1;\n            while (l <= h)\n            {\n                var m = (int) (uint) (l + h) >> 1;\n                var x = a[m];\n                if (c.Compare(x, y) > 0)\n                {\n                    i = m;\n                    h = m - 1;\n                }\n                else\n                {\n                    l = m + 1;\n                }\n            }\n\n            return i;\n        }\n\n        public static int GT<G>(G[] a, G y, int l, int h) where G : IComparable<G>\n        {\n            var i = h + 1;\n            while (l <= h)\n            {\n                var m = (int) (uint) (l + h) >> 1;\n                var x = a[m];\n                if (x.CompareTo(y) > 0)\n                {\n                    i = m;\n                    h = m - 1;\n                }\n                else\n                {\n                    l = m + 1;\n                }\n            }\n\n            return i;\n        }\n\n        public static int LT<G, E>(G[] a, E y, IComparer<G, E> c, int l, int h)\n        {\n            var i = l - 1;\n            while (l <= h)\n            {\n                var m = (int) (uint) (l + h) >> 1;\n                var x = a[m];\n                if (c.Compare(x, y) < 0)\n                {\n                    i = m;\n                    l = m + 1;\n                }\n                else\n                {\n                    h = m - 1;\n                }\n            }\n\n            return i;\n        }\n\n        public static int LT<G>(G[] a, G y, int l, int h) where G : IComparable<G>\n        {\n            var i = l - 1;\n            while (l <= h)\n            {\n                var m = (int) (uint) (l + h) >> 1;\n                var x = a[m];\n                if (x.CompareTo(y) < 0)\n                {\n                    i = m;\n                    l = m + 1;\n                }\n                else\n                {\n                    h = m - 1;\n                }\n            }\n\n            return i;\n        }\n\n        public static int LE<G, E>(G[] a, E y, IComparer<G, E> c, int l, int h)\n        {\n            var i = l - 1;\n            while (l <= h)\n            {\n                var m = (int) (uint) (l + h) >> 1;\n                var x = a[m];\n                if (c.Compare(x, y) <= 0)\n                {\n                    i = m;\n                    l = m + 1;\n                }\n                else\n                {\n                    h = m - 1;\n                }\n            }\n\n            return i;\n        }\n\n        public static int LE<G>(G[] a, G y, int l, int h) where G : IComparable<G>\n        {\n            var i = l - 1;\n            while (l <= h)\n            {\n                var m = (int) (uint) (l + h) >> 1;\n                var x = a[m];\n                if (x.CompareTo(y) <= 0)\n                {\n                    i = m;\n                    l = m + 1;\n                }\n                else\n                {\n                    h = m - 1;\n                }\n            }\n\n            return i;\n        }\n\n        public static int EQ<G, E>(G[] a, E y, IComparer<G, E> c, int l, int h)\n        {\n            while (l <= h)\n            {\n                var m = (int) (uint) (l + h) >> 1;\n                var x = a[m];\n                var p = c.Compare(x, y);\n                if (p == 0)\n                {\n                    return m;\n                }\n\n                if (p <= 0)\n                {\n                    l = m + 1;\n                }\n                else\n                {\n                    h = m - 1;\n                }\n            }\n\n            return -1;\n        }\n\n        public static int EQ<G>(G[] a, G y, int l, int h) where G : IComparable<G>\n        {\n            while (l <= h)\n            {\n                var m = (int) (uint) (l + h) >> 1;\n                var x = a[m];\n                var p = x.CompareTo(y);\n                if (p == 0)\n                {\n                    return m;\n                }\n\n                if (p <= 0)\n                {\n                    l = m + 1;\n                }\n                else\n                {\n                    h = m - 1;\n                }\n            }\n\n            return -1;\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/BinarySearch.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: ebc1111a29cd4d6c89f5458aa07da178\r\ntimeCreated: 1519710584"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/DelaunayRefine.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\n\nnamespace SVGMeshUnity.Internals.Cdt2d\n{\n    public class DelaunayRefine\n    {\n        public WorkBufferPool WorkBufferPool;\n        \n        //Assume edges are sorted lexicographically\n        public void RefineTriangles(Triangles triangles)\n        {\n            var stack = WorkBufferPool.Get<Int2>();\n\n            var points = triangles.Vertices;\n            var numPoints = points.Count;\n            var stars = triangles.Stars;\n            for (var a = 0; a < numPoints; ++a)\n            {\n                var star = stars[a];\n                var starData = star.Data;\n                var sl = star.UsedSize;\n                for (var j = 0; j < sl; ++j)\n                {\n                    var s = starData[j];\n                    var b = s.y;\n\n                    //If order is not consistent, then skip edge\n                    if (b < a)\n                    {\n                        continue;\n                    }\n\n                    //Check if edge is constrained\n                    if (triangles.IsConstraint(a, b))\n                    {\n                        continue;\n                    }\n\n                    //Find opposite edge\n                    var x = s.x;\n                    var y = -1;\n                    for (var k = 0; k < sl; ++k)\n                    {\n                        if (starData[k].x == b)\n                        {\n                            y = starData[k].y;\n                            break;\n                        }\n                    }\n\n                    //If this is a boundary edge, don't flip it\n                    if (y < 0)\n                    {\n                        continue;\n                    }\n\n                    //If edge is in circle, flip it\n                    if (Robust.InSphere(points[a], points[b], points[x], points[y]) < 0f)\n                    {\n                        var v = new Int2(a, b);\n                        stack.Push(ref v);\n                    }\n                }\n            }\n\n            while (stack.UsedSize > 0)\n            {\n                var v = stack.Pop();\n                var a = v.x;\n                var b = v.y;\n\n                //Find opposite pairs\n                var x = -1;\n                var y = -1;\n                var star = stars[a];\n                var starData = star.Data;\n                var sl = star.UsedSize;\n                for (var i = 0; i < sl; ++i)\n                {\n                    var s = starData[i].x;\n                    var t = starData[i].y;\n                    if (s == b)\n                    {\n                        y = t;\n                    }\n                    else if (t == b)\n                    {\n                        x = s;\n                    }\n                }\n\n                //If x/y are both valid then skip edge\n                if (x < 0 || y < 0)\n                {\n                    continue;\n                }\n\n                //If edge is now delaunay, then don't flip it\n                if (Robust.InSphere(points[a], points[b], points[x], points[y]) >= 0f)\n                {\n                    continue;\n                }\n\n                //Flip the edge\n                triangles.Flip(a, b);\n\n                //Test flipping neighboring edges\n                TestFlip(points, triangles, stack, x, a, y);\n                TestFlip(points, triangles, stack, a, y, x);\n                TestFlip(points, triangles, stack, y, b, x);\n                TestFlip(points, triangles, stack, b, x, y);\n            }\n\n            WorkBufferPool.Release(ref stack);\n        }\n        \n        private void TestFlip(List<Vector3> points, Triangles triangles, WorkBuffer<Int2> stack, int a, int b, int x)\n        {\n            var y = triangles.Opposite(a, b);\n\n            //Test boundary edge\n            if (y < 0)\n            {\n                return;\n            }\n\n            //Swap edge if order flipped\n            if (b < a)\n            {\n                var tmp = a;\n                a = b;\n                b = tmp;\n                tmp = x;\n                x = y;\n                y = tmp;\n            }\n\n            //Test if edge is constrained\n            if (triangles.IsConstraint(a, b))\n            {\n                return;\n            }\n\n            //Test if edge is delaunay\n            if (Robust.InSphere(points[a], points[b], points[x], points[y]) < 0f)\n            {\n                var v = new Int2(a, b);\n                stack.Push(ref v);\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/DelaunayRefine.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: daf4535a11864f7e9737bf2657ad86e1\r\ntimeCreated: 1519795855"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/Filter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\n\nnamespace SVGMeshUnity.Internals.Cdt2d\n{\n    public class Filter\n    {\n        public int Target;\n        public bool Infinity;\n        \n        public WorkBufferPool WorkBufferPool;\n\n        public void Do(Triangles triangles, List<int> result)\n        {\n            using (var index = IndexCells(triangles))\n            {\n                var cellN = index.Cells.UsedSize;\n                \n                if (result.Capacity < cellN * 3)\n                {\n                    result.Capacity = cellN * 3;\n                }\n                \n                result.Clear();\n                \n                if (Target == 0)\n                {\n                    if (Infinity)\n                    {\n                        FillTriangles(index.Cells, result);\n                        FillTriangles(index.Boundary, result);\n                        return;\n                    }\n                    else\n                    {\n                        FillTriangles(index.Cells, result);\n                        return;\n                    }\n                }\n\n                var side = 1;\n                var active = index.Active;\n                var next = index.Next;\n                var flags = index.Flags;\n                var flagsData = flags.Data;\n                var cells = index.Cells;\n                var constraint = index.Constraint;\n                var constraintData = constraint.Data;\n                var neighbor = index.Neighbor;\n                var neighborData = neighbor.Data;\n\n                while (active.UsedSize > 0 || next.UsedSize > 0)\n                {\n                    while (active.UsedSize > 0)\n                    {\n                        var t = active.Pop();\n                        if (flagsData[t] == -side)\n                        {\n                            continue;\n                        }\n\n                        flagsData[t] = side;\n                        for (var j = 0; j < 3; ++j)\n                        {\n                            var f = neighborData[3 * t + j];\n                            if (f >= 0 && flagsData[f] == 0)\n                            {\n                                if (constraintData[3 * t + j])\n                                {\n                                    next.Push(ref f);\n                                }\n                                else\n                                {\n                                    active.Push(ref f);\n                                    flagsData[f] = side;\n                                }\n                            }\n                        }\n                    }\n\n                    //Swap arrays and loop\n                    var tmp = next;\n                    next = active;\n                    active = tmp;\n                    next.Clear();\n                    side = -side;\n                }\n\n                FilterCells(cells, flags);\n                FillTriangles(cells, result);\n\n                if (Infinity)\n                {\n                    FillTriangles(index.Boundary, result);\n                }\n            }\n        }\n\n        private class FaceIndex : IDisposable\n        {\n            public FaceIndex(WorkBufferPool pool)\n            {\n                WorkBufferPool = pool;\n                pool.Get(ref Cells);\n                pool.Get(ref Neighbor);\n                pool.Get(ref Constraint);\n                pool.Get(ref Flags);\n                pool.Get(ref Active);\n                pool.Get(ref Next);\n                pool.Get(ref Boundary);\n            }\n\n            public WorkBuffer<Int3> Cells;\n            public WorkBuffer<int> Neighbor;\n            public WorkBuffer<bool> Constraint;\n            public WorkBuffer<int> Flags;\n            public WorkBuffer<int> Active;\n            public WorkBuffer<int> Next;\n            public WorkBuffer<Int3> Boundary;\n\n            private WorkBufferPool WorkBufferPool;\n            private bool Disposed = false;\n\n            public void Dispose()\n            {\n                Dispose(true);\n            }\n\n            private void Dispose(bool disposing)\n            {\n                if (Disposed)\n                {\n                    return;\n                }\n\n                if (disposing)\n                {\n                    WorkBufferPool.Release(ref Boundary);\n                    WorkBufferPool.Release(ref Next);\n                    WorkBufferPool.Release(ref Active);\n                    WorkBufferPool.Release(ref Flags);\n                    WorkBufferPool.Release(ref Constraint);\n                    WorkBufferPool.Release(ref Neighbor);\n                    WorkBufferPool.Release(ref Cells);\n                }\n\n                Disposed = true;\n            }\n\n            public void Dump()\n            {\n                Debug.LogFormat(\"Cells:\\n{0}\\n\", Dump(Cells));\n                Debug.LogFormat(\"Neighbor:\\n{0}\\n\", Dump(Neighbor));\n                Debug.LogFormat(\"Flags:\\n{0}\\n\", Dump(Flags));\n                Debug.LogFormat(\"Constraint:\\n{0}\\n\", Dump(Constraint));\n                Debug.LogFormat(\"Active:\\n{0}\\n\", Dump(Active));\n                Debug.LogFormat(\"Next:\\n{0}\\n\", Dump(Next));\n                Debug.LogFormat(\"Boundary:\\n{0}\\n\", Dump(Boundary));\n            }\n\n            private string Dump<T>(WorkBuffer<T> buf)\n            {\n                return buf.Data.Take(buf.UsedSize).Aggregate(\"\", (_, s) => _ + \" \" + s.ToString() + \",\\n\");\n            }\n        }\n        \n        private FaceIndex IndexCells(Triangles triangles)\n        {\n            var zero = 0;\n            var fals = false;\n            \n            var index = new FaceIndex(WorkBufferPool);\n            \n            triangles.Fill(index.Cells);\n            \n            //First get cells and canonicalize\n            var cells = index.Cells;\n            var nc = cells.UsedSize;\n            var cellsData = cells.Data;\n            for (var i = 0; i < nc; ++i)\n            {\n                var c = cellsData[i];\n                var x = c.x;\n                var y = c.y;\n                var z = c.z;\n                if (y < z)\n                {\n                    if (y < x)\n                    {\n                        c.x = y;\n                        c.y = z;\n                        c.z = x;\n                        cellsData[i] = c;\n                    }\n                }\n                else if (z < x)\n                {\n                    c.x = z;\n                    c.y = x;\n                    c.z = y;\n                    cellsData[i] = c;\n                }\n            }\n\n            WorkBuffer<Int3>.Sort(cells);\n\n            //Initialize flag array\n            var flags = index.Flags;\n            flags.Fill(ref zero, nc);\n\n            //Build neighbor index, initialize queues\n            var active = index.Active;\n            var next = index.Next;\n            var neighbor = index.Neighbor;\n            var constraint = index.Constraint;\n            var boundary = index.Boundary;\n            neighbor.Fill(ref zero, nc * 3);\n            constraint.Fill(ref fals, nc * 3);\n            var flagsData = flags.Data;\n            var neighborData = neighbor.Data;\n            var constraintData = constraint.Data;\n            for (var i = 0; i < nc; ++i)\n            {\n                var c = cellsData[i];\n                for (var j = 0; j < 3; ++j)\n                {\n                    var x = 0;\n                    var y = 0;\n\n                    switch (j)\n                    {\n                        case 0:\n                            x = c.x;\n                            y = c.y;\n                            break;\n                        case 1:\n                            x = c.y;\n                            y = c.z;\n                            break;\n                        case 2:\n                            x = c.z;\n                            y = c.x;\n                            break;\n                    }\n\n                    var a = neighborData[3 * i + j] = Locate(cells, y, x, triangles.Opposite(y, x));\n                    var b = constraintData[3 * i + j] = triangles.IsConstraint(x, y);\n                    if (a < 0)\n                    {\n                        if (b)\n                        {\n                            next.Push(ref i);\n                        }\n                        else\n                        {\n                            active.Push(ref i);\n                            flagsData[i] = 1;\n                        }\n\n                        if (Infinity)\n                        {\n                            var v = new Int3(y, x, -1);\n                            boundary.Push(ref v);\n                        }\n                    }\n                }\n            }\n\n            return index;\n        }\n\n        private int Locate(WorkBuffer<Int3> cells, int a, int b, int c)\n        {\n            var x = a;\n            var y = b;\n            var z = c;\n            if (b < c)\n            {\n                if (b < a)\n                {\n                    x = b;\n                    y = c;\n                    z = a;\n                }\n            }\n            else if (c < a)\n            {\n                x = c;\n                y = a;\n                z = b;\n            }\n\n            if (x < 0)\n            {\n                return -1;\n            }\n\n            return BinarySearch.EQ(cells.Data, new Int3(x, y, z), 0, cells.UsedSize - 1);\n        }\n        \n        private void FilterCells(WorkBuffer<Int3> cells, WorkBuffer<int> flags)\n        {\n            var ptr = 0;\n            var n = cells.UsedSize;\n            var cellsData = cells.Data;\n            var flagsData = flags.Data;\n            for (var i = 0; i < n; ++i) {\n                if(flagsData[i] == Target)\n                {\n                    cellsData[ptr++] = cellsData[i];\n                }\n            }\n            cells.RemoveLast(n - ptr);\n        }\n\n        private void FillTriangles(WorkBuffer<Int3> from, List<int> to)\n        {\n            var n = from.UsedSize;\n            \n            if (to.Capacity < n * 3)\n            {\n                to.Capacity = n * 3;\n            }\n\n            var data = from.Data;\n            for (var i = 0; i < n; ++i)\n            {\n                var v = data[i];\n                to.Add(v.x);\n                to.Add(v.y);\n                to.Add(v.z);\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/Filter.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 1384c72d4a744c9db5fbd24870a9c0e5\r\ntimeCreated: 1519830352"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/MonotoneTriangulation.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\n\nnamespace SVGMeshUnity.Internals.Cdt2d\n{\n    public class MonotoneTriangulation\n    {\n        private static readonly bool Verbose = false;\n        \n        public WorkBufferPool WorkBufferPool;\n\n        private enum EventType\n        {\n            Point = 0,\n            End = 1,\n            Start = 2,\n        }\n        \n        //An event in the sweep line procedure\n        private class Event : IComparable<Event>\n        {\n            public Vector2 A;\n            public Vector2 B;\n            public EventType Type;\n            public int Index;\n            \n            //This is used to compare events for the sweep line procedure\n            // Points are:\n            //  1. sorted lexicographically\n            //  2. sorted by type  (point < end < start)\n            //  3. segments sorted by winding order\n            //  4. sorted by index\n            public int CompareTo(Event b)\n            {\n                var d = 0;\n\n                d = Sign(A.x - b.A.x);\n                if (d != 0) return d;\n            \n                d = Sign(A.y - b.A.y);\n                if (d != 0) return d;\n\n                d = Type - b.Type;\n                if (d != 0) return d;\n            \n                if (Type != EventType.Point)\n                {\n                    d = Sign(Robust.Orientation(A, B, b.B));\n                    if (d != 0) return d;\n                }\n\n                return Index - b.Index;\n            }\n        }\n        \n        //A partial convex hull fragment, made of two unimonotone polygons\n        private class PartialHull\n        {\n            public Vector2 A;\n            public Vector2 B;\n            public int Index;\n            public WorkBuffer<int> LowerIds = new WorkBuffer<int>(8);\n            public WorkBuffer<int> UpperIds = new WorkBuffer<int>(8);\n        }\n\n        public void BuildTriangles(MeshData data)\n        {\n            var numPoints = data.Vertices.Count;\n            var numEdges = data.Edges.Count;\n\n            data.Triangles.Capacity = numPoints * 3;\n            \n            var events = WorkBufferPool.Get<Event>();\n            if (events.NewForClass == null)\n            {\n                events.NewForClass = () => new Event();\n            }\n\n            //Create point events\n            for (var i = 0; i < numPoints; ++i)\n            {\n                var e = events.Push();\n                e.A = data.Vertices[i];\n                e.B = Vector2.zero;\n                e.Type = EventType.Point;\n                e.Index = i;\n            }\n\n            //Create edge events\n            for(var i=0; i<numEdges; ++i)\n            {\n                var edge = data.Edges[i];\n                var a = data.Vertices[edge.x];\n                var b = data.Vertices[edge.y];\n                if(a.x < b.x)\n                {\n                    {\n                        var e = events.Push();\n                        e.A = a;\n                        e.B = b;\n                        e.Type = EventType.Start;\n                        e.Index = i;\n                    }\n                    {\n                        var e = events.Push();\n                        e.A = b;\n                        e.B = a;\n                        e.Type = EventType.End;\n                        e.Index = i;\n                    }\n                }\n                else if(a.x > b.x)\n                {\n                    {\n                        var e = events.Push();\n                        e.A = b;\n                        e.B = a;\n                        e.Type = EventType.Start;\n                        e.Index = i;\n                    }\n                    {\n                        var e = events.Push();\n                        e.A = a;\n                        e.B = b;\n                        e.Type = EventType.End;\n                        e.Index = i;\n                    }\n                }\n            }\n\n            //Sort events\n            WorkBuffer<Event>.Sort(events);\n\n            if (Verbose)\n            {\n                DumpEvents(events);\n            }\n\n            //Initialize hull\n            var minX = events.Data[0].A.x - 1f;\n            var hulls = WorkBufferPool.Get<PartialHull>();\n            if (hulls.NewForClass == null)\n            {\n                hulls.NewForClass = () => new PartialHull();\n            }\n            var h = hulls.Push();\n            h.A = new Vector2(minX, 1f);\n            h.B = new Vector2(minX, 0f);\n            h.Index = -1;\n            h.LowerIds.Clear();\n            h.UpperIds.Clear();\n\n            //Process events in order\n            var numEvents = events.UsedSize;\n            for (var i = 0; i < numEvents; ++i)\n            {\n                var e = events.Data[i];\n\n                if (Verbose)\n                {\n                    Debug.Log(\"\");\n                    Debug.Log(i);\n                    DumpEvent(e);\n                }\n                \n                switch (e.Type)\n                {\n                    case EventType.Point:\n                        AddPoint(data.Triangles, hulls, data.Vertices, e.A, e.Index);\n                        break;\n                    case EventType.Start:\n                        SplitHulls(hulls, e);\n                        break;\n                    case EventType.End:\n                        MergeHulls(hulls, e);\n                        break;\n                }\n\n                if (Verbose)\n                {\n                    Debug.Log(\"\");\n                }\n            }\n            \n            WorkBufferPool.Release(ref hulls);\n            WorkBufferPool.Release(ref events);\n        }\n        \n        private static int Sign(float n)\n        {\n            if (n < 0f)\n            {\n                return -1;\n            }\n\n            if (n > 0f)\n            {\n                return 1;\n            }\n\n            return 0;\n        }\n\n        private void AddPoint(List<int> cells, WorkBuffer<PartialHull> hulls, List<Vector3> points, Vector2 p, int idx)\n        {\n            var lo = BinarySearch.LT(hulls.Data, p, TestPoint.Default, 0, hulls.UsedSize - 1);\n            var hi = BinarySearch.GT(hulls.Data, p, TestPoint.Default, 0, hulls.UsedSize - 1);\n            for (var i = lo; i < hi; ++i)\n            {\n                var hull = hulls.Data[i];\n\n                //Insert p into lower hull\n                {\n                    var lowerIds = hull.LowerIds;\n                    var m = lowerIds.UsedSize;\n                    var lowerIdsData = lowerIds.Data;\n                    while (m > 1 && Robust.Orientation(points[lowerIdsData[m - 2]], points[lowerIdsData[m - 1]], p) > 0f)\n                    {\n                        cells.Add(lowerIdsData[m - 1]);\n                        cells.Add(lowerIdsData[m - 2]);\n                        cells.Add(idx);\n                        m -= 1;\n                    }\n\n                    if (m < lowerIds.UsedSize)\n                    {\n                        lowerIds.RemoveLast(lowerIds.UsedSize - m);\n                    }\n\n                    lowerIds.Push(ref idx);\n                }\n\n                //Insert p into upper hull\n                {\n                    var upperIds = hull.UpperIds;\n                    var m = upperIds.UsedSize;\n                    var upperIdsData = upperIds.Data;\n                    while (m > 1 && Robust.Orientation(points[upperIdsData[m - 2]], points[upperIdsData[m - 1]], p) < 0f)\n                    {\n                        cells.Add(upperIdsData[m - 2]);\n                        cells.Add(upperIdsData[m - 1]);\n                        cells.Add(idx);\n                        m -= 1;\n                    }\n\n                    if (m < upperIds.UsedSize)\n                    {\n                        upperIds.RemoveLast(upperIds.UsedSize - m);\n                    }\n\n                    upperIds.Push(ref idx);\n                }\n            }\n\n            if (Verbose)\n            {\n                Debug.Log(\"Add\");\n                DumpHulls(hulls);\n                hulls.Dump();\n            }\n        }\n\n        private void SplitHulls(WorkBuffer<PartialHull> hulls, Event e)\n        {\n            var splitIdx = BinarySearch.LE(hulls.Data, e, FindSplit.Default, 0, hulls.UsedSize - 1);\n            var hull = hulls.Data[splitIdx];\n            var upperIds = hull.UpperIds;\n            var x = upperIds.Data[upperIds.UsedSize - 1];\n            hull.UpperIds = new WorkBuffer<int>(8);\n            hull.UpperIds.Push(ref x);\n            var h = hulls.Insert(splitIdx + 1);\n            h.A = e.A;\n            h.B = e.B;\n            h.Index = e.Index;\n            h.LowerIds.Clear();\n            h.LowerIds.Push(ref x);\n            h.UpperIds = upperIds;\n\n            if (Verbose)\n            {\n                Debug.Log(\"Split: \" + splitIdx);\n                DumpHulls(hulls);\n                hulls.Dump();\n            }\n        }\n\n        private void MergeHulls(WorkBuffer<PartialHull> hulls, Event e)\n        {\n            //Swap pointers for merge search\n            var tmp = e.A;\n            e.A = e.B;\n            e.B = tmp;\n            var mergeIdx = BinarySearch.EQ(hulls.Data, e, FindSplit.Default, 0, hulls.UsedSize - 1);\n            var upper = hulls.Data[mergeIdx];\n            var lower = hulls.Data[mergeIdx - 1];\n            lower.UpperIds = upper.UpperIds;\n            hulls.RemoveAt(mergeIdx);\n\n            if (Verbose)\n            {\n                Debug.Log(\"Merge: \" + mergeIdx);\n                DumpHulls(hulls);\n                hulls.Dump();\n            }\n        }\n\n        private class TestPoint : BinarySearch.IComparer<PartialHull, Vector2>\n        {\n            public static readonly TestPoint Default = new TestPoint();\n            \n            public int Compare(PartialHull hull, Vector2 p)\n            {\n                return Sign(Robust.Orientation(hull.A, hull.B, p));\n            }\n        }\n\n        private class FindSplit : BinarySearch.IComparer<PartialHull, Event>\n        {\n            public static readonly FindSplit Default = new FindSplit();\n            \n            public int Compare(PartialHull hull, Event edge)\n            {\n                var d = 0;\n            \n                if (hull.A.x < edge.A.x)\n                {\n                    d = Sign(Robust.Orientation(hull.A, hull.B, edge.A));\n                } else\n                {\n                    d = Sign(Robust.Orientation(edge.B, edge.A, hull.A));\n                }\n\n                if (d != 0) return d;\n            \n                if (edge.B.x < hull.B.x)\n                {\n                    d = Sign(Robust.Orientation(hull.A, hull.B, edge.B));\n                } else\n                {\n                    d = Sign(Robust.Orientation(edge.B, edge.A, hull.B));\n                }\n\n                if (d != 0) return d;\n\n                return hull.Index - edge.Index;\n            }\n        }\n\n\n        #region Debug\n\n        private void DumpEvent(Event _)\n        {\n            Debug.Log(string.Format(\"{{ a: {0}, b: {1}, type: {2}, idx: {3} }}\", _.A, _.B, _.Type, _.Index));\n        }\n\n        private void DumpEvents(WorkBuffer<Event> events)\n        {\n            Debug.Log(events.Data.Take(events.UsedSize)\n                .Select(_ => string.Format(\"{{ a: {0}, b: {1}, type: {2}, idx: {3} }}\", _.A, _.B, _.Type, _.Index))\n                .Aggregate(\"\", (_, s) => _ + s + \"\\n\"));\n        }\n\n        private void DumpHulls(WorkBuffer<PartialHull> hulls)\n        {\n            Debug.Log(hulls.Data.Take(hulls.UsedSize)\n                .Select(_ => string.Format(\"{{ a: {0}, b: {1}, idx: {2}, lowerIds: [ {3} ], upperIds: [ {4} ] }}\", _.A, _.B, _.Index, ToString(_.LowerIds), ToString(_.UpperIds)))\n                .Aggregate(\"\", (_, s) => _ + s + \"\\n\"));\n        }\n\n        private string ToString(WorkBuffer<int> list)\n        {\n            return string.Join(\", \", list.Data.Take(list.UsedSize).Select(_ => _.ToString()).ToArray());\n        }\n\n        #endregion\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/MonotoneTriangulation.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: f3f866907d0c43a086ba61429b3d2b8a\r\ntimeCreated: 1519699803"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/Robust.cs",
    "content": "﻿using UnityEngine;\n\nnamespace SVGMeshUnity.Internals.Cdt2d\n{\n    public static class Robust\n    {\n        // https://github.com/mikolalysenko/robust-orientation\n        // https://github.com/mikolalysenko/robust-in-sphere\n        // https://github.com/mikolalysenko/robust-sum\n        // https://github.com/mikolalysenko/robust-subtract\n        // https://github.com/mikolalysenko/robust-scale\n        // https://github.com/mikolalysenko/two-product\n        // https://github.com/mikolalysenko/two-sum\n\n        private static readonly float Epsilon = 1.1102230246251565e-16f;\n        private static readonly float Errbound3 = (3.0f + 16.0f * Epsilon) * Epsilon;\n\n        private static readonly float Splitter = +(Mathf.Pow(2f, 27f) + 1.0f);\n\n        private static float[][] BufferPool = new float[32][];\n        private static int BufferPoolSize = 0;\n\n        private static float[] GetTemporaryBuffer()\n        {\n            if (BufferPoolSize > 0)\n            {\n                return BufferPool[--BufferPoolSize];\n            }\n            return new float[16];\n        }\n\n        private static void ReleaseTemporaryBuffer(ref float[] buf)\n        {\n            if (BufferPool.Length == BufferPoolSize)\n            {\n                var newBufferPool = new float[BufferPool.Length + 32][];\n                BufferPool.CopyTo(newBufferPool, 0);\n                BufferPool = newBufferPool;\n            }\n\n            BufferPool[BufferPoolSize++] = buf;\n            buf = null;\n        }\n\n        public static float Orientation(Vector2 a, Vector2 b, Vector2 c)\n        {\n            var l = (a.y - c.y) * (b.x - c.x);\n            var r = (a.x - c.x) * (b.y - c.y);\n            var det = l - r;\n            var s = 0f;\n            if (l > 0)\n            {\n                if (r <= 0)\n                {\n                    return det;\n                }\n                else\n                {\n                    s = l + r;\n                }\n            }\n            else if (l < 0)\n            {\n                if (r >= 0)\n                {\n                    return det;\n                }\n                else\n                {\n                    s = -(l + r);\n                }\n            }\n            else\n            {\n                return det;\n            }\n\n            var tol = Errbound3 * s;\n            if (det >= tol || det <= -tol)\n            {\n                return det;\n            }\n            \n            var m0 = a;\n            var m1 = b;\n            var m2 = c;\n            \n            var sL = GetTemporaryBuffer();\n            var sR = GetTemporaryBuffer();\n\n            var p = GetTemporaryBuffer();\n            var n = GetTemporaryBuffer();\n            var d = GetTemporaryBuffer();\n\n            var pN = 0;\n            var nN = 0;\n            var dN = 0;\n\n            var pL = GetTemporaryBuffer();\n            var pR = GetTemporaryBuffer();\n\n            var pLN = 0;\n            var pRN = 0;\n\n            TwoProd( m1.y, m2.x, sL);\n            TwoProd(-m2.y, m1.x, sR);\n            Sum(sL, 2, sR, 2, pL, out pLN);\n\n            TwoProd( m0.y, m1.x, sL);\n            TwoProd(-m1.y, m0.x, sR);\n            Sum(sL, 2, sR, 2, pR, out pRN);\n            \n            Sum(pL, pLN, pR, pRN, p, out pN);\n            \n            ReleaseTemporaryBuffer(ref pL);\n            ReleaseTemporaryBuffer(ref pR);\n\n            TwoProd( m0.y, m2.x, sL);\n            TwoProd(-m2.y, m0.x, sR);\n            Sum(sL, 2, sR, 2, n, out nN);\n            \n            ReleaseTemporaryBuffer(ref sL);\n            ReleaseTemporaryBuffer(ref sR);\n            \n            Sub(p, pN, n, nN, d, out dN);\n\n            var result = d[dN - 1];\n            \n            ReleaseTemporaryBuffer(ref p);\n            ReleaseTemporaryBuffer(ref n);\n            ReleaseTemporaryBuffer(ref d);\n\n            return result;\n        }\n\n        public static float InSphere(Vector2 m0, Vector2 m1, Vector2 m2, Vector2 m3)\n        {\n            var w = GetTemporaryBuffer();\n            var wL = GetTemporaryBuffer();\n            var wR = GetTemporaryBuffer();\n\n            var wN = 0;\n            \n            var w0m1 = GetTemporaryBuffer();\n            var w0m2 = GetTemporaryBuffer();\n            var w0m3 = GetTemporaryBuffer();\n            var w1m0 = GetTemporaryBuffer();\n            var w1m2 = GetTemporaryBuffer();\n            var w1m3 = GetTemporaryBuffer();\n            var w2m0 = GetTemporaryBuffer();\n            var w2m1 = GetTemporaryBuffer();\n            var w2m3 = GetTemporaryBuffer();\n            var w3m0 = GetTemporaryBuffer();\n            var w3m1 = GetTemporaryBuffer();\n            var w3m2 = GetTemporaryBuffer();\n            \n            var w0m1N = 0;\n            var w0m2N = 0;\n            var w0m3N = 0;\n            var w1m0N = 0;\n            var w1m2N = 0;\n            var w1m3N = 0;\n            var w2m0N = 0;\n            var w2m1N = 0;\n            var w2m3N = 0;\n            var w3m0N = 0;\n            var w3m1N = 0;\n            var w3m2N = 0;\n            \n            TwoProd(m0[0], m0[0], wL);\n            TwoProd(m0[1], m0[1], wR);\n            Sum(wL, 2, wR, 2, w, out wN);\n            Scale(w, wN, m1[0], w0m1, out w0m1N);\n            Scale(w, wN, m2[0], w0m2, out w0m2N);\n            Scale(w, wN, m3[0], w0m3, out w0m3N);\n            \n            TwoProd(m1[0], m1[0], wL);\n            TwoProd(m1[1], m1[1], wR);\n            Sum(wL, 2, wR, 2, w, out wN);\n            Scale(w, wN, m0[0], w1m0, out w1m0N);\n            Scale(w, wN, m2[0], w1m2, out w1m2N);\n            Scale(w, wN, m3[0], w1m3, out w1m3N);\n\n            TwoProd(m2[0], m2[0], wL);\n            TwoProd(m2[1], m2[1], wR);\n            Sum(wL, 2, wR, 2, w, out wN);\n            Scale(w, wN, m0[0], w2m0, out w2m0N);\n            Scale(w, wN, m1[0], w2m1, out w2m1N);\n            Scale(w, wN, m3[0], w2m3, out w2m3N);\n\n            TwoProd(m3[0], m3[0], wL);\n            TwoProd(m3[1], m3[1], wR);\n            Sum(wL, 2, wR, 2, w, out wN);\n            Scale(w, wN, m0[0], w3m0, out w3m0N);\n            Scale(w, wN, m1[0], w3m1, out w3m1N);\n            Scale(w, wN, m2[0], w3m2, out w3m2N);\n            \n            ReleaseTemporaryBuffer(ref wL);\n            ReleaseTemporaryBuffer(ref wR);\n            ReleaseTemporaryBuffer(ref w);\n\n            var p = GetTemporaryBuffer();\n            var n = GetTemporaryBuffer();\n            var d = GetTemporaryBuffer();\n\n            var pN = 0;\n            var nN = 0;\n            var dN = 0;\n\n            var pL = GetTemporaryBuffer();\n            var pR = GetTemporaryBuffer();\n\n            var pLN = 0;\n            var pRN = 0;\n\n            var pLLL = GetTemporaryBuffer();\n            var pLL = GetTemporaryBuffer();\n            var pLRLL = GetTemporaryBuffer();\n            var pLRL = GetTemporaryBuffer();\n            var pLRRL = GetTemporaryBuffer();\n            var pLRR = GetTemporaryBuffer();\n            var pLR = GetTemporaryBuffer();\n\n            var pLLLN = 0;\n            var pLLN = 0;\n            var pLRLLN = 0;\n            var pLRLN = 0;\n            var pLRRLN = 0;\n            var pLRRN = 0;\n            var pLRN = 0;\n            \n            Sub(w3m2, w3m2N, w2m3, w2m3N, pLLL, out pLLLN);\n            Scale(pLLL, pLLLN, m1[1], pLL, out pLLN);\n            Sub(w3m1, w3m1N, w1m3, w1m3N, pLRLL, out pLRLLN);\n            Scale(pLRLL, pLRLLN, -m2[1], pLRL, out pLRLN);\n            Sub(w2m1, w2m1N, w1m2, w1m2N, pLRRL, out pLRRLN);\n            Scale(pLRRL, pLRRLN, m3[1], pLRR, out pLRRN);\n            Sum(pLRL, pLRLN, pLRR, pLRRN, pLR, out pLRN);\n            Sum(pLL, pLLN, pLR, pLRN, pL, out pLN);\n            \n            ReleaseTemporaryBuffer(ref pLLL);\n            ReleaseTemporaryBuffer(ref pLL);\n            ReleaseTemporaryBuffer(ref pLRLL);\n            ReleaseTemporaryBuffer(ref pLRL);\n            ReleaseTemporaryBuffer(ref pLRRL);\n            ReleaseTemporaryBuffer(ref pLRR);\n            ReleaseTemporaryBuffer(ref pLR);\n\n            var pRLL = GetTemporaryBuffer();\n            var pRL = GetTemporaryBuffer();\n            var pRRLL = GetTemporaryBuffer();\n            var pRRL = GetTemporaryBuffer();\n            var pRRRL = GetTemporaryBuffer();\n            var pRRR = GetTemporaryBuffer();\n            var pRR = GetTemporaryBuffer();\n\n            var pRLLN = 0;\n            var pRLN = 0;\n            var pRRLLN = 0;\n            var pRRLN = 0;\n            var pRRRLN = 0;\n            var pRRRN = 0;\n            var pRRN = 0;\n            \n            Sub(w3m1, w3m1N, w1m3, w1m3N, pRLL, out pRLLN);\n            Scale(pRLL, pRLLN, m0[1], pRL, out pRLN);\n            Sub(w3m0, w3m0N, w0m3, w0m3N, pRRLL, out pRRLLN);\n            Scale(pRRLL, pRRLLN, -m1[1], pRRL, out pRRLN);\n            Sub(w1m0, w1m0N, w0m1, w0m1N, pRRRL, out pRRRLN);\n            Scale(pRRRL, pRRRLN, m3[1], pRRR, out pRRRN);\n            Sum(pRRL, pRRLN, pRRR, pRRRN, pRR, out pRRN);\n            Sum(pRL, pRLN, pRR, pRRN, pR, out pRN);\n            \n            ReleaseTemporaryBuffer(ref pRLL);\n            ReleaseTemporaryBuffer(ref pRL);\n            ReleaseTemporaryBuffer(ref pRRLL);\n            ReleaseTemporaryBuffer(ref pRRL);\n            ReleaseTemporaryBuffer(ref pRRRL);\n            ReleaseTemporaryBuffer(ref pRRR);\n            ReleaseTemporaryBuffer(ref pRR);\n            \n            Sum(pL, pLN, pR, pRN, p, out pN);\n            \n            ReleaseTemporaryBuffer(ref pL);\n            ReleaseTemporaryBuffer(ref pR);\n\n            var nL = GetTemporaryBuffer();\n            var nR = GetTemporaryBuffer();\n\n            var nLN = 0;\n            var nRN = 0;\n\n            var nLLL = GetTemporaryBuffer();\n            var nLL = GetTemporaryBuffer();\n            var nLRLL = GetTemporaryBuffer();\n            var nLRL = GetTemporaryBuffer();\n            var nLRRL = GetTemporaryBuffer();\n            var nLRR = GetTemporaryBuffer();\n            var nLR = GetTemporaryBuffer();\n\n            var nLLLN = 0;\n            var nLLN = 0;\n            var nLRLLN = 0;\n            var nLRLN = 0;\n            var nLRRLN = 0;\n            var nLRRN = 0;\n            var nLRN = 0;\n\n            Sub(w3m2, w3m2N, w2m3, w2m3N, nLLL, out nLLLN);\n            Scale(nLLL, nLLLN, m0[1], nLL, out nLLN);\n            Sub(w3m0, w3m0N, w0m3, w0m3N, nLRLL, out nLRLLN);\n            Scale(nLRLL, nLRLLN, -m2[1], nLRL, out nLRLN);\n            Sub(w2m0, w2m0N, w0m2, w0m2N, nLRRL, out nLRRLN);\n            Scale(nLRRL, nLRRLN, m3[1], nLRR, out nLRRN);\n            Sum(nLRL, nLRLN, nLRR, nLRRN, nLR, out nLRN);\n            Sum(nLL, nLLN, nLR, nLRN, nL, out nLN);\n            \n            ReleaseTemporaryBuffer(ref nLLL);\n            ReleaseTemporaryBuffer(ref nLL);\n            ReleaseTemporaryBuffer(ref nLRLL);\n            ReleaseTemporaryBuffer(ref nLRL);\n            ReleaseTemporaryBuffer(ref nLRRL);\n            ReleaseTemporaryBuffer(ref nLRR);\n            ReleaseTemporaryBuffer(ref nLR);\n\n            var nRLL = GetTemporaryBuffer();\n            var nRL = GetTemporaryBuffer();\n            var nRRLL = GetTemporaryBuffer();\n            var nRRL = GetTemporaryBuffer();\n            var nRRRL = GetTemporaryBuffer();\n            var nRRR = GetTemporaryBuffer();\n            var nRR = GetTemporaryBuffer();\n\n            var nRLLN = 0;\n            var nRLN = 0;\n            var nRRLLN = 0;\n            var nRRLN = 0;\n            var nRRRLN = 0;\n            var nRRRN = 0;\n            var nRRN = 0;\n\n            Sub(w2m1, w2m1N, w1m2, w1m2N, nRLL, out nRLLN);\n            Scale(nRLL, nRLLN, m0[1], nRL, out nRLN);\n            Sub(w2m0, w2m0N, w0m2, w0m2N, nRRLL, out nRRLLN);\n            Scale(nRRLL, nRRLLN, -m1[1], nRRL, out nRRLN);\n            Sub(w1m0, w1m0N, w0m1, w0m1N, nRRRL, out nRRRLN);\n            Scale(nRRRL, nRRRLN, m2[1], nRRR, out nRRRN);\n            Sum(nRRL, nRRLN, nRRR, nRRRN, nRR, out nRRN);\n            Sum(nRL, nRLN, nRR, nRRN, nR, out nRN);\n            \n            ReleaseTemporaryBuffer(ref nRLL);\n            ReleaseTemporaryBuffer(ref nRL);\n            ReleaseTemporaryBuffer(ref nRRLL);\n            ReleaseTemporaryBuffer(ref nRRL);\n            ReleaseTemporaryBuffer(ref nRRRL);\n            ReleaseTemporaryBuffer(ref nRRR);\n            ReleaseTemporaryBuffer(ref nRR);\n            \n            Sum(nL, nLN, nR, nRN, n, out nN);\n            \n            ReleaseTemporaryBuffer(ref nL);\n            ReleaseTemporaryBuffer(ref nR);\n            \n            ReleaseTemporaryBuffer(ref w0m1);\n            ReleaseTemporaryBuffer(ref w0m2);\n            ReleaseTemporaryBuffer(ref w0m3);\n            ReleaseTemporaryBuffer(ref w1m0);\n            ReleaseTemporaryBuffer(ref w1m2);\n            ReleaseTemporaryBuffer(ref w1m3);\n            ReleaseTemporaryBuffer(ref w2m0);\n            ReleaseTemporaryBuffer(ref w2m1);\n            ReleaseTemporaryBuffer(ref w2m3);\n            ReleaseTemporaryBuffer(ref w3m0);\n            ReleaseTemporaryBuffer(ref w3m1);\n            ReleaseTemporaryBuffer(ref w3m2);\n            \n            Sub(p, pN, n, nN, d, out dN);\n\n            var result = d[dN - 1];\n            \n            ReleaseTemporaryBuffer(ref p);\n            ReleaseTemporaryBuffer(ref n);\n            ReleaseTemporaryBuffer(ref d);\n\n            return result;\n        }\n\n        private static void TwoProd(float a, float b, float[] result)\n        {\n            var x = a * b;\n\n            var c = Splitter * a;\n            var abig = c - a;\n            var ahi = c - abig;\n            var alo = a - ahi;\n\n            var d = Splitter * b;\n            var bbig = d - b;\n            var bhi = d - bbig;\n            var blo = b - bhi;\n\n            var err1 = x - (ahi * bhi);\n            var err2 = err1 - (alo * bhi);\n            var err3 = err2 - (ahi * blo);\n\n            var y = alo * blo - err3;\n            \n            result[0] = y;\n            result[1] = x;\n        }\n\n        private static void TwoSum(float a, float b, float[] result)\n        {\n            var x = a + b;\n            var bv = x - a;\n            var av = x - bv;\n            var br = b - bv;\n            var ar = a - av;\n            \n            result[0] = ar + br;\n            result[1] = x;\n        }\n        \n        private static void Sum(float[] e, int eN, float[] f, int fN, float[] result, out int resultN)\n        {\n            if(eN == 1 && fN == 1)\n            {\n                ScalarScalar(e[0], f[0], result, out resultN);\n                return;\n            }\n\n            resultN = 0;\n            \n            var eptr = 0;\n            var fptr = 0;\n            var ei = e[eptr];\n            var ea = Mathf.Abs(ei);\n            var fi = f[fptr];\n            var fa = Mathf.Abs(fi);\n            var a = 0f;\n            var b = 0f;\n            if (ea < fa)\n            {\n                b = ei;\n                eptr += 1;\n                if (eptr < eN)\n                {\n                    ei = e[eptr];\n                    ea = Mathf.Abs(ei);\n                }\n            }\n            else\n            {\n                b = fi;\n                fptr += 1;\n                if (fptr < fN)\n                {\n                    fi = f[fptr];\n                    fa = Mathf.Abs(fi);\n                }\n            }\n\n            if ((eptr < eN && ea < fa) || (fptr >= fN))\n            {\n                a = ei;\n                eptr += 1;\n                if (eptr < eN)\n                {\n                    ei = e[eptr];\n                    ea = Mathf.Abs(ei);\n                }\n            }\n            else\n            {\n                a = fi;\n                fptr += 1;\n                if (fptr < fN)\n                {\n                    fi = f[fptr];\n                    fa = Mathf.Abs(fi);\n                }\n            }\n\n            var x = a + b;\n            var bv = x - a;\n            var y = b - bv;\n            var q0 = y;\n            var q1 = x;\n            var _x = 0f;\n            var _bv = 0f;\n            var _av = 0f;\n            var _br = 0f;\n            var _ar = 0f;\n            while (eptr < eN && fptr < fN)\n            {\n                if (ea < fa)\n                {\n                    a = ei;\n                    eptr += 1;\n                    if (eptr < eN)\n                    {\n                        ei = e[eptr];\n                        ea = Mathf.Abs(ei);\n                    }\n                }\n                else\n                {\n                    a = fi;\n                    fptr += 1;\n                    if (fptr < fN)\n                    {\n                        fi = f[fptr];\n                        fa = Mathf.Abs(fi);\n                    }\n                }\n\n                b = q0;\n                x = a + b;\n                bv = x - a;\n                y = b - bv;\n                if (y != 0f)\n                {\n                    result[resultN++] = y;\n                }\n\n                _x = q1 + x;\n                _bv = _x - q1;\n                _av = _x - _bv;\n                _br = x - _bv;\n                _ar = q1 - _av;\n                q0 = _ar + _br;\n                q1 = _x;\n            }\n\n            while (eptr < eN)\n            {\n                a = ei;\n                b = q0;\n                x = a + b;\n                bv = x - a;\n                y = b - bv;\n                if (y != 0f)\n                {\n                    result[resultN++] = y;\n                }\n\n                _x = q1 + x;\n                _bv = _x - q1;\n                _av = _x - _bv;\n                _br = x - _bv;\n                _ar = q1 - _av;\n                q0 = _ar + _br;\n                q1 = _x;\n                eptr += 1;\n                if (eptr < eN)\n                {\n                    ei = e[eptr];\n                }\n            }\n\n            while (fptr < fN)\n            {\n                a = fi;\n                b = q0;\n                x = a + b;\n                bv = x - a;\n                y = b - bv;\n                if (y != 0f)\n                {\n                    result[resultN++] = y;\n                }\n\n                _x = q1 + x;\n                _bv = _x - q1;\n                _av = _x - _bv;\n                _br = x - _bv;\n                _ar = q1 - _av;\n                q0 = _ar + _br;\n                q1 = _x;\n                fptr += 1;\n                if (fptr < fN)\n                {\n                    fi = f[fptr];\n                }\n            }\n\n            if (q0 != 0f)\n            {\n                result[resultN++] = q0;\n            }\n\n            if (q1 != 0f)\n            {\n                result[resultN++] = q1;\n            }\n\n            if (resultN == 0)\n            {\n                result[resultN++] = 0f;\n            }\n        }\n\n        private static void Sub(float[] e, int eN, float[] f, int fN, float[] result, out int resultN)\n        {\n            if (eN == 1 && fN == 1)\n            {\n                ScalarScalar(e[0], -f[0], result, out resultN);\n                return;\n            }\n\n            resultN = 0;\n\n            var eptr = 0;\n            var fptr = 0;\n            var ei = e[eptr];\n            var ea = Mathf.Abs(ei);\n            var fi = -f[fptr];\n            var fa = Mathf.Abs(fi);\n            var a = 0f;\n            var b = 0f;\n            if (ea < fa)\n            {\n                b = ei;\n                eptr += 1;\n                if (eptr < eN)\n                {\n                    ei = e[eptr];\n                    ea = Mathf.Abs(ei);\n                }\n            }\n            else\n            {\n                b = fi;\n                fptr += 1;\n                if (fptr < fN)\n                {\n                    fi = -f[fptr];\n                    fa = Mathf.Abs(fi);\n                }\n            }\n\n            if ((eptr < eN && ea < fa) || (fptr >= fN))\n            {\n                a = ei;\n                eptr += 1;\n                if (eptr < eN)\n                {\n                    ei = e[eptr];\n                    ea = Mathf.Abs(ei);\n                }\n            }\n            else\n            {\n                a = fi;\n                fptr += 1;\n                if (fptr < fN)\n                {\n                    fi = -f[fptr];\n                    fa = Mathf.Abs(fi);\n                }\n            }\n\n            var x = a + b;\n            var bv = x - a;\n            var y = b - bv;\n            var q0 = y;\n            var q1 = x;\n            var _x = 0f;\n            var _bv = 0f;\n            var _av = 0f;\n            var _br = 0f;\n            var _ar = 0f;\n            while (eptr < eN && fptr < fN)\n            {\n                if (ea < fa)\n                {\n                    a = ei;\n                    eptr += 1;\n                    if (eptr < eN)\n                    {\n                        ei = e[eptr];\n                        ea = Mathf.Abs(ei);\n                    }\n                }\n                else\n                {\n                    a = fi;\n                    fptr += 1;\n                    if (fptr < fN)\n                    {\n                        fi = -f[fptr];\n                        fa = Mathf.Abs(fi);\n                    }\n                }\n\n                b = q0;\n                x = a + b;\n                bv = x - a;\n                y = b - bv;\n                if (y != 0f)\n                {\n                    result[resultN++] = y;\n                }\n\n                _x = q1 + x;\n                _bv = _x - q1;\n                _av = _x - _bv;\n                _br = x - _bv;\n                _ar = q1 - _av;\n                q0 = _ar + _br;\n                q1 = _x;\n            }\n\n            while (eptr < eN)\n            {\n                a = ei;\n                b = q0;\n                x = a + b;\n                bv = x - a;\n                y = b - bv;\n                if (y != 0f)\n                {\n                    result[resultN++] = y;\n                }\n\n                _x = q1 + x;\n                _bv = _x - q1;\n                _av = _x - _bv;\n                _br = x - _bv;\n                _ar = q1 - _av;\n                q0 = _ar + _br;\n                q1 = _x;\n                eptr += 1;\n                if (eptr < eN)\n                {\n                    ei = e[eptr];\n                }\n            }\n\n            while (fptr < fN)\n            {\n                a = fi;\n                b = q0;\n                x = a + b;\n                bv = x - a;\n                y = b - bv;\n                if (y != 0f)\n                {\n                    result[resultN++] = y;\n                }\n\n                _x = q1 + x;\n                _bv = _x - q1;\n                _av = _x - _bv;\n                _br = x - _bv;\n                _ar = q1 - _av;\n                q0 = _ar + _br;\n                q1 = _x;\n                fptr += 1;\n                if (fptr < fN)\n                {\n                    fi = -f[fptr];\n                }\n            }\n\n            if (q0 != 0f)\n            {\n                result[resultN++] = q0;\n            }\n\n            if (q1 != 0f)\n            {\n                result[resultN++] = q1;\n            }\n\n            if (resultN == 0)\n            {\n                result[resultN++] = 0.0f;\n            }\n        }\n\n        private static void Scale(float[] e, int eN, float scale, float[] result, out int resultN)\n        {\n            if (eN == 1)\n            {\n                var ts = GetTemporaryBuffer();\n                \n                TwoProd(e[0], scale, ts);\n                \n                if (ts[0] != 0f)\n                {\n                    result[0] = ts[0];\n                    result[1] = ts[1];\n                    resultN = 2;\n                    ReleaseTemporaryBuffer(ref ts);\n                    return;\n                }\n\n                result[0] = ts[1];\n                resultN = 1;\n                ReleaseTemporaryBuffer(ref ts);\n                return;\n            }\n\n            var q = GetTemporaryBuffer();\n            var t = GetTemporaryBuffer();\n\n            q[0] = 0.1f;\n            q[1] = 0.1f;\n            t[0] = 0.1f;\n            t[1] = 0.1f;\n\n            resultN = 0;\n            \n            TwoProd(e[0], scale, q);\n            \n            if (q[0] != 0f)\n            {\n                result[resultN++] = q[0];\n            }\n\n            for (var i = 1; i < eN; ++i)\n            {\n                TwoProd(e[i], scale, t);\n                \n                var pq = q[1];\n                \n                TwoSum(pq, t[0], q);\n                \n                if (q[0] != 0f)\n                {\n                    result[resultN++] = q[0];\n                }\n\n                var a = t[1];\n                var b = q[1];\n                var x = a + b;\n                var bv = x - a;\n                var y = b - bv;\n                q[1] = x;\n                \n                if (y != 0f)\n                {\n                    result[resultN++] = y;\n                }\n            }\n\n            if (q[1] != 0f)\n            {\n                result[resultN++] = q[1];\n            }\n            \n            ReleaseTemporaryBuffer(ref q);\n            ReleaseTemporaryBuffer(ref t);\n\n            if (resultN == 0)\n            {\n                result[resultN++] = 0.0f;\n            }\n        }\n\n        //Easy case: Add two scalars\n        private static void ScalarScalar(float a, float b, float[] result, out int resultN)\n        {\n            var x = a + b;\n            var bv = x - a;\n            var av = x - bv;\n            var br = b - bv;\n            var ar = a - av;\n            var y = ar + br;\n            if (y != 0f)\n            {\n                result[0] = y;\n                result[1] = x;\n                resultN = 2;\n                return;\n            }\n            result[0] = x;\n            resultN = 1;\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/Robust.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 76852b2115774598947fe907402ed9fd\r\ntimeCreated: 1519703003"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/Triangles.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing UnityEngine;\n\nnamespace SVGMeshUnity.Internals.Cdt2d\n{\n    public class Triangles\n    {\n        public Triangles(MeshData data)\n        {\n            PrivateVertices = data.Vertices;\n            CreateStars(data.Vertices.Count);\n            CreateEdges(data.Edges);\n            CreateTriangles(data.Triangles);\n        }\n\n        public List<Vector3> Vertices\n        {\n            get { return PrivateVertices; }\n        }\n\n        public WorkBuffer<Int2>[] Stars\n        {\n            get { return PrivateStars; }\n        }\n\n        private List<Vector3> PrivateVertices;\n        private WorkBuffer<Int2>[] PrivateStars;\n        private Int2[] Edges;\n\n        private void CreateStars(int n)\n        {\n            var stars = new WorkBuffer<Int2>[n];\n            for (var i = 0; i < n; ++i)\n            {\n                stars[i] = new WorkBuffer<Int2>(16);\n            }\n            PrivateStars = stars;\n        }\n\n        private void CreateEdges(List<Int2> source)\n        {\n            var l = source.Count;\n            var edges = new Int2[l];\n            for (var i = 0; i < l; ++i)\n            {\n                var edge = source[i];\n                if (edge.y < edge.x)\n                {\n                    var x = edge.x;\n                    edge.x = edge.y;\n                    edge.y = x;\n                }\n                edges[i] = edge;\n            }\n            Sort<Int2>.QuickSort(edges, 0, edges.Length - 1);\n            Edges = edges;\n        }\n \n        private void CreateTriangles(List<int> source)\n        {\n            var l = source.Count;\n            for (var i = 0; i < l; i += 3)\n            {\n                AddTriangle(source[i + 0], source[i + 1], source[i + 2]);\n            }\n        }\n        \n        public void AddTriangle(int i, int j, int k)\n        {\n            var jk = new Int2(j, k);\n            var ki = new Int2(k, i);\n            var ij = new Int2(i, j);\n            PrivateStars[i].Push(ref jk);\n            PrivateStars[j].Push(ref ki);\n            PrivateStars[k].Push(ref ij);\n        }\n        \n        public void RemoveTriangle(int i, int j, int k)\n        {\n            RemovePair(PrivateStars[i], j, k);\n            RemovePair(PrivateStars[j], k, i);\n            RemovePair(PrivateStars[k], i, j);\n        }\n\n        private void RemovePair(WorkBuffer<Int2> list, int j, int k)\n        {\n            var n = list.UsedSize;\n            var data = list.Data;\n            for (var i = 0; i < n; ++i)\n            {\n                var s = data[i];\n                if (s.x == j && s.y == k)\n                {\n                    data[i] = data[n - 1];\n                    list.RemoveLast(1);\n                    return;\n                }\n            }\n        }\n        \n        public int Opposite(int j, int i)\n        {\n            var list = PrivateStars[i];\n            var n = list.UsedSize;\n            var data = list.Data;\n            for (var k = 0; k < n; ++k)\n            {\n                if (data[k].y == j)\n                {\n                    return data[k].x;\n                }\n            }\n            return -1;\n        }\n        \n        public void Flip(int i, int j)\n        {\n            var a = Opposite(i, j);\n            var b = Opposite(j, i);\n            RemoveTriangle(i, j, a);\n            RemoveTriangle(j, i, b);\n            AddTriangle(i, b, a);\n            AddTriangle(j, a, b);\n        }\n\n        public bool IsConstraint(int i, int j)\n        {\n            var e = new Int2(Mathf.Min(i, j), Mathf.Max(i, j));\n            return BinarySearch.EQ(Edges, e, 0, Edges.Length) >= 0;\n        }\n\n        public void Fill(List<int> triangles)\n        {\n            var n = PrivateStars.Length;\n\n            if (triangles.Capacity < n)\n            {\n                triangles.Capacity = n;\n            }\n            triangles.Clear();\n            \n            for(var i = 0; i < n; ++i)\n            {\n                var list = PrivateStars[i];\n                var data = list.Data;\n                var m = list.UsedSize;\n                for(var j = 0; j < m; ++j)\n                {\n                    var s = data[j];\n                    if(i < Mathf.Min(s.x, s.y))\n                    {\n                        triangles.Add(i);\n                        triangles.Add(s.x);\n                        triangles.Add(s.y);\n                    }\n                }\n            }\n        }\n\n        public void Fill(WorkBuffer<Int3> triangles)\n        {\n            var n = PrivateStars.Length;\n\n            triangles.Extend(n);\n            triangles.Clear();\n            \n            for(var i = 0; i < n; ++i)\n            {\n                var list = PrivateStars[i];\n                var data = list.Data;\n                var m = list.UsedSize;\n                for(var j = 0; j < m; ++j)\n                {\n                    var s = data[j];\n                    if(i < Mathf.Min(s.x, s.y))\n                    {\n                        var v = new Int3(i, s.x, s.y);\n                        triangles.Push(ref v);\n                    }\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/Triangles.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 0ae927e5d9354637b7361e1a99ac6aa9\r\ntimeCreated: 1519790845"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/Triangulation.cs",
    "content": "﻿namespace SVGMeshUnity.Internals.Cdt2d\n{\n    public class Triangulation\n    {\n        // https://github.com/mikolalysenko/cdt2d\n        \n        public bool Delaunay = true;\n        public bool Interior = true;\n        public bool Exterior = true;\n        public bool Infinity = false;\n\n        public WorkBufferPool WorkBufferPool;\n\n        private MonotoneTriangulation MonotoneTriangulation = new MonotoneTriangulation();\n        private DelaunayRefine DelaunayRefine = new DelaunayRefine();\n        private Filter Filter = new Filter();\n\n        public void BuildTriangles(MeshData data)\n        {\n            //Handle trivial case\n            if ((!Interior && !Exterior) || data.Vertices.Count == 0)\n            {\n                return;\n            }\n\n            //Construct initial triangulation\n            MonotoneTriangulation.WorkBufferPool = WorkBufferPool;\n            MonotoneTriangulation.BuildTriangles(data);\n\n            //If delaunay refinement needed, then improve quality by edge flipping\n            if (Delaunay || Interior != Exterior || Infinity)\n            {\n                //Index all of the cells to support fast neighborhood queries\n                var triangles = new Triangles(data);\n\n                //Run edge flipping\n                if (Delaunay)\n                {\n                    DelaunayRefine.WorkBufferPool = WorkBufferPool;\n                    DelaunayRefine.RefineTriangles(triangles);\n                }\n\n                Filter.WorkBufferPool = WorkBufferPool;\n                Filter.Infinity = Infinity;\n\n                //Filter points\n                if (!Exterior)\n                {\n                    Filter.Target = -1;\n                    Filter.Do(triangles, data.Triangles);\n                    return;\n                }\n                if (!Interior)\n                {\n                    Filter.Target = 1;\n                    Filter.Do(triangles, data.Triangles);\n                    return;\n                }\n                if (Infinity)\n                {\n                    Filter.Target = 0;\n                    Filter.Do(triangles, data.Triangles);\n                    return;\n                }\n                \n                triangles.Fill(data.Triangles);\n\n            }\n        }\n\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d/Triangulation.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 781d3a8656524a829b4205bab46ef8de\r\ntimeCreated: 1519698011"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Cdt2d.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 532f777b59434eef9747b681c744be7e\r\ntimeCreated: 1519699774"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Curve.cs",
    "content": "﻿using UnityEngine;\n\nnamespace SVGMeshUnity.Internals\n{\n    public struct Curve\n    {\n        public bool IsMove;\n        public Vector2 Position;\n        public Vector2 InControl;\n        public Vector2 OutControl;\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Curve.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 6d1543b2c42a4cf6a556b45007e9a7d7\r\ntimeCreated: 1519625420"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Int2.cs",
    "content": "﻿using System;\n\nnamespace SVGMeshUnity.Internals\n{\n    public struct Int2 : IComparable<Int2>\n    {\n        public Int2(int x, int y)\n        {\n            this.x = x;\n            this.y = y;\n        }\n            \n        public int x;\n        public int y;\n        \n        public int CompareTo(Int2 b)\n        {\n            var d = x - b.x;\n            if (d != 0) return d;\n            return y - b.y;\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Int2.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: d8e3039a00c54f89a570bbde07b4932d\r\ntimeCreated: 1519872919"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Int3.cs",
    "content": "﻿using System;\n\nnamespace SVGMeshUnity.Internals\n{\n    public struct Int3 : IComparable<Int3>\n    {\n        public Int3(int x, int y, int z)\n        {\n            this.x = x;\n            this.y = y;\n            this.z = z;\n        }\n        \n        public int x;\n        public int y;\n        public int z;\n        \n        public int CompareTo(Int3 b)\n        {\n            var d = 0;\n            \n            d = x - b.x;\n            if (d != 0) return d;\n            \n            d = y - b.y;\n            if (d != 0) return d;\n\n            return z - b.z;\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Int3.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 518c1f26691e43c3a27c0837c39e25f4\r\ntimeCreated: 1519873038"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/MeshData.cs",
    "content": "﻿using System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing UnityEngine;\n\nnamespace SVGMeshUnity.Internals\n{\n    public class MeshData\n    {\n        public MeshData()\n        {\n            Vertices = new List<Vector3>();\n            Edges = new List<Int2>();\n            Triangles = new List<int>();\n            VertexIndices = new Hashtable();\n        }\n        \n        public List<Vector3> Vertices { get; private set; }\n        public List<Int2> Edges { get; private set; }\n        public List<int> Triangles { get; private set; }\n\n        private Hashtable VertexIndices;\n\n        public void Clear()\n        {\n            Vertices.Clear();\n            Edges.Clear();\n            Triangles.Clear();\n            VertexIndices.Clear();\n        }\n\n        public void AddVertices(WorkBuffer<Vector2> buffer)\n        {\n            var firstEdgeIdx = -1;\n            var prevEdgeidx = -1;\n\n            var vertices = Vertices;\n            var edges = Edges;\n            var indicies = VertexIndices;\n\n            var size = buffer.UsedSize;\n            var data = buffer.Data;\n\n            for (var i = 0; i < size; ++i)\n            {\n                var v = data[i];\n                var idx = -1;\n\n                var index = indicies[v];\n                if (index != null)\n                {\n                    idx = (int) index;\n                }\n                \n                if (idx == -1)\n                {\n                    vertices.Add(v);\n                    idx = vertices.Count - 1;\n                    indicies[v] = idx;\n                }\n\n                if (idx == prevEdgeidx)\n                {\n                    continue;\n                }\n                \n                if (i == 0)\n                {\n                    firstEdgeIdx = idx;\n                }\n                else\n                {\n                    edges.Add(new Int2(prevEdgeidx, idx));\n                }\n\n                prevEdgeidx = idx;\n            }\n\n            if (prevEdgeidx != firstEdgeIdx)\n            {\n                edges.Add(new Int2(prevEdgeidx, firstEdgeIdx));\n            }\n        }\n\n        public void MakeUnityFriendly()\n        {\n            {\n                var vertices = Vertices;\n                var l = vertices.Count;\n                for (var i = 0; i < l; ++i)\n                {\n                    var v = vertices[i];\n                    v.y *= -1f;\n                    vertices[i] = v;\n                }\n            }\n            {\n                var triangles = Triangles;\n                var l = triangles.Count;\n                for (var i = 0; i < l; i += 3)\n                {\n                    var a = triangles[i + 0];\n                    var b = triangles[i + 1];\n                    var c = triangles[i + 2];\n                    triangles[i + 0] = b;\n                    triangles[i + 1] = c;\n                    triangles[i + 2] = a;\n                }\n            }\n        }\n\n        public void Upload(Mesh m)\n        {\n            m.Clear();\n            m.SetVertices(Vertices);\n            m.SetTriangles(Triangles, 0);\n            m.RecalculateBounds();\n            m.RecalculateNormals();\n        }\n\n        public void DumpTriangles()\n        {\n            Debug.Log(Triangles.Aggregate(\"\", (_, i) => _ + i.ToString() + \"\\n\"));\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/MeshData.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 71c31466ffeb411f87eeb5849aaf19b2\r\ntimeCreated: 1519696938"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Sort.cs",
    "content": "﻿using System;\n\nnamespace SVGMeshUnity.Internals\n{\n    public static class Sort<T> where T : IComparable<T>\n    {\n        public static void QuickSort(T[] elements, int left, int right)\n        {\n            var i = left;\n            var j = right;\n            var pivot = elements[(left + right) >> 1];\n \n            while (i <= j)\n            {\n                while (elements[i].CompareTo(pivot) < 0)\n                {\n                    ++i;\n                }\n \n                while (elements[j].CompareTo(pivot) > 0)\n                {\n                    --j;\n                }\n \n                if (i <= j)\n                {\n                    // Swap\n                    var tmp = elements[i];\n                    elements[i] = elements[j];\n                    elements[j] = tmp;\n \n                    i++;\n                    j--;\n                }\n            }\n \n            // Recursive calls\n            if (left < j)\n            {\n                QuickSort(elements, left, j);\n            }\n \n            if (i < right)\n            {\n                QuickSort(elements, i, right);\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/Sort.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: c8b61e3455704b8780c63fbcd0724afd\r\ntimeCreated: 1519879160"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/WorkBuffer.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing UnityEngine;\n\nnamespace SVGMeshUnity.Internals\n{\n    public class WorkBuffer<T>\n    {\n        public WorkBuffer(int size = 32)\n        {\n            GrowSize = size;\n            PrivateData = new T[size];\n        }\n        \n        public T[] Data\n        {\n            get { return PrivateData; }\n        }\n        public int UsedSize\n        {\n            get { return PrivateUsedSize; }\n        }\n\n        public Func<T> NewForClass;\n\n        private int GrowSize;\n        private T[] PrivateData;\n        private int PrivateUsedSize;\n\n        private void Grow(int size)\n        {\n            var newPrivateData = new T[size];\n            PrivateData.CopyTo(newPrivateData, 0);\n            PrivateData = newPrivateData;\n        }\n\n        private void GrowIfNeeded()\n        {\n            if (PrivateData.Length == PrivateUsedSize)\n            {\n                Grow(PrivateData.Length + GrowSize);\n            }\n        }\n\n        public void Extend(int size)\n        {\n            if (PrivateData.Length < size)\n            {\n                Grow(size);\n            }\n        }\n\n        public void Fill(ref T val, int n)\n        {\n            if (PrivateData.Length < n)\n            {\n                Grow(n);\n            }\n\n            for (var i = 0; i < n; ++i)\n            {\n                PrivateData[i] = val;\n            }\n\n            PrivateUsedSize = n;\n        }\n\n        public void Push(ref T val)\n        {\n            GrowIfNeeded();\n            PrivateData[PrivateUsedSize] = val;\n            ++PrivateUsedSize;\n        }\n\n        public T Push()\n        {\n            GrowIfNeeded();\n\n            var val = PrivateData[PrivateUsedSize];\n\n            if (val == null)\n            {\n                val = NewForClass();\n                PrivateData[PrivateUsedSize] = val;\n            }\n\n            ++PrivateUsedSize;\n\n            return val;\n        }\n\n        public T Pop()\n        {\n            var val = PrivateData[PrivateUsedSize - 1];\n            --PrivateUsedSize;\n            return val;\n        }\n\n        public T Insert(int index)\n        {\n            if (index == PrivateUsedSize)\n            {\n                return Push();\n            }\n\n            GrowIfNeeded();\n\n            var val = PrivateData[PrivateUsedSize];\n\n            for (var i = PrivateUsedSize - 1; i >= index; --i)\n            {\n                PrivateData[i + 1] = PrivateData[i];\n            }\n\n            if (val == null)\n            {\n                val = NewForClass();\n            }\n\n            PrivateData[index] = val;\n\n            ++PrivateUsedSize;\n\n            return val;\n        }\n\n        public void RemoveAt(int index)\n        {\n            var old = PrivateData[index];\n            \n            for (var i = index; i < PrivateUsedSize - 1; ++i)\n            {\n                PrivateData[i] = PrivateData[i + 1];\n            }\n\n            PrivateData[PrivateUsedSize - 1] = old;\n\n            --PrivateUsedSize;\n        }\n\n        public static void Sort<G>(WorkBuffer<G> buf) where G : IComparable<G>\n        {\n            Internals.Sort<G>.QuickSort(buf.PrivateData, 0, buf.PrivateUsedSize - 1);\n        }\n\n        public void RemoveLast(int n)\n        {\n            PrivateUsedSize -= n;\n        }\n\n        public void Clear()\n        {\n            PrivateUsedSize = 0;\n        }\n\n        public void Dump()\n        {\n            Debug.Log(PrivateData.Take(PrivateUsedSize).Aggregate(\"\", (_, s) => _ + s.ToString() + \"\\n\"));\n        }\n\n        public void DumpHash()\n        {\n            Debug.LogFormat(\"{0}{1}\", PrivateUsedSize, PrivateData.Select(_ => string.Format(\"{0:x}\",_ != null ? _.GetHashCode() : 0)).Aggregate(\"\", (_, s) => _ + \", \" + s));\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/WorkBuffer.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: c9f5042ad1d1418ebe4901c4d1a76acf\r\ntimeCreated: 1519696456"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/WorkBufferPool.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace SVGMeshUnity.Internals\n{\n    public class WorkBufferPool\n    {\n        private readonly Dictionary<Type, Stack<object>> Pool = new Dictionary<Type, Stack<object>>();\n\n        public WorkBuffer<T> Get<T>()\n        {\n            Stack<object> list;\n            WorkBuffer<T> buf = null;\n\n            if (Pool.TryGetValue(typeof(T), out list))\n            {\n                if (list.Count > 0)\n                {\n                    buf = (WorkBuffer<T>)list.Pop();\n                }\n            }\n            \n            return buf ?? new WorkBuffer<T>();\n        }\n\n        public void Get<T>(ref WorkBuffer<T> buf)\n        {\n            buf = Get<T>();\n        }\n\n        public void Release<T>(ref WorkBuffer<T> buf)\n        {\n            Stack<object> list;\n            \n            buf.Clear();\n\n            if (!Pool.TryGetValue(typeof(T), out list))\n            {\n                Pool[typeof(T)] = list = new Stack<object>();\n            }\n            \n            list.Push(buf);\n            buf = null;\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals/WorkBufferPool.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 4e9185cc3eef4289807b77668196dd7f\r\ntimeCreated: 1519698762"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/Internals.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 5591c3a24384418190c7d9686b4f915b\r\ntimeCreated: 1519625297"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/SVGData.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Text.RegularExpressions;\r\nusing SVGMeshUnity.Internals;\r\nusing UnityEngine;\r\n\r\nnamespace SVGMeshUnity\r\n{\r\n    public class SVGData\r\n    {\r\n        // https://github.com/jkroso/abs-svg-path\r\n        // https://github.com/jkroso/normalize-svg-path\r\n        // https://github.com/colinmeinke/svg-arc-to-cubic-bezier\r\n        \r\n        // https://github.com/jkroso/parse-svg-path\r\n        \r\n        internal List<Curve> Curves = new List<Curve>();\r\n\r\n        private Vector2 Start;\r\n        private Vector2 Current;\r\n        private Nullable<Vector2> Bezier;\r\n        private Nullable<Vector2> Quad;\r\n\r\n        public void Clear()\r\n        {\r\n            Curves.Clear();\r\n            Start = Vector2.zero;\r\n            Current = Vector2.zero;\r\n            Bezier = null;\r\n            Quad = null;\r\n        }\r\n\r\n        public void Move(float x, float y)\r\n        {\r\n            Move(new Vector2(x, y));\r\n        }\r\n\r\n        public void MoveRelative(float x, float y)\r\n        {\r\n            Move(Current.x + x, Current.y + y);\r\n        }\r\n\r\n        public void Move(Vector2 v)\r\n        {\r\n            Curves.Add(new Curve()\r\n            {\r\n                IsMove = true,\r\n                Position = v,\r\n            });\r\n            Current = v;\r\n            Bezier = null;\r\n            Quad = null;\r\n        }\r\n\r\n        public void MoveRelative(Vector2 v)\r\n        {\r\n            Move(Current + v);\r\n        }\r\n\r\n        public void Curve(float inX, float inY, float outX, float outY, float x, float y)\r\n        {\r\n            Curve(new Vector2(inX, inY), new Vector2(outX, outY), new Vector2(x, y));\r\n        }\r\n\r\n        public void Curve(Vector2 inControl, Vector2 outControl, Vector2 v)\r\n        {\r\n            CurveInternal(inControl, outControl, v);\r\n            Bezier = outControl;\r\n        }\r\n\r\n        private void CurveInternal(Vector2 inControl, Vector2 outControl, Vector2 v)\r\n        {\r\n            Curves.Add(new Curve()\r\n            {\r\n                Position = v,\r\n                InControl = inControl,\r\n                OutControl = outControl,\r\n            });\r\n            Current = v;\r\n            Bezier = null;\r\n            Quad = null;\r\n        }\r\n\r\n        public void CurveRelative(float inX, float inY, float outX, float outY, float x, float y)\r\n        {\r\n            CurveRelative(new Vector2(inX, inY), new Vector2(outX, outY), new Vector2(x, y));\r\n        }\r\n\r\n        public void CurveRelative(Vector2 inControl, Vector2 outControl, Vector2 v)\r\n        {\r\n            Curve(Current + inControl, Current + outControl, Current + v);\r\n        }\r\n\r\n        public void CurveSmooth(float controlX, float controlY, float x, float y)\r\n        {\r\n            CurveSmooth(new Vector2(controlX, controlY), new Vector2(x, y));\r\n        }\r\n\r\n        public void CurveSmooth(Vector2 control, Vector2 v)\r\n        {\r\n            Curve(Bezier != null ? Current * 2f - Bezier.Value : Current, control, v);\r\n        }\r\n\r\n        public void CurveSmoothRelative(float controlX, float controlY, float x, float y)\r\n        {\r\n            CurveSmoothRelative(new Vector2(controlX, controlY), new Vector2(x, y));\r\n        }\r\n\r\n        public void CurveSmoothRelative(Vector2 control, Vector2 v)\r\n        {\r\n            CurveSmooth(Current + control, Current + v);\r\n        }\r\n\r\n        public void Quadratic(float controlX, float controlY, float x, float y)\r\n        {\r\n            Quadratic(new Vector2(controlX, controlY), new Vector2(x, y));\r\n        }\r\n\r\n        public void Quadratic(Vector2 control, Vector2 v)\r\n        {\r\n            CurveInternal(Current / 3f + (2f / 3f) * control, v / 3f + (2f / 3f) * control, v);\r\n            Quad = control;\r\n        }\r\n        \r\n        public void QuadraticRelative(float controlX, float controlY, float x, float y)\r\n        {\r\n            QuadraticRelative(new Vector2(controlX, controlY), new Vector2(x, y));\r\n        }\r\n\r\n        public void QuadraticRelative(Vector2 control, Vector2 v)\r\n        {\r\n            Quadratic(Current + control, Current + v);\r\n        }\r\n\r\n        public void QuadraticSmooth(float x, float y)\r\n        {\r\n            QuadraticSmooth(new Vector2(x, y));\r\n        }\r\n\r\n        public void QuadraticSmooth(Vector2 v)\r\n        {\r\n            Quadratic(Quad != null ? Current * 2f - Quad.Value : Current, v);\r\n        }\r\n        \r\n        public void QuadraticSmoothRelative(float x, float y)\r\n        {\r\n            QuadraticSmooth(Current.x + x, Current.y + y);\r\n        }\r\n\r\n        public void QuadraticSmoothRelative(Vector2 v)\r\n        {\r\n            QuadraticSmooth(Current + v);\r\n        }\r\n\r\n        public void Arc(float radiusX, float radiusY, float xAxisRotation, bool largeArcFlag, bool sweepFlag, float x, float y)\r\n        {\r\n            Arc(new Vector2(radiusX, radiusY), xAxisRotation, largeArcFlag, sweepFlag, new Vector2(x, y));\r\n        }\r\n        \r\n        public void ArcRelative(float radiusX, float radiusY, float xAxisRotation, bool largeArcFlag, bool sweepFlag, float x, float y)\r\n        {\r\n            ArcRelative(new Vector2(radiusX, radiusY), xAxisRotation, largeArcFlag, sweepFlag, new Vector2(x, y));\r\n        }\r\n\r\n        public void ArcRelative(Vector2 radius, float xAxisRotation, bool largeArcFlag, bool sweepFlag, Vector2 v)\r\n        {\r\n            Arc(radius, xAxisRotation, largeArcFlag, sweepFlag, Current + v);\r\n        }\r\n\r\n        public void Line(float x, float y)\r\n        {\r\n            Line(new Vector2(x, y));\r\n        }\r\n\r\n        public void Line(Vector2 v)\r\n        {\r\n            CurveInternal(Current, v, v);\r\n        }\r\n\r\n        public void LineRelative(float x, float y)\r\n        {\r\n            Line(Current.x + x, Current.y + y);\r\n        }\r\n\r\n        public void LineRelative(Vector2 v)\r\n        {\r\n            Line(Current + v);\r\n        }\r\n\r\n        public void LineHorizontal(float x)\r\n        {\r\n            Line(x, Current.y);\r\n        }\r\n\r\n        public void LineHorizontalRelative(float x)\r\n        {\r\n            LineHorizontal(Current.x + x);\r\n        }\r\n\r\n        public void LineVertical(float y)\r\n        {\r\n            Line(Current.x, y);\r\n        }\r\n\r\n        public void LineVerticalRelative(float y)\r\n        {\r\n            LineVertical(Current.y + y);\r\n        }\r\n\r\n        public void Close()\r\n        {\r\n            Line(Start);\r\n        }\r\n\r\n\r\n        #region Arc\r\n\r\n        public void Arc(Vector2 radius, float xAxisRotation, bool largeArcFlag, bool sweepFlag, Vector2 v)\r\n        {\r\n            if (radius.x == 0f || radius.y == 0f)\r\n            {\r\n                return;\r\n            }\r\n\r\n            const float TAU = Mathf.PI * 2f;\r\n\r\n            var sinphi = Mathf.Sin(xAxisRotation * TAU / 360f);\r\n            var cosphi = Mathf.Cos(xAxisRotation * TAU / 360f);\r\n\r\n            var pxp = cosphi * (Current.x - v.x) / 2f + sinphi * (Current.y - v.y) / 2f;\r\n            var pyp = -sinphi * (Current.x - v.x) / 2f + cosphi * (Current.y - v.y) / 2f;\r\n\r\n            if (pxp == 0f && pyp == 0f)\r\n            {\r\n                return;\r\n            }\r\n\r\n            var rx = Mathf.Abs(radius.x);\r\n            var ry = Mathf.Abs(radius.y);\r\n\r\n            var lambda =\r\n                Mathf.Pow(pxp, 2f) / Mathf.Pow(rx, 2f) +\r\n                Mathf.Pow(pyp, 2f) / Mathf.Pow(ry, 2);\r\n\r\n            if (lambda > 1f)\r\n            {\r\n                rx *= Mathf.Sqrt(lambda);\r\n                ry *= Mathf.Sqrt(lambda);\r\n            }\r\n\r\n            var rxsq = Mathf.Pow(rx, 2f);\r\n            var rysq = Mathf.Pow(ry, 2f);\r\n            var pxpsq = Mathf.Pow(pxp, 2f);\r\n            var pypsq = Mathf.Pow(pyp, 2f);\r\n\r\n            var radicant = (rxsq * rysq) - (rxsq * pypsq) - (rysq * pxpsq);\r\n\r\n            if (radicant < 0f)\r\n            {\r\n                radicant = 0f;\r\n            }\r\n\r\n            radicant /= (rxsq * pypsq) + (rysq * pxpsq);\r\n            radicant = Mathf.Sqrt(radicant) * (largeArcFlag == sweepFlag ? -1f : 1f);\r\n\r\n            var centerxp = radicant * rx / ry * pyp;\r\n            var centeryp = radicant * -ry / rx * pxp;\r\n\r\n            var centerx = cosphi * centerxp - sinphi * centeryp + (Current.x + v.x) / 2f;\r\n            var centery = sinphi * centerxp + cosphi * centeryp + (Current.y + v.y) / 2f;\r\n\r\n            var vx1 = (pxp - centerxp) / rx;\r\n            var vy1 = (pyp - centeryp) / ry;\r\n            var vx2 = (-pxp - centerxp) / rx;\r\n            var vy2 = (-pyp - centeryp) / ry;\r\n\r\n            var ang1 = VectorAngle(1, 0f, vx1, vy1);\r\n            var ang2 = VectorAngle(vx1, vy1, vx2, vy2);\r\n\r\n            if (sweepFlag == false && ang2 > 0f)\r\n            {\r\n                ang2 -= TAU;\r\n            }\r\n\r\n            if (sweepFlag == true && ang2 < 0f)\r\n            {\r\n                ang2 += TAU;\r\n            }\r\n\r\n            var segments = Mathf.Max(Mathf.Ceil(Mathf.Abs(ang2) / (TAU / 4f)), 1f);\r\n\r\n            ang2 /= segments;\r\n\r\n            for (var i = 0; i < segments; ++i)\r\n            {\r\n                var a = 4f / 3f * Mathf.Tan(ang2 / 4f);\r\n\r\n                var x1 = Mathf.Cos(ang1);\r\n                var y1 = Mathf.Sin(ang1);\r\n                var x2 = Mathf.Cos(ang1 + ang2);\r\n                var y2 = Mathf.Sin(ang1 + ang2);\r\n\r\n                var curve0 = new Vector2(x1 - y1 * a, y1 + x1 * a);\r\n                var curve1 = new Vector2(x2 + y2 * a, y2 - x2 * a);\r\n                var curve2 = new Vector2(x2, y2);\r\n\r\n                MapToEllipse(ref curve0, rx, ry, cosphi, sinphi, centerx, centery);\r\n                MapToEllipse(ref curve1, rx, ry, cosphi, sinphi, centerx, centery);\r\n                MapToEllipse(ref curve2, rx, ry, cosphi, sinphi, centerx, centery);\r\n                \r\n                CurveInternal(curve0, curve1, curve2);\r\n\r\n                ang1 += ang2;\r\n            }\r\n        }\r\n        \r\n        private float VectorAngle(float ux, float uy, float vx, float vy)\r\n        {\r\n            var sign = Mathf.Sign(ux * vy - uy * vx);\r\n            var umag = Mathf.Sqrt(ux * ux + uy * uy);\r\n            var vmag = Mathf.Sqrt(ux * ux + uy * uy);\r\n            var dot = ux * vx + uy * vy;\r\n\r\n            var div = dot / (umag * vmag);\r\n\r\n            if (div > 1f)\r\n            {\r\n                div = 1f;\r\n            }\r\n\r\n            if (div < -1f)\r\n            {\r\n                div = -1f;\r\n            }\r\n\r\n            return sign * Mathf.Acos(div);\r\n        }\r\n\r\n        private void MapToEllipse(ref Vector2 v, float rx, float ry, float cosphi, float sinphi, float centerx, float centery)\r\n        {\r\n            var x = v.x * rx;\r\n            var y = v.y * ry;\r\n\r\n            v.x = cosphi * x - sinphi * y + centerx;\r\n            v.y = sinphi * x + cosphi * y + centery;\r\n        }\r\n\r\n        #endregion\r\n\r\n\r\n        #region Path Parser\r\n        \r\n        private static readonly Regex Segment = new Regex(\"([astvzqmhlc])([^astvzqmhlc]*)\", RegexOptions.IgnoreCase | RegexOptions.Multiline);\r\n        private static readonly Dictionary<string ,int> ArgumentLengthes = new Dictionary<string, int>()\r\n        {\r\n            { \"a\", 7 }, { \"c\", 6 }, { \"h\", 1 }, { \"l\", 2 }, { \"m\", 2 }, { \"q\", 4 }, { \"s\", 4 }, { \"t\", 2 }, { \"v\", 1 }, { \"z\", 0 }\r\n        };\r\n\r\n        public void Path(string data)\r\n        {\r\n            var args = new float[32];\r\n            var numArgs = 0;\r\n            \r\n            foreach (Match seg in Segment.Matches(data))\r\n            {\r\n                var command = seg.Groups[1].Value;\r\n                var type = command.ToLower();\r\n                \r\n                ParseArgs(seg.Groups[2].Value, ref args, out numArgs);\r\n\r\n                var argsIndex = 0;\r\n                \r\n                if (type == \"m\" && numArgs > 2)\r\n                {\r\n                    LoadCommand(command, type, args, numArgs, ref argsIndex);\r\n                    type = \"l\";\r\n                    command = command == \"m\" ? \"l\" : \"L\";\r\n                }\r\n\r\n                for (;;)\r\n                {\r\n                    if (LoadCommand(command, type, args, numArgs, ref argsIndex))\r\n                    {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        private bool LoadCommand(string command, string type, float[] args, int numArgs, ref int argsIndex)\r\n        {\r\n            if (argsIndex == numArgs)\r\n            {\r\n                return true;\r\n            }\r\n            \r\n            var len = ArgumentLengthes[type];\r\n\r\n            if (argsIndex + len > numArgs)\r\n            {\r\n                throw new ArgumentException(\"Malformed path data\");\r\n            }\r\n\r\n            var i = argsIndex;\r\n\r\n            switch (command)\r\n            {\r\n                case \"A\":\r\n                    Arc(args[i + 0], args[i + 1], args[i + 2], args[i + 3] > 0f, args[i + 4] > 0f, args[i + 5],\r\n                        args[i + 6]);\r\n                    break;\r\n                case \"a\":\r\n                    ArcRelative(args[i + 0], args[i + 1], args[i + 2], args[i + 3] > 0f, args[i + 4] > 0f, args[i + 5],\r\n                        args[i + 6]);\r\n                    break;\r\n                case \"C\":\r\n                    Curve(args[i + 0], args[i + 1], args[i + 2], args[i + 3], args[i + 4], args[i + 5]);\r\n                    break;\r\n                case \"c\":\r\n                    CurveRelative(args[i + 0], args[i + 1], args[i + 2], args[i + 3], args[i + 4], args[i + 5]);\r\n                    break;\r\n                case \"H\":\r\n                    LineHorizontal(args[i + 0]);\r\n                    break;\r\n                case \"h\":\r\n                    LineHorizontalRelative(args[i + 0]);\r\n                    break;\r\n                case \"L\":\r\n                    Line(args[i + 0], args[i + 1]);\r\n                    break;\r\n                case \"l\":\r\n                    LineRelative(args[i + 0], args[i + 1]);\r\n                    break;\r\n                case \"M\":\r\n                    Move(args[i + 0], args[i + 1]);\r\n                    break;\r\n                case \"m\":\r\n                    MoveRelative(args[i + 0], args[i + 1]);\r\n                    break;\r\n                case \"Q\":\r\n                    Quadratic(args[i + 0], args[i + 1], args[i + 2], args[i + 3]);\r\n                    break;\r\n                case \"q\":\r\n                    QuadraticRelative(args[i + 0], args[i + 1], args[i + 2], args[i + 3]);\r\n                    break;\r\n                case \"S\":\r\n                    CurveSmooth(args[i + 0], args[i + 1], args[i + 2], args[i + 3]);\r\n                    break;\r\n                case \"s\":\r\n                    CurveSmoothRelative(args[i + 0], args[i + 1], args[i + 2], args[i + 3]);\r\n                    break;\r\n                case \"T\":\r\n                    QuadraticSmooth(args[i + 0], args[i + 1]);\r\n                    break;\r\n                case \"t\":\r\n                    QuadraticSmoothRelative(args[i + 0], args[i + 1]);\r\n                    break;\r\n                case \"V\":\r\n                    LineVertical(args[i + 0]);\r\n                    break;\r\n                case \"v\":\r\n                    LineVerticalRelative(args[i + 0]);\r\n                    break;\r\n                case \"Z\":\r\n                case \"z\":\r\n                    Close();\r\n                    break;\r\n            }\r\n\r\n            argsIndex += len;\r\n\r\n            return false;\r\n        }\r\n\r\n        private void ParseArgs(string s, ref float[] args, out int numArgs)\r\n        {\r\n            numArgs = 0;\r\n\r\n            var l = s.Length;\r\n            var buf = new StringBuilder(16);\r\n            var lastIsE = false;\r\n            var includesDot = false;\r\n            for (var i = 0; i < l; ++i)\r\n            {\r\n                var isBreak = false;\r\n                var c = s[i];\r\n                switch (c)\r\n                {\r\n                    case '0':\r\n                    case '1':\r\n                    case '2':\r\n                    case '3':\r\n                    case '4':\r\n                    case '5':\r\n                    case '6':\r\n                    case '7':\r\n                    case '8':\r\n                    case '9':\r\n                        buf.Append(c);\r\n                        lastIsE = false;\r\n                        break;\r\n                    case '.':\r\n                        if (includesDot)\r\n                        {\r\n                            isBreak = true;\r\n                            --i;\r\n                        }\r\n                        else\r\n                        {\r\n                            buf.Append(c);\r\n                            includesDot = true;\r\n                            lastIsE = false;\r\n                        }\r\n                        break;\r\n                    case 'e':\r\n                        buf.Append(c);\r\n                        lastIsE = true;\r\n                        break;\r\n                    case '+':\r\n                    case '-':\r\n                        if (buf.Length > 0 && !lastIsE)\r\n                        {\r\n                            isBreak = true;\r\n                            --i;\r\n                        }\r\n                        else\r\n                        {\r\n                            buf.Append(c);\r\n                            lastIsE = false;\r\n                        }\r\n                        break;\r\n                    default:\r\n                        isBreak = true;\r\n                        break;\r\n                }\r\n\r\n                if (isBreak || i == l - 1)\r\n                {\r\n                    if (buf.Length > 0)\r\n                    {\r\n                        if (args.Length == numArgs)\r\n                        {\r\n                            var newArgs = new float[args.Length + 32];\r\n                            args.CopyTo(newArgs, 0);\r\n                            args = newArgs;\r\n                        }\r\n\r\n                        args[numArgs] = float.Parse(buf.ToString());\r\n                        numArgs++;\r\n                        buf.Length = 0;\r\n                        lastIsE = false;\r\n                        includesDot = false;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        #endregion\r\n\r\n\r\n        #region Debug\r\n\r\n        public string Dump()\r\n        {\r\n            return Curves\r\n                .Select(_ =>\r\n                {\r\n                    if (_.IsMove)\r\n                    {\r\n                        return string.Format(\"M {0} {1}\", _.Position.x, _.Position.y);\r\n                    }\r\n                    else\r\n                    {\r\n                        return string.Format(\"C {0} {1}, {2} {3}, {4} {5}\", _.InControl.x, _.InControl.y, _.OutControl.x, _.OutControl.y, _.Position.x, _.Position.y);\r\n                    }\r\n                })\r\n                .Aggregate(\"\", (_, s) => _ + s + \" \");\r\n        }\r\n\r\n        #endregion\r\n    }\r\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/SVGData.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 7927a8fbe7ef84ebc95a11f2b57680f5\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/SVGMesh.cs",
    "content": "﻿using SVGMeshUnity.Internals;\nusing SVGMeshUnity.Internals.Cdt2d;\nusing UnityEngine;\n\nnamespace SVGMeshUnity\n{\n    public class SVGMesh : MonoBehaviour\n    {\n        // https://github.com/mattdesl/adaptive-bezier-curve\n\n        public float Scale = 1f;\n        \n        public bool Delaunay = false;\n        public bool Interior = true;\n        public bool Exterior = false;\n        public bool Infinity = false;\n        \n        private static WorkBufferPool WorkBufferPool = new WorkBufferPool();\n        \n        private MeshData MeshData = new MeshData();\n        private Mesh Mesh;\n\n        private BezierToVertex BezierToVertex;\n        private Triangulation Triangulation;\n\n        private void Awake()\n        {\n            BezierToVertex = new BezierToVertex();\n            BezierToVertex.WorkBufferPool = WorkBufferPool;\n            \n            Triangulation = new Triangulation();\n            Triangulation.WorkBufferPool = WorkBufferPool;\n        }\n        \n        public void Fill(SVGData svg)\n        {\n            MeshData.Clear();\n            \n            // convert curves into discrete points\n            BezierToVertex.Scale = Scale;\n            BezierToVertex.GetContours(svg, MeshData);\n            \n            // triangulate mesh\n            Triangulation.Delaunay = Delaunay;\n            Triangulation.Interior = Interior;\n            Triangulation.Exterior = Exterior;\n            Triangulation.Infinity = Infinity;\n            Triangulation.BuildTriangles(MeshData);\n            \n            if (Mesh == null)\n            {\n                Mesh = new Mesh();\n                Mesh.MarkDynamic();\n            }\n            \n            MeshData.MakeUnityFriendly();\n            MeshData.Upload(Mesh);\n\n            var filter = GetComponent<MeshFilter>();\n            if (filter != null)\n            {\n                filter.sharedMesh = Mesh;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/SVGMesh.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 3646afd5fb564c6b914c04b46d4417c8\r\ntimeCreated: 1519635751"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/SVGMeshUnity.Runtime.asmdef",
    "content": "﻿{\r\n\t\"name\": \"SVGMeshUnity\"\r\n}\r\n"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime/SVGMeshUnity.Runtime.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: 13ced72b5c60b45cda3a649cd6d40f5b\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/SVGMeshUnity/Runtime.meta",
    "content": "fileFormatVersion: 2\nguid: 94fbdbadf09ef49a29dd40de42e1631f\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Fixtures.cs",
    "content": "﻿using System.Collections.Generic;\nusing SVGMeshUnity.Internals;\nusing UnityEngine;\n\nnamespace SVGMeshUnity\n{\n    public static class Fixtures\n    {\n        public static readonly string TwitterBirdPathSource =\n            @\"M10,0.4c-5.302,0-9.6,4.298-9.6,9.6s4.298,9.6,9.6,9.6s9.6-4.298,9.6-9.6S15.302,0.4,10,0.4z M13.905,8.264\n            c0.004,0.082,0.005,0.164,0.005,0.244c0,2.5-1.901,5.381-5.379,5.381c-1.068,0-2.062-0.312-2.898-0.85\n            c0.147,0.018,0.298,0.025,0.451,0.025c0.886,0,1.701-0.301,2.348-0.809c-0.827-0.016-1.525-0.562-1.766-1.312\n            c0.115,0.021,0.233,0.033,0.355,0.033c0.172,0,0.34-0.023,0.498-0.066c-0.865-0.174-1.517-0.938-1.517-1.854V9.033\n            C6.257,9.174,6.549,9.26,6.859,9.27C6.351,8.93,6.018,8.352,6.018,7.695c0-0.346,0.093-0.672,0.256-0.951\n            c0.933,1.144,2.325,1.896,3.897,1.977c-0.033-0.139-0.049-0.283-0.049-0.432c0-1.043,0.846-1.891,1.891-1.891\n            c0.543,0,1.035,0.23,1.38,0.598c0.431-0.086,0.835-0.242,1.2-0.459c-0.141,0.441-0.44,0.812-0.831,1.047\n            c0.383-0.047,0.747-0.148,1.086-0.299C14.595,7.664,14.274,7.998,13.905,8.264z\";\n\n        public static readonly string TwitterBirdPathCurve =\n            @\"M 10 0.4 C 4.698 0.4, 0.3999996 4.698, 0.3999996 10 C 0.3999996 15.302, 4.697999 19.6, 10 19.6 C 15.302 19.6, 19.6 15.302, 19.6 10 C 19.6 4.698, 15.302 0.4, 10 0.4 M 13.905 8.264 C 13.909 8.346, 13.91 8.427999, 13.91 8.508 C 13.91 11.008, 12.009 13.889, 8.531 13.889 C 7.463 13.889, 6.469 13.577, 5.633 13.039 C 5.78 13.057, 5.931 13.064, 6.084001 13.064 C 6.970001 13.064, 7.785001 12.763, 8.432001 12.255 C 7.605001 12.239, 6.907001 11.693, 6.666001 10.943 C 6.781001 10.964, 6.899001 10.976, 7.021001 10.976 C 7.193001 10.976, 7.361001 10.953, 7.519001 10.91 C 6.654001 10.736, 6.002002 9.971999, 6.002002 9.055999 C 6.002002 9.055999, 6.002002 9.033, 6.002002 9.033 C 6.257 9.174, 6.549 9.26, 6.859 9.27 C 6.351 8.93, 6.018 8.352, 6.018 7.695 C 6.018 7.349, 6.111 7.023, 6.274 6.744 C 7.207 7.888, 8.599 8.64, 10.171 8.721001 C 10.138 8.582001, 10.122 8.438001, 10.122 8.289001 C 10.122 7.246, 10.968 6.398001, 12.013 6.398001 C 12.556 6.398001, 13.048 6.628001, 13.393 6.996001 C 13.824 6.910001, 14.228 6.754001, 14.593 6.537001 C 14.452 6.978001, 14.153 7.349, 13.762 7.584001 C 14.145 7.537001, 14.509 7.436001, 14.848 7.285001 C 14.595 7.664, 14.274 7.998, 13.905 8.264 \";\n\n        public static List<Vector3> TwitterBirdPathCurveVertices = new List<Vector3>()\n        {\n            new Vector2(10f, 0.4f),\n            new Vector2(9.505979430004883f, 0.4124912719726563f),\n            new Vector2(8.537999318725586f, 0.5106119995117188f),\n            new Vector2(7.600788242797852f, 0.7022293090820312f),\n            new Vector2(6.699171398706055f, 0.9825180053710938f),\n            new Vector2(5.837973982934571f, 1.3466528930664063f),\n            new Vector2(5.022021191967774f, 1.789808776855469f),\n            new Vector2(4.256138222290039f, 2.3071604614257812f),\n            new Vector2(3.5451502703857423f, 2.8938827514648438f),\n            new Vector2(2.8938825327392577f, 3.545150451660156f),\n            new Vector2(2.307160205834961f, 4.25613836669922f),\n            new Vector2(1.7898084861572268f, 5.0220213012695325f),\n            new Vector2(1.3466525701904297f, 5.837974060058594f),\n            new Vector2(0.9825176544189453f, 6.699171447753905f),\n            new Vector2(0.7022289353271486f, 7.600788269042969f),\n            new Vector2(0.5106116093994142f, 8.537999328613282f),\n            new Vector2(0.41249087312011723f, 9.505979431152344f),\n            new Vector2(0.3999996f, 10f),\n            new Vector2(0.4124908702819824f, 10.494020568847656f),\n            new Vector2(0.5106115855041504f, 11.462000671386718f),\n            new Vector2(0.7022288735290527f, 12.399211730957031f),\n            new Vector2(0.9825175422668456f, 13.300828552246093f),\n            new Vector2(1.3466523996276856f, 14.162025939941405f),\n            new Vector2(1.7898082535217288f, 14.977978698730467f),\n            new Vector2(2.307159911859131f, 15.743861633300781f),\n            new Vector2(2.893882182550049f, 16.454849548339848f),\n            new Vector2(3.5451498735046383f, 17.106117248535156f),\n            new Vector2(4.256137792633057f, 17.69283953857422f),\n            new Vector2(5.022020747845458f, 18.21019122314453f),\n            new Vector2(5.837973547052002f, 18.653347106933595f),\n            new Vector2(6.699170998162842f, 19.017481994628906f),\n            new Vector2(7.600787909088134f, 19.297770690917968f),\n            new Vector2(8.537999087738037f, 19.489388000488283f),\n            new Vector2(9.505979342022705f, 19.587508728027345f),\n            new Vector2(10f, 19.6f),\n            new Vector2(10.494020568847656f, 19.587508728027345f),\n            new Vector2(11.462000671386718f, 19.489388000488283f),\n            new Vector2(12.399211730957031f, 19.297770690917968f),\n            new Vector2(13.300828552246093f, 19.017481994628906f),\n            new Vector2(14.162025939941405f, 18.653347106933595f),\n            new Vector2(14.977978698730467f, 18.21019122314453f),\n            new Vector2(15.743861633300781f, 17.69283953857422f),\n            new Vector2(16.454849548339848f, 17.106117248535156f),\n            new Vector2(17.106117248535156f, 16.454849548339848f),\n            new Vector2(17.69283953857422f, 15.743861633300781f),\n            new Vector2(18.21019122314453f, 14.977978698730467f),\n            new Vector2(18.653347106933595f, 14.162025939941405f),\n            new Vector2(19.017481994628906f, 13.300828552246093f),\n            new Vector2(19.297770690917968f, 12.399211730957031f),\n            new Vector2(19.489388000488283f, 11.462000671386718f),\n            new Vector2(19.587508728027345f, 10.494020568847656f),\n            new Vector2(19.6f, 10f),\n            new Vector2(19.587508728027345f, 9.505979431152344f),\n            new Vector2(19.489388000488283f, 8.537999328613282f),\n            new Vector2(19.297770690917968f, 7.600788269042969f),\n            new Vector2(19.017481994628906f, 6.699171447753905f),\n            new Vector2(18.653347106933595f, 5.837974060058594f),\n            new Vector2(18.21019122314453f, 5.0220213012695325f),\n            new Vector2(17.69283953857422f, 4.25613836669922f),\n            new Vector2(17.106117248535156f, 3.545150451660156f),\n            new Vector2(16.454849548339848f, 2.8938827514648438f),\n            new Vector2(15.743861633300781f, 2.3071604614257812f),\n            new Vector2(14.977978698730467f, 1.789808776855469f),\n            new Vector2(14.162025939941405f, 1.3466528930664063f),\n            new Vector2(13.300828552246093f, 0.9825180053710938f),\n            new Vector2(12.399211730957031f, 0.7022293090820312f),\n            new Vector2(11.462000671386718f, 0.5106119995117188f),\n            new Vector2(10.494020568847656f, 0.4124912719726563f),\n            new Vector2(13.905f, 8.264f),\n            new Vector2(13.90746875f, 8.325468609375001f),\n            new Vector2(13.90978125f, 8.447655828125f),\n            new Vector2(13.91f, 8.508f),\n            new Vector2(13.8878017578125f, 8.980418457031249f),\n            new Vector2(13.711639648437501f, 9.932931152343748f),\n            new Vector2(13.3629541015625f, 10.863822753906248f),\n            new Vector2(12.8455419921875f, 11.734866699218749f),\n            new Vector2(12.163200195312502f, 12.50783642578125f),\n            new Vector2(11.319725585937501f, 13.14450537109375f),\n            new Vector2(10.3189150390625f, 13.60664697265625f),\n            new Vector2(9.1645654296875f, 13.85603466796875f),\n            new Vector2(8.531f, 13.889f),\n            new Vector2(8.1341328125f, 13.87454296875f),\n            new Vector2(7.3651484375f, 13.76191015625f),\n            new Vector2(6.6357265624999995f, 13.54437109375f),\n            new Vector2(5.9537421875000005f, 13.22998828125f),\n            new Vector2(5.633f, 13.039f),\n            new Vector2(5.7439687656250005f, 13.0505f),\n            new Vector2(5.969656671875f, 13.062625f),\n            new Vector2(6.084001f, 13.064f),\n            new Vector2(6.412733421875f, 13.050074218750002f),\n            new Vector2(7.0456826406249995f, 12.941972656249998f),\n            new Vector2(7.638366234375001f, 12.73421484375f),\n            new Vector2(8.181690453125f, 12.43561328125f),\n            new Vector2(8.432001f, 12.255f),\n            new Vector2(8.1285635f, 12.224792968750002f),\n            new Vector2(7.5733447499999995f, 12.03059765625f),\n            new Vector2(7.112626f, 11.68349609375f),\n            new Vector2(6.777157249999999f, 11.214050781249998f),\n            new Vector2(6.666001f, 10.943f),\n            new Vector2(6.752829125f, 10.957015625f),\n            new Vector2(6.930235375f, 10.973796875000001f),\n            new Vector2(7.021001f, 10.976f),\n            new Vector2(7.149157250000001f, 10.971734375f),\n            new Vector2(7.398719750000001f, 10.938453125f),\n            new Vector2(7.519001f, 10.91f),\n            new Vector2(7.205467839843751f, 10.817949175781251f),\n            new Vector2(6.65888608203125f, 10.48844108984375f),\n            new Vector2(6.25391379296875f, 9.999276660156248f),\n            new Vector2(6.03170703515625f, 9.39151857421875f),\n            new Vector2(6.002002f, 9.055999f),\n            new Vector2(6.002002f, 9.05240540625f),\n            new Vector2(6.002002f, 9.03659359375f),\n            new Vector2(6.002002f, 9.033f),\n            new Vector2(6.19989146875f, 9.128109375000001f),\n            new Vector2(6.63017190625f, 9.248578125f),\n            new Vector2(6.859f, 9.27f),\n            new Vector2(6.67701171875f, 9.131654296874999f),\n            new Vector2(6.36966015625f, 8.795478515625f),\n            new Vector2(6.15015234375f, 8.392412109375f),\n            new Vector2(6.03330078125f, 7.937361328125f),\n            new Vector2(6.018f, 7.695f),\n            new Vector2(6.035078125f, 7.439671875f),\n            new Vector2(6.165234375f, 6.961640624999999f),\n            new Vector2(6.274f, 6.744f),\n            new Vector2(6.644845703125f, 7.154080080078124f),\n            new Vector2(7.502552734375f, 7.850912162109375f),\n            new Vector2(8.493150390624999f, 8.361510009765626f),\n            new Vector2(9.590482421874999f, 8.659717466796875f),\n            new Vector2(10.171f, 8.721001f),\n            new Vector2(10.149421874999998f, 8.6158135f),\n            new Vector2(10.125015625f, 8.3998135f),\n            new Vector2(10.122f, 8.289001f),\n            new Vector2(10.131756103515624f, 8.095882915283205f),\n            new Vector2(10.206961669921876f, 7.727183978271485f),\n            new Vector2(10.444787109375f, 7.232326732421876f),\n            new Vector2(10.955447265624999f, 6.721315189453125f),\n            new Vector2(11.450440673828126f, 6.483133970947266f),\n            new Vector2(11.819552490234376f, 6.407779065185546f),\n            new Vector2(12.013f, 6.398001f),\n            new Vector2(12.214046875f, 6.4086025625f),\n            new Vector2(12.597296875000001f, 6.4901806875f),\n            new Vector2(12.947921875f, 6.645071312500001f),\n            new Vector2(13.256921875000002f, 6.864649437500001f),\n            new Vector2(13.393f, 6.996001f),\n            new Vector2(13.711f, 6.9185166250000005f),\n            new Vector2(14.312124999999998f, 6.688172874999999f),\n            new Vector2(14.593f, 6.537001f),\n            new Vector2(14.45865625f, 6.8535946093749995f),\n            new Vector2(14.03696875f, 7.383281828125f),\n            new Vector2(13.762f, 7.584001f),\n            new Vector2(14.04559375f, 7.538688500000001f),\n            new Vector2(14.589156249999998f, 7.3888135f),\n            new Vector2(14.848f, 7.285001f),\n            new Vector2(14.6458125f, 7.560453546874999f),\n            new Vector2(14.172437500000001f, 8.052109390625f)\n        };\n\n        public static List<Int2> TwitterBirdPathCurveEdges = new List<Int2>()\n        {\n            new Int2(0, 1),\n            new Int2(1, 2),\n            new Int2(2, 3),\n            new Int2(3, 4),\n            new Int2(4, 5),\n            new Int2(5, 6),\n            new Int2(6, 7),\n            new Int2(7, 8),\n            new Int2(8, 9),\n            new Int2(9, 10),\n            new Int2(10, 11),\n            new Int2(11, 12),\n            new Int2(12, 13),\n            new Int2(13, 14),\n            new Int2(14, 15),\n            new Int2(15, 16),\n            new Int2(16, 17),\n            new Int2(17, 18),\n            new Int2(18, 19),\n            new Int2(19, 20),\n            new Int2(20, 21),\n            new Int2(21, 22),\n            new Int2(22, 23),\n            new Int2(23, 24),\n            new Int2(24, 25),\n            new Int2(25, 26),\n            new Int2(26, 27),\n            new Int2(27, 28),\n            new Int2(28, 29),\n            new Int2(29, 30),\n            new Int2(30, 31),\n            new Int2(31, 32),\n            new Int2(32, 33),\n            new Int2(33, 34),\n            new Int2(34, 35),\n            new Int2(35, 36),\n            new Int2(36, 37),\n            new Int2(37, 38),\n            new Int2(38, 39),\n            new Int2(39, 40),\n            new Int2(40, 41),\n            new Int2(41, 42),\n            new Int2(42, 43),\n            new Int2(43, 44),\n            new Int2(44, 45),\n            new Int2(45, 46),\n            new Int2(46, 47),\n            new Int2(47, 48),\n            new Int2(48, 49),\n            new Int2(49, 50),\n            new Int2(50, 51),\n            new Int2(51, 52),\n            new Int2(52, 53),\n            new Int2(53, 54),\n            new Int2(54, 55),\n            new Int2(55, 56),\n            new Int2(56, 57),\n            new Int2(57, 58),\n            new Int2(58, 59),\n            new Int2(59, 60),\n            new Int2(60, 61),\n            new Int2(61, 62),\n            new Int2(62, 63),\n            new Int2(63, 64),\n            new Int2(64, 65),\n            new Int2(65, 66),\n            new Int2(66, 67),\n            new Int2(67, 0),\n            new Int2(68, 69),\n            new Int2(69, 70),\n            new Int2(70, 71),\n            new Int2(71, 72),\n            new Int2(72, 73),\n            new Int2(73, 74),\n            new Int2(74, 75),\n            new Int2(75, 76),\n            new Int2(76, 77),\n            new Int2(77, 78),\n            new Int2(78, 79),\n            new Int2(79, 80),\n            new Int2(80, 81),\n            new Int2(81, 82),\n            new Int2(82, 83),\n            new Int2(83, 84),\n            new Int2(84, 85),\n            new Int2(85, 86),\n            new Int2(86, 87),\n            new Int2(87, 88),\n            new Int2(88, 89),\n            new Int2(89, 90),\n            new Int2(90, 91),\n            new Int2(91, 92),\n            new Int2(92, 93),\n            new Int2(93, 94),\n            new Int2(94, 95),\n            new Int2(95, 96),\n            new Int2(96, 97),\n            new Int2(97, 98),\n            new Int2(98, 99),\n            new Int2(99, 100),\n            new Int2(100, 101),\n            new Int2(101, 102),\n            new Int2(102, 103),\n            new Int2(103, 104),\n            new Int2(104, 105),\n            new Int2(105, 106),\n            new Int2(106, 107),\n            new Int2(107, 108),\n            new Int2(108, 109),\n            new Int2(109, 110),\n            new Int2(110, 111),\n            new Int2(111, 112),\n            new Int2(112, 113),\n            new Int2(113, 114),\n            new Int2(114, 115),\n            new Int2(115, 116),\n            new Int2(116, 117),\n            new Int2(117, 118),\n            new Int2(118, 119),\n            new Int2(119, 120),\n            new Int2(120, 121),\n            new Int2(121, 122),\n            new Int2(122, 123),\n            new Int2(123, 124),\n            new Int2(124, 125),\n            new Int2(125, 126),\n            new Int2(126, 127),\n            new Int2(127, 128),\n            new Int2(128, 129),\n            new Int2(129, 130),\n            new Int2(130, 131),\n            new Int2(131, 132),\n            new Int2(132, 133),\n            new Int2(133, 134),\n            new Int2(134, 135),\n            new Int2(135, 136),\n            new Int2(136, 137),\n            new Int2(137, 138),\n            new Int2(138, 139),\n            new Int2(139, 140),\n            new Int2(140, 141),\n            new Int2(141, 142),\n            new Int2(142, 143),\n            new Int2(143, 144),\n            new Int2(144, 145),\n            new Int2(145, 146),\n            new Int2(146, 147),\n            new Int2(147, 148),\n            new Int2(148, 149),\n            new Int2(149, 150),\n            new Int2(150, 151),\n            new Int2(151, 152),\n            new Int2(152, 153),\n            new Int2(153, 154),\n            new Int2(154, 68)\n        };\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Fixtures.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 7e28830823784187ba366b3ca0e03d1a\r\ntimeCreated: 1519739019"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/BezierToVertexTests.cs",
    "content": "﻿using NUnit.Framework;\nusing UnityEngine.TestTools.Utils;\n\nnamespace SVGMeshUnity.Internals\n{\n    public class BezierToVertexTests\n    {\n        private BezierToVertex BezierToVertex;\n\n        [SetUp]\n        public void SetUp()\n        {\n            BezierToVertex = new BezierToVertex();\n            BezierToVertex.WorkBufferPool = new WorkBufferPool();\n        }\n\n        [Test]\n        public void GetContours()\n        {\n            var svg = new SVGData();\n            svg.Path(Fixtures.TwitterBirdPathCurve);\n            \n            var mesh = new MeshData();\n            \n            BezierToVertex.Scale = 10f;\n            BezierToVertex.GetContours(svg, mesh);\n            \n            Assert.That(mesh.Vertices, Is.EqualTo(Fixtures.TwitterBirdPathCurveVertices).Using(Vector3EqualityComparer.Instance));\n            Assert.That(mesh.Edges, Is.EqualTo(Fixtures.TwitterBirdPathCurveEdges));\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/BezierToVertexTests.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 75b27d2ee3774457a9947329de2f0983\r\ntimeCreated: 1519739379"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d/DelaunayRefineTests.cs",
    "content": "﻿using NUnit.Framework;\n\nnamespace SVGMeshUnity.Internals.Cdt2d\n{\n    public class DelaunayRefineTests\n    {\n        private DelaunayRefine DelaunayRefine;\n\n        [SetUp]\n        public void SetUp()\n        {\n            DelaunayRefine = new DelaunayRefine();\n            DelaunayRefine.WorkBufferPool = new WorkBufferPool();\n        }\n\n        [Test]\n        public void RefineTriangles()\n        {\n            var mesh = new MeshData();\n            \n            mesh.Vertices.AddRange(Fixtures.TwitterBirdVertices);\n            mesh.Edges.AddRange(Fixtures.TwitterBirdEdges);\n            mesh.Triangles.AddRange(Fixtures.TwitterBirdMonotoneTriangles);\n            \n            var triangles = new Triangles(mesh);\n            \n            DelaunayRefine.RefineTriangles(triangles);\n            \n            triangles.Fill(mesh.Triangles);\n            \n            Assert.AreEqual(Fixtures.TwitterBirdDelaunayRefinedTriangles, mesh.Triangles);\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d/DelaunayRefineTests.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 2da56f293abe4469afa9ac3a2a6da579\r\ntimeCreated: 1519796055"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d/FilterTests.cs",
    "content": "﻿using NUnit.Framework;\n\nnamespace SVGMeshUnity.Internals.Cdt2d\n{\n    public class FilterTests\n    {\n        private MeshData Mesh;\n        private Triangles Triangles;\n        private Filter Filter;\n        \n        [SetUp]\n        public void SetUp()\n        {\n            Mesh = new MeshData();\n            Mesh.Vertices.AddRange(Fixtures.TwitterBirdVertices);\n            Mesh.Edges.AddRange(Fixtures.TwitterBirdEdges);\n            Mesh.Triangles.AddRange(Fixtures.TwitterBirdMonotoneTriangles);\n            \n            Triangles = new Triangles(Mesh);\n            \n            var delaunay = new DelaunayRefine();\n            delaunay.WorkBufferPool = new WorkBufferPool();\n            delaunay.RefineTriangles(Triangles);\n            \n            Filter = new Filter();\n            Filter.WorkBufferPool = new WorkBufferPool();\n        }\n\n        [Test]\n        public void ExteriorFilter()\n        {\n            Filter.Target = -1;\n            Filter.Do(Triangles, Mesh.Triangles);\n            \n            Assert.AreEqual(Fixtures.TwitterBirdExteriorFilteredTriangles, Mesh.Triangles);\n        }\n\n        [Test]\n        public void InteriorFilter()\n        {\n            Filter.Target = 1;\n            Filter.Do(Triangles, Mesh.Triangles);\n            \n            Assert.AreEqual(Fixtures.TwitterBirdInteriorFilteredTriangles, Mesh.Triangles);\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d/FilterTests.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: de2f8028a7b44c28b354c0095c2b769d\r\ntimeCreated: 1519830612"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d/Fixtures.cs",
    "content": "﻿using System.Collections.Generic;\nusing UnityEngine;\n\nnamespace SVGMeshUnity.Internals.Cdt2d\n{\n    public static class Fixtures\n    {\n        public static readonly List<Vector3> TwitterBirdVertices = new List<Vector3>()\n        {\n            new Vector2(17.32109375f, 6.3678125f),\n            new Vector2(17.326406249999998f, 6.6121875f),\n            new Vector2(17.315895843505857f, 7.203846130371094f),\n            new Vector2(17.2274201965332f, 8.152161926269532f),\n            new Vector2(17.05138278198242f, 9.104024108886719f),\n            new Vector2(16.788737213134763f, 10.049890686035155f),\n            new Vector2(16.440437103271485f, 10.980219665527343f),\n            new Vector2(16.007436065673826f, 11.885469055175781f),\n            new Vector2(15.490687713623046f, 12.756096862792969f),\n            new Vector2(14.89114566040039f, 13.582561096191405f),\n            new Vector2(14.209763519287108f, 14.355319763183594f),\n            new Vector2(13.44749490356445f, 15.064830871582032f),\n            new Vector2(12.605293426513672f, 15.701552429199218f),\n            new Vector2(11.684112701416014f, 16.25594244384766f),\n            new Vector2(10.68490634155273f, 16.718458923339842f),\n            new Vector2(9.608627960205077f, 17.07955987548828f),\n            new Vector2(8.456231170654295f, 17.32970330810547f),\n            new Vector2(7.228669586181639f, 17.459347229003903f),\n            new Vector2(5.794472656249999f, 17.44705078125f),\n            new Vector2(4.259199218749998f, 17.22171484375f),\n            new Vector2(2.8029570312499983f, 16.78703515625f),\n            new Vector2(1.440933593749998f, 16.15969921875f),\n            new Vector2(1.022749999999998f, 15.802046875000002f),\n            new Vector2(1.4727499999999978f, 15.828640625000002f),\n            new Vector2(2.3566699218749982f, 15.804072265625f),\n            new Vector2(3.620744140624998f, 15.587576171875002f),\n            new Vector2(4.804052734374999f, 15.172283203125001f),\n            new Vector2(5.888501953124998f, 14.576662109375002f),\n            new Vector2(6.081598388671873f, 14.198935791015625f),\n            new Vector2(5.490656494140623f, 14.092149169921875f),\n            new Vector2(4.935298583984373f, 13.897489501953125f),\n            new Vector2(4.423247314453124f, 13.622562255859375f),\n            new Vector2(3.9622253417968736f, 13.274972900390626f),\n            new Vector2(3.5599553222656235f, 12.862326904296875f),\n            new Vector2(3.224159912109373f, 12.392229736328126f),\n            new Vector2(2.9625617675781237f, 11.872286865234376f),\n            new Vector2(3.035796874999998f, 11.624453125f),\n            new Vector2(3.390890624999998f, 11.657734375f),\n            new Vector2(3.828578124999998f, 11.653625000000002f),\n            new Vector2(4.326734374999999f, 11.587750000000002f),\n            new Vector2(4.248393310546873f, 11.452169921875f),\n            new Vector2(3.646260009765623f, 11.216861328125f),\n            new Vector2(3.0994450683593726f, 10.886537109375f),\n            new Vector2(2.6182023925781226f, 10.471416015625f),\n            new Vector2(2.212785888671873f, 9.981716796875002f),\n            new Vector2(1.8934494628906233f, 9.427658203125002f),\n            new Vector2(1.6704470214843732f, 8.819458984375f),\n            new Vector2(1.5540324707031234f, 8.167337890625003f),\n            new Vector2(1.5389999999999984f, 7.816156250000001f),\n            new Vector2(1.5389999999999984f, 7.792843750000001f),\n            new Vector2(1.9340156249999982f, 7.971484375000001f),\n            new Vector2(2.7926718749999986f, 8.211453125f),\n            new Vector2(2.885970703124998f, 7.978060546875001f),\n            new Vector2(2.2722714843749987f, 7.307259765625001f),\n            new Vector2(1.8334628906249986f, 6.502818359375001f),\n            new Vector2(1.5996386718749982f, 5.5946425781250015f),\n            new Vector2(1.6031562499999983f, 4.601390625000001f),\n            new Vector2(1.8634687499999982f, 3.647796875000002f),\n            new Vector2(2.440603515624999f, 3.632124755859376f),\n            new Vector2(3.2213105468749994f, 4.412032470703126f),\n            new Vector2(4.078470703124999f, 5.108672607421876f),\n            new Vector2(5.005427734374999f, 5.715470947265626f),\n            new Vector2(5.995525390625f, 6.225853271484377f),\n            new Vector2(7.042107421875f, 6.633245361328126f),\n            new Vector2(8.138517578125f, 6.931072998046876f),\n            new Vector2(9.278099609375f, 7.112761962890627f),\n            new Vector2(9.81984375f, 6.948375000000001f),\n            new Vector2(9.77115625f, 6.517875f),\n            new Vector2(9.784477294921874f, 5.91119482421875f),\n            new Vector2(9.934613525390624f, 5.174939941406249f),\n            new Vector2(10.220364990234375f, 4.498462402343749f),\n            new Vector2(10.626579345703124f, 3.8969262695312494f),\n            new Vector2(11.138104248046876f, 3.3854956054687486f),\n            new Vector2(11.739787353515627f, 2.979334472656249f),\n            new Vector2(12.416476318359376f, 2.69360693359375f),\n            new Vector2(13.153018798828125f, 2.5434770507812496f),\n            new Vector2(13.940962890625002f, 2.5450703125f),\n            new Vector2(14.706591796875001f, 2.7073046874999998f),\n            new Vector2(15.406548828125f, 3.0156015624999997f),\n            new Vector2(16.023302734375005f, 3.4530859375f),\n            new Vector2(16.929265625000003f, 3.5609062499999995f),\n            new Vector2(18.130296875000006f, 3.10046875f),\n            new Vector2(18.571658203125f, 3.1225078124999994f),\n            new Vector2(18.248240234375f, 3.7236796875f),\n            new Vector2(17.825212890625f, 4.253414062499999f),\n            new Vector2(17.315419921875f, 4.699335937500001f),\n            new Vector2(17.59771875f, 4.797703125000001f),\n            new Vector2(18.682656249999997f, 4.499859375000001f),\n            new Vector2(18.7959375f, 4.843265625000001f),\n            new Vector2(17.8505625f, 5.823421875f),\n            new Vector2(0.799999999999998f, 15.779f),\n            new Vector2(1.5389999999999984f, 7.7810000000000015f),\n            new Vector2(1.5389999999999984f, 7.828000000000001f),\n            new Vector2(1.5689999999999984f, 5.1110000000000015f),\n            new Vector2(1.699999999999998f, 15.832f),\n            new Vector2(2.0809999999999986f, 3.213000000000002f),\n            new Vector2(2.8619999999999983f, 11.596f),\n            new Vector2(3.2489999999999983f, 8.254000000000001f),\n            new Vector2(3.5719999999999983f, 11.662f),\n            new Vector2(4.566999999999998f, 11.531f),\n            new Vector2(6.387999999999998f, 14.217f),\n            new Vector2(6.586999999999998f, 17.476f),\n            new Vector2(9.765f, 6.297f),\n            new Vector2(9.862f, 7.158f),\n            new Vector2(13.539000000000001f, 2.5239999999999996f),\n            new Vector2(16.295f, 3.715f),\n            new Vector2(17.032f, 4.8870000000000005f),\n            new Vector2(17.316f, 6.246f),\n            new Vector2(17.326999999999998f, 6.734f),\n            new Vector2(18.692f, 2.799f),\n            new Vector2(19.2f, 4.293f)\n        };\n\n        public static readonly List<Int2> TwitterBirdEdges = new List<Int2>()\n        {\n            new Int2(0, 1),\n            new Int2(0, 107),\n            new Int2(1, 108),\n            new Int2(2, 3),\n            new Int2(2, 108),\n            new Int2(3, 4),\n            new Int2(4, 5),\n            new Int2(5, 6),\n            new Int2(6, 7),\n            new Int2(7, 8),\n            new Int2(8, 9),\n            new Int2(9, 10),\n            new Int2(10, 11),\n            new Int2(11, 12),\n            new Int2(12, 13),\n            new Int2(13, 14),\n            new Int2(14, 15),\n            new Int2(15, 16),\n            new Int2(16, 17),\n            new Int2(17, 101),\n            new Int2(18, 19),\n            new Int2(18, 101),\n            new Int2(19, 20),\n            new Int2(20, 21),\n            new Int2(21, 90),\n            new Int2(22, 23),\n            new Int2(22, 90),\n            new Int2(23, 94),\n            new Int2(24, 25),\n            new Int2(24, 94),\n            new Int2(25, 26),\n            new Int2(26, 27),\n            new Int2(27, 100),\n            new Int2(28, 29),\n            new Int2(28, 100),\n            new Int2(29, 30),\n            new Int2(30, 31),\n            new Int2(31, 32),\n            new Int2(32, 33),\n            new Int2(33, 34),\n            new Int2(34, 35),\n            new Int2(35, 96),\n            new Int2(36, 37),\n            new Int2(36, 96),\n            new Int2(37, 98),\n            new Int2(38, 39),\n            new Int2(38, 98),\n            new Int2(39, 99),\n            new Int2(40, 41),\n            new Int2(40, 99),\n            new Int2(41, 42),\n            new Int2(42, 43),\n            new Int2(43, 44),\n            new Int2(44, 45),\n            new Int2(45, 46),\n            new Int2(46, 47),\n            new Int2(47, 92),\n            new Int2(48, 49),\n            new Int2(48, 92),\n            new Int2(49, 91),\n            new Int2(50, 51),\n            new Int2(50, 91),\n            new Int2(51, 97),\n            new Int2(52, 53),\n            new Int2(52, 97),\n            new Int2(53, 54),\n            new Int2(54, 55),\n            new Int2(55, 93),\n            new Int2(56, 57),\n            new Int2(56, 93),\n            new Int2(57, 95),\n            new Int2(58, 59),\n            new Int2(58, 95),\n            new Int2(59, 60),\n            new Int2(60, 61),\n            new Int2(61, 62),\n            new Int2(62, 63),\n            new Int2(63, 64),\n            new Int2(64, 65),\n            new Int2(65, 103),\n            new Int2(66, 67),\n            new Int2(66, 103),\n            new Int2(67, 102),\n            new Int2(68, 69),\n            new Int2(68, 102),\n            new Int2(69, 70),\n            new Int2(70, 71),\n            new Int2(71, 72),\n            new Int2(72, 73),\n            new Int2(73, 74),\n            new Int2(74, 75),\n            new Int2(75, 104),\n            new Int2(76, 77),\n            new Int2(76, 104),\n            new Int2(77, 78),\n            new Int2(78, 79),\n            new Int2(79, 105),\n            new Int2(80, 81),\n            new Int2(80, 105),\n            new Int2(81, 109),\n            new Int2(82, 83),\n            new Int2(82, 109),\n            new Int2(83, 84),\n            new Int2(84, 85),\n            new Int2(85, 106),\n            new Int2(86, 87),\n            new Int2(86, 106),\n            new Int2(87, 110),\n            new Int2(88, 89),\n            new Int2(88, 110),\n            new Int2(89, 107),\n            new Int2(90, 90),\n            new Int2(91, 91),\n            new Int2(92, 92),\n            new Int2(93, 93),\n            new Int2(94, 94),\n            new Int2(95, 95),\n            new Int2(96, 96),\n            new Int2(97, 97),\n            new Int2(98, 98),\n            new Int2(99, 99),\n            new Int2(100, 100),\n            new Int2(101, 101),\n            new Int2(102, 102),\n            new Int2(103, 103),\n            new Int2(104, 104),\n            new Int2(105, 105),\n            new Int2(106, 106),\n            new Int2(107, 107),\n            new Int2(108, 108),\n            new Int2(109, 109),\n            new Int2(110, 110)\n        };\n\n        public static readonly List<int> TwitterBirdMonotoneTriangles = new List<int>()\n        {\n            90,\n            22,\n            21,\n            22,\n            90,\n            23,\n            21,\n            22,\n            23,\n            23,\n            90,\n            91,\n            23,\n            91,\n            49,\n            23,\n            49,\n            48,\n            23,\n            48,\n            92,\n            92,\n            48,\n            47,\n            48,\n            49,\n            47,\n            49,\n            91,\n            47,\n            23,\n            92,\n            47,\n            91,\n            90,\n            93,\n            91,\n            93,\n            55,\n            93,\n            90,\n            56,\n            55,\n            93,\n            56,\n            47,\n            91,\n            46,\n            23,\n            47,\n            46,\n            23,\n            46,\n            94,\n            21,\n            23,\n            94,\n            55,\n            56,\n            54,\n            91,\n            55,\n            54,\n            54,\n            56,\n            57,\n            46,\n            91,\n            45,\n            94,\n            46,\n            45,\n            91,\n            54,\n            50,\n            45,\n            91,\n            50,\n            54,\n            57,\n            95,\n            45,\n            50,\n            44,\n            94,\n            45,\n            44,\n            54,\n            95,\n            53,\n            50,\n            54,\n            53,\n            94,\n            44,\n            24,\n            21,\n            94,\n            24,\n            53,\n            95,\n            58,\n            44,\n            50,\n            43,\n            24,\n            44,\n            43,\n            50,\n            53,\n            51,\n            43,\n            50,\n            51,\n            21,\n            24,\n            20,\n            24,\n            43,\n            96,\n            53,\n            58,\n            52,\n            51,\n            53,\n            52,\n            24,\n            96,\n            35,\n            96,\n            43,\n            36,\n            35,\n            96,\n            36,\n            43,\n            51,\n            42,\n            36,\n            43,\n            42,\n            58,\n            95,\n            59,\n            52,\n            58,\n            59,\n            35,\n            36,\n            34,\n            24,\n            35,\n            34,\n            52,\n            59,\n            97,\n            51,\n            52,\n            97,\n            42,\n            51,\n            97,\n            36,\n            42,\n            37,\n            34,\n            36,\n            37,\n            34,\n            37,\n            33,\n            24,\n            34,\n            33,\n            37,\n            42,\n            98,\n            33,\n            37,\n            98,\n            24,\n            33,\n            25,\n            20,\n            24,\n            25,\n            97,\n            59,\n            41,\n            42,\n            97,\n            41,\n            98,\n            42,\n            41,\n            98,\n            41,\n            38,\n            33,\n            98,\n            38,\n            33,\n            38,\n            32,\n            25,\n            33,\n            32,\n            59,\n            95,\n            60,\n            41,\n            59,\n            60,\n            41,\n            60,\n            40,\n            38,\n            41,\n            40,\n            20,\n            25,\n            19,\n            38,\n            40,\n            39,\n            32,\n            38,\n            39,\n            32,\n            39,\n            31,\n            25,\n            32,\n            31,\n            40,\n            60,\n            99,\n            39,\n            40,\n            99,\n            31,\n            39,\n            99,\n            25,\n            31,\n            26,\n            19,\n            25,\n            26,\n            99,\n            60,\n            30,\n            31,\n            99,\n            30,\n            26,\n            31,\n            30,\n            60,\n            95,\n            61,\n            30,\n            60,\n            61,\n            30,\n            61,\n            29,\n            26,\n            30,\n            29,\n            19,\n            26,\n            18,\n            26,\n            29,\n            27,\n            18,\n            26,\n            27,\n            61,\n            95,\n            62,\n            29,\n            61,\n            62,\n            29,\n            62,\n            28,\n            27,\n            29,\n            28,\n            28,\n            62,\n            100,\n            27,\n            28,\n            100,\n            18,\n            27,\n            100,\n            100,\n            62,\n            101,\n            18,\n            100,\n            101,\n            62,\n            95,\n            63,\n            101,\n            62,\n            63,\n            101,\n            63,\n            17,\n            63,\n            95,\n            64,\n            17,\n            63,\n            64,\n            17,\n            64,\n            16,\n            64,\n            95,\n            65,\n            16,\n            64,\n            65,\n            16,\n            65,\n            15,\n            65,\n            95,\n            102,\n            65,\n            102,\n            67,\n            102,\n            95,\n            68,\n            67,\n            102,\n            68,\n            67,\n            68,\n            66,\n            65,\n            67,\n            66,\n            66,\n            68,\n            103,\n            65,\n            66,\n            103,\n            15,\n            65,\n            103,\n            68,\n            95,\n            69,\n            103,\n            68,\n            69,\n            15,\n            103,\n            69,\n            69,\n            95,\n            70,\n            15,\n            69,\n            70,\n            70,\n            95,\n            71,\n            15,\n            70,\n            71,\n            15,\n            71,\n            14,\n            71,\n            95,\n            72,\n            14,\n            71,\n            72,\n            14,\n            72,\n            13,\n            72,\n            95,\n            73,\n            13,\n            72,\n            73,\n            73,\n            95,\n            74,\n            13,\n            73,\n            74,\n            13,\n            74,\n            12,\n            74,\n            95,\n            75,\n            12,\n            74,\n            75,\n            12,\n            75,\n            11,\n            11,\n            75,\n            104,\n            11,\n            104,\n            76,\n            11,\n            76,\n            10,\n            10,\n            76,\n            77,\n            10,\n            77,\n            9,\n            9,\n            77,\n            78,\n            9,\n            78,\n            8,\n            8,\n            78,\n            7,\n            7,\n            78,\n            79,\n            7,\n            79,\n            105,\n            7,\n            105,\n            6,\n            6,\n            105,\n            5,\n            105,\n            79,\n            80,\n            79,\n            78,\n            80,\n            78,\n            77,\n            80,\n            5,\n            105,\n            80,\n            5,\n            80,\n            106,\n            5,\n            106,\n            4,\n            4,\n            106,\n            3,\n            106,\n            80,\n            85,\n            3,\n            106,\n            2,\n            2,\n            106,\n            107,\n            2,\n            107,\n            0,\n            2,\n            0,\n            1,\n            2,\n            1,\n            108,\n            106,\n            85,\n            86,\n            107,\n            106,\n            86,\n            85,\n            80,\n            84,\n            86,\n            85,\n            84,\n            107,\n            86,\n            89,\n            108,\n            1,\n            89,\n            1,\n            0,\n            89,\n            0,\n            107,\n            89,\n            2,\n            108,\n            89,\n            3,\n            2,\n            89,\n            4,\n            3,\n            89,\n            80,\n            77,\n            81,\n            77,\n            76,\n            81,\n            84,\n            80,\n            81,\n            84,\n            81,\n            83,\n            86,\n            84,\n            83,\n            83,\n            81,\n            82,\n            83,\n            82,\n            87,\n            86,\n            83,\n            87,\n            89,\n            86,\n            87,\n            81,\n            76,\n            109,\n            82,\n            81,\n            109,\n            87,\n            82,\n            109,\n            89,\n            87,\n            88,\n            4,\n            89,\n            88,\n            5,\n            4,\n            88,\n            6,\n            5,\n            88,\n            87,\n            109,\n            110,\n            88,\n            87,\n            110,\n            6,\n            88,\n            110\n        };\n\n        public static readonly List<int> TwitterBirdDelaunayRefinedTriangles = new List<int>()\n        {\n            0,\n            107,\n            89,\n            0,\n            1,\n            103,\n            0,\n            89,\n            1,\n            0,\n            103,\n            107,\n            1,\n            108,\n            103,\n            1,\n            89,\n            108,\n            2,\n            103,\n            108,\n            2,\n            3,\n            103,\n            2,\n            108,\n            89,\n            2,\n            88,\n            3,\n            2,\n            89,\n            88,\n            3,\n            4,\n            103,\n            3,\n            88,\n            4,\n            4,\n            88,\n            110,\n            4,\n            5,\n            103,\n            4,\n            110,\n            5,\n            5,\n            110,\n            6,\n            5,\n            6,\n            103,\n            6,\n            7,\n            103,\n            7,\n            8,\n            103,\n            8,\n            9,\n            103,\n            9,\n            10,\n            103,\n            10,\n            11,\n            103,\n            11,\n            12,\n            103,\n            12,\n            13,\n            100,\n            12,\n            100,\n            103,\n            13,\n            14,\n            100,\n            14,\n            15,\n            100,\n            15,\n            16,\n            100,\n            16,\n            17,\n            100,\n            17,\n            27,\n            100,\n            17,\n            101,\n            27,\n            18,\n            19,\n            26,\n            18,\n            26,\n            27,\n            18,\n            27,\n            101,\n            19,\n            20,\n            25,\n            19,\n            25,\n            26,\n            20,\n            21,\n            24,\n            20,\n            24,\n            25,\n            21,\n            90,\n            22,\n            21,\n            22,\n            23,\n            21,\n            23,\n            94,\n            21,\n            94,\n            24,\n            22,\n            34,\n            23,\n            22,\n            90,\n            34,\n            23,\n            34,\n            94,\n            24,\n            32,\n            25,\n            24,\n            33,\n            32,\n            24,\n            94,\n            33,\n            25,\n            31,\n            26,\n            25,\n            32,\n            31,\n            26,\n            31,\n            30,\n            26,\n            30,\n            29,\n            26,\n            29,\n            27,\n            27,\n            29,\n            28,\n            27,\n            28,\n            100,\n            28,\n            29,\n            99,\n            28,\n            99,\n            100,\n            29,\n            30,\n            99,\n            30,\n            31,\n            99,\n            31,\n            32,\n            99,\n            32,\n            33,\n            39,\n            32,\n            39,\n            99,\n            33,\n            34,\n            38,\n            33,\n            38,\n            39,\n            33,\n            94,\n            34,\n            34,\n            35,\n            37,\n            34,\n            98,\n            38,\n            34,\n            37,\n            98,\n            34,\n            90,\n            35,\n            35,\n            36,\n            37,\n            35,\n            96,\n            36,\n            35,\n            90,\n            96,\n            36,\n            41,\n            37,\n            36,\n            42,\n            41,\n            36,\n            96,\n            42,\n            37,\n            41,\n            98,\n            38,\n            98,\n            41,\n            38,\n            41,\n            40,\n            38,\n            40,\n            39,\n            39,\n            40,\n            99,\n            40,\n            41,\n            97,\n            40,\n            97,\n            99,\n            41,\n            42,\n            97,\n            42,\n            43,\n            97,\n            42,\n            96,\n            43,\n            43,\n            44,\n            97,\n            43,\n            96,\n            44,\n            44,\n            45,\n            51,\n            44,\n            51,\n            97,\n            44,\n            90,\n            45,\n            44,\n            96,\n            90,\n            45,\n            46,\n            51,\n            45,\n            90,\n            46,\n            46,\n            90,\n            47,\n            46,\n            50,\n            51,\n            46,\n            47,\n            50,\n            47,\n            92,\n            50,\n            47,\n            90,\n            92,\n            48,\n            50,\n            92,\n            48,\n            90,\n            49,\n            48,\n            49,\n            50,\n            48,\n            92,\n            90,\n            49,\n            90,\n            91,\n            49,\n            91,\n            50,\n            50,\n            52,\n            51,\n            50,\n            91,\n            53,\n            50,\n            53,\n            52,\n            51,\n            52,\n            97,\n            52,\n            53,\n            60,\n            52,\n            60,\n            61,\n            52,\n            61,\n            97,\n            53,\n            91,\n            54,\n            53,\n            54,\n            60,\n            54,\n            91,\n            55,\n            54,\n            55,\n            60,\n            55,\n            91,\n            93,\n            55,\n            93,\n            59,\n            55,\n            59,\n            60,\n            56,\n            93,\n            90,\n            56,\n            57,\n            58,\n            56,\n            58,\n            59,\n            56,\n            59,\n            93,\n            57,\n            95,\n            58,\n            58,\n            71,\n            59,\n            58,\n            95,\n            71,\n            59,\n            71,\n            60,\n            60,\n            70,\n            61,\n            60,\n            71,\n            70,\n            61,\n            70,\n            62,\n            61,\n            62,\n            97,\n            62,\n            69,\n            63,\n            62,\n            70,\n            69,\n            62,\n            63,\n            97,\n            63,\n            69,\n            64,\n            63,\n            99,\n            97,\n            63,\n            64,\n            99,\n            64,\n            69,\n            68,\n            64,\n            68,\n            102,\n            64,\n            102,\n            65,\n            64,\n            65,\n            99,\n            65,\n            66,\n            103,\n            65,\n            103,\n            100,\n            65,\n            67,\n            66,\n            65,\n            102,\n            67,\n            65,\n            100,\n            99,\n            66,\n            67,\n            103,\n            67,\n            102,\n            106,\n            67,\n            106,\n            103,\n            68,\n            71,\n            102,\n            68,\n            69,\n            70,\n            68,\n            70,\n            71,\n            71,\n            95,\n            72,\n            71,\n            72,\n            106,\n            71,\n            106,\n            102,\n            72,\n            95,\n            73,\n            72,\n            73,\n            75,\n            72,\n            75,\n            104,\n            72,\n            104,\n            106,\n            73,\n            95,\n            74,\n            73,\n            74,\n            75,\n            74,\n            95,\n            75,\n            76,\n            109,\n            77,\n            76,\n            106,\n            104,\n            76,\n            77,\n            106,\n            77,\n            109,\n            78,\n            77,\n            78,\n            106,\n            78,\n            109,\n            81,\n            78,\n            81,\n            80,\n            78,\n            79,\n            106,\n            78,\n            80,\n            79,\n            79,\n            105,\n            106,\n            79,\n            80,\n            105,\n            80,\n            83,\n            84,\n            80,\n            81,\n            83,\n            80,\n            85,\n            106,\n            80,\n            84,\n            85,\n            80,\n            106,\n            105,\n            81,\n            109,\n            82,\n            81,\n            82,\n            83,\n            82,\n            109,\n            110,\n            82,\n            110,\n            83,\n            83,\n            87,\n            84,\n            83,\n            110,\n            87,\n            84,\n            86,\n            85,\n            84,\n            87,\n            86,\n            85,\n            86,\n            106,\n            86,\n            88,\n            89,\n            86,\n            87,\n            88,\n            86,\n            89,\n            106,\n            87,\n            110,\n            88,\n            89,\n            107,\n            106,\n            90,\n            93,\n            91,\n            103,\n            106,\n            107\n        };\n\n        public static readonly List<int> TwitterBirdExteriorFilteredTriangles = new List<int>()\n        {\n            0,\n            1,\n            103,\n            0,\n            103,\n            107,\n            1,\n            108,\n            103,\n            2,\n            3,\n            103,\n            2,\n            103,\n            108,\n            3,\n            4,\n            103,\n            4,\n            5,\n            103,\n            5,\n            6,\n            103,\n            6,\n            7,\n            103,\n            7,\n            8,\n            103,\n            8,\n            9,\n            103,\n            9,\n            10,\n            103,\n            10,\n            11,\n            103,\n            11,\n            12,\n            103,\n            12,\n            13,\n            100,\n            12,\n            100,\n            103,\n            13,\n            14,\n            100,\n            14,\n            15,\n            100,\n            15,\n            16,\n            100,\n            16,\n            17,\n            100,\n            17,\n            27,\n            100,\n            17,\n            101,\n            27,\n            18,\n            19,\n            26,\n            18,\n            26,\n            27,\n            18,\n            27,\n            101,\n            19,\n            20,\n            25,\n            19,\n            25,\n            26,\n            20,\n            21,\n            24,\n            20,\n            24,\n            25,\n            21,\n            22,\n            23,\n            21,\n            23,\n            94,\n            21,\n            90,\n            22,\n            21,\n            94,\n            24,\n            28,\n            29,\n            99,\n            28,\n            99,\n            100,\n            29,\n            30,\n            99,\n            30,\n            31,\n            99,\n            31,\n            32,\n            99,\n            32,\n            33,\n            39,\n            32,\n            39,\n            99,\n            33,\n            34,\n            38,\n            33,\n            38,\n            39,\n            34,\n            35,\n            37,\n            34,\n            37,\n            98,\n            34,\n            98,\n            38,\n            35,\n            36,\n            37,\n            35,\n            96,\n            36,\n            40,\n            41,\n            97,\n            40,\n            97,\n            99,\n            41,\n            42,\n            97,\n            42,\n            43,\n            97,\n            43,\n            44,\n            97,\n            44,\n            45,\n            51,\n            44,\n            51,\n            97,\n            45,\n            46,\n            51,\n            46,\n            47,\n            50,\n            46,\n            50,\n            51,\n            47,\n            92,\n            50,\n            48,\n            49,\n            50,\n            48,\n            50,\n            92,\n            49,\n            91,\n            50,\n            52,\n            53,\n            60,\n            52,\n            60,\n            61,\n            52,\n            61,\n            97,\n            53,\n            54,\n            60,\n            54,\n            55,\n            60,\n            55,\n            59,\n            60,\n            55,\n            93,\n            59,\n            56,\n            57,\n            58,\n            56,\n            58,\n            59,\n            56,\n            59,\n            93,\n            57,\n            95,\n            58,\n            61,\n            62,\n            97,\n            62,\n            63,\n            97,\n            63,\n            64,\n            99,\n            63,\n            99,\n            97,\n            64,\n            65,\n            99,\n            65,\n            100,\n            99,\n            65,\n            103,\n            100,\n            66,\n            67,\n            103,\n            67,\n            102,\n            106,\n            67,\n            106,\n            103,\n            68,\n            69,\n            70,\n            68,\n            70,\n            71,\n            68,\n            71,\n            102,\n            71,\n            72,\n            106,\n            71,\n            106,\n            102,\n            72,\n            73,\n            75,\n            72,\n            75,\n            104,\n            72,\n            104,\n            106,\n            73,\n            74,\n            75,\n            76,\n            77,\n            106,\n            76,\n            106,\n            104,\n            77,\n            78,\n            106,\n            78,\n            79,\n            106,\n            79,\n            105,\n            106,\n            80,\n            81,\n            83,\n            80,\n            83,\n            84,\n            80,\n            84,\n            85,\n            80,\n            85,\n            106,\n            80,\n            106,\n            105,\n            81,\n            82,\n            83,\n            81,\n            109,\n            82,\n            86,\n            87,\n            88,\n            86,\n            88,\n            89,\n            86,\n            89,\n            106,\n            87,\n            110,\n            88,\n            89,\n            107,\n            106,\n            103,\n            106,\n            107\n        };\n\n        public static readonly List<int> TwitterBirdInteriorFilteredTriangles = new List<int>()\n        {\n            0,\n            89,\n            1,\n            0,\n            107,\n            89,\n            1,\n            89,\n            108,\n            2,\n            88,\n            3,\n            2,\n            89,\n            88,\n            2,\n            108,\n            89,\n            3,\n            88,\n            4,\n            4,\n            88,\n            110,\n            4,\n            110,\n            5,\n            5,\n            110,\n            6,\n            22,\n            34,\n            23,\n            22,\n            90,\n            34,\n            23,\n            34,\n            94,\n            24,\n            32,\n            25,\n            24,\n            33,\n            32,\n            24,\n            94,\n            33,\n            25,\n            31,\n            26,\n            25,\n            32,\n            31,\n            26,\n            29,\n            27,\n            26,\n            30,\n            29,\n            26,\n            31,\n            30,\n            27,\n            28,\n            100,\n            27,\n            29,\n            28,\n            33,\n            94,\n            34,\n            34,\n            90,\n            35,\n            35,\n            90,\n            96,\n            36,\n            41,\n            37,\n            36,\n            42,\n            41,\n            36,\n            96,\n            42,\n            37,\n            41,\n            98,\n            38,\n            40,\n            39,\n            38,\n            41,\n            40,\n            38,\n            98,\n            41,\n            39,\n            40,\n            99,\n            42,\n            96,\n            43,\n            43,\n            96,\n            44,\n            44,\n            90,\n            45,\n            44,\n            96,\n            90,\n            45,\n            90,\n            46,\n            46,\n            90,\n            47,\n            47,\n            90,\n            92,\n            48,\n            90,\n            49,\n            48,\n            92,\n            90,\n            49,\n            90,\n            91,\n            50,\n            52,\n            51,\n            50,\n            53,\n            52,\n            50,\n            91,\n            53,\n            51,\n            52,\n            97,\n            53,\n            91,\n            54,\n            54,\n            91,\n            55,\n            55,\n            91,\n            93,\n            56,\n            93,\n            90,\n            58,\n            71,\n            59,\n            58,\n            95,\n            71,\n            59,\n            71,\n            60,\n            60,\n            70,\n            61,\n            60,\n            71,\n            70,\n            61,\n            70,\n            62,\n            62,\n            69,\n            63,\n            62,\n            70,\n            69,\n            63,\n            69,\n            64,\n            64,\n            68,\n            102,\n            64,\n            69,\n            68,\n            64,\n            102,\n            65,\n            65,\n            66,\n            103,\n            65,\n            67,\n            66,\n            65,\n            102,\n            67,\n            71,\n            95,\n            72,\n            72,\n            95,\n            73,\n            73,\n            95,\n            74,\n            74,\n            95,\n            75,\n            76,\n            109,\n            77,\n            77,\n            109,\n            78,\n            78,\n            80,\n            79,\n            78,\n            81,\n            80,\n            78,\n            109,\n            81,\n            79,\n            80,\n            105,\n            82,\n            109,\n            110,\n            82,\n            110,\n            83,\n            83,\n            87,\n            84,\n            83,\n            110,\n            87,\n            84,\n            86,\n            85,\n            84,\n            87,\n            86,\n            85,\n            86,\n            106,\n            90,\n            93,\n            91\n        };\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d/Fixtures.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 8044f46957cd4d29b198131b069c5634\r\ntimeCreated: 1519737279"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d/MonotoneTriangulationTests.cs",
    "content": "﻿using NUnit.Framework;\n\nnamespace SVGMeshUnity.Internals.Cdt2d\n{\n    public class MonotoneTriangulationTests\n    {\n        private MonotoneTriangulation MonotoneTriangulation;\n\n        [SetUp]\n        public void SetUp()\n        {\n            MonotoneTriangulation = new MonotoneTriangulation();\n            MonotoneTriangulation.WorkBufferPool = new WorkBufferPool();\n        }\n        \n        [Test]\n        public void BuildTriangles()\n        {\n            var mesh = new MeshData();\n            \n            mesh.Vertices.AddRange(Fixtures.TwitterBirdVertices);\n            mesh.Edges.AddRange(Fixtures.TwitterBirdEdges);\n            \n            MonotoneTriangulation.BuildTriangles(mesh);\n            \n            Assert.AreEqual(Fixtures.TwitterBirdMonotoneTriangles, mesh.Triangles);\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d/MonotoneTriangulationTests.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 11e4b874021e450aba4a60607c20f948\r\ntimeCreated: 1519738092"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d/RobustTests.cs",
    "content": "﻿using NUnit.Framework;\r\nusing UnityEngine;\r\n\r\nnamespace SVGMeshUnity.Internals.Cdt2d\r\n{\r\n    public class RobustTests\r\n    {\r\n        [Test]\r\n        public void Orientation()\r\n        {\r\n            Assert.IsTrue(Robust.Orientation(\r\n                              new Vector2(0.1f, 0.1f),\r\n                              new Vector2(0.1f, 0.1f),\r\n                              new Vector2(0.3f, 0.7f)\r\n                          ) == 0f);\r\n\r\n            Assert.IsTrue(Robust.Orientation(\r\n                              new Vector2(0f, 0f),\r\n                              new Vector2(-1e-32f, 0f),\r\n                              new Vector2(0f, 1f)\r\n                          ) > 0f);\r\n\r\n            Assert.IsTrue(Robust.Orientation(\r\n                              new Vector2(0f, 0f),\r\n                              new Vector2(1e-32f, 1e-32f),\r\n                              new Vector2(1f, 1f)\r\n                          ) == 0f);\r\n\r\n            Assert.IsTrue(Robust.Orientation(\r\n                              new Vector2(0f, 0f),\r\n                              new Vector2(1e-32f, 0f),\r\n                              new Vector2(0f, 1f)\r\n                          ) < 0f);\r\n\r\n            var x = 1e-32f;\r\n            for (var i = 0; i < 32; ++i)\r\n            {\r\n                Assert.IsTrue(Robust.Orientation(\r\n                                  new Vector2(-x, 0f),\r\n                                  new Vector2(0f, 1f),\r\n                                  new Vector2(x, 0f)\r\n                              ) > 0f);\r\n                Assert.IsTrue(Robust.Orientation(\r\n                                  new Vector2(-x, 0f),\r\n                                  new Vector2(0f, 0f),\r\n                                  new Vector2(x, 0f)\r\n                              ) == 0f);\r\n                Assert.IsTrue(Robust.Orientation(\r\n                                  new Vector2(-x, 0f),\r\n                                  new Vector2(0f, -1f),\r\n                                  new Vector2(x, 0f)\r\n                              ) < 0f, \"x=\" + x);\r\n                Assert.IsTrue(Robust.Orientation(\r\n                                  new Vector2(0f, 1f),\r\n                                  new Vector2(0f, 0f),\r\n                                  new Vector2(x, x)\r\n                              ) < 0f, \"x=\" + x);\r\n                x *= 10f;\r\n            }\r\n        }\r\n\r\n        [Test]\r\n        public void InSphere()\r\n        {\r\n            Assert.IsTrue(Robust.InSphere(\r\n                              new Vector2(0f, -1f),\r\n                              new Vector2(1f, 0f),\r\n                              new Vector2(0f, 1f),\r\n                              new Vector2(-0.5f, 0f)) > 0f);\r\n\r\n            Assert.IsTrue(Robust.InSphere(\r\n                              new Vector2(0f, -1f),\r\n                              new Vector2(1f, 0f),\r\n                              new Vector2(0f, 1f),\r\n                              new Vector2(-1f, 0f)) == 0f);\r\n\r\n            Assert.IsTrue(Robust.InSphere(\r\n                              new Vector2(0f, -1f),\r\n                              new Vector2(1f, 0f),\r\n                              new Vector2(0f, 1f),\r\n                              new Vector2(-1.5f, 0f)) < 0f);\r\n\r\n            var x = 1e-4f;\r\n            for(var i = 0; i < 8; ++i)\r\n            {\r\n                Assert.IsTrue(Robust.InSphere(\r\n                                  new Vector2(0f, x),\r\n                                  new Vector2(-x, -x),\r\n                                  new Vector2(x, -x),\r\n                                  new Vector2(0f, 0f)) > 0f, \"sphere test:\" + x);\r\n                Assert.IsTrue(Robust.InSphere(\r\n                                  new Vector2(0f, x),\r\n                                  new Vector2(-x, -x),\r\n                                  new Vector2(x, -x),\r\n                                  new Vector2(0f, 2f * x)) < 0f, \"sphere test:\" + x);\r\n                Assert.IsTrue(Robust.InSphere(\r\n                                  new Vector2(0f, x),\r\n                                  new Vector2(-x, -x),\r\n                                  new Vector2(x, -x),\r\n                                  new Vector2(0f, x)) == 0f, \"sphere test:\" + x);\r\n                x *= 10f;\r\n            }\r\n            \r\n        }\r\n    }\r\n}"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d/RobustTests.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 2782adb8771494ca4849c1a73706a4fd\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals/Cdt2d.meta",
    "content": "fileFormatVersion: 2\nguid: e0d1a4421b8e242bab1b370176c22ec4\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/Internals.meta",
    "content": "fileFormatVersion: 2\nguid: 27d13dcbf225d42009e8381165b088aa\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/SVGDataTests.cs",
    "content": "﻿using NUnit.Framework;\n\nnamespace SVGMeshUnity\n{\n    public class SVGDataTests\n    {\n        [Test]\n        public void ParseSVGPath()\n        {\n            var svg = new SVGData();\n            svg.Path(Fixtures.TwitterBirdPathSource);\n            Assert.AreEqual(Fixtures.TwitterBirdPathCurve, svg.Dump());\n        }\n    }\n}"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/SVGDataTests.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: 9f2c3d69a8f84f93a8845392f7a77586\r\ntimeCreated: 1519737613"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/SVGMeshUnity-Testing.Editor.asmdef",
    "content": "{\n    \"name\": \"SVGMeshUnity-Testing\",\n    \"references\": [\n        \"SVGMeshUnity\"\n    ],\n    \"optionalUnityReferences\": [\n        \"TestAssemblies\"\n    ],\n    \"includePlatforms\": [\n        \"Editor\"\n    ],\n    \"excludePlatforms\": [],\n    \"allowUnsafeCode\": false\n}"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor/SVGMeshUnity-Testing.Editor.asmdef.meta",
    "content": "fileFormatVersion: 2\nguid: fb0df23c0b3714479b08eb3b7ce0daa9\nAssemblyDefinitionImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing/Editor.meta",
    "content": "fileFormatVersion: 2\nguid: 8a1a938f7014540a099c1ca8c160b21c\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/SVGMeshUnity-Testing.meta",
    "content": "fileFormatVersion: 2\nguid: c957290a655ba4a1ea4cb6597a8d3293\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/SVGMeshUnity.meta",
    "content": "fileFormatVersion: 2\nguid: 72ed3891d26754a9b970f82b29df8fa2\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Assets/Color 2.mat",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!21 &2100000\nMaterial:\n  serializedVersion: 6\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_Name: Color 2\n  m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3}\n  m_ShaderKeywords: \n  m_LightmapFlags: 4\n  m_EnableInstancingVariants: 0\n  m_DoubleSidedGI: 0\n  m_CustomRenderQueue: -1\n  stringTagMap: {}\n  disabledShaderPasses: []\n  m_SavedProperties:\n    serializedVersion: 3\n    m_TexEnvs:\n    - _BumpMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _DetailAlbedoMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _DetailMask:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _DetailNormalMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _EmissionMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _MainTex:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _MetallicGlossMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _OcclusionMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _ParallaxMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _SpecGlossMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    m_Floats:\n    - _BumpScale: 1\n    - _Cutoff: 0.5\n    - _DetailNormalMapScale: 1\n    - _DstBlend: 0\n    - _GlossMapScale: 1\n    - _Glossiness: 0.5\n    - _GlossyReflections: 1\n    - _Metallic: 0\n    - _Mode: 0\n    - _OcclusionStrength: 1\n    - _Parallax: 0.02\n    - _SampleGI: 0\n    - _SmoothnessTextureChannel: 0\n    - _SpecularHighlights: 1\n    - _SrcBlend: 1\n    - _UVSec: 0\n    - _WorkflowMode: 1\n    - _ZWrite: 1\n    m_Colors:\n    - _Color: {r: 1, g: 1, b: 1, a: 1}\n    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}\n    - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}\n"
  },
  {
    "path": "Assets/Samples/Assets/Color 2.mat.meta",
    "content": "fileFormatVersion: 2\nguid: f4224fb006eda42378257492a49fecb9\nNativeFormatImporter:\n  externalObjects: {}\n  mainObjectFileID: 2100000\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Assets/Color 3.mat",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!21 &2100000\nMaterial:\n  serializedVersion: 6\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_Name: Color 3\n  m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3}\n  m_ShaderKeywords: \n  m_LightmapFlags: 4\n  m_EnableInstancingVariants: 0\n  m_DoubleSidedGI: 0\n  m_CustomRenderQueue: -1\n  stringTagMap: {}\n  disabledShaderPasses: []\n  m_SavedProperties:\n    serializedVersion: 3\n    m_TexEnvs:\n    - _BumpMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _DetailAlbedoMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _DetailMask:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _DetailNormalMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _EmissionMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _MainTex:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _MetallicGlossMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _OcclusionMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _ParallaxMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _SpecGlossMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    m_Floats:\n    - _BumpScale: 1\n    - _Cutoff: 0.5\n    - _DetailNormalMapScale: 1\n    - _DstBlend: 0\n    - _GlossMapScale: 1\n    - _Glossiness: 0.5\n    - _GlossyReflections: 1\n    - _Metallic: 0\n    - _Mode: 0\n    - _OcclusionStrength: 1\n    - _Parallax: 0.02\n    - _SampleGI: 0\n    - _SmoothnessTextureChannel: 0\n    - _SpecularHighlights: 1\n    - _SrcBlend: 1\n    - _UVSec: 0\n    - _WorkflowMode: 1\n    - _ZWrite: 1\n    m_Colors:\n    - _Color: {r: 0.97558546, g: 1, b: 0, a: 1}\n    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}\n    - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}\n"
  },
  {
    "path": "Assets/Samples/Assets/Color 3.mat.meta",
    "content": "fileFormatVersion: 2\nguid: 8642200f3b6794d66b12b1845313a2a9\nNativeFormatImporter:\n  externalObjects: {}\n  mainObjectFileID: 2100000\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Assets/Color.mat",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!21 &2100000\nMaterial:\n  serializedVersion: 6\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_Name: Color\n  m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3}\n  m_ShaderKeywords: \n  m_LightmapFlags: 4\n  m_EnableInstancingVariants: 0\n  m_DoubleSidedGI: 0\n  m_CustomRenderQueue: -1\n  stringTagMap: {}\n  disabledShaderPasses: []\n  m_SavedProperties:\n    serializedVersion: 3\n    m_TexEnvs:\n    - _BumpMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _DetailAlbedoMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _DetailMask:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _DetailNormalMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _EmissionMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _MainTex:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _MetallicGlossMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _OcclusionMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _ParallaxMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    - _SpecGlossMap:\n        m_Texture: {fileID: 0}\n        m_Scale: {x: 1, y: 1}\n        m_Offset: {x: 0, y: 0}\n    m_Floats:\n    - _BumpScale: 1\n    - _Cutoff: 0.5\n    - _DetailNormalMapScale: 1\n    - _DstBlend: 0\n    - _GlossMapScale: 1\n    - _Glossiness: 0.5\n    - _GlossyReflections: 1\n    - _Metallic: 0\n    - _Mode: 0\n    - _OcclusionStrength: 1\n    - _Parallax: 0.02\n    - _SampleGI: 0\n    - _SmoothnessTextureChannel: 0\n    - _SpecularHighlights: 1\n    - _SrcBlend: 1\n    - _UVSec: 0\n    - _WorkflowMode: 1\n    - _ZWrite: 1\n    m_Colors:\n    - _Color: {r: 1, g: 1, b: 1, a: 1}\n    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}\n    - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}\n"
  },
  {
    "path": "Assets/Samples/Assets/Color.mat.meta",
    "content": "fileFormatVersion: 2\nguid: cb96685d2fe4044aea3b1370980913a6\nNativeFormatImporter:\n  externalObjects: {}\n  mainObjectFileID: 2100000\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Assets.meta",
    "content": "fileFormatVersion: 2\nguid: e8e37e76b886b457dac97bbc891f30fc\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Scenes/Circle.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 1526980366}\n  m_IndirectSpecularColor: {r: 0.18028334, g: 0.22571334, b: 0.3069219, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 0\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 10\n    m_AtlasSize: 512\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 256\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &282840810\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 282840814}\n  - component: {fileID: 282840813}\n  - component: {fileID: 282840811}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &282840811\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n--- !u!20 &282840813\nCamera:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 2\n  m_BackGroundColor: {r: 0.21586865, g: 0.70255923, b: 0.9339623, a: 0}\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 30\n  orthographic: 0\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 0\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 1\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &282840814\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -20}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &844179445\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 844179449}\n  - component: {fileID: 844179448}\n  - component: {fileID: 844179447}\n  - component: {fileID: 844179446}\n  m_Layer: 0\n  m_Name: SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &844179446\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 10\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &844179447\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: cb96685d2fe4044aea3b1370980913a6, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &844179448\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &844179449\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1217621047\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1217621049}\n  - component: {fileID: 1217621048}\n  m_Layer: 0\n  m_Name: Circle\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1217621048\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: a2e2ff5e6bbee4f7c8b06c855c0c8431, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Mesh: {fileID: 844179446}\n--- !u!4 &1217621049\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 844179449}\n  m_Father: {fileID: 0}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1526980365\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1526980367}\n  - component: {fileID: 1526980366}\n  m_Layer: 0\n  m_Name: Directional Light\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!108 &1526980366\nLight:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_Enabled: 1\n  serializedVersion: 8\n  m_Type: 1\n  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}\n  m_Intensity: 1\n  m_Range: 10\n  m_SpotAngle: 30\n  m_CookieSize: 10\n  m_Shadows:\n    m_Type: 2\n    m_Resolution: 2\n    m_CustomResolution: -1\n    m_Strength: 1\n    m_Bias: 0.005\n    m_NormalBias: 0.1\n    m_NearPlane: 5\n  m_Cookie: {fileID: 0}\n  m_DrawHalo: 0\n  m_Flare: {fileID: 0}\n  m_RenderMode: 0\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_Lightmapping: 1\n  m_AreaSize: {x: 1, y: 1}\n  m_BounceIntensity: 1\n  m_ColorTemperature: 6570\n  m_UseColorTemperature: 0\n  m_ShadowRadius: 0\n  m_ShadowAngle: 0\n--- !u!4 &1526980367\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}\n  m_LocalPosition: {x: 0, y: 3, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}\n"
  },
  {
    "path": "Assets/Samples/Scenes/Circle.unity.meta",
    "content": "fileFormatVersion: 2\r\nguid: 19aa2558bd51344ecb3c2827023d6b72\r\nDefaultImporter:\r\n  externalObjects: {}\r\n  userData: \r\n  assetBundleName: \r\n  assetBundleVariant: \r\n"
  },
  {
    "path": "Assets/Samples/Scenes/Cut.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 1526980366}\n  m_IndirectSpecularColor: {r: 0.18028334, g: 0.22571334, b: 0.3069219, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 0\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 10\n    m_AtlasSize: 512\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 256\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &282840810\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 282840814}\n  - component: {fileID: 282840813}\n  - component: {fileID: 282840811}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &282840811\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n--- !u!20 &282840813\nCamera:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 2\n  m_BackGroundColor: {r: 0.06674972, g: 0.70920056, b: 0.9433962, a: 0}\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 30\n  orthographic: 0\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 0\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 1\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &282840814\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -20}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &844179445\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 844179449}\n  - component: {fileID: 844179448}\n  - component: {fileID: 844179447}\n  - component: {fileID: 844179446}\n  m_Layer: 0\n  m_Name: SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 0\n--- !u!114 &844179446\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &844179447\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: cb96685d2fe4044aea3b1370980913a6, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &844179448\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &844179449\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1217621047\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1217621049}\n  - component: {fileID: 1217621048}\n  m_Layer: 0\n  m_Name: Cut\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1217621048\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: b84498ce3fe84d25938244fbf07b7494, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Prefab: {fileID: 844179445}\n  LineMesh: {fileID: 1955285918}\n--- !u!4 &1217621049\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 844179449}\n  - {fileID: 1955285917}\n  m_Father: {fileID: 0}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1526980365\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1526980367}\n  - component: {fileID: 1526980366}\n  m_Layer: 0\n  m_Name: Directional Light\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!108 &1526980366\nLight:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_Enabled: 1\n  serializedVersion: 8\n  m_Type: 1\n  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}\n  m_Intensity: 1\n  m_Range: 10\n  m_SpotAngle: 30\n  m_CookieSize: 10\n  m_Shadows:\n    m_Type: 2\n    m_Resolution: 2\n    m_CustomResolution: -1\n    m_Strength: 1\n    m_Bias: 0.005\n    m_NormalBias: 0.1\n    m_NearPlane: 5\n  m_Cookie: {fileID: 0}\n  m_DrawHalo: 0\n  m_Flare: {fileID: 0}\n  m_RenderMode: 0\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_Lightmapping: 1\n  m_AreaSize: {x: 1, y: 1}\n  m_BounceIntensity: 1\n  m_ColorTemperature: 6570\n  m_UseColorTemperature: 0\n  m_ShadowRadius: 0\n  m_ShadowAngle: 0\n--- !u!4 &1526980367\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}\n  m_LocalPosition: {x: 0, y: 3, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}\n--- !u!1 &1955285916\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1955285917}\n  - component: {fileID: 1955285920}\n  - component: {fileID: 1955285919}\n  - component: {fileID: 1955285918}\n  m_Layer: 0\n  m_Name: Line SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!4 &1955285917\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1955285916}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -0.01}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!114 &1955285918\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1955285916}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &1955285919\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1955285916}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: 8642200f3b6794d66b12b1845313a2a9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &1955285920\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1955285916}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n"
  },
  {
    "path": "Assets/Samples/Scenes/Cut.unity.meta",
    "content": "fileFormatVersion: 2\r\nguid: d86071ddf13f24391ae2ee6944d56a3a\r\nDefaultImporter:\r\n  externalObjects: {}\r\n  userData: \r\n  assetBundleName: \r\n  assetBundleVariant: \r\n"
  },
  {
    "path": "Assets/Samples/Scenes/Metaball.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 1526980366}\n  m_IndirectSpecularColor: {r: 0.18028334, g: 0.22571334, b: 0.3069219, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 0\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 10\n    m_AtlasSize: 512\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 256\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &282840810\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 282840814}\n  - component: {fileID: 282840813}\n  - component: {fileID: 282840811}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &282840811\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n--- !u!20 &282840813\nCamera:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 2\n  m_BackGroundColor: {r: 0, g: 0.7083578, b: 1, a: 0}\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 30\n  orthographic: 0\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 0\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 1\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &282840814\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -20}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &844179445\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 844179449}\n  - component: {fileID: 844179448}\n  - component: {fileID: 844179447}\n  - component: {fileID: 844179446}\n  m_Layer: 0\n  m_Name: Circle 1 SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &844179446\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &844179447\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &844179448\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &844179449\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: -3, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &846115539\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 846115543}\n  - component: {fileID: 846115542}\n  - component: {fileID: 846115541}\n  - component: {fileID: 846115540}\n  m_Layer: 0\n  m_Name: Metaball SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &846115540\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 846115539}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 0\n  Infinity: 0\n--- !u!23 &846115541\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 846115539}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &846115542\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 846115539}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &846115543\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 846115539}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -0.001}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1217621047\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1217621049}\n  - component: {fileID: 1217621048}\n  m_Layer: 0\n  m_Name: Metaball\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1217621048\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: fe7ce92f7a0454b6f9b8e855e7e2a2d3, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Circle1Mesh: {fileID: 844179446}\n  Circle2Mesh: {fileID: 1736451195}\n  MetaballMesh: {fileID: 846115540}\n--- !u!4 &1217621049\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 844179449}\n  - {fileID: 1736451198}\n  - {fileID: 846115543}\n  m_Father: {fileID: 0}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1526980365\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1526980367}\n  - component: {fileID: 1526980366}\n  m_Layer: 0\n  m_Name: Directional Light\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!108 &1526980366\nLight:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_Enabled: 1\n  serializedVersion: 8\n  m_Type: 1\n  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}\n  m_Intensity: 1\n  m_Range: 10\n  m_SpotAngle: 30\n  m_CookieSize: 10\n  m_Shadows:\n    m_Type: 2\n    m_Resolution: 2\n    m_CustomResolution: -1\n    m_Strength: 1\n    m_Bias: 0.005\n    m_NormalBias: 0.1\n    m_NearPlane: 5\n  m_Cookie: {fileID: 0}\n  m_DrawHalo: 0\n  m_Flare: {fileID: 0}\n  m_RenderMode: 0\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_Lightmapping: 1\n  m_AreaSize: {x: 1, y: 1}\n  m_BounceIntensity: 1\n  m_ColorTemperature: 6570\n  m_UseColorTemperature: 0\n  m_ShadowRadius: 0\n  m_ShadowAngle: 0\n--- !u!4 &1526980367\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}\n  m_LocalPosition: {x: 0, y: 10, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}\n--- !u!1 &1736451194\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1736451198}\n  - component: {fileID: 1736451197}\n  - component: {fileID: 1736451196}\n  - component: {fileID: 1736451195}\n  m_Layer: 0\n  m_Name: Circle 2 SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1736451195\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1736451194}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &1736451196\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1736451194}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &1736451197\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1736451194}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &1736451198\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1736451194}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n"
  },
  {
    "path": "Assets/Samples/Scenes/Metaball.unity.meta",
    "content": "fileFormatVersion: 2\r\nguid: 4432038db77764231a447121c5c89763\r\nDefaultImporter:\r\n  externalObjects: {}\r\n  userData: \r\n  assetBundleName: \r\n  assetBundleVariant: \r\n"
  },
  {
    "path": "Assets/Samples/Scenes/Move.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 1526980366}\n  m_IndirectSpecularColor: {r: 0.18028334, g: 0.22571334, b: 0.3069219, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 0\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 10\n    m_AtlasSize: 512\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 256\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &7448486\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 7448490}\n  - component: {fileID: 7448489}\n  - component: {fileID: 7448488}\n  - component: {fileID: 7448487}\n  m_Layer: 0\n  m_Name: Tail SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &7448487\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 7448486}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &7448488\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 7448486}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &7448489\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 7448486}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &7448490\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 7448486}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1786584329}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &158464436\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 158464440}\n  - component: {fileID: 158464439}\n  - component: {fileID: 158464438}\n  - component: {fileID: 158464437}\n  m_Layer: 0\n  m_Name: Head SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &158464437\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 158464436}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &158464438\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 158464436}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &158464439\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 158464436}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &158464440\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 158464436}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1603712451}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &282840810\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 282840814}\n  - component: {fileID: 282840813}\n  - component: {fileID: 282840811}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &282840811\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n--- !u!20 &282840813\nCamera:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 2\n  m_BackGroundColor: {r: 0, g: 0.7083578, b: 1, a: 0}\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 30\n  orthographic: 0\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 0\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 1\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &282840814\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -20}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &299379088\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 299379092}\n  - component: {fileID: 299379091}\n  - component: {fileID: 299379090}\n  - component: {fileID: 299379089}\n  m_Layer: 0\n  m_Name: Body SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &299379089\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 299379088}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 10\n  Delaunay: 0\n  Interior: 1\n  Exterior: 0\n  Infinity: 0\n--- !u!23 &299379090\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 299379088}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &299379091\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 299379088}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &299379092\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 299379088}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -0.001}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1603712451}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &844179445\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 844179449}\n  - component: {fileID: 844179448}\n  - component: {fileID: 844179447}\n  - component: {fileID: 844179446}\n  m_Layer: 0\n  m_Name: Head SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &844179446\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &844179447\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &844179448\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &844179449\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &846115539\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 846115543}\n  - component: {fileID: 846115542}\n  - component: {fileID: 846115541}\n  - component: {fileID: 846115540}\n  m_Layer: 0\n  m_Name: Body SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &846115540\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 846115539}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 10\n  Delaunay: 0\n  Interior: 1\n  Exterior: 0\n  Infinity: 0\n--- !u!23 &846115541\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 846115539}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &846115542\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 846115539}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &846115543\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 846115539}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -0.001}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1079791005\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1079791009}\n  - component: {fileID: 1079791008}\n  - component: {fileID: 1079791007}\n  - component: {fileID: 1079791006}\n  m_Layer: 0\n  m_Name: Tail SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1079791006\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1079791005}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &1079791007\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1079791005}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &1079791008\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1079791005}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &1079791009\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1079791005}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1603712451}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1217621047\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1217621049}\n  - component: {fileID: 1217621048}\n  m_Layer: 0\n  m_Name: Move\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1217621048\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: ee73e1f19ad0d455bb6879994b42733b, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  R: 0.5\n  IntervalRate: 1\n  HeadMesh: {fileID: 844179446}\n  TailMesh: {fileID: 1736451195}\n  BodyMesh: {fileID: 846115540}\n--- !u!4 &1217621049\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 844179449}\n  - {fileID: 1736451198}\n  - {fileID: 846115543}\n  m_Father: {fileID: 0}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1431270879\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1431270883}\n  - component: {fileID: 1431270882}\n  - component: {fileID: 1431270881}\n  - component: {fileID: 1431270880}\n  m_Layer: 0\n  m_Name: Head SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1431270880\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1431270879}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &1431270881\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1431270879}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &1431270882\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1431270879}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &1431270883\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1431270879}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1786584329}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1453577286\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1453577290}\n  - component: {fileID: 1453577289}\n  - component: {fileID: 1453577288}\n  - component: {fileID: 1453577287}\n  m_Layer: 0\n  m_Name: Body SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1453577287\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1453577286}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 10\n  Delaunay: 0\n  Interior: 1\n  Exterior: 0\n  Infinity: 0\n--- !u!23 &1453577288\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1453577286}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &1453577289\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1453577286}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &1453577290\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1453577286}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -0.001}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1786584329}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1526980365\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1526980367}\n  - component: {fileID: 1526980366}\n  m_Layer: 0\n  m_Name: Directional Light\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!108 &1526980366\nLight:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_Enabled: 1\n  serializedVersion: 8\n  m_Type: 1\n  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}\n  m_Intensity: 1\n  m_Range: 10\n  m_SpotAngle: 30\n  m_CookieSize: 10\n  m_Shadows:\n    m_Type: 2\n    m_Resolution: 2\n    m_CustomResolution: -1\n    m_Strength: 1\n    m_Bias: 0.005\n    m_NormalBias: 0.1\n    m_NearPlane: 5\n  m_Cookie: {fileID: 0}\n  m_DrawHalo: 0\n  m_Flare: {fileID: 0}\n  m_RenderMode: 0\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_Lightmapping: 1\n  m_AreaSize: {x: 1, y: 1}\n  m_BounceIntensity: 1\n  m_ColorTemperature: 6570\n  m_UseColorTemperature: 0\n  m_ShadowRadius: 0\n  m_ShadowAngle: 0\n--- !u!4 &1526980367\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}\n  m_LocalPosition: {x: 0, y: 3, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}\n--- !u!1 &1603712449\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1603712451}\n  - component: {fileID: 1603712450}\n  m_Layer: 0\n  m_Name: Move\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1603712450\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1603712449}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: ee73e1f19ad0d455bb6879994b42733b, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  R: 0.190962\n  IntervalRate: 0.6666667\n  HeadMesh: {fileID: 158464437}\n  TailMesh: {fileID: 1079791006}\n  BodyMesh: {fileID: 299379089}\n--- !u!4 &1603712451\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1603712449}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -0.002}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 158464440}\n  - {fileID: 1079791009}\n  - {fileID: 299379092}\n  m_Father: {fileID: 0}\n  m_RootOrder: 4\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1736451194\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1736451198}\n  - component: {fileID: 1736451197}\n  - component: {fileID: 1736451196}\n  - component: {fileID: 1736451195}\n  m_Layer: 0\n  m_Name: Tail SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1736451195\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1736451194}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 1\n  Infinity: 0\n--- !u!23 &1736451196\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1736451194}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: f4224fb006eda42378257492a49fecb9, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &1736451197\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1736451194}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &1736451198\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1736451194}\n  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1786584327\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1786584329}\n  - component: {fileID: 1786584328}\n  m_Layer: 0\n  m_Name: Move\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1786584328\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1786584327}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: ee73e1f19ad0d455bb6879994b42733b, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  R: 0.190962\n  IntervalRate: 0.6666667\n  HeadMesh: {fileID: 1431270880}\n  TailMesh: {fileID: 7448487}\n  BodyMesh: {fileID: 1453577287}\n--- !u!4 &1786584329\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1786584327}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -0.001}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 1431270883}\n  - {fileID: 7448490}\n  - {fileID: 1453577290}\n  m_Father: {fileID: 0}\n  m_RootOrder: 3\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n"
  },
  {
    "path": "Assets/Samples/Scenes/Move.unity.meta",
    "content": "fileFormatVersion: 2\r\nguid: f085850555e714718a443257ddb693eb\r\nDefaultImporter:\r\n  externalObjects: {}\r\n  userData: \r\n  assetBundleName: \r\n  assetBundleVariant: \r\n"
  },
  {
    "path": "Assets/Samples/Scenes/ScriptedCurves.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 1526980366}\n  m_IndirectSpecularColor: {r: 0.18028334, g: 0.22571334, b: 0.3069219, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 0\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 10\n    m_AtlasSize: 512\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 256\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &282840810\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 282840814}\n  - component: {fileID: 282840813}\n  - component: {fileID: 282840811}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &282840811\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n--- !u!20 &282840813\nCamera:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 2\n  m_BackGroundColor: {r: 0.21586865, g: 0.70255923, b: 0.9339623, a: 0}\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 30\n  orthographic: 0\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 0\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 1\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &282840814\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -20}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &844179445\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 844179449}\n  - component: {fileID: 844179448}\n  - component: {fileID: 844179447}\n  - component: {fileID: 844179446}\n  m_Layer: 0\n  m_Name: SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &844179446\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 20\n  Delaunay: 0\n  Interior: 1\n  Exterior: 0\n  Infinity: 0\n--- !u!23 &844179447\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: cb96685d2fe4044aea3b1370980913a6, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &844179448\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &844179449\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1217621047\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1217621049}\n  - component: {fileID: 1217621048}\n  m_Layer: 0\n  m_Name: Scripted Curves\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1217621048\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: e367ad552ec3e49d6b721365f4fb2f1c, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Mesh: {fileID: 844179446}\n--- !u!4 &1217621049\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 844179449}\n  m_Father: {fileID: 0}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1526980365\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1526980367}\n  - component: {fileID: 1526980366}\n  m_Layer: 0\n  m_Name: Directional Light\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!108 &1526980366\nLight:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_Enabled: 1\n  serializedVersion: 8\n  m_Type: 1\n  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}\n  m_Intensity: 1\n  m_Range: 10\n  m_SpotAngle: 30\n  m_CookieSize: 10\n  m_Shadows:\n    m_Type: 2\n    m_Resolution: 2\n    m_CustomResolution: -1\n    m_Strength: 1\n    m_Bias: 0.005\n    m_NormalBias: 0.1\n    m_NearPlane: 5\n  m_Cookie: {fileID: 0}\n  m_DrawHalo: 0\n  m_Flare: {fileID: 0}\n  m_RenderMode: 0\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_Lightmapping: 1\n  m_AreaSize: {x: 1, y: 1}\n  m_BounceIntensity: 1\n  m_ColorTemperature: 6570\n  m_UseColorTemperature: 0\n  m_ShadowRadius: 0\n  m_ShadowAngle: 0\n--- !u!4 &1526980367\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}\n  m_LocalPosition: {x: 0, y: 3, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}\n"
  },
  {
    "path": "Assets/Samples/Scenes/ScriptedCurves.unity.meta",
    "content": "fileFormatVersion: 2\r\nguid: 0d972eba989374d6aa9f7085a4b06c2a\r\nDefaultImporter:\r\n  externalObjects: {}\r\n  userData: \r\n  assetBundleName: \r\n  assetBundleVariant: \r\n"
  },
  {
    "path": "Assets/Samples/Scenes/Simple.unity",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!29 &1\nOcclusionCullingSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 2\n  m_OcclusionBakeSettings:\n    smallestOccluder: 5\n    smallestHole: 0.25\n    backfaceThreshold: 100\n  m_SceneGUID: 00000000000000000000000000000000\n  m_OcclusionCullingData: {fileID: 0}\n--- !u!104 &2\nRenderSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 9\n  m_Fog: 0\n  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}\n  m_FogMode: 3\n  m_FogDensity: 0.01\n  m_LinearFogStart: 0\n  m_LinearFogEnd: 300\n  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}\n  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}\n  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}\n  m_AmbientIntensity: 1\n  m_AmbientMode: 0\n  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}\n  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}\n  m_HaloStrength: 0.5\n  m_FlareStrength: 1\n  m_FlareFadeSpeed: 3\n  m_HaloTexture: {fileID: 0}\n  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}\n  m_DefaultReflectionMode: 0\n  m_DefaultReflectionResolution: 128\n  m_ReflectionBounces: 1\n  m_ReflectionIntensity: 1\n  m_CustomReflection: {fileID: 0}\n  m_Sun: {fileID: 1526980366}\n  m_IndirectSpecularColor: {r: 0.18028334, g: 0.22571334, b: 0.3069219, a: 1}\n  m_UseRadianceAmbientProbe: 0\n--- !u!157 &3\nLightmapSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 11\n  m_GIWorkflowMode: 0\n  m_GISettings:\n    serializedVersion: 2\n    m_BounceScale: 1\n    m_IndirectOutputScale: 1\n    m_AlbedoBoost: 1\n    m_TemporalCoherenceThreshold: 1\n    m_EnvironmentLightingMode: 0\n    m_EnableBakedLightmaps: 1\n    m_EnableRealtimeLightmaps: 0\n  m_LightmapEditorSettings:\n    serializedVersion: 10\n    m_Resolution: 2\n    m_BakeResolution: 10\n    m_AtlasSize: 512\n    m_AO: 0\n    m_AOMaxDistance: 1\n    m_CompAOExponent: 1\n    m_CompAOExponentDirect: 0\n    m_Padding: 2\n    m_LightmapParameters: {fileID: 0}\n    m_LightmapsBakeMode: 1\n    m_TextureCompression: 1\n    m_FinalGather: 0\n    m_FinalGatherFiltering: 1\n    m_FinalGatherRayCount: 256\n    m_ReflectionCompression: 2\n    m_MixedBakeMode: 2\n    m_BakeBackend: 1\n    m_PVRSampling: 1\n    m_PVRDirectSampleCount: 32\n    m_PVRSampleCount: 256\n    m_PVRBounces: 2\n    m_PVRFilterTypeDirect: 0\n    m_PVRFilterTypeIndirect: 0\n    m_PVRFilterTypeAO: 0\n    m_PVRFilteringMode: 1\n    m_PVRCulling: 1\n    m_PVRFilteringGaussRadiusDirect: 1\n    m_PVRFilteringGaussRadiusIndirect: 5\n    m_PVRFilteringGaussRadiusAO: 2\n    m_PVRFilteringAtrousPositionSigmaDirect: 0.5\n    m_PVRFilteringAtrousPositionSigmaIndirect: 2\n    m_PVRFilteringAtrousPositionSigmaAO: 1\n    m_ShowResolutionOverlay: 1\n  m_LightingDataAsset: {fileID: 0}\n  m_UseShadowmask: 1\n--- !u!196 &4\nNavMeshSettings:\n  serializedVersion: 2\n  m_ObjectHideFlags: 0\n  m_BuildSettings:\n    serializedVersion: 2\n    agentTypeID: 0\n    agentRadius: 0.5\n    agentHeight: 2\n    agentSlope: 45\n    agentClimb: 0.4\n    ledgeDropHeight: 0\n    maxJumpAcrossDistance: 0\n    minRegionArea: 2\n    manualCellSize: 0\n    cellSize: 0.16666667\n    manualTileSize: 0\n    tileSize: 256\n    accuratePlacement: 0\n    debug:\n      m_Flags: 0\n  m_NavMeshData: {fileID: 0}\n--- !u!1 &282840810\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 282840814}\n  - component: {fileID: 282840813}\n  - component: {fileID: 282840811}\n  m_Layer: 0\n  m_Name: Main Camera\n  m_TagString: MainCamera\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!81 &282840811\nAudioListener:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n--- !u!20 &282840813\nCamera:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_Enabled: 1\n  serializedVersion: 2\n  m_ClearFlags: 2\n  m_BackGroundColor: {r: 0.21586865, g: 0.70255923, b: 0.9339623, a: 0}\n  m_NormalizedViewPortRect:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  near clip plane: 0.3\n  far clip plane: 1000\n  field of view: 30\n  orthographic: 0\n  orthographic size: 5\n  m_Depth: -1\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_RenderingPath: -1\n  m_TargetTexture: {fileID: 0}\n  m_TargetDisplay: 0\n  m_TargetEye: 3\n  m_HDR: 1\n  m_AllowMSAA: 0\n  m_AllowDynamicResolution: 0\n  m_ForceIntoRT: 1\n  m_OcclusionCulling: 1\n  m_StereoConvergence: 10\n  m_StereoSeparation: 0.022\n--- !u!4 &282840814\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 282840810}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: -50}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &844179445\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 844179449}\n  - component: {fileID: 844179448}\n  - component: {fileID: 844179447}\n  - component: {fileID: 844179446}\n  m_Layer: 0\n  m_Name: SVG Renderer\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &844179446\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 3646afd5fb564c6b914c04b46d4417c8, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Scale: 10\n  Delaunay: 0\n  Interior: 1\n  Exterior: 0\n  Infinity: 0\n--- !u!23 &844179447\nMeshRenderer:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Enabled: 1\n  m_CastShadows: 1\n  m_ReceiveShadows: 1\n  m_DynamicOccludee: 1\n  m_MotionVectors: 1\n  m_LightProbeUsage: 1\n  m_ReflectionProbeUsage: 1\n  m_RenderingLayerMask: 4294967295\n  m_Materials:\n  - {fileID: 2100000, guid: cb96685d2fe4044aea3b1370980913a6, type: 2}\n  m_StaticBatchInfo:\n    firstSubMesh: 0\n    subMeshCount: 0\n  m_StaticBatchRoot: {fileID: 0}\n  m_ProbeAnchor: {fileID: 0}\n  m_LightProbeVolumeOverride: {fileID: 0}\n  m_ScaleInLightmap: 1\n  m_PreserveUVs: 0\n  m_IgnoreNormalsForChartDetection: 0\n  m_ImportantGI: 0\n  m_StitchLightmapSeams: 0\n  m_SelectedEditorRenderState: 3\n  m_MinimumChartSize: 4\n  m_AutoUVMaxDistance: 0.5\n  m_AutoUVMaxAngle: 89\n  m_LightmapParameters: {fileID: 0}\n  m_SortingLayerID: 0\n  m_SortingLayer: 0\n  m_SortingOrder: 0\n--- !u!33 &844179448\nMeshFilter:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}\n--- !u!4 &844179449\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 844179445}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: -9, y: 9, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 1217621049}\n  m_RootOrder: 0\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1217621047\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1217621049}\n  - component: {fileID: 1217621048}\n  m_Layer: 0\n  m_Name: Simple\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!114 &1217621048\nMonoBehaviour:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_Enabled: 1\n  m_EditorHideFlags: 0\n  m_Script: {fileID: 11500000, guid: 8365665d205cd4aa0ab4bac914001458, type: 3}\n  m_Name: \n  m_EditorClassIdentifier: \n  Mesh: {fileID: 844179446}\n--- !u!4 &1217621049\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1217621047}\n  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}\n  m_LocalPosition: {x: 0, y: 0, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children:\n  - {fileID: 844179449}\n  m_Father: {fileID: 0}\n  m_RootOrder: 2\n  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}\n--- !u!1 &1526980365\nGameObject:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  serializedVersion: 5\n  m_Component:\n  - component: {fileID: 1526980367}\n  - component: {fileID: 1526980366}\n  m_Layer: 0\n  m_Name: Directional Light\n  m_TagString: Untagged\n  m_Icon: {fileID: 0}\n  m_NavMeshLayer: 0\n  m_StaticEditorFlags: 0\n  m_IsActive: 1\n--- !u!108 &1526980366\nLight:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_Enabled: 1\n  serializedVersion: 8\n  m_Type: 1\n  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}\n  m_Intensity: 1\n  m_Range: 10\n  m_SpotAngle: 30\n  m_CookieSize: 10\n  m_Shadows:\n    m_Type: 2\n    m_Resolution: 2\n    m_CustomResolution: -1\n    m_Strength: 1\n    m_Bias: 0.005\n    m_NormalBias: 0.1\n    m_NearPlane: 5\n  m_Cookie: {fileID: 0}\n  m_DrawHalo: 0\n  m_Flare: {fileID: 0}\n  m_RenderMode: 0\n  m_CullingMask:\n    serializedVersion: 2\n    m_Bits: 4294967295\n  m_Lightmapping: 1\n  m_AreaSize: {x: 1, y: 1}\n  m_BounceIntensity: 1\n  m_ColorTemperature: 6570\n  m_UseColorTemperature: 0\n  m_ShadowRadius: 0\n  m_ShadowAngle: 0\n--- !u!4 &1526980367\nTransform:\n  m_ObjectHideFlags: 0\n  m_PrefabParentObject: {fileID: 0}\n  m_PrefabInternal: {fileID: 0}\n  m_GameObject: {fileID: 1526980365}\n  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}\n  m_LocalPosition: {x: 0, y: 3, z: 0}\n  m_LocalScale: {x: 1, y: 1, z: 1}\n  m_Children: []\n  m_Father: {fileID: 0}\n  m_RootOrder: 1\n  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}\n"
  },
  {
    "path": "Assets/Samples/Scenes/Simple.unity.meta",
    "content": "fileFormatVersion: 2\r\nguid: 99c9720ab356a0642a771bea13969a05\r\nDefaultImporter:\r\n  externalObjects: {}\r\n  userData: \r\n  assetBundleName: \r\n  assetBundleVariant: \r\n"
  },
  {
    "path": "Assets/Samples/Scenes.meta",
    "content": "fileFormatVersion: 2\nguid: e5b34f571e4134002a9b28c72cc16d5c\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Scripts/Circle.cs",
    "content": "﻿using SVGMeshUnity;\nusing UnityEngine;\n\npublic class Circle : MonoBehaviour\n{\n    [SerializeField] private SVGMesh Mesh;\n\n    private SVGData SVG;\n\n    void Start()\n    {\n        SVG = new SVGData();\n    }\n\n    void Update()\n    {\n        SVG.Clear();\n\n        for (var i = 0; i < 4; ++i)\n        {\n            var angle0 = Mathf.PI * 0.5f * (i + 0);\n            var angle1 = Mathf.PI * 0.5f * (i + 1);\n\n            var r = 3f;\n            var x0 = Mathf.Cos(angle0) * r;\n            var y0 = Mathf.Sin(angle0) * r;\n            var x1 = Mathf.Cos(angle1) * r;\n            var y1 = Mathf.Sin(angle1) * r;\n\n            var a = r * (4f / 3f) * Mathf.Tan((angle1 - angle0) / 4f);\n            var inAngle = angle0 + Mathf.PI * 0.5f;\n            var inX = x0 + Mathf.Cos(inAngle) * a;\n            var inY = y0 + Mathf.Sin(inAngle) * a;\n            var outAngle = angle1 - Mathf.PI * 0.5f;\n            var outX = x1 + Mathf.Cos(outAngle) * a;\n            var outY = y1 + Mathf.Sin(outAngle) * a;\n\n            if (i == 0)\n            {\n                SVG.Move(x0, y0);\n            }\n            \n            SVG.Curve(inX, inY, outX, outY, x1, y1);\n        }\n        \n        Mesh.Fill(SVG);\n    }\n}"
  },
  {
    "path": "Assets/Samples/Scripts/Circle.cs.meta",
    "content": "fileFormatVersion: 2\nguid: a2e2ff5e6bbee4f7c8b06c855c0c8431\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Scripts/Cut.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing SVGMeshUnity;\nusing UnityEngine;\nusing Random = UnityEngine.Random;\n\npublic class Cut : MonoBehaviour\n{\n    class Rect : MonoBehaviour\n    {\n        public Vector2 A;\n        public Vector2 B;\n        public Vector2 C;\n        public Vector2 D;\n\n        public Vector2 PrevA;\n        public Vector2 PrevB;\n        public Vector2 PrevC;\n        public Vector2 PrevD;\n\n        public Vector4 R;\n        \n        public Vector2 Velocity;\n\n        public Func<Action<Rect>, Rect> NewRect;\n\n        private SVGData SVG;\n        private SVGMesh Mesh;\n\n        void Start()\n        {\n            SVG = new SVGData();\n            Mesh = GetComponent<SVGMesh>();\n\n            PrevA = A;\n            PrevB = B;\n            PrevC = C;\n            PrevD = D;\n            \n            Render();\n        }\n\n        void Update()\n        {\n            Update(Time.deltaTime);\n            Render();\n        }\n\n        private void Update(float dt)\n        {\n            R = Vector4.Lerp(Vector4.one * 0.6f, R, Mathf.Exp(-0.5f * dt));\n\n            PrevA = A;\n            PrevB = B;\n            PrevC = C;\n            PrevD = D;\n\n            A += Velocity;\n            B += Velocity;\n            C += Velocity;\n            D += Velocity;\n\n            Velocity = Vector2.Lerp(Vector2.zero, Velocity, Mathf.Exp(-5f * dt));\n        }\n\n        private void Render()\n        {\n            SVG.Clear();\n            Draw(SVG);\n            Mesh.Fill(SVG);\n        }\n\n        private void Draw(SVGData svg)\n        {\n            DrawR(svg, A, D, B, R.x, true);\n            DrawR(svg, B, A, C, R.y);\n            DrawR(svg, C, B, D, R.z);\n            DrawR(svg, D, C, A, R.w);\n        }\n        \n        private void DrawR(SVGData svg, Vector2 p, Vector2 pPrev, Vector2 pNext, float r, bool first = false)\n        {\n            var angle0 = Mathf.Atan2(p.y - pNext.y, p.x - pNext.x);\n            var angle1 = Mathf.Atan2(p.y - pPrev.y, p.x - pPrev.x);\n            \n            if (angle0 > angle1)\n            {\n                angle0 = angle0 - Mathf.PI * 2f;\n            }\n\n            var angleBetween = Mathf.Lerp(angle0, angle1, 0.5f);\n\n            var cx = p.x - Mathf.Cos(angleBetween) * r * Mathf.Sqrt(2f);\n            var cy = p.y - Mathf.Sin(angleBetween) * r * Mathf.Sqrt(2f);\n\n            var x0 = cx + Mathf.Cos(angle0) * r;\n            var y0 = cy + Mathf.Sin(angle0) * r;\n            var x1 = cx + Mathf.Cos(angle1) * r;\n            var y1 = cy + Mathf.Sin(angle1) * r;\n\n            var a = r * (4f / 3f) * Mathf.Tan((angle1 - angle0) / 4f);\n            var inAngle = angle0 + Mathf.PI * 0.5f;\n            var inX = x0 + Mathf.Cos(inAngle) * a;\n            var inY = y0 + Mathf.Sin(inAngle) * a;\n            var outAngle = angle1 - Mathf.PI * 0.5f;\n            var outX = x1 + Mathf.Cos(outAngle) * a;\n            var outY = y1 + Mathf.Sin(outAngle) * a;\n\n            if (first)\n            {\n                svg.Move(x0, y0);\n            }\n            else\n            {\n                svg.Line(x0, y0);\n            }\n        \n            svg.Curve(inX, inY, outX, outY, x1, y1);\n        }\n\n        public void Split(Vector2 p1, Vector2 p2, List<Rect> rects)\n        {\n            var ab = GetIntersection(p1, p2, A, B);\n            var bc = GetIntersection(p1, p2, B, C);\n            var cd = GetIntersection(p1, p2, C, D);\n            var da = GetIntersection(p1, p2, D, A);\n\n            var vel = Random.Range(0.001f, 0.002f) * 6f;\n            var vel2 = Random.Range(0.006f, 0.007f) * 6f;\n            \n            if (ab != null && cd != null)\n            {\n                rects.Add(NewRect(r =>\n                {\n                    r.A = A;\n                    r.B = ab.Value;\n                    r.C = cd.Value;\n                    r.D = D;\n                    r.R = new Vector4(R.x, 0f, 0f, R.w);\n                    r.Velocity = Velocity + new Vector2(vel, vel2);\n                }));\n                rects.Add(NewRect(r =>\n                {\n                    r.A = ab.Value;\n                    r.B = B;\n                    r.C = C;\n                    r.D = cd.Value;\n                    r.R = new Vector4(0f, R.y, R.z, 0f);\n                    r.Velocity = Velocity - new Vector2(vel, vel2);\n                }));\n                Destroy(gameObject);\n            }\n\n            if (bc != null && da != null)\n            {\n                rects.Remove(this);\n                rects.Add(NewRect(r =>\n                {\n                    r.A = A;\n                    r.B = B;\n                    r.C = bc.Value;\n                    r.D = da.Value;\n                    r.R = new Vector4(R.x, R.y, 0f, 0f);\n                    r.Velocity = Velocity + new Vector2(vel2, vel);\n                }));\n                rects.Add(NewRect(r =>\n                {\n                    r.A = da.Value;\n                    r.B = bc.Value;\n                    r.C = C;\n                    r.D = D;\n                    r.R = new Vector4(0f, 0f, R.z, R.w);\n                    r.Velocity = Velocity - new Vector2(vel2, vel);\n                }));\n                Destroy(gameObject);\n            }\n        }\n\n        private Vector2? GetIntersection(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4)\n        {\n            var d = (p2.x - p1.x) * (p4.y - p3.y) - (p2.y - p1.y) * (p4.x - p3.x);\n            if (d == 0f)\n            {\n                return null;\n            }\n\n            var u = ((p3.x - p1.x) * (p4.y - p3.y) - (p3.y - p1.y) * (p4.x - p3.x)) / d;\n            var v = ((p3.x - p1.x) * (p2.y - p1.y) - (p3.y - p1.y) * (p2.x - p1.x)) / d;\n            if (u < 0.0f || u > 1.0f)\n            {\n                return null;\n            }\n            if (v < 0.0f || v > 1.0f)\n            {\n                return null;\n            }\n\n            return Vector2.Lerp(p1, p2, u);\n        }\n\n        public bool HitTest(Rect other)\n        {\n            var vel = 0.01f;\n            \n            if (IsCollided(A, B, other))\n            {\n                Velocity += Vector2.down * vel;\n                other.Velocity += Vector2.up * vel;\n                return true;\n            }\n\n            if (IsCollided(B, C, other))\n            {\n                Velocity += Vector2.right * vel;\n                other.Velocity += Vector2.left * vel;\n                return true;\n            }\n\n            if (IsCollided(C, D, other))\n            {\n                Velocity += Vector2.up * vel;\n                other.Velocity += Vector2.down * vel;\n                return true;\n            }\n\n            if (IsCollided(D, A, other))\n            {\n                Velocity += Vector2.left * vel;\n                other.Velocity += Vector2.right * vel;\n                return true;\n            }\n\n            return false;\n        }\n\n        private bool IsCollided(Vector2 p1, Vector2 p2, Rect other)\n        {\n            return\n                GetIntersection(p1, p2, other.A, other.PrevA) != null ||\n                GetIntersection(p1, p2, other.B, other.PrevB) != null ||\n                GetIntersection(p1, p2, other.C, other.PrevC) != null ||\n                GetIntersection(p1, p2, other.D, other.PrevD) != null;\n        }\n    }\n\n    [SerializeField] private GameObject Prefab;\n    [SerializeField] private SVGMesh LineMesh;\n\n    private List<Rect> Rects = new List<Rect>();\n    private SVGData LineSVG;\n    private Vector2 DragStart;\n    private bool IsDragging;\n\n    void Start()\n    {\n        Rects.Add(NewRect(r =>\n        {\n            r.A = new Vector2(3f, 3f);\n            r.B = new Vector2(-3f, 3f);\n            r.C = new Vector2(-3f, -3f);\n            r.D = new Vector2(3f, -3f);\n        }));\n        \n        LineSVG = new SVGData();\n    }\n\n    void Update()\n    {\n        Rects.RemoveAll(r => r == null);\n\n        for (var i = 0; i < Rects.Count; ++i)\n        {\n            for (var j = i + 1; j < Rects.Count; ++j)\n            {\n                if (Rects[i].HitTest(Rects[j]))\n                {\n                    continue;\n                }\n                if (Rects[j].HitTest(Rects[i]))\n                {\n                    continue;\n                }\n            }\n        }\n        \n        LineSVG.Clear();\n        \n        if (IsDragging)\n        {\n            var p = GetMousePoint();\n            \n            if (Input.GetMouseButton(0))\n            {\n                DrawLine(LineSVG, DragStart, p);\n            }\n            else\n            {\n                IsDragging = false;\n                \n                foreach (var r in Rects.ToList())\n                {\n                    r.Split(DragStart, p, Rects);\n                }\n            }\n        }\n        else\n        {\n            if (Input.GetMouseButtonDown(0))\n            {\n                DragStart = GetMousePoint();\n                IsDragging = true;\n            }\n        }\n        \n        LineMesh.Fill(LineSVG);\n    }\n\n    private Vector2 GetMousePoint()\n    {\n        var ray = Camera.main.ScreenPointToRay(Input.mousePosition);\n        var enter = 0f;\n        if (new Plane(Vector3.forward, Vector3.zero).Raycast(ray, out enter))\n        {\n            return Vector2.Scale(ray.GetPoint(enter), new Vector2(1f, -1f));\n        }\n        return Vector2.zero;\n    }\n\n    private Rect NewRect(Action<Rect> f)\n    {\n        var g = Instantiate(Prefab, transform);\n        var r = g.AddComponent<Rect>();\n        r.NewRect = NewRect;\n        f(r);\n        g.SetActive(true);\n        return r;\n    }\n\n    private void DrawLine(SVGData svg, Vector2 from, Vector2 to)\n    {\n        var r = 0.07f;\n        var length = (to - from).magnitude;\n        var angle = Mathf.Atan2(to.y - from.y, to.x - from.x);\n        var matrix = new Matrix4x4();\n        matrix.SetTRS((Vector3)from, Quaternion.Euler(new Vector3(0f, 0f, angle * Mathf.Rad2Deg)), Vector3.one);\n\n        var lineW = 1.7f;\n        var interval = 0.2f;\n        var s = 0f;\n        for (;;)\n        {\n            var len = Mathf.Min(lineW, length - s);\n            \n            var a = new Vector2(s + len, r);\n            var b = new Vector2(s, r);\n            var c = new Vector2(s, -r);\n            var d = new Vector2(s + len, -r);\n            \n            DrawR(svg, a, d, b, r, matrix, true);\n            DrawR(svg, b, a, c, r, matrix);\n            DrawR(svg, c, b, d, r, matrix);\n            DrawR(svg, d, c, a, r, matrix);\n\n            s += lineW + interval;\n\n            if (s > length)\n            {\n                break;\n            }\n        }\n    }\n        \n    private void DrawR(SVGData svg, Vector2 p, Vector2 pPrev, Vector2 pNext, float r, Matrix4x4 matrix, bool first = false)\n    {\n        var angle0 = Mathf.Atan2(p.y - pNext.y, p.x - pNext.x);\n        var angle1 = Mathf.Atan2(p.y - pPrev.y, p.x - pPrev.x);\n            \n        if (angle0 > angle1)\n        {\n            angle0 = angle0 - Mathf.PI * 2f;\n        }\n\n        var angleBetween = Mathf.Lerp(angle0, angle1, 0.5f);\n\n        var cx = p.x - Mathf.Cos(angleBetween) * r * Mathf.Sqrt(2f);\n        var cy = p.y - Mathf.Sin(angleBetween) * r * Mathf.Sqrt(2f);\n\n        var x0 = cx + Mathf.Cos(angle0) * r;\n        var y0 = cy + Mathf.Sin(angle0) * r;\n        var x1 = cx + Mathf.Cos(angle1) * r;\n        var y1 = cy + Mathf.Sin(angle1) * r;\n\n        var a = r * (4f / 3f) * Mathf.Tan((angle1 - angle0) / 4f);\n        var inAngle = angle0 + Mathf.PI * 0.5f;\n        var inX = x0 + Mathf.Cos(inAngle) * a;\n        var inY = y0 + Mathf.Sin(inAngle) * a;\n        var outAngle = angle1 - Mathf.PI * 0.5f;\n        var outX = x1 + Mathf.Cos(outAngle) * a;\n        var outY = y1 + Mathf.Sin(outAngle) * a;\n\n        var p0 = matrix.MultiplyPoint(new Vector3(x0, y0));\n        var p1 = matrix.MultiplyPoint(new Vector3(x1, y1));\n        var pIn = matrix.MultiplyPoint(new Vector3(inX, inY));\n        var pOut = matrix.MultiplyPoint(new Vector3(outX, outY));\n\n        if (first)\n        {\n            svg.Move(p0);\n        }\n        else\n        {\n            svg.Line(p0);\n        }\n        \n        svg.Curve(pIn, pOut, p1);\n    }\n}"
  },
  {
    "path": "Assets/Samples/Scripts/Cut.cs.meta",
    "content": "﻿fileFormatVersion: 2\r\nguid: b84498ce3fe84d25938244fbf07b7494\r\ntimeCreated: 1520214682"
  },
  {
    "path": "Assets/Samples/Scripts/MetaballBehaviour.cs",
    "content": "﻿using SVGMeshUnity;\r\nusing UnityEngine;\r\n\r\npublic class MetaballBehaviour : MonoBehaviour\r\n{\r\n    [SerializeField] private SVGMesh Circle1Mesh;\r\n    [SerializeField] private SVGMesh Circle2Mesh;\r\n    [SerializeField] private SVGMesh MetaballMesh;\r\n\r\n    private SVGData Circle1SVG;\r\n    private SVGData Circle2SVG;\r\n    private SVGData MetaballSVG;\r\n\r\n    void Start()\r\n    {\r\n        Circle1SVG = new SVGData();\r\n        Circle2SVG = new SVGData();\r\n        MetaballSVG = new SVGData();\r\n    }\r\n\r\n    void Update()\r\n    {\r\n        Circle1SVG.Clear();\r\n        Circle2SVG.Clear();\r\n        MetaballSVG.Clear();\r\n\r\n        var c1 = (Vector2) Circle1Mesh.transform.localPosition;\r\n        var c2 = (Vector2) Circle2Mesh.transform.localPosition;\r\n\r\n        var c1R = 1f;\r\n        var c2R = 1.2f;\r\n        \r\n        var v = Mathf.Max(0.5f, 1.3f - Mathf.Clamp01((c2 - c1).magnitude / 8f));\r\n        \r\n        Circle(Circle1SVG, Vector2.zero, c1R);\r\n        Circle(Circle2SVG, Vector2.zero, c2R);\r\n        Metaball(MetaballSVG, c1, c1R, c2, c2R, v);\r\n        \r\n        Circle1Mesh.Fill(Circle1SVG);\r\n        Circle2Mesh.Fill(Circle2SVG);\r\n        MetaballMesh.Fill(MetaballSVG);\r\n    }\r\n\r\n    private void Circle(SVGData svg, Vector2 c, float r)\r\n    {\r\n        for (var i = 0; i < 4; ++i)\r\n        {\r\n            var angle0 = Mathf.PI * 0.5f * (i + 0);\r\n            var angle1 = Mathf.PI * 0.5f * (i + 1);\r\n\r\n            var x0 = c.x + Mathf.Cos(angle0) * r;\r\n            var y0 = c.y - Mathf.Sin(angle0) * r;\r\n            var x1 = c.x + Mathf.Cos(angle1) * r;\r\n            var y1 = c.y - Mathf.Sin(angle1) * r;\r\n\r\n            var a = r * (4f / 3f) * Mathf.Tan((angle1 - angle0) / 4f);\r\n            var inAngle = angle0 + Mathf.PI * 0.5f;\r\n            var inX = x0 + Mathf.Cos(inAngle) * a;\r\n            var inY = y0 - Mathf.Sin(inAngle) * a;\r\n            var outAngle = angle1 - Mathf.PI * 0.5f;\r\n            var outX = x1 + Mathf.Cos(outAngle) * a;\r\n            var outY = y1 - Mathf.Sin(outAngle) * a;\r\n\r\n            if (i == 0)\r\n            {\r\n                svg.Move(x0, y0);\r\n            }\r\n            \r\n            svg.Curve(inX, inY, outX, outY, x1, y1);\r\n        }\r\n    }\r\n    \r\n    // http://shspage.com/aijs/\r\n\r\n    private void Metaball(SVGData svg, Vector2 c1, float r1, Vector2 c2, float r2, float v)\r\n    {\r\n        if (r1 == 0f || r2 == 0f)\r\n        {\r\n            return;\r\n        }\r\n  \r\n        var pi2 = Mathf.PI / 2f;\r\n\r\n        var d = (c2 - c1).magnitude;\r\n\r\n        var u1 = 0f;\r\n        var u2 = 0f;\r\n        if (d <= Mathf.Abs(r1 - r2))\r\n        {\r\n            return;\r\n        }\r\n        else if (d < r1 + r2)\r\n        {\r\n            // case circles are overlapping\r\n            u1 = Mathf.Acos((r1 * r1 + d * d - r2 * r2) / (2 * r1 * d));\r\n            u2 = Mathf.Acos((r2 * r2 + d * d - r1 * r1) / (2 * r2 * d));\r\n        }\r\n\r\n        var t1 = Mathf.Atan2(c2.y - c1.y, c2.x - c1.x);\r\n        var t2 = Mathf.Acos((r1 - r2) / d);\r\n  \r\n        var t1a = t1 + u1 + (t2 - u1) * v;\r\n        var t1b = t1 - u1 - (t2 - u1) * v;\r\n        var t2a = t1 + Mathf.PI - u2 - (Mathf.PI - u2 - t2) * v;\r\n        var t2b = t1 - Mathf.PI + u2 + (Mathf.PI - u2 - t2) * v;\r\n  \r\n        var p1a = PointOnCircle(c1, t1a, r1);\r\n        var p1b = PointOnCircle(c1, t1b, r1);\r\n        var p2a = PointOnCircle(c2, t2a, r2);\r\n        var p2b = PointOnCircle(c2, t2b, r2);\r\n\r\n        // define handle length by the distance between both ends of the curve to draw\r\n        var handle_len_rate = 2;\r\n        var d2 = Mathf.Min(v * handle_len_rate, (p2a - p1a).magnitude / (r1 + r2));\r\n        d2 *= Mathf.Min(1, d * 2 / (r1 + r2)); // case circles are overlapping\r\n        r1 *= d2;\r\n        r2 *= d2;\r\n        \r\n        svg.Move(p1a);\r\n        svg.Curve(PointOnCircle(p1a, t1a - pi2, r1), PointOnCircle(p2a, t2a + pi2, r2), p2a);\r\n        svg.Line(p2b);\r\n        svg.Curve(PointOnCircle(p2b, t2b - pi2, r2), PointOnCircle(p1b, t1b + pi2, r1), p1b);\r\n        svg.Line(p1a);\r\n    }\r\n\r\n    private Vector2 PointOnCircle(Vector2 c, float angle, float r)\r\n    {\r\n        return c + new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * r;\r\n    }\r\n}"
  },
  {
    "path": "Assets/Samples/Scripts/MetaballBehaviour.cs.meta",
    "content": "fileFormatVersion: 2\nguid: fe7ce92f7a0454b6f9b8e855e7e2a2d3\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Scripts/Move.cs",
    "content": "﻿using SVGMeshUnity;\r\nusing UnityEngine;\r\n\r\npublic class Move : MonoBehaviour\r\n{\r\n    [SerializeField] private float R = 0.5f;\r\n    [SerializeField] private float IntervalRate = 1f;\r\n    \r\n    [SerializeField] private SVGMesh HeadMesh;\r\n    [SerializeField] private SVGMesh TailMesh;\r\n    [SerializeField] private SVGMesh BodyMesh;\r\n\r\n    private SVGData HeadSVG;\r\n    private SVGData TailSVG;\r\n    private SVGData BodySVG;\r\n\r\n    private Vector2 Head;\r\n    private Vector2 Tail;\r\n\r\n    private Vector2 To;\r\n\r\n    private float HeadR;\r\n    private float TailR;\r\n\r\n    private float Interval;\r\n    private float FollowTime;\r\n\r\n    void Start()\r\n    {\r\n        HeadSVG = new SVGData();\r\n        TailSVG = new SVGData();\r\n        BodySVG = new SVGData();\r\n\r\n        Head = RandomField();\r\n        Tail = Head;\r\n    }\r\n\r\n    void Update()\r\n    {\r\n        HeadSVG.Clear();\r\n        TailSVG.Clear();\r\n        BodySVG.Clear();\r\n\r\n        Update(Time.deltaTime);\r\n\r\n        var v = Mathf.Max(0.7f, 1.3f - Mathf.Clamp01((Head - Tail).magnitude / 3f));\r\n        \r\n        Circle(HeadSVG, Head, HeadR);\r\n        Circle(TailSVG, Tail, TailR);\r\n        Metaball(BodySVG, Head, HeadR, Tail, TailR, v);\r\n        \r\n        HeadMesh.Fill(HeadSVG);\r\n        TailMesh.Fill(TailSVG);\r\n        BodyMesh.Fill(BodySVG);\r\n    }\r\n\r\n    private void Update(float dt)\r\n    {\r\n        Interval -= dt;\r\n        FollowTime -= dt;\r\n\r\n        if (Interval <= 0f)\r\n        {\r\n            To = RandomField();\r\n            To = Head + Vector2.ClampMagnitude(To - Head, 2f);\r\n            HeadR = R * 0.15f;\r\n            TailR = R;\r\n            Interval = Random.Range(1.5f, 2.6f) * IntervalRate;\r\n            FollowTime = Random.Range(0.15f, 0.25f);\r\n        }\r\n\r\n        Head = Vector2.Lerp(To, Head, Mathf.Exp(-5f * dt));\r\n\r\n        if (FollowTime <= 0f)\r\n        {\r\n            Tail = Vector2.Lerp(Head, Tail, Mathf.Exp(-5f * dt));\r\n\r\n            if (FollowTime <= -0.4f)\r\n            {\r\n                TailR = Mathf.Lerp(R, TailR, Mathf.Exp(-4f * dt));\r\n            }\r\n            else\r\n            {\r\n                TailR = Mathf.Lerp(R * 0.05f, TailR, Mathf.Exp(-6f * dt));\r\n            }\r\n            \r\n            HeadR = Mathf.Lerp(R, HeadR, Mathf.Exp(-3f * dt));\r\n        }\r\n    }\r\n\r\n    private Vector2 RandomField()\r\n    {\r\n        return new Vector2(Random.Range(-4f, 4f), Random.Range(-4f, 4f));\r\n    }\r\n\r\n    private void Circle(SVGData svg, Vector2 c, float r)\r\n    {\r\n        for (var i = 0; i < 4; ++i)\r\n        {\r\n            var angle0 = Mathf.PI * 0.5f * (i + 0);\r\n            var angle1 = Mathf.PI * 0.5f * (i + 1);\r\n\r\n            var x0 = c.x + Mathf.Cos(angle0) * r;\r\n            var y0 = c.y - Mathf.Sin(angle0) * r;\r\n            var x1 = c.x + Mathf.Cos(angle1) * r;\r\n            var y1 = c.y - Mathf.Sin(angle1) * r;\r\n\r\n            var a = r * (4f / 3f) * Mathf.Tan((angle1 - angle0) / 4f);\r\n            var inAngle = angle0 + Mathf.PI * 0.5f;\r\n            var inX = x0 + Mathf.Cos(inAngle) * a;\r\n            var inY = y0 - Mathf.Sin(inAngle) * a;\r\n            var outAngle = angle1 - Mathf.PI * 0.5f;\r\n            var outX = x1 + Mathf.Cos(outAngle) * a;\r\n            var outY = y1 - Mathf.Sin(outAngle) * a;\r\n\r\n            if (i == 0)\r\n            {\r\n                svg.Move(x0, y0);\r\n            }\r\n            \r\n            svg.Curve(inX, inY, outX, outY, x1, y1);\r\n        }\r\n    }\r\n    \r\n    // http://shspage.com/aijs/\r\n\r\n    private void Metaball(SVGData svg, Vector2 c1, float r1, Vector2 c2, float r2, float v)\r\n    {\r\n        if (r1 == 0f || r2 == 0f)\r\n        {\r\n            return;\r\n        }\r\n  \r\n        var pi2 = Mathf.PI / 2f;\r\n\r\n        var d = (c2 - c1).magnitude;\r\n\r\n        var u1 = 0f;\r\n        var u2 = 0f;\r\n        if (d <= Mathf.Abs(r1 - r2))\r\n        {\r\n            return;\r\n        }\r\n        else if (d < r1 + r2)\r\n        {\r\n            // case circles are overlapping\r\n            u1 = Mathf.Acos((r1 * r1 + d * d - r2 * r2) / (2 * r1 * d));\r\n            u2 = Mathf.Acos((r2 * r2 + d * d - r1 * r1) / (2 * r2 * d));\r\n        }\r\n\r\n        var t1 = Mathf.Atan2(c2.y - c1.y, c2.x - c1.x);\r\n        var t2 = Mathf.Acos((r1 - r2) / d);\r\n  \r\n        var t1a = t1 + u1 + (t2 - u1) * v;\r\n        var t1b = t1 - u1 - (t2 - u1) * v;\r\n        var t2a = t1 + Mathf.PI - u2 - (Mathf.PI - u2 - t2) * v;\r\n        var t2b = t1 - Mathf.PI + u2 + (Mathf.PI - u2 - t2) * v;\r\n  \r\n        var p1a = PointOnCircle(c1, t1a, r1);\r\n        var p1b = PointOnCircle(c1, t1b, r1);\r\n        var p2a = PointOnCircle(c2, t2a, r2);\r\n        var p2b = PointOnCircle(c2, t2b, r2);\r\n\r\n        // define handle length by the distance between both ends of the curve to draw\r\n        var handle_len_rate = 2;\r\n        var d2 = Mathf.Min(v * handle_len_rate, (p2a - p1a).magnitude / (r1 + r2));\r\n        d2 *= Mathf.Min(1, d * 2 / (r1 + r2)); // case circles are overlapping\r\n        r1 *= d2;\r\n        r2 *= d2;\r\n        \r\n        svg.Move(p1a);\r\n        svg.Curve(PointOnCircle(p1a, t1a - pi2, r1), PointOnCircle(p2a, t2a + pi2, r2), p2a);\r\n        svg.Line(p2b);\r\n        svg.Curve(PointOnCircle(p2b, t2b - pi2, r2), PointOnCircle(p1b, t1b + pi2, r1), p1b);\r\n        svg.Line(p1a);\r\n    }\r\n\r\n    private Vector2 PointOnCircle(Vector2 c, float angle, float r)\r\n    {\r\n        return c + new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * r;\r\n    }\r\n}"
  },
  {
    "path": "Assets/Samples/Scripts/Move.cs.meta",
    "content": "fileFormatVersion: 2\nguid: ee73e1f19ad0d455bb6879994b42733b\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Scripts/ScriptedCurves.cs",
    "content": "﻿using SVGMeshUnity;\r\nusing UnityEngine;\r\n\r\npublic class ScriptedCurves : MonoBehaviour\r\n{\r\n    [SerializeField] private SVGMesh Mesh;\r\n\r\n    private SVGData SVG;\r\n\r\n    void Start()\r\n    {\r\n        SVG = new SVGData();\r\n    }\r\n    \r\n    /**\r\n    void Update()\r\n    {\r\n        SVG.Clear();\r\n\r\n        var r = 3f;\r\n        \r\n        for (var i = 0; i < 4; ++i)\r\n        {\r\n            var t = Time.time * 2f;\r\n            \r\n            var i0 = i;\r\n            var i1 = (i + 1) % 4;\r\n\r\n            var a = Mathf.PI * 0.25f; // (t / (Mathf.PI * 2f)) * Mathf.PI;\r\n            var angle0 = a + Mathf.PI * 0.5f * i0;\r\n            var angle1 = a + Mathf.PI * 0.5f * i1;\r\n\r\n            var x0 = Mathf.Cos(angle0) * r;\r\n            var y0 = Mathf.Sin(angle0) * r;\r\n            var x1 = Mathf.Cos(angle1) * r;\r\n            var y1 = Mathf.Sin(angle1) * r;\r\n\r\n            var cx = x0 + (x1 - x0) * 0.5f;\r\n            var cy = y0 + (y1 - y0) * 0.5f;\r\n            var ca = Mathf.Atan2(cy, cx);\r\n            var cr = 0.75f + Mathf.Sin(t) * 1.5f;\r\n            cx += Mathf.Cos(ca) * cr;\r\n            cy += Mathf.Sin(ca) * cr;\r\n\r\n            if (i == 0)\r\n            {\r\n                SVG.Move(x0, y0);\r\n            }\r\n            \r\n            SVG.Curve(cx, cy, cx, cy, x1, y1);\r\n        }\r\n        \r\n        Mesh.Fill(SVG);\r\n    }\r\n    /**/\r\n\r\n    /**/\r\n    void Update()\r\n    {\r\n        SVG.Clear();\r\n\r\n        var resolution = 5;\r\n        var radius = 3f;\r\n        \r\n        SVG.Move(NoisedR(radius, 0), 0f);\r\n        \r\n        for (var i = 0; i < resolution; ++i)\r\n        {\r\n            var i0 = i;\r\n            var i1 = (i + 1) % resolution;\r\n            \r\n            var angle0 = Mathf.PI * 2f * ((float) i0 / resolution);\r\n            var angle1 = Mathf.PI * 2f * ((float) i1 / resolution);\r\n\r\n            var r0 = NoisedR(radius, i0);\r\n            var r1 = NoisedR(radius, i1);\r\n            var x0 = Mathf.Cos(angle0) * r0;\r\n            var y0 = Mathf.Sin(angle0) * r0;\r\n            var x1 = Mathf.Cos(angle1) * r1;\r\n            var y1 = Mathf.Sin(angle1) * r1;\r\n\r\n            var cx = x0 + (x1 - x0) * 0.5f;\r\n            var cy = y0 + (y1 - y0) * 0.5f;\r\n            var ca = Mathf.Atan2(cy, cx);\r\n            var cr = 0.3f + (Mathf.PerlinNoise(Time.time, i * -100f) - 0.5f) * 1.15f;\r\n            cx += Mathf.Cos(ca) * cr;\r\n            cy += Mathf.Sin(ca) * cr;\r\n            \r\n            SVG.Curve(cx, cy, cx, cy, x1, y1);\r\n        }\r\n        \r\n        Mesh.Fill(SVG);\r\n    }\r\n\r\n    private float NoisedR(float r, float randomize)\r\n    {\r\n        return r + (Mathf.PerlinNoise(Time.time, randomize * 10f) - 0.5f) * 0.5f;\r\n    }\r\n    /**/\r\n}"
  },
  {
    "path": "Assets/Samples/Scripts/ScriptedCurves.cs.meta",
    "content": "fileFormatVersion: 2\nguid: e367ad552ec3e49d6b721365f4fb2f1c\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Scripts/Simple.cs",
    "content": "﻿using SVGMeshUnity;\r\nusing UnityEngine;\r\n\r\npublic class Simple : MonoBehaviour\r\n{\r\n\tprivate static readonly string SVG_PATH =\r\n\r\n\t\t@\"M17.316,6.246c0.008,0.162,0.011,0.326,0.011,0.488c0,4.99-3.797,10.742-10.74,10.742c-2.133,0-4.116-0.625-5.787-1.697\r\n\t\tc0.296,0.035,0.596,0.053,0.9,0.053c1.77,0,3.397-0.604,4.688-1.615c-1.651-0.031-3.046-1.121-3.526-2.621\r\n\t\tc0.23,0.043,0.467,0.066,0.71,0.066c0.345,0,0.679-0.045,0.995-0.131c-1.727-0.348-3.028-1.873-3.028-3.703c0-0.016,0-0.031,0-0.047\r\n\t\tc0.509,0.283,1.092,0.453,1.71,0.473c-1.013-0.678-1.68-1.832-1.68-3.143c0-0.691,0.186-1.34,0.512-1.898\r\n\t\tC3.942,5.498,6.725,7,9.862,7.158C9.798,6.881,9.765,6.594,9.765,6.297c0-2.084,1.689-3.773,3.774-3.773\r\n\t\tc1.086,0,2.067,0.457,2.756,1.191c0.859-0.17,1.667-0.484,2.397-0.916c-0.282,0.881-0.881,1.621-1.66,2.088\r\n\t\tc0.764-0.092,1.49-0.293,2.168-0.594C18.694,5.051,18.054,5.715,17.316,6.246z\";\r\n\r\n//        @\"M10,0.4c-5.302,0-9.6,4.298-9.6,9.6s4.298,9.6,9.6,9.6s9.6-4.298,9.6-9.6S15.302,0.4,10,0.4z M13.905,8.264\r\n//        c0.004,0.082,0.005,0.164,0.005,0.244c0,2.5-1.901,5.381-5.379,5.381c-1.068,0-2.062-0.312-2.898-0.85\r\n//        c0.147,0.018,0.298,0.025,0.451,0.025c0.886,0,1.701-0.301,2.348-0.809c-0.827-0.016-1.525-0.562-1.766-1.312\r\n//        c0.115,0.021,0.233,0.033,0.355,0.033c0.172,0,0.34-0.023,0.498-0.066c-0.865-0.174-1.517-0.938-1.517-1.854V9.033\r\n//        C6.257,9.174,6.549,9.26,6.859,9.27C6.351,8.93,6.018,8.352,6.018,7.695c0-0.346,0.093-0.672,0.256-0.951\r\n//        c0.933,1.144,2.325,1.896,3.897,1.977c-0.033-0.139-0.049-0.283-0.049-0.432c0-1.043,0.846-1.891,1.891-1.891\r\n//        c0.543,0,1.035,0.23,1.38,0.598c0.431-0.086,0.835-0.242,1.2-0.459c-0.141,0.441-0.44,0.812-0.831,1.047\r\n//        c0.383-0.047,0.747-0.148,1.086-0.299C14.595,7.664,14.274,7.998,13.905,8.264z\";\r\n\r\n\t[SerializeField] private SVGMesh Mesh;\r\n\r\n\tprivate SVGData SVG;\r\n\r\n\tvoid Start()\r\n\t{\r\n\t\tSVG = new SVGData();\r\n\t\tSVG.Path(SVG_PATH);\r\n\t\t// Debug.Log(SVG.Dump());\r\n\t}\r\n\r\n\tvoid Update()\r\n\t{\r\n\t\tMesh.Fill(SVG);\r\n\t}\r\n}"
  },
  {
    "path": "Assets/Samples/Scripts/Simple.cs.meta",
    "content": "fileFormatVersion: 2\nguid: 8365665d205cd4aa0ab4bac914001458\nMonoImporter:\n  externalObjects: {}\n  serializedVersion: 2\n  defaultReferences: []\n  executionOrder: 0\n  icon: {instanceID: 0}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples/Scripts.meta",
    "content": "fileFormatVersion: 2\nguid: d391f615779684746aed7cad474b687d\nfolderAsset: yes\nDefaultImporter:\n  externalObjects: {}\n  userData: \n  assetBundleName: \n  assetBundleVariant: \n"
  },
  {
    "path": "Assets/Samples.meta",
    "content": "fileFormatVersion: 2\r\nguid: 4f704ae4b4f98ae41a0bce26658850c1\r\nfolderAsset: yes\r\nDefaultImporter:\r\n  externalObjects: {}\r\n  userData: \r\n  assetBundleName: \r\n  assetBundleVariant: \r\n"
  },
  {
    "path": "Packages/manifest.json",
    "content": "{\n  \"dependencies\": {\n    \"com.unity.render-pipelines.lightweight\": \"1.0.1-beta\",\n    \"com.unity.shadergraph\": \"1.0.0-beta\",\n    \"com.unity.package-manager-ui\": \"1.8.1\",\n    \"com.unity.ads\": \"exclude\",\n    \"com.unity.analytics\": \"exclude\",\n    \"com.unity.purchasing\": \"exclude\",\n    \"com.unity.standardevents\": \"exclude\"\n  }\n}\n"
  },
  {
    "path": "ProjectSettings/AudioManager.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!11 &1\r\nAudioManager:\r\n  m_ObjectHideFlags: 0\r\n  m_Volume: 1\r\n  Rolloff Scale: 1\r\n  Doppler Factor: 1\r\n  Default Speaker Mode: 2\r\n  m_SampleRate: 0\r\n  m_DSPBufferSize: 1024\r\n  m_VirtualVoiceCount: 512\r\n  m_RealVoiceCount: 32\r\n  m_SpatializerPlugin: \r\n  m_AmbisonicDecoderPlugin: \r\n  m_DisableAudio: 0\r\n  m_VirtualizeEffects: 1\r\n"
  },
  {
    "path": "ProjectSettings/ClusterInputManager.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!236 &1\r\nClusterInputManager:\r\n  m_ObjectHideFlags: 0\r\n  m_Inputs: []\r\n"
  },
  {
    "path": "ProjectSettings/DynamicsManager.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!55 &1\r\nPhysicsManager:\r\n  m_ObjectHideFlags: 0\r\n  serializedVersion: 7\r\n  m_Gravity: {x: 0, y: -9.81, z: 0}\r\n  m_DefaultMaterial: {fileID: 0}\r\n  m_BounceThreshold: 2\r\n  m_SleepThreshold: 0.005\r\n  m_DefaultContactOffset: 0.01\r\n  m_DefaultSolverIterations: 6\r\n  m_DefaultSolverVelocityIterations: 1\r\n  m_QueriesHitBackfaces: 0\r\n  m_QueriesHitTriggers: 1\r\n  m_EnableAdaptiveForce: 0\r\n  m_ClothInterCollisionDistance: 0\r\n  m_ClothInterCollisionStiffness: 0\r\n  m_ContactsGeneration: 1\r\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r\n  m_AutoSimulation: 1\r\n  m_AutoSyncTransforms: 1\r\n  m_ClothInterCollisionSettingsToggle: 0\r\n  m_ContactPairsMode: 0\r\n  m_BroadphaseType: 0\r\n  m_WorldBounds:\r\n    m_Center: {x: 0, y: 0, z: 0}\r\n    m_Extent: {x: 250, y: 250, z: 250}\r\n  m_WorldSubdivisions: 8\r\n"
  },
  {
    "path": "ProjectSettings/EditorBuildSettings.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!1045 &1\r\nEditorBuildSettings:\r\n  m_ObjectHideFlags: 0\r\n  serializedVersion: 2\r\n  m_Scenes:\r\n  - enabled: 1\r\n    path: Assets/Scenes/SampleScene.unity\r\n    guid: 99c9720ab356a0642a771bea13969a05\r\n  m_configObjects: {}\r\n"
  },
  {
    "path": "ProjectSettings/EditorSettings.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!159 &1\r\nEditorSettings:\r\n  m_ObjectHideFlags: 0\r\n  serializedVersion: 7\r\n  m_ExternalVersionControlSupport: Visible Meta Files\r\n  m_SerializationMode: 2\r\n  m_LineEndingsForNewScripts: 2\r\n  m_DefaultBehaviorMode: 0\r\n  m_SpritePackerMode: 0\r\n  m_SpritePackerPaddingPower: 1\r\n  m_EtcTextureCompressorBehavior: 1\r\n  m_EtcTextureFastCompressor: 1\r\n  m_EtcTextureNormalCompressor: 2\r\n  m_EtcTextureBestCompressor: 4\r\n  m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd\r\n  m_ProjectGenerationRootNamespace: \r\n  m_UserGeneratedProjectSuffix: \r\n  m_CollabEditorSettings:\r\n    inProgressEnabled: 1\r\n"
  },
  {
    "path": "ProjectSettings/GraphicsSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!30 &1\nGraphicsSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 12\n  m_Deferred:\n    m_Mode: 1\n    m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}\n  m_DeferredReflections:\n    m_Mode: 1\n    m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}\n  m_ScreenSpaceShadows:\n    m_Mode: 1\n    m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}\n  m_LegacyDeferred:\n    m_Mode: 1\n    m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}\n  m_DepthNormals:\n    m_Mode: 1\n    m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}\n  m_MotionVectors:\n    m_Mode: 1\n    m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}\n  m_LightHalo:\n    m_Mode: 1\n    m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}\n  m_LensFlare:\n    m_Mode: 1\n    m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}\n  m_AlwaysIncludedShaders:\n  - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}\n  - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}\n  m_PreloadedShaders: []\n  m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,\n    type: 0}\n  m_CustomRenderPipeline: {fileID: 11400000, guid: 3450f356d0f9942e3b26f29a5aeea0d1,\n    type: 2}\n  m_TransparencySortMode: 0\n  m_TransparencySortAxis: {x: 0, y: 0, z: 1}\n  m_DefaultRenderingPath: 1\n  m_DefaultMobileRenderingPath: 1\n  m_TierSettings: []\n  m_LightmapStripping: 0\n  m_FogStripping: 0\n  m_InstancingStripping: 0\n  m_LightmapKeepPlain: 1\n  m_LightmapKeepDirCombined: 1\n  m_LightmapKeepDynamicPlain: 1\n  m_LightmapKeepDynamicDirCombined: 1\n  m_LightmapKeepShadowMask: 1\n  m_LightmapKeepSubtractive: 1\n  m_FogKeepLinear: 1\n  m_FogKeepExp: 1\n  m_FogKeepExp2: 1\n  m_AlbedoSwatchInfos: []\n  m_LightsUseLinearIntensity: 1\n  m_LightsUseColorTemperature: 0\n"
  },
  {
    "path": "ProjectSettings/InputManager.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!13 &1\r\nInputManager:\r\n  m_ObjectHideFlags: 0\r\n  serializedVersion: 2\r\n  m_Axes:\r\n  - serializedVersion: 3\r\n    m_Name: Horizontal\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: left\r\n    positiveButton: right\r\n    altNegativeButton: a\r\n    altPositiveButton: d\r\n    gravity: 3\r\n    dead: 0.001\r\n    sensitivity: 3\r\n    snap: 1\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Vertical\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: down\r\n    positiveButton: up\r\n    altNegativeButton: s\r\n    altPositiveButton: w\r\n    gravity: 3\r\n    dead: 0.001\r\n    sensitivity: 3\r\n    snap: 1\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Fire1\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: left ctrl\r\n    altNegativeButton: \r\n    altPositiveButton: mouse 0\r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Fire2\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: left alt\r\n    altNegativeButton: \r\n    altPositiveButton: mouse 1\r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Fire3\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: left shift\r\n    altNegativeButton: \r\n    altPositiveButton: mouse 2\r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Jump\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: space\r\n    altNegativeButton: \r\n    altPositiveButton: \r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Mouse X\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: \r\n    altNegativeButton: \r\n    altPositiveButton: \r\n    gravity: 0\r\n    dead: 0\r\n    sensitivity: 0.1\r\n    snap: 0\r\n    invert: 0\r\n    type: 1\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Mouse Y\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: \r\n    altNegativeButton: \r\n    altPositiveButton: \r\n    gravity: 0\r\n    dead: 0\r\n    sensitivity: 0.1\r\n    snap: 0\r\n    invert: 0\r\n    type: 1\r\n    axis: 1\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Mouse ScrollWheel\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: \r\n    altNegativeButton: \r\n    altPositiveButton: \r\n    gravity: 0\r\n    dead: 0\r\n    sensitivity: 0.1\r\n    snap: 0\r\n    invert: 0\r\n    type: 1\r\n    axis: 2\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Horizontal\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: \r\n    altNegativeButton: \r\n    altPositiveButton: \r\n    gravity: 0\r\n    dead: 0.19\r\n    sensitivity: 1\r\n    snap: 0\r\n    invert: 0\r\n    type: 2\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Vertical\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: \r\n    altNegativeButton: \r\n    altPositiveButton: \r\n    gravity: 0\r\n    dead: 0.19\r\n    sensitivity: 1\r\n    snap: 0\r\n    invert: 1\r\n    type: 2\r\n    axis: 1\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Fire1\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: joystick button 0\r\n    altNegativeButton: \r\n    altPositiveButton: \r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Fire2\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: joystick button 1\r\n    altNegativeButton: \r\n    altPositiveButton: \r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Fire3\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: joystick button 2\r\n    altNegativeButton: \r\n    altPositiveButton: \r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Jump\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: joystick button 3\r\n    altNegativeButton: \r\n    altPositiveButton: \r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Submit\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: return\r\n    altNegativeButton: \r\n    altPositiveButton: joystick button 0\r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Submit\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: enter\r\n    altNegativeButton: \r\n    altPositiveButton: space\r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n  - serializedVersion: 3\r\n    m_Name: Cancel\r\n    descriptiveName: \r\n    descriptiveNegativeName: \r\n    negativeButton: \r\n    positiveButton: escape\r\n    altNegativeButton: \r\n    altPositiveButton: joystick button 1\r\n    gravity: 1000\r\n    dead: 0.001\r\n    sensitivity: 1000\r\n    snap: 0\r\n    invert: 0\r\n    type: 0\r\n    axis: 0\r\n    joyNum: 0\r\n"
  },
  {
    "path": "ProjectSettings/NavMeshAreas.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!126 &1\r\nNavMeshProjectSettings:\r\n  m_ObjectHideFlags: 0\r\n  serializedVersion: 2\r\n  areas:\r\n  - name: Walkable\r\n    cost: 1\r\n  - name: Not Walkable\r\n    cost: 1\r\n  - name: Jump\r\n    cost: 2\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  - name: \r\n    cost: 1\r\n  m_LastAgentTypeID: -887442657\r\n  m_Settings:\r\n  - serializedVersion: 2\r\n    agentTypeID: 0\r\n    agentRadius: 0.5\r\n    agentHeight: 2\r\n    agentSlope: 45\r\n    agentClimb: 0.75\r\n    ledgeDropHeight: 0\r\n    maxJumpAcrossDistance: 0\r\n    minRegionArea: 2\r\n    manualCellSize: 0\r\n    cellSize: 0.16666667\r\n    manualTileSize: 0\r\n    tileSize: 256\r\n    accuratePlacement: 0\r\n    debug:\r\n      m_Flags: 0\r\n  m_SettingNames:\r\n  - Humanoid\r\n"
  },
  {
    "path": "ProjectSettings/NetworkManager.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!149 &1\r\nNetworkManager:\r\n  m_ObjectHideFlags: 0\r\n  m_DebugLevel: 0\r\n  m_Sendrate: 15\r\n  m_AssetToPrefab: {}\r\n"
  },
  {
    "path": "ProjectSettings/Physics2DSettings.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!19 &1\r\nPhysics2DSettings:\r\n  m_ObjectHideFlags: 0\r\n  serializedVersion: 3\r\n  m_Gravity: {x: 0, y: -9.81}\r\n  m_DefaultMaterial: {fileID: 0}\r\n  m_VelocityIterations: 8\r\n  m_PositionIterations: 3\r\n  m_VelocityThreshold: 1\r\n  m_MaxLinearCorrection: 0.2\r\n  m_MaxAngularCorrection: 8\r\n  m_MaxTranslationSpeed: 100\r\n  m_MaxRotationSpeed: 360\r\n  m_BaumgarteScale: 0.2\r\n  m_BaumgarteTimeOfImpactScale: 0.75\r\n  m_TimeToSleep: 0.5\r\n  m_LinearSleepTolerance: 0.01\r\n  m_AngularSleepTolerance: 2\r\n  m_DefaultContactOffset: 0.01\r\n  m_AutoSimulation: 1\r\n  m_QueriesHitTriggers: 1\r\n  m_QueriesStartInColliders: 1\r\n  m_ChangeStopsCallbacks: 0\r\n  m_CallbacksOnDisable: 1\r\n  m_AutoSyncTransforms: 1\r\n  m_AlwaysShowColliders: 0\r\n  m_ShowColliderSleep: 1\r\n  m_ShowColliderContacts: 0\r\n  m_ShowColliderAABB: 0\r\n  m_ContactArrowScale: 0.2\r\n  m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}\r\n  m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}\r\n  m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}\r\n  m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}\r\n  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r\n"
  },
  {
    "path": "ProjectSettings/PresetManager.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!1386491679 &1\r\nPresetManager:\r\n  m_ObjectHideFlags: 0\r\n  m_DefaultList:\r\n  - type:\r\n      m_NativeTypeID: 108\r\n      m_ManagedTypePPtr: {fileID: 0}\r\n      m_ManagedTypeFallback: \r\n    defaultPresets:\r\n    - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea,\r\n        type: 2}\r\n  - type:\r\n      m_NativeTypeID: 1020\r\n      m_ManagedTypePPtr: {fileID: 0}\r\n      m_ManagedTypeFallback: \r\n    defaultPresets:\r\n    - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6,\r\n        type: 2}\r\n  - type:\r\n      m_NativeTypeID: 1006\r\n      m_ManagedTypePPtr: {fileID: 0}\r\n      m_ManagedTypeFallback: \r\n    defaultPresets:\r\n    - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9,\r\n        type: 2}\r\n"
  },
  {
    "path": "ProjectSettings/ProjectSettings.asset",
    "content": "%YAML 1.1\n%TAG !u! tag:unity3d.com,2011:\n--- !u!129 &1\nPlayerSettings:\n  m_ObjectHideFlags: 0\n  serializedVersion: 15\n  productGUID: f636d9259e1b048d79b389459f8e10e2\n  AndroidProfiler: 0\n  AndroidFilterTouchesWhenObscured: 0\n  AndroidEnableSustainedPerformanceMode: 0\n  defaultScreenOrientation: 4\n  targetDevice: 2\n  useOnDemandResources: 0\n  accelerometerFrequency: 60\n  companyName: DefaultCompany\n  productName: SVGMeshUnity\n  defaultCursor: {fileID: 0}\n  cursorHotspot: {x: 0, y: 0}\n  m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}\n  m_ShowUnitySplashScreen: 1\n  m_ShowUnitySplashLogo: 1\n  m_SplashScreenOverlayOpacity: 1\n  m_SplashScreenAnimation: 1\n  m_SplashScreenLogoStyle: 1\n  m_SplashScreenDrawMode: 0\n  m_SplashScreenBackgroundAnimationZoom: 1\n  m_SplashScreenLogoAnimationZoom: 1\n  m_SplashScreenBackgroundLandscapeAspect: 1\n  m_SplashScreenBackgroundPortraitAspect: 1\n  m_SplashScreenBackgroundLandscapeUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenBackgroundPortraitUvs:\n    serializedVersion: 2\n    x: 0\n    y: 0\n    width: 1\n    height: 1\n  m_SplashScreenLogos: []\n  m_VirtualRealitySplashScreen: {fileID: 0}\n  m_HolographicTrackingLossScreen: {fileID: 0}\n  defaultScreenWidth: 1024\n  defaultScreenHeight: 768\n  defaultScreenWidthWeb: 960\n  defaultScreenHeightWeb: 600\n  m_StereoRenderingPath: 0\n  m_ActiveColorSpace: 1\n  m_MTRendering: 1\n  m_StackTraceTypes: 010000000100000001000000010000000100000001000000\n  iosShowActivityIndicatorOnLoading: -1\n  androidShowActivityIndicatorOnLoading: -1\n  tizenShowActivityIndicatorOnLoading: -1\n  iosAppInBackgroundBehavior: 0\n  displayResolutionDialog: 1\n  iosAllowHTTPDownload: 1\n  allowedAutorotateToPortrait: 1\n  allowedAutorotateToPortraitUpsideDown: 1\n  allowedAutorotateToLandscapeRight: 1\n  allowedAutorotateToLandscapeLeft: 1\n  useOSAutorotation: 1\n  use32BitDisplayBuffer: 1\n  preserveFramebufferAlpha: 0\n  disableDepthAndStencilBuffers: 0\n  androidBlitType: 0\n  defaultIsNativeResolution: 1\n  macRetinaSupport: 1\n  runInBackground: 1\n  captureSingleScreen: 0\n  muteOtherAudioSources: 0\n  Prepare IOS For Recording: 0\n  Force IOS Speakers When Recording: 0\n  deferSystemGesturesMode: 0\n  hideHomeButton: 0\n  submitAnalytics: 1\n  usePlayerLog: 1\n  bakeCollisionMeshes: 0\n  forceSingleInstance: 0\n  resizableWindow: 0\n  useMacAppStoreValidation: 0\n  macAppStoreCategory: public.app-category.games\n  gpuSkinning: 1\n  graphicsJobs: 1\n  xboxPIXTextureCapture: 0\n  xboxEnableAvatar: 0\n  xboxEnableKinect: 0\n  xboxEnableKinectAutoTracking: 0\n  xboxEnableFitness: 0\n  visibleInBackground: 1\n  allowFullscreenSwitch: 1\n  graphicsJobMode: 0\n  fullscreenMode: 1\n  xboxSpeechDB: 0\n  xboxEnableHeadOrientation: 0\n  xboxEnableGuest: 0\n  xboxEnablePIXSampling: 0\n  metalFramebufferOnly: 0\n  n3dsDisableStereoscopicView: 0\n  n3dsEnableSharedListOpt: 1\n  n3dsEnableVSync: 0\n  xboxOneResolution: 0\n  xboxOneSResolution: 0\n  xboxOneXResolution: 3\n  xboxOneMonoLoggingLevel: 0\n  xboxOneLoggingLevel: 1\n  xboxOneDisableEsram: 0\n  xboxOnePresentImmediateThreshold: 0\n  videoMemoryForVertexBuffers: 0\n  psp2PowerMode: 0\n  psp2AcquireBGM: 1\n  m_SupportedAspectRatios:\n    4:3: 1\n    5:4: 1\n    16:10: 1\n    16:9: 1\n    Others: 1\n  bundleVersion: 0.1\n  preloadedAssets: []\n  metroInputSource: 0\n  wsaTransparentSwapchain: 0\n  m_HolographicPauseOnTrackingLoss: 1\n  xboxOneDisableKinectGpuReservation: 0\n  xboxOneEnable7thCore: 0\n  vrSettings:\n    cardboard:\n      depthFormat: 0\n      enableTransitionView: 0\n    daydream:\n      depthFormat: 0\n      useSustainedPerformanceMode: 0\n      enableVideoLayer: 0\n      useProtectedVideoMemory: 0\n      minimumSupportedHeadTracking: 0\n      maximumSupportedHeadTracking: 1\n    hololens:\n      depthFormat: 1\n      depthBufferSharingEnabled: 0\n    enable360StereoCapture: 0\n    oculus:\n      sharedDepthBuffer: 0\n      dashSupport: 0\n  protectGraphicsMemory: 0\n  useHDRDisplay: 0\n  m_ColorGamuts: 00000000\n  targetPixelDensity: 30\n  resolutionScalingMode: 0\n  androidSupportedAspectRatio: 1\n  androidMaxAspectRatio: 2.1\n  applicationIdentifier: {}\n  buildNumber: {}\n  AndroidBundleVersionCode: 1\n  AndroidMinSdkVersion: 16\n  AndroidTargetSdkVersion: 0\n  AndroidPreferredInstallLocation: 1\n  aotOptions: \n  stripEngineCode: 1\n  iPhoneStrippingLevel: 0\n  iPhoneScriptCallOptimization: 0\n  ForceInternetPermission: 0\n  ForceSDCardPermission: 0\n  CreateWallpaper: 0\n  APKExpansionFiles: 0\n  keepLoadedShadersAlive: 0\n  StripUnusedMeshComponents: 1\n  VertexChannelCompressionMask: 4054\n  iPhoneSdkVersion: 988\n  iOSTargetOSVersionString: 8.0\n  tvOSSdkVersion: 0\n  tvOSRequireExtendedGameController: 0\n  tvOSTargetOSVersionString: 9.0\n  uIPrerenderedIcon: 0\n  uIRequiresPersistentWiFi: 0\n  uIRequiresFullScreen: 1\n  uIStatusBarHidden: 1\n  uIExitOnSuspend: 0\n  uIStatusBarStyle: 0\n  iPhoneSplashScreen: {fileID: 0}\n  iPhoneHighResSplashScreen: {fileID: 0}\n  iPhoneTallHighResSplashScreen: {fileID: 0}\n  iPhone47inSplashScreen: {fileID: 0}\n  iPhone55inPortraitSplashScreen: {fileID: 0}\n  iPhone55inLandscapeSplashScreen: {fileID: 0}\n  iPhone58inPortraitSplashScreen: {fileID: 0}\n  iPhone58inLandscapeSplashScreen: {fileID: 0}\n  iPadPortraitSplashScreen: {fileID: 0}\n  iPadHighResPortraitSplashScreen: {fileID: 0}\n  iPadLandscapeSplashScreen: {fileID: 0}\n  iPadHighResLandscapeSplashScreen: {fileID: 0}\n  appleTVSplashScreen: {fileID: 0}\n  appleTVSplashScreen2x: {fileID: 0}\n  tvOSSmallIconLayers: []\n  tvOSSmallIconLayers2x: []\n  tvOSLargeIconLayers: []\n  tvOSLargeIconLayers2x: []\n  tvOSTopShelfImageLayers: []\n  tvOSTopShelfImageLayers2x: []\n  tvOSTopShelfImageWideLayers: []\n  tvOSTopShelfImageWideLayers2x: []\n  iOSLaunchScreenType: 0\n  iOSLaunchScreenPortrait: {fileID: 0}\n  iOSLaunchScreenLandscape: {fileID: 0}\n  iOSLaunchScreenBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreenFillPct: 100\n  iOSLaunchScreenSize: 100\n  iOSLaunchScreenCustomXibPath: \n  iOSLaunchScreeniPadType: 0\n  iOSLaunchScreeniPadImage: {fileID: 0}\n  iOSLaunchScreeniPadBackgroundColor:\n    serializedVersion: 2\n    rgba: 0\n  iOSLaunchScreeniPadFillPct: 100\n  iOSLaunchScreeniPadSize: 100\n  iOSLaunchScreeniPadCustomXibPath: \n  iOSUseLaunchScreenStoryboard: 0\n  iOSLaunchScreenCustomStoryboardPath: \n  iOSDeviceRequirements: []\n  iOSURLSchemes: []\n  iOSBackgroundModes: 0\n  iOSMetalForceHardShadows: 0\n  metalEditorSupport: 1\n  metalAPIValidation: 1\n  iOSRenderExtraFrameOnPause: 0\n  appleDeveloperTeamID: \n  iOSManualSigningProvisioningProfileID: \n  tvOSManualSigningProvisioningProfileID: \n  appleEnableAutomaticSigning: 0\n  iOSRequireARKit: 0\n  appleEnableProMotion: 0\n  clonedFromGUID: 56e7a2d3a00f33d44bdd161b773c35b5\n  templatePackageId: com.unity.3dempty@0.0.2\n  templateDefaultScene: Assets/Scenes/SampleScene.unity\n  AndroidTargetArchitectures: 5\n  AndroidSplashScreenScale: 0\n  androidSplashScreen: {fileID: 0}\n  AndroidKeystoreName: \n  AndroidKeyaliasName: \n  AndroidTVCompatibility: 1\n  AndroidIsGame: 1\n  AndroidEnableTango: 0\n  androidEnableBanner: 1\n  androidUseLowAccuracyLocation: 0\n  m_AndroidBanners:\n  - width: 320\n    height: 180\n    banner: {fileID: 0}\n  androidGamepadSupportLevel: 0\n  resolutionDialogBanner: {fileID: 0}\n  m_BuildTargetIcons: []\n  m_BuildTargetPlatformIcons: []\n  m_BuildTargetBatching:\n  - m_BuildTarget: Standalone\n    m_StaticBatching: 1\n    m_DynamicBatching: 0\n  m_BuildTargetGraphicsAPIs: []\n  m_BuildTargetVRSettings:\n  - m_BuildTarget: Standalone\n    m_Enabled: 0\n    m_Devices:\n    - Oculus\n    - OpenVR\n  m_BuildTargetEnableVuforiaSettings: []\n  openGLRequireES31: 0\n  openGLRequireES31AEP: 0\n  m_TemplateCustomTags: {}\n  mobileMTRendering:\n    Android: 1\n    iPhone: 1\n    tvOS: 1\n  m_BuildTargetGroupLightmapEncodingQuality: []\n  playModeTestRunnerEnabled: 0\n  runPlayModeTestAsEditModeTest: 0\n  actionOnDotNetUnhandledException: 1\n  enableInternalProfiler: 0\n  logObjCUncaughtExceptions: 1\n  enableCrashReportAPI: 0\n  cameraUsageDescription: \n  locationUsageDescription: \n  microphoneUsageDescription: \n  switchNetLibKey: \n  switchSocketMemoryPoolSize: 6144\n  switchSocketAllocatorPoolSize: 128\n  switchSocketConcurrencyLimit: 14\n  switchScreenResolutionBehavior: 2\n  switchUseCPUProfiler: 0\n  switchApplicationID: 0x01004b9000490000\n  switchNSODependencies: \n  switchTitleNames_0: \n  switchTitleNames_1: \n  switchTitleNames_2: \n  switchTitleNames_3: \n  switchTitleNames_4: \n  switchTitleNames_5: \n  switchTitleNames_6: \n  switchTitleNames_7: \n  switchTitleNames_8: \n  switchTitleNames_9: \n  switchTitleNames_10: \n  switchTitleNames_11: \n  switchTitleNames_12: \n  switchTitleNames_13: \n  switchTitleNames_14: \n  switchPublisherNames_0: \n  switchPublisherNames_1: \n  switchPublisherNames_2: \n  switchPublisherNames_3: \n  switchPublisherNames_4: \n  switchPublisherNames_5: \n  switchPublisherNames_6: \n  switchPublisherNames_7: \n  switchPublisherNames_8: \n  switchPublisherNames_9: \n  switchPublisherNames_10: \n  switchPublisherNames_11: \n  switchPublisherNames_12: \n  switchPublisherNames_13: \n  switchPublisherNames_14: \n  switchIcons_0: {fileID: 0}\n  switchIcons_1: {fileID: 0}\n  switchIcons_2: {fileID: 0}\n  switchIcons_3: {fileID: 0}\n  switchIcons_4: {fileID: 0}\n  switchIcons_5: {fileID: 0}\n  switchIcons_6: {fileID: 0}\n  switchIcons_7: {fileID: 0}\n  switchIcons_8: {fileID: 0}\n  switchIcons_9: {fileID: 0}\n  switchIcons_10: {fileID: 0}\n  switchIcons_11: {fileID: 0}\n  switchIcons_12: {fileID: 0}\n  switchIcons_13: {fileID: 0}\n  switchIcons_14: {fileID: 0}\n  switchSmallIcons_0: {fileID: 0}\n  switchSmallIcons_1: {fileID: 0}\n  switchSmallIcons_2: {fileID: 0}\n  switchSmallIcons_3: {fileID: 0}\n  switchSmallIcons_4: {fileID: 0}\n  switchSmallIcons_5: {fileID: 0}\n  switchSmallIcons_6: {fileID: 0}\n  switchSmallIcons_7: {fileID: 0}\n  switchSmallIcons_8: {fileID: 0}\n  switchSmallIcons_9: {fileID: 0}\n  switchSmallIcons_10: {fileID: 0}\n  switchSmallIcons_11: {fileID: 0}\n  switchSmallIcons_12: {fileID: 0}\n  switchSmallIcons_13: {fileID: 0}\n  switchSmallIcons_14: {fileID: 0}\n  switchManualHTML: \n  switchAccessibleURLs: \n  switchLegalInformation: \n  switchMainThreadStackSize: 1048576\n  switchPresenceGroupId: \n  switchLogoHandling: 0\n  switchReleaseVersion: 0\n  switchDisplayVersion: 1.0.0\n  switchStartupUserAccount: 0\n  switchTouchScreenUsage: 0\n  switchSupportedLanguagesMask: 0\n  switchLogoType: 0\n  switchApplicationErrorCodeCategory: \n  switchUserAccountSaveDataSize: 0\n  switchUserAccountSaveDataJournalSize: 0\n  switchApplicationAttribute: 0\n  switchCardSpecSize: -1\n  switchCardSpecClock: -1\n  switchRatingsMask: 0\n  switchRatingsInt_0: 0\n  switchRatingsInt_1: 0\n  switchRatingsInt_2: 0\n  switchRatingsInt_3: 0\n  switchRatingsInt_4: 0\n  switchRatingsInt_5: 0\n  switchRatingsInt_6: 0\n  switchRatingsInt_7: 0\n  switchRatingsInt_8: 0\n  switchRatingsInt_9: 0\n  switchRatingsInt_10: 0\n  switchRatingsInt_11: 0\n  switchLocalCommunicationIds_0: \n  switchLocalCommunicationIds_1: \n  switchLocalCommunicationIds_2: \n  switchLocalCommunicationIds_3: \n  switchLocalCommunicationIds_4: \n  switchLocalCommunicationIds_5: \n  switchLocalCommunicationIds_6: \n  switchLocalCommunicationIds_7: \n  switchParentalControl: 0\n  switchAllowsScreenshot: 1\n  switchAllowsVideoCapturing: 1\n  switchAllowsRuntimeAddOnContentInstall: 0\n  switchDataLossConfirmation: 0\n  switchSupportedNpadStyles: 3\n  switchSocketConfigEnabled: 0\n  switchTcpInitialSendBufferSize: 32\n  switchTcpInitialReceiveBufferSize: 64\n  switchTcpAutoSendBufferSizeMax: 256\n  switchTcpAutoReceiveBufferSizeMax: 256\n  switchUdpSendBufferSize: 9\n  switchUdpReceiveBufferSize: 42\n  switchSocketBufferEfficiency: 4\n  switchSocketInitializeEnabled: 1\n  switchNetworkInterfaceManagerInitializeEnabled: 1\n  switchPlayerConnectionEnabled: 1\n  ps4NPAgeRating: 12\n  ps4NPTitleSecret: \n  ps4NPTrophyPackPath: \n  ps4ParentalLevel: 11\n  ps4ContentID: ED1633-NPXX51362_00-0000000000000000\n  ps4Category: 0\n  ps4MasterVersion: 01.00\n  ps4AppVersion: 01.00\n  ps4AppType: 0\n  ps4ParamSfxPath: \n  ps4VideoOutPixelFormat: 0\n  ps4VideoOutInitialWidth: 1920\n  ps4VideoOutBaseModeInitialWidth: 1920\n  ps4VideoOutReprojectionRate: 60\n  ps4PronunciationXMLPath: \n  ps4PronunciationSIGPath: \n  ps4BackgroundImagePath: \n  ps4StartupImagePath: \n  ps4StartupImagesFolder: \n  ps4IconImagesFolder: \n  ps4SaveDataImagePath: \n  ps4SdkOverride: \n  ps4BGMPath: \n  ps4ShareFilePath: \n  ps4ShareOverlayImagePath: \n  ps4PrivacyGuardImagePath: \n  ps4NPtitleDatPath: \n  ps4RemotePlayKeyAssignment: -1\n  ps4RemotePlayKeyMappingDir: \n  ps4PlayTogetherPlayerCount: 0\n  ps4EnterButtonAssignment: 1\n  ps4ApplicationParam1: 0\n  ps4ApplicationParam2: 0\n  ps4ApplicationParam3: 0\n  ps4ApplicationParam4: 0\n  ps4DownloadDataSize: 0\n  ps4GarlicHeapSize: 2048\n  ps4ProGarlicHeapSize: 2560\n  ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ\n  ps4pnSessions: 1\n  ps4pnPresence: 1\n  ps4pnFriends: 1\n  ps4pnGameCustomData: 1\n  playerPrefsSupport: 0\n  enableApplicationExit: 0\n  restrictedAudioUsageRights: 0\n  ps4UseResolutionFallback: 0\n  ps4ReprojectionSupport: 0\n  ps4UseAudio3dBackend: 0\n  ps4SocialScreenEnabled: 0\n  ps4ScriptOptimizationLevel: 0\n  ps4Audio3dVirtualSpeakerCount: 14\n  ps4attribCpuUsage: 0\n  ps4PatchPkgPath: \n  ps4PatchLatestPkgPath: \n  ps4PatchChangeinfoPath: \n  ps4PatchDayOne: 0\n  ps4attribUserManagement: 0\n  ps4attribMoveSupport: 0\n  ps4attrib3DSupport: 0\n  ps4attribShareSupport: 0\n  ps4attribExclusiveVR: 0\n  ps4disableAutoHideSplash: 0\n  ps4videoRecordingFeaturesUsed: 0\n  ps4contentSearchFeaturesUsed: 0\n  ps4attribEyeToEyeDistanceSettingVR: 0\n  ps4IncludedModules: []\n  monoEnv: \n  psp2Splashimage: {fileID: 0}\n  psp2NPTrophyPackPath: \n  psp2NPSupportGBMorGJP: 0\n  psp2NPAgeRating: 12\n  psp2NPTitleDatPath: \n  psp2NPCommsID: \n  psp2NPCommunicationsID: \n  psp2NPCommsPassphrase: \n  psp2NPCommsSig: \n  psp2ParamSfxPath: \n  psp2ManualPath: \n  psp2LiveAreaGatePath: \n  psp2LiveAreaBackroundPath: \n  psp2LiveAreaPath: \n  psp2LiveAreaTrialPath: \n  psp2PatchChangeInfoPath: \n  psp2PatchOriginalPackage: \n  psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui\n  psp2KeystoneFile: \n  psp2MemoryExpansionMode: 0\n  psp2DRMType: 0\n  psp2StorageType: 0\n  psp2MediaCapacity: 0\n  psp2DLCConfigPath: \n  psp2ThumbnailPath: \n  psp2BackgroundPath: \n  psp2SoundPath: \n  psp2TrophyCommId: \n  psp2TrophyPackagePath: \n  psp2PackagedResourcesPath: \n  psp2SaveDataQuota: 10240\n  psp2ParentalLevel: 1\n  psp2ShortTitle: Not Set\n  psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF\n  psp2Category: 0\n  psp2MasterVersion: 01.00\n  psp2AppVersion: 01.00\n  psp2TVBootMode: 0\n  psp2EnterButtonAssignment: 2\n  psp2TVDisableEmu: 0\n  psp2AllowTwitterDialog: 1\n  psp2Upgradable: 0\n  psp2HealthWarning: 0\n  psp2UseLibLocation: 0\n  psp2InfoBarOnStartup: 0\n  psp2InfoBarColor: 0\n  psp2ScriptOptimizationLevel: 0\n  splashScreenBackgroundSourceLandscape: {fileID: 0}\n  splashScreenBackgroundSourcePortrait: {fileID: 0}\n  spritePackerPolicy: \n  webGLMemorySize: 256\n  webGLExceptionSupport: 1\n  webGLNameFilesAsHashes: 0\n  webGLDataCaching: 0\n  webGLDebugSymbols: 0\n  webGLEmscriptenArgs: \n  webGLModulesDirectory: \n  webGLTemplate: APPLICATION:Default\n  webGLAnalyzeBuildSize: 0\n  webGLUseEmbeddedResources: 0\n  webGLCompressionFormat: 1\n  webGLLinkerTarget: 0\n  scriptingDefineSymbols:\n    1: UNITY_POST_PROCESSING_STACK_V2\n    4: UNITY_POST_PROCESSING_STACK_V2\n    7: UNITY_POST_PROCESSING_STACK_V2\n    13: UNITY_POST_PROCESSING_STACK_V2\n    17: UNITY_POST_PROCESSING_STACK_V2\n    18: UNITY_POST_PROCESSING_STACK_V2\n    19: UNITY_POST_PROCESSING_STACK_V2\n    21: UNITY_POST_PROCESSING_STACK_V2\n    23: UNITY_POST_PROCESSING_STACK_V2\n    24: UNITY_POST_PROCESSING_STACK_V2\n    25: UNITY_POST_PROCESSING_STACK_V2\n    26: UNITY_POST_PROCESSING_STACK_V2\n    27: UNITY_POST_PROCESSING_STACK_V2\n  platformArchitecture: {}\n  scriptingBackend: {}\n  il2cppCompilerConfiguration: {}\n  incrementalIl2cppBuild: {}\n  allowUnsafeCode: 0\n  additionalIl2CppArgs: \n  scriptingRuntimeVersion: 0\n  apiCompatibilityLevelPerPlatform: {}\n  m_RenderingPath: 1\n  m_MobileRenderingPath: 1\n  metroPackageName: Template_3D\n  metroPackageVersion: \n  metroCertificatePath: \n  metroCertificatePassword: \n  metroCertificateSubject: \n  metroCertificateIssuer: \n  metroCertificateNotAfter: 0000000000000000\n  metroApplicationDescription: Template_3D\n  wsaImages: {}\n  metroTileShortName: \n  metroCommandLineArgsFile: \n  metroTileShowName: 0\n  metroMediumTileShowName: 0\n  metroLargeTileShowName: 0\n  metroWideTileShowName: 0\n  metroDefaultTileSize: 1\n  metroTileForegroundText: 2\n  metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}\n  metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,\n    a: 1}\n  metroSplashScreenUseBackgroundColor: 0\n  platformCapabilities: {}\n  metroFTAName: \n  metroFTAFileTypes: []\n  metroProtocolName: \n  metroCompilationOverrides: 1\n  tizenProductDescription: \n  tizenProductURL: \n  tizenSigningProfileName: \n  tizenGPSPermissions: 0\n  tizenMicrophonePermissions: 0\n  tizenDeploymentTarget: \n  tizenDeploymentTargetType: -1\n  tizenMinOSVersion: 1\n  n3dsUseExtSaveData: 0\n  n3dsCompressStaticMem: 1\n  n3dsExtSaveDataNumber: 0x12345\n  n3dsStackSize: 131072\n  n3dsTargetPlatform: 2\n  n3dsRegion: 7\n  n3dsMediaSize: 0\n  n3dsLogoStyle: 3\n  n3dsTitle: GameName\n  n3dsProductCode: \n  n3dsApplicationId: 0xFF3FF\n  XboxOneProductId: \n  XboxOneUpdateKey: \n  XboxOneSandboxId: \n  XboxOneContentId: \n  XboxOneTitleId: \n  XboxOneSCId: \n  XboxOneGameOsOverridePath: \n  XboxOnePackagingOverridePath: \n  XboxOneAppManifestOverridePath: \n  XboxOnePackageEncryption: 0\n  XboxOnePackageUpdateGranularity: 2\n  XboxOneDescription: \n  XboxOneLanguage:\n  - enus\n  XboxOneCapability: []\n  XboxOneGameRating: {}\n  XboxOneIsContentPackage: 0\n  XboxOneEnableGPUVariability: 0\n  XboxOneSockets: {}\n  XboxOneSplashScreen: {fileID: 0}\n  XboxOneAllowedProductIds: []\n  XboxOnePersistentLocalStorageSize: 0\n  xboxOneScriptCompiler: 0\n  vrEditorSettings:\n    daydream:\n      daydreamIconForeground: {fileID: 0}\n      daydreamIconBackground: {fileID: 0}\n  cloudServicesEnabled:\n    UNet: 1\n  facebookSdkVersion: 7.9.4\n  apiCompatibilityLevel: 2\n  cloudProjectId: \n  projectName: Template_3D\n  organizationId: \n  cloudEnabled: 0\n  enableNativePlatformBackendsForNewInputSystem: 0\n  disableOldInputManagerSupport: 0\n"
  },
  {
    "path": "ProjectSettings/ProjectVersion.txt",
    "content": "m_EditorVersion: 2018.1.0b9\n"
  },
  {
    "path": "ProjectSettings/QualitySettings.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!47 &1\r\nQualitySettings:\r\n  m_ObjectHideFlags: 0\r\n  serializedVersion: 5\r\n  m_CurrentQuality: 4\r\n  m_QualitySettings:\r\n  - serializedVersion: 2\r\n    name: Very Low\r\n    pixelLightCount: 0\r\n    shadows: 0\r\n    shadowResolution: 0\r\n    shadowProjection: 1\r\n    shadowCascades: 1\r\n    shadowDistance: 15\r\n    shadowNearPlaneOffset: 3\r\n    shadowCascade2Split: 0.33333334\r\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\r\n    shadowmaskMode: 0\r\n    blendWeights: 1\r\n    textureQuality: 1\r\n    anisotropicTextures: 0\r\n    antiAliasing: 0\r\n    softParticles: 0\r\n    softVegetation: 0\r\n    realtimeReflectionProbes: 0\r\n    billboardsFaceCameraPosition: 0\r\n    vSyncCount: 0\r\n    lodBias: 0.3\r\n    maximumLODLevel: 0\r\n    particleRaycastBudget: 4\r\n    asyncUploadTimeSlice: 2\r\n    asyncUploadBufferSize: 4\r\n    resolutionScalingFixedDPIFactor: 1\r\n    excludedTargetPlatforms: []\r\n  - serializedVersion: 2\r\n    name: Low\r\n    pixelLightCount: 0\r\n    shadows: 0\r\n    shadowResolution: 0\r\n    shadowProjection: 1\r\n    shadowCascades: 1\r\n    shadowDistance: 20\r\n    shadowNearPlaneOffset: 3\r\n    shadowCascade2Split: 0.33333334\r\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\r\n    shadowmaskMode: 0\r\n    blendWeights: 2\r\n    textureQuality: 0\r\n    anisotropicTextures: 0\r\n    antiAliasing: 0\r\n    softParticles: 0\r\n    softVegetation: 0\r\n    realtimeReflectionProbes: 0\r\n    billboardsFaceCameraPosition: 0\r\n    vSyncCount: 0\r\n    lodBias: 0.4\r\n    maximumLODLevel: 0\r\n    particleRaycastBudget: 16\r\n    asyncUploadTimeSlice: 2\r\n    asyncUploadBufferSize: 4\r\n    resolutionScalingFixedDPIFactor: 1\r\n    excludedTargetPlatforms: []\r\n  - serializedVersion: 2\r\n    name: Medium\r\n    pixelLightCount: 1\r\n    shadows: 1\r\n    shadowResolution: 0\r\n    shadowProjection: 1\r\n    shadowCascades: 1\r\n    shadowDistance: 20\r\n    shadowNearPlaneOffset: 3\r\n    shadowCascade2Split: 0.33333334\r\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\r\n    shadowmaskMode: 0\r\n    blendWeights: 2\r\n    textureQuality: 0\r\n    anisotropicTextures: 1\r\n    antiAliasing: 0\r\n    softParticles: 0\r\n    softVegetation: 0\r\n    realtimeReflectionProbes: 0\r\n    billboardsFaceCameraPosition: 0\r\n    vSyncCount: 1\r\n    lodBias: 0.7\r\n    maximumLODLevel: 0\r\n    particleRaycastBudget: 64\r\n    asyncUploadTimeSlice: 2\r\n    asyncUploadBufferSize: 4\r\n    resolutionScalingFixedDPIFactor: 1\r\n    excludedTargetPlatforms: []\r\n  - serializedVersion: 2\r\n    name: High\r\n    pixelLightCount: 2\r\n    shadows: 2\r\n    shadowResolution: 1\r\n    shadowProjection: 1\r\n    shadowCascades: 2\r\n    shadowDistance: 40\r\n    shadowNearPlaneOffset: 3\r\n    shadowCascade2Split: 0.33333334\r\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\r\n    shadowmaskMode: 1\r\n    blendWeights: 2\r\n    textureQuality: 0\r\n    anisotropicTextures: 1\r\n    antiAliasing: 2\r\n    softParticles: 0\r\n    softVegetation: 1\r\n    realtimeReflectionProbes: 1\r\n    billboardsFaceCameraPosition: 1\r\n    vSyncCount: 1\r\n    lodBias: 1\r\n    maximumLODLevel: 0\r\n    particleRaycastBudget: 256\r\n    asyncUploadTimeSlice: 2\r\n    asyncUploadBufferSize: 4\r\n    resolutionScalingFixedDPIFactor: 1\r\n    excludedTargetPlatforms: []\r\n  - serializedVersion: 2\r\n    name: Very High\r\n    pixelLightCount: 3\r\n    shadows: 2\r\n    shadowResolution: 2\r\n    shadowProjection: 1\r\n    shadowCascades: 2\r\n    shadowDistance: 40\r\n    shadowNearPlaneOffset: 3\r\n    shadowCascade2Split: 0.33333334\r\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\r\n    shadowmaskMode: 1\r\n    blendWeights: 4\r\n    textureQuality: 0\r\n    anisotropicTextures: 1\r\n    antiAliasing: 4\r\n    softParticles: 1\r\n    softVegetation: 1\r\n    realtimeReflectionProbes: 1\r\n    billboardsFaceCameraPosition: 1\r\n    vSyncCount: 1\r\n    lodBias: 1.5\r\n    maximumLODLevel: 0\r\n    particleRaycastBudget: 1024\r\n    asyncUploadTimeSlice: 2\r\n    asyncUploadBufferSize: 4\r\n    resolutionScalingFixedDPIFactor: 1\r\n    excludedTargetPlatforms: []\r\n  - serializedVersion: 2\r\n    name: Ultra\r\n    pixelLightCount: 4\r\n    shadows: 2\r\n    shadowResolution: 2\r\n    shadowProjection: 1\r\n    shadowCascades: 4\r\n    shadowDistance: 150\r\n    shadowNearPlaneOffset: 3\r\n    shadowCascade2Split: 0.33333334\r\n    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}\r\n    shadowmaskMode: 1\r\n    blendWeights: 4\r\n    textureQuality: 0\r\n    anisotropicTextures: 1\r\n    antiAliasing: 4\r\n    softParticles: 1\r\n    softVegetation: 1\r\n    realtimeReflectionProbes: 1\r\n    billboardsFaceCameraPosition: 1\r\n    vSyncCount: 1\r\n    lodBias: 2\r\n    maximumLODLevel: 0\r\n    particleRaycastBudget: 4096\r\n    asyncUploadTimeSlice: 2\r\n    asyncUploadBufferSize: 4\r\n    resolutionScalingFixedDPIFactor: 1\r\n    excludedTargetPlatforms: []\r\n  m_PerPlatformDefaultQuality:\r\n    Android: 2\r\n    Nintendo 3DS: 5\r\n    Nintendo Switch: 5\r\n    PS4: 5\r\n    PSP2: 2\r\n    Standalone: 5\r\n    Tizen: 2\r\n    WebGL: 3\r\n    WiiU: 5\r\n    Windows Store Apps: 5\r\n    XboxOne: 5\r\n    iPhone: 2\r\n    tvOS: 2\r\n"
  },
  {
    "path": "ProjectSettings/TagManager.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!78 &1\r\nTagManager:\r\n  serializedVersion: 2\r\n  tags: []\r\n  layers:\r\n  - Default\r\n  - TransparentFX\r\n  - Ignore Raycast\r\n  - \r\n  - Water\r\n  - UI\r\n  - \r\n  - \r\n  - PostProcessing\r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  - \r\n  m_SortingLayers:\r\n  - name: Default\r\n    uniqueID: 0\r\n    locked: 0\r\n"
  },
  {
    "path": "ProjectSettings/TimeManager.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!5 &1\r\nTimeManager:\r\n  m_ObjectHideFlags: 0\r\n  Fixed Timestep: 0.0167\r\n  Maximum Allowed Timestep: 0.1\r\n  m_TimeScale: 1\r\n  Maximum Particle Timestep: 0.03\r\n"
  },
  {
    "path": "ProjectSettings/UnityConnectSettings.asset",
    "content": "%YAML 1.1\r\n%TAG !u! tag:unity3d.com,2011:\r\n--- !u!310 &1\r\nUnityConnectSettings:\r\n  m_ObjectHideFlags: 0\r\n  m_Enabled: 0\r\n  m_TestMode: 0\r\n  m_TestEventUrl: \r\n  m_TestConfigUrl: \r\n  m_TestInitMode: 0\r\n  CrashReportingSettings:\r\n    m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes\r\n    m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate\r\n    m_Enabled: 0\r\n    m_CaptureEditorExceptions: 1\r\n  UnityPurchasingSettings:\r\n    m_Enabled: 0\r\n    m_TestMode: 0\r\n  UnityAnalyticsSettings:\r\n    m_Enabled: 1\r\n    m_InitializeOnStartup: 1\r\n    m_TestMode: 0\r\n    m_TestEventUrl: \r\n    m_TestConfigUrl: \r\n  UnityAdsSettings:\r\n    m_Enabled: 0\r\n    m_InitializeOnStartup: 1\r\n    m_TestMode: 0\r\n    m_IosGameId: \r\n    m_AndroidGameId: \r\n    m_GameIds: {}\r\n    m_GameId: \r\n  PerformanceReportingSettings:\r\n    m_Enabled: 0\r\n"
  },
  {
    "path": "README.md",
    "content": "# SVGMeshUnity\n\n<img width=\"757\" alt=\"typo\" src=\"https://user-images.githubusercontent.com/1482297/36834202-765a8abe-1d75-11e8-8be9-369d5978ed71.png\">\n\nGenerates mesh from [SVG path](https://github.com/beinteractive/SVGMeshUnity/blob/de472c2f716329e2991f75fcab9bd7253cc8ff12/Assets/Samples/Scripts/Simple.cs#L8-L14) in realtime for Unity.\n\nThis is a port of https://github.com/mattdesl/svg-mesh-3d\n\n## Install\n\nCopy `Assets/SVGMeshUnity` directory to your Assets directory.\n\nAdd a `SVGMesh` component to a GameObject that has `MeshFilter` and `MeshRenderer`.\n\n<img width=\"321\" alt=\"inspector\" src=\"https://user-images.githubusercontent.com/1482297/36832680-d7e41b0c-1d6f-11e8-93f6-98b146e924dc.png\">\n\n## Usage\n\n### Create mesh from SVG path\n\n<img width=\"239\" alt=\"twitter\" src=\"https://user-images.githubusercontent.com/1482297/36832746-20568ff0-1d70-11e8-8cc1-7e8d0f2156b4.png\"> <img width=\"252\" alt=\"twtitter-wire\" src=\"https://user-images.githubusercontent.com/1482297/36832554-49228084-1d6f-11e8-9049-7a5e9bdc7b1b.png\">\n\n```C#\nvar mesh = GetComponent<SVGMesh>();\nvar svg = new SVGData();\nsvg.Path(\"M17.316,6.246c0.008,0.162,0.011,... and so on\");\nmesh.Fill(svg);\n```\n\nSimply create an instance of `SVGData` and set SVG path data string by calling `SVGData.Path()`.\nThen call `Mesh.Fill()`, a mesh will be generated.\n\n### Create mesh from code\n\nInstead of use SVG path data, you can directly make path data in your code.\n\n<img width=\"239\" src=\"https://user-images.githubusercontent.com/1482297/36834678-f834db56-1d76-11e8-8845-56547b673004.gif\">\n\n```C#\nvoid Update()\n{\n    SVG.Clear();\n\n    var resolution = 5;\n    var radius = 3f;\n    \n    SVG.Move(NoisedR(radius, 0), 0f);\n    \n    for (var i = 0; i < resolution; ++i)\n    {\n        var i0 = i;\n        var i1 = (i + 1) % resolution;\n        \n        var angle0 = Mathf.PI * 2f * ((float) i0 / resolution);\n        var angle1 = Mathf.PI * 2f * ((float) i1 / resolution);\n\n        var r0 = NoisedR(radius, i0);\n        var r1 = NoisedR(radius, i1);\n        var x0 = Mathf.Cos(angle0) * r0;\n        var y0 = Mathf.Sin(angle0) * r0;\n        var x1 = Mathf.Cos(angle1) * r1;\n        var y1 = Mathf.Sin(angle1) * r1;\n\n        var cx = x0 + (x1 - x0) * 0.5f;\n        var cy = y0 + (y1 - y0) * 0.5f;\n        var ca = Mathf.Atan2(cy, cx);\n        var cr = 0.3f + (Mathf.PerlinNoise(Time.time, i * -100f) - 0.5f) * 1.15f;\n        cx += Mathf.Cos(ca) * cr;\n        cy += Mathf.Sin(ca) * cr;\n        \n        SVG.Curve(cx, cy, cx, cy, x1, y1);\n    }\n    \n    Mesh.Fill(SVG);\n}\n\nprivate float NoisedR(float r, float randomize)\n{\n    return r + (Mathf.PerlinNoise(Time.time, randomize * 10f) - 0.5f) * 0.5f;\n}\n```\n\n<img width=\"239\" src=\"https://user-images.githubusercontent.com/1482297/37012499-4b776d64-2138-11e8-856a-1241272288c6.gif\">\n\n```C#\npublic class Move : MonoBehaviour\n{\n    [SerializeField] private float R = 0.5f;\n    [SerializeField] private float IntervalRate = 1f;\n    \n    [SerializeField] private SVGMesh HeadMesh;\n    [SerializeField] private SVGMesh TailMesh;\n    [SerializeField] private SVGMesh BodyMesh;\n\n    private SVGData HeadSVG;\n    private SVGData TailSVG;\n    private SVGData BodySVG;\n\n    private Vector2 Head;\n    private Vector2 Tail;\n\n    private Vector2 To;\n\n    private float HeadR;\n    private float TailR;\n\n    private float Interval;\n    private float FollowTime;\n\n    void Start()\n    {\n        HeadSVG = new SVGData();\n        TailSVG = new SVGData();\n        BodySVG = new SVGData();\n\n        Head = RandomField();\n        Tail = Head;\n    }\n\n    void Update()\n    {\n        HeadSVG.Clear();\n        TailSVG.Clear();\n        BodySVG.Clear();\n\n        Update(Time.deltaTime);\n\n        var v = Mathf.Max(0.7f, 1.3f - Mathf.Clamp01((Head - Tail).magnitude / 3f));\n        \n        Circle(HeadSVG, Head, HeadR);\n        Circle(TailSVG, Tail, TailR);\n        Metaball(BodySVG, Head, HeadR, Tail, TailR, v);\n        \n        HeadMesh.Fill(HeadSVG);\n        TailMesh.Fill(TailSVG);\n        BodyMesh.Fill(BodySVG);\n    }\n\n    private void Update(float dt)\n    {\n        Interval -= dt;\n        FollowTime -= dt;\n\n        if (Interval <= 0f)\n        {\n            To = RandomField();\n            To = Head + Vector2.ClampMagnitude(To - Head, 2f);\n            HeadR = R * 0.15f;\n            TailR = R;\n            Interval = Random.Range(1.5f, 2.6f) * IntervalRate;\n            FollowTime = Random.Range(0.15f, 0.25f);\n        }\n\n        Head = Vector2.Lerp(To, Head, Mathf.Exp(-5f * dt));\n\n        if (FollowTime <= 0f)\n        {\n            Tail = Vector2.Lerp(Head, Tail, Mathf.Exp(-5f * dt));\n\n            if (FollowTime <= -0.4f)\n            {\n                TailR = Mathf.Lerp(R, TailR, Mathf.Exp(-4f * dt));\n            }\n            else\n            {\n                TailR = Mathf.Lerp(R * 0.05f, TailR, Mathf.Exp(-6f * dt));\n            }\n            \n            HeadR = Mathf.Lerp(R, HeadR, Mathf.Exp(-3f * dt));\n        }\n    }\n\n    private Vector2 RandomField()\n    {\n        return new Vector2(Random.Range(-4f, 4f), Random.Range(-4f, 4f));\n    }\n\n    private void Circle(SVGData svg, Vector2 c, float r)\n    {\n        for (var i = 0; i < 4; ++i)\n        {\n            var angle0 = Mathf.PI * 0.5f * (i + 0);\n            var angle1 = Mathf.PI * 0.5f * (i + 1);\n\n            var x0 = c.x + Mathf.Cos(angle0) * r;\n            var y0 = c.y - Mathf.Sin(angle0) * r;\n            var x1 = c.x + Mathf.Cos(angle1) * r;\n            var y1 = c.y - Mathf.Sin(angle1) * r;\n\n            var a = r * (4f / 3f) * Mathf.Tan((angle1 - angle0) / 4f);\n            var inAngle = angle0 + Mathf.PI * 0.5f;\n            var inX = x0 + Mathf.Cos(inAngle) * a;\n            var inY = y0 - Mathf.Sin(inAngle) * a;\n            var outAngle = angle1 - Mathf.PI * 0.5f;\n            var outX = x1 + Mathf.Cos(outAngle) * a;\n            var outY = y1 - Mathf.Sin(outAngle) * a;\n\n            if (i == 0)\n            {\n                svg.Move(x0, y0);\n            }\n            \n            svg.Curve(inX, inY, outX, outY, x1, y1);\n        }\n    }\n    \n    // http://shspage.com/aijs/\n\n    private void Metaball(SVGData svg, Vector2 c1, float r1, Vector2 c2, float r2, float v)\n    {\n        if (r1 == 0f || r2 == 0f)\n        {\n            return;\n        }\n  \n        var pi2 = Mathf.PI / 2f;\n\n        var d = (c2 - c1).magnitude;\n\n        var u1 = 0f;\n        var u2 = 0f;\n        if (d <= Mathf.Abs(r1 - r2))\n        {\n            return;\n        }\n        else if (d < r1 + r2)\n        {\n            // case circles are overlapping\n            u1 = Mathf.Acos((r1 * r1 + d * d - r2 * r2) / (2 * r1 * d));\n            u2 = Mathf.Acos((r2 * r2 + d * d - r1 * r1) / (2 * r2 * d));\n        }\n\n        var t1 = Mathf.Atan2(c2.y - c1.y, c2.x - c1.x);\n        var t2 = Mathf.Acos((r1 - r2) / d);\n  \n        var t1a = t1 + u1 + (t2 - u1) * v;\n        var t1b = t1 - u1 - (t2 - u1) * v;\n        var t2a = t1 + Mathf.PI - u2 - (Mathf.PI - u2 - t2) * v;\n        var t2b = t1 - Mathf.PI + u2 + (Mathf.PI - u2 - t2) * v;\n  \n        var p1a = PointOnCircle(c1, t1a, r1);\n        var p1b = PointOnCircle(c1, t1b, r1);\n        var p2a = PointOnCircle(c2, t2a, r2);\n        var p2b = PointOnCircle(c2, t2b, r2);\n\n        // define handle length by the distance between both ends of the curve to draw\n        var handle_len_rate = 2;\n        var d2 = Mathf.Min(v * handle_len_rate, (p2a - p1a).magnitude / (r1 + r2));\n        d2 *= Mathf.Min(1, d * 2 / (r1 + r2)); // case circles are overlapping\n        r1 *= d2;\n        r2 *= d2;\n        \n        svg.Move(p1a);\n        svg.Curve(PointOnCircle(p1a, t1a - pi2, r1), PointOnCircle(p2a, t2a + pi2, r2), p2a);\n        svg.Line(p2b);\n        svg.Curve(PointOnCircle(p2b, t2b - pi2, r2), PointOnCircle(p1b, t1b + pi2, r1), p1b);\n        svg.Line(p1a);\n    }\n\n    private Vector2 PointOnCircle(Vector2 c, float angle, float r)\n    {\n        return c + new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * r;\n    }\n}\n```\n\nUse `SVGData.Move`, `SVGData.Line`, `SVGData.Curve`, ... and so on. Create realtime path as you like.\n\n### Options\n\nThe following options are provided in SVGMesh component.\n\n- `Delaunay` (default `false`)\n  - whether to use Delaunay triangulation\n  - Delaunay triangulation is slower, but looks better\n- `Scale` (default `1`)\n  - a positive number, the scale at which to [approximate the curves](https://github.com/mattdesl/adaptive-bezier-curve) from the SVG paths\n  - higher number leads to smoother corners, but slower triangulation\n- `Interior` if set, only return interior faces. See note. (Default `true`)\n- `Exterior` if set, only return exterior faces. See note. (Default `false`)\n- `Infinity` if set, then the triangulation is augmented with a [point at infinity](https://en.wikipedia.org/wiki/Point_at_infinity) represented by the index `-1`.  (Default `false`)\n\n## License\n\nMIT\n"
  }
]