@wcardinal/wcardinal-ui 0.408.0 → 0.409.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types/wcardinal/ui/shape/e-shape-buffer.d.ts +3 -9
- package/dist/types/wcardinal/ui/shape/e-shape-container.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/build-bar.d.ts +1 -2
- package/dist/types/wcardinal/ui/shape/variant/build-circle.d.ts +1 -2
- package/dist/types/wcardinal/ui/shape/variant/build-color.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/build-image-sdf.d.ts +0 -1
- package/dist/types/wcardinal/ui/shape/variant/build-line-of-any.d.ts +17 -1
- package/dist/types/wcardinal/ui/shape/variant/build-line.d.ts +2 -3
- package/dist/types/wcardinal/ui/shape/variant/build-null.d.ts +0 -1
- package/dist/types/wcardinal/ui/shape/variant/build-rectangle-rounded.d.ts +2 -3
- package/dist/types/wcardinal/ui/shape/variant/build-rectangle.d.ts +4 -5
- package/dist/types/wcardinal/ui/shape/variant/build-semicircle.d.ts +1 -2
- package/dist/types/wcardinal/ui/shape/variant/build-text.d.ts +0 -1
- package/dist/types/wcardinal/ui/shape/variant/build-triangle-rounded.d.ts +1 -2
- package/dist/types/wcardinal/ui/shape/variant/build-triangle.d.ts +1 -2
- package/dist/types/wcardinal/ui/shape/variant/builder-bar.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/builder-base.d.ts +1 -2
- package/dist/types/wcardinal/ui/shape/variant/builder-line-of-any.d.ts +1 -2
- package/dist/types/wcardinal/ui/shape/variant/builder-line-of-rectangle-roundeds.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/builder-line-of-rectangles.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/builder-line-of-triangle-roundeds.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/builder-line.d.ts +1 -2
- package/dist/types/wcardinal/ui/shape/variant/builder-marker-base.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/builder-marker-rectangle.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/builder-rectangle-pivoted.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/builder-rectangle-rounded.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/builder-rectangle.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/builder-text.d.ts +1 -2
- package/dist/types/wcardinal/ui/shape/variant/builder-triangle-rounded.d.ts +1 -1
- package/dist/types/wcardinal/ui/shape/variant/builder.d.ts +9 -18
- package/dist/types/wcardinal/ui/shape/variant/index.d.ts +0 -1
- package/dist/types/wcardinal/ui/shape/variant/to-dash.d.ts +1 -2
- package/dist/types/wcardinal/ui/shape/variant/to-normal-packed.d.ts +1 -0
- package/dist/types/wcardinal/ui/shape/variant/to-normal.d.ts +1 -0
- package/dist/types/wcardinal/ui/shape/variant/to-packed.d.ts +2 -0
- package/dist/types/wcardinal/ui/shape/variant/to-vector-length.d.ts +1 -0
- package/dist/types/wcardinal/ui/shape/variant/to-vector.d.ts +1 -0
- package/dist/wcardinal/ui/shape/e-shape-buffer.js +10 -30
- package/dist/wcardinal/ui/shape/e-shape-buffer.js.map +1 -1
- package/dist/wcardinal/ui/shape/e-shape-container.js +1 -1
- package/dist/wcardinal/ui/shape/e-shape-container.js.map +1 -1
- package/dist/wcardinal/ui/shape/e-shape-renderer.js +4 -5
- package/dist/wcardinal/ui/shape/e-shape-renderer.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-bar.js +37 -63
- package/dist/wcardinal/ui/shape/variant/build-bar.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-circle.js +63 -40
- package/dist/wcardinal/ui/shape/variant/build-circle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-color.js +8 -11
- package/dist/wcardinal/ui/shape/variant/build-color.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-image-sdf.js +30 -37
- package/dist/wcardinal/ui/shape/variant/build-image-sdf.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-line-of-any.js +244 -25
- package/dist/wcardinal/ui/shape/variant/build-line-of-any.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-line.js +149 -129
- package/dist/wcardinal/ui/shape/variant/build-line.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-null.js +0 -7
- package/dist/wcardinal/ui/shape/variant/build-null.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-rectangle-rounded.js +917 -849
- package/dist/wcardinal/ui/shape/variant/build-rectangle-rounded.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-rectangle.js +279 -353
- package/dist/wcardinal/ui/shape/variant/build-rectangle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-semicircle.js +45 -31
- package/dist/wcardinal/ui/shape/variant/build-semicircle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-text.js +6 -13
- package/dist/wcardinal/ui/shape/variant/build-text.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-triangle-rounded.js +255 -128
- package/dist/wcardinal/ui/shape/variant/build-triangle-rounded.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/build-triangle.js +55 -35
- package/dist/wcardinal/ui/shape/variant/build-triangle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-bar.js +8 -11
- package/dist/wcardinal/ui/shape/variant/builder-bar.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-base.js +18 -22
- package/dist/wcardinal/ui/shape/variant/builder-base.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-circle.js +4 -7
- package/dist/wcardinal/ui/shape/variant/builder-circle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-image-sdf.js +3 -6
- package/dist/wcardinal/ui/shape/variant/builder-image-sdf.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-line-of-any.js +13 -17
- package/dist/wcardinal/ui/shape/variant/builder-line-of-any.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-line-of-circles.js +5 -12
- package/dist/wcardinal/ui/shape/variant/builder-line-of-circles.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-line-of-rectangle-roundeds.js +10 -26
- package/dist/wcardinal/ui/shape/variant/builder-line-of-rectangle-roundeds.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-line-of-rectangles.js +9 -25
- package/dist/wcardinal/ui/shape/variant/builder-line-of-rectangles.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-line-of-triangle-roundeds.js +9 -25
- package/dist/wcardinal/ui/shape/variant/builder-line-of-triangle-roundeds.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-line-of-triangles.js +5 -12
- package/dist/wcardinal/ui/shape/variant/builder-line-of-triangles.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-line.js +13 -27
- package/dist/wcardinal/ui/shape/variant/builder-line.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-marker-base.js +27 -19
- package/dist/wcardinal/ui/shape/variant/builder-marker-base.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-marker-circle.js +4 -7
- package/dist/wcardinal/ui/shape/variant/builder-marker-circle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-marker-rectangle.js +7 -13
- package/dist/wcardinal/ui/shape/variant/builder-marker-rectangle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-marker-triangle.js +4 -7
- package/dist/wcardinal/ui/shape/variant/builder-marker-triangle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-rectangle-pivoted.js +7 -13
- package/dist/wcardinal/ui/shape/variant/builder-rectangle-pivoted.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-rectangle-rounded.js +6 -12
- package/dist/wcardinal/ui/shape/variant/builder-rectangle-rounded.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-rectangle.js +7 -13
- package/dist/wcardinal/ui/shape/variant/builder-rectangle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-semicircle.js +4 -7
- package/dist/wcardinal/ui/shape/variant/builder-semicircle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-text.js +19 -28
- package/dist/wcardinal/ui/shape/variant/builder-text.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-triangle-rounded.js +7 -12
- package/dist/wcardinal/ui/shape/variant/builder-triangle-rounded.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder-triangle.js +4 -7
- package/dist/wcardinal/ui/shape/variant/builder-triangle.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/builder.js +18 -14
- package/dist/wcardinal/ui/shape/variant/builder.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/index.js +0 -1
- package/dist/wcardinal/ui/shape/variant/index.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/to-dash.js +8 -9
- package/dist/wcardinal/ui/shape/variant/to-dash.js.map +1 -1
- package/dist/wcardinal/ui/shape/variant/to-normal-packed.js +7 -0
- package/dist/wcardinal/ui/shape/variant/to-normal-packed.js.map +1 -0
- package/dist/wcardinal/ui/shape/variant/to-normal.js +15 -0
- package/dist/wcardinal/ui/shape/variant/to-normal.js.map +1 -0
- package/dist/wcardinal/ui/shape/variant/to-packed.js +7 -0
- package/dist/wcardinal/ui/shape/variant/to-packed.js.map +1 -0
- package/dist/wcardinal/ui/shape/variant/to-vector-length.js +4 -0
- package/dist/wcardinal/ui/shape/variant/to-vector-length.js.map +1 -0
- package/dist/wcardinal/ui/shape/variant/to-vector.js +6 -0
- package/dist/wcardinal/ui/shape/variant/to-vector.js.map +1 -0
- package/dist/wcardinal-ui-theme-dark-en-us.js +1 -1
- package/dist/wcardinal-ui-theme-dark-en-us.min.js +1 -1
- package/dist/wcardinal-ui-theme-dark-ja-jp.js +1 -1
- package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +1 -1
- package/dist/wcardinal-ui-theme-dark.js +1 -1
- package/dist/wcardinal-ui-theme-dark.min.js +1 -1
- package/dist/wcardinal-ui-theme-white-en-us.js +1 -1
- package/dist/wcardinal-ui-theme-white-en-us.min.js +1 -1
- package/dist/wcardinal-ui-theme-white-ja-jp.js +1 -1
- package/dist/wcardinal-ui-theme-white-ja-jp.min.js +1 -1
- package/dist/wcardinal-ui-theme-white.js +1 -1
- package/dist/wcardinal-ui-theme-white.min.js +1 -1
- package/dist/wcardinal-ui.cjs.js +2306 -2094
- package/dist/wcardinal-ui.js +2302 -2090
- package/dist/wcardinal-ui.min.js +2 -2
- package/dist/wcardinal-ui.min.js.map +1 -1
- package/package.json +1 -1
- package/dist/types/wcardinal/ui/shape/variant/copy-clipping.d.ts +0 -1
- package/dist/wcardinal/ui/shape/variant/copy-clipping.js +0 -20
- package/dist/wcardinal/ui/shape/variant/copy-clipping.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-line-of-any.js","sourceRoot":"","sources":["../../../../../src/main/typescript/wcardinal/ui/shape/variant/build-line-of-any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,UAAkB;IACvD,OAAO,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAClC,OAAe,EACf,cAAsB,EACtB,KAA8D,EAC9D,UAAkB,EAClB,MAAoB,EACpB,SAAkB,EAClB,QAAgB,EAChB,QAAgB;IAEhB,IAAI,SAAS,EAAE;QACd,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE;YAC1B,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE;gBAC1B,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC1C,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC;aACvE;iBAAM;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,cAAc,EAAE;oBAC3E,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAC1C,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;iBACrD;aACD;SACD;aAAM;YACN,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE;gBAC1B,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,cAAc,EAAE;oBAC3E,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAC1C,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;iBACrD;aACD;iBAAM;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,cAAc,EAAE;oBAC3E,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAC1C,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAC1C,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;iBACrD;aACD;SACD;KACD;SAAM;QACN,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE;YAC1B,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC1C,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC;SACnE;aAAM;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,cAAc,EAAE;gBAC3E,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC1C,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;aACjD;SACD;KACD;AACF,CAAC,CAAC","sourcesContent":["import { buildColor } from \"./build-color\";\nimport { EShapeLineOfAnyPointsFill } from \"./e-shape-line-of-any-points-fill\";\nimport { EShapeLineOfAnyPointsStroke } from \"./e-shape-line-of-any-points-stroke\";\n\nexport const toLineOfAnyPointCount = (pointCount: number): number => {\n\treturn ((pointCount >> 4) + (0 < (pointCount & 0xf) ? 1 : 0)) << 4;\n};\n\nexport const buildLineOfAnyColor = (\n\tvoffset: number,\n\tvcountPerPoint: number,\n\tpoint: EShapeLineOfAnyPointsStroke | EShapeLineOfAnyPointsFill,\n\tpointCount: number,\n\tcolors: Float32Array,\n\tisEnabled: boolean,\n\tcolorDef: number,\n\talphaDef: number\n): void => {\n\tif (isEnabled) {\n\t\tif (point.isStaticColor()) {\n\t\t\tconst color = point.getColor(0, colorDef);\n\t\t\tif (point.isStaticAlpha()) {\n\t\t\t\tconst alpha = point.getAlpha(0, alphaDef);\n\t\t\t\tbuildColor(color, alpha, voffset, vcountPerPoint * pointCount, colors);\n\t\t\t} else {\n\t\t\t\tfor (let i = 0, iv = voffset; i < pointCount; i += 1, iv += vcountPerPoint) {\n\t\t\t\t\tconst alpha = point.getAlpha(i, alphaDef);\n\t\t\t\t\tbuildColor(color, alpha, iv, vcountPerPoint, colors);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (point.isStaticAlpha()) {\n\t\t\t\tconst alpha = point.getAlpha(0, alphaDef);\n\t\t\t\tfor (let i = 0, iv = voffset; i < pointCount; i += 1, iv += vcountPerPoint) {\n\t\t\t\t\tconst color = point.getColor(i, colorDef);\n\t\t\t\t\tbuildColor(color, alpha, iv, vcountPerPoint, colors);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0, iv = voffset; i < pointCount; i += 1, iv += vcountPerPoint) {\n\t\t\t\t\tconst color = point.getColor(i, colorDef);\n\t\t\t\t\tconst alpha = point.getAlpha(i, alphaDef);\n\t\t\t\t\tbuildColor(color, alpha, iv, vcountPerPoint, colors);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (point.isStaticColor()) {\n\t\t\tconst color = point.getColor(0, colorDef);\n\t\t\tbuildColor(color, 0, voffset, vcountPerPoint * pointCount, colors);\n\t\t} else {\n\t\t\tfor (let i = 0, iv = voffset; i < pointCount; i += 1, iv += vcountPerPoint) {\n\t\t\t\tconst color = point.getColor(i, colorDef);\n\t\t\t\tbuildColor(color, 0, iv, vcountPerPoint, colors);\n\t\t\t}\n\t\t}\n\t}\n};\n"]}
|
|
1
|
+
{"version":3,"file":"build-line-of-any.js","sourceRoot":"","sources":["../../../../../src/main/typescript/wcardinal/ui/shape/variant/build-line-of-any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,UAAkB;IACvD,OAAO,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAClC,EAAU,EACV,IAAY,EACZ,EAA6B,EAC7B,EAA+B,EAC/B,EAAU,EACV,MAAoB,EACpB,GAAY,EACZ,GAAY,EACZ,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW;IAEX,IAAI,GAAG,EAAE;QACR,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;gBACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;aAC1E;iBAAM;gBACN,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;aAC3E;SACD;aAAM;YACN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;gBACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;aAC3E;iBAAM;gBACN,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aAC5E;SACD;KACD;SAAM;QACN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;SACzE;aAAM;YACN,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;SAC1E;KACD;AACF,CAAC,CAAC;AAEF,IAAM,oBAAoB,GAAG,UAC5B,EAAU,EACV,IAAY,EACZ,EAA6B,EAC7B,EAA+B,EAC/B,EAAU,EACV,MAAoB,EACpB,GAAY,EACZ,GAAW,EACX,GAAW,EACX,EAAU,EACV,EAAU;IAEV,IAAI,GAAG,EAAE;QACR,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;gBACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;aAClD;iBAAM;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;SACD;aAAM;YACN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;gBACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;iBAAM;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;SACD;KACD;SAAM;QACN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;SACjD;aAAM;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;gBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aAC5C;SACD;KACD;AACF,CAAC,CAAC;AAEF,IAAM,oBAAoB,GAAG,UAC5B,EAAU,EACV,IAAY,EACZ,EAA6B,EAC7B,EAA+B,EAC/B,EAAU,EACV,MAAoB,EACpB,GAAY,EACZ,GAAW,EACX,GAAW,EACX,EAAU,EACV,GAAW;IAEX,IAAI,GAAG,EAAE;QACR,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;gBACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;iBAAM;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;SACD;aAAM;YACN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;gBACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;iBAAM;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;SACD;KACD;SAAM;QACN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;gBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aAC5C;SACD;aAAM;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;gBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aAC5C;SACD;KACD;AACF,CAAC,CAAC;AAEF,IAAM,oBAAoB,GAAG,UAC5B,EAAU,EACV,IAAY,EACZ,EAA6B,EAC7B,EAA+B,EAC/B,EAAU,EACV,MAAoB,EACpB,GAAY,EACZ,GAAW,EACX,GAAW,EACX,GAAW,EACX,EAAU;IAEV,IAAI,GAAG,EAAE;QACR,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;gBACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;iBAAM;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;SACD;aAAM;YACN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;gBACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;iBAAM;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;SACD;KACD;SAAM;QACN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;gBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aAC5C;SACD;aAAM;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;gBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aAC5C;SACD;KACD;AACF,CAAC,CAAC;AAEF,IAAM,oBAAoB,GAAG,UAC5B,EAAU,EACV,IAAY,EACZ,EAA6B,EAC7B,EAA+B,EAC/B,EAAU,EACV,MAAoB,EACpB,GAAY,EACZ,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW;IAEX,IAAI,GAAG,EAAE;QACR,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;gBACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;iBAAM;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;SACD;aAAM;YACN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;gBACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;iBAAM;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;oBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7C;aACD;SACD;KACD;SAAM;QACN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvB,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;gBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aAC5C;SACD;aAAM;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE;gBACpD,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,IAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC/B,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aAC5C;SACD;KACD;AACF,CAAC,CAAC","sourcesContent":["import { buildColor } from \"./build-color\";\nimport { EShapeLineOfAnyPointsFill } from \"./e-shape-line-of-any-points-fill\";\nimport { EShapeLineOfAnyPointsStroke } from \"./e-shape-line-of-any-points-stroke\";\n\nexport const toLineOfAnyPointCount = (pointCount: number): number => {\n\treturn ((pointCount >> 4) + (0 < (pointCount & 0xf) ? 1 : 0)) << 4;\n};\n\n/**\n * Build a vertex buffer of colors.\n *\n * @param vo Vertex pffset\n * @param vcpp Vertex count per point\n * @param pf Point Fill\n * @param ps Point stroke\n * @param pc Point count\n * @param colors Vertex buffer of colors\n * @param ife True if fills are enabled\n * @param ise True if strokes are enabled\n * @param cfd Default fill color\n * @param afd Default fill alpha\n * @param csd Default stroke color\n * @param asd Default stroke alpha\n */\nexport const buildLineOfAnyColor = (\n\tvo: number,\n\tvcpp: number,\n\tpf: EShapeLineOfAnyPointsFill,\n\tps: EShapeLineOfAnyPointsStroke,\n\tpc: number,\n\tcolors: Float32Array,\n\tife: boolean,\n\tise: boolean,\n\tcfd: number,\n\tafd: number,\n\tcsd: number,\n\tasd: number\n): void => {\n\tif (ife) {\n\t\tif (pf.isStaticColor()) {\n\t\t\tconst cf = pf.getColor(0, cfd);\n\t\t\tif (pf.isStaticAlpha()) {\n\t\t\t\tconst af = pf.getAlpha(0, afd);\n\t\t\t\tbuildLineOfAnyColor0(vo, vcpp, pf, ps, pc, colors, ise, csd, asd, cf, af);\n\t\t\t} else {\n\t\t\t\tbuildLineOfAnyColor1(vo, vcpp, pf, ps, pc, colors, ise, csd, asd, cf, afd);\n\t\t\t}\n\t\t} else {\n\t\t\tif (pf.isStaticAlpha()) {\n\t\t\t\tconst af = pf.getAlpha(0, afd);\n\t\t\t\tbuildLineOfAnyColor2(vo, vcpp, pf, ps, pc, colors, ise, csd, asd, cfd, af);\n\t\t\t} else {\n\t\t\t\tbuildLineOfAnyColor3(vo, vcpp, pf, ps, pc, colors, ise, csd, asd, cfd, afd);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (pf.isStaticColor()) {\n\t\t\tconst cf = pf.getColor(0, cfd);\n\t\t\tbuildLineOfAnyColor0(vo, vcpp, pf, ps, pc, colors, ise, csd, asd, cf, 0);\n\t\t} else {\n\t\t\tbuildLineOfAnyColor2(vo, vcpp, pf, ps, pc, colors, ise, csd, asd, cfd, 0);\n\t\t}\n\t}\n};\n\nconst buildLineOfAnyColor0 = (\n\tvo: number,\n\tvcpp: number,\n\tpf: EShapeLineOfAnyPointsFill,\n\tps: EShapeLineOfAnyPointsStroke,\n\tpc: number,\n\tcolors: Float32Array,\n\tise: boolean,\n\tcsd: number,\n\tasd: number,\n\tcf: number,\n\taf: number\n): void => {\n\tif (ise) {\n\t\tif (ps.isStaticColor()) {\n\t\t\tconst cs = ps.getColor(0, csd);\n\t\t\tif (ps.isStaticAlpha()) {\n\t\t\t\tconst as = ps.getAlpha(0, asd);\n\t\t\t\tbuildColor(cf, af, cs, as, vo, vcpp * pc, colors);\n\t\t\t} else {\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst as = ps.getAlpha(i, asd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (ps.isStaticAlpha()) {\n\t\t\t\tconst as = ps.getAlpha(0, asd);\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\t\tconst as = ps.getAlpha(i, asd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (ps.isStaticColor()) {\n\t\t\tconst cs = ps.getColor(0, csd);\n\t\t\tbuildColor(cf, af, cs, 0, vo, vcpp * pc, colors);\n\t\t} else {\n\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\tbuildColor(cf, af, cs, 0, iv, vcpp, colors);\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst buildLineOfAnyColor1 = (\n\tvo: number,\n\tvcpp: number,\n\tpf: EShapeLineOfAnyPointsFill,\n\tps: EShapeLineOfAnyPointsStroke,\n\tpc: number,\n\tcolors: Float32Array,\n\tise: boolean,\n\tcsd: number,\n\tasd: number,\n\tcf: number,\n\tafd: number\n): void => {\n\tif (ise) {\n\t\tif (ps.isStaticColor()) {\n\t\t\tconst cs = ps.getColor(0, csd);\n\t\t\tif (ps.isStaticAlpha()) {\n\t\t\t\tconst as = ps.getAlpha(0, asd);\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\t\tconst as = ps.getAlpha(i, asd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (ps.isStaticAlpha()) {\n\t\t\t\tconst as = ps.getAlpha(0, asd);\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\t\tconst as = ps.getAlpha(i, asd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (ps.isStaticColor()) {\n\t\t\tconst cs = ps.getColor(0, csd);\n\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\tbuildColor(cf, af, cs, 0, iv, vcpp, colors);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\tbuildColor(cf, af, cs, 0, iv, vcpp, colors);\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst buildLineOfAnyColor2 = (\n\tvo: number,\n\tvcpp: number,\n\tpf: EShapeLineOfAnyPointsFill,\n\tps: EShapeLineOfAnyPointsStroke,\n\tpc: number,\n\tcolors: Float32Array,\n\tise: boolean,\n\tcsd: number,\n\tasd: number,\n\tcfd: number,\n\taf: number\n): void => {\n\tif (ise) {\n\t\tif (ps.isStaticColor()) {\n\t\t\tconst cs = ps.getColor(0, csd);\n\t\t\tif (ps.isStaticAlpha()) {\n\t\t\t\tconst as = ps.getAlpha(0, asd);\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\t\tconst as = ps.getAlpha(i, asd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (ps.isStaticAlpha()) {\n\t\t\t\tconst as = ps.getAlpha(0, asd);\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\t\tconst as = ps.getAlpha(i, asd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (ps.isStaticColor()) {\n\t\t\tconst cs = ps.getColor(0, csd);\n\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\tbuildColor(cf, af, cs, 0, iv, vcpp, colors);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\tbuildColor(cf, af, cs, 0, iv, vcpp, colors);\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst buildLineOfAnyColor3 = (\n\tvo: number,\n\tvcpp: number,\n\tpf: EShapeLineOfAnyPointsFill,\n\tps: EShapeLineOfAnyPointsStroke,\n\tpc: number,\n\tcolors: Float32Array,\n\tise: boolean,\n\tcsd: number,\n\tasd: number,\n\tcfd: number,\n\tafd: number\n): void => {\n\tif (ise) {\n\t\tif (ps.isStaticColor()) {\n\t\t\tconst cs = ps.getColor(0, csd);\n\t\t\tif (ps.isStaticAlpha()) {\n\t\t\t\tconst as = ps.getAlpha(0, asd);\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\t\tconst as = ps.getAlpha(i, asd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (ps.isStaticAlpha()) {\n\t\t\t\tconst as = ps.getAlpha(0, asd);\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\t\tconst as = ps.getAlpha(i, asd);\n\t\t\t\t\tbuildColor(cf, af, cs, as, iv, vcpp, colors);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (ps.isStaticColor()) {\n\t\t\tconst cs = ps.getColor(0, csd);\n\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\tbuildColor(cf, af, cs, 0, iv, vcpp, colors);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0, iv = vo; i < pc; i += 1, iv += vcpp) {\n\t\t\t\tconst cf = pf.getColor(i, cfd);\n\t\t\t\tconst af = pf.getAlpha(i, afd);\n\t\t\t\tconst cs = ps.getColor(i, csd);\n\t\t\t\tbuildColor(cf, af, cs, 0, iv, vcpp, colors);\n\t\t\t}\n\t\t}\n\t}\n};\n"]}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { Point } from "pixi.js";
|
|
2
1
|
import { toDash } from "./to-dash";
|
|
3
|
-
import { toLength } from "./to-length";
|
|
4
2
|
import { toScaleInvariant } from "./to-scale-invariant";
|
|
3
|
+
import { toNormalPacked } from "./to-normal-packed";
|
|
4
|
+
import { toVectorLength } from "./to-vector-length";
|
|
5
|
+
import { toVector } from "./to-vector";
|
|
6
|
+
import { toNormal } from "./to-normal";
|
|
7
|
+
import { toPackedI4x64 } from "./to-packed";
|
|
5
8
|
var LINE_FMIN = 0.00001;
|
|
6
|
-
var
|
|
9
|
+
var LINE_NPREV = [0, 1];
|
|
10
|
+
var LINE_NNEXT = [0, 1];
|
|
7
11
|
export var toPointCount = function (points) {
|
|
8
12
|
if (points) {
|
|
9
13
|
return points.formatted.plength;
|
|
@@ -25,32 +29,6 @@ export var toLineVertexCount = function (pointCount, isClosed) {
|
|
|
25
29
|
export var toLineIndexCount = function (pointCount, isClosed) {
|
|
26
30
|
return toLineVertexCount(pointCount, isClosed) - 2;
|
|
27
31
|
};
|
|
28
|
-
export var buildLineClipping = function (clippings, voffset, vcount, pointCount) {
|
|
29
|
-
var ic = voffset * 3 - 1;
|
|
30
|
-
var icmax = (voffset + vcount) * 3 - 1;
|
|
31
|
-
for (var i = 0; i < pointCount; ++i) {
|
|
32
|
-
clippings[++ic] = 1;
|
|
33
|
-
clippings[++ic] = 0;
|
|
34
|
-
clippings[++ic] = 3;
|
|
35
|
-
clippings[++ic] = 0;
|
|
36
|
-
clippings[++ic] = 1;
|
|
37
|
-
clippings[++ic] = 5;
|
|
38
|
-
clippings[++ic] = 1;
|
|
39
|
-
clippings[++ic] = 0;
|
|
40
|
-
clippings[++ic] = 4;
|
|
41
|
-
clippings[++ic] = 0;
|
|
42
|
-
clippings[++ic] = 1;
|
|
43
|
-
clippings[++ic] = 6;
|
|
44
|
-
}
|
|
45
|
-
for (; ic < icmax;) {
|
|
46
|
-
clippings[++ic] = 1;
|
|
47
|
-
clippings[++ic] = 0;
|
|
48
|
-
clippings[++ic] = 3;
|
|
49
|
-
clippings[++ic] = 0;
|
|
50
|
-
clippings[++ic] = 1;
|
|
51
|
-
clippings[++ic] = 5;
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
32
|
export var buildLineIndex = function (indices, voffset, ioffset, icount) {
|
|
55
33
|
var ii = ioffset * 3 - 1;
|
|
56
34
|
var iimax = (ioffset + icount) * 3 - 1;
|
|
@@ -65,7 +43,7 @@ export var buildLineIndex = function (indices, voffset, ioffset, icount) {
|
|
|
65
43
|
io += 2;
|
|
66
44
|
}
|
|
67
45
|
};
|
|
68
|
-
export var buildLineUv = function (uvs,
|
|
46
|
+
export var buildLineUv = function (uvs, steps, voffset, vcount, textureUvs, length) {
|
|
69
47
|
var lengthInverse = 1 / Math.max(LINE_FMIN, length);
|
|
70
48
|
var x0 = textureUvs.x0;
|
|
71
49
|
var x1 = textureUvs.x1;
|
|
@@ -81,9 +59,9 @@ export var buildLineUv = function (uvs, colorFills, voffset, vcount, textureUvs,
|
|
|
81
59
|
var dy32 = y2 - y3;
|
|
82
60
|
var iuv = (voffset << 1) - 1;
|
|
83
61
|
var iuvmax = ((voffset + vcount) << 1) - 1;
|
|
84
|
-
var
|
|
62
|
+
var is = voffset * 6 - 9;
|
|
85
63
|
for (; iuv < iuvmax;) {
|
|
86
|
-
var r =
|
|
64
|
+
var r = steps[(is += 12)] * lengthInverse;
|
|
87
65
|
uvs[++iuv] = x0 + r * dx01;
|
|
88
66
|
uvs[++iuv] = y0 + r * dy01;
|
|
89
67
|
uvs[++iuv] = x3 + r * dx32;
|
|
@@ -91,7 +69,7 @@ export var buildLineUv = function (uvs, colorFills, voffset, vcount, textureUvs,
|
|
|
91
69
|
}
|
|
92
70
|
};
|
|
93
71
|
var TRANSFORMED_POINT_VALUES;
|
|
94
|
-
export var
|
|
72
|
+
export var buildLineVertexStep = function (vertices, steps, voffset, vcount, pointCount, pointsClosed, pointValues, pointSegments, strokeWidth, strokeStyle, internalTransform) {
|
|
95
73
|
var transformedPointValues = TRANSFORMED_POINT_VALUES;
|
|
96
74
|
if (transformedPointValues == null) {
|
|
97
75
|
transformedPointValues = [];
|
|
@@ -110,29 +88,29 @@ export var buildLineVertexStepAndColorFill = function (vertices, steps, colorFil
|
|
|
110
88
|
transformedPointValues[iv] = a * x + c * y + tx;
|
|
111
89
|
transformedPointValues[iv + 1] = b * x + d * y + ty;
|
|
112
90
|
}
|
|
113
|
-
return
|
|
91
|
+
return buildTransformedLineVertexStep(vertices, steps, voffset, vcount, pointCount, pointsClosed, transformedPointValues, pointSegments, strokeWidth, strokeStyle);
|
|
114
92
|
};
|
|
115
|
-
var
|
|
93
|
+
var fillTransformedLineVertexStep = function (iv, vertices, is, steps, px, py, strokeWidth, nprev, nnext, lprev, lnext, llo, e0, e1) {
|
|
94
|
+
var d = toNormalPacked(nprev, nnext);
|
|
95
|
+
var l = Math.min(lprev, lnext);
|
|
116
96
|
vertices[++iv] = px;
|
|
117
97
|
vertices[++iv] = py;
|
|
118
98
|
steps[++is] = strokeWidth;
|
|
119
|
-
steps[++is] =
|
|
120
|
-
steps[++is] =
|
|
121
|
-
steps[++is] =
|
|
122
|
-
steps[++is] =
|
|
123
|
-
steps[++is] =
|
|
124
|
-
colorFills[(icf += 1)] = llo;
|
|
99
|
+
steps[++is] = e0;
|
|
100
|
+
steps[++is] = d;
|
|
101
|
+
steps[++is] = llo;
|
|
102
|
+
steps[++is] = llo;
|
|
103
|
+
steps[++is] = l;
|
|
125
104
|
vertices[++iv] = px;
|
|
126
105
|
vertices[++iv] = py;
|
|
127
106
|
steps[++is] = strokeWidth;
|
|
128
|
-
steps[++is] =
|
|
129
|
-
steps[++is] =
|
|
130
|
-
steps[++is] =
|
|
131
|
-
steps[++is] =
|
|
132
|
-
steps[++is] =
|
|
133
|
-
colorFills[(icf += 4)] = llo;
|
|
107
|
+
steps[++is] = e1;
|
|
108
|
+
steps[++is] = d;
|
|
109
|
+
steps[++is] = llo;
|
|
110
|
+
steps[++is] = llo;
|
|
111
|
+
steps[++is] = l;
|
|
134
112
|
};
|
|
135
|
-
var
|
|
113
|
+
var buildTransformedLineVertexStep = function (vertices, steps, voffset, vcount, lineVertexCount, lineIsClosed, lineVertices, lineSegments, strokeWidth, strokeStyle) {
|
|
136
114
|
var lineSegmentsLength = lineSegments.length;
|
|
137
115
|
if (0 < lineSegmentsLength) {
|
|
138
116
|
if (lineIsClosed) {
|
|
@@ -144,7 +122,7 @@ var buildTransformedLineVertexStepAndColorFill = function (vertices, steps, colo
|
|
|
144
122
|
for (var i = 1; i < lineSegmentsLength; ++i) {
|
|
145
123
|
iseg = lineSegments[i];
|
|
146
124
|
if (2 <= iseg - iprevseg) {
|
|
147
|
-
lprev =
|
|
125
|
+
lprev = buildTransformedLineOpenSegmentVertexStep(vertices, steps, ivoffset, -1, lineVertices, iprevseg, iseg, lineVertexCount, strokeWidth, strokeStyle, lprev);
|
|
148
126
|
lmax = Math.max(lmax, lprev);
|
|
149
127
|
ivoffset += toLineVertexCount(iseg - iprevseg, false);
|
|
150
128
|
}
|
|
@@ -153,12 +131,12 @@ var buildTransformedLineVertexStepAndColorFill = function (vertices, steps, colo
|
|
|
153
131
|
// Last
|
|
154
132
|
iseg = lineSegments[0] + lineVertexCount;
|
|
155
133
|
if (2 <= iseg - iprevseg) {
|
|
156
|
-
lprev =
|
|
134
|
+
lprev = buildTransformedLineOpenSegmentVertexStep(vertices, steps, ivoffset, voffset + vcount - ivoffset, lineVertices, iprevseg, iseg, lineVertexCount, strokeWidth, strokeStyle, lprev);
|
|
157
135
|
lmax = Math.max(lmax, lprev);
|
|
158
136
|
ivoffset += toLineVertexCount(iseg - iprevseg, false);
|
|
159
137
|
}
|
|
160
138
|
else {
|
|
161
|
-
|
|
139
|
+
buildTransformedLineEmptyVertexStep(vertices, steps, ivoffset, voffset + vcount - ivoffset, lineVertices, iprevseg, iseg, lineVertexCount, strokeWidth, strokeStyle, lprev);
|
|
162
140
|
}
|
|
163
141
|
return lmax;
|
|
164
142
|
}
|
|
@@ -169,7 +147,7 @@ var buildTransformedLineVertexStepAndColorFill = function (vertices, steps, colo
|
|
|
169
147
|
// First
|
|
170
148
|
var iseg = lineSegments[0];
|
|
171
149
|
if (2 <= iseg) {
|
|
172
|
-
lprev =
|
|
150
|
+
lprev = buildTransformedLineOpenSegmentVertexStep(vertices, steps, ivoffset, -1, lineVertices, 0, iseg, lineVertexCount, strokeWidth, strokeStyle, lprev);
|
|
173
151
|
lmax = Math.max(lmax, lprev);
|
|
174
152
|
ivoffset += toLineVertexCount(iseg, false);
|
|
175
153
|
}
|
|
@@ -178,7 +156,7 @@ var buildTransformedLineVertexStepAndColorFill = function (vertices, steps, colo
|
|
|
178
156
|
for (var i = 1; i < lineSegmentsLength; ++i) {
|
|
179
157
|
iseg = lineSegments[i];
|
|
180
158
|
if (2 <= iseg - iprevseg) {
|
|
181
|
-
lprev =
|
|
159
|
+
lprev = buildTransformedLineOpenSegmentVertexStep(vertices, steps, ivoffset, -1, lineVertices, iprevseg, iseg, lineVertexCount, strokeWidth, strokeStyle, lprev);
|
|
182
160
|
lmax = Math.max(lmax, lprev);
|
|
183
161
|
ivoffset += toLineVertexCount(iseg - iprevseg, false);
|
|
184
162
|
}
|
|
@@ -187,31 +165,33 @@ var buildTransformedLineVertexStepAndColorFill = function (vertices, steps, colo
|
|
|
187
165
|
// Last
|
|
188
166
|
iseg = lineVertexCount;
|
|
189
167
|
if (2 <= iseg - iprevseg) {
|
|
190
|
-
lprev =
|
|
168
|
+
lprev = buildTransformedLineOpenSegmentVertexStep(vertices, steps, ivoffset, voffset + vcount - ivoffset, lineVertices, iprevseg, iseg, lineVertexCount, strokeWidth, strokeStyle, lprev);
|
|
191
169
|
lmax = Math.max(lmax, lprev);
|
|
192
170
|
ivoffset += toLineVertexCount(iseg - iprevseg, false);
|
|
193
171
|
}
|
|
194
172
|
else {
|
|
195
|
-
|
|
173
|
+
buildTransformedLineEmptyVertexStep(vertices, steps, ivoffset, voffset + vcount - ivoffset, lineVertices, iprevseg, iseg, lineVertexCount, strokeWidth, strokeStyle, lprev);
|
|
196
174
|
}
|
|
197
175
|
return lmax;
|
|
198
176
|
}
|
|
199
177
|
}
|
|
200
178
|
else {
|
|
201
179
|
if (lineIsClosed) {
|
|
202
|
-
return
|
|
180
|
+
return buildTransformedLineClosedSegmentVertexStep(vertices, steps, voffset, vcount, lineVertices, 0, lineVertexCount, lineVertexCount, strokeWidth, strokeStyle);
|
|
203
181
|
}
|
|
204
182
|
else {
|
|
205
|
-
return
|
|
183
|
+
return buildTransformedLineOpenSegmentVertexStep(vertices, steps, voffset, vcount, lineVertices, 0, lineVertexCount, lineVertexCount, strokeWidth, strokeStyle, 0);
|
|
206
184
|
}
|
|
207
185
|
}
|
|
208
186
|
};
|
|
209
|
-
var
|
|
187
|
+
var buildTransformedLineEmptyVertexStep = function (vertices, steps, voffset, vcount, lineVertices, lineVertexFrom, lineVertexTo, lineVertexCount, strokeWidth, strokeStyle, length) {
|
|
210
188
|
if (0 <= vcount) {
|
|
211
189
|
var scaleInvariant = toScaleInvariant(strokeStyle);
|
|
190
|
+
var dash = toDash(strokeStyle);
|
|
191
|
+
var e3 = toPackedI4x64(3, scaleInvariant, dash, 0);
|
|
192
|
+
var e5 = toPackedI4x64(5, scaleInvariant, dash, 0);
|
|
212
193
|
var iv = (voffset << 1) - 1;
|
|
213
194
|
var is = voffset * 6 - 1;
|
|
214
|
-
var icf = (voffset << 2) - 1;
|
|
215
195
|
var ivmax = ((voffset + vcount) << 1) - 1;
|
|
216
196
|
var ifirst = lineVertexFrom % lineVertexCount << 1;
|
|
217
197
|
var px = lineVertices[ifirst];
|
|
@@ -220,21 +200,30 @@ var buildTransformedLineEmptyVertexStepAndColorFill = function (vertices, steps,
|
|
|
220
200
|
vertices[++iv] = px;
|
|
221
201
|
vertices[++iv] = py;
|
|
222
202
|
steps[++is] = 0;
|
|
223
|
-
steps[++is] =
|
|
224
|
-
steps[++is] =
|
|
203
|
+
steps[++is] = e3;
|
|
204
|
+
steps[++is] = 0;
|
|
205
|
+
steps[++is] = length;
|
|
206
|
+
steps[++is] = length;
|
|
207
|
+
steps[++is] = 0;
|
|
208
|
+
vertices[++iv] = px;
|
|
209
|
+
vertices[++iv] = py;
|
|
210
|
+
steps[++is] = 0;
|
|
211
|
+
steps[++is] = e5;
|
|
225
212
|
steps[++is] = 0;
|
|
226
|
-
steps[++is] =
|
|
213
|
+
steps[++is] = length;
|
|
214
|
+
steps[++is] = length;
|
|
227
215
|
steps[++is] = 0;
|
|
228
|
-
colorFills[++icf] = length;
|
|
229
|
-
colorFills[++icf] = 0;
|
|
230
|
-
colorFills[++icf] = 0;
|
|
231
|
-
colorFills[++icf] = length;
|
|
232
216
|
}
|
|
233
217
|
}
|
|
234
218
|
return 0;
|
|
235
219
|
};
|
|
236
|
-
var
|
|
220
|
+
var buildTransformedLineOpenSegmentVertexStep = function (vertices, steps, voffset, vcount, lineVertices, lineVertexFrom, lineVertexTo, lineVertexCount, strokeWidth, strokeStyle, length) {
|
|
237
221
|
var scaleInvariant = toScaleInvariant(strokeStyle);
|
|
222
|
+
var dash = toDash(strokeStyle);
|
|
223
|
+
var e3 = toPackedI4x64(3, scaleInvariant, dash, 0);
|
|
224
|
+
var e4 = toPackedI4x64(4, scaleInvariant, dash, 0);
|
|
225
|
+
var e5 = toPackedI4x64(5, scaleInvariant, dash, 0);
|
|
226
|
+
var e6 = toPackedI4x64(6, scaleInvariant, dash, 0);
|
|
238
227
|
// First segment
|
|
239
228
|
var ifirst = lineVertexFrom % lineVertexCount << 1;
|
|
240
229
|
var px = lineVertices[ifirst];
|
|
@@ -244,90 +233,105 @@ var buildTransformedLineOpenSegmentVertexStepAndColorFill = function (vertices,
|
|
|
244
233
|
var pnexty = lineVertices[isecond + 1];
|
|
245
234
|
var pprevx = px - (pnextx - px);
|
|
246
235
|
var pprevy = py - (pnexty - py);
|
|
236
|
+
var nprev = LINE_NPREV;
|
|
237
|
+
var nnext = LINE_NNEXT;
|
|
238
|
+
toVector(pprevx, pprevy, px, py, nprev);
|
|
239
|
+
toVector(px, py, pnextx, pnexty, nnext);
|
|
240
|
+
var lprev = toVectorLength(nprev);
|
|
241
|
+
var lnext = lprev;
|
|
242
|
+
toNormal(nprev, lprev);
|
|
243
|
+
toNormal(nnext, lnext);
|
|
247
244
|
var iv = (voffset << 1) - 1;
|
|
248
245
|
var is = voffset * 6 - 1;
|
|
249
|
-
var icf = (voffset << 2) - 1;
|
|
250
246
|
var l = 0;
|
|
251
|
-
|
|
247
|
+
fillTransformedLineVertexStep(iv, vertices, is, steps, px, py, strokeWidth, nprev, nnext, lprev, lnext, length, e3, e5);
|
|
252
248
|
iv += 4;
|
|
253
249
|
is += 12;
|
|
254
|
-
|
|
255
|
-
fillTransformedLineVertexStepAndColorFill(iv, vertices, is, steps, icf, colorFills, px, py, strokeWidth, scaleInvariant, pprevx, pprevy, pnextx, pnexty, l);
|
|
250
|
+
fillTransformedLineVertexStep(iv, vertices, is, steps, px, py, strokeWidth, nprev, nnext, lprev, lnext, l, e4, e6);
|
|
256
251
|
iv += 4;
|
|
257
252
|
is += 12;
|
|
258
|
-
icf += 8;
|
|
259
253
|
// Middle segments
|
|
260
254
|
for (var i = lineVertexFrom + 1, imax = lineVertexTo - 1; i < imax; ++i) {
|
|
261
255
|
pprevx = px;
|
|
262
256
|
pprevy = py;
|
|
263
257
|
px = pnextx;
|
|
264
258
|
py = pnexty;
|
|
259
|
+
nprev[0] = nnext[0];
|
|
260
|
+
nprev[1] = nnext[1];
|
|
261
|
+
lprev = lnext;
|
|
265
262
|
var imiddle = (i + 1) % lineVertexCount << 1;
|
|
266
263
|
pnextx = lineVertices[imiddle];
|
|
267
264
|
pnexty = lineVertices[imiddle + 1];
|
|
268
|
-
|
|
269
|
-
|
|
265
|
+
toVector(px, py, pnextx, pnexty, nnext);
|
|
266
|
+
lnext = toVectorLength(nnext);
|
|
267
|
+
toNormal(nnext, lnext);
|
|
268
|
+
l += lprev;
|
|
269
|
+
fillTransformedLineVertexStep(iv, vertices, is, steps, px, py, strokeWidth, nprev, nnext, lprev, lnext, l, e3, e5);
|
|
270
270
|
iv += 4;
|
|
271
271
|
is += 12;
|
|
272
|
-
|
|
273
|
-
fillTransformedLineVertexStepAndColorFill(iv, vertices, is, steps, icf, colorFills, px, py, strokeWidth, scaleInvariant, pprevx, pprevy, pnextx, pnexty, l);
|
|
272
|
+
fillTransformedLineVertexStep(iv, vertices, is, steps, px, py, strokeWidth, nprev, nnext, lprev, lnext, l, e4, e6);
|
|
274
273
|
iv += 4;
|
|
275
274
|
is += 12;
|
|
276
|
-
icf += 8;
|
|
277
275
|
}
|
|
278
276
|
// Last segment
|
|
279
277
|
pprevx = px;
|
|
280
278
|
pprevy = py;
|
|
281
279
|
px = pnextx;
|
|
282
280
|
py = pnexty;
|
|
281
|
+
nprev[0] = nnext[0];
|
|
282
|
+
nprev[1] = nnext[1];
|
|
283
|
+
lprev = lnext;
|
|
283
284
|
pnextx = px + (px - pprevx);
|
|
284
285
|
pnexty = py + (py - pprevy);
|
|
285
|
-
|
|
286
|
-
|
|
286
|
+
toVector(px, py, pnextx, pnexty, nnext);
|
|
287
|
+
toNormal(nnext, lnext);
|
|
288
|
+
l += lprev;
|
|
289
|
+
fillTransformedLineVertexStep(iv, vertices, is, steps, px, py, strokeWidth, nprev, nnext, lprev, lnext, l, e3, e5);
|
|
287
290
|
iv += 4;
|
|
288
291
|
is += 12;
|
|
289
|
-
|
|
290
|
-
fillTransformedLineVertexStepAndColorFill(iv, vertices, is, steps, icf, colorFills, px, py, strokeWidth, scaleInvariant, pprevx, pprevy, pnextx, pnexty, l);
|
|
292
|
+
fillTransformedLineVertexStep(iv, vertices, is, steps, px, py, strokeWidth, nprev, nnext, lprev, lnext, l, e4, e6);
|
|
291
293
|
iv += 4;
|
|
292
294
|
is += 12;
|
|
293
|
-
icf += 8;
|
|
294
295
|
// Total length
|
|
295
|
-
var
|
|
296
|
-
var
|
|
297
|
-
|
|
298
|
-
var icf0 = (voffset << 2) - 1;
|
|
299
|
-
for (var i = icf0, imax = icf0 + 8; i < imax; i += 4) {
|
|
300
|
-
colorFills[i + 2] = dash0;
|
|
301
|
-
colorFills[i + 3] = dash1;
|
|
302
|
-
colorFills[i + 4] = length;
|
|
296
|
+
var is0 = voffset * 6 - 1;
|
|
297
|
+
for (var i = is0, imax = is0 + 12; i < imax; i += 6) {
|
|
298
|
+
steps[i + 5] = length;
|
|
303
299
|
}
|
|
304
|
-
for (var i =
|
|
305
|
-
|
|
306
|
-
colorFills[i + 3] = dash1;
|
|
307
|
-
colorFills[i + 4] = l;
|
|
300
|
+
for (var i = is0 + 12; i < is; i += 6) {
|
|
301
|
+
steps[i + 5] = l;
|
|
308
302
|
}
|
|
309
303
|
// Fill the rest
|
|
310
304
|
if (0 <= vcount) {
|
|
305
|
+
var d = toNormalPacked(nprev, nnext);
|
|
311
306
|
var ivmax = ((voffset + vcount) << 1) - 1;
|
|
312
307
|
for (; iv < ivmax;) {
|
|
313
308
|
vertices[++iv] = px;
|
|
314
309
|
vertices[++iv] = py;
|
|
315
310
|
steps[++is] = 0;
|
|
316
|
-
steps[++is] =
|
|
317
|
-
steps[++is] =
|
|
318
|
-
steps[++is] =
|
|
319
|
-
steps[++is] =
|
|
320
|
-
steps[++is] =
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
311
|
+
steps[++is] = e3;
|
|
312
|
+
steps[++is] = d;
|
|
313
|
+
steps[++is] = l;
|
|
314
|
+
steps[++is] = l;
|
|
315
|
+
steps[++is] = 0;
|
|
316
|
+
vertices[++iv] = px;
|
|
317
|
+
vertices[++iv] = py;
|
|
318
|
+
steps[++is] = 0;
|
|
319
|
+
steps[++is] = e5;
|
|
320
|
+
steps[++is] = d;
|
|
321
|
+
steps[++is] = l;
|
|
322
|
+
steps[++is] = l;
|
|
323
|
+
steps[++is] = 0;
|
|
325
324
|
}
|
|
326
325
|
}
|
|
327
326
|
return l;
|
|
328
327
|
};
|
|
329
|
-
var
|
|
328
|
+
var buildTransformedLineClosedSegmentVertexStep = function (vertices, steps, voffset, vcount, lineVertices, lineVertexFrom, lineVertexTo, lineVertexCount, strokeWidth, strokeStyle) {
|
|
330
329
|
var scaleInvariant = toScaleInvariant(strokeStyle);
|
|
330
|
+
var dash = toDash(strokeStyle);
|
|
331
|
+
var e3 = toPackedI4x64(3, scaleInvariant, dash, 0);
|
|
332
|
+
var e4 = toPackedI4x64(4, scaleInvariant, dash, 0);
|
|
333
|
+
var e5 = toPackedI4x64(5, scaleInvariant, dash, 0);
|
|
334
|
+
var e6 = toPackedI4x64(6, scaleInvariant, dash, 0);
|
|
331
335
|
var ilast = (lineVertexTo - 1) % lineVertexCount << 1;
|
|
332
336
|
var pprevx = 0;
|
|
333
337
|
var pprevy = 0;
|
|
@@ -336,66 +340,82 @@ var buildTransformedLineClosedSegmentVertexStepAndColorFill = function (vertices
|
|
|
336
340
|
var ifirst = lineVertexFrom % lineVertexCount << 1;
|
|
337
341
|
var pnextx = lineVertices[ifirst];
|
|
338
342
|
var pnexty = lineVertices[ifirst + 1];
|
|
343
|
+
var nprev = LINE_NPREV;
|
|
344
|
+
var nnext = LINE_NNEXT;
|
|
345
|
+
toVector(pprevx, pprevy, px, py, nprev);
|
|
346
|
+
toVector(px, py, pnextx, pnexty, nnext);
|
|
347
|
+
var lprev = toVectorLength(nprev);
|
|
348
|
+
var lnext = toVectorLength(nnext);
|
|
349
|
+
toNormal(nprev, lprev);
|
|
350
|
+
toNormal(nnext, lnext);
|
|
339
351
|
var l = 0;
|
|
340
352
|
var iv = (voffset << 1) - 1;
|
|
341
353
|
var is = voffset * 6 - 1;
|
|
342
|
-
var icf = (voffset << 2) - 1;
|
|
343
354
|
for (var i = lineVertexFrom; i < lineVertexTo; ++i) {
|
|
344
355
|
pprevx = px;
|
|
345
356
|
pprevy = py;
|
|
346
357
|
px = pnextx;
|
|
347
358
|
py = pnexty;
|
|
359
|
+
nprev[0] = nnext[0];
|
|
360
|
+
nprev[1] = nnext[1];
|
|
361
|
+
lprev = lnext;
|
|
348
362
|
var imiddle = (i + 1) % lineVertexCount << 1;
|
|
349
363
|
pnextx = lineVertices[imiddle];
|
|
350
364
|
pnexty = lineVertices[imiddle + 1];
|
|
351
|
-
|
|
352
|
-
|
|
365
|
+
toVector(px, py, pnextx, pnexty, nnext);
|
|
366
|
+
lnext = toVectorLength(nnext);
|
|
367
|
+
toNormal(nnext, lnext);
|
|
368
|
+
l += lprev;
|
|
369
|
+
fillTransformedLineVertexStep(iv, vertices, is, steps, px, py, strokeWidth, nprev, nnext, lprev, lnext, l, e3, e5);
|
|
353
370
|
iv += 4;
|
|
354
371
|
is += 12;
|
|
355
|
-
|
|
356
|
-
fillTransformedLineVertexStepAndColorFill(iv, vertices, is, steps, icf, colorFills, px, py, strokeWidth, scaleInvariant, pprevx, pprevy, pnextx, pnexty, l);
|
|
372
|
+
fillTransformedLineVertexStep(iv, vertices, is, steps, px, py, strokeWidth, nprev, nnext, lprev, lnext, l, e4, e6);
|
|
357
373
|
iv += 4;
|
|
358
374
|
is += 12;
|
|
359
|
-
icf += 8;
|
|
360
375
|
}
|
|
361
376
|
// Last segment
|
|
362
377
|
pprevx = px;
|
|
363
378
|
pprevy = py;
|
|
364
379
|
px = pnextx;
|
|
365
380
|
py = pnexty;
|
|
381
|
+
nprev[0] = nnext[0];
|
|
382
|
+
nprev[1] = nnext[1];
|
|
383
|
+
lprev = lnext;
|
|
366
384
|
var isecond = (lineVertexFrom + 1) % lineVertexCount << 1;
|
|
367
385
|
pnextx = lineVertices[isecond];
|
|
368
386
|
pnexty = lineVertices[isecond + 1];
|
|
369
|
-
|
|
370
|
-
|
|
387
|
+
toVector(px, py, pnextx, pnexty, nnext);
|
|
388
|
+
lnext = toVectorLength(nnext);
|
|
389
|
+
toNormal(nnext, lnext);
|
|
390
|
+
l += lprev;
|
|
391
|
+
fillTransformedLineVertexStep(iv, vertices, is, steps, px, py, strokeWidth, nprev, nnext, lprev, lnext, l, e3, e5);
|
|
371
392
|
iv += 4;
|
|
372
393
|
is += 12;
|
|
373
|
-
icf += 8;
|
|
374
394
|
// Total length
|
|
375
|
-
var
|
|
376
|
-
|
|
377
|
-
var dash1 = dash.y;
|
|
378
|
-
for (var i = (voffset << 2) - 1; i < icf; i += 4) {
|
|
379
|
-
colorFills[i + 2] = dash0;
|
|
380
|
-
colorFills[i + 3] = dash1;
|
|
381
|
-
colorFills[i + 4] = -1;
|
|
395
|
+
for (var i = voffset * 6 - 1; i < is; i += 6) {
|
|
396
|
+
steps[i + 5] = -l;
|
|
382
397
|
}
|
|
383
398
|
// Fill the rest
|
|
384
399
|
if (0 <= vcount) {
|
|
400
|
+
var d = toNormalPacked(nprev, nnext);
|
|
385
401
|
var ivmax = ((voffset + vcount) << 1) - 1;
|
|
386
402
|
for (; iv < ivmax;) {
|
|
387
403
|
vertices[++iv] = px;
|
|
388
404
|
vertices[++iv] = py;
|
|
389
405
|
steps[++is] = strokeWidth;
|
|
390
|
-
steps[++is] =
|
|
391
|
-
steps[++is] =
|
|
392
|
-
steps[++is] =
|
|
393
|
-
steps[++is] =
|
|
394
|
-
steps[++is] =
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
406
|
+
steps[++is] = e3;
|
|
407
|
+
steps[++is] = d;
|
|
408
|
+
steps[++is] = l;
|
|
409
|
+
steps[++is] = -l;
|
|
410
|
+
steps[++is] = 0;
|
|
411
|
+
vertices[++iv] = px;
|
|
412
|
+
vertices[++iv] = py;
|
|
413
|
+
steps[++is] = strokeWidth;
|
|
414
|
+
steps[++is] = e5;
|
|
415
|
+
steps[++is] = d;
|
|
416
|
+
steps[++is] = l;
|
|
417
|
+
steps[++is] = -l;
|
|
418
|
+
steps[++is] = 0;
|
|
399
419
|
}
|
|
400
420
|
}
|
|
401
421
|
return l;
|