@threedddplus/logoeditor 0.0.107 → 0.0.108

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.
Files changed (259) hide show
  1. package/dist/logoeditor.cjs.development.js +1 -0
  2. package/dist/logoeditor.cjs.development.js.map +1 -1
  3. package/dist/logoeditor.cjs.production.min.js +1 -1
  4. package/dist/logoeditor.cjs.production.min.js.map +1 -1
  5. package/dist/logoeditor.esm.js +1 -0
  6. package/dist/logoeditor.esm.js.map +1 -1
  7. package/example/.cache/01/9fdc8b71684a94103dedcd0379c199.json +1 -0
  8. package/example/.cache/02/f70f44e0df165e5a469919a31bd2f9.json +1 -0
  9. package/example/.cache/03/7d199ccedba357f7935a455efabc7e.json +1 -0
  10. package/example/.cache/04/72bca663bb948b9040c229d3378851.json +1 -0
  11. package/example/.cache/04/78defcd12bbbb053d5e1b8582b95af.json +1 -0
  12. package/example/.cache/04/d17cac451503925190e10855254420.json +1 -0
  13. package/example/.cache/04/e64f8c73f6b8011a0cd2830bb6db83.json +1 -0
  14. package/example/.cache/06/91c3ceacb86db23c8ea248a2dc8304.json +1 -0
  15. package/example/.cache/08/7f1d7e2fea1e22206120062df46bad.json +1 -0
  16. package/example/.cache/08/97d93886bd60b132fe2ac2dc9d3346.json +1 -0
  17. package/example/.cache/0a/90d50bf117a9d38a1883f0bfca26c3.json +1 -0
  18. package/example/.cache/0c/5f76d0a3197b144bd82f8a3cc03402.json +1 -0
  19. package/example/.cache/0d/4492e78484904c8894e5f3e1210d33.json +1 -0
  20. package/example/.cache/0f/0017108f004bc319a834e6bfd427dd.json +1 -0
  21. package/example/.cache/0f/2eb8f516fc172abb922e9264c3fbaf.json +1 -0
  22. package/example/.cache/0f/43ebd457118d37b65e0efbb136a039.json +1 -0
  23. package/example/.cache/0f/4fabe90877a88a2081a4e4dd867a02.json +1 -0
  24. package/example/.cache/0f/f79789ba0f05defcc9d53b40901bdc.json +1 -0
  25. package/example/.cache/10/2cd7ba61fc8271aa0b91e8a6633d96.json +1 -0
  26. package/example/.cache/10/fee8fdfdb93952f5d4121bce31fafc.json +1 -0
  27. package/example/.cache/11/1457101e0fc5fca9b5d39b7722e8ed.json +1 -0
  28. package/example/.cache/11/2f8f823bb5f599efe5633b68f10d55.json +1 -0
  29. package/example/.cache/13/f05e172c994b88c905aaae64f44a72.json +1 -0
  30. package/example/.cache/14/25a83b4e82a882a74299910d64ea55.json +1 -0
  31. package/example/.cache/15/bb10995bae107ad5b8d33a7209b2f6.json +1 -0
  32. package/example/.cache/17/2a138186340ec368c13eb3de3c9a91.json +1 -0
  33. package/example/.cache/17/86e43dc9c579ec2f31fad451b8b832.json +1 -0
  34. package/example/.cache/17/f69124738c03a52751d9d4f5459f0a.json +1 -0
  35. package/example/.cache/19/3bffa6adbe2ecfc457c8f21380ef6f.json +1 -0
  36. package/example/.cache/1a/8e64eb9466edc6fc9ecc8b263c91cd.json +1 -0
  37. package/example/.cache/1a/fad4d704e0616eb5093b969abe1500.json +1 -0
  38. package/example/.cache/1d/ddd3b37c5b581309af0be029bb44db.json +1 -0
  39. package/example/.cache/1f/3a48fe20acc2388029a9552f4f2582.json +1 -0
  40. package/example/.cache/1f/5ce11c965437e7a14d246a9d1e2835.json +1 -0
  41. package/example/.cache/20/7261320781f54d56d2dcaf3042b9b3.json +1 -0
  42. package/example/.cache/22/db3665ed0a927228cedc242aca5b6d.json +1 -0
  43. package/example/.cache/23/807ad765f968e277e320abdea0984d.json +1 -0
  44. package/example/.cache/24/9cf0d0d52d8d85f07f21bbd772b16d.json +1 -0
  45. package/example/.cache/25/19b108d22db59e666dfd260bf49834.json +1 -0
  46. package/example/.cache/25/1fcb6f665bc7a17f84d9cd967fb12f.json +1 -0
  47. package/example/.cache/25/4fca9ec2f04032adb58a7003151328.json +1 -0
  48. package/example/.cache/27/267d19ce8e2fd62961bc779de1e4f3.json +1 -0
  49. package/example/.cache/28/61d5f429aed8950fd56f0dd1b168e0.json +1 -0
  50. package/example/.cache/28/ab5d71b77a024b48f368b55d3c08fe.json +1 -0
  51. package/example/.cache/28/bd79e5c9ece6284ad1802fbbf9c38e.json +1 -0
  52. package/example/.cache/28/d4f85373ac6c4b92286f3d2d25a2fe.json +1 -0
  53. package/example/.cache/28/f967ac67462a2be0b8151a06818a13.json +1 -0
  54. package/example/.cache/29/bf863fc49a7e9d9639fc0835b6472e.json +1 -0
  55. package/example/.cache/2b/cbae5391ac9952c1a5c851f55eee3f.json +1 -0
  56. package/example/.cache/31/dd50e97d90b980ec0cd719d8b781d1.json +1 -0
  57. package/example/.cache/32/364b7f38349cf24f7c9bee6cec90d9.json +1 -0
  58. package/example/.cache/33/fbf9575c05db3827e7f0ca7eef6bfd.json +1 -0
  59. package/example/.cache/35/7c59ac7c3b387468a06068fce07e1d.json +1 -0
  60. package/example/.cache/35/a9b49055b5e2623db03e9d9c2fa518.json +1 -0
  61. package/example/.cache/36/6eec622c850b610b7507c92e7ec368.json +1 -0
  62. package/example/.cache/36/c2b8b377dfe40a6d2b9e42b7b6dcbd.json +1 -0
  63. package/example/.cache/36/c778bee7d267857de7d2d3d1248b39.json +1 -0
  64. package/example/.cache/36/d1683f2769fcf903b19c0138b26d59.json +1 -0
  65. package/example/.cache/37/e90dc3322da3b00f75bb63b728fcdd.json +1 -0
  66. package/example/.cache/3b/6ad79d157fea8ed48099acbb98a7a9.json +1 -0
  67. package/example/.cache/3b/8b3f096f0208f3aa8726f4184a6901.json +1 -0
  68. package/example/.cache/3b/8de313c060891320e60c17ceabf443.json +1 -0
  69. package/example/.cache/3d/1cbbdf17e25961349fe7324d4d99d3.json +1 -0
  70. package/example/.cache/3e/73b156cee9060d428e1948b658d88d.json +1 -0
  71. package/example/.cache/42/00e414d7ea104ff45096832ba98f76.json +1 -0
  72. package/example/.cache/42/01ce6d915f2a2953d83f9de25be5e6.json +1 -0
  73. package/example/.cache/42/616e3258849b9832e474f8cdf088fe.json +1 -0
  74. package/example/.cache/42/abff49a46b4f85d0948cf7f2548509.json +1 -0
  75. package/example/.cache/43/c6f9b5fb0f79257195b1857f546fc2.json +1 -0
  76. package/example/.cache/45/6b7e91c791067ca7e15302c4a4807d.json +1 -0
  77. package/example/.cache/45/6ce9040fedc236f4858ddad1661d49.json +1 -0
  78. package/example/.cache/47/5d9feb29f0dd032704990d88589201.json +1 -0
  79. package/example/.cache/47/f7e695c8d199869c3dd48d25976a31.json +1 -0
  80. package/example/.cache/49/0ba6432cdfcf34eeff1997545d223d.json +1 -0
  81. package/example/.cache/4a/e8fdb3e4e85e7457648f5dbfe28689.json +1 -0
  82. package/example/.cache/4b/5884ffacb51653b4c17a4859468f7b.json +1 -0
  83. package/example/.cache/4d/3f6d50519b02e9fce5ad6c5e19f6e3.json +1 -0
  84. package/example/.cache/50/7cee72883e282c465a2049be1e9e01.json +1 -0
  85. package/example/.cache/50/d27b58b62a35c84bbca90c1e51d038.json +1 -0
  86. package/example/.cache/51/1dddafb6ff427f2daddfe5c3c8d683.json +1 -0
  87. package/example/.cache/51/568f1c52890d759fdfb55a4372bfd2.json +1 -0
  88. package/example/.cache/51/d86f18e53f8d4e52674099f831bc5b.json +1 -0
  89. package/example/.cache/54/a45a3bc82882ab47ef1c652652e27e.json +1 -0
  90. package/example/.cache/56/c82c437564c37687cc6cd0ba1e5937.json +1 -0
  91. package/example/.cache/58/80d078bdfce5f8b3154f90a18ec3d1.json +1 -0
  92. package/example/.cache/5a/2f6529fb0865ab747d59e2821b6e0a.json +1 -0
  93. package/example/.cache/5a/a0ecf5e726f8b44444bd69022df707.json +1 -0
  94. package/example/.cache/5b/1f1e0031c33cc14efbc8ee7b7aa5a9.json +1 -0
  95. package/example/.cache/5b/f3e25cc819e612f8c1827227f272bc.json +1 -0
  96. package/example/.cache/5c/1ad1784751cb73aec5d98db37ecdc4.json +1 -0
  97. package/example/.cache/5c/8664463e68d76a12afd83d32b37b3a.json +1 -0
  98. package/example/.cache/5d/55fa85139f827f42fa5cc8ec1fe7ed.json +1 -0
  99. package/example/.cache/5e/fe7e6e213fac222a5f5a268aabbee7.json +1 -0
  100. package/example/.cache/5f/3a9d3d5965c70b49a0ee1b43a648b7.json +1 -0
  101. package/example/.cache/5f/83c6d64a90cd9f60d45e0b55339254.json +1 -0
  102. package/example/.cache/60/aeef4dae8cba9b477ceda1fa3b00a9.json +1 -0
  103. package/example/.cache/60/e54b6804182d38c815467e6dcbf297.json +1 -0
  104. package/example/.cache/62/82eac808f1e291a494a18555a0b46a.json +1 -0
  105. package/example/.cache/62/839f0529899350adf7acc310b33a95.json +1 -0
  106. package/example/.cache/63/8662c49869c38a6e4918b18838b80e.json +1 -0
  107. package/example/.cache/63/f48c2aa8226316d2162ac9a82b95c7.json +1 -0
  108. package/example/.cache/64/5e379e6362c351071103f7ed75a4f1.json +1 -0
  109. package/example/.cache/67/a43209849b74caf3fe67c792106b06.json +1 -0
  110. package/example/.cache/68/3152befa536de874a445671b3456c0.json +1 -0
  111. package/example/.cache/69/fb98abc5c8711fe81ba32255b60adb.json +1 -0
  112. package/example/.cache/6a/73f0a54f010e3b422dbd0f364915e2.json +1 -0
  113. package/example/.cache/6a/bb693a5e1ffb2fdceeaa5ebebe4deb.json +1 -0
  114. package/example/.cache/6b/e84912e87dc1c4d2aa3ff7fc55243b.json +1 -0
  115. package/example/.cache/6c/bc45c5b8728f4642d9f1c74bff5294.json +1 -0
  116. package/example/.cache/6f/38d17cc750137d740a612753582784.json +1 -0
  117. package/example/.cache/6f/dabf4029d49661c258e916fa445b72.json +1 -0
  118. package/example/.cache/72/1953863ae0abdcf32676ee2d91d1fd.json +1 -0
  119. package/example/.cache/75/4d5271e63ae8395ce7a1ff213581bf.json +1 -0
  120. package/example/.cache/75/4f074a5272ab188859ccf83c701aa9.json +1 -0
  121. package/example/.cache/76/aa612389ac4f382383a5e0bb7d6c55.json +1 -0
  122. package/example/.cache/76/d5bf6d1c0321989194ba9c03ce0393.json +1 -0
  123. package/example/.cache/77/08b4e606af9e7dbf9964a8337fb434.json +1 -0
  124. package/example/.cache/78/77b432fa355beb6c10ac4e8cac67d2.json +1 -0
  125. package/example/.cache/78/c65ea9d2808b2c72073bab064d1e57.json +1 -0
  126. package/example/.cache/79/3d9b57cf391b6520954d8e69d1fa7e.json +1 -0
  127. package/example/.cache/79/e2073d72b60fca3fcd7810400d7b2d.json +1 -0
  128. package/example/.cache/7a/171f3cc6d7c3cacd721f00ed8b2ff9.json +1 -0
  129. package/example/.cache/7a/8556eca9c6ec44c0b8697ecb2905ec.json +1 -0
  130. package/example/.cache/7b/057551a8fe75cc67c2380199dfad28.json +1 -0
  131. package/example/.cache/7d/d469367a107055b85c324e92678f4c.json +1 -0
  132. package/example/.cache/7e/43e2745b13f59826bc343f569905eb.json +1 -0
  133. package/example/.cache/7e/876b66ad7dd6abbed722846d27096e.json +1 -0
  134. package/example/.cache/7f/ae61621ee2965579c2bb49ff19449f.json +1 -0
  135. package/example/.cache/80/b71f10b6f13d3b2c51b6292a9889a2.json +1 -0
  136. package/example/.cache/81/6a99c0103d27c93a9ab6e25833d5b8.json +1 -0
  137. package/example/.cache/82/6ec239e2bb943e9799f9f23993dac4.json +1 -0
  138. package/example/.cache/84/1b20eb8c5fb47daac7d9c0450da289.json +1 -0
  139. package/example/.cache/85/dd77a706c4f4c5f15368f8ca2d95bc.json +1 -0
  140. package/example/.cache/86/4597244117d92f0335e1ab6767bc4b.json +1 -0
  141. package/example/.cache/87/6b1172e8c2321d25be266ee6dde4f8.json +1 -0
  142. package/example/.cache/87/863e999e035d3fe920b90d93a929cd.json +1 -0
  143. package/example/.cache/87/d831a5321917599382c70f86beb8e3.json +1 -0
  144. package/example/.cache/89/e92e0a24058dac88e6f5e0791579da.json +1 -0
  145. package/example/.cache/8b/5dbb86501fd7bd7b8829e89d671cd5.json +1 -0
  146. package/example/.cache/8e/4974630c19665680294fd80db85cd5.json +1 -0
  147. package/example/.cache/8e/d2f7a4829a25abf7d30cd21f50c822.json +1 -0
  148. package/example/.cache/8f/6199ca3b0780af2390af6a33e180c1.json +1 -0
  149. package/example/.cache/8f/bd81638a8f41fc0b1114738592b025.json +1 -0
  150. package/example/.cache/90/75c13382bc7d0dc2ee5b050acf1e96.json +1 -0
  151. package/example/.cache/90/873d6b0bf3ce097fec937a9efc76af.json +1 -0
  152. package/example/.cache/91/61c8b52126b317ab481c722dd2539b.json +1 -0
  153. package/example/.cache/92/80ef92eddeaaedf8cdc053ec02552e.json +1 -0
  154. package/example/.cache/93/f33908556557845f69fd497aa295ff.json +1 -0
  155. package/example/.cache/95/f9704428056a6fef09589abfc5fdaf.json +1 -0
  156. package/example/.cache/97/5153075143203a8c131da2b65bcd9c.json +1 -0
  157. package/example/.cache/97/97304645c9abef5ac70549bdcd1d80.json +1 -0
  158. package/example/.cache/99/06f77485254e85a23d8b68484c907e.json +1 -0
  159. package/example/.cache/9a/728ae768bad4392ae8b29faf94b5b7.json +1 -0
  160. package/example/.cache/9b/0ce590886d881940c07f494143c0e6.json +1 -0
  161. package/example/.cache/9e/76afa2a741f0ba8fa27a4eb46891d8.json +1 -0
  162. package/example/.cache/9e/ca478e6a34ee87c56a95dee70258ab.json +1 -0
  163. package/example/.cache/a2/96f42916086b5c5b34f3073d0da288.json +1 -0
  164. package/example/.cache/a3/0405ff16c44c8368d0a1530601ba7f.json +1 -0
  165. package/example/.cache/a4/2765e47c3b4511d90656997f30c694.json +1 -0
  166. package/example/.cache/a4/5debaf0a2f7e160e43d73d7d78bcc0.json +1 -0
  167. package/example/.cache/a4/6b837bc2e16357fb54778942e413be.json +1 -0
  168. package/example/.cache/a6/e3be0f614f30079e9e3b379a2539eb.json +1 -0
  169. package/example/.cache/a7/23de0b8b8837e3c57cd5d86be7295e.json +1 -0
  170. package/example/.cache/a7/366ae9d10bea9d7e3a0625b2522c25.json +1 -0
  171. package/example/.cache/a8/5a1249a32f1f2d532ae07be318fd3d.json +1 -0
  172. package/example/.cache/a8/93f7bebfb60116ca97ce8dac074af9.json +1 -0
  173. package/example/.cache/a8/bd207837cb75f62541c29e1dcb1d8e.json +1 -0
  174. package/example/.cache/a9/d311de96386ad0f35d376369dd75e5.json +1 -0
  175. package/example/.cache/aa/2f6815e90a40d85c23d854defef62c.json +1 -0
  176. package/example/.cache/ab/ff53bb1dbd59058a8ed54c16605d12.json +1 -0
  177. package/example/.cache/ac/1a38eaca82580e72108aafc35030b9.json +1 -0
  178. package/example/.cache/ac/c51de5b38eb13a20ea38edb51e71fa.json +1 -0
  179. package/example/.cache/ae/2e1fd1347c9a46eb54c2b21ecf7e82.json +1 -0
  180. package/example/.cache/b0/9acd4fda6ffba35cc88cea954f1de6.json +1 -0
  181. package/example/.cache/b0/bf256a34f396e10b511b0bb852d6d7.json +1 -0
  182. package/example/.cache/b1/68f33ff8a0a287f41ecf8894ae44a4.json +1 -0
  183. package/example/.cache/b1/dfd3280dc8f902c9f7838ba0878c3e.json +1 -0
  184. package/example/.cache/b2/90e81d16368ed58ba4efe3f3c27f45.json +1 -0
  185. package/example/.cache/b3/7d9f66556a7e24a2f693b223fc7b45.json +1 -0
  186. package/example/.cache/b3/d22237f417a255e2c6bf2c7f1687ad.json +1 -0
  187. package/example/.cache/b6/3fcecf6a7031bc0e5028646809c9f0.json +1 -0
  188. package/example/.cache/b7/1498ce3d88ade104194315b17b947e.json +1 -0
  189. package/example/.cache/b7/90b78b6ba827c2e0e5fae9d50492c8.json +1 -0
  190. package/example/.cache/b8/e177ca1b114db8481331f2e5cf2d9e.json +1 -0
  191. package/example/.cache/b9/ce6d2b218a8a0ec09d6aeb7153f1ef.json +1 -0
  192. package/example/.cache/bc/f6f97902bd6ca5c8e9ab9a77c30be1.json +1 -0
  193. package/example/.cache/bd/114c64bc413291ed4a06753bc1136b.json +1 -0
  194. package/example/.cache/bd/47c6123ca159d5adb0cb646bcf70fe.json +1 -0
  195. package/example/.cache/be/2755bccb04ab6e984f7e8beaef8293.json +1 -0
  196. package/example/.cache/be/9d43dff04cd035ad1d10284368cf7e.json +1 -0
  197. package/example/.cache/bf/f9f5fc6a43dfe42597dad5c929877f.json +1 -0
  198. package/example/.cache/c0/e8be97e2b0a86f49fd05240dec1ea4.json +1 -0
  199. package/example/.cache/c1/84e4ac5eb0c5154300d5ed759d8e4b.json +1 -0
  200. package/example/.cache/c2/149899c68eafc36bcbc7499ccdc14c.json +1 -0
  201. package/example/.cache/c3/d2a730483d2f5933eaf91184cb4bce.json +1 -0
  202. package/example/.cache/c3/e7131515252e4f2d6777184588c168.json +1 -0
  203. package/example/.cache/c4/051c42820892c507f8c822a4bd2c9f.json +1 -0
  204. package/example/.cache/c4/50cbb493d7bc34fb6b9f8c2b49ff0b.json +1 -0
  205. package/example/.cache/c5/347fd503946a6aa16c0631097622dc.json +1 -0
  206. package/example/.cache/c5/fa9378b251e0d71a64a0c151e50655.json +1 -0
  207. package/example/.cache/c7/17c030abcb245f85b7b2d5a7d78e78.json +1 -0
  208. package/example/.cache/c9/02aada65ccffd1c0e94e9a2ac8d0f2.json +1 -0
  209. package/example/.cache/c9/449fef12068872e5d9478318236cbf.json +1 -0
  210. package/example/.cache/cd/23f8a250cb1ebf9c0782505ff57d14.json +1 -0
  211. package/example/.cache/ce/38c9535bd98f1dd206bdd35a463b8c.json +1 -0
  212. package/example/.cache/ce/44458f8d7adc2e54f9d012109c1efa.json +1 -0
  213. package/example/.cache/d1/d52680a2ee9a88f8c4434b5d6d7ed3.json +1 -0
  214. package/example/.cache/d2/febd6b44c9c81b6f5081c7701b1878.json +1 -0
  215. package/example/.cache/d3/238c707976b5351e31fbf94aa92c8f.json +1 -0
  216. package/example/.cache/d4/64eaefebcb1525b27b700a30f7e073.json +1 -0
  217. package/example/.cache/d6/d07a7739f08868f453d95b42127675.json +1 -0
  218. package/example/.cache/d7/fc92e542dc3e88fc4fb631212798c8.json +1 -0
  219. package/example/.cache/d9/1380ffd4c8cec1cf32a866f9e74bb9.json +1 -0
  220. package/example/.cache/d9/8a850478c74e151c0262d3c5b85bd7.json +1 -0
  221. package/example/.cache/de/cb45056b514f10bed8a1309ed14594.json +1 -0
  222. package/example/.cache/df/530f67489265ee716c78b55d70c18d.json +1 -0
  223. package/example/.cache/e1/46023becd01f7320c24595ba76935b.json +1 -0
  224. package/example/.cache/e1/a8b08a63a583c81d5db8f847db8ba9.json +1 -0
  225. package/example/.cache/e3/1d17f6b2223696c0ef7f71fc889b4f.json +1 -0
  226. package/example/.cache/e4/f911d02d7e20552f2a635d87155345.json +1 -0
  227. package/example/.cache/e5/3bee6218e4627dbbaa5309c9d9d969.json +1 -0
  228. package/example/.cache/e6/81784a1b8cc5a5eb6cd22e4e8415aa.json +1 -0
  229. package/example/.cache/e8/f9abb89f3509e8ded8e820401ee964.json +1 -0
  230. package/example/.cache/ea/c4a0d97f2fb77c3185bcd1476d13c7.json +1 -0
  231. package/example/.cache/eb/2199ccbc662574454a91cceb3c32a8.json +1 -0
  232. package/example/.cache/ec/416a1dc656fb28b3c7556d9236a067.json +1 -0
  233. package/example/.cache/ed/0623ba0d5afc32b2e879f38783d8b8.json +1 -0
  234. package/example/.cache/ed/345014ae81ce71f915a82a691b8eb1.json +1 -0
  235. package/example/.cache/ee/14733e62c9820b4aff117c6fa69ef3.json +1 -0
  236. package/example/.cache/f0/4bde3376fa225924e40656a843be08.json +1 -0
  237. package/example/.cache/f0/abbb3469060daa0a773e77dd2d2659.json +1 -0
  238. package/example/.cache/f3/4e8575ab40c97777a60b25fa4ba864.json +1 -0
  239. package/example/.cache/f3/e2efc46e031a18c960415870c76bf0.json +1 -0
  240. package/example/.cache/f3/f95087b803c72a556afb5592cbe009.json +1 -0
  241. package/example/.cache/f5/45ea98ee5f6ece8600b4be2a162aaa.json +1 -0
  242. package/example/.cache/f5/522d42e6ae2065f71d633ed51aa0ec.json +1 -0
  243. package/example/.cache/f5/c9f5972eed9cb3325e293450058aa5.json +1 -0
  244. package/example/.cache/f7/af00d15ec64d912a446d76ac0cf3c8.json +1 -0
  245. package/example/.cache/f7/f9f03d3b0230e8251b44b19eee6c3f.json +1 -0
  246. package/example/.cache/f8/3931a6135a92f6da9b725646d9d8ae.json +1 -0
  247. package/example/.cache/fa/5b47e4015d7979d38fced34178fea2.json +1 -0
  248. package/example/.cache/fb/5b3af3e7383a9adf2d2a21cd10d160.json +1 -0
  249. package/example/.cache/fb/efd767752ad035035f49515ab70adb.json +1 -0
  250. package/example/.cache/fb/f25db085b1c21efb22eb495809c6f4.json +1 -0
  251. package/example/.cache/fc/95d10af906939fbb978e2ff09d04c2.json +1 -0
  252. package/example/.cache/fd/6be10171acc3637e3c6403e0d14d43.json +1 -0
  253. package/example/.cache/fd/e30d29fa34bba147f60eb888b4d9ee.json +1 -0
  254. package/example/.cache/fe/b73f454a41ec959ce52a2fe58ceead.json +1 -0
  255. package/example/.cache/fe/ecd0947e8510eeccf61b900c5754af.json +1 -0
  256. package/example/.cache/ff/f78312fff651492685f0fa605ab626.json +1 -0
  257. package/example/index.tsx +10 -30
  258. package/example/yarn.lock +12 -0
  259. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"id":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","dependencies":[{"name":"D:\\PROJECTS\\RICHARDSON\\rnd_3dddplus_graphiceditor\\example\\package.json","includedInParent":true,"mtime":1712199128205},{"name":"D:\\PROJECTS\\RICHARDSON\\rnd_3dddplus_graphiceditor\\node_modules\\imagetracerjs\\package.json","includedInParent":true,"mtime":1702990396719}],"generated":{"js":"var define;\n/*\n\timagetracer.js version 1.2.6\n\tSimple raster image tracer and vectorizer written in JavaScript.\n\tandras@jankovics.net\n*/\n\n/*\n\nThe Unlicense / PUBLIC DOMAIN\n\nThis is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to http://unlicense.org/\n\n*/\n\n(function(){ 'use strict';\n\nfunction ImageTracer(){\n\tvar _this = this;\n\n\tthis.versionnumber = '1.2.6',\n\t\n\t////////////////////////////////////////////////////////////\n\t//\n\t// API\n\t//\n\t////////////////////////////////////////////////////////////\n\t\n\t// Loading an image from a URL, tracing when loaded,\n\t// then executing callback with the scaled svg string as argument\n\tthis.imageToSVG = function( url, callback, options ){\n\t\toptions = _this.checkoptions(options);\n\t\t// loading image, tracing and callback\n\t\t_this.loadImage(\n\t\t\turl,\n\t\t\tfunction(canvas){\n\t\t\t\tcallback(\n\t\t\t\t\t_this.imagedataToSVG( _this.getImgdata(canvas), options )\n\t\t\t\t);\n\t\t\t},\n\t\t\toptions\n\t\t);\n\t},// End of imageToSVG()\n\t\n\t// Tracing imagedata, then returning the scaled svg string\n\tthis.imagedataToSVG = function( imgd, options ){\n\t\toptions = _this.checkoptions(options);\n\t\t// tracing imagedata\n\t\tvar td = _this.imagedataToTracedata( imgd, options );\n\t\t// returning SVG string\n\t\treturn _this.getsvgstring(td, options);\n\t},// End of imagedataToSVG()\n\t\n\t// Loading an image from a URL, tracing when loaded,\n\t// then executing callback with tracedata as argument\n\tthis.imageToTracedata = function( url, callback, options ){\n\t\toptions = _this.checkoptions(options);\n\t\t// loading image, tracing and callback\n\t\t_this.loadImage(\n\t\t\t\turl,\n\t\t\t\tfunction(canvas){\n\t\t\t\t\tcallback(\n\t\t\t\t\t\t_this.imagedataToTracedata( _this.getImgdata(canvas), options )\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\toptions\n\t\t);\n\t},// End of imageToTracedata()\n\t\n\t// Tracing imagedata, then returning tracedata (layers with paths, palette, image size)\n\tthis.imagedataToTracedata = function( imgd, options ){\n\t\toptions = _this.checkoptions(options);\n\t\t\n\t\t// 1. Color quantization\n\t\tvar ii = _this.colorquantization( imgd, options );\n\t\t\n\t\tif(options.layering === 0){// Sequential layering\n\t\t\t\n\t\t\t// create tracedata object\n\t\t\tvar tracedata = {\n\t\t\t\tlayers : [],\n\t\t\t\tpalette : ii.palette,\n\t\t\t\twidth : ii.array[0].length-2,\n\t\t\t\theight : ii.array.length-2\n\t\t\t};\n\t\t\t\n\t\t\t// Loop to trace each color layer\n\t\t\tfor(var colornum=0; colornum<ii.palette.length; colornum++){\n\t\t\t\t\n\t\t\t\t// layeringstep -> pathscan -> internodes -> batchtracepaths\n\t\t\t\tvar tracedlayer =\n\t\t\t\t\t_this.batchtracepaths(\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t_this.internodes(\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t_this.pathscan(\n\t\t\t\t\t\t\t\t_this.layeringstep( ii, colornum ),\n\t\t\t\t\t\t\t\toptions.pathomit\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\n\t\t\t\t\t\toptions.ltres,\n\t\t\t\t\t\toptions.qtres\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t\n\t\t\t\t// adding traced layer\n\t\t\t\ttracedata.layers.push(tracedlayer);\n\t\t\t\t\n\t\t\t}// End of color loop\n\t\t\t\n\t\t}else{// Parallel layering\n\t\t\t// 2. Layer separation and edge detection\n\t\t\tvar ls = _this.layering( ii );\n\t\t\t\n\t\t\t// Optional edge node visualization\n\t\t\tif(options.layercontainerid){ _this.drawLayers( ls, _this.specpalette, options.scale, options.layercontainerid ); }\n\t\t\t\n\t\t\t// 3. Batch pathscan\n\t\t\tvar bps = _this.batchpathscan( ls, options.pathomit );\n\t\t\t\n\t\t\t// 4. Batch interpollation\n\t\t\tvar bis = _this.batchinternodes( bps, options );\n\t\t\t\n\t\t\t// 5. Batch tracing and creating tracedata object\n\t\t\tvar tracedata = {\n\t\t\t\tlayers : _this.batchtracelayers( bis, options.ltres, options.qtres ),\n\t\t\t\tpalette : ii.palette,\n\t\t\t\twidth : imgd.width,\n\t\t\t\theight : imgd.height\n\t\t\t};\n\t\t\t\n\t\t}// End of parallel layering\n\t\t\n\t\t// return tracedata\n\t\treturn tracedata;\n\t\t\n\t},// End of imagedataToTracedata()\n\t\n\tthis.optionpresets = {\n\t\t'default': {\n\t\t\t\n\t\t\t// Tracing\n\t\t\tcorsenabled : false,\n\t\t\tltres : 1,\n\t\t\tqtres : 1,\n\t\t\tpathomit : 8,\n\t\t\trightangleenhance : true,\n\t\t\t\n\t\t\t// Color quantization\n\t\t\tcolorsampling : 2,\n\t\t\tnumberofcolors : 16,\n\t\t\tmincolorratio : 0,\n\t\t\tcolorquantcycles : 3,\n\t\t\t\n\t\t\t// Layering method\n\t\t\tlayering : 0,\n\t\t\t\n\t\t\t// SVG rendering\n\t\t\tstrokewidth : 1,\n\t\t\tlinefilter : false,\n\t\t\tscale : 1,\n\t\t\troundcoords : 1,\n\t\t\tviewbox : false,\n\t\t\tdesc : false,\n\t\t\tlcpr : 0,\n\t\t\tqcpr : 0,\n\t\t\t\n\t\t\t// Blur\n\t\t\tblurradius : 0,\n\t\t\tblurdelta : 20\n\t\t\t\n\t\t},\n\t\t'posterized1': { colorsampling:0, numberofcolors:2 },\n\t\t'posterized2': { numberofcolors:4, blurradius:5 },\n\t\t'curvy': { ltres:0.01, linefilter:true, rightangleenhance:false },\n\t\t'sharp': { qtres:0.01, linefilter:false },\n\t\t'detailed': { pathomit:0, roundcoords:2, ltres:0.5, qtres:0.5, numberofcolors:64 },\n\t\t'smoothed': { blurradius:5, blurdelta: 64 },\n\t\t'grayscale': { colorsampling:0, colorquantcycles:1, numberofcolors:7 },\n\t\t'fixedpalette': { colorsampling:0, colorquantcycles:1, numberofcolors:27 },\n\t\t'randomsampling1': { colorsampling:1, numberofcolors:8 },\n\t\t'randomsampling2': { colorsampling:1, numberofcolors:64 },\n\t\t'artistic1': { colorsampling:0, colorquantcycles:1, pathomit:0, blurradius:5, blurdelta: 64, ltres:0.01, linefilter:true, numberofcolors:16, strokewidth:2 },\n\t\t'artistic2': { qtres:0.01, colorsampling:0, colorquantcycles:1, numberofcolors:4, strokewidth:0 },\n\t\t'artistic3': { qtres:10, ltres:10, numberofcolors:8 },\n\t\t'artistic4': { qtres:10, ltres:10, numberofcolors:64, blurradius:5, blurdelta: 256, strokewidth:2 },\n\t\t'posterized3': { ltres: 1, qtres: 1, pathomit: 20, rightangleenhance: true, colorsampling: 0, numberofcolors: 3,\n\t\t\tmincolorratio: 0, colorquantcycles: 3, blurradius: 3, blurdelta: 20, strokewidth: 0, linefilter: false,\n\t\t\troundcoords: 1, pal: [ { r: 0, g: 0, b: 100, a: 255 }, { r: 255, g: 255, b: 255, a: 255 } ] }\n\t},// End of optionpresets\n\t\n\t// creating options object, setting defaults for missing values\n\tthis.checkoptions = function(options){\n\t\toptions = options || {};\n\t\t// Option preset\n\t\tif(typeof options === 'string'){\n\t\t\toptions = options.toLowerCase();\n\t\t\tif( _this.optionpresets[options] ){ options = _this.optionpresets[options]; }else{ options = {}; }\n\t\t}\n\t\t// Defaults\n\t\tvar ok = Object.keys(_this.optionpresets['default']);\n\t\tfor(var k=0; k<ok.length; k++){\n\t\t\tif(!options.hasOwnProperty(ok[k])){ options[ok[k]] = _this.optionpresets['default'][ok[k]]; }\n\t\t}\n\t\t// options.pal is not defined here, the custom palette should be added externally: options.pal = [ { 'r':0, 'g':0, 'b':0, 'a':255 }, {...}, ... ];\n\t\t// options.layercontainerid is not defined here, can be added externally: options.layercontainerid = 'mydiv'; ... <div id=\"mydiv\"></div>\n\t\treturn options;\n\t},// End of checkoptions()\n\t\n\t////////////////////////////////////////////////////////////\n\t//\n\t// Vectorizing functions\n\t//\n\t////////////////////////////////////////////////////////////\n\t\n\t// 1. Color quantization\n\t// Using a form of k-means clustering repeatead options.colorquantcycles times. http://en.wikipedia.org/wiki/Color_quantization\n\tthis.colorquantization = function( imgd, options ){\n\t\tvar arr = [], idx=0, cd,cdl,ci, paletteacc = [], pixelnum = imgd.width * imgd.height, i, j, k, cnt, palette;\n\t\t\n\t\t// imgd.data must be RGBA, not just RGB\n\t\tif( imgd.data.length < pixelnum * 4 ){\n\t\t\tvar newimgddata = new Uint8ClampedArray(pixelnum * 4);\n\t\t\tfor(var pxcnt = 0; pxcnt < pixelnum ; pxcnt++){\n\t\t\t\tnewimgddata[pxcnt*4 ] = imgd.data[pxcnt*3 ];\n\t\t\t\tnewimgddata[pxcnt*4+1] = imgd.data[pxcnt*3+1];\n\t\t\t\tnewimgddata[pxcnt*4+2] = imgd.data[pxcnt*3+2];\n\t\t\t\tnewimgddata[pxcnt*4+3] = 255;\n\t\t\t}\n\t\t\timgd.data = newimgddata;\n\t\t}// End of RGBA imgd.data check\n\t\t\n\t\t// Filling arr (color index array) with -1\n\t\tfor( j=0; j<imgd.height+2; j++ ){ arr[j]=[]; for(i=0; i<imgd.width+2 ; i++){ arr[j][i] = -1; } }\n\t\t\n\t\t// Use custom palette if pal is defined or sample / generate custom length palette\n\t\tif(options.pal){\n\t\t\tpalette = options.pal;\n\t\t}else if(options.colorsampling === 0){\n\t\t\tpalette = _this.generatepalette(options.numberofcolors);\n\t\t}else if(options.colorsampling === 1){\n\t\t\tpalette = _this.samplepalette( options.numberofcolors, imgd );\n\t\t}else{\n\t\t\tpalette = _this.samplepalette2( options.numberofcolors, imgd );\n\t\t}\n\t\t\n\t\t// Selective Gaussian blur preprocessing\n\t\tif( options.blurradius > 0 ){ imgd = _this.blur( imgd, options.blurradius, options.blurdelta ); }\n\t\t\n\t\t// Repeat clustering step options.colorquantcycles times\n\t\tfor( cnt=0; cnt < options.colorquantcycles; cnt++ ){\n\t\t\t\n\t\t\t// Average colors from the second iteration\n\t\t\tif(cnt>0){\n\t\t\t\t// averaging paletteacc for palette\n\t\t\t\tfor( k=0; k < palette.length; k++ ){\n\t\t\t\t\t\n\t\t\t\t\t// averaging\n\t\t\t\t\tif( paletteacc[k].n > 0 ){\n\t\t\t\t\t\tpalette[k] = { r: Math.floor( paletteacc[k].r / paletteacc[k].n ),\n\t\t\t\t\t\t\t\t\t\tg: Math.floor( paletteacc[k].g / paletteacc[k].n ),\n\t\t\t\t\t\t\t\t\t\tb: Math.floor( paletteacc[k].b / paletteacc[k].n ),\n\t\t\t\t\t\t\t\t\t\ta: Math.floor( paletteacc[k].a / paletteacc[k].n ) };\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// Randomizing a color, if there are too few pixels and there will be a new cycle\n\t\t\t\t\tif( ( paletteacc[k].n/pixelnum < options.mincolorratio ) && ( cnt < options.colorquantcycles-1 ) ){\n\t\t\t\t\t\tpalette[k] = { r: Math.floor(Math.random()*255),\n\t\t\t\t\t\t\t\t\t\tg: Math.floor(Math.random()*255),\n\t\t\t\t\t\t\t\t\t\tb: Math.floor(Math.random()*255),\n\t\t\t\t\t\t\t\t\t\ta: Math.floor(Math.random()*255) };\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}// End of palette loop\n\t\t\t}// End of Average colors from the second iteration\n\t\t\t\n\t\t\t// Reseting palette accumulator for averaging\n\t\t\tfor( i=0; i < palette.length; i++ ){ paletteacc[i] = { r:0, g:0, b:0, a:0, n:0 }; }\n\t\t\t\n\t\t\t// loop through all pixels\n\t\t\tfor( j=0; j < imgd.height; j++ ){\n\t\t\t\tfor( i=0; i < imgd.width; i++ ){\n\t\t\t\t\t\n\t\t\t\t\t// pixel index\n\t\t\t\t\tidx = (j*imgd.width+i)*4;\n\t\t\t\t\t\n\t\t\t\t\t// find closest color from palette by measuring (rectilinear) color distance between this pixel and all palette colors\n\t\t\t\t\tci=0; cdl = 1024; // 4 * 256 is the maximum RGBA distance\n\t\t\t\t\tfor( k=0; k<palette.length; k++ ){\n\t\t\t\t\t\t\n\t\t\t\t\t\t// In my experience, https://en.wikipedia.org/wiki/Rectilinear_distance works better than https://en.wikipedia.org/wiki/Euclidean_distance\n\t\t\t\t\t\tcd = Math.abs(palette[k].r-imgd.data[idx]) + Math.abs(palette[k].g-imgd.data[idx+1]) + Math.abs(palette[k].b-imgd.data[idx+2]) + Math.abs(palette[k].a-imgd.data[idx+3]);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remember this color if this is the closest yet\n\t\t\t\t\t\tif(cd<cdl){ cdl = cd; ci = k; }\n\t\t\t\t\t\t\n\t\t\t\t\t}// End of palette loop\n\t\t\t\t\t\n\t\t\t\t\t// add to palettacc\n\t\t\t\t\tpaletteacc[ci].r += imgd.data[idx ];\n\t\t\t\t\tpaletteacc[ci].g += imgd.data[idx+1];\n\t\t\t\t\tpaletteacc[ci].b += imgd.data[idx+2];\n\t\t\t\t\tpaletteacc[ci].a += imgd.data[idx+3];\n\t\t\t\t\tpaletteacc[ci].n++;\n\t\t\t\t\t\n\t\t\t\t\t// update the indexed color array\n\t\t\t\t\tarr[j+1][i+1] = ci;\n\t\t\t\t\t\n\t\t\t\t}// End of i loop\n\t\t\t}// End of j loop\n\t\t\t\n\t\t}// End of Repeat clustering step options.colorquantcycles times\n\t\t\n\t\treturn { array:arr, palette:palette };\n\t\t\n\t},// End of colorquantization()\n\t\n\t// Sampling a palette from imagedata\n\tthis.samplepalette = function( numberofcolors, imgd ){\n\t\tvar idx, palette=[];\n\t\tfor(var i=0; i<numberofcolors; i++){\n\t\t\tidx = Math.floor( Math.random() * imgd.data.length / 4 ) * 4;\n\t\t\tpalette.push({ r:imgd.data[idx ], g:imgd.data[idx+1], b:imgd.data[idx+2], a:imgd.data[idx+3] });\n\t\t}\n\t\treturn palette;\n\t},// End of samplepalette()\n\t\n\t// Deterministic sampling a palette from imagedata: rectangular grid\n\tthis.samplepalette2 = function( numberofcolors, imgd ){\n\t\tvar idx, palette=[], ni = Math.ceil(Math.sqrt(numberofcolors)), nj = Math.ceil(numberofcolors/ni),\n\t\t\tvx = imgd.width / (ni+1), vy = imgd.height / (nj+1);\n\t\tfor(var j=0; j<nj; j++){\n\t\t\tfor(var i=0; i<ni; i++){\n\t\t\t\tif(palette.length === numberofcolors){\n\t\t\t\t\tbreak;\n\t\t\t\t}else{\n\t\t\t\t\tidx = Math.floor( ((j+1)*vy) * imgd.width + ((i+1)*vx) ) * 4;\n\t\t\t\t\tpalette.push( { r:imgd.data[idx], g:imgd.data[idx+1], b:imgd.data[idx+2], a:imgd.data[idx+3] } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn palette;\n\t},// End of samplepalette2()\n\t\n\t// Generating a palette with numberofcolors\n\tthis.generatepalette = function(numberofcolors){\n\t\tvar palette = [], rcnt, gcnt, bcnt;\n\t\tif(numberofcolors<8){\n\t\t\t\n\t\t\t// Grayscale\n\t\t\tvar graystep = Math.floor(255/(numberofcolors-1));\n\t\t\tfor(var i=0; i<numberofcolors; i++){ palette.push({ r:i*graystep, g:i*graystep, b:i*graystep, a:255 }); }\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\t// RGB color cube\n\t\t\tvar colorqnum = Math.floor(Math.pow(numberofcolors, 1/3)), // Number of points on each edge on the RGB color cube\n\t\t\t\tcolorstep = Math.floor(255/(colorqnum-1)), // distance between points\n\t\t\t\trndnum = numberofcolors - colorqnum*colorqnum*colorqnum; // number of random colors\n\t\t\t\n\t\t\tfor(rcnt=0; rcnt<colorqnum; rcnt++){\n\t\t\t\tfor(gcnt=0; gcnt<colorqnum; gcnt++){\n\t\t\t\t\tfor(bcnt=0; bcnt<colorqnum; bcnt++){\n\t\t\t\t\t\tpalette.push( { r:rcnt*colorstep, g:gcnt*colorstep, b:bcnt*colorstep, a:255 } );\n\t\t\t\t\t}// End of blue loop\n\t\t\t\t}// End of green loop\n\t\t\t}// End of red loop\n\t\t\t\n\t\t\t// Rest is random\n\t\t\tfor(rcnt=0; rcnt<rndnum; rcnt++){ palette.push({ r:Math.floor(Math.random()*255), g:Math.floor(Math.random()*255), b:Math.floor(Math.random()*255), a:Math.floor(Math.random()*255) }); }\n\n\t\t}// End of numberofcolors check\n\t\t\n\t\treturn palette;\n\t},// End of generatepalette()\n\t\t\n\t// 2. Layer separation and edge detection\n\t// Edge node types ( ▓: this layer or 1; ░: not this layer or 0 )\n\t// 12 ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓\n\t// 48 ░░ ░░ ░░ ░░ ░▓ ░▓ ░▓ ░▓ ▓░ ▓░ ▓░ ▓░ ▓▓ ▓▓ ▓▓ ▓▓\n\t// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\tthis.layering = function(ii){\n\t\t// Creating layers for each indexed color in arr\n\t\tvar layers = [], val=0, ah = ii.array.length, aw = ii.array[0].length, n1,n2,n3,n4,n5,n6,n7,n8, i, j, k;\n\t\t\n\t\t// Create layers\n\t\tfor(k=0; k<ii.palette.length; k++){\n\t\t\tlayers[k] = [];\n\t\t\tfor(j=0; j<ah; j++){\n\t\t\t\tlayers[k][j] = [];\n\t\t\t\tfor(i=0; i<aw; i++){\n\t\t\t\t\tlayers[k][j][i]=0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Looping through all pixels and calculating edge node type\n\t\tfor(j=1; j<ah-1; j++){\n\t\t\tfor(i=1; i<aw-1; i++){\n\t\t\t\t\n\t\t\t\t// This pixel's indexed color\n\t\t\t\tval = ii.array[j][i];\n\t\t\t\t\n\t\t\t\t// Are neighbor pixel colors the same?\n\t\t\t\tn1 = ii.array[j-1][i-1]===val ? 1 : 0;\n\t\t\t\tn2 = ii.array[j-1][i ]===val ? 1 : 0;\n\t\t\t\tn3 = ii.array[j-1][i+1]===val ? 1 : 0;\n\t\t\t\tn4 = ii.array[j ][i-1]===val ? 1 : 0;\n\t\t\t\tn5 = ii.array[j ][i+1]===val ? 1 : 0;\n\t\t\t\tn6 = ii.array[j+1][i-1]===val ? 1 : 0;\n\t\t\t\tn7 = ii.array[j+1][i ]===val ? 1 : 0;\n\t\t\t\tn8 = ii.array[j+1][i+1]===val ? 1 : 0;\n\t\t\t\t\n\t\t\t\t// this pixel's type and looking back on previous pixels\n\t\t\t\tlayers[val][j+1][i+1] = 1 + n5 * 2 + n8 * 4 + n7 * 8 ;\n\t\t\t\tif(!n4){ layers[val][j+1][i ] = 0 + 2 + n7 * 4 + n6 * 8 ; }\n\t\t\t\tif(!n2){ layers[val][j ][i+1] = 0 + n3*2 + n5 * 4 + 8 ; }\n\t\t\t\tif(!n1){ layers[val][j ][i ] = 0 + n2*2 + 4 + n4 * 8 ; }\n\t\t\t\t\n\t\t\t}// End of i loop\n\t\t}// End of j loop\n\t\t\n\t\treturn layers;\n\t},// End of layering()\n\t\n\t// 2. Layer separation and edge detection\n\t// Edge node types ( ▓: this layer or 1; ░: not this layer or 0 )\n\t// 12 ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓\n\t// 48 ░░ ░░ ░░ ░░ ░▓ ░▓ ░▓ ░▓ ▓░ ▓░ ▓░ ▓░ ▓▓ ▓▓ ▓▓ ▓▓\n\t// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\tthis.layeringstep = function(ii,cnum){\n\t\t// Creating layers for each indexed color in arr\n\t\tvar layer = [], val=0, ah = ii.array.length, aw = ii.array[0].length, n1,n2,n3,n4,n5,n6,n7,n8, i, j, k;\n\t\t\n\t\t// Create layer\n\t\tfor(j=0; j<ah; j++){\n\t\t\tlayer[j] = [];\n\t\t\tfor(i=0; i<aw; i++){\n\t\t\t\tlayer[j][i]=0;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Looping through all pixels and calculating edge node type\n\t\tfor(j=1; j<ah; j++){\n\t\t\tfor(i=1; i<aw; i++){\n\t\t\t\tlayer[j][i] =\n\t\t\t\t\t( ii.array[j-1][i-1]===cnum ? 1 : 0 ) +\n\t\t\t\t\t( ii.array[j-1][i]===cnum ? 2 : 0 ) +\n\t\t\t\t\t( ii.array[j][i-1]===cnum ? 8 : 0 ) +\n\t\t\t\t\t( ii.array[j][i]===cnum ? 4 : 0 )\n\t\t\t\t;\n\t\t\t}// End of i loop\n\t\t}// End of j loop\n\t\t\t\n\t\treturn layer;\n\t},// End of layeringstep()\n\t\n\t// Point in polygon test\n\tthis.pointinpoly = function( p, pa ){\n\t\tvar isin=false;\n\n\t\tfor(var i=0,j=pa.length-1; i<pa.length; j=i++){\n\t\t\tisin =\n\t\t\t\t( ((pa[i].y > p.y) !== (pa[j].y > p.y)) && (p.x < (pa[j].x - pa[i].x) * (p.y - pa[i].y) / (pa[j].y - pa[i].y) + pa[i].x) )\n\t\t\t\t? !isin : isin;\n\t\t}\n\n\t\treturn isin;\n\t},\n\t\n\t// Lookup tables for pathscan\n\t// pathscan_combined_lookup[ arr[py][px] ][ dir ] = [nextarrpypx, nextdir, deltapx, deltapy];\n\tthis.pathscan_combined_lookup = [\n\t\t[[-1,-1,-1,-1], [-1,-1,-1,-1], [-1,-1,-1,-1], [-1,-1,-1,-1]],// arr[py][px]===0 is invalid\n\t\t[[ 0, 1, 0,-1], [-1,-1,-1,-1], [-1,-1,-1,-1], [ 0, 2,-1, 0]],\n\t\t[[-1,-1,-1,-1], [-1,-1,-1,-1], [ 0, 1, 0,-1], [ 0, 0, 1, 0]],\n\t\t[[ 0, 0, 1, 0], [-1,-1,-1,-1], [ 0, 2,-1, 0], [-1,-1,-1,-1]],\n\t\t\n\t\t[[-1,-1,-1,-1], [ 0, 0, 1, 0], [ 0, 3, 0, 1], [-1,-1,-1,-1]],\n\t\t[[13, 3, 0, 1], [13, 2,-1, 0], [ 7, 1, 0,-1], [ 7, 0, 1, 0]],\n\t\t[[-1,-1,-1,-1], [ 0, 1, 0,-1], [-1,-1,-1,-1], [ 0, 3, 0, 1]],\n\t\t[[ 0, 3, 0, 1], [ 0, 2,-1, 0], [-1,-1,-1,-1], [-1,-1,-1,-1]],\n\t\t\n\t\t[[ 0, 3, 0, 1], [ 0, 2,-1, 0], [-1,-1,-1,-1], [-1,-1,-1,-1]],\n\t\t[[-1,-1,-1,-1], [ 0, 1, 0,-1], [-1,-1,-1,-1], [ 0, 3, 0, 1]],\n\t\t[[11, 1, 0,-1], [14, 0, 1, 0], [14, 3, 0, 1], [11, 2,-1, 0]],\n\t\t[[-1,-1,-1,-1], [ 0, 0, 1, 0], [ 0, 3, 0, 1], [-1,-1,-1,-1]],\n\t\t\n\t\t[[ 0, 0, 1, 0], [-1,-1,-1,-1], [ 0, 2,-1, 0], [-1,-1,-1,-1]],\n\t\t[[-1,-1,-1,-1], [-1,-1,-1,-1], [ 0, 1, 0,-1], [ 0, 0, 1, 0]],\n\t\t[[ 0, 1, 0,-1], [-1,-1,-1,-1], [-1,-1,-1,-1], [ 0, 2,-1, 0]],\n\t\t[[-1,-1,-1,-1], [-1,-1,-1,-1], [-1,-1,-1,-1], [-1,-1,-1,-1]]// arr[py][px]===15 is invalid\n\t],\n\n\t// 3. Walking through an edge node array, discarding edge node types 0 and 15 and creating paths from the rest.\n\t// Walk directions (dir): 0 > ; 1 ^ ; 2 < ; 3 v \n\tthis.pathscan = function( arr, pathomit ){\n\t\tvar paths=[], pacnt=0, pcnt=0, px=0, py=0, w = arr[0].length, h = arr.length,\n\t\t\tdir=0, pathfinished=true, holepath=false, lookuprow;\n\t\t\n\t\tfor(var j=0; j<h; j++){\n\t\t\tfor(var i=0; i<w; i++){\n\t\t\t\tif( (arr[j][i] == 4) || ( arr[j][i] == 11) ){ // Other values are not valid\n\t\t\t\t\t\n\t\t\t\t\t// Init\n\t\t\t\t\tpx = i; py = j;\n\t\t\t\t\tpaths[pacnt] = {};\n\t\t\t\t\tpaths[pacnt].points = [];\n\t\t\t\t\tpaths[pacnt].boundingbox = [px,py,px,py];\n\t\t\t\t\tpaths[pacnt].holechildren = [];\n\t\t\t\t\tpathfinished = false;\n\t\t\t\t\tpcnt=0;\n\t\t\t\t\tholepath = (arr[j][i]==11);\n\t\t\t\t\tdir = 1;\n\n\t\t\t\t\t// Path points loop\n\t\t\t\t\twhile(!pathfinished){\n\t\t\t\t\t\t\n\t\t\t\t\t\t// New path point\n\t\t\t\t\t\tpaths[pacnt].points[pcnt] = {};\n\t\t\t\t\t\tpaths[pacnt].points[pcnt].x = px-1;\n\t\t\t\t\t\tpaths[pacnt].points[pcnt].y = py-1;\n\t\t\t\t\t\tpaths[pacnt].points[pcnt].t = arr[py][px];\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Bounding box\n\t\t\t\t\t\tif( (px-1) < paths[pacnt].boundingbox[0] ){ paths[pacnt].boundingbox[0] = px-1; }\n\t\t\t\t\t\tif( (px-1) > paths[pacnt].boundingbox[2] ){ paths[pacnt].boundingbox[2] = px-1; }\n\t\t\t\t\t\tif( (py-1) < paths[pacnt].boundingbox[1] ){ paths[pacnt].boundingbox[1] = py-1; }\n\t\t\t\t\t\tif( (py-1) > paths[pacnt].boundingbox[3] ){ paths[pacnt].boundingbox[3] = py-1; }\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Next: look up the replacement, direction and coordinate changes = clear this cell, turn if required, walk forward\n\t\t\t\t\t\tlookuprow = _this.pathscan_combined_lookup[ arr[py][px] ][ dir ];\n\t\t\t\t\t\tarr[py][px] = lookuprow[0]; dir = lookuprow[1]; px += lookuprow[2]; py += lookuprow[3];\n\n\t\t\t\t\t\t// Close path\n\t\t\t\t\t\tif( (px-1 === paths[pacnt].points[0].x ) && ( py-1 === paths[pacnt].points[0].y ) ){\n\t\t\t\t\t\t\tpathfinished = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Discarding paths shorter than pathomit\n\t\t\t\t\t\t\tif( paths[pacnt].points.length < pathomit ){\n\t\t\t\t\t\t\t\tpaths.pop();\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tpaths[pacnt].isholepath = holepath ? true : false;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Finding the parent shape for this hole\n\t\t\t\t\t\t\t\tif(holepath){\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tvar parentidx = 0, parentbbox = [-1,-1,w+1,h+1];\n\t\t\t\t\t\t\t\t\tfor(var parentcnt=0; parentcnt < pacnt; parentcnt++){\n\t\t\t\t\t\t\t\t\t\tif( (!paths[parentcnt].isholepath) &&\n\t\t\t\t\t\t\t\t\t\t\t_this.boundingboxincludes( paths[parentcnt].boundingbox , paths[pacnt].boundingbox ) &&\n\t\t\t\t\t\t\t\t\t\t\t_this.boundingboxincludes( parentbbox , paths[parentcnt].boundingbox ) &&\n\t\t\t\t\t\t\t\t\t\t\t_this.pointinpoly( paths[pacnt].points[0], paths[parentcnt].points )\n\t\t\t\t\t\t\t\t\t\t){\n\t\t\t\t\t\t\t\t\t\t\tparentidx = parentcnt;\n\t\t\t\t\t\t\t\t\t\t\tparentbbox = paths[parentcnt].boundingbox;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tpaths[parentidx].holechildren.push( pacnt );\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}// End of holepath parent finding\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tpacnt++;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}// End of Close path\n\t\t\t\t\t\t\n\t\t\t\t\t\tpcnt++;\n\t\t\t\t\t\t\n\t\t\t\t\t}// End of Path points loop\n\t\t\t\t\t\n\t\t\t\t}// End of Follow path\n\t\t\t\t\n\t\t\t}// End of i loop\n\t\t}// End of j loop\n\t\t\n\t\treturn paths;\n\t},// End of pathscan()\n\t\n\tthis.boundingboxincludes = function( parentbbox, childbbox ){\n\t\treturn ( ( parentbbox[0] < childbbox[0] ) && ( parentbbox[1] < childbbox[1] ) && ( parentbbox[2] > childbbox[2] ) && ( parentbbox[3] > childbbox[3] ) );\n\t},// End of boundingboxincludes()\n\t\n\t// 3. Batch pathscan\n\tthis.batchpathscan = function( layers, pathomit ){\n\t\tvar bpaths = [];\n\t\tfor(var k in layers){\n\t\t\tif(!layers.hasOwnProperty(k)){ continue; }\n\t\t\tbpaths[k] = _this.pathscan( layers[k], pathomit );\n\t\t}\n\t\treturn bpaths;\n\t},\n\t\n\t// 4. interpollating between path points for nodes with 8 directions ( East, SouthEast, S, SW, W, NW, N, NE )\n\tthis.internodes = function( paths, options ){\n\t\tvar ins = [], palen=0, nextidx=0, nextidx2=0, previdx=0, previdx2=0, pacnt, pcnt;\n\t\t\n\t\t// paths loop\n\t\tfor(pacnt=0; pacnt<paths.length; pacnt++){\n\t\t\t\n\t\t\tins[pacnt] = {};\n\t\t\tins[pacnt].points = [];\n\t\t\tins[pacnt].boundingbox = paths[pacnt].boundingbox;\n\t\t\tins[pacnt].holechildren = paths[pacnt].holechildren;\n\t\t\tins[pacnt].isholepath = paths[pacnt].isholepath;\n\t\t\tpalen = paths[pacnt].points.length;\n\t\t\t\n\t\t\t// pathpoints loop\n\t\t\tfor(pcnt=0; pcnt<palen; pcnt++){\n\t\t\t\n\t\t\t\t// next and previous point indexes\n\t\t\t\tnextidx = (pcnt+1)%palen; nextidx2 = (pcnt+2)%palen; previdx = (pcnt-1+palen)%palen; previdx2 = (pcnt-2+palen)%palen;\n\t\t\t\t\n\t\t\t\t// right angle enhance\n\t\t\t\tif( options.rightangleenhance && _this.testrightangle( paths[pacnt], previdx2, previdx, pcnt, nextidx, nextidx2 ) ){\n\t\t\t\t\t\n\t\t\t\t\t// Fix previous direction\n\t\t\t\t\tif(ins[pacnt].points.length > 0){\n\t\t\t\t\t\tins[pacnt].points[ ins[pacnt].points.length-1 ].linesegment = _this.getdirection(\n\t\t\t\t\t\t\t\tins[pacnt].points[ ins[pacnt].points.length-1 ].x,\n\t\t\t\t\t\t\t\tins[pacnt].points[ ins[pacnt].points.length-1 ].y,\n\t\t\t\t\t\t\t\tpaths[pacnt].points[pcnt].x,\n\t\t\t\t\t\t\t\tpaths[pacnt].points[pcnt].y\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// This corner point\n\t\t\t\t\tins[pacnt].points.push({\n\t\t\t\t\t\tx : paths[pacnt].points[pcnt].x,\n\t\t\t\t\t\ty : paths[pacnt].points[pcnt].y,\n\t\t\t\t\t\tlinesegment : _this.getdirection(\n\t\t\t\t\t\t\t\tpaths[pacnt].points[pcnt].x,\n\t\t\t\t\t\t\t\tpaths[pacnt].points[pcnt].y,\n\t\t\t\t\t\t\t\t(( paths[pacnt].points[pcnt].x + paths[pacnt].points[nextidx].x ) /2),\n\t\t\t\t\t\t\t\t(( paths[pacnt].points[pcnt].y + paths[pacnt].points[nextidx].y ) /2)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t}// End of right angle enhance\n\t\t\t\t\n\t\t\t\t// interpolate between two path points\n\t\t\t\tins[pacnt].points.push({\n\t\t\t\t\tx : (( paths[pacnt].points[pcnt].x + paths[pacnt].points[nextidx].x ) /2),\n\t\t\t\t\ty : (( paths[pacnt].points[pcnt].y + paths[pacnt].points[nextidx].y ) /2),\n\t\t\t\t\tlinesegment : _this.getdirection(\n\t\t\t\t\t\t\t(( paths[pacnt].points[pcnt].x + paths[pacnt].points[nextidx].x ) /2),\n\t\t\t\t\t\t\t(( paths[pacnt].points[pcnt].y + paths[pacnt].points[nextidx].y ) /2),\n\t\t\t\t\t\t\t(( paths[pacnt].points[nextidx].x + paths[pacnt].points[nextidx2].x ) /2),\n\t\t\t\t\t\t\t(( paths[pacnt].points[nextidx].y + paths[pacnt].points[nextidx2].y ) /2)\n\t\t\t\t\t\t)\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}// End of pathpoints loop\n\t\t\t\t\t\t\n\t\t}// End of paths loop\n\t\t\n\t\treturn ins;\n\t},// End of internodes()\n\t\n\tthis.testrightangle = function( path, idx1, idx2, idx3, idx4, idx5 ){\n\t\treturn ( (( path.points[idx3].x === path.points[idx1].x) &&\n\t\t\t\t ( path.points[idx3].x === path.points[idx2].x) &&\n\t\t\t\t ( path.points[idx3].y === path.points[idx4].y) &&\n\t\t\t\t ( path.points[idx3].y === path.points[idx5].y)\n\t\t\t\t ) ||\n\t\t\t\t (( path.points[idx3].y === path.points[idx1].y) &&\n\t\t\t\t ( path.points[idx3].y === path.points[idx2].y) &&\n\t\t\t\t ( path.points[idx3].x === path.points[idx4].x) &&\n\t\t\t\t ( path.points[idx3].x === path.points[idx5].x)\n\t\t\t\t )\n\t\t);\n\t},// End of testrightangle()\n\t\n\tthis.getdirection = function( x1, y1, x2, y2 ){\n\t\tvar val = 8;\n\t\tif(x1 < x2){\n\t\t\tif (y1 < y2){ val = 1; }// SouthEast\n\t\t\telse if(y1 > y2){ val = 7; }// NE\n\t\t\telse { val = 0; }// E\n\t\t}else if(x1 > x2){\n\t\t\tif (y1 < y2){ val = 3; }// SW\n\t\t\telse if(y1 > y2){ val = 5; }// NW\n\t\t\telse { val = 4; }// W\n\t\t}else{\n\t\t\tif (y1 < y2){ val = 2; }// S\n\t\t\telse if(y1 > y2){ val = 6; }// N\n\t\t\telse { val = 8; }// center, this should not happen\n\t\t}\n\t\treturn val;\n\t},// End of getdirection()\n\t\n\t// 4. Batch interpollation\n\tthis.batchinternodes = function( bpaths, options ){\n\t\tvar binternodes = [];\n\t\tfor (var k in bpaths) {\n\t\t\tif(!bpaths.hasOwnProperty(k)){ continue; }\n\t\t\tbinternodes[k] = _this.internodes(bpaths[k], options);\n\t\t}\n\t\treturn binternodes;\n\t},\n\t\n\t// 5. tracepath() : recursively trying to fit straight and quadratic spline segments on the 8 direction internode path\n\t\n\t// 5.1. Find sequences of points with only 2 segment types\n\t// 5.2. Fit a straight line on the sequence\n\t// 5.3. If the straight line fails (distance error > ltres), find the point with the biggest error\n\t// 5.4. Fit a quadratic spline through errorpoint (project this to get controlpoint), then measure errors on every point in the sequence\n\t// 5.5. If the spline fails (distance error > qtres), find the point with the biggest error, set splitpoint = fitting point\n\t// 5.6. Split sequence and recursively apply 5.2. - 5.6. to startpoint-splitpoint and splitpoint-endpoint sequences\n\t\n\tthis.tracepath = function( path, ltres, qtres ){\n\t\tvar pcnt=0, segtype1, segtype2, seqend, smp = {};\n\t\tsmp.segments = [];\n\t\tsmp.boundingbox = path.boundingbox;\n\t\tsmp.holechildren = path.holechildren;\n\t\tsmp.isholepath = path.isholepath;\n\t\t\n\t\twhile(pcnt < path.points.length){\n\t\t\t// 5.1. Find sequences of points with only 2 segment types\n\t\t\tsegtype1 = path.points[pcnt].linesegment; segtype2 = -1; seqend=pcnt+1;\n\t\t\twhile(\n\t\t\t\t((path.points[seqend].linesegment === segtype1) || (path.points[seqend].linesegment === segtype2) || (segtype2 === -1))\n\t\t\t\t&& (seqend < path.points.length-1) ){\n\t\t\t\t\n\t\t\t\tif((path.points[seqend].linesegment!==segtype1) && (segtype2===-1)){ segtype2 = path.points[seqend].linesegment; }\n\t\t\t\tseqend++;\n\t\t\t\t\n\t\t\t}\n\t\t\tif(seqend === path.points.length-1){ seqend = 0; }\n\n\t\t\t// 5.2. - 5.6. Split sequence and recursively apply 5.2. - 5.6. to startpoint-splitpoint and splitpoint-endpoint sequences\n\t\t\tsmp.segments = smp.segments.concat( _this.fitseq(path, ltres, qtres, pcnt, seqend) );\n\t\t\t\n\t\t\t// forward pcnt;\n\t\t\tif(seqend>0){ pcnt = seqend; }else{ pcnt = path.points.length; }\n\t\t\t\n\t\t}// End of pcnt loop\n\t\t\n\t\treturn smp;\n\t},// End of tracepath()\n\t\t\n\t// 5.2. - 5.6. recursively fitting a straight or quadratic line segment on this sequence of path nodes,\n\t// called from tracepath()\n\tthis.fitseq = function( path, ltres, qtres, seqstart, seqend ){\n\t\t// return if invalid seqend\n\t\tif( (seqend>path.points.length) || (seqend<0) ){ return []; }\n\t\t// variables\n\t\tvar errorpoint=seqstart, errorval=0, curvepass=true, px, py, dist2;\n\t\tvar tl = (seqend-seqstart); if(tl<0){ tl += path.points.length; }\n\t\tvar vx = (path.points[seqend].x-path.points[seqstart].x) / tl,\n\t\t\tvy = (path.points[seqend].y-path.points[seqstart].y) / tl;\n\t\t\n\t\t// 5.2. Fit a straight line on the sequence\n\t\tvar pcnt = (seqstart+1) % path.points.length, pl;\n\t\twhile(pcnt != seqend){\n\t\t\tpl = pcnt-seqstart; if(pl<0){ pl += path.points.length; }\n\t\t\tpx = path.points[seqstart].x + vx * pl; py = path.points[seqstart].y + vy * pl;\n\t\t\tdist2 = (path.points[pcnt].x-px)*(path.points[pcnt].x-px) + (path.points[pcnt].y-py)*(path.points[pcnt].y-py);\n\t\t\tif(dist2>ltres){curvepass=false;}\n\t\t\tif(dist2>errorval){ errorpoint=pcnt; errorval=dist2; }\n\t\t\tpcnt = (pcnt+1)%path.points.length;\n\t\t}\n\t\t// return straight line if fits\n\t\tif(curvepass){ return [{ type:'L', x1:path.points[seqstart].x, y1:path.points[seqstart].y, x2:path.points[seqend].x, y2:path.points[seqend].y }]; }\n\t\t\n\t\t// 5.3. If the straight line fails (distance error>ltres), find the point with the biggest error\n\t\tvar fitpoint = errorpoint; curvepass = true; errorval = 0;\n\t\t\n\t\t// 5.4. Fit a quadratic spline through this point, measure errors on every point in the sequence\n\t\t// helpers and projecting to get control point\n\t\tvar t=(fitpoint-seqstart)/tl, t1=(1-t)*(1-t), t2=2*(1-t)*t, t3=t*t;\n\t\tvar cpx = (t1*path.points[seqstart].x + t3*path.points[seqend].x - path.points[fitpoint].x)/-t2 ,\n\t\t\tcpy = (t1*path.points[seqstart].y + t3*path.points[seqend].y - path.points[fitpoint].y)/-t2 ;\n\t\t\n\t\t// Check every point\n\t\tpcnt = seqstart+1;\n\t\twhile(pcnt != seqend){\n\t\t\tt=(pcnt-seqstart)/tl; t1=(1-t)*(1-t); t2=2*(1-t)*t; t3=t*t;\n\t\t\tpx = t1 * path.points[seqstart].x + t2 * cpx + t3 * path.points[seqend].x;\n\t\t\tpy = t1 * path.points[seqstart].y + t2 * cpy + t3 * path.points[seqend].y;\n\t\t\t\n\t\t\tdist2 = (path.points[pcnt].x-px)*(path.points[pcnt].x-px) + (path.points[pcnt].y-py)*(path.points[pcnt].y-py);\n\t\t\t\n\t\t\tif(dist2>qtres){curvepass=false;}\n\t\t\tif(dist2>errorval){ errorpoint=pcnt; errorval=dist2; }\n\t\t\tpcnt = (pcnt+1)%path.points.length;\n\t\t}\n\t\t// return spline if fits\n\t\tif(curvepass){ return [{ type:'Q', x1:path.points[seqstart].x, y1:path.points[seqstart].y, x2:cpx, y2:cpy, x3:path.points[seqend].x, y3:path.points[seqend].y }]; }\n\t\t// 5.5. If the spline fails (distance error>qtres), find the point with the biggest error\n\t\tvar splitpoint = fitpoint; // Earlier: Math.floor((fitpoint + errorpoint)/2);\n\t\t\n\t\t// 5.6. Split sequence and recursively apply 5.2. - 5.6. to startpoint-splitpoint and splitpoint-endpoint sequences\n\t\treturn _this.fitseq( path, ltres, qtres, seqstart, splitpoint ).concat(\n\t\t\t\t_this.fitseq( path, ltres, qtres, splitpoint, seqend ) );\n\t\t\n\t},// End of fitseq()\n\t\n\t// 5. Batch tracing paths\n\tthis.batchtracepaths = function(internodepaths,ltres,qtres){\n\t\tvar btracedpaths = [];\n\t\tfor(var k in internodepaths){\n\t\t\tif(!internodepaths.hasOwnProperty(k)){ continue; }\n\t\t\tbtracedpaths.push( _this.tracepath(internodepaths[k],ltres,qtres) );\n\t\t}\n\t\treturn btracedpaths;\n\t},\n\t\n\t// 5. Batch tracing layers\n\tthis.batchtracelayers = function(binternodes, ltres, qtres){\n\t\tvar btbis = [];\n\t\tfor(var k in binternodes){\n\t\t\tif(!binternodes.hasOwnProperty(k)){ continue; }\n\t\t\tbtbis[k] = _this.batchtracepaths(binternodes[k], ltres, qtres);\n\t\t}\n\t\treturn btbis;\n\t},\n\t\n\t////////////////////////////////////////////////////////////\n\t//\n\t// SVG Drawing functions\n\t//\n\t////////////////////////////////////////////////////////////\n\t\n\t// Rounding to given decimals https://stackoverflow.com/questions/11832914/round-to-at-most-2-decimal-places-in-javascript\n\tthis.roundtodec = function(val,places){ return +val.toFixed(places); },\n\t\n\t// Getting SVG path element string from a traced path\n\tthis.svgpathstring = function( tracedata, lnum, pathnum, options ){\n\t\t\n\t\tvar layer = tracedata.layers[lnum], smp = layer[pathnum], str='', pcnt;\n\t\t\n\t\t// Line filter\n\t\tif(options.linefilter && (smp.segments.length < 3)){ return str; }\n\t\t\n\t\t// Starting path element, desc contains layer and path number\n\t\tstr = '<path '+\n\t\t\t( options.desc ? ('desc=\"l '+lnum+' p '+pathnum+'\" ') : '' ) +\n\t\t\t_this.tosvgcolorstr(tracedata.palette[lnum], options) +\n\t\t\t'd=\"';\n\t\t\n\t\t// Creating non-hole path string\n\t\tif( options.roundcoords === -1 ){\n\t\t\tstr += 'M '+ smp.segments[0].x1 * options.scale +' '+ smp.segments[0].y1 * options.scale +' ';\n\t\t\tfor(pcnt=0; pcnt<smp.segments.length; pcnt++){\n\t\t\t\tstr += smp.segments[pcnt].type +' '+ smp.segments[pcnt].x2 * options.scale +' '+ smp.segments[pcnt].y2 * options.scale +' ';\n\t\t\t\tif(smp.segments[pcnt].hasOwnProperty('x3')){\n\t\t\t\t\tstr += smp.segments[pcnt].x3 * options.scale +' '+ smp.segments[pcnt].y3 * options.scale +' ';\n\t\t\t\t}\n\t\t\t}\n\t\t\tstr += 'Z ';\n\t\t}else{\n\t\t\tstr += 'M '+ _this.roundtodec( smp.segments[0].x1 * options.scale, options.roundcoords ) +' '+ _this.roundtodec( smp.segments[0].y1 * options.scale, options.roundcoords ) +' ';\n\t\t\tfor(pcnt=0; pcnt<smp.segments.length; pcnt++){\n\t\t\t\tstr += smp.segments[pcnt].type +' '+ _this.roundtodec( smp.segments[pcnt].x2 * options.scale, options.roundcoords ) +' '+ _this.roundtodec( smp.segments[pcnt].y2 * options.scale, options.roundcoords ) +' ';\n\t\t\t\tif(smp.segments[pcnt].hasOwnProperty('x3')){\n\t\t\t\t\tstr += _this.roundtodec( smp.segments[pcnt].x3 * options.scale, options.roundcoords ) +' '+ _this.roundtodec( smp.segments[pcnt].y3 * options.scale, options.roundcoords ) +' ';\n\t\t\t\t}\n\t\t\t}\n\t\t\tstr += 'Z ';\n\t\t}// End of creating non-hole path string\n\t\t\n\t\t// Hole children\n\t\tfor( var hcnt=0; hcnt < smp.holechildren.length; hcnt++){\n\t\t\tvar hsmp = layer[ smp.holechildren[hcnt] ];\n\t\t\t// Creating hole path string\n\t\t\tif( options.roundcoords === -1 ){\n\t\t\t\t\n\t\t\t\tif(hsmp.segments[ hsmp.segments.length-1 ].hasOwnProperty('x3')){\n\t\t\t\t\tstr += 'M '+ hsmp.segments[ hsmp.segments.length-1 ].x3 * options.scale +' '+ hsmp.segments[ hsmp.segments.length-1 ].y3 * options.scale +' ';\n\t\t\t\t}else{\n\t\t\t\t\tstr += 'M '+ hsmp.segments[ hsmp.segments.length-1 ].x2 * options.scale +' '+ hsmp.segments[ hsmp.segments.length-1 ].y2 * options.scale +' ';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(pcnt = hsmp.segments.length-1; pcnt >= 0; pcnt--){\n\t\t\t\t\tstr += hsmp.segments[pcnt].type +' ';\n\t\t\t\t\tif(hsmp.segments[pcnt].hasOwnProperty('x3')){\n\t\t\t\t\t\tstr += hsmp.segments[pcnt].x2 * options.scale +' '+ hsmp.segments[pcnt].y2 * options.scale +' ';\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tstr += hsmp.segments[pcnt].x1 * options.scale +' '+ hsmp.segments[pcnt].y1 * options.scale +' ';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tif(hsmp.segments[ hsmp.segments.length-1 ].hasOwnProperty('x3')){\n\t\t\t\t\tstr += 'M '+ _this.roundtodec( hsmp.segments[ hsmp.segments.length-1 ].x3 * options.scale ) +' '+ _this.roundtodec( hsmp.segments[ hsmp.segments.length-1 ].y3 * options.scale ) +' ';\n\t\t\t\t}else{\n\t\t\t\t\tstr += 'M '+ _this.roundtodec( hsmp.segments[ hsmp.segments.length-1 ].x2 * options.scale ) +' '+ _this.roundtodec( hsmp.segments[ hsmp.segments.length-1 ].y2 * options.scale ) +' ';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(pcnt = hsmp.segments.length-1; pcnt >= 0; pcnt--){\n\t\t\t\t\tstr += hsmp.segments[pcnt].type +' ';\n\t\t\t\t\tif(hsmp.segments[pcnt].hasOwnProperty('x3')){\n\t\t\t\t\t\tstr += _this.roundtodec( hsmp.segments[pcnt].x2 * options.scale ) +' '+ _this.roundtodec( hsmp.segments[pcnt].y2 * options.scale ) +' ';\n\t\t\t\t\t}\n\t\t\t\t\tstr += _this.roundtodec( hsmp.segments[pcnt].x1 * options.scale ) +' '+ _this.roundtodec( hsmp.segments[pcnt].y1 * options.scale ) +' ';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t}// End of creating hole path string\n\t\t\t\n\t\t\tstr += 'Z '; // Close path\n\t\t\t\n\t\t}// End of holepath check\n\t\t\n\t\t// Closing path element\n\t\tstr += '\" />';\n\t\t\n\t\t// Rendering control points\n\t\tif(options.lcpr || options.qcpr){\n\t\t\tfor(pcnt=0; pcnt<smp.segments.length; pcnt++){\n\t\t\t\tif( smp.segments[pcnt].hasOwnProperty('x3') && options.qcpr ){\n\t\t\t\t\tstr += '<circle cx=\"'+ smp.segments[pcnt].x2 * options.scale +'\" cy=\"'+ smp.segments[pcnt].y2 * options.scale +'\" r=\"'+ options.qcpr +'\" fill=\"cyan\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t\tstr += '<circle cx=\"'+ smp.segments[pcnt].x3 * options.scale +'\" cy=\"'+ smp.segments[pcnt].y3 * options.scale +'\" r=\"'+ options.qcpr +'\" fill=\"white\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t\tstr += '<line x1=\"'+ smp.segments[pcnt].x1 * options.scale +'\" y1=\"'+ smp.segments[pcnt].y1 * options.scale +'\" x2=\"'+ smp.segments[pcnt].x2 * options.scale +'\" y2=\"'+ smp.segments[pcnt].y2 * options.scale +'\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"cyan\" />';\n\t\t\t\t\tstr += '<line x1=\"'+ smp.segments[pcnt].x2 * options.scale +'\" y1=\"'+ smp.segments[pcnt].y2 * options.scale +'\" x2=\"'+ smp.segments[pcnt].x3 * options.scale +'\" y2=\"'+ smp.segments[pcnt].y3 * options.scale +'\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"cyan\" />';\n\t\t\t\t}\n\t\t\t\tif( (!smp.segments[pcnt].hasOwnProperty('x3')) && options.lcpr){\n\t\t\t\t\tstr += '<circle cx=\"'+ smp.segments[pcnt].x2 * options.scale +'\" cy=\"'+ smp.segments[pcnt].y2 * options.scale +'\" r=\"'+ options.lcpr +'\" fill=\"white\" stroke-width=\"'+ options.lcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Hole children control points\n\t\t\tfor( var hcnt=0; hcnt < smp.holechildren.length; hcnt++){\n\t\t\t\tvar hsmp = layer[ smp.holechildren[hcnt] ];\n\t\t\t\tfor(pcnt=0; pcnt<hsmp.segments.length; pcnt++){\n\t\t\t\t\tif( hsmp.segments[pcnt].hasOwnProperty('x3') && options.qcpr ){\n\t\t\t\t\t\tstr += '<circle cx=\"'+ hsmp.segments[pcnt].x2 * options.scale +'\" cy=\"'+ hsmp.segments[pcnt].y2 * options.scale +'\" r=\"'+ options.qcpr +'\" fill=\"cyan\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t\t\tstr += '<circle cx=\"'+ hsmp.segments[pcnt].x3 * options.scale +'\" cy=\"'+ hsmp.segments[pcnt].y3 * options.scale +'\" r=\"'+ options.qcpr +'\" fill=\"white\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t\t\tstr += '<line x1=\"'+ hsmp.segments[pcnt].x1 * options.scale +'\" y1=\"'+ hsmp.segments[pcnt].y1 * options.scale +'\" x2=\"'+ hsmp.segments[pcnt].x2 * options.scale +'\" y2=\"'+ hsmp.segments[pcnt].y2 * options.scale +'\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"cyan\" />';\n\t\t\t\t\t\tstr += '<line x1=\"'+ hsmp.segments[pcnt].x2 * options.scale +'\" y1=\"'+ hsmp.segments[pcnt].y2 * options.scale +'\" x2=\"'+ hsmp.segments[pcnt].x3 * options.scale +'\" y2=\"'+ hsmp.segments[pcnt].y3 * options.scale +'\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"cyan\" />';\n\t\t\t\t\t}\n\t\t\t\t\tif( (!hsmp.segments[pcnt].hasOwnProperty('x3')) && options.lcpr){\n\t\t\t\t\t\tstr += '<circle cx=\"'+ hsmp.segments[pcnt].x2 * options.scale +'\" cy=\"'+ hsmp.segments[pcnt].y2 * options.scale +'\" r=\"'+ options.lcpr +'\" fill=\"white\" stroke-width=\"'+ options.lcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}// End of Rendering control points\n\t\t\t\n\t\treturn str;\n\t\t\n\t},// End of svgpathstring()\n\t\n\t// Converting tracedata to an SVG string\n\tthis.getsvgstring = function( tracedata, options ){\n\t\t\n\t\toptions = _this.checkoptions(options);\n\t\t\n\t\tvar w = tracedata.width * options.scale, h = tracedata.height * options.scale;\n\t\t\n\t\t// SVG start\n\t\tvar svgstr = '<svg ' + (options.viewbox ? ('viewBox=\"0 0 '+w+' '+h+'\" ') : ('width=\"'+w+'\" height=\"'+h+'\" ')) +\n\t\t\t'version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" desc=\"Created with imagetracer.js version '+_this.versionnumber+'\" >';\n\n\t\t// Drawing: Layers and Paths loops\n\t\tfor(var lcnt=0; lcnt < tracedata.layers.length; lcnt++){\n\t\t\tfor(var pcnt=0; pcnt < tracedata.layers[lcnt].length; pcnt++){\n\t\t\t\t\n\t\t\t\t// Adding SVG <path> string\n\t\t\t\tif( !tracedata.layers[lcnt][pcnt].isholepath ){\n\t\t\t\t\tsvgstr += _this.svgpathstring( tracedata, lcnt, pcnt, options );\n\t\t\t\t}\n\t\t\t\t\t\n\t\t\t}// End of paths loop\n\t\t}// End of layers loop\n\t\t\n\t\t// SVG End\n\t\tsvgstr+='</svg>';\n\t\t\n\t\treturn svgstr;\n\t\t\n\t},// End of getsvgstring()\n\t\n\t// Comparator for numeric Array.sort\n\tthis.compareNumbers = function(a,b){ return a - b; },\n\t\n\t// Convert color object to rgba string\n\tthis.torgbastr = function(c){ return 'rgba('+c.r+','+c.g+','+c.b+','+c.a+')'; },\n\t\n\t// Convert color object to SVG color string\n\tthis.tosvgcolorstr = function(c, options){\n\t\treturn 'fill=\"rgb('+c.r+','+c.g+','+c.b+')\" stroke=\"rgb('+c.r+','+c.g+','+c.b+')\" stroke-width=\"'+options.strokewidth+'\" opacity=\"'+c.a/255.0+'\" ';\n\t},\n\t\n\t// Helper function: Appending an <svg> element to a container from an svgstring\n\tthis.appendSVGString = function(svgstr,parentid){\n\t\tvar div;\n\t\tif(parentid){\n\t\t\tdiv = document.getElementById(parentid);\n\t\t\tif(!div){\n\t\t\t\tdiv = document.createElement('div');\n\t\t\t\tdiv.id = parentid;\n\t\t\t\tdocument.body.appendChild(div);\n\t\t\t}\n\t\t}else{\n\t\t\tdiv = document.createElement('div');\n\t\t\tdocument.body.appendChild(div);\n\t\t}\n\t\tdiv.innerHTML += svgstr;\n\t},\n\t\n\t////////////////////////////////////////////////////////////\n\t//\n\t// Canvas functions\n\t//\n\t////////////////////////////////////////////////////////////\n\t\n\t// Gaussian kernels for blur\n\tthis.gks = [ [0.27901,0.44198,0.27901], [0.135336,0.228569,0.272192,0.228569,0.135336], [0.086776,0.136394,0.178908,0.195843,0.178908,0.136394,0.086776],\n\t [0.063327,0.093095,0.122589,0.144599,0.152781,0.144599,0.122589,0.093095,0.063327], [0.049692,0.069304,0.089767,0.107988,0.120651,0.125194,0.120651,0.107988,0.089767,0.069304,0.049692] ],\n\t\n\t// Selective Gaussian blur for preprocessing\n\tthis.blur = function(imgd,radius,delta){\n\t\tvar i,j,k,d,idx,racc,gacc,bacc,aacc,wacc;\n\t\t\n\t\t// new ImageData\n\t\tvar imgd2 = { width:imgd.width, height:imgd.height, data:[] };\n\t\t\n\t\t// radius and delta limits, this kernel\n\t\tradius = Math.floor(radius); if(radius<1){ return imgd; } if(radius>5){ radius = 5; } delta = Math.abs( delta ); if(delta>1024){ delta = 1024; }\n\t\tvar thisgk = _this.gks[radius-1];\n\t\t\n\t\t// loop through all pixels, horizontal blur\n\t\tfor( j=0; j < imgd.height; j++ ){\n\t\t\tfor( i=0; i < imgd.width; i++ ){\n\n\t\t\t\tracc = 0; gacc = 0; bacc = 0; aacc = 0; wacc = 0;\n\t\t\t\t// gauss kernel loop\n\t\t\t\tfor( k = -radius; k < radius+1; k++){\n\t\t\t\t\t// add weighted color values\n\t\t\t\t\tif( (i+k > 0) && (i+k < imgd.width) ){\n\t\t\t\t\t\tidx = (j*imgd.width+i+k)*4;\n\t\t\t\t\t\tracc += imgd.data[idx ] * thisgk[k+radius];\n\t\t\t\t\t\tgacc += imgd.data[idx+1] * thisgk[k+radius];\n\t\t\t\t\t\tbacc += imgd.data[idx+2] * thisgk[k+radius];\n\t\t\t\t\t\taacc += imgd.data[idx+3] * thisgk[k+radius];\n\t\t\t\t\t\twacc += thisgk[k+radius];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// The new pixel\n\t\t\t\tidx = (j*imgd.width+i)*4;\n\t\t\t\timgd2.data[idx ] = Math.floor(racc / wacc);\n\t\t\t\timgd2.data[idx+1] = Math.floor(gacc / wacc);\n\t\t\t\timgd2.data[idx+2] = Math.floor(bacc / wacc);\n\t\t\t\timgd2.data[idx+3] = Math.floor(aacc / wacc);\n\t\t\t\t\n\t\t\t}// End of width loop\n\t\t}// End of horizontal blur\n\t\t\n\t\t// copying the half blurred imgd2\n\t\tvar himgd = new Uint8ClampedArray(imgd2.data);\n\t\t\n\t\t// loop through all pixels, vertical blur\n\t\tfor( j=0; j < imgd.height; j++ ){\n\t\t\tfor( i=0; i < imgd.width; i++ ){\n\n\t\t\t\tracc = 0; gacc = 0; bacc = 0; aacc = 0; wacc = 0;\n\t\t\t\t// gauss kernel loop\n\t\t\t\tfor( k = -radius; k < radius+1; k++){\n\t\t\t\t\t// add weighted color values\n\t\t\t\t\tif( (j+k > 0) && (j+k < imgd.height) ){\n\t\t\t\t\t\tidx = ((j+k)*imgd.width+i)*4;\n\t\t\t\t\t\tracc += himgd[idx ] * thisgk[k+radius];\n\t\t\t\t\t\tgacc += himgd[idx+1] * thisgk[k+radius];\n\t\t\t\t\t\tbacc += himgd[idx+2] * thisgk[k+radius];\n\t\t\t\t\t\taacc += himgd[idx+3] * thisgk[k+radius];\n\t\t\t\t\t\twacc += thisgk[k+radius];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// The new pixel\n\t\t\t\tidx = (j*imgd.width+i)*4;\n\t\t\t\timgd2.data[idx ] = Math.floor(racc / wacc);\n\t\t\t\timgd2.data[idx+1] = Math.floor(gacc / wacc);\n\t\t\t\timgd2.data[idx+2] = Math.floor(bacc / wacc);\n\t\t\t\timgd2.data[idx+3] = Math.floor(aacc / wacc);\n\t\t\t\t\n\t\t\t}// End of width loop\n\t\t}// End of vertical blur\n\t\t\n\t\t// Selective blur: loop through all pixels\n\t\tfor( j=0; j < imgd.height; j++ ){\n\t\t\tfor( i=0; i < imgd.width; i++ ){\n\t\t\t\t\n\t\t\t\tidx = (j*imgd.width+i)*4;\n\t\t\t\t// d is the difference between the blurred and the original pixel\n\t\t\t\td = Math.abs(imgd2.data[idx ] - imgd.data[idx ]) + Math.abs(imgd2.data[idx+1] - imgd.data[idx+1]) +\n\t\t\t\t\tMath.abs(imgd2.data[idx+2] - imgd.data[idx+2]) + Math.abs(imgd2.data[idx+3] - imgd.data[idx+3]);\n\t\t\t\t// selective blur: if d>delta, put the original pixel back\n\t\t\t\tif(d>delta){\n\t\t\t\t\timgd2.data[idx ] = imgd.data[idx ];\n\t\t\t\t\timgd2.data[idx+1] = imgd.data[idx+1];\n\t\t\t\t\timgd2.data[idx+2] = imgd.data[idx+2];\n\t\t\t\t\timgd2.data[idx+3] = imgd.data[idx+3];\n\t\t\t\t}\n\t\t\t}\n\t\t}// End of Selective blur\n\t\t\n\t\treturn imgd2;\n\t\t\n\t},// End of blur()\n\t\n\t// Helper function: loading an image from a URL, then executing callback with canvas as argument\n\tthis.loadImage = function(url,callback,options){\n\t\tvar img = new Image();\n\t\tif(options && options.corsenabled){ img.crossOrigin = 'Anonymous'; }\n\t\timg.onload = function(){\n\t\t\tvar canvas = document.createElement('canvas');\n\t\t\tcanvas.width = img.width;\n\t\t\tcanvas.height = img.height;\n\t\t\tvar context = canvas.getContext('2d');\n\t\t\tcontext.drawImage(img,0,0);\n\t\t\tcallback(canvas);\n\t\t};\n\t\timg.src = url;\n\t},\n\t\n\t// Helper function: getting ImageData from a canvas\n\tthis.getImgdata = function(canvas){\n\t\tvar context = canvas.getContext('2d');\n\t\treturn context.getImageData(0,0,canvas.width,canvas.height);\n\t},\n\t\n\t// Special palette to use with drawlayers()\n\tthis.specpalette = [\n\t\t{r:0,g:0,b:0,a:255}, {r:128,g:128,b:128,a:255}, {r:0,g:0,b:128,a:255}, {r:64,g:64,b:128,a:255},\n\t\t{r:192,g:192,b:192,a:255}, {r:255,g:255,b:255,a:255}, {r:128,g:128,b:192,a:255}, {r:0,g:0,b:192,a:255},\n\t\t{r:128,g:0,b:0,a:255}, {r:128,g:64,b:64,a:255}, {r:128,g:0,b:128,a:255}, {r:168,g:168,b:168,a:255},\n\t\t{r:192,g:128,b:128,a:255}, {r:192,g:0,b:0,a:255}, {r:255,g:255,b:255,a:255}, {r:0,g:128,b:0,a:255}\n\t],\n\t\n\t// Helper function: Drawing all edge node layers into a container\n\tthis.drawLayers = function(layers,palette,scale,parentid){\n\t\tscale = scale||1;\n\t\tvar w,h,i,j,k;\n\t\t\n\t\t// Preparing container\n\t\tvar div;\n\t\tif(parentid){\n\t\t\tdiv = document.getElementById(parentid);\n\t\t\tif(!div){\n\t\t\t\tdiv = document.createElement('div');\n\t\t\t\tdiv.id = parentid;\n\t\t\t\tdocument.body.appendChild(div);\n\t\t\t}\n\t\t}else{\n\t\t\tdiv = document.createElement('div');\n\t\t\tdocument.body.appendChild(div);\n\t\t}\n\t\t\n\t\t// Layers loop\n\t\tfor (k in layers) {\n\t\t\tif(!layers.hasOwnProperty(k)){ continue; }\n\t\t\t\n\t\t\t// width, height\n\t\t\tw=layers[k][0].length; h=layers[k].length;\n\t\t\t\n\t\t\t// Creating new canvas for every layer\n\t\t\tvar canvas = document.createElement('canvas'); canvas.width=w*scale; canvas.height=h*scale;\n\t\t\tvar context = canvas.getContext('2d');\n\t\t\t\n\t\t\t// Drawing\n\t\t\tfor(j=0; j<h; j++){\n\t\t\t\tfor(i=0; i<w; i++){\n\t\t\t\t\tcontext.fillStyle = _this.torgbastr(palette[ layers[k][j][i]%palette.length ]);\n\t\t\t\t\tcontext.fillRect(i*scale,j*scale,scale,scale);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Appending canvas to container\n\t\t\tdiv.appendChild(canvas);\n\t\t}// End of Layers loop\n\t}// End of drawlayers\n\t\n\t;// End of function list\n\t\n}// End of ImageTracer object\n\n// export as AMD module / Node module / browser or worker variable\nif(typeof define === 'function' && define.amd){\n\tdefine(function() { return new ImageTracer(); });\n}else if(typeof module !== 'undefined'){\n\tmodule.exports = new ImageTracer();\n}else if(typeof self !== 'undefined'){\n\tself.ImageTracer = new ImageTracer();\n}else window.ImageTracer = new ImageTracer();\n\n})();"},"sourceMaps":{"js":{"mappings":[{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1,"column":0},"generated":{"line":2,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":2,"column":0},"generated":{"line":3,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":3,"column":0},"generated":{"line":4,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":4,"column":0},"generated":{"line":5,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":5,"column":0},"generated":{"line":6,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":6,"column":0},"generated":{"line":7,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":7,"column":0},"generated":{"line":8,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":8,"column":0},"generated":{"line":9,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":9,"column":0},"generated":{"line":10,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":10,"column":0},"generated":{"line":11,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":11,"column":0},"generated":{"line":12,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":12,"column":0},"generated":{"line":13,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":13,"column":0},"generated":{"line":14,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":14,"column":0},"generated":{"line":15,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":15,"column":0},"generated":{"line":16,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":16,"column":0},"generated":{"line":17,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":17,"column":0},"generated":{"line":18,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":18,"column":0},"generated":{"line":19,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":19,"column":0},"generated":{"line":20,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":20,"column":0},"generated":{"line":21,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":21,"column":0},"generated":{"line":22,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":22,"column":0},"generated":{"line":23,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":23,"column":0},"generated":{"line":24,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":24,"column":0},"generated":{"line":25,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":25,"column":0},"generated":{"line":26,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":26,"column":0},"generated":{"line":27,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":27,"column":0},"generated":{"line":28,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":28,"column":0},"generated":{"line":29,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":29,"column":0},"generated":{"line":30,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":30,"column":0},"generated":{"line":31,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":31,"column":0},"generated":{"line":32,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":32,"column":0},"generated":{"line":33,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":33,"column":0},"generated":{"line":34,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":34,"column":0},"generated":{"line":35,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":35,"column":0},"generated":{"line":36,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":36,"column":0},"generated":{"line":37,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":37,"column":0},"generated":{"line":38,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":38,"column":0},"generated":{"line":39,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":39,"column":0},"generated":{"line":40,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":40,"column":0},"generated":{"line":41,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":41,"column":0},"generated":{"line":42,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":42,"column":0},"generated":{"line":43,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":43,"column":0},"generated":{"line":44,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":44,"column":0},"generated":{"line":45,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":45,"column":0},"generated":{"line":46,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":46,"column":0},"generated":{"line":47,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":47,"column":0},"generated":{"line":48,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":48,"column":0},"generated":{"line":49,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":49,"column":0},"generated":{"line":50,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":50,"column":0},"generated":{"line":51,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":51,"column":0},"generated":{"line":52,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":52,"column":0},"generated":{"line":53,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":53,"column":0},"generated":{"line":54,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":54,"column":0},"generated":{"line":55,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":55,"column":0},"generated":{"line":56,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":56,"column":0},"generated":{"line":57,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":57,"column":0},"generated":{"line":58,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":58,"column":0},"generated":{"line":59,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":59,"column":0},"generated":{"line":60,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":60,"column":0},"generated":{"line":61,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":61,"column":0},"generated":{"line":62,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":62,"column":0},"generated":{"line":63,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":63,"column":0},"generated":{"line":64,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":64,"column":0},"generated":{"line":65,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":65,"column":0},"generated":{"line":66,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":66,"column":0},"generated":{"line":67,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":67,"column":0},"generated":{"line":68,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":68,"column":0},"generated":{"line":69,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":69,"column":0},"generated":{"line":70,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":70,"column":0},"generated":{"line":71,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":71,"column":0},"generated":{"line":72,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":72,"column":0},"generated":{"line":73,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":73,"column":0},"generated":{"line":74,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":74,"column":0},"generated":{"line":75,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":75,"column":0},"generated":{"line":76,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":76,"column":0},"generated":{"line":77,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":77,"column":0},"generated":{"line":78,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":78,"column":0},"generated":{"line":79,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":79,"column":0},"generated":{"line":80,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":80,"column":0},"generated":{"line":81,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":81,"column":0},"generated":{"line":82,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":82,"column":0},"generated":{"line":83,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":83,"column":0},"generated":{"line":84,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":84,"column":0},"generated":{"line":85,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":85,"column":0},"generated":{"line":86,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":86,"column":0},"generated":{"line":87,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":87,"column":0},"generated":{"line":88,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":88,"column":0},"generated":{"line":89,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":89,"column":0},"generated":{"line":90,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":90,"column":0},"generated":{"line":91,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":91,"column":0},"generated":{"line":92,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":92,"column":0},"generated":{"line":93,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":93,"column":0},"generated":{"line":94,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":94,"column":0},"generated":{"line":95,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":95,"column":0},"generated":{"line":96,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":96,"column":0},"generated":{"line":97,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":97,"column":0},"generated":{"line":98,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":98,"column":0},"generated":{"line":99,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":99,"column":0},"generated":{"line":100,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":100,"column":0},"generated":{"line":101,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":101,"column":0},"generated":{"line":102,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":102,"column":0},"generated":{"line":103,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":103,"column":0},"generated":{"line":104,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":104,"column":0},"generated":{"line":105,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":105,"column":0},"generated":{"line":106,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":106,"column":0},"generated":{"line":107,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":107,"column":0},"generated":{"line":108,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":108,"column":0},"generated":{"line":109,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":109,"column":0},"generated":{"line":110,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":110,"column":0},"generated":{"line":111,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":111,"column":0},"generated":{"line":112,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":112,"column":0},"generated":{"line":113,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":113,"column":0},"generated":{"line":114,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":114,"column":0},"generated":{"line":115,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":115,"column":0},"generated":{"line":116,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":116,"column":0},"generated":{"line":117,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":117,"column":0},"generated":{"line":118,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":118,"column":0},"generated":{"line":119,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":119,"column":0},"generated":{"line":120,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":120,"column":0},"generated":{"line":121,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":121,"column":0},"generated":{"line":122,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":122,"column":0},"generated":{"line":123,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":123,"column":0},"generated":{"line":124,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":124,"column":0},"generated":{"line":125,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":125,"column":0},"generated":{"line":126,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":126,"column":0},"generated":{"line":127,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":127,"column":0},"generated":{"line":128,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":128,"column":0},"generated":{"line":129,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":129,"column":0},"generated":{"line":130,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":130,"column":0},"generated":{"line":131,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":131,"column":0},"generated":{"line":132,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":132,"column":0},"generated":{"line":133,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":133,"column":0},"generated":{"line":134,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":134,"column":0},"generated":{"line":135,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":135,"column":0},"generated":{"line":136,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":136,"column":0},"generated":{"line":137,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":137,"column":0},"generated":{"line":138,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":138,"column":0},"generated":{"line":139,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":139,"column":0},"generated":{"line":140,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":140,"column":0},"generated":{"line":141,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":141,"column":0},"generated":{"line":142,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":142,"column":0},"generated":{"line":143,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":143,"column":0},"generated":{"line":144,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":144,"column":0},"generated":{"line":145,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":145,"column":0},"generated":{"line":146,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":146,"column":0},"generated":{"line":147,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":147,"column":0},"generated":{"line":148,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":148,"column":0},"generated":{"line":149,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":149,"column":0},"generated":{"line":150,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":150,"column":0},"generated":{"line":151,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":151,"column":0},"generated":{"line":152,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":152,"column":0},"generated":{"line":153,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":153,"column":0},"generated":{"line":154,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":154,"column":0},"generated":{"line":155,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":155,"column":0},"generated":{"line":156,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":156,"column":0},"generated":{"line":157,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":157,"column":0},"generated":{"line":158,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":158,"column":0},"generated":{"line":159,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":159,"column":0},"generated":{"line":160,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":160,"column":0},"generated":{"line":161,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":161,"column":0},"generated":{"line":162,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":162,"column":0},"generated":{"line":163,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":163,"column":0},"generated":{"line":164,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":164,"column":0},"generated":{"line":165,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":165,"column":0},"generated":{"line":166,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":166,"column":0},"generated":{"line":167,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":167,"column":0},"generated":{"line":168,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":168,"column":0},"generated":{"line":169,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":169,"column":0},"generated":{"line":170,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":170,"column":0},"generated":{"line":171,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":171,"column":0},"generated":{"line":172,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":172,"column":0},"generated":{"line":173,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":173,"column":0},"generated":{"line":174,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":174,"column":0},"generated":{"line":175,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":175,"column":0},"generated":{"line":176,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":176,"column":0},"generated":{"line":177,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":177,"column":0},"generated":{"line":178,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":178,"column":0},"generated":{"line":179,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":179,"column":0},"generated":{"line":180,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":180,"column":0},"generated":{"line":181,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":181,"column":0},"generated":{"line":182,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":182,"column":0},"generated":{"line":183,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":183,"column":0},"generated":{"line":184,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":184,"column":0},"generated":{"line":185,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":185,"column":0},"generated":{"line":186,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":186,"column":0},"generated":{"line":187,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":187,"column":0},"generated":{"line":188,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":188,"column":0},"generated":{"line":189,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":189,"column":0},"generated":{"line":190,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":190,"column":0},"generated":{"line":191,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":191,"column":0},"generated":{"line":192,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":192,"column":0},"generated":{"line":193,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":193,"column":0},"generated":{"line":194,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":194,"column":0},"generated":{"line":195,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":195,"column":0},"generated":{"line":196,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":196,"column":0},"generated":{"line":197,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":197,"column":0},"generated":{"line":198,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":198,"column":0},"generated":{"line":199,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":199,"column":0},"generated":{"line":200,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":200,"column":0},"generated":{"line":201,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":201,"column":0},"generated":{"line":202,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":202,"column":0},"generated":{"line":203,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":203,"column":0},"generated":{"line":204,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":204,"column":0},"generated":{"line":205,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":205,"column":0},"generated":{"line":206,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":206,"column":0},"generated":{"line":207,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":207,"column":0},"generated":{"line":208,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":208,"column":0},"generated":{"line":209,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":209,"column":0},"generated":{"line":210,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":210,"column":0},"generated":{"line":211,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":211,"column":0},"generated":{"line":212,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":212,"column":0},"generated":{"line":213,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":213,"column":0},"generated":{"line":214,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":214,"column":0},"generated":{"line":215,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":215,"column":0},"generated":{"line":216,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":216,"column":0},"generated":{"line":217,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":217,"column":0},"generated":{"line":218,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":218,"column":0},"generated":{"line":219,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":219,"column":0},"generated":{"line":220,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":220,"column":0},"generated":{"line":221,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":221,"column":0},"generated":{"line":222,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":222,"column":0},"generated":{"line":223,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":223,"column":0},"generated":{"line":224,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":224,"column":0},"generated":{"line":225,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":225,"column":0},"generated":{"line":226,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":226,"column":0},"generated":{"line":227,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":227,"column":0},"generated":{"line":228,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":228,"column":0},"generated":{"line":229,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":229,"column":0},"generated":{"line":230,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":230,"column":0},"generated":{"line":231,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":231,"column":0},"generated":{"line":232,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":232,"column":0},"generated":{"line":233,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":233,"column":0},"generated":{"line":234,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":234,"column":0},"generated":{"line":235,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":235,"column":0},"generated":{"line":236,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":236,"column":0},"generated":{"line":237,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":237,"column":0},"generated":{"line":238,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":238,"column":0},"generated":{"line":239,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":239,"column":0},"generated":{"line":240,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":240,"column":0},"generated":{"line":241,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":241,"column":0},"generated":{"line":242,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":242,"column":0},"generated":{"line":243,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":243,"column":0},"generated":{"line":244,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":244,"column":0},"generated":{"line":245,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":245,"column":0},"generated":{"line":246,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":246,"column":0},"generated":{"line":247,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":247,"column":0},"generated":{"line":248,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":248,"column":0},"generated":{"line":249,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":249,"column":0},"generated":{"line":250,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":250,"column":0},"generated":{"line":251,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":251,"column":0},"generated":{"line":252,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":252,"column":0},"generated":{"line":253,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":253,"column":0},"generated":{"line":254,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":254,"column":0},"generated":{"line":255,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":255,"column":0},"generated":{"line":256,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":256,"column":0},"generated":{"line":257,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":257,"column":0},"generated":{"line":258,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":258,"column":0},"generated":{"line":259,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":259,"column":0},"generated":{"line":260,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":260,"column":0},"generated":{"line":261,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":261,"column":0},"generated":{"line":262,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":262,"column":0},"generated":{"line":263,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":263,"column":0},"generated":{"line":264,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":264,"column":0},"generated":{"line":265,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":265,"column":0},"generated":{"line":266,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":266,"column":0},"generated":{"line":267,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":267,"column":0},"generated":{"line":268,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":268,"column":0},"generated":{"line":269,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":269,"column":0},"generated":{"line":270,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":270,"column":0},"generated":{"line":271,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":271,"column":0},"generated":{"line":272,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":272,"column":0},"generated":{"line":273,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":273,"column":0},"generated":{"line":274,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":274,"column":0},"generated":{"line":275,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":275,"column":0},"generated":{"line":276,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":276,"column":0},"generated":{"line":277,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":277,"column":0},"generated":{"line":278,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":278,"column":0},"generated":{"line":279,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":279,"column":0},"generated":{"line":280,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":280,"column":0},"generated":{"line":281,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":281,"column":0},"generated":{"line":282,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":282,"column":0},"generated":{"line":283,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":283,"column":0},"generated":{"line":284,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":284,"column":0},"generated":{"line":285,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":285,"column":0},"generated":{"line":286,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":286,"column":0},"generated":{"line":287,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":287,"column":0},"generated":{"line":288,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":288,"column":0},"generated":{"line":289,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":289,"column":0},"generated":{"line":290,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":290,"column":0},"generated":{"line":291,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":291,"column":0},"generated":{"line":292,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":292,"column":0},"generated":{"line":293,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":293,"column":0},"generated":{"line":294,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":294,"column":0},"generated":{"line":295,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":295,"column":0},"generated":{"line":296,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":296,"column":0},"generated":{"line":297,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":297,"column":0},"generated":{"line":298,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":298,"column":0},"generated":{"line":299,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":299,"column":0},"generated":{"line":300,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":300,"column":0},"generated":{"line":301,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":301,"column":0},"generated":{"line":302,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":302,"column":0},"generated":{"line":303,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":303,"column":0},"generated":{"line":304,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":304,"column":0},"generated":{"line":305,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":305,"column":0},"generated":{"line":306,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":306,"column":0},"generated":{"line":307,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":307,"column":0},"generated":{"line":308,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":308,"column":0},"generated":{"line":309,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":309,"column":0},"generated":{"line":310,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":310,"column":0},"generated":{"line":311,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":311,"column":0},"generated":{"line":312,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":312,"column":0},"generated":{"line":313,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":313,"column":0},"generated":{"line":314,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":314,"column":0},"generated":{"line":315,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":315,"column":0},"generated":{"line":316,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":316,"column":0},"generated":{"line":317,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":317,"column":0},"generated":{"line":318,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":318,"column":0},"generated":{"line":319,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":319,"column":0},"generated":{"line":320,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":320,"column":0},"generated":{"line":321,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":321,"column":0},"generated":{"line":322,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":322,"column":0},"generated":{"line":323,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":323,"column":0},"generated":{"line":324,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":324,"column":0},"generated":{"line":325,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":325,"column":0},"generated":{"line":326,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":326,"column":0},"generated":{"line":327,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":327,"column":0},"generated":{"line":328,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":328,"column":0},"generated":{"line":329,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":329,"column":0},"generated":{"line":330,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":330,"column":0},"generated":{"line":331,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":331,"column":0},"generated":{"line":332,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":332,"column":0},"generated":{"line":333,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":333,"column":0},"generated":{"line":334,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":334,"column":0},"generated":{"line":335,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":335,"column":0},"generated":{"line":336,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":336,"column":0},"generated":{"line":337,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":337,"column":0},"generated":{"line":338,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":338,"column":0},"generated":{"line":339,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":339,"column":0},"generated":{"line":340,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":340,"column":0},"generated":{"line":341,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":341,"column":0},"generated":{"line":342,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":342,"column":0},"generated":{"line":343,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":343,"column":0},"generated":{"line":344,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":344,"column":0},"generated":{"line":345,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":345,"column":0},"generated":{"line":346,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":346,"column":0},"generated":{"line":347,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":347,"column":0},"generated":{"line":348,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":348,"column":0},"generated":{"line":349,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":349,"column":0},"generated":{"line":350,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":350,"column":0},"generated":{"line":351,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":351,"column":0},"generated":{"line":352,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":352,"column":0},"generated":{"line":353,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":353,"column":0},"generated":{"line":354,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":354,"column":0},"generated":{"line":355,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":355,"column":0},"generated":{"line":356,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":356,"column":0},"generated":{"line":357,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":357,"column":0},"generated":{"line":358,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":358,"column":0},"generated":{"line":359,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":359,"column":0},"generated":{"line":360,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":360,"column":0},"generated":{"line":361,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":361,"column":0},"generated":{"line":362,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":362,"column":0},"generated":{"line":363,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":363,"column":0},"generated":{"line":364,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":364,"column":0},"generated":{"line":365,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":365,"column":0},"generated":{"line":366,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":366,"column":0},"generated":{"line":367,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":367,"column":0},"generated":{"line":368,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":368,"column":0},"generated":{"line":369,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":369,"column":0},"generated":{"line":370,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":370,"column":0},"generated":{"line":371,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":371,"column":0},"generated":{"line":372,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":372,"column":0},"generated":{"line":373,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":373,"column":0},"generated":{"line":374,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":374,"column":0},"generated":{"line":375,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":375,"column":0},"generated":{"line":376,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":376,"column":0},"generated":{"line":377,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":377,"column":0},"generated":{"line":378,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":378,"column":0},"generated":{"line":379,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":379,"column":0},"generated":{"line":380,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":380,"column":0},"generated":{"line":381,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":381,"column":0},"generated":{"line":382,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":382,"column":0},"generated":{"line":383,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":383,"column":0},"generated":{"line":384,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":384,"column":0},"generated":{"line":385,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":385,"column":0},"generated":{"line":386,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":386,"column":0},"generated":{"line":387,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":387,"column":0},"generated":{"line":388,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":388,"column":0},"generated":{"line":389,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":389,"column":0},"generated":{"line":390,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":390,"column":0},"generated":{"line":391,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":391,"column":0},"generated":{"line":392,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":392,"column":0},"generated":{"line":393,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":393,"column":0},"generated":{"line":394,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":394,"column":0},"generated":{"line":395,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":395,"column":0},"generated":{"line":396,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":396,"column":0},"generated":{"line":397,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":397,"column":0},"generated":{"line":398,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":398,"column":0},"generated":{"line":399,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":399,"column":0},"generated":{"line":400,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":400,"column":0},"generated":{"line":401,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":401,"column":0},"generated":{"line":402,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":402,"column":0},"generated":{"line":403,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":403,"column":0},"generated":{"line":404,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":404,"column":0},"generated":{"line":405,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":405,"column":0},"generated":{"line":406,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":406,"column":0},"generated":{"line":407,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":407,"column":0},"generated":{"line":408,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":408,"column":0},"generated":{"line":409,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":409,"column":0},"generated":{"line":410,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":410,"column":0},"generated":{"line":411,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":411,"column":0},"generated":{"line":412,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":412,"column":0},"generated":{"line":413,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":413,"column":0},"generated":{"line":414,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":414,"column":0},"generated":{"line":415,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":415,"column":0},"generated":{"line":416,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":416,"column":0},"generated":{"line":417,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":417,"column":0},"generated":{"line":418,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":418,"column":0},"generated":{"line":419,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":419,"column":0},"generated":{"line":420,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":420,"column":0},"generated":{"line":421,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":421,"column":0},"generated":{"line":422,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":422,"column":0},"generated":{"line":423,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":423,"column":0},"generated":{"line":424,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":424,"column":0},"generated":{"line":425,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":425,"column":0},"generated":{"line":426,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":426,"column":0},"generated":{"line":427,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":427,"column":0},"generated":{"line":428,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":428,"column":0},"generated":{"line":429,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":429,"column":0},"generated":{"line":430,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":430,"column":0},"generated":{"line":431,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":431,"column":0},"generated":{"line":432,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":432,"column":0},"generated":{"line":433,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":433,"column":0},"generated":{"line":434,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":434,"column":0},"generated":{"line":435,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":435,"column":0},"generated":{"line":436,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":436,"column":0},"generated":{"line":437,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":437,"column":0},"generated":{"line":438,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":438,"column":0},"generated":{"line":439,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":439,"column":0},"generated":{"line":440,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":440,"column":0},"generated":{"line":441,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":441,"column":0},"generated":{"line":442,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":442,"column":0},"generated":{"line":443,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":443,"column":0},"generated":{"line":444,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":444,"column":0},"generated":{"line":445,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":445,"column":0},"generated":{"line":446,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":446,"column":0},"generated":{"line":447,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":447,"column":0},"generated":{"line":448,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":448,"column":0},"generated":{"line":449,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":449,"column":0},"generated":{"line":450,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":450,"column":0},"generated":{"line":451,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":451,"column":0},"generated":{"line":452,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":452,"column":0},"generated":{"line":453,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":453,"column":0},"generated":{"line":454,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":454,"column":0},"generated":{"line":455,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":455,"column":0},"generated":{"line":456,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":456,"column":0},"generated":{"line":457,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":457,"column":0},"generated":{"line":458,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":458,"column":0},"generated":{"line":459,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":459,"column":0},"generated":{"line":460,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":460,"column":0},"generated":{"line":461,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":461,"column":0},"generated":{"line":462,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":462,"column":0},"generated":{"line":463,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":463,"column":0},"generated":{"line":464,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":464,"column":0},"generated":{"line":465,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":465,"column":0},"generated":{"line":466,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":466,"column":0},"generated":{"line":467,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":467,"column":0},"generated":{"line":468,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":468,"column":0},"generated":{"line":469,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":469,"column":0},"generated":{"line":470,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":470,"column":0},"generated":{"line":471,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":471,"column":0},"generated":{"line":472,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":472,"column":0},"generated":{"line":473,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":473,"column":0},"generated":{"line":474,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":474,"column":0},"generated":{"line":475,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":475,"column":0},"generated":{"line":476,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":476,"column":0},"generated":{"line":477,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":477,"column":0},"generated":{"line":478,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":478,"column":0},"generated":{"line":479,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":479,"column":0},"generated":{"line":480,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":480,"column":0},"generated":{"line":481,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":481,"column":0},"generated":{"line":482,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":482,"column":0},"generated":{"line":483,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":483,"column":0},"generated":{"line":484,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":484,"column":0},"generated":{"line":485,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":485,"column":0},"generated":{"line":486,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":486,"column":0},"generated":{"line":487,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":487,"column":0},"generated":{"line":488,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":488,"column":0},"generated":{"line":489,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":489,"column":0},"generated":{"line":490,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":490,"column":0},"generated":{"line":491,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":491,"column":0},"generated":{"line":492,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":492,"column":0},"generated":{"line":493,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":493,"column":0},"generated":{"line":494,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":494,"column":0},"generated":{"line":495,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":495,"column":0},"generated":{"line":496,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":496,"column":0},"generated":{"line":497,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":497,"column":0},"generated":{"line":498,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":498,"column":0},"generated":{"line":499,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":499,"column":0},"generated":{"line":500,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":500,"column":0},"generated":{"line":501,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":501,"column":0},"generated":{"line":502,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":502,"column":0},"generated":{"line":503,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":503,"column":0},"generated":{"line":504,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":504,"column":0},"generated":{"line":505,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":505,"column":0},"generated":{"line":506,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":506,"column":0},"generated":{"line":507,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":507,"column":0},"generated":{"line":508,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":508,"column":0},"generated":{"line":509,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":509,"column":0},"generated":{"line":510,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":510,"column":0},"generated":{"line":511,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":511,"column":0},"generated":{"line":512,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":512,"column":0},"generated":{"line":513,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":513,"column":0},"generated":{"line":514,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":514,"column":0},"generated":{"line":515,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":515,"column":0},"generated":{"line":516,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":516,"column":0},"generated":{"line":517,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":517,"column":0},"generated":{"line":518,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":518,"column":0},"generated":{"line":519,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":519,"column":0},"generated":{"line":520,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":520,"column":0},"generated":{"line":521,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":521,"column":0},"generated":{"line":522,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":522,"column":0},"generated":{"line":523,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":523,"column":0},"generated":{"line":524,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":524,"column":0},"generated":{"line":525,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":525,"column":0},"generated":{"line":526,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":526,"column":0},"generated":{"line":527,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":527,"column":0},"generated":{"line":528,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":528,"column":0},"generated":{"line":529,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":529,"column":0},"generated":{"line":530,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":530,"column":0},"generated":{"line":531,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":531,"column":0},"generated":{"line":532,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":532,"column":0},"generated":{"line":533,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":533,"column":0},"generated":{"line":534,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":534,"column":0},"generated":{"line":535,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":535,"column":0},"generated":{"line":536,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":536,"column":0},"generated":{"line":537,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":537,"column":0},"generated":{"line":538,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":538,"column":0},"generated":{"line":539,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":539,"column":0},"generated":{"line":540,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":540,"column":0},"generated":{"line":541,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":541,"column":0},"generated":{"line":542,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":542,"column":0},"generated":{"line":543,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":543,"column":0},"generated":{"line":544,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":544,"column":0},"generated":{"line":545,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":545,"column":0},"generated":{"line":546,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":546,"column":0},"generated":{"line":547,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":547,"column":0},"generated":{"line":548,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":548,"column":0},"generated":{"line":549,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":549,"column":0},"generated":{"line":550,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":550,"column":0},"generated":{"line":551,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":551,"column":0},"generated":{"line":552,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":552,"column":0},"generated":{"line":553,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":553,"column":0},"generated":{"line":554,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":554,"column":0},"generated":{"line":555,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":555,"column":0},"generated":{"line":556,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":556,"column":0},"generated":{"line":557,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":557,"column":0},"generated":{"line":558,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":558,"column":0},"generated":{"line":559,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":559,"column":0},"generated":{"line":560,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":560,"column":0},"generated":{"line":561,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":561,"column":0},"generated":{"line":562,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":562,"column":0},"generated":{"line":563,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":563,"column":0},"generated":{"line":564,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":564,"column":0},"generated":{"line":565,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":565,"column":0},"generated":{"line":566,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":566,"column":0},"generated":{"line":567,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":567,"column":0},"generated":{"line":568,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":568,"column":0},"generated":{"line":569,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":569,"column":0},"generated":{"line":570,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":570,"column":0},"generated":{"line":571,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":571,"column":0},"generated":{"line":572,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":572,"column":0},"generated":{"line":573,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":573,"column":0},"generated":{"line":574,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":574,"column":0},"generated":{"line":575,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":575,"column":0},"generated":{"line":576,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":576,"column":0},"generated":{"line":577,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":577,"column":0},"generated":{"line":578,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":578,"column":0},"generated":{"line":579,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":579,"column":0},"generated":{"line":580,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":580,"column":0},"generated":{"line":581,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":581,"column":0},"generated":{"line":582,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":582,"column":0},"generated":{"line":583,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":583,"column":0},"generated":{"line":584,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":584,"column":0},"generated":{"line":585,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":585,"column":0},"generated":{"line":586,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":586,"column":0},"generated":{"line":587,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":587,"column":0},"generated":{"line":588,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":588,"column":0},"generated":{"line":589,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":589,"column":0},"generated":{"line":590,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":590,"column":0},"generated":{"line":591,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":591,"column":0},"generated":{"line":592,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":592,"column":0},"generated":{"line":593,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":593,"column":0},"generated":{"line":594,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":594,"column":0},"generated":{"line":595,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":595,"column":0},"generated":{"line":596,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":596,"column":0},"generated":{"line":597,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":597,"column":0},"generated":{"line":598,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":598,"column":0},"generated":{"line":599,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":599,"column":0},"generated":{"line":600,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":600,"column":0},"generated":{"line":601,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":601,"column":0},"generated":{"line":602,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":602,"column":0},"generated":{"line":603,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":603,"column":0},"generated":{"line":604,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":604,"column":0},"generated":{"line":605,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":605,"column":0},"generated":{"line":606,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":606,"column":0},"generated":{"line":607,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":607,"column":0},"generated":{"line":608,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":608,"column":0},"generated":{"line":609,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":609,"column":0},"generated":{"line":610,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":610,"column":0},"generated":{"line":611,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":611,"column":0},"generated":{"line":612,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":612,"column":0},"generated":{"line":613,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":613,"column":0},"generated":{"line":614,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":614,"column":0},"generated":{"line":615,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":615,"column":0},"generated":{"line":616,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":616,"column":0},"generated":{"line":617,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":617,"column":0},"generated":{"line":618,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":618,"column":0},"generated":{"line":619,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":619,"column":0},"generated":{"line":620,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":620,"column":0},"generated":{"line":621,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":621,"column":0},"generated":{"line":622,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":622,"column":0},"generated":{"line":623,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":623,"column":0},"generated":{"line":624,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":624,"column":0},"generated":{"line":625,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":625,"column":0},"generated":{"line":626,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":626,"column":0},"generated":{"line":627,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":627,"column":0},"generated":{"line":628,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":628,"column":0},"generated":{"line":629,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":629,"column":0},"generated":{"line":630,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":630,"column":0},"generated":{"line":631,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":631,"column":0},"generated":{"line":632,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":632,"column":0},"generated":{"line":633,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":633,"column":0},"generated":{"line":634,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":634,"column":0},"generated":{"line":635,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":635,"column":0},"generated":{"line":636,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":636,"column":0},"generated":{"line":637,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":637,"column":0},"generated":{"line":638,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":638,"column":0},"generated":{"line":639,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":639,"column":0},"generated":{"line":640,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":640,"column":0},"generated":{"line":641,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":641,"column":0},"generated":{"line":642,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":642,"column":0},"generated":{"line":643,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":643,"column":0},"generated":{"line":644,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":644,"column":0},"generated":{"line":645,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":645,"column":0},"generated":{"line":646,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":646,"column":0},"generated":{"line":647,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":647,"column":0},"generated":{"line":648,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":648,"column":0},"generated":{"line":649,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":649,"column":0},"generated":{"line":650,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":650,"column":0},"generated":{"line":651,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":651,"column":0},"generated":{"line":652,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":652,"column":0},"generated":{"line":653,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":653,"column":0},"generated":{"line":654,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":654,"column":0},"generated":{"line":655,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":655,"column":0},"generated":{"line":656,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":656,"column":0},"generated":{"line":657,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":657,"column":0},"generated":{"line":658,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":658,"column":0},"generated":{"line":659,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":659,"column":0},"generated":{"line":660,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":660,"column":0},"generated":{"line":661,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":661,"column":0},"generated":{"line":662,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":662,"column":0},"generated":{"line":663,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":663,"column":0},"generated":{"line":664,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":664,"column":0},"generated":{"line":665,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":665,"column":0},"generated":{"line":666,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":666,"column":0},"generated":{"line":667,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":667,"column":0},"generated":{"line":668,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":668,"column":0},"generated":{"line":669,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":669,"column":0},"generated":{"line":670,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":670,"column":0},"generated":{"line":671,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":671,"column":0},"generated":{"line":672,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":672,"column":0},"generated":{"line":673,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":673,"column":0},"generated":{"line":674,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":674,"column":0},"generated":{"line":675,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":675,"column":0},"generated":{"line":676,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":676,"column":0},"generated":{"line":677,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":677,"column":0},"generated":{"line":678,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":678,"column":0},"generated":{"line":679,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":679,"column":0},"generated":{"line":680,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":680,"column":0},"generated":{"line":681,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":681,"column":0},"generated":{"line":682,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":682,"column":0},"generated":{"line":683,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":683,"column":0},"generated":{"line":684,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":684,"column":0},"generated":{"line":685,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":685,"column":0},"generated":{"line":686,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":686,"column":0},"generated":{"line":687,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":687,"column":0},"generated":{"line":688,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":688,"column":0},"generated":{"line":689,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":689,"column":0},"generated":{"line":690,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":690,"column":0},"generated":{"line":691,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":691,"column":0},"generated":{"line":692,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":692,"column":0},"generated":{"line":693,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":693,"column":0},"generated":{"line":694,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":694,"column":0},"generated":{"line":695,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":695,"column":0},"generated":{"line":696,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":696,"column":0},"generated":{"line":697,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":697,"column":0},"generated":{"line":698,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":698,"column":0},"generated":{"line":699,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":699,"column":0},"generated":{"line":700,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":700,"column":0},"generated":{"line":701,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":701,"column":0},"generated":{"line":702,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":702,"column":0},"generated":{"line":703,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":703,"column":0},"generated":{"line":704,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":704,"column":0},"generated":{"line":705,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":705,"column":0},"generated":{"line":706,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":706,"column":0},"generated":{"line":707,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":707,"column":0},"generated":{"line":708,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":708,"column":0},"generated":{"line":709,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":709,"column":0},"generated":{"line":710,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":710,"column":0},"generated":{"line":711,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":711,"column":0},"generated":{"line":712,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":712,"column":0},"generated":{"line":713,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":713,"column":0},"generated":{"line":714,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":714,"column":0},"generated":{"line":715,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":715,"column":0},"generated":{"line":716,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":716,"column":0},"generated":{"line":717,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":717,"column":0},"generated":{"line":718,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":718,"column":0},"generated":{"line":719,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":719,"column":0},"generated":{"line":720,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":720,"column":0},"generated":{"line":721,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":721,"column":0},"generated":{"line":722,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":722,"column":0},"generated":{"line":723,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":723,"column":0},"generated":{"line":724,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":724,"column":0},"generated":{"line":725,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":725,"column":0},"generated":{"line":726,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":726,"column":0},"generated":{"line":727,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":727,"column":0},"generated":{"line":728,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":728,"column":0},"generated":{"line":729,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":729,"column":0},"generated":{"line":730,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":730,"column":0},"generated":{"line":731,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":731,"column":0},"generated":{"line":732,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":732,"column":0},"generated":{"line":733,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":733,"column":0},"generated":{"line":734,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":734,"column":0},"generated":{"line":735,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":735,"column":0},"generated":{"line":736,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":736,"column":0},"generated":{"line":737,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":737,"column":0},"generated":{"line":738,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":738,"column":0},"generated":{"line":739,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":739,"column":0},"generated":{"line":740,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":740,"column":0},"generated":{"line":741,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":741,"column":0},"generated":{"line":742,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":742,"column":0},"generated":{"line":743,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":743,"column":0},"generated":{"line":744,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":744,"column":0},"generated":{"line":745,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":745,"column":0},"generated":{"line":746,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":746,"column":0},"generated":{"line":747,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":747,"column":0},"generated":{"line":748,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":748,"column":0},"generated":{"line":749,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":749,"column":0},"generated":{"line":750,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":750,"column":0},"generated":{"line":751,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":751,"column":0},"generated":{"line":752,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":752,"column":0},"generated":{"line":753,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":753,"column":0},"generated":{"line":754,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":754,"column":0},"generated":{"line":755,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":755,"column":0},"generated":{"line":756,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":756,"column":0},"generated":{"line":757,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":757,"column":0},"generated":{"line":758,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":758,"column":0},"generated":{"line":759,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":759,"column":0},"generated":{"line":760,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":760,"column":0},"generated":{"line":761,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":761,"column":0},"generated":{"line":762,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":762,"column":0},"generated":{"line":763,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":763,"column":0},"generated":{"line":764,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":764,"column":0},"generated":{"line":765,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":765,"column":0},"generated":{"line":766,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":766,"column":0},"generated":{"line":767,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":767,"column":0},"generated":{"line":768,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":768,"column":0},"generated":{"line":769,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":769,"column":0},"generated":{"line":770,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":770,"column":0},"generated":{"line":771,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":771,"column":0},"generated":{"line":772,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":772,"column":0},"generated":{"line":773,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":773,"column":0},"generated":{"line":774,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":774,"column":0},"generated":{"line":775,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":775,"column":0},"generated":{"line":776,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":776,"column":0},"generated":{"line":777,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":777,"column":0},"generated":{"line":778,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":778,"column":0},"generated":{"line":779,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":779,"column":0},"generated":{"line":780,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":780,"column":0},"generated":{"line":781,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":781,"column":0},"generated":{"line":782,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":782,"column":0},"generated":{"line":783,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":783,"column":0},"generated":{"line":784,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":784,"column":0},"generated":{"line":785,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":785,"column":0},"generated":{"line":786,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":786,"column":0},"generated":{"line":787,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":787,"column":0},"generated":{"line":788,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":788,"column":0},"generated":{"line":789,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":789,"column":0},"generated":{"line":790,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":790,"column":0},"generated":{"line":791,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":791,"column":0},"generated":{"line":792,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":792,"column":0},"generated":{"line":793,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":793,"column":0},"generated":{"line":794,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":794,"column":0},"generated":{"line":795,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":795,"column":0},"generated":{"line":796,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":796,"column":0},"generated":{"line":797,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":797,"column":0},"generated":{"line":798,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":798,"column":0},"generated":{"line":799,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":799,"column":0},"generated":{"line":800,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":800,"column":0},"generated":{"line":801,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":801,"column":0},"generated":{"line":802,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":802,"column":0},"generated":{"line":803,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":803,"column":0},"generated":{"line":804,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":804,"column":0},"generated":{"line":805,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":805,"column":0},"generated":{"line":806,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":806,"column":0},"generated":{"line":807,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":807,"column":0},"generated":{"line":808,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":808,"column":0},"generated":{"line":809,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":809,"column":0},"generated":{"line":810,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":810,"column":0},"generated":{"line":811,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":811,"column":0},"generated":{"line":812,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":812,"column":0},"generated":{"line":813,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":813,"column":0},"generated":{"line":814,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":814,"column":0},"generated":{"line":815,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":815,"column":0},"generated":{"line":816,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":816,"column":0},"generated":{"line":817,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":817,"column":0},"generated":{"line":818,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":818,"column":0},"generated":{"line":819,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":819,"column":0},"generated":{"line":820,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":820,"column":0},"generated":{"line":821,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":821,"column":0},"generated":{"line":822,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":822,"column":0},"generated":{"line":823,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":823,"column":0},"generated":{"line":824,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":824,"column":0},"generated":{"line":825,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":825,"column":0},"generated":{"line":826,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":826,"column":0},"generated":{"line":827,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":827,"column":0},"generated":{"line":828,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":828,"column":0},"generated":{"line":829,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":829,"column":0},"generated":{"line":830,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":830,"column":0},"generated":{"line":831,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":831,"column":0},"generated":{"line":832,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":832,"column":0},"generated":{"line":833,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":833,"column":0},"generated":{"line":834,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":834,"column":0},"generated":{"line":835,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":835,"column":0},"generated":{"line":836,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":836,"column":0},"generated":{"line":837,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":837,"column":0},"generated":{"line":838,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":838,"column":0},"generated":{"line":839,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":839,"column":0},"generated":{"line":840,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":840,"column":0},"generated":{"line":841,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":841,"column":0},"generated":{"line":842,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":842,"column":0},"generated":{"line":843,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":843,"column":0},"generated":{"line":844,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":844,"column":0},"generated":{"line":845,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":845,"column":0},"generated":{"line":846,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":846,"column":0},"generated":{"line":847,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":847,"column":0},"generated":{"line":848,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":848,"column":0},"generated":{"line":849,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":849,"column":0},"generated":{"line":850,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":850,"column":0},"generated":{"line":851,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":851,"column":0},"generated":{"line":852,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":852,"column":0},"generated":{"line":853,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":853,"column":0},"generated":{"line":854,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":854,"column":0},"generated":{"line":855,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":855,"column":0},"generated":{"line":856,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":856,"column":0},"generated":{"line":857,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":857,"column":0},"generated":{"line":858,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":858,"column":0},"generated":{"line":859,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":859,"column":0},"generated":{"line":860,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":860,"column":0},"generated":{"line":861,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":861,"column":0},"generated":{"line":862,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":862,"column":0},"generated":{"line":863,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":863,"column":0},"generated":{"line":864,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":864,"column":0},"generated":{"line":865,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":865,"column":0},"generated":{"line":866,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":866,"column":0},"generated":{"line":867,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":867,"column":0},"generated":{"line":868,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":868,"column":0},"generated":{"line":869,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":869,"column":0},"generated":{"line":870,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":870,"column":0},"generated":{"line":871,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":871,"column":0},"generated":{"line":872,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":872,"column":0},"generated":{"line":873,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":873,"column":0},"generated":{"line":874,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":874,"column":0},"generated":{"line":875,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":875,"column":0},"generated":{"line":876,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":876,"column":0},"generated":{"line":877,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":877,"column":0},"generated":{"line":878,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":878,"column":0},"generated":{"line":879,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":879,"column":0},"generated":{"line":880,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":880,"column":0},"generated":{"line":881,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":881,"column":0},"generated":{"line":882,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":882,"column":0},"generated":{"line":883,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":883,"column":0},"generated":{"line":884,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":884,"column":0},"generated":{"line":885,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":885,"column":0},"generated":{"line":886,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":886,"column":0},"generated":{"line":887,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":887,"column":0},"generated":{"line":888,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":888,"column":0},"generated":{"line":889,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":889,"column":0},"generated":{"line":890,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":890,"column":0},"generated":{"line":891,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":891,"column":0},"generated":{"line":892,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":892,"column":0},"generated":{"line":893,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":893,"column":0},"generated":{"line":894,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":894,"column":0},"generated":{"line":895,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":895,"column":0},"generated":{"line":896,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":896,"column":0},"generated":{"line":897,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":897,"column":0},"generated":{"line":898,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":898,"column":0},"generated":{"line":899,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":899,"column":0},"generated":{"line":900,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":900,"column":0},"generated":{"line":901,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":901,"column":0},"generated":{"line":902,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":902,"column":0},"generated":{"line":903,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":903,"column":0},"generated":{"line":904,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":904,"column":0},"generated":{"line":905,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":905,"column":0},"generated":{"line":906,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":906,"column":0},"generated":{"line":907,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":907,"column":0},"generated":{"line":908,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":908,"column":0},"generated":{"line":909,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":909,"column":0},"generated":{"line":910,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":910,"column":0},"generated":{"line":911,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":911,"column":0},"generated":{"line":912,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":912,"column":0},"generated":{"line":913,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":913,"column":0},"generated":{"line":914,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":914,"column":0},"generated":{"line":915,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":915,"column":0},"generated":{"line":916,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":916,"column":0},"generated":{"line":917,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":917,"column":0},"generated":{"line":918,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":918,"column":0},"generated":{"line":919,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":919,"column":0},"generated":{"line":920,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":920,"column":0},"generated":{"line":921,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":921,"column":0},"generated":{"line":922,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":922,"column":0},"generated":{"line":923,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":923,"column":0},"generated":{"line":924,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":924,"column":0},"generated":{"line":925,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":925,"column":0},"generated":{"line":926,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":926,"column":0},"generated":{"line":927,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":927,"column":0},"generated":{"line":928,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":928,"column":0},"generated":{"line":929,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":929,"column":0},"generated":{"line":930,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":930,"column":0},"generated":{"line":931,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":931,"column":0},"generated":{"line":932,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":932,"column":0},"generated":{"line":933,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":933,"column":0},"generated":{"line":934,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":934,"column":0},"generated":{"line":935,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":935,"column":0},"generated":{"line":936,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":936,"column":0},"generated":{"line":937,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":937,"column":0},"generated":{"line":938,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":938,"column":0},"generated":{"line":939,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":939,"column":0},"generated":{"line":940,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":940,"column":0},"generated":{"line":941,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":941,"column":0},"generated":{"line":942,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":942,"column":0},"generated":{"line":943,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":943,"column":0},"generated":{"line":944,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":944,"column":0},"generated":{"line":945,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":945,"column":0},"generated":{"line":946,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":946,"column":0},"generated":{"line":947,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":947,"column":0},"generated":{"line":948,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":948,"column":0},"generated":{"line":949,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":949,"column":0},"generated":{"line":950,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":950,"column":0},"generated":{"line":951,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":951,"column":0},"generated":{"line":952,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":952,"column":0},"generated":{"line":953,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":953,"column":0},"generated":{"line":954,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":954,"column":0},"generated":{"line":955,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":955,"column":0},"generated":{"line":956,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":956,"column":0},"generated":{"line":957,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":957,"column":0},"generated":{"line":958,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":958,"column":0},"generated":{"line":959,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":959,"column":0},"generated":{"line":960,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":960,"column":0},"generated":{"line":961,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":961,"column":0},"generated":{"line":962,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":962,"column":0},"generated":{"line":963,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":963,"column":0},"generated":{"line":964,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":964,"column":0},"generated":{"line":965,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":965,"column":0},"generated":{"line":966,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":966,"column":0},"generated":{"line":967,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":967,"column":0},"generated":{"line":968,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":968,"column":0},"generated":{"line":969,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":969,"column":0},"generated":{"line":970,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":970,"column":0},"generated":{"line":971,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":971,"column":0},"generated":{"line":972,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":972,"column":0},"generated":{"line":973,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":973,"column":0},"generated":{"line":974,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":974,"column":0},"generated":{"line":975,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":975,"column":0},"generated":{"line":976,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":976,"column":0},"generated":{"line":977,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":977,"column":0},"generated":{"line":978,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":978,"column":0},"generated":{"line":979,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":979,"column":0},"generated":{"line":980,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":980,"column":0},"generated":{"line":981,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":981,"column":0},"generated":{"line":982,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":982,"column":0},"generated":{"line":983,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":983,"column":0},"generated":{"line":984,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":984,"column":0},"generated":{"line":985,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":985,"column":0},"generated":{"line":986,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":986,"column":0},"generated":{"line":987,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":987,"column":0},"generated":{"line":988,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":988,"column":0},"generated":{"line":989,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":989,"column":0},"generated":{"line":990,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":990,"column":0},"generated":{"line":991,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":991,"column":0},"generated":{"line":992,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":992,"column":0},"generated":{"line":993,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":993,"column":0},"generated":{"line":994,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":994,"column":0},"generated":{"line":995,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":995,"column":0},"generated":{"line":996,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":996,"column":0},"generated":{"line":997,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":997,"column":0},"generated":{"line":998,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":998,"column":0},"generated":{"line":999,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":999,"column":0},"generated":{"line":1000,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1000,"column":0},"generated":{"line":1001,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1001,"column":0},"generated":{"line":1002,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1002,"column":0},"generated":{"line":1003,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1003,"column":0},"generated":{"line":1004,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1004,"column":0},"generated":{"line":1005,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1005,"column":0},"generated":{"line":1006,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1006,"column":0},"generated":{"line":1007,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1007,"column":0},"generated":{"line":1008,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1008,"column":0},"generated":{"line":1009,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1009,"column":0},"generated":{"line":1010,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1010,"column":0},"generated":{"line":1011,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1011,"column":0},"generated":{"line":1012,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1012,"column":0},"generated":{"line":1013,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1013,"column":0},"generated":{"line":1014,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1014,"column":0},"generated":{"line":1015,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1015,"column":0},"generated":{"line":1016,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1016,"column":0},"generated":{"line":1017,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1017,"column":0},"generated":{"line":1018,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1018,"column":0},"generated":{"line":1019,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1019,"column":0},"generated":{"line":1020,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1020,"column":0},"generated":{"line":1021,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1021,"column":0},"generated":{"line":1022,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1022,"column":0},"generated":{"line":1023,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1023,"column":0},"generated":{"line":1024,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1024,"column":0},"generated":{"line":1025,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1025,"column":0},"generated":{"line":1026,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1026,"column":0},"generated":{"line":1027,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1027,"column":0},"generated":{"line":1028,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1028,"column":0},"generated":{"line":1029,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1029,"column":0},"generated":{"line":1030,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1030,"column":0},"generated":{"line":1031,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1031,"column":0},"generated":{"line":1032,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1032,"column":0},"generated":{"line":1033,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1033,"column":0},"generated":{"line":1034,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1034,"column":0},"generated":{"line":1035,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1035,"column":0},"generated":{"line":1036,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1036,"column":0},"generated":{"line":1037,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1037,"column":0},"generated":{"line":1038,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1038,"column":0},"generated":{"line":1039,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1039,"column":0},"generated":{"line":1040,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1040,"column":0},"generated":{"line":1041,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1041,"column":0},"generated":{"line":1042,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1042,"column":0},"generated":{"line":1043,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1043,"column":0},"generated":{"line":1044,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1044,"column":0},"generated":{"line":1045,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1045,"column":0},"generated":{"line":1046,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1046,"column":0},"generated":{"line":1047,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1047,"column":0},"generated":{"line":1048,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1048,"column":0},"generated":{"line":1049,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1049,"column":0},"generated":{"line":1050,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1050,"column":0},"generated":{"line":1051,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1051,"column":0},"generated":{"line":1052,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1052,"column":0},"generated":{"line":1053,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1053,"column":0},"generated":{"line":1054,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1054,"column":0},"generated":{"line":1055,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1055,"column":0},"generated":{"line":1056,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1056,"column":0},"generated":{"line":1057,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1057,"column":0},"generated":{"line":1058,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1058,"column":0},"generated":{"line":1059,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1059,"column":0},"generated":{"line":1060,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1060,"column":0},"generated":{"line":1061,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1061,"column":0},"generated":{"line":1062,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1062,"column":0},"generated":{"line":1063,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1063,"column":0},"generated":{"line":1064,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1064,"column":0},"generated":{"line":1065,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1065,"column":0},"generated":{"line":1066,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1066,"column":0},"generated":{"line":1067,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1067,"column":0},"generated":{"line":1068,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1068,"column":0},"generated":{"line":1069,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1069,"column":0},"generated":{"line":1070,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1070,"column":0},"generated":{"line":1071,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1071,"column":0},"generated":{"line":1072,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1072,"column":0},"generated":{"line":1073,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1073,"column":0},"generated":{"line":1074,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1074,"column":0},"generated":{"line":1075,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1075,"column":0},"generated":{"line":1076,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1076,"column":0},"generated":{"line":1077,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1077,"column":0},"generated":{"line":1078,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1078,"column":0},"generated":{"line":1079,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1079,"column":0},"generated":{"line":1080,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1080,"column":0},"generated":{"line":1081,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1081,"column":0},"generated":{"line":1082,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1082,"column":0},"generated":{"line":1083,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1083,"column":0},"generated":{"line":1084,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1084,"column":0},"generated":{"line":1085,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1085,"column":0},"generated":{"line":1086,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1086,"column":0},"generated":{"line":1087,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1087,"column":0},"generated":{"line":1088,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1088,"column":0},"generated":{"line":1089,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1089,"column":0},"generated":{"line":1090,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1090,"column":0},"generated":{"line":1091,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1091,"column":0},"generated":{"line":1092,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1092,"column":0},"generated":{"line":1093,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1093,"column":0},"generated":{"line":1094,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1094,"column":0},"generated":{"line":1095,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1095,"column":0},"generated":{"line":1096,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1096,"column":0},"generated":{"line":1097,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1097,"column":0},"generated":{"line":1098,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1098,"column":0},"generated":{"line":1099,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1099,"column":0},"generated":{"line":1100,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1100,"column":0},"generated":{"line":1101,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1101,"column":0},"generated":{"line":1102,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1102,"column":0},"generated":{"line":1103,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1103,"column":0},"generated":{"line":1104,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1104,"column":0},"generated":{"line":1105,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1105,"column":0},"generated":{"line":1106,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1106,"column":0},"generated":{"line":1107,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1107,"column":0},"generated":{"line":1108,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1108,"column":0},"generated":{"line":1109,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1109,"column":0},"generated":{"line":1110,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1110,"column":0},"generated":{"line":1111,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1111,"column":0},"generated":{"line":1112,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1112,"column":0},"generated":{"line":1113,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1113,"column":0},"generated":{"line":1114,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1114,"column":0},"generated":{"line":1115,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1115,"column":0},"generated":{"line":1116,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1116,"column":0},"generated":{"line":1117,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1117,"column":0},"generated":{"line":1118,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1118,"column":0},"generated":{"line":1119,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1119,"column":0},"generated":{"line":1120,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1120,"column":0},"generated":{"line":1121,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1121,"column":0},"generated":{"line":1122,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1122,"column":0},"generated":{"line":1123,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1123,"column":0},"generated":{"line":1124,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1124,"column":0},"generated":{"line":1125,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1125,"column":0},"generated":{"line":1126,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1126,"column":0},"generated":{"line":1127,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1127,"column":0},"generated":{"line":1128,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1128,"column":0},"generated":{"line":1129,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1129,"column":0},"generated":{"line":1130,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1130,"column":0},"generated":{"line":1131,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1131,"column":0},"generated":{"line":1132,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1132,"column":0},"generated":{"line":1133,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1133,"column":0},"generated":{"line":1134,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1134,"column":0},"generated":{"line":1135,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1135,"column":0},"generated":{"line":1136,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1136,"column":0},"generated":{"line":1137,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1137,"column":0},"generated":{"line":1138,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1138,"column":0},"generated":{"line":1139,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1139,"column":0},"generated":{"line":1140,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1140,"column":0},"generated":{"line":1141,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1141,"column":0},"generated":{"line":1142,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1142,"column":0},"generated":{"line":1143,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1143,"column":0},"generated":{"line":1144,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1144,"column":0},"generated":{"line":1145,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1145,"column":0},"generated":{"line":1146,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1146,"column":0},"generated":{"line":1147,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1147,"column":0},"generated":{"line":1148,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1148,"column":0},"generated":{"line":1149,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1149,"column":0},"generated":{"line":1150,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1150,"column":0},"generated":{"line":1151,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1151,"column":0},"generated":{"line":1152,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1152,"column":0},"generated":{"line":1153,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1153,"column":0},"generated":{"line":1154,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1154,"column":0},"generated":{"line":1155,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1155,"column":0},"generated":{"line":1156,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1156,"column":0},"generated":{"line":1157,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1157,"column":0},"generated":{"line":1158,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1158,"column":0},"generated":{"line":1159,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1159,"column":0},"generated":{"line":1160,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1160,"column":0},"generated":{"line":1161,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1161,"column":0},"generated":{"line":1162,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1162,"column":0},"generated":{"line":1163,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1163,"column":0},"generated":{"line":1164,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1164,"column":0},"generated":{"line":1165,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1165,"column":0},"generated":{"line":1166,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1166,"column":0},"generated":{"line":1167,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1167,"column":0},"generated":{"line":1168,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1168,"column":0},"generated":{"line":1169,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1169,"column":0},"generated":{"line":1170,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1170,"column":0},"generated":{"line":1171,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1171,"column":0},"generated":{"line":1172,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1172,"column":0},"generated":{"line":1173,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1173,"column":0},"generated":{"line":1174,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1174,"column":0},"generated":{"line":1175,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1175,"column":0},"generated":{"line":1176,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1176,"column":0},"generated":{"line":1177,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1177,"column":0},"generated":{"line":1178,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1178,"column":0},"generated":{"line":1179,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1179,"column":0},"generated":{"line":1180,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1180,"column":0},"generated":{"line":1181,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1181,"column":0},"generated":{"line":1182,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1182,"column":0},"generated":{"line":1183,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1183,"column":0},"generated":{"line":1184,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1184,"column":0},"generated":{"line":1185,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1185,"column":0},"generated":{"line":1186,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1186,"column":0},"generated":{"line":1187,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1187,"column":0},"generated":{"line":1188,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1188,"column":0},"generated":{"line":1189,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1189,"column":0},"generated":{"line":1190,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1190,"column":0},"generated":{"line":1191,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1191,"column":0},"generated":{"line":1192,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1192,"column":0},"generated":{"line":1193,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1193,"column":0},"generated":{"line":1194,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1194,"column":0},"generated":{"line":1195,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1195,"column":0},"generated":{"line":1196,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1196,"column":0},"generated":{"line":1197,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1197,"column":0},"generated":{"line":1198,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1198,"column":0},"generated":{"line":1199,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1199,"column":0},"generated":{"line":1200,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1200,"column":0},"generated":{"line":1201,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1201,"column":0},"generated":{"line":1202,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1202,"column":0},"generated":{"line":1203,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1203,"column":0},"generated":{"line":1204,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1204,"column":0},"generated":{"line":1205,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1205,"column":0},"generated":{"line":1206,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1206,"column":0},"generated":{"line":1207,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1207,"column":0},"generated":{"line":1208,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1208,"column":0},"generated":{"line":1209,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1209,"column":0},"generated":{"line":1210,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1210,"column":0},"generated":{"line":1211,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1211,"column":0},"generated":{"line":1212,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1212,"column":0},"generated":{"line":1213,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1213,"column":0},"generated":{"line":1214,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1214,"column":0},"generated":{"line":1215,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1215,"column":0},"generated":{"line":1216,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1216,"column":0},"generated":{"line":1217,"column":0}},{"source":"../node_modules/imagetracerjs/imagetracer_v1.2.6.js","original":{"line":1217,"column":0},"generated":{"line":1218,"column":0}}],"sources":{"../node_modules/imagetracerjs/imagetracer_v1.2.6.js":"/*\n\timagetracer.js version 1.2.6\n\tSimple raster image tracer and vectorizer written in JavaScript.\n\tandras@jankovics.net\n*/\n\n/*\n\nThe Unlicense / PUBLIC DOMAIN\n\nThis is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to http://unlicense.org/\n\n*/\n\n(function(){ 'use strict';\n\nfunction ImageTracer(){\n\tvar _this = this;\n\n\tthis.versionnumber = '1.2.6',\n\t\n\t////////////////////////////////////////////////////////////\n\t//\n\t// API\n\t//\n\t////////////////////////////////////////////////////////////\n\t\n\t// Loading an image from a URL, tracing when loaded,\n\t// then executing callback with the scaled svg string as argument\n\tthis.imageToSVG = function( url, callback, options ){\n\t\toptions = _this.checkoptions(options);\n\t\t// loading image, tracing and callback\n\t\t_this.loadImage(\n\t\t\turl,\n\t\t\tfunction(canvas){\n\t\t\t\tcallback(\n\t\t\t\t\t_this.imagedataToSVG( _this.getImgdata(canvas), options )\n\t\t\t\t);\n\t\t\t},\n\t\t\toptions\n\t\t);\n\t},// End of imageToSVG()\n\t\n\t// Tracing imagedata, then returning the scaled svg string\n\tthis.imagedataToSVG = function( imgd, options ){\n\t\toptions = _this.checkoptions(options);\n\t\t// tracing imagedata\n\t\tvar td = _this.imagedataToTracedata( imgd, options );\n\t\t// returning SVG string\n\t\treturn _this.getsvgstring(td, options);\n\t},// End of imagedataToSVG()\n\t\n\t// Loading an image from a URL, tracing when loaded,\n\t// then executing callback with tracedata as argument\n\tthis.imageToTracedata = function( url, callback, options ){\n\t\toptions = _this.checkoptions(options);\n\t\t// loading image, tracing and callback\n\t\t_this.loadImage(\n\t\t\t\turl,\n\t\t\t\tfunction(canvas){\n\t\t\t\t\tcallback(\n\t\t\t\t\t\t_this.imagedataToTracedata( _this.getImgdata(canvas), options )\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\toptions\n\t\t);\n\t},// End of imageToTracedata()\n\t\n\t// Tracing imagedata, then returning tracedata (layers with paths, palette, image size)\n\tthis.imagedataToTracedata = function( imgd, options ){\n\t\toptions = _this.checkoptions(options);\n\t\t\n\t\t// 1. Color quantization\n\t\tvar ii = _this.colorquantization( imgd, options );\n\t\t\n\t\tif(options.layering === 0){// Sequential layering\n\t\t\t\n\t\t\t// create tracedata object\n\t\t\tvar tracedata = {\n\t\t\t\tlayers : [],\n\t\t\t\tpalette : ii.palette,\n\t\t\t\twidth : ii.array[0].length-2,\n\t\t\t\theight : ii.array.length-2\n\t\t\t};\n\t\t\t\n\t\t\t// Loop to trace each color layer\n\t\t\tfor(var colornum=0; colornum<ii.palette.length; colornum++){\n\t\t\t\t\n\t\t\t\t// layeringstep -> pathscan -> internodes -> batchtracepaths\n\t\t\t\tvar tracedlayer =\n\t\t\t\t\t_this.batchtracepaths(\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t_this.internodes(\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t_this.pathscan(\n\t\t\t\t\t\t\t\t_this.layeringstep( ii, colornum ),\n\t\t\t\t\t\t\t\toptions.pathomit\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t\t\n\t\t\t\t\t\toptions.ltres,\n\t\t\t\t\t\toptions.qtres\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t\n\t\t\t\t// adding traced layer\n\t\t\t\ttracedata.layers.push(tracedlayer);\n\t\t\t\t\n\t\t\t}// End of color loop\n\t\t\t\n\t\t}else{// Parallel layering\n\t\t\t// 2. Layer separation and edge detection\n\t\t\tvar ls = _this.layering( ii );\n\t\t\t\n\t\t\t// Optional edge node visualization\n\t\t\tif(options.layercontainerid){ _this.drawLayers( ls, _this.specpalette, options.scale, options.layercontainerid ); }\n\t\t\t\n\t\t\t// 3. Batch pathscan\n\t\t\tvar bps = _this.batchpathscan( ls, options.pathomit );\n\t\t\t\n\t\t\t// 4. Batch interpollation\n\t\t\tvar bis = _this.batchinternodes( bps, options );\n\t\t\t\n\t\t\t// 5. Batch tracing and creating tracedata object\n\t\t\tvar tracedata = {\n\t\t\t\tlayers : _this.batchtracelayers( bis, options.ltres, options.qtres ),\n\t\t\t\tpalette : ii.palette,\n\t\t\t\twidth : imgd.width,\n\t\t\t\theight : imgd.height\n\t\t\t};\n\t\t\t\n\t\t}// End of parallel layering\n\t\t\n\t\t// return tracedata\n\t\treturn tracedata;\n\t\t\n\t},// End of imagedataToTracedata()\n\t\n\tthis.optionpresets = {\n\t\t'default': {\n\t\t\t\n\t\t\t// Tracing\n\t\t\tcorsenabled : false,\n\t\t\tltres : 1,\n\t\t\tqtres : 1,\n\t\t\tpathomit : 8,\n\t\t\trightangleenhance : true,\n\t\t\t\n\t\t\t// Color quantization\n\t\t\tcolorsampling : 2,\n\t\t\tnumberofcolors : 16,\n\t\t\tmincolorratio : 0,\n\t\t\tcolorquantcycles : 3,\n\t\t\t\n\t\t\t// Layering method\n\t\t\tlayering : 0,\n\t\t\t\n\t\t\t// SVG rendering\n\t\t\tstrokewidth : 1,\n\t\t\tlinefilter : false,\n\t\t\tscale : 1,\n\t\t\troundcoords : 1,\n\t\t\tviewbox : false,\n\t\t\tdesc : false,\n\t\t\tlcpr : 0,\n\t\t\tqcpr : 0,\n\t\t\t\n\t\t\t// Blur\n\t\t\tblurradius : 0,\n\t\t\tblurdelta : 20\n\t\t\t\n\t\t},\n\t\t'posterized1': { colorsampling:0, numberofcolors:2 },\n\t\t'posterized2': { numberofcolors:4, blurradius:5 },\n\t\t'curvy': { ltres:0.01, linefilter:true, rightangleenhance:false },\n\t\t'sharp': { qtres:0.01, linefilter:false },\n\t\t'detailed': { pathomit:0, roundcoords:2, ltres:0.5, qtres:0.5, numberofcolors:64 },\n\t\t'smoothed': { blurradius:5, blurdelta: 64 },\n\t\t'grayscale': { colorsampling:0, colorquantcycles:1, numberofcolors:7 },\n\t\t'fixedpalette': { colorsampling:0, colorquantcycles:1, numberofcolors:27 },\n\t\t'randomsampling1': { colorsampling:1, numberofcolors:8 },\n\t\t'randomsampling2': { colorsampling:1, numberofcolors:64 },\n\t\t'artistic1': { colorsampling:0, colorquantcycles:1, pathomit:0, blurradius:5, blurdelta: 64, ltres:0.01, linefilter:true, numberofcolors:16, strokewidth:2 },\n\t\t'artistic2': { qtres:0.01, colorsampling:0, colorquantcycles:1, numberofcolors:4, strokewidth:0 },\n\t\t'artistic3': { qtres:10, ltres:10, numberofcolors:8 },\n\t\t'artistic4': { qtres:10, ltres:10, numberofcolors:64, blurradius:5, blurdelta: 256, strokewidth:2 },\n\t\t'posterized3': { ltres: 1, qtres: 1, pathomit: 20, rightangleenhance: true, colorsampling: 0, numberofcolors: 3,\n\t\t\tmincolorratio: 0, colorquantcycles: 3, blurradius: 3, blurdelta: 20, strokewidth: 0, linefilter: false,\n\t\t\troundcoords: 1, pal: [ { r: 0, g: 0, b: 100, a: 255 }, { r: 255, g: 255, b: 255, a: 255 } ] }\n\t},// End of optionpresets\n\t\n\t// creating options object, setting defaults for missing values\n\tthis.checkoptions = function(options){\n\t\toptions = options || {};\n\t\t// Option preset\n\t\tif(typeof options === 'string'){\n\t\t\toptions = options.toLowerCase();\n\t\t\tif( _this.optionpresets[options] ){ options = _this.optionpresets[options]; }else{ options = {}; }\n\t\t}\n\t\t// Defaults\n\t\tvar ok = Object.keys(_this.optionpresets['default']);\n\t\tfor(var k=0; k<ok.length; k++){\n\t\t\tif(!options.hasOwnProperty(ok[k])){ options[ok[k]] = _this.optionpresets['default'][ok[k]]; }\n\t\t}\n\t\t// options.pal is not defined here, the custom palette should be added externally: options.pal = [ { 'r':0, 'g':0, 'b':0, 'a':255 }, {...}, ... ];\n\t\t// options.layercontainerid is not defined here, can be added externally: options.layercontainerid = 'mydiv'; ... <div id=\"mydiv\"></div>\n\t\treturn options;\n\t},// End of checkoptions()\n\t\n\t////////////////////////////////////////////////////////////\n\t//\n\t// Vectorizing functions\n\t//\n\t////////////////////////////////////////////////////////////\n\t\n\t// 1. Color quantization\n\t// Using a form of k-means clustering repeatead options.colorquantcycles times. http://en.wikipedia.org/wiki/Color_quantization\n\tthis.colorquantization = function( imgd, options ){\n\t\tvar arr = [], idx=0, cd,cdl,ci, paletteacc = [], pixelnum = imgd.width * imgd.height, i, j, k, cnt, palette;\n\t\t\n\t\t// imgd.data must be RGBA, not just RGB\n\t\tif( imgd.data.length < pixelnum * 4 ){\n\t\t\tvar newimgddata = new Uint8ClampedArray(pixelnum * 4);\n\t\t\tfor(var pxcnt = 0; pxcnt < pixelnum ; pxcnt++){\n\t\t\t\tnewimgddata[pxcnt*4 ] = imgd.data[pxcnt*3 ];\n\t\t\t\tnewimgddata[pxcnt*4+1] = imgd.data[pxcnt*3+1];\n\t\t\t\tnewimgddata[pxcnt*4+2] = imgd.data[pxcnt*3+2];\n\t\t\t\tnewimgddata[pxcnt*4+3] = 255;\n\t\t\t}\n\t\t\timgd.data = newimgddata;\n\t\t}// End of RGBA imgd.data check\n\t\t\n\t\t// Filling arr (color index array) with -1\n\t\tfor( j=0; j<imgd.height+2; j++ ){ arr[j]=[]; for(i=0; i<imgd.width+2 ; i++){ arr[j][i] = -1; } }\n\t\t\n\t\t// Use custom palette if pal is defined or sample / generate custom length palette\n\t\tif(options.pal){\n\t\t\tpalette = options.pal;\n\t\t}else if(options.colorsampling === 0){\n\t\t\tpalette = _this.generatepalette(options.numberofcolors);\n\t\t}else if(options.colorsampling === 1){\n\t\t\tpalette = _this.samplepalette( options.numberofcolors, imgd );\n\t\t}else{\n\t\t\tpalette = _this.samplepalette2( options.numberofcolors, imgd );\n\t\t}\n\t\t\n\t\t// Selective Gaussian blur preprocessing\n\t\tif( options.blurradius > 0 ){ imgd = _this.blur( imgd, options.blurradius, options.blurdelta ); }\n\t\t\n\t\t// Repeat clustering step options.colorquantcycles times\n\t\tfor( cnt=0; cnt < options.colorquantcycles; cnt++ ){\n\t\t\t\n\t\t\t// Average colors from the second iteration\n\t\t\tif(cnt>0){\n\t\t\t\t// averaging paletteacc for palette\n\t\t\t\tfor( k=0; k < palette.length; k++ ){\n\t\t\t\t\t\n\t\t\t\t\t// averaging\n\t\t\t\t\tif( paletteacc[k].n > 0 ){\n\t\t\t\t\t\tpalette[k] = { r: Math.floor( paletteacc[k].r / paletteacc[k].n ),\n\t\t\t\t\t\t\t\t\t\tg: Math.floor( paletteacc[k].g / paletteacc[k].n ),\n\t\t\t\t\t\t\t\t\t\tb: Math.floor( paletteacc[k].b / paletteacc[k].n ),\n\t\t\t\t\t\t\t\t\t\ta: Math.floor( paletteacc[k].a / paletteacc[k].n ) };\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// Randomizing a color, if there are too few pixels and there will be a new cycle\n\t\t\t\t\tif( ( paletteacc[k].n/pixelnum < options.mincolorratio ) && ( cnt < options.colorquantcycles-1 ) ){\n\t\t\t\t\t\tpalette[k] = { r: Math.floor(Math.random()*255),\n\t\t\t\t\t\t\t\t\t\tg: Math.floor(Math.random()*255),\n\t\t\t\t\t\t\t\t\t\tb: Math.floor(Math.random()*255),\n\t\t\t\t\t\t\t\t\t\ta: Math.floor(Math.random()*255) };\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}// End of palette loop\n\t\t\t}// End of Average colors from the second iteration\n\t\t\t\n\t\t\t// Reseting palette accumulator for averaging\n\t\t\tfor( i=0; i < palette.length; i++ ){ paletteacc[i] = { r:0, g:0, b:0, a:0, n:0 }; }\n\t\t\t\n\t\t\t// loop through all pixels\n\t\t\tfor( j=0; j < imgd.height; j++ ){\n\t\t\t\tfor( i=0; i < imgd.width; i++ ){\n\t\t\t\t\t\n\t\t\t\t\t// pixel index\n\t\t\t\t\tidx = (j*imgd.width+i)*4;\n\t\t\t\t\t\n\t\t\t\t\t// find closest color from palette by measuring (rectilinear) color distance between this pixel and all palette colors\n\t\t\t\t\tci=0; cdl = 1024; // 4 * 256 is the maximum RGBA distance\n\t\t\t\t\tfor( k=0; k<palette.length; k++ ){\n\t\t\t\t\t\t\n\t\t\t\t\t\t// In my experience, https://en.wikipedia.org/wiki/Rectilinear_distance works better than https://en.wikipedia.org/wiki/Euclidean_distance\n\t\t\t\t\t\tcd = Math.abs(palette[k].r-imgd.data[idx]) + Math.abs(palette[k].g-imgd.data[idx+1]) + Math.abs(palette[k].b-imgd.data[idx+2]) + Math.abs(palette[k].a-imgd.data[idx+3]);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remember this color if this is the closest yet\n\t\t\t\t\t\tif(cd<cdl){ cdl = cd; ci = k; }\n\t\t\t\t\t\t\n\t\t\t\t\t}// End of palette loop\n\t\t\t\t\t\n\t\t\t\t\t// add to palettacc\n\t\t\t\t\tpaletteacc[ci].r += imgd.data[idx ];\n\t\t\t\t\tpaletteacc[ci].g += imgd.data[idx+1];\n\t\t\t\t\tpaletteacc[ci].b += imgd.data[idx+2];\n\t\t\t\t\tpaletteacc[ci].a += imgd.data[idx+3];\n\t\t\t\t\tpaletteacc[ci].n++;\n\t\t\t\t\t\n\t\t\t\t\t// update the indexed color array\n\t\t\t\t\tarr[j+1][i+1] = ci;\n\t\t\t\t\t\n\t\t\t\t}// End of i loop\n\t\t\t}// End of j loop\n\t\t\t\n\t\t}// End of Repeat clustering step options.colorquantcycles times\n\t\t\n\t\treturn { array:arr, palette:palette };\n\t\t\n\t},// End of colorquantization()\n\t\n\t// Sampling a palette from imagedata\n\tthis.samplepalette = function( numberofcolors, imgd ){\n\t\tvar idx, palette=[];\n\t\tfor(var i=0; i<numberofcolors; i++){\n\t\t\tidx = Math.floor( Math.random() * imgd.data.length / 4 ) * 4;\n\t\t\tpalette.push({ r:imgd.data[idx ], g:imgd.data[idx+1], b:imgd.data[idx+2], a:imgd.data[idx+3] });\n\t\t}\n\t\treturn palette;\n\t},// End of samplepalette()\n\t\n\t// Deterministic sampling a palette from imagedata: rectangular grid\n\tthis.samplepalette2 = function( numberofcolors, imgd ){\n\t\tvar idx, palette=[], ni = Math.ceil(Math.sqrt(numberofcolors)), nj = Math.ceil(numberofcolors/ni),\n\t\t\tvx = imgd.width / (ni+1), vy = imgd.height / (nj+1);\n\t\tfor(var j=0; j<nj; j++){\n\t\t\tfor(var i=0; i<ni; i++){\n\t\t\t\tif(palette.length === numberofcolors){\n\t\t\t\t\tbreak;\n\t\t\t\t}else{\n\t\t\t\t\tidx = Math.floor( ((j+1)*vy) * imgd.width + ((i+1)*vx) ) * 4;\n\t\t\t\t\tpalette.push( { r:imgd.data[idx], g:imgd.data[idx+1], b:imgd.data[idx+2], a:imgd.data[idx+3] } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn palette;\n\t},// End of samplepalette2()\n\t\n\t// Generating a palette with numberofcolors\n\tthis.generatepalette = function(numberofcolors){\n\t\tvar palette = [], rcnt, gcnt, bcnt;\n\t\tif(numberofcolors<8){\n\t\t\t\n\t\t\t// Grayscale\n\t\t\tvar graystep = Math.floor(255/(numberofcolors-1));\n\t\t\tfor(var i=0; i<numberofcolors; i++){ palette.push({ r:i*graystep, g:i*graystep, b:i*graystep, a:255 }); }\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\t// RGB color cube\n\t\t\tvar colorqnum = Math.floor(Math.pow(numberofcolors, 1/3)), // Number of points on each edge on the RGB color cube\n\t\t\t\tcolorstep = Math.floor(255/(colorqnum-1)), // distance between points\n\t\t\t\trndnum = numberofcolors - colorqnum*colorqnum*colorqnum; // number of random colors\n\t\t\t\n\t\t\tfor(rcnt=0; rcnt<colorqnum; rcnt++){\n\t\t\t\tfor(gcnt=0; gcnt<colorqnum; gcnt++){\n\t\t\t\t\tfor(bcnt=0; bcnt<colorqnum; bcnt++){\n\t\t\t\t\t\tpalette.push( { r:rcnt*colorstep, g:gcnt*colorstep, b:bcnt*colorstep, a:255 } );\n\t\t\t\t\t}// End of blue loop\n\t\t\t\t}// End of green loop\n\t\t\t}// End of red loop\n\t\t\t\n\t\t\t// Rest is random\n\t\t\tfor(rcnt=0; rcnt<rndnum; rcnt++){ palette.push({ r:Math.floor(Math.random()*255), g:Math.floor(Math.random()*255), b:Math.floor(Math.random()*255), a:Math.floor(Math.random()*255) }); }\n\n\t\t}// End of numberofcolors check\n\t\t\n\t\treturn palette;\n\t},// End of generatepalette()\n\t\t\n\t// 2. Layer separation and edge detection\n\t// Edge node types ( ▓: this layer or 1; ░: not this layer or 0 )\n\t// 12 ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓\n\t// 48 ░░ ░░ ░░ ░░ ░▓ ░▓ ░▓ ░▓ ▓░ ▓░ ▓░ ▓░ ▓▓ ▓▓ ▓▓ ▓▓\n\t// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\tthis.layering = function(ii){\n\t\t// Creating layers for each indexed color in arr\n\t\tvar layers = [], val=0, ah = ii.array.length, aw = ii.array[0].length, n1,n2,n3,n4,n5,n6,n7,n8, i, j, k;\n\t\t\n\t\t// Create layers\n\t\tfor(k=0; k<ii.palette.length; k++){\n\t\t\tlayers[k] = [];\n\t\t\tfor(j=0; j<ah; j++){\n\t\t\t\tlayers[k][j] = [];\n\t\t\t\tfor(i=0; i<aw; i++){\n\t\t\t\t\tlayers[k][j][i]=0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Looping through all pixels and calculating edge node type\n\t\tfor(j=1; j<ah-1; j++){\n\t\t\tfor(i=1; i<aw-1; i++){\n\t\t\t\t\n\t\t\t\t// This pixel's indexed color\n\t\t\t\tval = ii.array[j][i];\n\t\t\t\t\n\t\t\t\t// Are neighbor pixel colors the same?\n\t\t\t\tn1 = ii.array[j-1][i-1]===val ? 1 : 0;\n\t\t\t\tn2 = ii.array[j-1][i ]===val ? 1 : 0;\n\t\t\t\tn3 = ii.array[j-1][i+1]===val ? 1 : 0;\n\t\t\t\tn4 = ii.array[j ][i-1]===val ? 1 : 0;\n\t\t\t\tn5 = ii.array[j ][i+1]===val ? 1 : 0;\n\t\t\t\tn6 = ii.array[j+1][i-1]===val ? 1 : 0;\n\t\t\t\tn7 = ii.array[j+1][i ]===val ? 1 : 0;\n\t\t\t\tn8 = ii.array[j+1][i+1]===val ? 1 : 0;\n\t\t\t\t\n\t\t\t\t// this pixel's type and looking back on previous pixels\n\t\t\t\tlayers[val][j+1][i+1] = 1 + n5 * 2 + n8 * 4 + n7 * 8 ;\n\t\t\t\tif(!n4){ layers[val][j+1][i ] = 0 + 2 + n7 * 4 + n6 * 8 ; }\n\t\t\t\tif(!n2){ layers[val][j ][i+1] = 0 + n3*2 + n5 * 4 + 8 ; }\n\t\t\t\tif(!n1){ layers[val][j ][i ] = 0 + n2*2 + 4 + n4 * 8 ; }\n\t\t\t\t\n\t\t\t}// End of i loop\n\t\t}// End of j loop\n\t\t\n\t\treturn layers;\n\t},// End of layering()\n\t\n\t// 2. Layer separation and edge detection\n\t// Edge node types ( ▓: this layer or 1; ░: not this layer or 0 )\n\t// 12 ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓ ░░ ▓░ ░▓ ▓▓\n\t// 48 ░░ ░░ ░░ ░░ ░▓ ░▓ ░▓ ░▓ ▓░ ▓░ ▓░ ▓░ ▓▓ ▓▓ ▓▓ ▓▓\n\t// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\tthis.layeringstep = function(ii,cnum){\n\t\t// Creating layers for each indexed color in arr\n\t\tvar layer = [], val=0, ah = ii.array.length, aw = ii.array[0].length, n1,n2,n3,n4,n5,n6,n7,n8, i, j, k;\n\t\t\n\t\t// Create layer\n\t\tfor(j=0; j<ah; j++){\n\t\t\tlayer[j] = [];\n\t\t\tfor(i=0; i<aw; i++){\n\t\t\t\tlayer[j][i]=0;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Looping through all pixels and calculating edge node type\n\t\tfor(j=1; j<ah; j++){\n\t\t\tfor(i=1; i<aw; i++){\n\t\t\t\tlayer[j][i] =\n\t\t\t\t\t( ii.array[j-1][i-1]===cnum ? 1 : 0 ) +\n\t\t\t\t\t( ii.array[j-1][i]===cnum ? 2 : 0 ) +\n\t\t\t\t\t( ii.array[j][i-1]===cnum ? 8 : 0 ) +\n\t\t\t\t\t( ii.array[j][i]===cnum ? 4 : 0 )\n\t\t\t\t;\n\t\t\t}// End of i loop\n\t\t}// End of j loop\n\t\t\t\n\t\treturn layer;\n\t},// End of layeringstep()\n\t\n\t// Point in polygon test\n\tthis.pointinpoly = function( p, pa ){\n\t\tvar isin=false;\n\n\t\tfor(var i=0,j=pa.length-1; i<pa.length; j=i++){\n\t\t\tisin =\n\t\t\t\t( ((pa[i].y > p.y) !== (pa[j].y > p.y)) && (p.x < (pa[j].x - pa[i].x) * (p.y - pa[i].y) / (pa[j].y - pa[i].y) + pa[i].x) )\n\t\t\t\t? !isin : isin;\n\t\t}\n\n\t\treturn isin;\n\t},\n\t\n\t// Lookup tables for pathscan\n\t// pathscan_combined_lookup[ arr[py][px] ][ dir ] = [nextarrpypx, nextdir, deltapx, deltapy];\n\tthis.pathscan_combined_lookup = [\n\t\t[[-1,-1,-1,-1], [-1,-1,-1,-1], [-1,-1,-1,-1], [-1,-1,-1,-1]],// arr[py][px]===0 is invalid\n\t\t[[ 0, 1, 0,-1], [-1,-1,-1,-1], [-1,-1,-1,-1], [ 0, 2,-1, 0]],\n\t\t[[-1,-1,-1,-1], [-1,-1,-1,-1], [ 0, 1, 0,-1], [ 0, 0, 1, 0]],\n\t\t[[ 0, 0, 1, 0], [-1,-1,-1,-1], [ 0, 2,-1, 0], [-1,-1,-1,-1]],\n\t\t\n\t\t[[-1,-1,-1,-1], [ 0, 0, 1, 0], [ 0, 3, 0, 1], [-1,-1,-1,-1]],\n\t\t[[13, 3, 0, 1], [13, 2,-1, 0], [ 7, 1, 0,-1], [ 7, 0, 1, 0]],\n\t\t[[-1,-1,-1,-1], [ 0, 1, 0,-1], [-1,-1,-1,-1], [ 0, 3, 0, 1]],\n\t\t[[ 0, 3, 0, 1], [ 0, 2,-1, 0], [-1,-1,-1,-1], [-1,-1,-1,-1]],\n\t\t\n\t\t[[ 0, 3, 0, 1], [ 0, 2,-1, 0], [-1,-1,-1,-1], [-1,-1,-1,-1]],\n\t\t[[-1,-1,-1,-1], [ 0, 1, 0,-1], [-1,-1,-1,-1], [ 0, 3, 0, 1]],\n\t\t[[11, 1, 0,-1], [14, 0, 1, 0], [14, 3, 0, 1], [11, 2,-1, 0]],\n\t\t[[-1,-1,-1,-1], [ 0, 0, 1, 0], [ 0, 3, 0, 1], [-1,-1,-1,-1]],\n\t\t\n\t\t[[ 0, 0, 1, 0], [-1,-1,-1,-1], [ 0, 2,-1, 0], [-1,-1,-1,-1]],\n\t\t[[-1,-1,-1,-1], [-1,-1,-1,-1], [ 0, 1, 0,-1], [ 0, 0, 1, 0]],\n\t\t[[ 0, 1, 0,-1], [-1,-1,-1,-1], [-1,-1,-1,-1], [ 0, 2,-1, 0]],\n\t\t[[-1,-1,-1,-1], [-1,-1,-1,-1], [-1,-1,-1,-1], [-1,-1,-1,-1]]// arr[py][px]===15 is invalid\n\t],\n\n\t// 3. Walking through an edge node array, discarding edge node types 0 and 15 and creating paths from the rest.\n\t// Walk directions (dir): 0 > ; 1 ^ ; 2 < ; 3 v \n\tthis.pathscan = function( arr, pathomit ){\n\t\tvar paths=[], pacnt=0, pcnt=0, px=0, py=0, w = arr[0].length, h = arr.length,\n\t\t\tdir=0, pathfinished=true, holepath=false, lookuprow;\n\t\t\n\t\tfor(var j=0; j<h; j++){\n\t\t\tfor(var i=0; i<w; i++){\n\t\t\t\tif( (arr[j][i] == 4) || ( arr[j][i] == 11) ){ // Other values are not valid\n\t\t\t\t\t\n\t\t\t\t\t// Init\n\t\t\t\t\tpx = i; py = j;\n\t\t\t\t\tpaths[pacnt] = {};\n\t\t\t\t\tpaths[pacnt].points = [];\n\t\t\t\t\tpaths[pacnt].boundingbox = [px,py,px,py];\n\t\t\t\t\tpaths[pacnt].holechildren = [];\n\t\t\t\t\tpathfinished = false;\n\t\t\t\t\tpcnt=0;\n\t\t\t\t\tholepath = (arr[j][i]==11);\n\t\t\t\t\tdir = 1;\n\n\t\t\t\t\t// Path points loop\n\t\t\t\t\twhile(!pathfinished){\n\t\t\t\t\t\t\n\t\t\t\t\t\t// New path point\n\t\t\t\t\t\tpaths[pacnt].points[pcnt] = {};\n\t\t\t\t\t\tpaths[pacnt].points[pcnt].x = px-1;\n\t\t\t\t\t\tpaths[pacnt].points[pcnt].y = py-1;\n\t\t\t\t\t\tpaths[pacnt].points[pcnt].t = arr[py][px];\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Bounding box\n\t\t\t\t\t\tif( (px-1) < paths[pacnt].boundingbox[0] ){ paths[pacnt].boundingbox[0] = px-1; }\n\t\t\t\t\t\tif( (px-1) > paths[pacnt].boundingbox[2] ){ paths[pacnt].boundingbox[2] = px-1; }\n\t\t\t\t\t\tif( (py-1) < paths[pacnt].boundingbox[1] ){ paths[pacnt].boundingbox[1] = py-1; }\n\t\t\t\t\t\tif( (py-1) > paths[pacnt].boundingbox[3] ){ paths[pacnt].boundingbox[3] = py-1; }\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Next: look up the replacement, direction and coordinate changes = clear this cell, turn if required, walk forward\n\t\t\t\t\t\tlookuprow = _this.pathscan_combined_lookup[ arr[py][px] ][ dir ];\n\t\t\t\t\t\tarr[py][px] = lookuprow[0]; dir = lookuprow[1]; px += lookuprow[2]; py += lookuprow[3];\n\n\t\t\t\t\t\t// Close path\n\t\t\t\t\t\tif( (px-1 === paths[pacnt].points[0].x ) && ( py-1 === paths[pacnt].points[0].y ) ){\n\t\t\t\t\t\t\tpathfinished = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Discarding paths shorter than pathomit\n\t\t\t\t\t\t\tif( paths[pacnt].points.length < pathomit ){\n\t\t\t\t\t\t\t\tpaths.pop();\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tpaths[pacnt].isholepath = holepath ? true : false;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Finding the parent shape for this hole\n\t\t\t\t\t\t\t\tif(holepath){\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tvar parentidx = 0, parentbbox = [-1,-1,w+1,h+1];\n\t\t\t\t\t\t\t\t\tfor(var parentcnt=0; parentcnt < pacnt; parentcnt++){\n\t\t\t\t\t\t\t\t\t\tif( (!paths[parentcnt].isholepath) &&\n\t\t\t\t\t\t\t\t\t\t\t_this.boundingboxincludes( paths[parentcnt].boundingbox , paths[pacnt].boundingbox ) &&\n\t\t\t\t\t\t\t\t\t\t\t_this.boundingboxincludes( parentbbox , paths[parentcnt].boundingbox ) &&\n\t\t\t\t\t\t\t\t\t\t\t_this.pointinpoly( paths[pacnt].points[0], paths[parentcnt].points )\n\t\t\t\t\t\t\t\t\t\t){\n\t\t\t\t\t\t\t\t\t\t\tparentidx = parentcnt;\n\t\t\t\t\t\t\t\t\t\t\tparentbbox = paths[parentcnt].boundingbox;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tpaths[parentidx].holechildren.push( pacnt );\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}// End of holepath parent finding\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tpacnt++;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}// End of Close path\n\t\t\t\t\t\t\n\t\t\t\t\t\tpcnt++;\n\t\t\t\t\t\t\n\t\t\t\t\t}// End of Path points loop\n\t\t\t\t\t\n\t\t\t\t}// End of Follow path\n\t\t\t\t\n\t\t\t}// End of i loop\n\t\t}// End of j loop\n\t\t\n\t\treturn paths;\n\t},// End of pathscan()\n\t\n\tthis.boundingboxincludes = function( parentbbox, childbbox ){\n\t\treturn ( ( parentbbox[0] < childbbox[0] ) && ( parentbbox[1] < childbbox[1] ) && ( parentbbox[2] > childbbox[2] ) && ( parentbbox[3] > childbbox[3] ) );\n\t},// End of boundingboxincludes()\n\t\n\t// 3. Batch pathscan\n\tthis.batchpathscan = function( layers, pathomit ){\n\t\tvar bpaths = [];\n\t\tfor(var k in layers){\n\t\t\tif(!layers.hasOwnProperty(k)){ continue; }\n\t\t\tbpaths[k] = _this.pathscan( layers[k], pathomit );\n\t\t}\n\t\treturn bpaths;\n\t},\n\t\n\t// 4. interpollating between path points for nodes with 8 directions ( East, SouthEast, S, SW, W, NW, N, NE )\n\tthis.internodes = function( paths, options ){\n\t\tvar ins = [], palen=0, nextidx=0, nextidx2=0, previdx=0, previdx2=0, pacnt, pcnt;\n\t\t\n\t\t// paths loop\n\t\tfor(pacnt=0; pacnt<paths.length; pacnt++){\n\t\t\t\n\t\t\tins[pacnt] = {};\n\t\t\tins[pacnt].points = [];\n\t\t\tins[pacnt].boundingbox = paths[pacnt].boundingbox;\n\t\t\tins[pacnt].holechildren = paths[pacnt].holechildren;\n\t\t\tins[pacnt].isholepath = paths[pacnt].isholepath;\n\t\t\tpalen = paths[pacnt].points.length;\n\t\t\t\n\t\t\t// pathpoints loop\n\t\t\tfor(pcnt=0; pcnt<palen; pcnt++){\n\t\t\t\n\t\t\t\t// next and previous point indexes\n\t\t\t\tnextidx = (pcnt+1)%palen; nextidx2 = (pcnt+2)%palen; previdx = (pcnt-1+palen)%palen; previdx2 = (pcnt-2+palen)%palen;\n\t\t\t\t\n\t\t\t\t// right angle enhance\n\t\t\t\tif( options.rightangleenhance && _this.testrightangle( paths[pacnt], previdx2, previdx, pcnt, nextidx, nextidx2 ) ){\n\t\t\t\t\t\n\t\t\t\t\t// Fix previous direction\n\t\t\t\t\tif(ins[pacnt].points.length > 0){\n\t\t\t\t\t\tins[pacnt].points[ ins[pacnt].points.length-1 ].linesegment = _this.getdirection(\n\t\t\t\t\t\t\t\tins[pacnt].points[ ins[pacnt].points.length-1 ].x,\n\t\t\t\t\t\t\t\tins[pacnt].points[ ins[pacnt].points.length-1 ].y,\n\t\t\t\t\t\t\t\tpaths[pacnt].points[pcnt].x,\n\t\t\t\t\t\t\t\tpaths[pacnt].points[pcnt].y\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// This corner point\n\t\t\t\t\tins[pacnt].points.push({\n\t\t\t\t\t\tx : paths[pacnt].points[pcnt].x,\n\t\t\t\t\t\ty : paths[pacnt].points[pcnt].y,\n\t\t\t\t\t\tlinesegment : _this.getdirection(\n\t\t\t\t\t\t\t\tpaths[pacnt].points[pcnt].x,\n\t\t\t\t\t\t\t\tpaths[pacnt].points[pcnt].y,\n\t\t\t\t\t\t\t\t(( paths[pacnt].points[pcnt].x + paths[pacnt].points[nextidx].x ) /2),\n\t\t\t\t\t\t\t\t(( paths[pacnt].points[pcnt].y + paths[pacnt].points[nextidx].y ) /2)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t}// End of right angle enhance\n\t\t\t\t\n\t\t\t\t// interpolate between two path points\n\t\t\t\tins[pacnt].points.push({\n\t\t\t\t\tx : (( paths[pacnt].points[pcnt].x + paths[pacnt].points[nextidx].x ) /2),\n\t\t\t\t\ty : (( paths[pacnt].points[pcnt].y + paths[pacnt].points[nextidx].y ) /2),\n\t\t\t\t\tlinesegment : _this.getdirection(\n\t\t\t\t\t\t\t(( paths[pacnt].points[pcnt].x + paths[pacnt].points[nextidx].x ) /2),\n\t\t\t\t\t\t\t(( paths[pacnt].points[pcnt].y + paths[pacnt].points[nextidx].y ) /2),\n\t\t\t\t\t\t\t(( paths[pacnt].points[nextidx].x + paths[pacnt].points[nextidx2].x ) /2),\n\t\t\t\t\t\t\t(( paths[pacnt].points[nextidx].y + paths[pacnt].points[nextidx2].y ) /2)\n\t\t\t\t\t\t)\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}// End of pathpoints loop\n\t\t\t\t\t\t\n\t\t}// End of paths loop\n\t\t\n\t\treturn ins;\n\t},// End of internodes()\n\t\n\tthis.testrightangle = function( path, idx1, idx2, idx3, idx4, idx5 ){\n\t\treturn ( (( path.points[idx3].x === path.points[idx1].x) &&\n\t\t\t\t ( path.points[idx3].x === path.points[idx2].x) &&\n\t\t\t\t ( path.points[idx3].y === path.points[idx4].y) &&\n\t\t\t\t ( path.points[idx3].y === path.points[idx5].y)\n\t\t\t\t ) ||\n\t\t\t\t (( path.points[idx3].y === path.points[idx1].y) &&\n\t\t\t\t ( path.points[idx3].y === path.points[idx2].y) &&\n\t\t\t\t ( path.points[idx3].x === path.points[idx4].x) &&\n\t\t\t\t ( path.points[idx3].x === path.points[idx5].x)\n\t\t\t\t )\n\t\t);\n\t},// End of testrightangle()\n\t\n\tthis.getdirection = function( x1, y1, x2, y2 ){\n\t\tvar val = 8;\n\t\tif(x1 < x2){\n\t\t\tif (y1 < y2){ val = 1; }// SouthEast\n\t\t\telse if(y1 > y2){ val = 7; }// NE\n\t\t\telse { val = 0; }// E\n\t\t}else if(x1 > x2){\n\t\t\tif (y1 < y2){ val = 3; }// SW\n\t\t\telse if(y1 > y2){ val = 5; }// NW\n\t\t\telse { val = 4; }// W\n\t\t}else{\n\t\t\tif (y1 < y2){ val = 2; }// S\n\t\t\telse if(y1 > y2){ val = 6; }// N\n\t\t\telse { val = 8; }// center, this should not happen\n\t\t}\n\t\treturn val;\n\t},// End of getdirection()\n\t\n\t// 4. Batch interpollation\n\tthis.batchinternodes = function( bpaths, options ){\n\t\tvar binternodes = [];\n\t\tfor (var k in bpaths) {\n\t\t\tif(!bpaths.hasOwnProperty(k)){ continue; }\n\t\t\tbinternodes[k] = _this.internodes(bpaths[k], options);\n\t\t}\n\t\treturn binternodes;\n\t},\n\t\n\t// 5. tracepath() : recursively trying to fit straight and quadratic spline segments on the 8 direction internode path\n\t\n\t// 5.1. Find sequences of points with only 2 segment types\n\t// 5.2. Fit a straight line on the sequence\n\t// 5.3. If the straight line fails (distance error > ltres), find the point with the biggest error\n\t// 5.4. Fit a quadratic spline through errorpoint (project this to get controlpoint), then measure errors on every point in the sequence\n\t// 5.5. If the spline fails (distance error > qtres), find the point with the biggest error, set splitpoint = fitting point\n\t// 5.6. Split sequence and recursively apply 5.2. - 5.6. to startpoint-splitpoint and splitpoint-endpoint sequences\n\t\n\tthis.tracepath = function( path, ltres, qtres ){\n\t\tvar pcnt=0, segtype1, segtype2, seqend, smp = {};\n\t\tsmp.segments = [];\n\t\tsmp.boundingbox = path.boundingbox;\n\t\tsmp.holechildren = path.holechildren;\n\t\tsmp.isholepath = path.isholepath;\n\t\t\n\t\twhile(pcnt < path.points.length){\n\t\t\t// 5.1. Find sequences of points with only 2 segment types\n\t\t\tsegtype1 = path.points[pcnt].linesegment; segtype2 = -1; seqend=pcnt+1;\n\t\t\twhile(\n\t\t\t\t((path.points[seqend].linesegment === segtype1) || (path.points[seqend].linesegment === segtype2) || (segtype2 === -1))\n\t\t\t\t&& (seqend < path.points.length-1) ){\n\t\t\t\t\n\t\t\t\tif((path.points[seqend].linesegment!==segtype1) && (segtype2===-1)){ segtype2 = path.points[seqend].linesegment; }\n\t\t\t\tseqend++;\n\t\t\t\t\n\t\t\t}\n\t\t\tif(seqend === path.points.length-1){ seqend = 0; }\n\n\t\t\t// 5.2. - 5.6. Split sequence and recursively apply 5.2. - 5.6. to startpoint-splitpoint and splitpoint-endpoint sequences\n\t\t\tsmp.segments = smp.segments.concat( _this.fitseq(path, ltres, qtres, pcnt, seqend) );\n\t\t\t\n\t\t\t// forward pcnt;\n\t\t\tif(seqend>0){ pcnt = seqend; }else{ pcnt = path.points.length; }\n\t\t\t\n\t\t}// End of pcnt loop\n\t\t\n\t\treturn smp;\n\t},// End of tracepath()\n\t\t\n\t// 5.2. - 5.6. recursively fitting a straight or quadratic line segment on this sequence of path nodes,\n\t// called from tracepath()\n\tthis.fitseq = function( path, ltres, qtres, seqstart, seqend ){\n\t\t// return if invalid seqend\n\t\tif( (seqend>path.points.length) || (seqend<0) ){ return []; }\n\t\t// variables\n\t\tvar errorpoint=seqstart, errorval=0, curvepass=true, px, py, dist2;\n\t\tvar tl = (seqend-seqstart); if(tl<0){ tl += path.points.length; }\n\t\tvar vx = (path.points[seqend].x-path.points[seqstart].x) / tl,\n\t\t\tvy = (path.points[seqend].y-path.points[seqstart].y) / tl;\n\t\t\n\t\t// 5.2. Fit a straight line on the sequence\n\t\tvar pcnt = (seqstart+1) % path.points.length, pl;\n\t\twhile(pcnt != seqend){\n\t\t\tpl = pcnt-seqstart; if(pl<0){ pl += path.points.length; }\n\t\t\tpx = path.points[seqstart].x + vx * pl; py = path.points[seqstart].y + vy * pl;\n\t\t\tdist2 = (path.points[pcnt].x-px)*(path.points[pcnt].x-px) + (path.points[pcnt].y-py)*(path.points[pcnt].y-py);\n\t\t\tif(dist2>ltres){curvepass=false;}\n\t\t\tif(dist2>errorval){ errorpoint=pcnt; errorval=dist2; }\n\t\t\tpcnt = (pcnt+1)%path.points.length;\n\t\t}\n\t\t// return straight line if fits\n\t\tif(curvepass){ return [{ type:'L', x1:path.points[seqstart].x, y1:path.points[seqstart].y, x2:path.points[seqend].x, y2:path.points[seqend].y }]; }\n\t\t\n\t\t// 5.3. If the straight line fails (distance error>ltres), find the point with the biggest error\n\t\tvar fitpoint = errorpoint; curvepass = true; errorval = 0;\n\t\t\n\t\t// 5.4. Fit a quadratic spline through this point, measure errors on every point in the sequence\n\t\t// helpers and projecting to get control point\n\t\tvar t=(fitpoint-seqstart)/tl, t1=(1-t)*(1-t), t2=2*(1-t)*t, t3=t*t;\n\t\tvar cpx = (t1*path.points[seqstart].x + t3*path.points[seqend].x - path.points[fitpoint].x)/-t2 ,\n\t\t\tcpy = (t1*path.points[seqstart].y + t3*path.points[seqend].y - path.points[fitpoint].y)/-t2 ;\n\t\t\n\t\t// Check every point\n\t\tpcnt = seqstart+1;\n\t\twhile(pcnt != seqend){\n\t\t\tt=(pcnt-seqstart)/tl; t1=(1-t)*(1-t); t2=2*(1-t)*t; t3=t*t;\n\t\t\tpx = t1 * path.points[seqstart].x + t2 * cpx + t3 * path.points[seqend].x;\n\t\t\tpy = t1 * path.points[seqstart].y + t2 * cpy + t3 * path.points[seqend].y;\n\t\t\t\n\t\t\tdist2 = (path.points[pcnt].x-px)*(path.points[pcnt].x-px) + (path.points[pcnt].y-py)*(path.points[pcnt].y-py);\n\t\t\t\n\t\t\tif(dist2>qtres){curvepass=false;}\n\t\t\tif(dist2>errorval){ errorpoint=pcnt; errorval=dist2; }\n\t\t\tpcnt = (pcnt+1)%path.points.length;\n\t\t}\n\t\t// return spline if fits\n\t\tif(curvepass){ return [{ type:'Q', x1:path.points[seqstart].x, y1:path.points[seqstart].y, x2:cpx, y2:cpy, x3:path.points[seqend].x, y3:path.points[seqend].y }]; }\n\t\t// 5.5. If the spline fails (distance error>qtres), find the point with the biggest error\n\t\tvar splitpoint = fitpoint; // Earlier: Math.floor((fitpoint + errorpoint)/2);\n\t\t\n\t\t// 5.6. Split sequence and recursively apply 5.2. - 5.6. to startpoint-splitpoint and splitpoint-endpoint sequences\n\t\treturn _this.fitseq( path, ltres, qtres, seqstart, splitpoint ).concat(\n\t\t\t\t_this.fitseq( path, ltres, qtres, splitpoint, seqend ) );\n\t\t\n\t},// End of fitseq()\n\t\n\t// 5. Batch tracing paths\n\tthis.batchtracepaths = function(internodepaths,ltres,qtres){\n\t\tvar btracedpaths = [];\n\t\tfor(var k in internodepaths){\n\t\t\tif(!internodepaths.hasOwnProperty(k)){ continue; }\n\t\t\tbtracedpaths.push( _this.tracepath(internodepaths[k],ltres,qtres) );\n\t\t}\n\t\treturn btracedpaths;\n\t},\n\t\n\t// 5. Batch tracing layers\n\tthis.batchtracelayers = function(binternodes, ltres, qtres){\n\t\tvar btbis = [];\n\t\tfor(var k in binternodes){\n\t\t\tif(!binternodes.hasOwnProperty(k)){ continue; }\n\t\t\tbtbis[k] = _this.batchtracepaths(binternodes[k], ltres, qtres);\n\t\t}\n\t\treturn btbis;\n\t},\n\t\n\t////////////////////////////////////////////////////////////\n\t//\n\t// SVG Drawing functions\n\t//\n\t////////////////////////////////////////////////////////////\n\t\n\t// Rounding to given decimals https://stackoverflow.com/questions/11832914/round-to-at-most-2-decimal-places-in-javascript\n\tthis.roundtodec = function(val,places){ return +val.toFixed(places); },\n\t\n\t// Getting SVG path element string from a traced path\n\tthis.svgpathstring = function( tracedata, lnum, pathnum, options ){\n\t\t\n\t\tvar layer = tracedata.layers[lnum], smp = layer[pathnum], str='', pcnt;\n\t\t\n\t\t// Line filter\n\t\tif(options.linefilter && (smp.segments.length < 3)){ return str; }\n\t\t\n\t\t// Starting path element, desc contains layer and path number\n\t\tstr = '<path '+\n\t\t\t( options.desc ? ('desc=\"l '+lnum+' p '+pathnum+'\" ') : '' ) +\n\t\t\t_this.tosvgcolorstr(tracedata.palette[lnum], options) +\n\t\t\t'd=\"';\n\t\t\n\t\t// Creating non-hole path string\n\t\tif( options.roundcoords === -1 ){\n\t\t\tstr += 'M '+ smp.segments[0].x1 * options.scale +' '+ smp.segments[0].y1 * options.scale +' ';\n\t\t\tfor(pcnt=0; pcnt<smp.segments.length; pcnt++){\n\t\t\t\tstr += smp.segments[pcnt].type +' '+ smp.segments[pcnt].x2 * options.scale +' '+ smp.segments[pcnt].y2 * options.scale +' ';\n\t\t\t\tif(smp.segments[pcnt].hasOwnProperty('x3')){\n\t\t\t\t\tstr += smp.segments[pcnt].x3 * options.scale +' '+ smp.segments[pcnt].y3 * options.scale +' ';\n\t\t\t\t}\n\t\t\t}\n\t\t\tstr += 'Z ';\n\t\t}else{\n\t\t\tstr += 'M '+ _this.roundtodec( smp.segments[0].x1 * options.scale, options.roundcoords ) +' '+ _this.roundtodec( smp.segments[0].y1 * options.scale, options.roundcoords ) +' ';\n\t\t\tfor(pcnt=0; pcnt<smp.segments.length; pcnt++){\n\t\t\t\tstr += smp.segments[pcnt].type +' '+ _this.roundtodec( smp.segments[pcnt].x2 * options.scale, options.roundcoords ) +' '+ _this.roundtodec( smp.segments[pcnt].y2 * options.scale, options.roundcoords ) +' ';\n\t\t\t\tif(smp.segments[pcnt].hasOwnProperty('x3')){\n\t\t\t\t\tstr += _this.roundtodec( smp.segments[pcnt].x3 * options.scale, options.roundcoords ) +' '+ _this.roundtodec( smp.segments[pcnt].y3 * options.scale, options.roundcoords ) +' ';\n\t\t\t\t}\n\t\t\t}\n\t\t\tstr += 'Z ';\n\t\t}// End of creating non-hole path string\n\t\t\n\t\t// Hole children\n\t\tfor( var hcnt=0; hcnt < smp.holechildren.length; hcnt++){\n\t\t\tvar hsmp = layer[ smp.holechildren[hcnt] ];\n\t\t\t// Creating hole path string\n\t\t\tif( options.roundcoords === -1 ){\n\t\t\t\t\n\t\t\t\tif(hsmp.segments[ hsmp.segments.length-1 ].hasOwnProperty('x3')){\n\t\t\t\t\tstr += 'M '+ hsmp.segments[ hsmp.segments.length-1 ].x3 * options.scale +' '+ hsmp.segments[ hsmp.segments.length-1 ].y3 * options.scale +' ';\n\t\t\t\t}else{\n\t\t\t\t\tstr += 'M '+ hsmp.segments[ hsmp.segments.length-1 ].x2 * options.scale +' '+ hsmp.segments[ hsmp.segments.length-1 ].y2 * options.scale +' ';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(pcnt = hsmp.segments.length-1; pcnt >= 0; pcnt--){\n\t\t\t\t\tstr += hsmp.segments[pcnt].type +' ';\n\t\t\t\t\tif(hsmp.segments[pcnt].hasOwnProperty('x3')){\n\t\t\t\t\t\tstr += hsmp.segments[pcnt].x2 * options.scale +' '+ hsmp.segments[pcnt].y2 * options.scale +' ';\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tstr += hsmp.segments[pcnt].x1 * options.scale +' '+ hsmp.segments[pcnt].y1 * options.scale +' ';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tif(hsmp.segments[ hsmp.segments.length-1 ].hasOwnProperty('x3')){\n\t\t\t\t\tstr += 'M '+ _this.roundtodec( hsmp.segments[ hsmp.segments.length-1 ].x3 * options.scale ) +' '+ _this.roundtodec( hsmp.segments[ hsmp.segments.length-1 ].y3 * options.scale ) +' ';\n\t\t\t\t}else{\n\t\t\t\t\tstr += 'M '+ _this.roundtodec( hsmp.segments[ hsmp.segments.length-1 ].x2 * options.scale ) +' '+ _this.roundtodec( hsmp.segments[ hsmp.segments.length-1 ].y2 * options.scale ) +' ';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(pcnt = hsmp.segments.length-1; pcnt >= 0; pcnt--){\n\t\t\t\t\tstr += hsmp.segments[pcnt].type +' ';\n\t\t\t\t\tif(hsmp.segments[pcnt].hasOwnProperty('x3')){\n\t\t\t\t\t\tstr += _this.roundtodec( hsmp.segments[pcnt].x2 * options.scale ) +' '+ _this.roundtodec( hsmp.segments[pcnt].y2 * options.scale ) +' ';\n\t\t\t\t\t}\n\t\t\t\t\tstr += _this.roundtodec( hsmp.segments[pcnt].x1 * options.scale ) +' '+ _this.roundtodec( hsmp.segments[pcnt].y1 * options.scale ) +' ';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t}// End of creating hole path string\n\t\t\t\n\t\t\tstr += 'Z '; // Close path\n\t\t\t\n\t\t}// End of holepath check\n\t\t\n\t\t// Closing path element\n\t\tstr += '\" />';\n\t\t\n\t\t// Rendering control points\n\t\tif(options.lcpr || options.qcpr){\n\t\t\tfor(pcnt=0; pcnt<smp.segments.length; pcnt++){\n\t\t\t\tif( smp.segments[pcnt].hasOwnProperty('x3') && options.qcpr ){\n\t\t\t\t\tstr += '<circle cx=\"'+ smp.segments[pcnt].x2 * options.scale +'\" cy=\"'+ smp.segments[pcnt].y2 * options.scale +'\" r=\"'+ options.qcpr +'\" fill=\"cyan\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t\tstr += '<circle cx=\"'+ smp.segments[pcnt].x3 * options.scale +'\" cy=\"'+ smp.segments[pcnt].y3 * options.scale +'\" r=\"'+ options.qcpr +'\" fill=\"white\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t\tstr += '<line x1=\"'+ smp.segments[pcnt].x1 * options.scale +'\" y1=\"'+ smp.segments[pcnt].y1 * options.scale +'\" x2=\"'+ smp.segments[pcnt].x2 * options.scale +'\" y2=\"'+ smp.segments[pcnt].y2 * options.scale +'\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"cyan\" />';\n\t\t\t\t\tstr += '<line x1=\"'+ smp.segments[pcnt].x2 * options.scale +'\" y1=\"'+ smp.segments[pcnt].y2 * options.scale +'\" x2=\"'+ smp.segments[pcnt].x3 * options.scale +'\" y2=\"'+ smp.segments[pcnt].y3 * options.scale +'\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"cyan\" />';\n\t\t\t\t}\n\t\t\t\tif( (!smp.segments[pcnt].hasOwnProperty('x3')) && options.lcpr){\n\t\t\t\t\tstr += '<circle cx=\"'+ smp.segments[pcnt].x2 * options.scale +'\" cy=\"'+ smp.segments[pcnt].y2 * options.scale +'\" r=\"'+ options.lcpr +'\" fill=\"white\" stroke-width=\"'+ options.lcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Hole children control points\n\t\t\tfor( var hcnt=0; hcnt < smp.holechildren.length; hcnt++){\n\t\t\t\tvar hsmp = layer[ smp.holechildren[hcnt] ];\n\t\t\t\tfor(pcnt=0; pcnt<hsmp.segments.length; pcnt++){\n\t\t\t\t\tif( hsmp.segments[pcnt].hasOwnProperty('x3') && options.qcpr ){\n\t\t\t\t\t\tstr += '<circle cx=\"'+ hsmp.segments[pcnt].x2 * options.scale +'\" cy=\"'+ hsmp.segments[pcnt].y2 * options.scale +'\" r=\"'+ options.qcpr +'\" fill=\"cyan\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t\t\tstr += '<circle cx=\"'+ hsmp.segments[pcnt].x3 * options.scale +'\" cy=\"'+ hsmp.segments[pcnt].y3 * options.scale +'\" r=\"'+ options.qcpr +'\" fill=\"white\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t\t\tstr += '<line x1=\"'+ hsmp.segments[pcnt].x1 * options.scale +'\" y1=\"'+ hsmp.segments[pcnt].y1 * options.scale +'\" x2=\"'+ hsmp.segments[pcnt].x2 * options.scale +'\" y2=\"'+ hsmp.segments[pcnt].y2 * options.scale +'\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"cyan\" />';\n\t\t\t\t\t\tstr += '<line x1=\"'+ hsmp.segments[pcnt].x2 * options.scale +'\" y1=\"'+ hsmp.segments[pcnt].y2 * options.scale +'\" x2=\"'+ hsmp.segments[pcnt].x3 * options.scale +'\" y2=\"'+ hsmp.segments[pcnt].y3 * options.scale +'\" stroke-width=\"'+ options.qcpr * 0.2 +'\" stroke=\"cyan\" />';\n\t\t\t\t\t}\n\t\t\t\t\tif( (!hsmp.segments[pcnt].hasOwnProperty('x3')) && options.lcpr){\n\t\t\t\t\t\tstr += '<circle cx=\"'+ hsmp.segments[pcnt].x2 * options.scale +'\" cy=\"'+ hsmp.segments[pcnt].y2 * options.scale +'\" r=\"'+ options.lcpr +'\" fill=\"white\" stroke-width=\"'+ options.lcpr * 0.2 +'\" stroke=\"black\" />';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}// End of Rendering control points\n\t\t\t\n\t\treturn str;\n\t\t\n\t},// End of svgpathstring()\n\t\n\t// Converting tracedata to an SVG string\n\tthis.getsvgstring = function( tracedata, options ){\n\t\t\n\t\toptions = _this.checkoptions(options);\n\t\t\n\t\tvar w = tracedata.width * options.scale, h = tracedata.height * options.scale;\n\t\t\n\t\t// SVG start\n\t\tvar svgstr = '<svg ' + (options.viewbox ? ('viewBox=\"0 0 '+w+' '+h+'\" ') : ('width=\"'+w+'\" height=\"'+h+'\" ')) +\n\t\t\t'version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" desc=\"Created with imagetracer.js version '+_this.versionnumber+'\" >';\n\n\t\t// Drawing: Layers and Paths loops\n\t\tfor(var lcnt=0; lcnt < tracedata.layers.length; lcnt++){\n\t\t\tfor(var pcnt=0; pcnt < tracedata.layers[lcnt].length; pcnt++){\n\t\t\t\t\n\t\t\t\t// Adding SVG <path> string\n\t\t\t\tif( !tracedata.layers[lcnt][pcnt].isholepath ){\n\t\t\t\t\tsvgstr += _this.svgpathstring( tracedata, lcnt, pcnt, options );\n\t\t\t\t}\n\t\t\t\t\t\n\t\t\t}// End of paths loop\n\t\t}// End of layers loop\n\t\t\n\t\t// SVG End\n\t\tsvgstr+='</svg>';\n\t\t\n\t\treturn svgstr;\n\t\t\n\t},// End of getsvgstring()\n\t\n\t// Comparator for numeric Array.sort\n\tthis.compareNumbers = function(a,b){ return a - b; },\n\t\n\t// Convert color object to rgba string\n\tthis.torgbastr = function(c){ return 'rgba('+c.r+','+c.g+','+c.b+','+c.a+')'; },\n\t\n\t// Convert color object to SVG color string\n\tthis.tosvgcolorstr = function(c, options){\n\t\treturn 'fill=\"rgb('+c.r+','+c.g+','+c.b+')\" stroke=\"rgb('+c.r+','+c.g+','+c.b+')\" stroke-width=\"'+options.strokewidth+'\" opacity=\"'+c.a/255.0+'\" ';\n\t},\n\t\n\t// Helper function: Appending an <svg> element to a container from an svgstring\n\tthis.appendSVGString = function(svgstr,parentid){\n\t\tvar div;\n\t\tif(parentid){\n\t\t\tdiv = document.getElementById(parentid);\n\t\t\tif(!div){\n\t\t\t\tdiv = document.createElement('div');\n\t\t\t\tdiv.id = parentid;\n\t\t\t\tdocument.body.appendChild(div);\n\t\t\t}\n\t\t}else{\n\t\t\tdiv = document.createElement('div');\n\t\t\tdocument.body.appendChild(div);\n\t\t}\n\t\tdiv.innerHTML += svgstr;\n\t},\n\t\n\t////////////////////////////////////////////////////////////\n\t//\n\t// Canvas functions\n\t//\n\t////////////////////////////////////////////////////////////\n\t\n\t// Gaussian kernels for blur\n\tthis.gks = [ [0.27901,0.44198,0.27901], [0.135336,0.228569,0.272192,0.228569,0.135336], [0.086776,0.136394,0.178908,0.195843,0.178908,0.136394,0.086776],\n\t [0.063327,0.093095,0.122589,0.144599,0.152781,0.144599,0.122589,0.093095,0.063327], [0.049692,0.069304,0.089767,0.107988,0.120651,0.125194,0.120651,0.107988,0.089767,0.069304,0.049692] ],\n\t\n\t// Selective Gaussian blur for preprocessing\n\tthis.blur = function(imgd,radius,delta){\n\t\tvar i,j,k,d,idx,racc,gacc,bacc,aacc,wacc;\n\t\t\n\t\t// new ImageData\n\t\tvar imgd2 = { width:imgd.width, height:imgd.height, data:[] };\n\t\t\n\t\t// radius and delta limits, this kernel\n\t\tradius = Math.floor(radius); if(radius<1){ return imgd; } if(radius>5){ radius = 5; } delta = Math.abs( delta ); if(delta>1024){ delta = 1024; }\n\t\tvar thisgk = _this.gks[radius-1];\n\t\t\n\t\t// loop through all pixels, horizontal blur\n\t\tfor( j=0; j < imgd.height; j++ ){\n\t\t\tfor( i=0; i < imgd.width; i++ ){\n\n\t\t\t\tracc = 0; gacc = 0; bacc = 0; aacc = 0; wacc = 0;\n\t\t\t\t// gauss kernel loop\n\t\t\t\tfor( k = -radius; k < radius+1; k++){\n\t\t\t\t\t// add weighted color values\n\t\t\t\t\tif( (i+k > 0) && (i+k < imgd.width) ){\n\t\t\t\t\t\tidx = (j*imgd.width+i+k)*4;\n\t\t\t\t\t\tracc += imgd.data[idx ] * thisgk[k+radius];\n\t\t\t\t\t\tgacc += imgd.data[idx+1] * thisgk[k+radius];\n\t\t\t\t\t\tbacc += imgd.data[idx+2] * thisgk[k+radius];\n\t\t\t\t\t\taacc += imgd.data[idx+3] * thisgk[k+radius];\n\t\t\t\t\t\twacc += thisgk[k+radius];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// The new pixel\n\t\t\t\tidx = (j*imgd.width+i)*4;\n\t\t\t\timgd2.data[idx ] = Math.floor(racc / wacc);\n\t\t\t\timgd2.data[idx+1] = Math.floor(gacc / wacc);\n\t\t\t\timgd2.data[idx+2] = Math.floor(bacc / wacc);\n\t\t\t\timgd2.data[idx+3] = Math.floor(aacc / wacc);\n\t\t\t\t\n\t\t\t}// End of width loop\n\t\t}// End of horizontal blur\n\t\t\n\t\t// copying the half blurred imgd2\n\t\tvar himgd = new Uint8ClampedArray(imgd2.data);\n\t\t\n\t\t// loop through all pixels, vertical blur\n\t\tfor( j=0; j < imgd.height; j++ ){\n\t\t\tfor( i=0; i < imgd.width; i++ ){\n\n\t\t\t\tracc = 0; gacc = 0; bacc = 0; aacc = 0; wacc = 0;\n\t\t\t\t// gauss kernel loop\n\t\t\t\tfor( k = -radius; k < radius+1; k++){\n\t\t\t\t\t// add weighted color values\n\t\t\t\t\tif( (j+k > 0) && (j+k < imgd.height) ){\n\t\t\t\t\t\tidx = ((j+k)*imgd.width+i)*4;\n\t\t\t\t\t\tracc += himgd[idx ] * thisgk[k+radius];\n\t\t\t\t\t\tgacc += himgd[idx+1] * thisgk[k+radius];\n\t\t\t\t\t\tbacc += himgd[idx+2] * thisgk[k+radius];\n\t\t\t\t\t\taacc += himgd[idx+3] * thisgk[k+radius];\n\t\t\t\t\t\twacc += thisgk[k+radius];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// The new pixel\n\t\t\t\tidx = (j*imgd.width+i)*4;\n\t\t\t\timgd2.data[idx ] = Math.floor(racc / wacc);\n\t\t\t\timgd2.data[idx+1] = Math.floor(gacc / wacc);\n\t\t\t\timgd2.data[idx+2] = Math.floor(bacc / wacc);\n\t\t\t\timgd2.data[idx+3] = Math.floor(aacc / wacc);\n\t\t\t\t\n\t\t\t}// End of width loop\n\t\t}// End of vertical blur\n\t\t\n\t\t// Selective blur: loop through all pixels\n\t\tfor( j=0; j < imgd.height; j++ ){\n\t\t\tfor( i=0; i < imgd.width; i++ ){\n\t\t\t\t\n\t\t\t\tidx = (j*imgd.width+i)*4;\n\t\t\t\t// d is the difference between the blurred and the original pixel\n\t\t\t\td = Math.abs(imgd2.data[idx ] - imgd.data[idx ]) + Math.abs(imgd2.data[idx+1] - imgd.data[idx+1]) +\n\t\t\t\t\tMath.abs(imgd2.data[idx+2] - imgd.data[idx+2]) + Math.abs(imgd2.data[idx+3] - imgd.data[idx+3]);\n\t\t\t\t// selective blur: if d>delta, put the original pixel back\n\t\t\t\tif(d>delta){\n\t\t\t\t\timgd2.data[idx ] = imgd.data[idx ];\n\t\t\t\t\timgd2.data[idx+1] = imgd.data[idx+1];\n\t\t\t\t\timgd2.data[idx+2] = imgd.data[idx+2];\n\t\t\t\t\timgd2.data[idx+3] = imgd.data[idx+3];\n\t\t\t\t}\n\t\t\t}\n\t\t}// End of Selective blur\n\t\t\n\t\treturn imgd2;\n\t\t\n\t},// End of blur()\n\t\n\t// Helper function: loading an image from a URL, then executing callback with canvas as argument\n\tthis.loadImage = function(url,callback,options){\n\t\tvar img = new Image();\n\t\tif(options && options.corsenabled){ img.crossOrigin = 'Anonymous'; }\n\t\timg.onload = function(){\n\t\t\tvar canvas = document.createElement('canvas');\n\t\t\tcanvas.width = img.width;\n\t\t\tcanvas.height = img.height;\n\t\t\tvar context = canvas.getContext('2d');\n\t\t\tcontext.drawImage(img,0,0);\n\t\t\tcallback(canvas);\n\t\t};\n\t\timg.src = url;\n\t},\n\t\n\t// Helper function: getting ImageData from a canvas\n\tthis.getImgdata = function(canvas){\n\t\tvar context = canvas.getContext('2d');\n\t\treturn context.getImageData(0,0,canvas.width,canvas.height);\n\t},\n\t\n\t// Special palette to use with drawlayers()\n\tthis.specpalette = [\n\t\t{r:0,g:0,b:0,a:255}, {r:128,g:128,b:128,a:255}, {r:0,g:0,b:128,a:255}, {r:64,g:64,b:128,a:255},\n\t\t{r:192,g:192,b:192,a:255}, {r:255,g:255,b:255,a:255}, {r:128,g:128,b:192,a:255}, {r:0,g:0,b:192,a:255},\n\t\t{r:128,g:0,b:0,a:255}, {r:128,g:64,b:64,a:255}, {r:128,g:0,b:128,a:255}, {r:168,g:168,b:168,a:255},\n\t\t{r:192,g:128,b:128,a:255}, {r:192,g:0,b:0,a:255}, {r:255,g:255,b:255,a:255}, {r:0,g:128,b:0,a:255}\n\t],\n\t\n\t// Helper function: Drawing all edge node layers into a container\n\tthis.drawLayers = function(layers,palette,scale,parentid){\n\t\tscale = scale||1;\n\t\tvar w,h,i,j,k;\n\t\t\n\t\t// Preparing container\n\t\tvar div;\n\t\tif(parentid){\n\t\t\tdiv = document.getElementById(parentid);\n\t\t\tif(!div){\n\t\t\t\tdiv = document.createElement('div');\n\t\t\t\tdiv.id = parentid;\n\t\t\t\tdocument.body.appendChild(div);\n\t\t\t}\n\t\t}else{\n\t\t\tdiv = document.createElement('div');\n\t\t\tdocument.body.appendChild(div);\n\t\t}\n\t\t\n\t\t// Layers loop\n\t\tfor (k in layers) {\n\t\t\tif(!layers.hasOwnProperty(k)){ continue; }\n\t\t\t\n\t\t\t// width, height\n\t\t\tw=layers[k][0].length; h=layers[k].length;\n\t\t\t\n\t\t\t// Creating new canvas for every layer\n\t\t\tvar canvas = document.createElement('canvas'); canvas.width=w*scale; canvas.height=h*scale;\n\t\t\tvar context = canvas.getContext('2d');\n\t\t\t\n\t\t\t// Drawing\n\t\t\tfor(j=0; j<h; j++){\n\t\t\t\tfor(i=0; i<w; i++){\n\t\t\t\t\tcontext.fillStyle = _this.torgbastr(palette[ layers[k][j][i]%palette.length ]);\n\t\t\t\t\tcontext.fillRect(i*scale,j*scale,scale,scale);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Appending canvas to container\n\t\t\tdiv.appendChild(canvas);\n\t\t}// End of Layers loop\n\t}// End of drawlayers\n\t\n\t;// End of function list\n\t\n}// End of ImageTracer object\n\n// export as AMD module / Node module / browser or worker variable\nif(typeof define === 'function' && define.amd){\n\tdefine(function() { return new ImageTracer(); });\n}else if(typeof module !== 'undefined'){\n\tmodule.exports = new ImageTracer();\n}else if(typeof self !== 'undefined'){\n\tself.ImageTracer = new ImageTracer();\n}else window.ImageTracer = new ImageTracer();\n\n})();"},"lineCount":1218}},"error":null,"hash":"19ee2a98573ff53c0d3166a40056fb72","cacheData":{"env":{}}}