pdf-creator-node 1.4.0 → 1.4.1

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 (1238) hide show
  1. package/package.json +2 -2
  2. package/.DS_Store +0 -0
  3. package/example/index.js +0 -42
  4. package/example/node_modules/ajv/.tonic_example.js +0 -20
  5. package/example/node_modules/ajv/LICENSE +0 -22
  6. package/example/node_modules/ajv/README.md +0 -1344
  7. package/example/node_modules/ajv/dist/ajv.bundle.js +0 -7165
  8. package/example/node_modules/ajv/dist/ajv.min.js +0 -3
  9. package/example/node_modules/ajv/dist/ajv.min.js.map +0 -1
  10. package/example/node_modules/ajv/lib/.DS_Store +0 -0
  11. package/example/node_modules/ajv/lib/ajv.d.ts +0 -389
  12. package/example/node_modules/ajv/lib/ajv.js +0 -497
  13. package/example/node_modules/ajv/lib/cache.js +0 -26
  14. package/example/node_modules/ajv/lib/compile/async.js +0 -90
  15. package/example/node_modules/ajv/lib/compile/equal.js +0 -5
  16. package/example/node_modules/ajv/lib/compile/error_classes.js +0 -34
  17. package/example/node_modules/ajv/lib/compile/formats.js +0 -149
  18. package/example/node_modules/ajv/lib/compile/index.js +0 -387
  19. package/example/node_modules/ajv/lib/compile/resolve.js +0 -270
  20. package/example/node_modules/ajv/lib/compile/rules.js +0 -66
  21. package/example/node_modules/ajv/lib/compile/schema_obj.js +0 -9
  22. package/example/node_modules/ajv/lib/compile/ucs2length.js +0 -20
  23. package/example/node_modules/ajv/lib/compile/util.js +0 -274
  24. package/example/node_modules/ajv/lib/data.js +0 -49
  25. package/example/node_modules/ajv/lib/dot/_limit.jst +0 -104
  26. package/example/node_modules/ajv/lib/dot/_limitItems.jst +0 -10
  27. package/example/node_modules/ajv/lib/dot/_limitLength.jst +0 -10
  28. package/example/node_modules/ajv/lib/dot/_limitProperties.jst +0 -10
  29. package/example/node_modules/ajv/lib/dot/allOf.jst +0 -34
  30. package/example/node_modules/ajv/lib/dot/anyOf.jst +0 -48
  31. package/example/node_modules/ajv/lib/dot/coerce.def +0 -61
  32. package/example/node_modules/ajv/lib/dot/comment.jst +0 -9
  33. package/example/node_modules/ajv/lib/dot/const.jst +0 -11
  34. package/example/node_modules/ajv/lib/dot/contains.jst +0 -57
  35. package/example/node_modules/ajv/lib/dot/custom.jst +0 -191
  36. package/example/node_modules/ajv/lib/dot/defaults.def +0 -47
  37. package/example/node_modules/ajv/lib/dot/definitions.def +0 -199
  38. package/example/node_modules/ajv/lib/dot/dependencies.jst +0 -80
  39. package/example/node_modules/ajv/lib/dot/enum.jst +0 -30
  40. package/example/node_modules/ajv/lib/dot/errors.def +0 -194
  41. package/example/node_modules/ajv/lib/dot/format.jst +0 -106
  42. package/example/node_modules/ajv/lib/dot/if.jst +0 -75
  43. package/example/node_modules/ajv/lib/dot/items.jst +0 -100
  44. package/example/node_modules/ajv/lib/dot/missing.def +0 -39
  45. package/example/node_modules/ajv/lib/dot/multipleOf.jst +0 -20
  46. package/example/node_modules/ajv/lib/dot/not.jst +0 -43
  47. package/example/node_modules/ajv/lib/dot/oneOf.jst +0 -54
  48. package/example/node_modules/ajv/lib/dot/pattern.jst +0 -14
  49. package/example/node_modules/ajv/lib/dot/properties.jst +0 -244
  50. package/example/node_modules/ajv/lib/dot/propertyNames.jst +0 -54
  51. package/example/node_modules/ajv/lib/dot/ref.jst +0 -85
  52. package/example/node_modules/ajv/lib/dot/required.jst +0 -108
  53. package/example/node_modules/ajv/lib/dot/uniqueItems.jst +0 -62
  54. package/example/node_modules/ajv/lib/dot/validate.jst +0 -282
  55. package/example/node_modules/ajv/lib/dotjs/README.md +0 -3
  56. package/example/node_modules/ajv/lib/dotjs/_limit.js +0 -157
  57. package/example/node_modules/ajv/lib/dotjs/_limitItems.js +0 -77
  58. package/example/node_modules/ajv/lib/dotjs/_limitLength.js +0 -82
  59. package/example/node_modules/ajv/lib/dotjs/_limitProperties.js +0 -77
  60. package/example/node_modules/ajv/lib/dotjs/allOf.js +0 -43
  61. package/example/node_modules/ajv/lib/dotjs/anyOf.js +0 -74
  62. package/example/node_modules/ajv/lib/dotjs/comment.js +0 -14
  63. package/example/node_modules/ajv/lib/dotjs/const.js +0 -56
  64. package/example/node_modules/ajv/lib/dotjs/contains.js +0 -82
  65. package/example/node_modules/ajv/lib/dotjs/custom.js +0 -228
  66. package/example/node_modules/ajv/lib/dotjs/dependencies.js +0 -168
  67. package/example/node_modules/ajv/lib/dotjs/enum.js +0 -66
  68. package/example/node_modules/ajv/lib/dotjs/format.js +0 -150
  69. package/example/node_modules/ajv/lib/dotjs/if.js +0 -104
  70. package/example/node_modules/ajv/lib/dotjs/index.js +0 -33
  71. package/example/node_modules/ajv/lib/dotjs/items.js +0 -141
  72. package/example/node_modules/ajv/lib/dotjs/multipleOf.js +0 -77
  73. package/example/node_modules/ajv/lib/dotjs/not.js +0 -84
  74. package/example/node_modules/ajv/lib/dotjs/oneOf.js +0 -73
  75. package/example/node_modules/ajv/lib/dotjs/pattern.js +0 -75
  76. package/example/node_modules/ajv/lib/dotjs/properties.js +0 -330
  77. package/example/node_modules/ajv/lib/dotjs/propertyNames.js +0 -82
  78. package/example/node_modules/ajv/lib/dotjs/ref.js +0 -124
  79. package/example/node_modules/ajv/lib/dotjs/required.js +0 -270
  80. package/example/node_modules/ajv/lib/dotjs/uniqueItems.js +0 -86
  81. package/example/node_modules/ajv/lib/dotjs/validate.js +0 -494
  82. package/example/node_modules/ajv/lib/keyword.js +0 -178
  83. package/example/node_modules/ajv/lib/refs/data.json +0 -17
  84. package/example/node_modules/ajv/lib/refs/json-schema-draft-04.json +0 -149
  85. package/example/node_modules/ajv/lib/refs/json-schema-draft-06.json +0 -154
  86. package/example/node_modules/ajv/lib/refs/json-schema-draft-07.json +0 -168
  87. package/example/node_modules/ajv/lib/refs/json-schema-secure.json +0 -94
  88. package/example/node_modules/ajv/package.json +0 -129
  89. package/example/node_modules/ajv/scripts/.eslintrc.yml +0 -3
  90. package/example/node_modules/ajv/scripts/bundle.js +0 -61
  91. package/example/node_modules/ajv/scripts/compile-dots.js +0 -73
  92. package/example/node_modules/ajv/scripts/info +0 -10
  93. package/example/node_modules/ajv/scripts/prepare-tests +0 -12
  94. package/example/node_modules/ajv/scripts/publish-built-version +0 -32
  95. package/example/node_modules/ajv/scripts/travis-gh-pages +0 -23
  96. package/example/node_modules/asn1/LICENSE +0 -19
  97. package/example/node_modules/asn1/README.md +0 -50
  98. package/example/node_modules/asn1/lib/ber/errors.js +0 -13
  99. package/example/node_modules/asn1/lib/ber/index.js +0 -27
  100. package/example/node_modules/asn1/lib/ber/reader.js +0 -262
  101. package/example/node_modules/asn1/lib/ber/types.js +0 -36
  102. package/example/node_modules/asn1/lib/ber/writer.js +0 -317
  103. package/example/node_modules/asn1/lib/index.js +0 -20
  104. package/example/node_modules/asn1/package.json +0 -79
  105. package/example/node_modules/assert-plus/AUTHORS +0 -6
  106. package/example/node_modules/assert-plus/CHANGES.md +0 -14
  107. package/example/node_modules/assert-plus/README.md +0 -162
  108. package/example/node_modules/assert-plus/assert.js +0 -211
  109. package/example/node_modules/assert-plus/package.json +0 -91
  110. package/example/node_modules/asynckit/LICENSE +0 -21
  111. package/example/node_modules/asynckit/README.md +0 -233
  112. package/example/node_modules/asynckit/bench.js +0 -76
  113. package/example/node_modules/asynckit/index.js +0 -6
  114. package/example/node_modules/asynckit/lib/abort.js +0 -29
  115. package/example/node_modules/asynckit/lib/async.js +0 -34
  116. package/example/node_modules/asynckit/lib/defer.js +0 -26
  117. package/example/node_modules/asynckit/lib/iterate.js +0 -75
  118. package/example/node_modules/asynckit/lib/readable_asynckit.js +0 -91
  119. package/example/node_modules/asynckit/lib/readable_parallel.js +0 -25
  120. package/example/node_modules/asynckit/lib/readable_serial.js +0 -25
  121. package/example/node_modules/asynckit/lib/readable_serial_ordered.js +0 -29
  122. package/example/node_modules/asynckit/lib/state.js +0 -37
  123. package/example/node_modules/asynckit/lib/streamify.js +0 -141
  124. package/example/node_modules/asynckit/lib/terminator.js +0 -29
  125. package/example/node_modules/asynckit/package.json +0 -95
  126. package/example/node_modules/asynckit/parallel.js +0 -43
  127. package/example/node_modules/asynckit/serial.js +0 -17
  128. package/example/node_modules/asynckit/serialOrdered.js +0 -75
  129. package/example/node_modules/asynckit/stream.js +0 -21
  130. package/example/node_modules/aws-sign2/LICENSE +0 -55
  131. package/example/node_modules/aws-sign2/README.md +0 -4
  132. package/example/node_modules/aws-sign2/index.js +0 -212
  133. package/example/node_modules/aws-sign2/package.json +0 -54
  134. package/example/node_modules/aws4/.travis.yml +0 -5
  135. package/example/node_modules/aws4/LICENSE +0 -19
  136. package/example/node_modules/aws4/README.md +0 -523
  137. package/example/node_modules/aws4/aws4.js +0 -332
  138. package/example/node_modules/aws4/lru.js +0 -96
  139. package/example/node_modules/aws4/package.json +0 -108
  140. package/example/node_modules/bcrypt-pbkdf/CONTRIBUTING.md +0 -13
  141. package/example/node_modules/bcrypt-pbkdf/LICENSE +0 -66
  142. package/example/node_modules/bcrypt-pbkdf/README.md +0 -45
  143. package/example/node_modules/bcrypt-pbkdf/index.js +0 -556
  144. package/example/node_modules/bcrypt-pbkdf/package.json +0 -48
  145. package/example/node_modules/buffer-from/LICENSE +0 -21
  146. package/example/node_modules/buffer-from/index.js +0 -69
  147. package/example/node_modules/buffer-from/package.json +0 -56
  148. package/example/node_modules/buffer-from/readme.md +0 -69
  149. package/example/node_modules/caseless/LICENSE +0 -28
  150. package/example/node_modules/caseless/README.md +0 -45
  151. package/example/node_modules/caseless/index.js +0 -67
  152. package/example/node_modules/caseless/package.json +0 -60
  153. package/example/node_modules/caseless/test.js +0 -67
  154. package/example/node_modules/combined-stream/License +0 -19
  155. package/example/node_modules/combined-stream/Readme.md +0 -138
  156. package/example/node_modules/combined-stream/lib/combined_stream.js +0 -208
  157. package/example/node_modules/combined-stream/package.json +0 -62
  158. package/example/node_modules/combined-stream/yarn.lock +0 -17
  159. package/example/node_modules/commander/CHANGELOG.md +0 -408
  160. package/example/node_modules/commander/LICENSE +0 -22
  161. package/example/node_modules/commander/Readme.md +0 -428
  162. package/example/node_modules/commander/index.js +0 -1224
  163. package/example/node_modules/commander/package.json +0 -74
  164. package/example/node_modules/commander/typings/index.d.ts +0 -310
  165. package/example/node_modules/concat-stream/LICENSE +0 -24
  166. package/example/node_modules/concat-stream/index.js +0 -144
  167. package/example/node_modules/concat-stream/package.json +0 -88
  168. package/example/node_modules/concat-stream/readme.md +0 -102
  169. package/example/node_modules/core-util-is/LICENSE +0 -19
  170. package/example/node_modules/core-util-is/README.md +0 -3
  171. package/example/node_modules/core-util-is/float.patch +0 -604
  172. package/example/node_modules/core-util-is/lib/util.js +0 -107
  173. package/example/node_modules/core-util-is/package.json +0 -67
  174. package/example/node_modules/core-util-is/test.js +0 -68
  175. package/example/node_modules/dashdash/CHANGES.md +0 -364
  176. package/example/node_modules/dashdash/LICENSE.txt +0 -24
  177. package/example/node_modules/dashdash/README.md +0 -574
  178. package/example/node_modules/dashdash/etc/dashdash.bash_completion.in +0 -389
  179. package/example/node_modules/dashdash/lib/dashdash.js +0 -1055
  180. package/example/node_modules/dashdash/package.json +0 -71
  181. package/example/node_modules/debug/.coveralls.yml +0 -1
  182. package/example/node_modules/debug/.eslintrc +0 -11
  183. package/example/node_modules/debug/.travis.yml +0 -14
  184. package/example/node_modules/debug/CHANGELOG.md +0 -362
  185. package/example/node_modules/debug/LICENSE +0 -19
  186. package/example/node_modules/debug/Makefile +0 -50
  187. package/example/node_modules/debug/README.md +0 -312
  188. package/example/node_modules/debug/component.json +0 -19
  189. package/example/node_modules/debug/karma.conf.js +0 -70
  190. package/example/node_modules/debug/node.js +0 -1
  191. package/example/node_modules/debug/package.json +0 -92
  192. package/example/node_modules/debug/src/browser.js +0 -185
  193. package/example/node_modules/debug/src/debug.js +0 -202
  194. package/example/node_modules/debug/src/index.js +0 -10
  195. package/example/node_modules/debug/src/inspector-log.js +0 -15
  196. package/example/node_modules/debug/src/node.js +0 -248
  197. package/example/node_modules/delayed-stream/License +0 -19
  198. package/example/node_modules/delayed-stream/Makefile +0 -7
  199. package/example/node_modules/delayed-stream/Readme.md +0 -141
  200. package/example/node_modules/delayed-stream/lib/delayed_stream.js +0 -107
  201. package/example/node_modules/delayed-stream/package.json +0 -66
  202. package/example/node_modules/ecc-jsbn/LICENSE +0 -21
  203. package/example/node_modules/ecc-jsbn/README.md +0 -8
  204. package/example/node_modules/ecc-jsbn/index.js +0 -58
  205. package/example/node_modules/ecc-jsbn/lib/LICENSE-jsbn +0 -40
  206. package/example/node_modules/ecc-jsbn/lib/ec.js +0 -561
  207. package/example/node_modules/ecc-jsbn/lib/sec.js +0 -170
  208. package/example/node_modules/ecc-jsbn/package.json +0 -69
  209. package/example/node_modules/ecc-jsbn/test.js +0 -14
  210. package/example/node_modules/es6-promise/CHANGELOG.md +0 -155
  211. package/example/node_modules/es6-promise/LICENSE +0 -19
  212. package/example/node_modules/es6-promise/README.md +0 -97
  213. package/example/node_modules/es6-promise/auto.js +0 -4
  214. package/example/node_modules/es6-promise/dist/es6-promise.auto.js +0 -1176
  215. package/example/node_modules/es6-promise/dist/es6-promise.auto.map +0 -1
  216. package/example/node_modules/es6-promise/dist/es6-promise.auto.min.js +0 -1
  217. package/example/node_modules/es6-promise/dist/es6-promise.auto.min.map +0 -1
  218. package/example/node_modules/es6-promise/dist/es6-promise.js +0 -1174
  219. package/example/node_modules/es6-promise/dist/es6-promise.map +0 -1
  220. package/example/node_modules/es6-promise/dist/es6-promise.min.js +0 -1
  221. package/example/node_modules/es6-promise/dist/es6-promise.min.map +0 -1
  222. package/example/node_modules/es6-promise/es6-promise.d.ts +0 -85
  223. package/example/node_modules/es6-promise/lib/es6-promise/-internal.js +0 -243
  224. package/example/node_modules/es6-promise/lib/es6-promise/asap.js +0 -119
  225. package/example/node_modules/es6-promise/lib/es6-promise/enumerator.js +0 -124
  226. package/example/node_modules/es6-promise/lib/es6-promise/polyfill.js +0 -35
  227. package/example/node_modules/es6-promise/lib/es6-promise/promise/all.js +0 -52
  228. package/example/node_modules/es6-promise/lib/es6-promise/promise/race.js +0 -84
  229. package/example/node_modules/es6-promise/lib/es6-promise/promise/reject.js +0 -46
  230. package/example/node_modules/es6-promise/lib/es6-promise/promise/resolve.js +0 -48
  231. package/example/node_modules/es6-promise/lib/es6-promise/promise.js +0 -431
  232. package/example/node_modules/es6-promise/lib/es6-promise/then.js +0 -32
  233. package/example/node_modules/es6-promise/lib/es6-promise/utils.js +0 -21
  234. package/example/node_modules/es6-promise/lib/es6-promise.auto.js +0 -3
  235. package/example/node_modules/es6-promise/lib/es6-promise.js +0 -7
  236. package/example/node_modules/es6-promise/package.json +0 -110
  237. package/example/node_modules/extend/.editorconfig +0 -20
  238. package/example/node_modules/extend/.eslintrc +0 -17
  239. package/example/node_modules/extend/.jscs.json +0 -175
  240. package/example/node_modules/extend/.travis.yml +0 -230
  241. package/example/node_modules/extend/CHANGELOG.md +0 -83
  242. package/example/node_modules/extend/LICENSE +0 -23
  243. package/example/node_modules/extend/README.md +0 -81
  244. package/example/node_modules/extend/component.json +0 -32
  245. package/example/node_modules/extend/index.js +0 -117
  246. package/example/node_modules/extend/package.json +0 -79
  247. package/example/node_modules/extract-zip/.travis.yml +0 -9
  248. package/example/node_modules/extract-zip/CONTRIBUTING.md +0 -1
  249. package/example/node_modules/extract-zip/LICENSE +0 -23
  250. package/example/node_modules/extract-zip/cli.js +0 -20
  251. package/example/node_modules/extract-zip/index.js +0 -205
  252. package/example/node_modules/extract-zip/package.json +0 -73
  253. package/example/node_modules/extract-zip/readme.md +0 -49
  254. package/example/node_modules/extsprintf/.gitmodules +0 -0
  255. package/example/node_modules/extsprintf/LICENSE +0 -19
  256. package/example/node_modules/extsprintf/Makefile +0 -24
  257. package/example/node_modules/extsprintf/Makefile.targ +0 -285
  258. package/example/node_modules/extsprintf/README.md +0 -46
  259. package/example/node_modules/extsprintf/jsl.node.conf +0 -137
  260. package/example/node_modules/extsprintf/lib/extsprintf.js +0 -183
  261. package/example/node_modules/extsprintf/package.json +0 -48
  262. package/example/node_modules/fast-deep-equal/LICENSE +0 -21
  263. package/example/node_modules/fast-deep-equal/README.md +0 -58
  264. package/example/node_modules/fast-deep-equal/index.d.ts +0 -4
  265. package/example/node_modules/fast-deep-equal/index.js +0 -55
  266. package/example/node_modules/fast-deep-equal/package.json +0 -90
  267. package/example/node_modules/fast-json-stable-stringify/.eslintrc.yml +0 -26
  268. package/example/node_modules/fast-json-stable-stringify/.travis.yml +0 -8
  269. package/example/node_modules/fast-json-stable-stringify/LICENSE +0 -18
  270. package/example/node_modules/fast-json-stable-stringify/README.md +0 -119
  271. package/example/node_modules/fast-json-stable-stringify/benchmark/index.js +0 -31
  272. package/example/node_modules/fast-json-stable-stringify/benchmark/test.json +0 -137
  273. package/example/node_modules/fast-json-stable-stringify/example/key_cmp.js +0 -7
  274. package/example/node_modules/fast-json-stable-stringify/example/nested.js +0 -3
  275. package/example/node_modules/fast-json-stable-stringify/example/str.js +0 -3
  276. package/example/node_modules/fast-json-stable-stringify/example/value_cmp.js +0 -7
  277. package/example/node_modules/fast-json-stable-stringify/index.js +0 -59
  278. package/example/node_modules/fast-json-stable-stringify/package.json +0 -82
  279. package/example/node_modules/fast-json-stable-stringify/test/cmp.js +0 -13
  280. package/example/node_modules/fast-json-stable-stringify/test/nested.js +0 -44
  281. package/example/node_modules/fast-json-stable-stringify/test/str.js +0 -46
  282. package/example/node_modules/fast-json-stable-stringify/test/to-json.js +0 -22
  283. package/example/node_modules/fd-slicer/.travis.yml +0 -7
  284. package/example/node_modules/fd-slicer/CHANGELOG.md +0 -49
  285. package/example/node_modules/fd-slicer/LICENSE +0 -21
  286. package/example/node_modules/fd-slicer/README.md +0 -189
  287. package/example/node_modules/fd-slicer/index.js +0 -277
  288. package/example/node_modules/fd-slicer/package.json +0 -69
  289. package/example/node_modules/fd-slicer/test/test.js +0 -350
  290. package/example/node_modules/forever-agent/LICENSE +0 -55
  291. package/example/node_modules/forever-agent/README.md +0 -4
  292. package/example/node_modules/forever-agent/index.js +0 -138
  293. package/example/node_modules/forever-agent/package.json +0 -54
  294. package/example/node_modules/form-data/License +0 -19
  295. package/example/node_modules/form-data/README.md +0 -234
  296. package/example/node_modules/form-data/README.md.bak +0 -234
  297. package/example/node_modules/form-data/lib/browser.js +0 -2
  298. package/example/node_modules/form-data/lib/form_data.js +0 -457
  299. package/example/node_modules/form-data/lib/populate.js +0 -10
  300. package/example/node_modules/form-data/package.json +0 -102
  301. package/example/node_modules/form-data/yarn.lock +0 -2662
  302. package/example/node_modules/fs-extra/CHANGELOG.md +0 -656
  303. package/example/node_modules/fs-extra/LICENSE +0 -15
  304. package/example/node_modules/fs-extra/README.md +0 -603
  305. package/example/node_modules/fs-extra/lib/copy/copy.js +0 -50
  306. package/example/node_modules/fs-extra/lib/copy/index.js +0 -3
  307. package/example/node_modules/fs-extra/lib/copy/ncp.js +0 -232
  308. package/example/node_modules/fs-extra/lib/copy-sync/copy-file-sync.js +0 -42
  309. package/example/node_modules/fs-extra/lib/copy-sync/copy-sync.js +0 -56
  310. package/example/node_modules/fs-extra/lib/copy-sync/index.js +0 -3
  311. package/example/node_modules/fs-extra/lib/empty/index.js +0 -47
  312. package/example/node_modules/fs-extra/lib/ensure/file.js +0 -43
  313. package/example/node_modules/fs-extra/lib/ensure/index.js +0 -21
  314. package/example/node_modules/fs-extra/lib/ensure/link.js +0 -58
  315. package/example/node_modules/fs-extra/lib/ensure/symlink-paths.js +0 -96
  316. package/example/node_modules/fs-extra/lib/ensure/symlink-type.js +0 -27
  317. package/example/node_modules/fs-extra/lib/ensure/symlink.js +0 -62
  318. package/example/node_modules/fs-extra/lib/index.js +0 -38
  319. package/example/node_modules/fs-extra/lib/json/index.js +0 -9
  320. package/example/node_modules/fs-extra/lib/json/jsonfile.js +0 -14
  321. package/example/node_modules/fs-extra/lib/json/output-json-sync.js +0 -16
  322. package/example/node_modules/fs-extra/lib/json/output-json.js +0 -24
  323. package/example/node_modules/fs-extra/lib/mkdirs/index.js +0 -9
  324. package/example/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js +0 -57
  325. package/example/node_modules/fs-extra/lib/mkdirs/mkdirs.js +0 -61
  326. package/example/node_modules/fs-extra/lib/mkdirs/win32.js +0 -24
  327. package/example/node_modules/fs-extra/lib/move/index.js +0 -161
  328. package/example/node_modules/fs-extra/lib/output/index.js +0 -35
  329. package/example/node_modules/fs-extra/lib/remove/index.js +0 -15
  330. package/example/node_modules/fs-extra/lib/remove/rimraf.js +0 -301
  331. package/example/node_modules/fs-extra/lib/util/assign.js +0 -14
  332. package/example/node_modules/fs-extra/lib/util/utimes.js +0 -70
  333. package/example/node_modules/fs-extra/lib/walk/index.js +0 -5
  334. package/example/node_modules/fs-extra/lib/walk-sync/index.js +0 -20
  335. package/example/node_modules/fs-extra/package.json +0 -96
  336. package/example/node_modules/getpass/.travis.yml +0 -9
  337. package/example/node_modules/getpass/LICENSE +0 -18
  338. package/example/node_modules/getpass/README.md +0 -32
  339. package/example/node_modules/getpass/lib/index.js +0 -123
  340. package/example/node_modules/getpass/package.json +0 -54
  341. package/example/node_modules/graceful-fs/LICENSE +0 -15
  342. package/example/node_modules/graceful-fs/README.md +0 -133
  343. package/example/node_modules/graceful-fs/clone.js +0 -19
  344. package/example/node_modules/graceful-fs/graceful-fs.js +0 -279
  345. package/example/node_modules/graceful-fs/legacy-streams.js +0 -118
  346. package/example/node_modules/graceful-fs/package.json +0 -85
  347. package/example/node_modules/graceful-fs/polyfills.js +0 -336
  348. package/example/node_modules/handlebars/LICENSE +0 -19
  349. package/example/node_modules/handlebars/README.markdown +0 -168
  350. package/example/node_modules/handlebars/bin/handlebars +0 -128
  351. package/example/node_modules/handlebars/dist/amd/handlebars/base.js +0 -96
  352. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/ast.js +0 -31
  353. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/base.js +0 -36
  354. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/code-gen.js +0 -163
  355. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/compiler.js +0 -569
  356. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/helpers.js +0 -228
  357. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/javascript-compiler.js +0 -1123
  358. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/parser.js +0 -737
  359. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/printer.js +0 -186
  360. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/visitor.js +0 -138
  361. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/whitespace-control.js +0 -219
  362. package/example/node_modules/handlebars/dist/amd/handlebars/decorators/inline.js +0 -25
  363. package/example/node_modules/handlebars/dist/amd/handlebars/decorators.js +0 -16
  364. package/example/node_modules/handlebars/dist/amd/handlebars/exception.js +0 -53
  365. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/block-helper-missing.js +0 -35
  366. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/each.js +0 -89
  367. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/helper-missing.js +0 -22
  368. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/if.js +0 -25
  369. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/log.js +0 -24
  370. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/lookup.js +0 -16
  371. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/with.js +0 -29
  372. package/example/node_modules/handlebars/dist/amd/handlebars/helpers.js +0 -34
  373. package/example/node_modules/handlebars/dist/amd/handlebars/logger.js +0 -44
  374. package/example/node_modules/handlebars/dist/amd/handlebars/no-conflict.js +0 -18
  375. package/example/node_modules/handlebars/dist/amd/handlebars/runtime.js +0 -297
  376. package/example/node_modules/handlebars/dist/amd/handlebars/safe-string.js +0 -15
  377. package/example/node_modules/handlebars/dist/amd/handlebars/utils.js +0 -126
  378. package/example/node_modules/handlebars/dist/amd/handlebars.js +0 -51
  379. package/example/node_modules/handlebars/dist/amd/handlebars.runtime.js +0 -44
  380. package/example/node_modules/handlebars/dist/amd/precompiler.js +0 -313
  381. package/example/node_modules/handlebars/dist/cjs/handlebars/base.js +0 -104
  382. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js +0 -31
  383. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js +0 -48
  384. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js +0 -166
  385. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js +0 -573
  386. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js +0 -228
  387. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js +0 -1131
  388. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js +0 -737
  389. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/printer.js +0 -186
  390. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js +0 -140
  391. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js +0 -221
  392. package/example/node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js +0 -29
  393. package/example/node_modules/handlebars/dist/cjs/handlebars/decorators.js +0 -16
  394. package/example/node_modules/handlebars/dist/cjs/handlebars/exception.js +0 -54
  395. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js +0 -39
  396. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js +0 -94
  397. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js +0 -25
  398. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/if.js +0 -29
  399. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/log.js +0 -26
  400. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js +0 -18
  401. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/with.js +0 -33
  402. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers.js +0 -46
  403. package/example/node_modules/handlebars/dist/cjs/handlebars/logger.js +0 -47
  404. package/example/node_modules/handlebars/dist/cjs/handlebars/no-conflict.js +0 -20
  405. package/example/node_modules/handlebars/dist/cjs/handlebars/runtime.js +0 -307
  406. package/example/node_modules/handlebars/dist/cjs/handlebars/safe-string.js +0 -15
  407. package/example/node_modules/handlebars/dist/cjs/handlebars/utils.js +0 -124
  408. package/example/node_modules/handlebars/dist/cjs/handlebars.js +0 -65
  409. package/example/node_modules/handlebars/dist/cjs/handlebars.runtime.js +0 -66
  410. package/example/node_modules/handlebars/dist/cjs/precompiler.js +0 -327
  411. package/example/node_modules/handlebars/dist/handlebars.amd.js +0 -4357
  412. package/example/node_modules/handlebars/dist/handlebars.amd.min.js +0 -29
  413. package/example/node_modules/handlebars/dist/handlebars.js +0 -4845
  414. package/example/node_modules/handlebars/dist/handlebars.min.js +0 -29
  415. package/example/node_modules/handlebars/dist/handlebars.runtime.amd.js +0 -1052
  416. package/example/node_modules/handlebars/dist/handlebars.runtime.amd.min.js +0 -27
  417. package/example/node_modules/handlebars/dist/handlebars.runtime.js +0 -1474
  418. package/example/node_modules/handlebars/dist/handlebars.runtime.min.js +0 -27
  419. package/example/node_modules/handlebars/lib/handlebars/base.js +0 -78
  420. package/example/node_modules/handlebars/lib/handlebars/compiler/ast.js +0 -28
  421. package/example/node_modules/handlebars/lib/handlebars/compiler/base.js +0 -24
  422. package/example/node_modules/handlebars/lib/handlebars/compiler/code-gen.js +0 -168
  423. package/example/node_modules/handlebars/lib/handlebars/compiler/compiler.js +0 -559
  424. package/example/node_modules/handlebars/lib/handlebars/compiler/helpers.js +0 -210
  425. package/example/node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js +0 -1140
  426. package/example/node_modules/handlebars/lib/handlebars/compiler/parser.js +0 -622
  427. package/example/node_modules/handlebars/lib/handlebars/compiler/printer.js +0 -171
  428. package/example/node_modules/handlebars/lib/handlebars/compiler/visitor.js +0 -129
  429. package/example/node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js +0 -216
  430. package/example/node_modules/handlebars/lib/handlebars/decorators/inline.js +0 -22
  431. package/example/node_modules/handlebars/lib/handlebars/decorators.js +0 -6
  432. package/example/node_modules/handlebars/lib/handlebars/exception.js +0 -49
  433. package/example/node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js +0 -32
  434. package/example/node_modules/handlebars/lib/handlebars/helpers/each.js +0 -79
  435. package/example/node_modules/handlebars/lib/handlebars/helpers/helper-missing.js +0 -13
  436. package/example/node_modules/handlebars/lib/handlebars/helpers/if.js +0 -20
  437. package/example/node_modules/handlebars/lib/handlebars/helpers/log.js +0 -19
  438. package/example/node_modules/handlebars/lib/handlebars/helpers/lookup.js +0 -11
  439. package/example/node_modules/handlebars/lib/handlebars/helpers/with.js +0 -24
  440. package/example/node_modules/handlebars/lib/handlebars/helpers.js +0 -17
  441. package/example/node_modules/handlebars/lib/handlebars/logger.js +0 -35
  442. package/example/node_modules/handlebars/lib/handlebars/no-conflict.js +0 -13
  443. package/example/node_modules/handlebars/lib/handlebars/runtime.js +0 -281
  444. package/example/node_modules/handlebars/lib/handlebars/safe-string.js +0 -10
  445. package/example/node_modules/handlebars/lib/handlebars/utils.js +0 -108
  446. package/example/node_modules/handlebars/lib/handlebars.js +0 -41
  447. package/example/node_modules/handlebars/lib/handlebars.runtime.js +0 -37
  448. package/example/node_modules/handlebars/lib/index.js +0 -25
  449. package/example/node_modules/handlebars/lib/precompiler.js +0 -298
  450. package/example/node_modules/handlebars/package.json +0 -126
  451. package/example/node_modules/handlebars/print-script +0 -95
  452. package/example/node_modules/handlebars/release-notes.md +0 -638
  453. package/example/node_modules/handlebars/runtime.js +0 -3
  454. package/example/node_modules/handlebars/types/index.d.ts +0 -357
  455. package/example/node_modules/har-schema/LICENSE +0 -13
  456. package/example/node_modules/har-schema/README.md +0 -49
  457. package/example/node_modules/har-schema/lib/afterRequest.json +0 -30
  458. package/example/node_modules/har-schema/lib/beforeRequest.json +0 -30
  459. package/example/node_modules/har-schema/lib/browser.json +0 -20
  460. package/example/node_modules/har-schema/lib/cache.json +0 -21
  461. package/example/node_modules/har-schema/lib/content.json +0 -29
  462. package/example/node_modules/har-schema/lib/cookie.json +0 -36
  463. package/example/node_modules/har-schema/lib/creator.json +0 -20
  464. package/example/node_modules/har-schema/lib/entry.json +0 -53
  465. package/example/node_modules/har-schema/lib/har.json +0 -13
  466. package/example/node_modules/har-schema/lib/header.json +0 -20
  467. package/example/node_modules/har-schema/lib/index.js +0 -22
  468. package/example/node_modules/har-schema/lib/log.json +0 -36
  469. package/example/node_modules/har-schema/lib/page.json +0 -32
  470. package/example/node_modules/har-schema/lib/pageTimings.json +0 -18
  471. package/example/node_modules/har-schema/lib/postData.json +0 -43
  472. package/example/node_modules/har-schema/lib/query.json +0 -20
  473. package/example/node_modules/har-schema/lib/request.json +0 -57
  474. package/example/node_modules/har-schema/lib/response.json +0 -54
  475. package/example/node_modules/har-schema/lib/timings.json +0 -42
  476. package/example/node_modules/har-schema/package.json +0 -90
  477. package/example/node_modules/har-validator/LICENSE +0 -9
  478. package/example/node_modules/har-validator/README.md +0 -37
  479. package/example/node_modules/har-validator/lib/async.js +0 -105
  480. package/example/node_modules/har-validator/lib/error.js +0 -17
  481. package/example/node_modules/har-validator/lib/promise.js +0 -102
  482. package/example/node_modules/har-validator/package.json +0 -80
  483. package/example/node_modules/hasha/index.js +0 -70
  484. package/example/node_modules/hasha/license +0 -21
  485. package/example/node_modules/hasha/package.json +0 -88
  486. package/example/node_modules/hasha/readme.md +0 -120
  487. package/example/node_modules/html-pdf/LICENSE +0 -21
  488. package/example/node_modules/html-pdf/README.md +0 -170
  489. package/example/node_modules/html-pdf/bin/index.js +0 -32
  490. package/example/node_modules/html-pdf/circle.yml +0 -3
  491. package/example/node_modules/html-pdf/examples/businesscard/businesscard.html +0 -97
  492. package/example/node_modules/html-pdf/examples/businesscard/businesscard.png +0 -0
  493. package/example/node_modules/html-pdf/examples/businesscard/image.png +0 -0
  494. package/example/node_modules/html-pdf/examples/serve-http/index.js +0 -19
  495. package/example/node_modules/html-pdf/lib/index.js +0 -26
  496. package/example/node_modules/html-pdf/lib/pdf.js +0 -148
  497. package/example/node_modules/html-pdf/lib/scripts/pdf_a4_portrait.js +0 -225
  498. package/example/node_modules/html-pdf/package.json +0 -76
  499. package/example/node_modules/http-signature/.dir-locals.el +0 -6
  500. package/example/node_modules/http-signature/CHANGES.md +0 -46
  501. package/example/node_modules/http-signature/LICENSE +0 -18
  502. package/example/node_modules/http-signature/README.md +0 -79
  503. package/example/node_modules/http-signature/http_signing.md +0 -363
  504. package/example/node_modules/http-signature/lib/index.js +0 -29
  505. package/example/node_modules/http-signature/lib/parser.js +0 -315
  506. package/example/node_modules/http-signature/lib/signer.js +0 -401
  507. package/example/node_modules/http-signature/lib/utils.js +0 -112
  508. package/example/node_modules/http-signature/lib/verify.js +0 -88
  509. package/example/node_modules/http-signature/package.json +0 -81
  510. package/example/node_modules/inherits/LICENSE +0 -16
  511. package/example/node_modules/inherits/README.md +0 -42
  512. package/example/node_modules/inherits/inherits.js +0 -9
  513. package/example/node_modules/inherits/inherits_browser.js +0 -27
  514. package/example/node_modules/inherits/package.json +0 -66
  515. package/example/node_modules/is-stream/index.js +0 -21
  516. package/example/node_modules/is-stream/license +0 -21
  517. package/example/node_modules/is-stream/package.json +0 -74
  518. package/example/node_modules/is-stream/readme.md +0 -42
  519. package/example/node_modules/is-typedarray/LICENSE.md +0 -18
  520. package/example/node_modules/is-typedarray/README.md +0 -16
  521. package/example/node_modules/is-typedarray/index.js +0 -41
  522. package/example/node_modules/is-typedarray/package.json +0 -63
  523. package/example/node_modules/is-typedarray/test.js +0 -34
  524. package/example/node_modules/isarray/.travis.yml +0 -4
  525. package/example/node_modules/isarray/Makefile +0 -6
  526. package/example/node_modules/isarray/README.md +0 -60
  527. package/example/node_modules/isarray/component.json +0 -19
  528. package/example/node_modules/isarray/index.js +0 -5
  529. package/example/node_modules/isarray/package.json +0 -77
  530. package/example/node_modules/isarray/test.js +0 -20
  531. package/example/node_modules/isexe/LICENSE +0 -15
  532. package/example/node_modules/isexe/README.md +0 -51
  533. package/example/node_modules/isexe/index.js +0 -57
  534. package/example/node_modules/isexe/mode.js +0 -41
  535. package/example/node_modules/isexe/package.json +0 -64
  536. package/example/node_modules/isexe/test/basic.js +0 -221
  537. package/example/node_modules/isexe/windows.js +0 -42
  538. package/example/node_modules/isstream/.jshintrc +0 -59
  539. package/example/node_modules/isstream/.travis.yml +0 -12
  540. package/example/node_modules/isstream/LICENSE.md +0 -11
  541. package/example/node_modules/isstream/README.md +0 -66
  542. package/example/node_modules/isstream/isstream.js +0 -27
  543. package/example/node_modules/isstream/package.json +0 -65
  544. package/example/node_modules/isstream/test.js +0 -168
  545. package/example/node_modules/jsbn/LICENSE +0 -40
  546. package/example/node_modules/jsbn/README.md +0 -175
  547. package/example/node_modules/jsbn/example.html +0 -12
  548. package/example/node_modules/jsbn/example.js +0 -3
  549. package/example/node_modules/jsbn/index.js +0 -1357
  550. package/example/node_modules/jsbn/package.json +0 -57
  551. package/example/node_modules/json-schema/README.md +0 -5
  552. package/example/node_modules/json-schema/draft-00/hyper-schema +0 -68
  553. package/example/node_modules/json-schema/draft-00/json-ref +0 -26
  554. package/example/node_modules/json-schema/draft-00/links +0 -33
  555. package/example/node_modules/json-schema/draft-00/schema +0 -155
  556. package/example/node_modules/json-schema/draft-01/hyper-schema +0 -68
  557. package/example/node_modules/json-schema/draft-01/json-ref +0 -26
  558. package/example/node_modules/json-schema/draft-01/links +0 -33
  559. package/example/node_modules/json-schema/draft-01/schema +0 -155
  560. package/example/node_modules/json-schema/draft-02/hyper-schema +0 -68
  561. package/example/node_modules/json-schema/draft-02/json-ref +0 -26
  562. package/example/node_modules/json-schema/draft-02/links +0 -35
  563. package/example/node_modules/json-schema/draft-02/schema +0 -166
  564. package/example/node_modules/json-schema/draft-03/examples/address +0 -20
  565. package/example/node_modules/json-schema/draft-03/examples/calendar +0 -53
  566. package/example/node_modules/json-schema/draft-03/examples/card +0 -105
  567. package/example/node_modules/json-schema/draft-03/examples/geo +0 -8
  568. package/example/node_modules/json-schema/draft-03/examples/interfaces +0 -23
  569. package/example/node_modules/json-schema/draft-03/hyper-schema +0 -60
  570. package/example/node_modules/json-schema/draft-03/json-ref +0 -26
  571. package/example/node_modules/json-schema/draft-03/links +0 -35
  572. package/example/node_modules/json-schema/draft-03/schema +0 -174
  573. package/example/node_modules/json-schema/draft-04/hyper-schema +0 -60
  574. package/example/node_modules/json-schema/draft-04/links +0 -41
  575. package/example/node_modules/json-schema/draft-04/schema +0 -189
  576. package/example/node_modules/json-schema/draft-zyp-json-schema-03.xml +0 -1120
  577. package/example/node_modules/json-schema/draft-zyp-json-schema-04.xml +0 -1072
  578. package/example/node_modules/json-schema/lib/links.js +0 -66
  579. package/example/node_modules/json-schema/lib/validate.js +0 -273
  580. package/example/node_modules/json-schema/package.json +0 -75
  581. package/example/node_modules/json-schema/test/tests.js +0 -95
  582. package/example/node_modules/json-schema-traverse/.eslintrc.yml +0 -27
  583. package/example/node_modules/json-schema-traverse/.travis.yml +0 -8
  584. package/example/node_modules/json-schema-traverse/LICENSE +0 -21
  585. package/example/node_modules/json-schema-traverse/README.md +0 -83
  586. package/example/node_modules/json-schema-traverse/index.js +0 -89
  587. package/example/node_modules/json-schema-traverse/package.json +0 -74
  588. package/example/node_modules/json-schema-traverse/spec/.eslintrc.yml +0 -6
  589. package/example/node_modules/json-schema-traverse/spec/fixtures/schema.js +0 -125
  590. package/example/node_modules/json-schema-traverse/spec/index.spec.js +0 -171
  591. package/example/node_modules/json-stringify-safe/CHANGELOG.md +0 -14
  592. package/example/node_modules/json-stringify-safe/LICENSE +0 -15
  593. package/example/node_modules/json-stringify-safe/Makefile +0 -35
  594. package/example/node_modules/json-stringify-safe/README.md +0 -52
  595. package/example/node_modules/json-stringify-safe/package.json +0 -70
  596. package/example/node_modules/json-stringify-safe/stringify.js +0 -27
  597. package/example/node_modules/json-stringify-safe/test/mocha.opts +0 -2
  598. package/example/node_modules/json-stringify-safe/test/stringify_test.js +0 -246
  599. package/example/node_modules/jsonfile/CHANGELOG.md +0 -126
  600. package/example/node_modules/jsonfile/LICENSE +0 -15
  601. package/example/node_modules/jsonfile/README.md +0 -162
  602. package/example/node_modules/jsonfile/appveyor.yml +0 -28
  603. package/example/node_modules/jsonfile/index.js +0 -133
  604. package/example/node_modules/jsonfile/package.json +0 -73
  605. package/example/node_modules/jsprim/CHANGES.md +0 -49
  606. package/example/node_modules/jsprim/CONTRIBUTING.md +0 -19
  607. package/example/node_modules/jsprim/LICENSE +0 -19
  608. package/example/node_modules/jsprim/README.md +0 -287
  609. package/example/node_modules/jsprim/lib/jsprim.js +0 -735
  610. package/example/node_modules/jsprim/package.json +0 -53
  611. package/example/node_modules/kew/.travis.yml +0 -5
  612. package/example/node_modules/kew/LICENSE.TXT +0 -194
  613. package/example/node_modules/kew/README.md +0 -320
  614. package/example/node_modules/kew/kew.js +0 -860
  615. package/example/node_modules/kew/package.json +0 -63
  616. package/example/node_modules/kew/test/chain.js +0 -434
  617. package/example/node_modules/kew/test/closure_test.js +0 -135
  618. package/example/node_modules/kew/test/context.js +0 -89
  619. package/example/node_modules/kew/test/defer.js +0 -120
  620. package/example/node_modules/kew/test/externs_node.js +0 -9
  621. package/example/node_modules/kew/test/later.js +0 -45
  622. package/example/node_modules/kew/test/scopes.js +0 -59
  623. package/example/node_modules/kew/test/spread.js +0 -59
  624. package/example/node_modules/kew/test/static.js +0 -393
  625. package/example/node_modules/klaw/CHANGELOG.md +0 -42
  626. package/example/node_modules/klaw/LICENSE +0 -15
  627. package/example/node_modules/klaw/README.md +0 -270
  628. package/example/node_modules/klaw/package.json +0 -74
  629. package/example/node_modules/klaw/src/assign.js +0 -16
  630. package/example/node_modules/klaw/src/index.js +0 -57
  631. package/example/node_modules/mime-db/HISTORY.md +0 -417
  632. package/example/node_modules/mime-db/LICENSE +0 -22
  633. package/example/node_modules/mime-db/README.md +0 -94
  634. package/example/node_modules/mime-db/db.json +0 -7834
  635. package/example/node_modules/mime-db/index.js +0 -11
  636. package/example/node_modules/mime-db/package.json +0 -105
  637. package/example/node_modules/mime-types/HISTORY.md +0 -308
  638. package/example/node_modules/mime-types/LICENSE +0 -23
  639. package/example/node_modules/mime-types/README.md +0 -113
  640. package/example/node_modules/mime-types/index.js +0 -188
  641. package/example/node_modules/mime-types/package.json +0 -91
  642. package/example/node_modules/minimist/.travis.yml +0 -4
  643. package/example/node_modules/minimist/LICENSE +0 -18
  644. package/example/node_modules/minimist/example/parse.js +0 -2
  645. package/example/node_modules/minimist/index.js +0 -187
  646. package/example/node_modules/minimist/package.json +0 -74
  647. package/example/node_modules/minimist/readme.markdown +0 -73
  648. package/example/node_modules/minimist/test/bool.js +0 -119
  649. package/example/node_modules/minimist/test/dash.js +0 -24
  650. package/example/node_modules/minimist/test/default_bool.js +0 -20
  651. package/example/node_modules/minimist/test/dotted.js +0 -22
  652. package/example/node_modules/minimist/test/long.js +0 -31
  653. package/example/node_modules/minimist/test/num.js +0 -36
  654. package/example/node_modules/minimist/test/parse.js +0 -197
  655. package/example/node_modules/minimist/test/parse_modified.js +0 -9
  656. package/example/node_modules/minimist/test/short.js +0 -67
  657. package/example/node_modules/minimist/test/whitespace.js +0 -8
  658. package/example/node_modules/mkdirp/.travis.yml +0 -8
  659. package/example/node_modules/mkdirp/LICENSE +0 -21
  660. package/example/node_modules/mkdirp/bin/cmd.js +0 -33
  661. package/example/node_modules/mkdirp/bin/usage.txt +0 -12
  662. package/example/node_modules/mkdirp/examples/pow.js +0 -6
  663. package/example/node_modules/mkdirp/index.js +0 -98
  664. package/example/node_modules/mkdirp/node_modules/minimist/.travis.yml +0 -4
  665. package/example/node_modules/mkdirp/node_modules/minimist/LICENSE +0 -18
  666. package/example/node_modules/mkdirp/node_modules/minimist/example/parse.js +0 -2
  667. package/example/node_modules/mkdirp/node_modules/minimist/index.js +0 -187
  668. package/example/node_modules/mkdirp/node_modules/minimist/package.json +0 -75
  669. package/example/node_modules/mkdirp/node_modules/minimist/readme.markdown +0 -73
  670. package/example/node_modules/mkdirp/node_modules/minimist/test/dash.js +0 -24
  671. package/example/node_modules/mkdirp/node_modules/minimist/test/default_bool.js +0 -20
  672. package/example/node_modules/mkdirp/node_modules/minimist/test/dotted.js +0 -16
  673. package/example/node_modules/mkdirp/node_modules/minimist/test/long.js +0 -31
  674. package/example/node_modules/mkdirp/node_modules/minimist/test/parse.js +0 -318
  675. package/example/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js +0 -9
  676. package/example/node_modules/mkdirp/node_modules/minimist/test/short.js +0 -67
  677. package/example/node_modules/mkdirp/node_modules/minimist/test/whitespace.js +0 -8
  678. package/example/node_modules/mkdirp/package.json +0 -66
  679. package/example/node_modules/mkdirp/readme.markdown +0 -100
  680. package/example/node_modules/mkdirp/test/chmod.js +0 -41
  681. package/example/node_modules/mkdirp/test/clobber.js +0 -38
  682. package/example/node_modules/mkdirp/test/mkdirp.js +0 -28
  683. package/example/node_modules/mkdirp/test/opts_fs.js +0 -29
  684. package/example/node_modules/mkdirp/test/opts_fs_sync.js +0 -27
  685. package/example/node_modules/mkdirp/test/perm.js +0 -32
  686. package/example/node_modules/mkdirp/test/perm_sync.js +0 -36
  687. package/example/node_modules/mkdirp/test/race.js +0 -37
  688. package/example/node_modules/mkdirp/test/rel.js +0 -32
  689. package/example/node_modules/mkdirp/test/return.js +0 -25
  690. package/example/node_modules/mkdirp/test/return_sync.js +0 -24
  691. package/example/node_modules/mkdirp/test/root.js +0 -19
  692. package/example/node_modules/mkdirp/test/sync.js +0 -32
  693. package/example/node_modules/mkdirp/test/umask.js +0 -28
  694. package/example/node_modules/mkdirp/test/umask_sync.js +0 -32
  695. package/example/node_modules/ms/index.js +0 -152
  696. package/example/node_modules/ms/license.md +0 -21
  697. package/example/node_modules/ms/package.json +0 -73
  698. package/example/node_modules/ms/readme.md +0 -51
  699. package/example/node_modules/neo-async/LICENSE +0 -22
  700. package/example/node_modules/neo-async/README.md +0 -268
  701. package/example/node_modules/neo-async/all.js +0 -3
  702. package/example/node_modules/neo-async/allLimit.js +0 -3
  703. package/example/node_modules/neo-async/allSeries.js +0 -3
  704. package/example/node_modules/neo-async/angelFall.js +0 -3
  705. package/example/node_modules/neo-async/any.js +0 -3
  706. package/example/node_modules/neo-async/anyLimit.js +0 -3
  707. package/example/node_modules/neo-async/anySeries.js +0 -3
  708. package/example/node_modules/neo-async/apply.js +0 -3
  709. package/example/node_modules/neo-async/applyEach.js +0 -3
  710. package/example/node_modules/neo-async/applyEachSeries.js +0 -3
  711. package/example/node_modules/neo-async/async.js +0 -9182
  712. package/example/node_modules/neo-async/async.min.js +0 -80
  713. package/example/node_modules/neo-async/asyncify.js +0 -3
  714. package/example/node_modules/neo-async/auto.js +0 -3
  715. package/example/node_modules/neo-async/autoInject.js +0 -3
  716. package/example/node_modules/neo-async/cargo.js +0 -3
  717. package/example/node_modules/neo-async/compose.js +0 -3
  718. package/example/node_modules/neo-async/concat.js +0 -3
  719. package/example/node_modules/neo-async/concatLimit.js +0 -3
  720. package/example/node_modules/neo-async/concatSeries.js +0 -3
  721. package/example/node_modules/neo-async/constant.js +0 -3
  722. package/example/node_modules/neo-async/createLogger.js +0 -3
  723. package/example/node_modules/neo-async/detect.js +0 -3
  724. package/example/node_modules/neo-async/detectLimit.js +0 -3
  725. package/example/node_modules/neo-async/detectSeries.js +0 -3
  726. package/example/node_modules/neo-async/dir.js +0 -3
  727. package/example/node_modules/neo-async/doDuring.js +0 -3
  728. package/example/node_modules/neo-async/doUntil.js +0 -3
  729. package/example/node_modules/neo-async/doWhilst.js +0 -3
  730. package/example/node_modules/neo-async/during.js +0 -3
  731. package/example/node_modules/neo-async/each.js +0 -3
  732. package/example/node_modules/neo-async/eachLimit.js +0 -3
  733. package/example/node_modules/neo-async/eachOf.js +0 -3
  734. package/example/node_modules/neo-async/eachOfLimit.js +0 -3
  735. package/example/node_modules/neo-async/eachOfSeries.js +0 -3
  736. package/example/node_modules/neo-async/eachSeries.js +0 -3
  737. package/example/node_modules/neo-async/ensureAsync.js +0 -3
  738. package/example/node_modules/neo-async/every.js +0 -3
  739. package/example/node_modules/neo-async/everyLimit.js +0 -3
  740. package/example/node_modules/neo-async/everySeries.js +0 -3
  741. package/example/node_modules/neo-async/fast.js +0 -3
  742. package/example/node_modules/neo-async/filter.js +0 -3
  743. package/example/node_modules/neo-async/filterLimit.js +0 -3
  744. package/example/node_modules/neo-async/filterSeries.js +0 -3
  745. package/example/node_modules/neo-async/find.js +0 -3
  746. package/example/node_modules/neo-async/findLimit.js +0 -3
  747. package/example/node_modules/neo-async/findSeries.js +0 -3
  748. package/example/node_modules/neo-async/foldl.js +0 -3
  749. package/example/node_modules/neo-async/foldr.js +0 -3
  750. package/example/node_modules/neo-async/forEach.js +0 -3
  751. package/example/node_modules/neo-async/forEachLimit.js +0 -3
  752. package/example/node_modules/neo-async/forEachOf.js +0 -3
  753. package/example/node_modules/neo-async/forEachOfLimit.js +0 -3
  754. package/example/node_modules/neo-async/forEachOfSeries.js +0 -3
  755. package/example/node_modules/neo-async/forEachSeries.js +0 -3
  756. package/example/node_modules/neo-async/forever.js +0 -3
  757. package/example/node_modules/neo-async/groupBy.js +0 -3
  758. package/example/node_modules/neo-async/groupByLimit.js +0 -3
  759. package/example/node_modules/neo-async/groupBySeries.js +0 -3
  760. package/example/node_modules/neo-async/inject.js +0 -3
  761. package/example/node_modules/neo-async/iterator.js +0 -3
  762. package/example/node_modules/neo-async/log.js +0 -3
  763. package/example/node_modules/neo-async/map.js +0 -3
  764. package/example/node_modules/neo-async/mapLimit.js +0 -3
  765. package/example/node_modules/neo-async/mapSeries.js +0 -3
  766. package/example/node_modules/neo-async/mapValues.js +0 -3
  767. package/example/node_modules/neo-async/mapValuesLimit.js +0 -3
  768. package/example/node_modules/neo-async/mapValuesSeries.js +0 -3
  769. package/example/node_modules/neo-async/memoize.js +0 -3
  770. package/example/node_modules/neo-async/nextTick.js +0 -3
  771. package/example/node_modules/neo-async/omit.js +0 -3
  772. package/example/node_modules/neo-async/omitLimit.js +0 -3
  773. package/example/node_modules/neo-async/omitSeries.js +0 -3
  774. package/example/node_modules/neo-async/package.json +0 -89
  775. package/example/node_modules/neo-async/parallel.js +0 -3
  776. package/example/node_modules/neo-async/parallelLimit.js +0 -3
  777. package/example/node_modules/neo-async/pick.js +0 -3
  778. package/example/node_modules/neo-async/pickLimit.js +0 -3
  779. package/example/node_modules/neo-async/pickSeries.js +0 -3
  780. package/example/node_modules/neo-async/priorityQueue.js +0 -3
  781. package/example/node_modules/neo-async/queue.js +0 -3
  782. package/example/node_modules/neo-async/race.js +0 -3
  783. package/example/node_modules/neo-async/reduce.js +0 -3
  784. package/example/node_modules/neo-async/reduceRight.js +0 -3
  785. package/example/node_modules/neo-async/reflect.js +0 -3
  786. package/example/node_modules/neo-async/reflectAll.js +0 -3
  787. package/example/node_modules/neo-async/reject.js +0 -3
  788. package/example/node_modules/neo-async/rejectLimit.js +0 -3
  789. package/example/node_modules/neo-async/rejectSeries.js +0 -3
  790. package/example/node_modules/neo-async/retry.js +0 -3
  791. package/example/node_modules/neo-async/retryable.js +0 -3
  792. package/example/node_modules/neo-async/safe.js +0 -3
  793. package/example/node_modules/neo-async/select.js +0 -3
  794. package/example/node_modules/neo-async/selectLimit.js +0 -3
  795. package/example/node_modules/neo-async/selectSeries.js +0 -3
  796. package/example/node_modules/neo-async/seq.js +0 -3
  797. package/example/node_modules/neo-async/series.js +0 -3
  798. package/example/node_modules/neo-async/setImmediate.js +0 -3
  799. package/example/node_modules/neo-async/some.js +0 -3
  800. package/example/node_modules/neo-async/someLimit.js +0 -3
  801. package/example/node_modules/neo-async/someSeries.js +0 -3
  802. package/example/node_modules/neo-async/sortBy.js +0 -3
  803. package/example/node_modules/neo-async/sortByLimit.js +0 -3
  804. package/example/node_modules/neo-async/sortBySeries.js +0 -3
  805. package/example/node_modules/neo-async/timeout.js +0 -3
  806. package/example/node_modules/neo-async/times.js +0 -3
  807. package/example/node_modules/neo-async/timesLimit.js +0 -3
  808. package/example/node_modules/neo-async/timesSeries.js +0 -3
  809. package/example/node_modules/neo-async/transform.js +0 -3
  810. package/example/node_modules/neo-async/transformLimit.js +0 -3
  811. package/example/node_modules/neo-async/transformSeries.js +0 -3
  812. package/example/node_modules/neo-async/tryEach.js +0 -3
  813. package/example/node_modules/neo-async/unmemoize.js +0 -3
  814. package/example/node_modules/neo-async/until.js +0 -3
  815. package/example/node_modules/neo-async/waterfall.js +0 -3
  816. package/example/node_modules/neo-async/whilst.js +0 -3
  817. package/example/node_modules/neo-async/wrapSync.js +0 -3
  818. package/example/node_modules/oauth-sign/LICENSE +0 -55
  819. package/example/node_modules/oauth-sign/README.md +0 -11
  820. package/example/node_modules/oauth-sign/index.js +0 -146
  821. package/example/node_modules/oauth-sign/package.json +0 -60
  822. package/example/node_modules/optimist/.travis.yml +0 -4
  823. package/example/node_modules/optimist/LICENSE +0 -21
  824. package/example/node_modules/optimist/example/bool.js +0 -10
  825. package/example/node_modules/optimist/example/boolean_double.js +0 -7
  826. package/example/node_modules/optimist/example/boolean_single.js +0 -7
  827. package/example/node_modules/optimist/example/default_hash.js +0 -8
  828. package/example/node_modules/optimist/example/default_singles.js +0 -7
  829. package/example/node_modules/optimist/example/divide.js +0 -8
  830. package/example/node_modules/optimist/example/line_count.js +0 -20
  831. package/example/node_modules/optimist/example/line_count_options.js +0 -29
  832. package/example/node_modules/optimist/example/line_count_wrap.js +0 -29
  833. package/example/node_modules/optimist/example/nonopt.js +0 -4
  834. package/example/node_modules/optimist/example/reflect.js +0 -2
  835. package/example/node_modules/optimist/example/short.js +0 -3
  836. package/example/node_modules/optimist/example/string.js +0 -11
  837. package/example/node_modules/optimist/example/usage-options.js +0 -19
  838. package/example/node_modules/optimist/example/xup.js +0 -10
  839. package/example/node_modules/optimist/index.js +0 -343
  840. package/example/node_modules/optimist/package.json +0 -71
  841. package/example/node_modules/optimist/readme.markdown +0 -513
  842. package/example/node_modules/optimist/test/_/argv.js +0 -2
  843. package/example/node_modules/optimist/test/_/bin.js +0 -3
  844. package/example/node_modules/optimist/test/_.js +0 -71
  845. package/example/node_modules/optimist/test/dash.js +0 -31
  846. package/example/node_modules/optimist/test/parse.js +0 -446
  847. package/example/node_modules/optimist/test/parse_modified.js +0 -14
  848. package/example/node_modules/optimist/test/short.js +0 -16
  849. package/example/node_modules/optimist/test/usage.js +0 -292
  850. package/example/node_modules/optimist/test/whitespace.js +0 -8
  851. package/example/node_modules/pdf-creator-node/index.js +0 -34
  852. package/example/node_modules/pdf-creator-node/package.json +0 -58
  853. package/example/node_modules/pdf-creator-node/readme +0 -50
  854. package/example/node_modules/pend/LICENSE +0 -23
  855. package/example/node_modules/pend/README.md +0 -41
  856. package/example/node_modules/pend/index.js +0 -55
  857. package/example/node_modules/pend/package.json +0 -51
  858. package/example/node_modules/pend/test.js +0 -137
  859. package/example/node_modules/performance-now/.tm_properties +0 -7
  860. package/example/node_modules/performance-now/.travis.yml +0 -6
  861. package/example/node_modules/performance-now/README.md +0 -30
  862. package/example/node_modules/performance-now/lib/performance-now.js +0 -36
  863. package/example/node_modules/performance-now/lib/performance-now.js.map +0 -10
  864. package/example/node_modules/performance-now/license.txt +0 -7
  865. package/example/node_modules/performance-now/package.json +0 -69
  866. package/example/node_modules/performance-now/src/index.d.ts +0 -8
  867. package/example/node_modules/performance-now/src/performance-now.coffee +0 -17
  868. package/example/node_modules/performance-now/test/mocha.opts +0 -3
  869. package/example/node_modules/performance-now/test/performance-now.coffee +0 -43
  870. package/example/node_modules/performance-now/test/scripts/delayed-call.coffee +0 -11
  871. package/example/node_modules/performance-now/test/scripts/delayed-require.coffee +0 -12
  872. package/example/node_modules/performance-now/test/scripts/difference.coffee +0 -6
  873. package/example/node_modules/performance-now/test/scripts/initial-value.coffee +0 -10
  874. package/example/node_modules/performance-now/test/scripts.coffee +0 -27
  875. package/example/node_modules/phantomjs-prebuilt/.eslintignore +0 -2
  876. package/example/node_modules/phantomjs-prebuilt/.eslintrc +0 -22
  877. package/example/node_modules/phantomjs-prebuilt/.jshintrc +0 -4
  878. package/example/node_modules/phantomjs-prebuilt/.travis.yml +0 -7
  879. package/example/node_modules/phantomjs-prebuilt/LICENSE.txt +0 -194
  880. package/example/node_modules/phantomjs-prebuilt/README.md +0 -308
  881. package/example/node_modules/phantomjs-prebuilt/bin/phantomjs +0 -42
  882. package/example/node_modules/phantomjs-prebuilt/install.js +0 -438
  883. package/example/node_modules/phantomjs-prebuilt/lib/phantomjs.js +0 -124
  884. package/example/node_modules/phantomjs-prebuilt/lib/util.js +0 -161
  885. package/example/node_modules/phantomjs-prebuilt/package.json +0 -89
  886. package/example/node_modules/phantomjs-prebuilt/test/exit.js +0 -1
  887. package/example/node_modules/phantomjs-prebuilt/test/loadspeed.js +0 -25
  888. package/example/node_modules/phantomjs-prebuilt/test/tests.js +0 -136
  889. package/example/node_modules/pinkie/index.js +0 -292
  890. package/example/node_modules/pinkie/license +0 -21
  891. package/example/node_modules/pinkie/package.json +0 -72
  892. package/example/node_modules/pinkie/readme.md +0 -83
  893. package/example/node_modules/pinkie-promise/index.js +0 -3
  894. package/example/node_modules/pinkie-promise/license +0 -21
  895. package/example/node_modules/pinkie-promise/package.json +0 -71
  896. package/example/node_modules/pinkie-promise/readme.md +0 -28
  897. package/example/node_modules/process-nextick-args/index.js +0 -45
  898. package/example/node_modules/process-nextick-args/license.md +0 -19
  899. package/example/node_modules/process-nextick-args/package.json +0 -54
  900. package/example/node_modules/process-nextick-args/readme.md +0 -18
  901. package/example/node_modules/progress/History.md +0 -77
  902. package/example/node_modules/progress/LICENSE +0 -22
  903. package/example/node_modules/progress/Makefile +0 -8
  904. package/example/node_modules/progress/Readme.md +0 -103
  905. package/example/node_modules/progress/index.js +0 -1
  906. package/example/node_modules/progress/lib/node-progress.js +0 -180
  907. package/example/node_modules/progress/package.json +0 -65
  908. package/example/node_modules/psl/.eslintignore +0 -1
  909. package/example/node_modules/psl/.eslintrc +0 -11
  910. package/example/node_modules/psl/.travis.yml +0 -5
  911. package/example/node_modules/psl/LICENSE +0 -9
  912. package/example/node_modules/psl/README.md +0 -213
  913. package/example/node_modules/psl/data/rules.json +0 -1
  914. package/example/node_modules/psl/dist/psl.js +0 -812
  915. package/example/node_modules/psl/dist/psl.min.js +0 -1
  916. package/example/node_modules/psl/index.js +0 -269
  917. package/example/node_modules/psl/karma.conf.js +0 -38
  918. package/example/node_modules/psl/package.json +0 -77
  919. package/example/node_modules/punycode/LICENSE-MIT.txt +0 -20
  920. package/example/node_modules/punycode/README.md +0 -122
  921. package/example/node_modules/punycode/package.json +0 -89
  922. package/example/node_modules/punycode/punycode.es6.js +0 -441
  923. package/example/node_modules/punycode/punycode.js +0 -440
  924. package/example/node_modules/qs/.editorconfig +0 -30
  925. package/example/node_modules/qs/.eslintignore +0 -1
  926. package/example/node_modules/qs/.eslintrc +0 -19
  927. package/example/node_modules/qs/CHANGELOG.md +0 -226
  928. package/example/node_modules/qs/LICENSE +0 -28
  929. package/example/node_modules/qs/README.md +0 -475
  930. package/example/node_modules/qs/dist/qs.js +0 -638
  931. package/example/node_modules/qs/lib/formats.js +0 -18
  932. package/example/node_modules/qs/lib/index.js +0 -11
  933. package/example/node_modules/qs/lib/parse.js +0 -174
  934. package/example/node_modules/qs/lib/stringify.js +0 -210
  935. package/example/node_modules/qs/lib/utils.js +0 -213
  936. package/example/node_modules/qs/package.json +0 -84
  937. package/example/node_modules/qs/test/.eslintrc +0 -15
  938. package/example/node_modules/qs/test/index.js +0 -7
  939. package/example/node_modules/qs/test/parse.js +0 -574
  940. package/example/node_modules/qs/test/stringify.js +0 -597
  941. package/example/node_modules/qs/test/utils.js +0 -34
  942. package/example/node_modules/readable-stream/.travis.yml +0 -55
  943. package/example/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  944. package/example/node_modules/readable-stream/GOVERNANCE.md +0 -136
  945. package/example/node_modules/readable-stream/LICENSE +0 -47
  946. package/example/node_modules/readable-stream/README.md +0 -58
  947. package/example/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  948. package/example/node_modules/readable-stream/duplex-browser.js +0 -1
  949. package/example/node_modules/readable-stream/duplex.js +0 -1
  950. package/example/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  951. package/example/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  952. package/example/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  953. package/example/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  954. package/example/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  955. package/example/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  956. package/example/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  957. package/example/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  958. package/example/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  959. package/example/node_modules/readable-stream/package.json +0 -85
  960. package/example/node_modules/readable-stream/passthrough.js +0 -1
  961. package/example/node_modules/readable-stream/readable-browser.js +0 -7
  962. package/example/node_modules/readable-stream/readable.js +0 -19
  963. package/example/node_modules/readable-stream/transform.js +0 -1
  964. package/example/node_modules/readable-stream/writable-browser.js +0 -1
  965. package/example/node_modules/readable-stream/writable.js +0 -8
  966. package/example/node_modules/request/CHANGELOG.md +0 -709
  967. package/example/node_modules/request/LICENSE +0 -55
  968. package/example/node_modules/request/README.md +0 -1097
  969. package/example/node_modules/request/index.js +0 -155
  970. package/example/node_modules/request/lib/auth.js +0 -167
  971. package/example/node_modules/request/lib/cookies.js +0 -38
  972. package/example/node_modules/request/lib/getProxyFromURI.js +0 -79
  973. package/example/node_modules/request/lib/har.js +0 -205
  974. package/example/node_modules/request/lib/hawk.js +0 -89
  975. package/example/node_modules/request/lib/helpers.js +0 -66
  976. package/example/node_modules/request/lib/multipart.js +0 -112
  977. package/example/node_modules/request/lib/oauth.js +0 -148
  978. package/example/node_modules/request/lib/querystring.js +0 -50
  979. package/example/node_modules/request/lib/redirect.js +0 -154
  980. package/example/node_modules/request/lib/tunnel.js +0 -175
  981. package/example/node_modules/request/package.json +0 -119
  982. package/example/node_modules/request/request.js +0 -1551
  983. package/example/node_modules/request-progress/.editorconfig +0 -15
  984. package/example/node_modules/request-progress/.jshintrc +0 -63
  985. package/example/node_modules/request-progress/.travis.yml +0 -6
  986. package/example/node_modules/request-progress/LICENSE +0 -19
  987. package/example/node_modules/request-progress/README.md +0 -75
  988. package/example/node_modules/request-progress/foo.js +0 -16
  989. package/example/node_modules/request-progress/index.js +0 -125
  990. package/example/node_modules/request-progress/package.json +0 -75
  991. package/example/node_modules/request-progress/test/test.js +0 -354
  992. package/example/node_modules/safe-buffer/LICENSE +0 -21
  993. package/example/node_modules/safe-buffer/README.md +0 -584
  994. package/example/node_modules/safe-buffer/index.d.ts +0 -187
  995. package/example/node_modules/safe-buffer/index.js +0 -62
  996. package/example/node_modules/safe-buffer/package.json +0 -69
  997. package/example/node_modules/safer-buffer/LICENSE +0 -21
  998. package/example/node_modules/safer-buffer/Porting-Buffer.md +0 -268
  999. package/example/node_modules/safer-buffer/Readme.md +0 -156
  1000. package/example/node_modules/safer-buffer/dangerous.js +0 -58
  1001. package/example/node_modules/safer-buffer/package.json +0 -66
  1002. package/example/node_modules/safer-buffer/safer.js +0 -77
  1003. package/example/node_modules/safer-buffer/tests.js +0 -406
  1004. package/example/node_modules/source-map/CHANGELOG.md +0 -301
  1005. package/example/node_modules/source-map/LICENSE +0 -28
  1006. package/example/node_modules/source-map/README.md +0 -742
  1007. package/example/node_modules/source-map/dist/source-map.debug.js +0 -3234
  1008. package/example/node_modules/source-map/dist/source-map.js +0 -3233
  1009. package/example/node_modules/source-map/dist/source-map.min.js +0 -2
  1010. package/example/node_modules/source-map/dist/source-map.min.js.map +0 -1
  1011. package/example/node_modules/source-map/lib/array-set.js +0 -121
  1012. package/example/node_modules/source-map/lib/base64-vlq.js +0 -140
  1013. package/example/node_modules/source-map/lib/base64.js +0 -67
  1014. package/example/node_modules/source-map/lib/binary-search.js +0 -111
  1015. package/example/node_modules/source-map/lib/mapping-list.js +0 -79
  1016. package/example/node_modules/source-map/lib/quick-sort.js +0 -114
  1017. package/example/node_modules/source-map/lib/source-map-consumer.js +0 -1145
  1018. package/example/node_modules/source-map/lib/source-map-generator.js +0 -425
  1019. package/example/node_modules/source-map/lib/source-node.js +0 -413
  1020. package/example/node_modules/source-map/lib/util.js +0 -488
  1021. package/example/node_modules/source-map/package.json +0 -216
  1022. package/example/node_modules/source-map/source-map.d.ts +0 -98
  1023. package/example/node_modules/source-map/source-map.js +0 -8
  1024. package/example/node_modules/sshpk/.travis.yml +0 -11
  1025. package/example/node_modules/sshpk/LICENSE +0 -18
  1026. package/example/node_modules/sshpk/README.md +0 -804
  1027. package/example/node_modules/sshpk/bin/sshpk-conv +0 -243
  1028. package/example/node_modules/sshpk/bin/sshpk-sign +0 -191
  1029. package/example/node_modules/sshpk/bin/sshpk-verify +0 -167
  1030. package/example/node_modules/sshpk/lib/algs.js +0 -168
  1031. package/example/node_modules/sshpk/lib/certificate.js +0 -410
  1032. package/example/node_modules/sshpk/lib/dhe.js +0 -397
  1033. package/example/node_modules/sshpk/lib/ed-compat.js +0 -92
  1034. package/example/node_modules/sshpk/lib/errors.js +0 -84
  1035. package/example/node_modules/sshpk/lib/fingerprint.js +0 -220
  1036. package/example/node_modules/sshpk/lib/formats/auto.js +0 -124
  1037. package/example/node_modules/sshpk/lib/formats/dnssec.js +0 -287
  1038. package/example/node_modules/sshpk/lib/formats/openssh-cert.js +0 -352
  1039. package/example/node_modules/sshpk/lib/formats/pem.js +0 -290
  1040. package/example/node_modules/sshpk/lib/formats/pkcs1.js +0 -373
  1041. package/example/node_modules/sshpk/lib/formats/pkcs8.js +0 -631
  1042. package/example/node_modules/sshpk/lib/formats/putty.js +0 -99
  1043. package/example/node_modules/sshpk/lib/formats/rfc4253.js +0 -166
  1044. package/example/node_modules/sshpk/lib/formats/ssh-private.js +0 -262
  1045. package/example/node_modules/sshpk/lib/formats/ssh.js +0 -115
  1046. package/example/node_modules/sshpk/lib/formats/x509-pem.js +0 -88
  1047. package/example/node_modules/sshpk/lib/formats/x509.js +0 -752
  1048. package/example/node_modules/sshpk/lib/identity.js +0 -373
  1049. package/example/node_modules/sshpk/lib/index.js +0 -40
  1050. package/example/node_modules/sshpk/lib/key.js +0 -294
  1051. package/example/node_modules/sshpk/lib/private-key.js +0 -246
  1052. package/example/node_modules/sshpk/lib/signature.js +0 -314
  1053. package/example/node_modules/sshpk/lib/ssh-buffer.js +0 -149
  1054. package/example/node_modules/sshpk/lib/utils.js +0 -404
  1055. package/example/node_modules/sshpk/man/man1/sshpk-conv.1 +0 -135
  1056. package/example/node_modules/sshpk/man/man1/sshpk-sign.1 +0 -81
  1057. package/example/node_modules/sshpk/man/man1/sshpk-verify.1 +0 -68
  1058. package/example/node_modules/sshpk/package.json +0 -100
  1059. package/example/node_modules/string_decoder/.travis.yml +0 -50
  1060. package/example/node_modules/string_decoder/LICENSE +0 -48
  1061. package/example/node_modules/string_decoder/README.md +0 -47
  1062. package/example/node_modules/string_decoder/lib/string_decoder.js +0 -296
  1063. package/example/node_modules/string_decoder/package.json +0 -63
  1064. package/example/node_modules/throttleit/History.md +0 -19
  1065. package/example/node_modules/throttleit/Makefile +0 -18
  1066. package/example/node_modules/throttleit/Readme.md +0 -32
  1067. package/example/node_modules/throttleit/component.json +0 -13
  1068. package/example/node_modules/throttleit/example.js +0 -14
  1069. package/example/node_modules/throttleit/index.js +0 -32
  1070. package/example/node_modules/throttleit/package.json +0 -55
  1071. package/example/node_modules/throttleit/test.js +0 -73
  1072. package/example/node_modules/tough-cookie/LICENSE +0 -12
  1073. package/example/node_modules/tough-cookie/README.md +0 -507
  1074. package/example/node_modules/tough-cookie/lib/cookie.js +0 -1431
  1075. package/example/node_modules/tough-cookie/lib/memstore.js +0 -176
  1076. package/example/node_modules/tough-cookie/lib/pathMatch.js +0 -61
  1077. package/example/node_modules/tough-cookie/lib/permuteDomain.js +0 -56
  1078. package/example/node_modules/tough-cookie/lib/pubsuffix-psl.js +0 -38
  1079. package/example/node_modules/tough-cookie/lib/store.js +0 -71
  1080. package/example/node_modules/tough-cookie/package.json +0 -98
  1081. package/example/node_modules/tunnel-agent/LICENSE +0 -55
  1082. package/example/node_modules/tunnel-agent/README.md +0 -4
  1083. package/example/node_modules/tunnel-agent/index.js +0 -244
  1084. package/example/node_modules/tunnel-agent/package.json +0 -59
  1085. package/example/node_modules/tweetnacl/AUTHORS.md +0 -28
  1086. package/example/node_modules/tweetnacl/CHANGELOG.md +0 -221
  1087. package/example/node_modules/tweetnacl/LICENSE +0 -24
  1088. package/example/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md +0 -20
  1089. package/example/node_modules/tweetnacl/README.md +0 -459
  1090. package/example/node_modules/tweetnacl/nacl-fast.js +0 -2388
  1091. package/example/node_modules/tweetnacl/nacl-fast.min.js +0 -2
  1092. package/example/node_modules/tweetnacl/nacl.d.ts +0 -98
  1093. package/example/node_modules/tweetnacl/nacl.js +0 -1175
  1094. package/example/node_modules/tweetnacl/nacl.min.js +0 -1
  1095. package/example/node_modules/tweetnacl/package.json +0 -90
  1096. package/example/node_modules/typedarray/.travis.yml +0 -4
  1097. package/example/node_modules/typedarray/LICENSE +0 -35
  1098. package/example/node_modules/typedarray/example/tarray.js +0 -4
  1099. package/example/node_modules/typedarray/index.js +0 -630
  1100. package/example/node_modules/typedarray/package.json +0 -87
  1101. package/example/node_modules/typedarray/readme.markdown +0 -61
  1102. package/example/node_modules/typedarray/test/server/undef_globals.js +0 -19
  1103. package/example/node_modules/typedarray/test/tarray.js +0 -10
  1104. package/example/node_modules/uglify-js/LICENSE +0 -29
  1105. package/example/node_modules/uglify-js/README.md +0 -1138
  1106. package/example/node_modules/uglify-js/bin/uglifyjs +0 -419
  1107. package/example/node_modules/uglify-js/lib/ast.js +0 -988
  1108. package/example/node_modules/uglify-js/lib/compress.js +0 -6927
  1109. package/example/node_modules/uglify-js/lib/minify.js +0 -245
  1110. package/example/node_modules/uglify-js/lib/mozilla-ast.js +0 -629
  1111. package/example/node_modules/uglify-js/lib/output.js +0 -1510
  1112. package/example/node_modules/uglify-js/lib/parse.js +0 -1645
  1113. package/example/node_modules/uglify-js/lib/propmangle.js +0 -234
  1114. package/example/node_modules/uglify-js/lib/scope.js +0 -594
  1115. package/example/node_modules/uglify-js/lib/sourcemap.js +0 -104
  1116. package/example/node_modules/uglify-js/lib/transform.js +0 -185
  1117. package/example/node_modules/uglify-js/lib/utils.js +0 -277
  1118. package/example/node_modules/uglify-js/package.json +0 -107
  1119. package/example/node_modules/uglify-js/tools/domprops.json +0 -6841
  1120. package/example/node_modules/uglify-js/tools/exit.js +0 -15
  1121. package/example/node_modules/uglify-js/tools/exports.js +0 -6
  1122. package/example/node_modules/uglify-js/tools/node.js +0 -78
  1123. package/example/node_modules/uglify-js/tools/props.html +0 -540
  1124. package/example/node_modules/uri-js/README.md +0 -199
  1125. package/example/node_modules/uri-js/bower.json +0 -47
  1126. package/example/node_modules/uri-js/dist/es5/uri.all.d.ts +0 -59
  1127. package/example/node_modules/uri-js/dist/es5/uri.all.js +0 -1389
  1128. package/example/node_modules/uri-js/dist/es5/uri.all.js.map +0 -1
  1129. package/example/node_modules/uri-js/dist/es5/uri.all.min.d.ts +0 -59
  1130. package/example/node_modules/uri-js/dist/es5/uri.all.min.js +0 -3
  1131. package/example/node_modules/uri-js/dist/es5/uri.all.min.js.map +0 -1
  1132. package/example/node_modules/uri-js/dist/esnext/index.d.ts +0 -1
  1133. package/example/node_modules/uri-js/dist/esnext/index.js +0 -13
  1134. package/example/node_modules/uri-js/dist/esnext/index.js.map +0 -1
  1135. package/example/node_modules/uri-js/dist/esnext/regexps-iri.d.ts +0 -3
  1136. package/example/node_modules/uri-js/dist/esnext/regexps-iri.js +0 -3
  1137. package/example/node_modules/uri-js/dist/esnext/regexps-iri.js.map +0 -1
  1138. package/example/node_modules/uri-js/dist/esnext/regexps-uri.d.ts +0 -4
  1139. package/example/node_modules/uri-js/dist/esnext/regexps-uri.js +0 -42
  1140. package/example/node_modules/uri-js/dist/esnext/regexps-uri.js.map +0 -1
  1141. package/example/node_modules/uri-js/dist/esnext/schemes/http.d.ts +0 -3
  1142. package/example/node_modules/uri-js/dist/esnext/schemes/http.js +0 -27
  1143. package/example/node_modules/uri-js/dist/esnext/schemes/http.js.map +0 -1
  1144. package/example/node_modules/uri-js/dist/esnext/schemes/https.d.ts +0 -3
  1145. package/example/node_modules/uri-js/dist/esnext/schemes/https.js +0 -9
  1146. package/example/node_modules/uri-js/dist/esnext/schemes/https.js.map +0 -1
  1147. package/example/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts +0 -12
  1148. package/example/node_modules/uri-js/dist/esnext/schemes/mailto.js +0 -148
  1149. package/example/node_modules/uri-js/dist/esnext/schemes/mailto.js.map +0 -1
  1150. package/example/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts +0 -7
  1151. package/example/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js +0 -23
  1152. package/example/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map +0 -1
  1153. package/example/node_modules/uri-js/dist/esnext/schemes/urn.d.ts +0 -10
  1154. package/example/node_modules/uri-js/dist/esnext/schemes/urn.js +0 -49
  1155. package/example/node_modules/uri-js/dist/esnext/schemes/urn.js.map +0 -1
  1156. package/example/node_modules/uri-js/dist/esnext/uri.d.ts +0 -59
  1157. package/example/node_modules/uri-js/dist/esnext/uri.js +0 -480
  1158. package/example/node_modules/uri-js/dist/esnext/uri.js.map +0 -1
  1159. package/example/node_modules/uri-js/dist/esnext/util.d.ts +0 -6
  1160. package/example/node_modules/uri-js/dist/esnext/util.js +0 -36
  1161. package/example/node_modules/uri-js/dist/esnext/util.js.map +0 -1
  1162. package/example/node_modules/uri-js/package.json +0 -97
  1163. package/example/node_modules/uri-js/rollup.config.js +0 -32
  1164. package/example/node_modules/uri-js/src/index.ts +0 -18
  1165. package/example/node_modules/uri-js/src/punycode.d.ts +0 -24
  1166. package/example/node_modules/uri-js/src/regexps-iri.ts +0 -4
  1167. package/example/node_modules/uri-js/src/regexps-uri.ts +0 -89
  1168. package/example/node_modules/uri-js/src/schemes/http.ts +0 -36
  1169. package/example/node_modules/uri-js/src/schemes/https.ts +0 -11
  1170. package/example/node_modules/uri-js/src/schemes/mailto.ts +0 -182
  1171. package/example/node_modules/uri-js/src/schemes/urn-uuid.ts +0 -36
  1172. package/example/node_modules/uri-js/src/schemes/urn.ts +0 -69
  1173. package/example/node_modules/uri-js/src/uri.ts +0 -556
  1174. package/example/node_modules/uri-js/src/util.ts +0 -40
  1175. package/example/node_modules/uri-js/tests/qunit.css +0 -118
  1176. package/example/node_modules/uri-js/tests/qunit.js +0 -1042
  1177. package/example/node_modules/uri-js/tests/test-es5-min.html +0 -17
  1178. package/example/node_modules/uri-js/tests/test-es5.html +0 -17
  1179. package/example/node_modules/uri-js/tests/tests.js +0 -774
  1180. package/example/node_modules/uri-js/tsconfig.json +0 -20
  1181. package/example/node_modules/uri-js/yarn.lock +0 -1902
  1182. package/example/node_modules/util-deprecate/History.md +0 -16
  1183. package/example/node_modules/util-deprecate/LICENSE +0 -24
  1184. package/example/node_modules/util-deprecate/README.md +0 -53
  1185. package/example/node_modules/util-deprecate/browser.js +0 -67
  1186. package/example/node_modules/util-deprecate/node.js +0 -6
  1187. package/example/node_modules/util-deprecate/package.json +0 -60
  1188. package/example/node_modules/uuid/.eslintrc.json +0 -47
  1189. package/example/node_modules/uuid/AUTHORS +0 -5
  1190. package/example/node_modules/uuid/CHANGELOG.md +0 -110
  1191. package/example/node_modules/uuid/LICENSE.md +0 -21
  1192. package/example/node_modules/uuid/README.md +0 -293
  1193. package/example/node_modules/uuid/README_js.md +0 -280
  1194. package/example/node_modules/uuid/bin/uuid +0 -65
  1195. package/example/node_modules/uuid/index.js +0 -8
  1196. package/example/node_modules/uuid/lib/bytesToUuid.js +0 -24
  1197. package/example/node_modules/uuid/lib/md5-browser.js +0 -216
  1198. package/example/node_modules/uuid/lib/md5.js +0 -25
  1199. package/example/node_modules/uuid/lib/rng-browser.js +0 -34
  1200. package/example/node_modules/uuid/lib/rng.js +0 -8
  1201. package/example/node_modules/uuid/lib/sha1-browser.js +0 -89
  1202. package/example/node_modules/uuid/lib/sha1.js +0 -25
  1203. package/example/node_modules/uuid/lib/v35.js +0 -57
  1204. package/example/node_modules/uuid/package.json +0 -99
  1205. package/example/node_modules/uuid/v1.js +0 -109
  1206. package/example/node_modules/uuid/v3.js +0 -4
  1207. package/example/node_modules/uuid/v4.js +0 -29
  1208. package/example/node_modules/uuid/v5.js +0 -3
  1209. package/example/node_modules/verror/CHANGES.md +0 -28
  1210. package/example/node_modules/verror/CONTRIBUTING.md +0 -19
  1211. package/example/node_modules/verror/LICENSE +0 -19
  1212. package/example/node_modules/verror/README.md +0 -528
  1213. package/example/node_modules/verror/lib/verror.js +0 -451
  1214. package/example/node_modules/verror/package.json +0 -55
  1215. package/example/node_modules/which/CHANGELOG.md +0 -152
  1216. package/example/node_modules/which/LICENSE +0 -15
  1217. package/example/node_modules/which/README.md +0 -51
  1218. package/example/node_modules/which/bin/which +0 -52
  1219. package/example/node_modules/which/package.json +0 -69
  1220. package/example/node_modules/which/which.js +0 -135
  1221. package/example/node_modules/wordwrap/LICENSE +0 -18
  1222. package/example/node_modules/wordwrap/README.markdown +0 -70
  1223. package/example/node_modules/wordwrap/example/center.js +0 -10
  1224. package/example/node_modules/wordwrap/example/meat.js +0 -3
  1225. package/example/node_modules/wordwrap/index.js +0 -76
  1226. package/example/node_modules/wordwrap/package.json +0 -69
  1227. package/example/node_modules/wordwrap/test/break.js +0 -30
  1228. package/example/node_modules/wordwrap/test/idleness.txt +0 -63
  1229. package/example/node_modules/wordwrap/test/wrap.js +0 -31
  1230. package/example/node_modules/yauzl/.travis.yml +0 -8
  1231. package/example/node_modules/yauzl/LICENSE +0 -21
  1232. package/example/node_modules/yauzl/README.md +0 -467
  1233. package/example/node_modules/yauzl/index.js +0 -626
  1234. package/example/node_modules/yauzl/package.json +0 -68
  1235. package/example/output.pdf +0 -0
  1236. package/example/package-lock.json +0 -738
  1237. package/example/package.json +0 -14
  1238. package/example/template.html +0 -19
@@ -1,1131 +0,0 @@
1
- 'use strict';
2
-
3
- exports.__esModule = true;
4
- // istanbul ignore next
5
-
6
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7
-
8
- var _base = require('../base');
9
-
10
- var _exception = require('../exception');
11
-
12
- var _exception2 = _interopRequireDefault(_exception);
13
-
14
- var _utils = require('../utils');
15
-
16
- var _codeGen = require('./code-gen');
17
-
18
- var _codeGen2 = _interopRequireDefault(_codeGen);
19
-
20
- function Literal(value) {
21
- this.value = value;
22
- }
23
-
24
- function JavaScriptCompiler() {}
25
-
26
- JavaScriptCompiler.prototype = {
27
- // PUBLIC API: You can override these methods in a subclass to provide
28
- // alternative compiled forms for name lookup and buffering semantics
29
- nameLookup: function nameLookup(parent, name /* , type*/) {
30
- if (name === 'constructor') {
31
- return ['(', parent, '.propertyIsEnumerable(\'constructor\') ? ', parent, '.constructor : undefined', ')'];
32
- }
33
- if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
34
- return [parent, '.', name];
35
- } else {
36
- return [parent, '[', JSON.stringify(name), ']'];
37
- }
38
- },
39
- depthedLookup: function depthedLookup(name) {
40
- return [this.aliasable('container.lookup'), '(depths, "', name, '")'];
41
- },
42
-
43
- compilerInfo: function compilerInfo() {
44
- var revision = _base.COMPILER_REVISION,
45
- versions = _base.REVISION_CHANGES[revision];
46
- return [revision, versions];
47
- },
48
-
49
- appendToBuffer: function appendToBuffer(source, location, explicit) {
50
- // Force a source as this simplifies the merge logic.
51
- if (!_utils.isArray(source)) {
52
- source = [source];
53
- }
54
- source = this.source.wrap(source, location);
55
-
56
- if (this.environment.isSimple) {
57
- return ['return ', source, ';'];
58
- } else if (explicit) {
59
- // This is a case where the buffer operation occurs as a child of another
60
- // construct, generally braces. We have to explicitly output these buffer
61
- // operations to ensure that the emitted code goes in the correct location.
62
- return ['buffer += ', source, ';'];
63
- } else {
64
- source.appendToBuffer = true;
65
- return source;
66
- }
67
- },
68
-
69
- initializeBuffer: function initializeBuffer() {
70
- return this.quotedString('');
71
- },
72
- // END PUBLIC API
73
-
74
- compile: function compile(environment, options, context, asObject) {
75
- this.environment = environment;
76
- this.options = options;
77
- this.stringParams = this.options.stringParams;
78
- this.trackIds = this.options.trackIds;
79
- this.precompile = !asObject;
80
-
81
- this.name = this.environment.name;
82
- this.isChild = !!context;
83
- this.context = context || {
84
- decorators: [],
85
- programs: [],
86
- environments: []
87
- };
88
-
89
- this.preamble();
90
-
91
- this.stackSlot = 0;
92
- this.stackVars = [];
93
- this.aliases = {};
94
- this.registers = { list: [] };
95
- this.hashes = [];
96
- this.compileStack = [];
97
- this.inlineStack = [];
98
- this.blockParams = [];
99
-
100
- this.compileChildren(environment, options);
101
-
102
- this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat;
103
- this.useBlockParams = this.useBlockParams || environment.useBlockParams;
104
-
105
- var opcodes = environment.opcodes,
106
- opcode = undefined,
107
- firstLoc = undefined,
108
- i = undefined,
109
- l = undefined;
110
-
111
- for (i = 0, l = opcodes.length; i < l; i++) {
112
- opcode = opcodes[i];
113
-
114
- this.source.currentLocation = opcode.loc;
115
- firstLoc = firstLoc || opcode.loc;
116
- this[opcode.opcode].apply(this, opcode.args);
117
- }
118
-
119
- // Flush any trailing content that might be pending.
120
- this.source.currentLocation = firstLoc;
121
- this.pushSource('');
122
-
123
- /* istanbul ignore next */
124
- if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {
125
- throw new _exception2['default']('Compile completed with content left on stack');
126
- }
127
-
128
- if (!this.decorators.isEmpty()) {
129
- this.useDecorators = true;
130
-
131
- this.decorators.prepend('var decorators = container.decorators;\n');
132
- this.decorators.push('return fn;');
133
-
134
- if (asObject) {
135
- this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]);
136
- } else {
137
- this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\n');
138
- this.decorators.push('}\n');
139
- this.decorators = this.decorators.merge();
140
- }
141
- } else {
142
- this.decorators = undefined;
143
- }
144
-
145
- var fn = this.createFunctionContext(asObject);
146
- if (!this.isChild) {
147
- var ret = {
148
- compiler: this.compilerInfo(),
149
- main: fn
150
- };
151
-
152
- if (this.decorators) {
153
- ret.main_d = this.decorators; // eslint-disable-line camelcase
154
- ret.useDecorators = true;
155
- }
156
-
157
- var _context = this.context;
158
- var programs = _context.programs;
159
- var decorators = _context.decorators;
160
-
161
- for (i = 0, l = programs.length; i < l; i++) {
162
- if (programs[i]) {
163
- ret[i] = programs[i];
164
- if (decorators[i]) {
165
- ret[i + '_d'] = decorators[i];
166
- ret.useDecorators = true;
167
- }
168
- }
169
- }
170
-
171
- if (this.environment.usePartial) {
172
- ret.usePartial = true;
173
- }
174
- if (this.options.data) {
175
- ret.useData = true;
176
- }
177
- if (this.useDepths) {
178
- ret.useDepths = true;
179
- }
180
- if (this.useBlockParams) {
181
- ret.useBlockParams = true;
182
- }
183
- if (this.options.compat) {
184
- ret.compat = true;
185
- }
186
-
187
- if (!asObject) {
188
- ret.compiler = JSON.stringify(ret.compiler);
189
-
190
- this.source.currentLocation = { start: { line: 1, column: 0 } };
191
- ret = this.objectLiteral(ret);
192
-
193
- if (options.srcName) {
194
- ret = ret.toStringWithSourceMap({ file: options.destName });
195
- ret.map = ret.map && ret.map.toString();
196
- } else {
197
- ret = ret.toString();
198
- }
199
- } else {
200
- ret.compilerOptions = this.options;
201
- }
202
-
203
- return ret;
204
- } else {
205
- return fn;
206
- }
207
- },
208
-
209
- preamble: function preamble() {
210
- // track the last context pushed into place to allow skipping the
211
- // getContext opcode when it would be a noop
212
- this.lastContext = 0;
213
- this.source = new _codeGen2['default'](this.options.srcName);
214
- this.decorators = new _codeGen2['default'](this.options.srcName);
215
- },
216
-
217
- createFunctionContext: function createFunctionContext(asObject) {
218
- var varDeclarations = '';
219
-
220
- var locals = this.stackVars.concat(this.registers.list);
221
- if (locals.length > 0) {
222
- varDeclarations += ', ' + locals.join(', ');
223
- }
224
-
225
- // Generate minimizer alias mappings
226
- //
227
- // When using true SourceNodes, this will update all references to the given alias
228
- // as the source nodes are reused in situ. For the non-source node compilation mode,
229
- // aliases will not be used, but this case is already being run on the client and
230
- // we aren't concern about minimizing the template size.
231
- var aliasCount = 0;
232
- for (var alias in this.aliases) {
233
- // eslint-disable-line guard-for-in
234
- var node = this.aliases[alias];
235
-
236
- if (this.aliases.hasOwnProperty(alias) && node.children && node.referenceCount > 1) {
237
- varDeclarations += ', alias' + ++aliasCount + '=' + alias;
238
- node.children[0] = 'alias' + aliasCount;
239
- }
240
- }
241
-
242
- var params = ['container', 'depth0', 'helpers', 'partials', 'data'];
243
-
244
- if (this.useBlockParams || this.useDepths) {
245
- params.push('blockParams');
246
- }
247
- if (this.useDepths) {
248
- params.push('depths');
249
- }
250
-
251
- // Perform a second pass over the output to merge content when possible
252
- var source = this.mergeSource(varDeclarations);
253
-
254
- if (asObject) {
255
- params.push(source);
256
-
257
- return Function.apply(this, params);
258
- } else {
259
- return this.source.wrap(['function(', params.join(','), ') {\n ', source, '}']);
260
- }
261
- },
262
- mergeSource: function mergeSource(varDeclarations) {
263
- var isSimple = this.environment.isSimple,
264
- appendOnly = !this.forceBuffer,
265
- appendFirst = undefined,
266
- sourceSeen = undefined,
267
- bufferStart = undefined,
268
- bufferEnd = undefined;
269
- this.source.each(function (line) {
270
- if (line.appendToBuffer) {
271
- if (bufferStart) {
272
- line.prepend(' + ');
273
- } else {
274
- bufferStart = line;
275
- }
276
- bufferEnd = line;
277
- } else {
278
- if (bufferStart) {
279
- if (!sourceSeen) {
280
- appendFirst = true;
281
- } else {
282
- bufferStart.prepend('buffer += ');
283
- }
284
- bufferEnd.add(';');
285
- bufferStart = bufferEnd = undefined;
286
- }
287
-
288
- sourceSeen = true;
289
- if (!isSimple) {
290
- appendOnly = false;
291
- }
292
- }
293
- });
294
-
295
- if (appendOnly) {
296
- if (bufferStart) {
297
- bufferStart.prepend('return ');
298
- bufferEnd.add(';');
299
- } else if (!sourceSeen) {
300
- this.source.push('return "";');
301
- }
302
- } else {
303
- varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());
304
-
305
- if (bufferStart) {
306
- bufferStart.prepend('return buffer + ');
307
- bufferEnd.add(';');
308
- } else {
309
- this.source.push('return buffer;');
310
- }
311
- }
312
-
313
- if (varDeclarations) {
314
- this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n'));
315
- }
316
-
317
- return this.source.merge();
318
- },
319
-
320
- // [blockValue]
321
- //
322
- // On stack, before: hash, inverse, program, value
323
- // On stack, after: return value of blockHelperMissing
324
- //
325
- // The purpose of this opcode is to take a block of the form
326
- // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and
327
- // replace it on the stack with the result of properly
328
- // invoking blockHelperMissing.
329
- blockValue: function blockValue(name) {
330
- var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'),
331
- params = [this.contextName(0)];
332
- this.setupHelperArgs(name, 0, params);
333
-
334
- var blockName = this.popStack();
335
- params.splice(1, 0, blockName);
336
-
337
- this.push(this.source.functionCall(blockHelperMissing, 'call', params));
338
- },
339
-
340
- // [ambiguousBlockValue]
341
- //
342
- // On stack, before: hash, inverse, program, value
343
- // Compiler value, before: lastHelper=value of last found helper, if any
344
- // On stack, after, if no lastHelper: same as [blockValue]
345
- // On stack, after, if lastHelper: value
346
- ambiguousBlockValue: function ambiguousBlockValue() {
347
- // We're being a bit cheeky and reusing the options value from the prior exec
348
- var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'),
349
- params = [this.contextName(0)];
350
- this.setupHelperArgs('', 0, params, true);
351
-
352
- this.flushInline();
353
-
354
- var current = this.topStack();
355
- params.splice(1, 0, current);
356
-
357
- this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']);
358
- },
359
-
360
- // [appendContent]
361
- //
362
- // On stack, before: ...
363
- // On stack, after: ...
364
- //
365
- // Appends the string value of `content` to the current buffer
366
- appendContent: function appendContent(content) {
367
- if (this.pendingContent) {
368
- content = this.pendingContent + content;
369
- } else {
370
- this.pendingLocation = this.source.currentLocation;
371
- }
372
-
373
- this.pendingContent = content;
374
- },
375
-
376
- // [append]
377
- //
378
- // On stack, before: value, ...
379
- // On stack, after: ...
380
- //
381
- // Coerces `value` to a String and appends it to the current buffer.
382
- //
383
- // If `value` is truthy, or 0, it is coerced into a string and appended
384
- // Otherwise, the empty string is appended
385
- append: function append() {
386
- if (this.isInline()) {
387
- this.replaceStack(function (current) {
388
- return [' != null ? ', current, ' : ""'];
389
- });
390
-
391
- this.pushSource(this.appendToBuffer(this.popStack()));
392
- } else {
393
- var local = this.popStack();
394
- this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']);
395
- if (this.environment.isSimple) {
396
- this.pushSource(['else { ', this.appendToBuffer("''", undefined, true), ' }']);
397
- }
398
- }
399
- },
400
-
401
- // [appendEscaped]
402
- //
403
- // On stack, before: value, ...
404
- // On stack, after: ...
405
- //
406
- // Escape `value` and append it to the buffer
407
- appendEscaped: function appendEscaped() {
408
- this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')']));
409
- },
410
-
411
- // [getContext]
412
- //
413
- // On stack, before: ...
414
- // On stack, after: ...
415
- // Compiler value, after: lastContext=depth
416
- //
417
- // Set the value of the `lastContext` compiler value to the depth
418
- getContext: function getContext(depth) {
419
- this.lastContext = depth;
420
- },
421
-
422
- // [pushContext]
423
- //
424
- // On stack, before: ...
425
- // On stack, after: currentContext, ...
426
- //
427
- // Pushes the value of the current context onto the stack.
428
- pushContext: function pushContext() {
429
- this.pushStackLiteral(this.contextName(this.lastContext));
430
- },
431
-
432
- // [lookupOnContext]
433
- //
434
- // On stack, before: ...
435
- // On stack, after: currentContext[name], ...
436
- //
437
- // Looks up the value of `name` on the current context and pushes
438
- // it onto the stack.
439
- lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) {
440
- var i = 0;
441
-
442
- if (!scoped && this.options.compat && !this.lastContext) {
443
- // The depthed query is expected to handle the undefined logic for the root level that
444
- // is implemented below, so we evaluate that directly in compat mode
445
- this.push(this.depthedLookup(parts[i++]));
446
- } else {
447
- this.pushContext();
448
- }
449
-
450
- this.resolvePath('context', parts, i, falsy, strict);
451
- },
452
-
453
- // [lookupBlockParam]
454
- //
455
- // On stack, before: ...
456
- // On stack, after: blockParam[name], ...
457
- //
458
- // Looks up the value of `parts` on the given block param and pushes
459
- // it onto the stack.
460
- lookupBlockParam: function lookupBlockParam(blockParamId, parts) {
461
- this.useBlockParams = true;
462
-
463
- this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);
464
- this.resolvePath('context', parts, 1);
465
- },
466
-
467
- // [lookupData]
468
- //
469
- // On stack, before: ...
470
- // On stack, after: data, ...
471
- //
472
- // Push the data lookup operator
473
- lookupData: function lookupData(depth, parts, strict) {
474
- if (!depth) {
475
- this.pushStackLiteral('data');
476
- } else {
477
- this.pushStackLiteral('container.data(data, ' + depth + ')');
478
- }
479
-
480
- this.resolvePath('data', parts, 0, true, strict);
481
- },
482
-
483
- resolvePath: function resolvePath(type, parts, i, falsy, strict) {
484
- // istanbul ignore next
485
-
486
- var _this = this;
487
-
488
- if (this.options.strict || this.options.assumeObjects) {
489
- this.push(strictLookup(this.options.strict && strict, this, parts, type));
490
- return;
491
- }
492
-
493
- var len = parts.length;
494
- for (; i < len; i++) {
495
- /* eslint-disable no-loop-func */
496
- this.replaceStack(function (current) {
497
- var lookup = _this.nameLookup(current, parts[i], type);
498
- // We want to ensure that zero and false are handled properly if the context (falsy flag)
499
- // needs to have the special handling for these values.
500
- if (!falsy) {
501
- return [' != null ? ', lookup, ' : ', current];
502
- } else {
503
- // Otherwise we can use generic falsy handling
504
- return [' && ', lookup];
505
- }
506
- });
507
- /* eslint-enable no-loop-func */
508
- }
509
- },
510
-
511
- // [resolvePossibleLambda]
512
- //
513
- // On stack, before: value, ...
514
- // On stack, after: resolved value, ...
515
- //
516
- // If the `value` is a lambda, replace it on the stack by
517
- // the return value of the lambda
518
- resolvePossibleLambda: function resolvePossibleLambda() {
519
- this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']);
520
- },
521
-
522
- // [pushStringParam]
523
- //
524
- // On stack, before: ...
525
- // On stack, after: string, currentContext, ...
526
- //
527
- // This opcode is designed for use in string mode, which
528
- // provides the string value of a parameter along with its
529
- // depth rather than resolving it immediately.
530
- pushStringParam: function pushStringParam(string, type) {
531
- this.pushContext();
532
- this.pushString(type);
533
-
534
- // If it's a subexpression, the string result
535
- // will be pushed after this opcode.
536
- if (type !== 'SubExpression') {
537
- if (typeof string === 'string') {
538
- this.pushString(string);
539
- } else {
540
- this.pushStackLiteral(string);
541
- }
542
- }
543
- },
544
-
545
- emptyHash: function emptyHash(omitEmpty) {
546
- if (this.trackIds) {
547
- this.push('{}'); // hashIds
548
- }
549
- if (this.stringParams) {
550
- this.push('{}'); // hashContexts
551
- this.push('{}'); // hashTypes
552
- }
553
- this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');
554
- },
555
- pushHash: function pushHash() {
556
- if (this.hash) {
557
- this.hashes.push(this.hash);
558
- }
559
- this.hash = { values: [], types: [], contexts: [], ids: [] };
560
- },
561
- popHash: function popHash() {
562
- var hash = this.hash;
563
- this.hash = this.hashes.pop();
564
-
565
- if (this.trackIds) {
566
- this.push(this.objectLiteral(hash.ids));
567
- }
568
- if (this.stringParams) {
569
- this.push(this.objectLiteral(hash.contexts));
570
- this.push(this.objectLiteral(hash.types));
571
- }
572
-
573
- this.push(this.objectLiteral(hash.values));
574
- },
575
-
576
- // [pushString]
577
- //
578
- // On stack, before: ...
579
- // On stack, after: quotedString(string), ...
580
- //
581
- // Push a quoted version of `string` onto the stack
582
- pushString: function pushString(string) {
583
- this.pushStackLiteral(this.quotedString(string));
584
- },
585
-
586
- // [pushLiteral]
587
- //
588
- // On stack, before: ...
589
- // On stack, after: value, ...
590
- //
591
- // Pushes a value onto the stack. This operation prevents
592
- // the compiler from creating a temporary variable to hold
593
- // it.
594
- pushLiteral: function pushLiteral(value) {
595
- this.pushStackLiteral(value);
596
- },
597
-
598
- // [pushProgram]
599
- //
600
- // On stack, before: ...
601
- // On stack, after: program(guid), ...
602
- //
603
- // Push a program expression onto the stack. This takes
604
- // a compile-time guid and converts it into a runtime-accessible
605
- // expression.
606
- pushProgram: function pushProgram(guid) {
607
- if (guid != null) {
608
- this.pushStackLiteral(this.programExpression(guid));
609
- } else {
610
- this.pushStackLiteral(null);
611
- }
612
- },
613
-
614
- // [registerDecorator]
615
- //
616
- // On stack, before: hash, program, params..., ...
617
- // On stack, after: ...
618
- //
619
- // Pops off the decorator's parameters, invokes the decorator,
620
- // and inserts the decorator into the decorators list.
621
- registerDecorator: function registerDecorator(paramSize, name) {
622
- var foundDecorator = this.nameLookup('decorators', name, 'decorator'),
623
- options = this.setupHelperArgs(name, paramSize);
624
-
625
- this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']);
626
- },
627
-
628
- // [invokeHelper]
629
- //
630
- // On stack, before: hash, inverse, program, params..., ...
631
- // On stack, after: result of helper invocation
632
- //
633
- // Pops off the helper's parameters, invokes the helper,
634
- // and pushes the helper's return value onto the stack.
635
- //
636
- // If the helper is not found, `helperMissing` is called.
637
- invokeHelper: function invokeHelper(paramSize, name, isSimple) {
638
- var nonHelper = this.popStack(),
639
- helper = this.setupHelper(paramSize, name),
640
- simple = isSimple ? [helper.name, ' || '] : '';
641
-
642
- var lookup = ['('].concat(simple, nonHelper);
643
- if (!this.options.strict) {
644
- lookup.push(' || ', this.aliasable('helpers.helperMissing'));
645
- }
646
- lookup.push(')');
647
-
648
- this.push(this.source.functionCall(lookup, 'call', helper.callParams));
649
- },
650
-
651
- // [invokeKnownHelper]
652
- //
653
- // On stack, before: hash, inverse, program, params..., ...
654
- // On stack, after: result of helper invocation
655
- //
656
- // This operation is used when the helper is known to exist,
657
- // so a `helperMissing` fallback is not required.
658
- invokeKnownHelper: function invokeKnownHelper(paramSize, name) {
659
- var helper = this.setupHelper(paramSize, name);
660
- this.push(this.source.functionCall(helper.name, 'call', helper.callParams));
661
- },
662
-
663
- // [invokeAmbiguous]
664
- //
665
- // On stack, before: hash, inverse, program, params..., ...
666
- // On stack, after: result of disambiguation
667
- //
668
- // This operation is used when an expression like `{{foo}}`
669
- // is provided, but we don't know at compile-time whether it
670
- // is a helper or a path.
671
- //
672
- // This operation emits more code than the other options,
673
- // and can be avoided by passing the `knownHelpers` and
674
- // `knownHelpersOnly` flags at compile-time.
675
- invokeAmbiguous: function invokeAmbiguous(name, helperCall) {
676
- this.useRegister('helper');
677
-
678
- var nonHelper = this.popStack();
679
-
680
- this.emptyHash();
681
- var helper = this.setupHelper(0, name, helperCall);
682
-
683
- var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
684
-
685
- var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];
686
- if (!this.options.strict) {
687
- lookup[0] = '(helper = ';
688
- lookup.push(' != null ? helper : ', this.aliasable('helpers.helperMissing'));
689
- }
690
-
691
- this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('"function"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']);
692
- },
693
-
694
- // [invokePartial]
695
- //
696
- // On stack, before: context, ...
697
- // On stack after: result of partial invocation
698
- //
699
- // This operation pops off a context, invokes a partial with that context,
700
- // and pushes the result of the invocation back.
701
- invokePartial: function invokePartial(isDynamic, name, indent) {
702
- var params = [],
703
- options = this.setupParams(name, 1, params);
704
-
705
- if (isDynamic) {
706
- name = this.popStack();
707
- delete options.name;
708
- }
709
-
710
- if (indent) {
711
- options.indent = JSON.stringify(indent);
712
- }
713
- options.helpers = 'helpers';
714
- options.partials = 'partials';
715
- options.decorators = 'container.decorators';
716
-
717
- if (!isDynamic) {
718
- params.unshift(this.nameLookup('partials', name, 'partial'));
719
- } else {
720
- params.unshift(name);
721
- }
722
-
723
- if (this.options.compat) {
724
- options.depths = 'depths';
725
- }
726
- options = this.objectLiteral(options);
727
- params.push(options);
728
-
729
- this.push(this.source.functionCall('container.invokePartial', '', params));
730
- },
731
-
732
- // [assignToHash]
733
- //
734
- // On stack, before: value, ..., hash, ...
735
- // On stack, after: ..., hash, ...
736
- //
737
- // Pops a value off the stack and assigns it to the current hash
738
- assignToHash: function assignToHash(key) {
739
- var value = this.popStack(),
740
- context = undefined,
741
- type = undefined,
742
- id = undefined;
743
-
744
- if (this.trackIds) {
745
- id = this.popStack();
746
- }
747
- if (this.stringParams) {
748
- type = this.popStack();
749
- context = this.popStack();
750
- }
751
-
752
- var hash = this.hash;
753
- if (context) {
754
- hash.contexts[key] = context;
755
- }
756
- if (type) {
757
- hash.types[key] = type;
758
- }
759
- if (id) {
760
- hash.ids[key] = id;
761
- }
762
- hash.values[key] = value;
763
- },
764
-
765
- pushId: function pushId(type, name, child) {
766
- if (type === 'BlockParam') {
767
- this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : ''));
768
- } else if (type === 'PathExpression') {
769
- this.pushString(name);
770
- } else if (type === 'SubExpression') {
771
- this.pushStackLiteral('true');
772
- } else {
773
- this.pushStackLiteral('null');
774
- }
775
- },
776
-
777
- // HELPERS
778
-
779
- compiler: JavaScriptCompiler,
780
-
781
- compileChildren: function compileChildren(environment, options) {
782
- var children = environment.children,
783
- child = undefined,
784
- compiler = undefined;
785
-
786
- for (var i = 0, l = children.length; i < l; i++) {
787
- child = children[i];
788
- compiler = new this.compiler(); // eslint-disable-line new-cap
789
-
790
- var existing = this.matchExistingProgram(child);
791
-
792
- if (existing == null) {
793
- this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children
794
- var index = this.context.programs.length;
795
- child.index = index;
796
- child.name = 'program' + index;
797
- this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);
798
- this.context.decorators[index] = compiler.decorators;
799
- this.context.environments[index] = child;
800
-
801
- this.useDepths = this.useDepths || compiler.useDepths;
802
- this.useBlockParams = this.useBlockParams || compiler.useBlockParams;
803
- child.useDepths = this.useDepths;
804
- child.useBlockParams = this.useBlockParams;
805
- } else {
806
- child.index = existing.index;
807
- child.name = 'program' + existing.index;
808
-
809
- this.useDepths = this.useDepths || existing.useDepths;
810
- this.useBlockParams = this.useBlockParams || existing.useBlockParams;
811
- }
812
- }
813
- },
814
- matchExistingProgram: function matchExistingProgram(child) {
815
- for (var i = 0, len = this.context.environments.length; i < len; i++) {
816
- var environment = this.context.environments[i];
817
- if (environment && environment.equals(child)) {
818
- return environment;
819
- }
820
- }
821
- },
822
-
823
- programExpression: function programExpression(guid) {
824
- var child = this.environment.children[guid],
825
- programParams = [child.index, 'data', child.blockParams];
826
-
827
- if (this.useBlockParams || this.useDepths) {
828
- programParams.push('blockParams');
829
- }
830
- if (this.useDepths) {
831
- programParams.push('depths');
832
- }
833
-
834
- return 'container.program(' + programParams.join(', ') + ')';
835
- },
836
-
837
- useRegister: function useRegister(name) {
838
- if (!this.registers[name]) {
839
- this.registers[name] = true;
840
- this.registers.list.push(name);
841
- }
842
- },
843
-
844
- push: function push(expr) {
845
- if (!(expr instanceof Literal)) {
846
- expr = this.source.wrap(expr);
847
- }
848
-
849
- this.inlineStack.push(expr);
850
- return expr;
851
- },
852
-
853
- pushStackLiteral: function pushStackLiteral(item) {
854
- this.push(new Literal(item));
855
- },
856
-
857
- pushSource: function pushSource(source) {
858
- if (this.pendingContent) {
859
- this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation));
860
- this.pendingContent = undefined;
861
- }
862
-
863
- if (source) {
864
- this.source.push(source);
865
- }
866
- },
867
-
868
- replaceStack: function replaceStack(callback) {
869
- var prefix = ['('],
870
- stack = undefined,
871
- createdStack = undefined,
872
- usedLiteral = undefined;
873
-
874
- /* istanbul ignore next */
875
- if (!this.isInline()) {
876
- throw new _exception2['default']('replaceStack on non-inline');
877
- }
878
-
879
- // We want to merge the inline statement into the replacement statement via ','
880
- var top = this.popStack(true);
881
-
882
- if (top instanceof Literal) {
883
- // Literals do not need to be inlined
884
- stack = [top.value];
885
- prefix = ['(', stack];
886
- usedLiteral = true;
887
- } else {
888
- // Get or create the current stack name for use by the inline
889
- createdStack = true;
890
- var _name = this.incrStack();
891
-
892
- prefix = ['((', this.push(_name), ' = ', top, ')'];
893
- stack = this.topStack();
894
- }
895
-
896
- var item = callback.call(this, stack);
897
-
898
- if (!usedLiteral) {
899
- this.popStack();
900
- }
901
- if (createdStack) {
902
- this.stackSlot--;
903
- }
904
- this.push(prefix.concat(item, ')'));
905
- },
906
-
907
- incrStack: function incrStack() {
908
- this.stackSlot++;
909
- if (this.stackSlot > this.stackVars.length) {
910
- this.stackVars.push('stack' + this.stackSlot);
911
- }
912
- return this.topStackName();
913
- },
914
- topStackName: function topStackName() {
915
- return 'stack' + this.stackSlot;
916
- },
917
- flushInline: function flushInline() {
918
- var inlineStack = this.inlineStack;
919
- this.inlineStack = [];
920
- for (var i = 0, len = inlineStack.length; i < len; i++) {
921
- var entry = inlineStack[i];
922
- /* istanbul ignore if */
923
- if (entry instanceof Literal) {
924
- this.compileStack.push(entry);
925
- } else {
926
- var stack = this.incrStack();
927
- this.pushSource([stack, ' = ', entry, ';']);
928
- this.compileStack.push(stack);
929
- }
930
- }
931
- },
932
- isInline: function isInline() {
933
- return this.inlineStack.length;
934
- },
935
-
936
- popStack: function popStack(wrapped) {
937
- var inline = this.isInline(),
938
- item = (inline ? this.inlineStack : this.compileStack).pop();
939
-
940
- if (!wrapped && item instanceof Literal) {
941
- return item.value;
942
- } else {
943
- if (!inline) {
944
- /* istanbul ignore next */
945
- if (!this.stackSlot) {
946
- throw new _exception2['default']('Invalid stack pop');
947
- }
948
- this.stackSlot--;
949
- }
950
- return item;
951
- }
952
- },
953
-
954
- topStack: function topStack() {
955
- var stack = this.isInline() ? this.inlineStack : this.compileStack,
956
- item = stack[stack.length - 1];
957
-
958
- /* istanbul ignore if */
959
- if (item instanceof Literal) {
960
- return item.value;
961
- } else {
962
- return item;
963
- }
964
- },
965
-
966
- contextName: function contextName(context) {
967
- if (this.useDepths && context) {
968
- return 'depths[' + context + ']';
969
- } else {
970
- return 'depth' + context;
971
- }
972
- },
973
-
974
- quotedString: function quotedString(str) {
975
- return this.source.quotedString(str);
976
- },
977
-
978
- objectLiteral: function objectLiteral(obj) {
979
- return this.source.objectLiteral(obj);
980
- },
981
-
982
- aliasable: function aliasable(name) {
983
- var ret = this.aliases[name];
984
- if (ret) {
985
- ret.referenceCount++;
986
- return ret;
987
- }
988
-
989
- ret = this.aliases[name] = this.source.wrap(name);
990
- ret.aliasable = true;
991
- ret.referenceCount = 1;
992
-
993
- return ret;
994
- },
995
-
996
- setupHelper: function setupHelper(paramSize, name, blockHelper) {
997
- var params = [],
998
- paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);
999
- var foundHelper = this.nameLookup('helpers', name, 'helper'),
1000
- callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : (container.nullContext || {})');
1001
-
1002
- return {
1003
- params: params,
1004
- paramsInit: paramsInit,
1005
- name: foundHelper,
1006
- callParams: [callContext].concat(params)
1007
- };
1008
- },
1009
-
1010
- setupParams: function setupParams(helper, paramSize, params) {
1011
- var options = {},
1012
- contexts = [],
1013
- types = [],
1014
- ids = [],
1015
- objectArgs = !params,
1016
- param = undefined;
1017
-
1018
- if (objectArgs) {
1019
- params = [];
1020
- }
1021
-
1022
- options.name = this.quotedString(helper);
1023
- options.hash = this.popStack();
1024
-
1025
- if (this.trackIds) {
1026
- options.hashIds = this.popStack();
1027
- }
1028
- if (this.stringParams) {
1029
- options.hashTypes = this.popStack();
1030
- options.hashContexts = this.popStack();
1031
- }
1032
-
1033
- var inverse = this.popStack(),
1034
- program = this.popStack();
1035
-
1036
- // Avoid setting fn and inverse if neither are set. This allows
1037
- // helpers to do a check for `if (options.fn)`
1038
- if (program || inverse) {
1039
- options.fn = program || 'container.noop';
1040
- options.inverse = inverse || 'container.noop';
1041
- }
1042
-
1043
- // The parameters go on to the stack in order (making sure that they are evaluated in order)
1044
- // so we need to pop them off the stack in reverse order
1045
- var i = paramSize;
1046
- while (i--) {
1047
- param = this.popStack();
1048
- params[i] = param;
1049
-
1050
- if (this.trackIds) {
1051
- ids[i] = this.popStack();
1052
- }
1053
- if (this.stringParams) {
1054
- types[i] = this.popStack();
1055
- contexts[i] = this.popStack();
1056
- }
1057
- }
1058
-
1059
- if (objectArgs) {
1060
- options.args = this.source.generateArray(params);
1061
- }
1062
-
1063
- if (this.trackIds) {
1064
- options.ids = this.source.generateArray(ids);
1065
- }
1066
- if (this.stringParams) {
1067
- options.types = this.source.generateArray(types);
1068
- options.contexts = this.source.generateArray(contexts);
1069
- }
1070
-
1071
- if (this.options.data) {
1072
- options.data = 'data';
1073
- }
1074
- if (this.useBlockParams) {
1075
- options.blockParams = 'blockParams';
1076
- }
1077
- return options;
1078
- },
1079
-
1080
- setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) {
1081
- var options = this.setupParams(helper, paramSize, params);
1082
- options = this.objectLiteral(options);
1083
- if (useRegister) {
1084
- this.useRegister('options');
1085
- params.push('options');
1086
- return ['options=', options];
1087
- } else if (params) {
1088
- params.push(options);
1089
- return '';
1090
- } else {
1091
- return options;
1092
- }
1093
- }
1094
- };
1095
-
1096
- (function () {
1097
- var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' ');
1098
-
1099
- var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};
1100
-
1101
- for (var i = 0, l = reservedWords.length; i < l; i++) {
1102
- compilerWords[reservedWords[i]] = true;
1103
- }
1104
- })();
1105
-
1106
- JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
1107
- return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
1108
- };
1109
-
1110
- function strictLookup(requireTerminal, compiler, parts, type) {
1111
- var stack = compiler.popStack(),
1112
- i = 0,
1113
- len = parts.length;
1114
- if (requireTerminal) {
1115
- len--;
1116
- }
1117
-
1118
- for (; i < len; i++) {
1119
- stack = compiler.nameLookup(stack, parts[i], type);
1120
- }
1121
-
1122
- if (requireTerminal) {
1123
- return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ')'];
1124
- } else {
1125
- return stack;
1126
- }
1127
- }
1128
-
1129
- exports['default'] = JavaScriptCompiler;
1130
- module.exports = exports['default'];
1131
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztvQkFBb0QsU0FBUzs7eUJBQ3ZDLGNBQWM7Ozs7cUJBQ2QsVUFBVTs7dUJBQ1osWUFBWTs7OztBQUVoQyxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDdEIsTUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Q0FDcEI7O0FBRUQsU0FBUyxrQkFBa0IsR0FBRyxFQUFFOztBQUVoQyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUc7OztBQUc3QixZQUFVLEVBQUUsb0JBQVMsTUFBTSxFQUFFLElBQUksY0FBYTtBQUM1QyxRQUFJLElBQUksS0FBSyxhQUFhLEVBQUU7QUFDMUIsYUFBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsMkNBQTJDLEVBQUUsTUFBTSxFQUFFLDBCQUEwQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzVHO0FBQ0QsUUFBSSxrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMxRCxhQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM1QixNQUFNO0FBQ0wsYUFBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUNqRDtHQUNGO0FBQ0QsZUFBYSxFQUFFLHVCQUFTLElBQUksRUFBRTtBQUM1QixXQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7R0FDdkU7O0FBRUQsY0FBWSxFQUFFLHdCQUFXO0FBQ3ZCLFFBQU0sUUFBUSwwQkFBb0I7UUFDNUIsUUFBUSxHQUFHLHVCQUFpQixRQUFRLENBQUMsQ0FBQztBQUM1QyxXQUFPLENBQUMsUUFB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O0FBRUYsU0FBUyxZQUFZLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQzVELE1BQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUU7TUFDM0IsQ0FBQyxHQUFHLENBQUM7TUFDTCxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN2QixNQUFJLGVBQWUsRUFBRTtBQUNuQixPQUFHLEVBQUUsQ0FBQztHQUNQOztBQUVELFNBQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNuQixTQUFLLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0dBQ3BEOztBQUVELE1BQUksZUFBZSxFQUFFO0FBQ25CLFdBQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztHQUN6RyxNQUFNO0FBQ0wsV0FBTyxLQUFLLENBQUM7R0FDZDtDQUNGOztxQkFFYyxrQkFBa0IiLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTVBJTEVSX1JFVklTSU9OLCBSRVZJU0lPTl9DSEFOR0VTIH0gZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5pbXBvcnQge2lzQXJyYXl9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBDb2RlR2VuIGZyb20gJy4vY29kZS1nZW4nO1xuXG5mdW5jdGlvbiBMaXRlcmFsKHZhbHVlKSB7XG4gIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gSmF2YVNjcmlwdENvbXBpbGVyKCkge31cblxuSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZSA9IHtcbiAgLy8gUFVCTElDIEFQSTogWW91IGNhbiBvdmVycmlkZSB0aGVzZSBtZXRob2RzIGluIGEgc3ViY2xhc3MgdG8gcHJvdmlkZVxuICAvLyBhbHRlcm5hdGl2ZSBjb21waWxlZCBmb3JtcyBmb3IgbmFtZSBsb29rdXAgYW5kIGJ1ZmZlcmluZyBzZW1hbnRpY3NcbiAgbmFtZUxvb2t1cDogZnVuY3Rpb24ocGFyZW50LCBuYW1lLyogLCB0eXBlKi8pIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgcmV0dXJuIFsnKCcsIHBhcmVudCwgJy5wcm9wZXJ0eUlzRW51bWVyYWJsZShcXCdjb25zdHJ1Y3RvclxcJykgPyAnLCBwYXJlbnQsICcuY29uc3RydWN0b3IgOiB1bmRlZmluZWQnLCAnKSddO1xuICAgIH1cbiAgICBpZiAoSmF2YVNjcmlwdENvbXBpbGVyLmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFibGVOYW1lKG5hbWUpKSB7XG4gICAgICByZXR1cm4gW3BhcmVudCwgJy4nLCBuYW1lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtwYXJlbnQsICdbJywgSlNPTi5zdHJpbmdpZnkobmFtZSksICddJ107XG4gICAgfVxuICB9LFxuICBkZXB0aGVkTG9va3VwOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmxvb2t1cCcpLCAnKGRlcHRocywgXCInLCBuYW1lLCAnXCIpJ107XG4gIH0sXG5cbiAgY29tcGlsZXJJbmZvOiBmdW5jdGlvbigpIHtcbiAgICBjb25zdCByZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OLFxuICAgICAgICAgIHZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tyZXZpc2lvbl07XG4gICAgcmV0dXJuIFtyZXZpc2lvbiwgdmVyc2lvbnNdO1xuICB9LFxuXG4gIGFwcGVuZFRvQnVmZmVyOiBmdW5jdGlvbihzb3VyY2UsIGxvY2F0aW9uLCBleHBsaWNpdCkge1xuICAgIC8vIEZvcmNlIGEgc291cmNlIGFzIHRoaXMgc2ltcGxpZmllcyB0aGUgbWVyZ2UgbG9naWMuXG4gICAgaWYgKCFpc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHNvdXJjZSA9IFtzb3VyY2VdO1xuICAgIH1cbiAgICBzb3VyY2UgPSB0aGlzLnNvdXJjZS53cmFwKHNvdXJjZSwgbG9jYXRpb24pO1xuXG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHtcbiAgICAgIHJldHVybiBbJ3JldHVybiAnLCBzb3VyY2UsICc7J107XG4gICAgfSBlbHNlIGlmIChleHBsaWNpdCkge1xuICAgICAgLy8gVGhpcyBpcyBhIGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBvcGVyYXRpb24gb2NjdXJzIGFzIGEgY2hpbGQgb2YgYW5vdGhlclxuICAgICAgLy8gY29uc3RydWN0LCBnZW5lcmFsbHkgYnJhY2VzLiBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgb3V0cHV0IHRoZXNlIGJ1ZmZlclxuICAgICAgLy8gb3BlcmF0aW9ucyB0byBlbnN1cmUgdGhhdCB0aGUgZW1pdHRlZCBjb2RlIGdvZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb24uXG4gICAgICByZXR1cm4gWydidWZmZXIgKz0gJywgc291cmNlLCAnOyddO1xuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2UuYXBwZW5kVG9CdWZmZXIgPSB0cnVlO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG4gIH0sXG5cbiAgaW5pdGlhbGl6ZUJ1ZmZlcjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVkU3RyaW5nKCcnKTtcbiAgfSxcbiAgLy8gRU5EIFBVQkxJQyBBUElcblxuICBjb21waWxlOiBmdW5jdGlvbihlbnZpcm9ubWVudCwgb3B0aW9ucywgY29udGV4dCwgYXNPYmplY3QpIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLnN0cmluZ1BhcmFtcyA9IHRoaXMub3B0aW9ucy5zdHJpbmdQYXJhbXM7XG4gICAgdGhpcy50cmFja0lkcyA9IHRoaXMub3B0aW9ucy50cmFja0lkcztcbiAgICB0aGlzLnByZWNvbXBpbGUgPSAhYXNPYmplY3Q7XG5cbiAgICB0aGlzLm5hbWUgPSB0aGlzLmVudmlyb25tZW50Lm5hbWU7XG4gICAgdGhpcy5pc0NoaWxkID0gISFjb250ZXh0O1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQgfHwge1xuICAgICAgZGVjb3JhdG9yczogW10sXG4gICAgICBwcm9ncmFtczogW10sXG4gICAgICBlbnZpcm9ubWVudHM6IFtdXG4gICAgfTtcblxuICAgIHRoaXMucHJlYW1ibGUoKTtcblxuICAgIHRoaXMuc3RhY2tTbG90ID0gMDtcbiAgICB0aGlzLnN0YWNrVmFycyA9IFtdO1xuICAgIHRoaXMuYWxpYXNlcyA9IHt9O1xuICAgIHRoaXMucmVnaXN0ZXJzID0geyBsaXN0OiBbXSB9O1xuICAgIHRoaXMuaGFzaGVzID0gW107XG4gICAgdGhpcy5jb21waWxlU3RhY2sgPSBbXTtcbiAgICB0aGlzLmlubGluZVN0YWNrID0gW107XG4gICAgdGhpcy5ibG9ja1BhcmFtcyA9IFtdO1xuXG4gICAgdGhpcy5jb21waWxlQ2hpbGRyZW4oZW52aXJvbm1lbnQsIG9wdGlvbnMpO1xuXG4gICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBlbnZpcm9ubWVudC51c2VEZXB0aHMgfHwgZW52aXJvbm1lbnQudXNlRGVjb3JhdG9ycyB8fCB0aGlzLm9wdGlvbnMuY29tcGF0O1xuICAgIHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGVudmlyb25tZW50LnVzZUJsb2NrUGFyYW1zO1xuXG4gICAgbGV0IG9wY29kZXMgPSBlbnZpcm9ubWVudC5vcGNvZGVzLFxuICAgICAgICBvcGNvZGUsXG4gICAgICAgIGZpcnN0TG9jLFxuICAgICAgICBpLFxuICAgICAgICBsO1xuXG4gICAgZm9yIChpID0gMCwgbCA9IG9wY29kZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBvcGNvZGUgPSBvcGNvZGVzW2ldO1xuXG4gICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSBvcGNvZGUubG9jO1xuICAgICAgZmlyc3RMb2MgPSBmaXJzdExvYyB8fCBvcGNvZGUubG9jO1xuICAgICAgdGhpc1tvcGNvZGUub3Bjb2RlXS5hcHBseSh0aGlzLCBvcGNvZGUuYXJncyk7XG4gICAgfVxuXG4gICAgLy8gRmx1c2ggYW55IHRyYWlsaW5nIGNvbnRlbnQgdGhhdCBtaWdodCBiZSBwZW5kaW5nLlxuICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IGZpcnN0TG9jO1xuICAgIHRoaXMucHVzaFNvdXJjZSgnJyk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLnN0YWNrU2xvdCB8fCB0aGlzLmlubGluZVN0YWNrLmxlbmd0aCB8fCB0aGlzLmNvbXBpbGVTdGFjay5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0NvbXBpbGUgY29tcGxldGVkIHdpdGggY29udGVudCBsZWZ0IG9uIHN0YWNrJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpKSB7XG4gICAgICB0aGlzLnVzZURlY29yYXRvcnMgPSB0cnVlO1xuXG4gICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZCgndmFyIGRlY29yYXRvcnMgPSBjb250YWluZXIuZGVjb3JhdG9ycztcXG4nKTtcbiAgICAgIHRoaXMuZGVjb3JhdG9ycy5wdXNoKCdyZXR1cm4gZm47Jyk7XG5cbiAgICAgIGlmIChhc09iamVjdCkge1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMgPSBGdW5jdGlvbi5hcHBseSh0aGlzLCBbJ2ZuJywgJ3Byb3BzJywgJ2NvbnRhaW5lcicsICdkZXB0aDAnLCAnZGF0YScsICdibG9ja1BhcmFtcycsICdkZXB0aHMnLCB0aGlzLmRlY29yYXRvcnMubWVyZ2UoKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnByZXBlbmQoJ2Z1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aDAsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcXG4nKTtcbiAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ31cXG4nKTtcbiAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsZXQgZm4gPSB0aGlzLmNyZWF0ZUZ1bmN0aW9uQ29udGV4dChhc09iamVjdCk7XG4gICAgaWYgKCF0aGlzLmlzQ2hpbGQpIHtcbiAgICAgIGxldCByZXQgPSB7XG4gICAgICAgIGNvbXBpbGVyOiB0aGlzLmNvbXBpbGVySW5mbygpLFxuICAgICAgICBtYWluOiBmblxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuZGVjb3JhdG9ycykge1xuICAgICAgICByZXQubWFpbl9kID0gdGhpcy5kZWNvcmF0b3JzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNhbWVsY2FzZVxuICAgICAgICByZXQudXNlRGVjb3JhdG9ycyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGxldCB7cHJvZ3JhbXMsIGRlY29yYXRvcnN9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgZm9yIChpID0gMCwgbCA9IHByb2dyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAocHJvZ3JhbXNbaV0pIHtcbiAgICAgICAgICByZXRbaV0gPSBwcm9ncmFtc1tpXTtcbiAgICAgICAgICBpZiAoZGVjb3JhdG9yc1tpXSkge1xuICAgICAgICAgICAgcmV0W2kgKyAnX2QnXSA9IGRlY29yYXRvcnNbaV07XG4gICAgICAgICAgICByZXQudXNlRGVjb3JhdG9ycyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LnVzZVBhcnRpYWwpIHtcbiAgICAgICAgcmV0LnVzZVBhcnRpYWwgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5kYXRhKSB7XG4gICAgICAgIHJldC51c2VEYXRhID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnVzZURlcHRocykge1xuICAgICAgICByZXQudXNlRGVwdGhzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHJldC51c2VCbG9ja1BhcmFtcyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhdCkge1xuICAgICAgICByZXQuY29tcGF0ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFhc09iamVjdCkge1xuICAgICAgICByZXQuY29tcGlsZXIgPSBKU09OLnN0cmluZ2lmeShyZXQuY29tcGlsZXIpO1xuXG4gICAgICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IHtzdGFydDoge2xpbmU6IDEsIGNvbHVtbjogMH19O1xuICAgICAgICByZXQgPSB0aGlzLm9iamVjdExpdGVyYWwocmV0KTtcblxuICAgICAgICBpZiAob3B0aW9ucy5zcmNOYW1lKSB7XG4gICAgICAgICAgcmV0ID0gcmV0LnRvU3RyaW5nV2l0aFNvdXJjZU1hcCh7ZmlsZTogb3B0aW9ucy5kZXN0TmFtZX0pO1xuICAgICAgICAgIHJldC5tYXAgPSByZXQubWFwICYmIHJldC5tYXAudG9TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0LmNvbXBpbGVyT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZuO1xuICAgIH1cbiAgfSxcblxuICBwcmVhbWJsZTogZnVuY3Rpb24oKSB7XG4gICAgLy8gdHJhY2sgdGhlIGxhc3QgY29udGV4dCBwdXNoZWQgaW50byBwbGFjZSB0byBhbGxvdyBza2lwcGluZyB0aGVcbiAgICAvLyBnZXRDb250ZXh0IG9wY29kZSB3aGVuIGl0IHdvdWxkIGJlIGEgbm9vcFxuICAgIHRoaXMubGFzdENvbnRleHQgPSAwO1xuICAgIHRoaXMuc291cmNlID0gbmV3IENvZGVHZW4odGhpcy5vcHRpb25zLnNyY05hbWUpO1xuICAgIHRoaXMuZGVjb3JhdG9ycyA9IG5ldyBDb2RlR2VuKHRoaXMub3B0aW9ucy5zcmNOYW1lKTtcbiAgfSxcblxuICBjcmVhdGVGdW5jdGlvbkNvbnRleHQ6IGZ1bmN0aW9uKGFzT2JqZWN0KSB7XG4gICAgbGV0IHZhckRlY2xhcmF0aW9ucyA9ICcnO1xuXG4gICAgbGV0IGxvY2FscyA9IHRoaXMuc3RhY2tWYXJzLmNvbmNhdCh0aGlzLnJlZ2lzdGVycy5saXN0KTtcbiAgICBpZiAobG9jYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCAnICsgbG9jYWxzLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgbWluaW1pemVyIGFsaWFzIG1hcHBpbmdzXG4gICAgLy9cbiAgICAvLyBXaGVuIHVzaW5nIHRydWUgU291cmNlTm9kZXMsIHRoaXMgd2lsbCB1cGRhdGUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGdpdmVuIGFsaWFzXG4gICAgLy8gYXMgdGhlIHNvdXJjZSBub2RlcyBhcmUgcmV1c2VkIGluIHNpdHUuIEZvciB0aGUgbm9uLXNvdXJjZSBub2RlIGNvbXBpbGF0aW9uIG1vZGUsXG4gICAgLy8gYWxpYXNlcyB3aWxsIG5vdCBiZSB1c2VkLCBidXQgdGhpcyBjYXNlIGlzIGFscmVhZHkgYmVpbmcgcnVuIG9uIHRoZSBjbGllbnQgYW5kXG4gICAgLy8gd2UgYXJlbid0IGNvbmNlcm4gYWJvdXQgbWluaW1pemluZyB0aGUgdGVtcGxhdGUgc2l6ZS5cbiAgICBsZXQgYWxpYXNDb3VudCA9IDA7XG4gICAgZm9yIChsZXQgYWxpYXMgaW4gdGhpcy5hbGlhc2VzKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgICBsZXQgbm9kZSA9IHRoaXMuYWxpYXNlc1thbGlhc107XG5cbiAgICAgIGlmICh0aGlzLmFsaWFzZXMuaGFzT3duUHJvcGVydHkoYWxpYXMpICYmIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5yZWZlcmVuY2VDb3VudCA+IDEpIHtcbiAgICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsIGFsaWFzJyArICgrK2FsaWFzQ291bnQpICsgJz0nICsgYWxpYXM7XG4gICAgICAgIG5vZGUuY2hpbGRyZW5bMF0gPSAnYWxpYXMnICsgYWxpYXNDb3VudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGFyYW1zID0gWydjb250YWluZXInLCAnZGVwdGgwJywgJ2hlbHBlcnMnLCAncGFydGlhbHMnLCAnZGF0YSddO1xuXG4gICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgdGhpcy51c2VEZXB0aHMpIHtcbiAgICAgIHBhcmFtcy5wdXNoKCdibG9ja1BhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGhpcy51c2VEZXB0aHMpIHtcbiAgICAgIHBhcmFtcy5wdXNoKCdkZXB0aHMnKTtcbiAgICB9XG5cbiAgICAvLyBQZXJmb3JtIGEgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgb3V0cHV0IHRvIG1lcmdlIGNvbnRlbnQgd2hlbiBwb3NzaWJsZVxuICAgIGxldCBzb3VyY2UgPSB0aGlzLm1lcmdlU291cmNlKHZhckRlY2xhcmF0aW9ucyk7XG5cbiAgICBpZiAoYXNPYmplY3QpIHtcbiAgICAgIHBhcmFtcy5wdXNoKHNvdXJjZSk7XG5cbiAgICAgIHJldHVybiBGdW5jdGlvbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zb3VyY2Uud3JhcChbJ2Z1bmN0aW9uKCcsIHBhcmFtcy5qb2luKCcsJyksICcpIHtcXG4gICcsIHNvdXJjZSwgJ30nXSk7XG4gICAgfVxuICB9LFxuICBtZXJnZVNvdXJjZTogZnVuY3Rpb24odmFyRGVjbGFyYXRpb25zKSB7XG4gICAgbGV0IGlzU2ltcGxlID0gdGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSxcbiAgICAgICAgYXBwZW5kT25seSA9ICF0aGlzLmZvcmNlQnVmZmVyLFxuICAgICAgICBhcHBlbmRGaXJzdCxcblxuICAgICAgICBzb3VyY2VTZWVuLFxuICAgICAgICBidWZmZXJTdGFydCxcbiAgICAgICAgYnVmZmVyRW5kO1xuICAgIHRoaXMuc291cmNlLmVhY2goKGxpbmUpID0+IHtcbiAgICAgIGlmIChsaW5lLmFwcGVuZFRvQnVmZmVyKSB7XG4gICAgICAgIGlmIChidWZmZXJTdGFydCkge1xuICAgICAgICAgIGxpbmUucHJlcGVuZCgnICArICcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gbGluZTtcbiAgICAgICAgfVxuICAgICAgICBidWZmZXJFbmQgPSBsaW5lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7XG4gICAgICAgICAgaWYgKCFzb3VyY2VTZWVuKSB7XG4gICAgICAgICAgICBhcHBlbmRGaXJzdCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ2J1ZmZlciArPSAnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpO1xuICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyRW5kID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgc291cmNlU2VlbiA9IHRydWU7XG4gICAgICAgIGlmICghaXNTaW1wbGUpIHtcbiAgICAgICAgICBhcHBlbmRPbmx5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuXG4gICAgaWYgKGFwcGVuZE9ubHkpIHtcbiAgICAgIGlmIChidWZmZXJTdGFydCkge1xuICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdyZXR1cm4gJyk7XG4gICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTtcbiAgICAgIH0gZWxzZSBpZiAoIXNvdXJjZVNlZW4pIHtcbiAgICAgICAgdGhpcy5zb3VyY2UucHVzaCgncmV0dXJuIFwiXCI7Jyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCBidWZmZXIgPSAnICsgKGFwcGVuZEZpcnN0ID8gJycgOiB0aGlzLmluaXRpYWxpemVCdWZmZXIoKSk7XG5cbiAgICAgIGlmIChidWZmZXJTdGFydCkge1xuICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdyZXR1cm4gYnVmZmVyICsgJyk7XG4gICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiBidWZmZXI7Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhckRlY2xhcmF0aW9ucykge1xuICAgICAgdGhpcy5zb3VyY2UucHJlcGVuZCgndmFyICcgKyB2YXJEZWNsYXJhdGlvbnMuc3Vic3RyaW5nKDIpICsgKGFwcGVuZEZpcnN0ID8gJycgOiAnO1xcbicpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zb3VyY2UubWVyZ2UoKTtcbiAgfSxcblxuICAvLyBbYmxvY2tWYWx1ZV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWVcbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXR1cm4gdmFsdWUgb2YgYmxvY2tIZWxwZXJNaXNzaW5nXG4gIC8vXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgb3Bjb2RlIGlzIHRvIHRha2UgYSBibG9jayBvZiB0aGUgZm9ybVxuICAvLyBge3sjdGhpcy5mb299fS4uLnt7L3RoaXMuZm9vfX1gLCByZXNvbHZlIHRoZSB2YWx1ZSBvZiBgZm9vYCwgYW5kXG4gIC8vIHJlcGxhY2UgaXQgb24gdGhlIHN0YWNrIHdpdGggdGhlIHJlc3VsdCBvZiBwcm9wZXJseVxuICAvLyBpbnZva2luZyBibG9ja0hlbHBlck1pc3NpbmcuXG4gIGJsb2NrVmFsdWU6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBsZXQgYmxvY2tIZWxwZXJNaXNzaW5nID0gdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nJyksXG4gICAgICAgIHBhcmFtcyA9IFt0aGlzLmNvbnRleHROYW1lKDApXTtcbiAgICB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCAwLCBwYXJhbXMpO1xuXG4gICAgbGV0IGJsb2NrTmFtZSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGJsb2NrTmFtZSk7XG5cbiAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpKTtcbiAgfSxcblxuICAvLyBbYW1iaWd1b3VzQmxvY2tWYWx1ZV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWVcbiAgLy8gQ29tcGlsZXIgdmFsdWUsIGJlZm9yZTogbGFzdEhlbHBlcj12YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYgYW55XG4gIC8vIE9uIHN0YWNrLCBhZnRlciwgaWYgbm8gbGFzdEhlbHBlcjogc2FtZSBhcyBbYmxvY2tWYWx1ZV1cbiAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBsYXN0SGVscGVyOiB2YWx1ZVxuICBhbWJpZ3VvdXNCbG9ja1ZhbHVlOiBmdW5jdGlvbigpIHtcbiAgICAvLyBXZSdyZSBiZWluZyBhIGJpdCBjaGVla3kgYW5kIHJldXNpbmcgdGhlIG9wdGlvbnMgdmFsdWUgZnJvbSB0aGUgcHJpb3IgZXhlY1xuICAgIGxldCBibG9ja0hlbHBlck1pc3NpbmcgPSB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmcnKSxcbiAgICAgICAgcGFyYW1zID0gW3RoaXMuY29udGV4dE5hbWUoMCldO1xuICAgIHRoaXMuc2V0dXBIZWxwZXJBcmdzKCcnLCAwLCBwYXJhbXMsIHRydWUpO1xuXG4gICAgdGhpcy5mbHVzaElubGluZSgpO1xuXG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLnRvcFN0YWNrKCk7XG4gICAgcGFyYW1zLnNwbGljZSgxLCAwLCBjdXJyZW50KTtcblxuICAgIHRoaXMucHVzaFNvdXJjZShbXG4gICAgICAgICdpZiAoIScsIHRoaXMubGFzdEhlbHBlciwgJykgeyAnLFxuICAgICAgICAgIGN1cnJlbnQsICcgPSAnLCB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYmxvY2tIZWxwZXJNaXNzaW5nLCAnY2FsbCcsIHBhcmFtcyksXG4gICAgICAgICd9J10pO1xuICB9LFxuXG4gIC8vIFthcHBlbmRDb250ZW50XVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gQXBwZW5kcyB0aGUgc3RyaW5nIHZhbHVlIG9mIGBjb250ZW50YCB0byB0aGUgY3VycmVudCBidWZmZXJcbiAgYXBwZW5kQ29udGVudDogZnVuY3Rpb24oY29udGVudCkge1xuICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7XG4gICAgICBjb250ZW50ID0gdGhpcy5wZW5kaW5nQ29udGVudCArIGNvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGVuZGluZ0xvY2F0aW9uID0gdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0NvbnRlbnQgPSBjb250ZW50O1xuICB9LFxuXG4gIC8vIFthcHBlbmRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gQ29lcmNlcyBgdmFsdWVgIHRvIGEgU3RyaW5nIGFuZCBhcHBlbmRzIGl0IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci5cbiAgLy9cbiAgLy8gSWYgYHZhbHVlYCBpcyB0cnV0aHksIG9yIDAsIGl0IGlzIGNvZXJjZWQgaW50byBhIHN0cmluZyBhbmQgYXBwZW5kZWRcbiAgLy8gT3RoZXJ3aXNlLCB0aGUgZW1wdHkgc3RyaW5nIGlzIGFwcGVuZGVkXG4gIGFwcGVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkge1xuICAgICAgdGhpcy5yZXBsYWNlU3RhY2soKGN1cnJlbnQpID0+IFsnICE9IG51bGwgPyAnLCBjdXJyZW50LCAnIDogXCJcIiddKTtcblxuICAgICAgdGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIodGhpcy5wb3BTdGFjaygpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsb2NhbCA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIHRoaXMucHVzaFNvdXJjZShbJ2lmICgnLCBsb2NhbCwgJyAhPSBudWxsKSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIobG9jYWwsIHVuZGVmaW5lZCwgdHJ1ZSksICcgfSddKTtcbiAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlKSB7XG4gICAgICAgIHRoaXMucHVzaFNvdXJjZShbJ2Vsc2UgeyAnLCB0aGlzLmFwcGVuZFRvQnVmZmVyKFwiJydcIiwgdW5kZWZpbmVkLCB0cnVlKSwgJyB9J10pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvLyBbYXBwZW5kRXNjYXBlZF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLlxuICAvL1xuICAvLyBFc2NhcGUgYHZhbHVlYCBhbmQgYXBwZW5kIGl0IHRvIHRoZSBidWZmZXJcbiAgYXBwZW5kRXNjYXBlZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIoXG4gICAgICAgIFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24nKSwgJygnLCB0aGlzLnBvcFN0YWNrKCksICcpJ10pKTtcbiAgfSxcblxuICAvLyBbZ2V0Q29udGV4dF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vIENvbXBpbGVyIHZhbHVlLCBhZnRlcjogbGFzdENvbnRleHQ9ZGVwdGhcbiAgLy9cbiAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgYGxhc3RDb250ZXh0YCBjb21waWxlciB2YWx1ZSB0byB0aGUgZGVwdGhcbiAgZ2V0Q29udGV4dDogZnVuY3Rpb24oZGVwdGgpIHtcbiAgICB0aGlzLmxhc3RDb250ZXh0ID0gZGVwdGg7XG4gIH0sXG5cbiAgLy8gW3B1c2hDb250ZXh0XVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBjdXJyZW50Q29udGV4dCwgLi4uXG4gIC8vXG4gIC8vIFB1c2hlcyB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBvbnRvIHRoZSBzdGFjay5cbiAgcHVzaENvbnRleHQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLmNvbnRleHROYW1lKHRoaXMubGFzdENvbnRleHQpKTtcbiAgfSxcblxuICAvLyBbbG9va3VwT25Db250ZXh0XVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBjdXJyZW50Q29udGV4dFtuYW1lXSwgLi4uXG4gIC8vXG4gIC8vIExvb2tzIHVwIHRoZSB2YWx1ZSBvZiBgbmFtZWAgb24gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHVzaGVzXG4gIC8vIGl0IG9udG8gdGhlIHN0YWNrLlxuICBsb29rdXBPbkNvbnRleHQ6IGZ1bmN0aW9uKHBhcnRzLCBmYWxzeSwgc3RyaWN0LCBzY29wZWQpIHtcbiAgICBsZXQgaSA9IDA7XG5cbiAgICBpZiAoIXNjb3BlZCAmJiB0aGlzLm9wdGlvbnMuY29tcGF0ICYmICF0aGlzLmxhc3RDb250ZXh0KSB7XG4gICAgICAvLyBUaGUgZGVwdGhlZCBxdWVyeSBpcyBleHBlY3RlZCB0byBoYW5kbGUgdGhlIHVuZGVmaW5lZCBsb2dpYyBmb3IgdGhlIHJvb3QgbGV2ZWwgdGhhdFxuICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgYmVsb3csIHNvIHdlIGV2YWx1YXRlIHRoYXQgZGlyZWN0bHkgaW4gY29tcGF0IG1vZGVcbiAgICAgIHRoaXMucHVzaCh0aGlzLmRlcHRoZWRMb29rdXAocGFydHNbaSsrXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hDb250ZXh0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KTtcbiAgfSxcblxuICAvLyBbbG9va3VwQmxvY2tQYXJhbV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogYmxvY2tQYXJhbVtuYW1lXSwgLi4uXG4gIC8vXG4gIC8vIExvb2tzIHVwIHRoZSB2YWx1ZSBvZiBgcGFydHNgIG9uIHRoZSBnaXZlbiBibG9jayBwYXJhbSBhbmQgcHVzaGVzXG4gIC8vIGl0IG9udG8gdGhlIHN0YWNrLlxuICBsb29rdXBCbG9ja1BhcmFtOiBmdW5jdGlvbihibG9ja1BhcmFtSWQsIHBhcnRzKSB7XG4gICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRydWU7XG5cbiAgICB0aGlzLnB1c2goWydibG9ja1BhcmFtc1snLCBibG9ja1BhcmFtSWRbMF0sICddWycsIGJsb2NrUGFyYW1JZFsxXSwgJ10nXSk7XG4gICAgdGhpcy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBhcnRzLCAxKTtcbiAgfSxcblxuICAvLyBbbG9va3VwRGF0YV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogZGF0YSwgLi4uXG4gIC8vXG4gIC8vIFB1c2ggdGhlIGRhdGEgbG9va3VwIG9wZXJhdG9yXG4gIGxvb2t1cERhdGE6IGZ1bmN0aW9uKGRlcHRoLCBwYXJ0cywgc3RyaWN0KSB7XG4gICAgaWYgKCFkZXB0aCkge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdkYXRhJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnY29udGFpbmVyLmRhdGEoZGF0YSwgJyArIGRlcHRoICsgJyknKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc29sdmVQYXRoKCdkYXRhJywgcGFydHMsIDAsIHRydWUsIHN0cmljdCk7XG4gIH0sXG5cbiAgcmVzb2x2ZVBhdGg6IGZ1bmN0aW9uKHR5cGUsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5zdHJpY3QgfHwgdGhpcy5vcHRpb25zLmFzc3VtZU9iamVjdHMpIHtcbiAgICAgIHRoaXMucHVzaChzdHJpY3RMb29rdXAodGhpcy5vcHRpb25zLnN0cmljdCAmJiBzdHJpY3QsIHRoaXMsIHBhcnRzLCB0eXBlKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGxlbiA9IHBhcnRzLmxlbmd0aDtcbiAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1sb29wLWZ1bmMgKi9cbiAgICAgIHRoaXMucmVwbGFjZVN0YWNrKChjdXJyZW50KSA9PiB7XG4gICAgICAgIGxldCBsb29rdXAgPSB0aGlzLm5hbWVMb29rdXAoY3VycmVudCwgcGFydHNbaV0sIHR5cGUpO1xuICAgICAgICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHplcm8gYW5kIGZhbHNlIGFyZSBoYW5kbGVkIHByb3Blcmx5IGlmIHRoZSBjb250ZXh0IChmYWxzeSBmbGFnKVxuICAgICAgICAvLyBuZWVkcyB0byBoYXZlIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGVzZSB2YWx1ZXMuXG4gICAgICAgIGlmICghZmFsc3kpIHtcbiAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGxvb2t1cCwgJyA6ICcsIGN1cnJlbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBjYW4gdXNlIGdlbmVyaWMgZmFsc3kgaGFuZGxpbmdcbiAgICAgICAgICByZXR1cm4gWycgJiYgJywgbG9va3VwXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqL1xuICAgIH1cbiAgfSxcblxuICAvLyBbcmVzb2x2ZVBvc3NpYmxlTGFtYmRhXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLlxuICAvL1xuICAvLyBJZiB0aGUgYHZhbHVlYCBpcyBhIGxhbWJkYSwgcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgYnlcbiAgLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhXG4gIHJlc29sdmVQb3NzaWJsZUxhbWJkYTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmxhbWJkYScpLCAnKCcsIHRoaXMucG9wU3RhY2soKSwgJywgJywgdGhpcy5jb250ZXh0TmFtZSgwKSwgJyknXSk7XG4gIH0sXG5cbiAgLy8gW3B1c2hTdHJpbmdQYXJhbV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogc3RyaW5nLCBjdXJyZW50Q29udGV4dCwgLi4uXG4gIC8vXG4gIC8vIFRoaXMgb3Bjb2RlIGlzIGRlc2lnbmVkIGZvciB1c2UgaW4gc3RyaW5nIG1vZGUsIHdoaWNoXG4gIC8vIHByb3ZpZGVzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYSBwYXJhbWV0ZXIgYWxvbmcgd2l0aCBpdHNcbiAgLy8gZGVwdGggcmF0aGVyIHRoYW4gcmVzb2x2aW5nIGl0IGltbWVkaWF0ZWx5LlxuICBwdXNoU3RyaW5nUGFyYW06IGZ1bmN0aW9uKHN0cmluZywgdHlwZSkge1xuICAgIHRoaXMucHVzaENvbnRleHQoKTtcbiAgICB0aGlzLnB1c2hTdHJpbmcodHlwZSk7XG5cbiAgICAvLyBJZiBpdCdzIGEgc3ViZXhwcmVzc2lvbiwgdGhlIHN0cmluZyByZXN1bHRcbiAgICAvLyB3aWxsIGJlIHB1c2hlZCBhZnRlciB0aGlzIG9wY29kZS5cbiAgICBpZiAodHlwZSAhPT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gICAgICBpZiAodHlwZW9mIHN0cmluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHN0cmluZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoc3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZW1wdHlIYXNoOiBmdW5jdGlvbihvbWl0RW1wdHkpIHtcbiAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoSWRzXG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoQ29udGV4dHNcbiAgICAgIHRoaXMucHVzaCgne30nKTsgLy8gaGFzaFR5cGVzXG4gICAgfVxuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChvbWl0RW1wdHkgPyAndW5kZWZpbmVkJyA6ICd7fScpO1xuICB9LFxuICBwdXNoSGFzaDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaGFzaCkge1xuICAgICAgdGhpcy5oYXNoZXMucHVzaCh0aGlzLmhhc2gpO1xuICAgIH1cbiAgICB0aGlzLmhhc2ggPSB7dmFsdWVzOiBbXSwgdHlwZXM6IFtdLCBjb250ZXh0czogW10sIGlkczogW119O1xuICB9LFxuICBwb3BIYXNoOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgaGFzaCA9IHRoaXMuaGFzaDtcbiAgICB0aGlzLmhhc2ggPSB0aGlzLmhhc2hlcy5wb3AoKTtcblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2guaWRzKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLmNvbnRleHRzKSk7XG4gICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2gudHlwZXMpKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2gudmFsdWVzKSk7XG4gIH0sXG5cbiAgLy8gW3B1c2hTdHJpbmddXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHF1b3RlZFN0cmluZyhzdHJpbmcpLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCBhIHF1b3RlZCB2ZXJzaW9uIG9mIGBzdHJpbmdgIG9udG8gdGhlIHN0YWNrXG4gIHB1c2hTdHJpbmc6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnF1b3RlZFN0cmluZyhzdHJpbmcpKTtcbiAgfSxcblxuICAvLyBbcHVzaExpdGVyYWxdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHZhbHVlLCAuLi5cbiAgLy9cbiAgLy8gUHVzaGVzIGEgdmFsdWUgb250byB0aGUgc3RhY2suIFRoaXMgb3BlcmF0aW9uIHByZXZlbnRzXG4gIC8vIHRoZSBjb21waWxlciBmcm9tIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIHRvIGhvbGRcbiAgLy8gaXQuXG4gIHB1c2hMaXRlcmFsOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh2YWx1ZSk7XG4gIH0sXG5cbiAgLy8gW3B1c2hQcm9ncmFtXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBwcm9ncmFtKGd1aWQpLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCBhIHByb2dyYW0gZXhwcmVzc2lvbiBvbnRvIHRoZSBzdGFjay4gVGhpcyB0YWtlc1xuICAvLyBhIGNvbXBpbGUtdGltZSBndWlkIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgcnVudGltZS1hY2Nlc3NpYmxlXG4gIC8vIGV4cHJlc3Npb24uXG4gIHB1c2hQcm9ncmFtOiBmdW5jdGlvbihndWlkKSB7XG4gICAgaWYgKGd1aWQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucHJvZ3JhbUV4cHJlc3Npb24oZ3VpZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwobnVsbCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIFtyZWdpc3RlckRlY29yYXRvcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gUG9wcyBvZmYgdGhlIGRlY29yYXRvcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGRlY29yYXRvcixcbiAgLy8gYW5kIGluc2VydHMgdGhlIGRlY29yYXRvciBpbnRvIHRoZSBkZWNvcmF0b3JzIGxpc3QuXG4gIHJlZ2lzdGVyRGVjb3JhdG9yKHBhcmFtU2l6ZSwgbmFtZSkge1xuICAgIGxldCBmb3VuZERlY29yYXRvciA9IHRoaXMubmFtZUxvb2t1cCgnZGVjb3JhdG9ycycsIG5hbWUsICdkZWNvcmF0b3InKSxcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5hbWUsIHBhcmFtU2l6ZSk7XG5cbiAgICB0aGlzLmRlY29yYXRvcnMucHVzaChbXG4gICAgICAnZm4gPSAnLFxuICAgICAgdGhpcy5kZWNvcmF0b3JzLmZ1bmN0aW9uQ2FsbChmb3VuZERlY29yYXRvciwgJycsIFsnZm4nLCAncHJvcHMnLCAnY29udGFpbmVyJywgb3B0aW9uc10pLFxuICAgICAgJyB8fCBmbjsnXG4gICAgXSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZUhlbHBlcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgaGVscGVyIGludm9jYXRpb25cbiAgLy9cbiAgLy8gUG9wcyBvZmYgdGhlIGhlbHBlcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGhlbHBlcixcbiAgLy8gYW5kIHB1c2hlcyB0aGUgaGVscGVyJ3MgcmV0dXJuIHZhbHVlIG9udG8gdGhlIHN0YWNrLlxuICAvL1xuICAvLyBJZiB0aGUgaGVscGVyIGlzIG5vdCBmb3VuZCwgYGhlbHBlck1pc3NpbmdgIGlzIGNhbGxlZC5cbiAgaW52b2tlSGVscGVyOiBmdW5jdGlvbihwYXJhbVNpemUsIG5hbWUsIGlzU2ltcGxlKSB7XG4gICAgbGV0IG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKSxcbiAgICAgICAgaGVscGVyID0gdGhpcy5zZXR1cEhlbHBlcihwYXJhbVNpemUsIG5hbWUpLFxuICAgICAgICBzaW1wbGUgPSBpc1NpbXBsZSA/IFtoZWxwZXIubmFtZSwgJyB8fCAnXSA6ICcnO1xuXG4gICAgbGV0IGxvb2t1cCA9IFsnKCddLmNvbmNhdChzaW1wbGUsIG5vbkhlbHBlcik7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBsb29rdXAucHVzaCgnIHx8ICcsIHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmhlbHBlck1pc3NpbmcnKSk7XG4gICAgfVxuICAgIGxvb2t1cC5wdXNoKCcpJyk7XG5cbiAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGxvb2t1cCwgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcykpO1xuICB9LFxuXG4gIC8vIFtpbnZva2VLbm93bkhlbHBlcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgaGVscGVyIGludm9jYXRpb25cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIHRoZSBoZWxwZXIgaXMga25vd24gdG8gZXhpc3QsXG4gIC8vIHNvIGEgYGhlbHBlck1pc3NpbmdgIGZhbGxiYWNrIGlzIG5vdCByZXF1aXJlZC5cbiAgaW52b2tlS25vd25IZWxwZXI6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgbmFtZSkge1xuICAgIGxldCBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSk7XG4gICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChoZWxwZXIubmFtZSwgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcykpO1xuICB9LFxuXG4gIC8vIFtpbnZva2VBbWJpZ3VvdXNdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHBhcmFtcy4uLiwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGRpc2FtYmlndWF0aW9uXG4gIC8vXG4gIC8vIFRoaXMgb3BlcmF0aW9uIGlzIHVzZWQgd2hlbiBhbiBleHByZXNzaW9uIGxpa2UgYHt7Zm9vfX1gXG4gIC8vIGlzIHByb3ZpZGVkLCBidXQgd2UgZG9uJ3Qga25vdyBhdCBjb21waWxlLXRpbWUgd2hldGhlciBpdFxuICAvLyBpcyBhIGhlbHBlciBvciBhIHBhdGguXG4gIC8vXG4gIC8vIFRoaXMgb3BlcmF0aW9uIGVtaXRzIG1vcmUgY29kZSB0aGFuIHRoZSBvdGhlciBvcHRpb25zLFxuICAvLyBhbmQgY2FuIGJlIGF2b2lkZWQgYnkgcGFzc2luZyB0aGUgYGtub3duSGVscGVyc2AgYW5kXG4gIC8vIGBrbm93bkhlbHBlcnNPbmx5YCBmbGFncyBhdCBjb21waWxlLXRpbWUuXG4gIGludm9rZUFtYmlndW91czogZnVuY3Rpb24obmFtZSwgaGVscGVyQ2FsbCkge1xuICAgIHRoaXMudXNlUmVnaXN0ZXIoJ2hlbHBlcicpO1xuXG4gICAgbGV0IG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIHRoaXMuZW1wdHlIYXNoKCk7XG4gICAgbGV0IGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIoMCwgbmFtZSwgaGVscGVyQ2FsbCk7XG5cbiAgICBsZXQgaGVscGVyTmFtZSA9IHRoaXMubGFzdEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKTtcblxuICAgIGxldCBsb29rdXAgPSBbJygnLCAnKGhlbHBlciA9ICcsIGhlbHBlck5hbWUsICcgfHwgJywgbm9uSGVscGVyLCAnKSddO1xuICAgIGlmICghdGhpcy5vcHRpb25zLnN0cmljdCkge1xuICAgICAgbG9va3VwWzBdID0gJyhoZWxwZXIgPSAnO1xuICAgICAgbG9va3VwLnB1c2goXG4gICAgICAgICcgIT0gbnVsbCA/IGhlbHBlciA6ICcsXG4gICAgICAgIHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmhlbHBlck1pc3NpbmcnKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2goW1xuICAgICAgICAnKCcsIGxvb2t1cCxcbiAgICAgICAgKGhlbHBlci5wYXJhbXNJbml0ID8gWycpLCgnLCBoZWxwZXIucGFyYW1zSW5pdF0gOiBbXSksICcpLCcsXG4gICAgICAgICcodHlwZW9mIGhlbHBlciA9PT0gJywgdGhpcy5hbGlhc2FibGUoJ1wiZnVuY3Rpb25cIicpLCAnID8gJyxcbiAgICAgICAgdGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCdoZWxwZXInLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSwgJyA6IGhlbHBlcikpJ1xuICAgIF0pO1xuICB9LFxuXG4gIC8vIFtpbnZva2VQYXJ0aWFsXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBjb250ZXh0LCAuLi5cbiAgLy8gT24gc3RhY2sgYWZ0ZXI6IHJlc3VsdCBvZiBwYXJ0aWFsIGludm9jYXRpb25cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gcG9wcyBvZmYgYSBjb250ZXh0LCBpbnZva2VzIGEgcGFydGlhbCB3aXRoIHRoYXQgY29udGV4dCxcbiAgLy8gYW5kIHB1c2hlcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZvY2F0aW9uIGJhY2suXG4gIGludm9rZVBhcnRpYWw6IGZ1bmN0aW9uKGlzRHluYW1pYywgbmFtZSwgaW5kZW50KSB7XG4gICAgbGV0IHBhcmFtcyA9IFtdLFxuICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhuYW1lLCAxLCBwYXJhbXMpO1xuXG4gICAgaWYgKGlzRHluYW1pYykge1xuICAgICAgbmFtZSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIGRlbGV0ZSBvcHRpb25zLm5hbWU7XG4gICAgfVxuXG4gICAgaWYgKGluZGVudCkge1xuICAgICAgb3B0aW9ucy5pbmRlbnQgPSBKU09OLnN0cmluZ2lmeShpbmRlbnQpO1xuICAgIH1cbiAgICBvcHRpb25zLmhlbHBlcnMgPSAnaGVscGVycyc7XG4gICAgb3B0aW9ucy5wYXJ0aWFscyA9ICdwYXJ0aWFscyc7XG4gICAgb3B0aW9ucy5kZWNvcmF0b3JzID0gJ2NvbnRhaW5lci5kZWNvcmF0b3JzJztcblxuICAgIGlmICghaXNEeW5hbWljKSB7XG4gICAgICBwYXJhbXMudW5zaGlmdCh0aGlzLm5hbWVMb29rdXAoJ3BhcnRpYWxzJywgbmFtZSwgJ3BhcnRpYWwnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmFtcy51bnNoaWZ0KG5hbWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7XG4gICAgICBvcHRpb25zLmRlcHRocyA9ICdkZXB0aHMnO1xuICAgIH1cbiAgICBvcHRpb25zID0gdGhpcy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpO1xuICAgIHBhcmFtcy5wdXNoKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbCgnY29udGFpbmVyLmludm9rZVBhcnRpYWwnLCAnJywgcGFyYW1zKSk7XG4gIH0sXG5cbiAgLy8gW2Fzc2lnblRvSGFzaF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLiwgaGFzaCwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uLCBoYXNoLCAuLi5cbiAgLy9cbiAgLy8gUG9wcyBhIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5kIGFzc2lnbnMgaXQgdG8gdGhlIGN1cnJlbnQgaGFzaFxuICBhc3NpZ25Ub0hhc2g6IGZ1bmN0aW9uKGtleSkge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wU3RhY2soKSxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgaWQ7XG5cbiAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgaWQgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgdHlwZSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIGNvbnRleHQgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgfVxuXG4gICAgbGV0IGhhc2ggPSB0aGlzLmhhc2g7XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGhhc2guY29udGV4dHNba2V5XSA9IGNvbnRleHQ7XG4gICAgfVxuICAgIGlmICh0eXBlKSB7XG4gICAgICBoYXNoLnR5cGVzW2tleV0gPSB0eXBlO1xuICAgIH1cbiAgICBpZiAoaWQpIHtcbiAgICAgIGhhc2guaWRzW2tleV0gPSBpZDtcbiAgICB9XG4gICAgaGFzaC52YWx1ZXNba2V5XSA9IHZhbHVlO1xuICB9LFxuXG4gIHB1c2hJZDogZnVuY3Rpb24odHlwZSwgbmFtZSwgY2hpbGQpIHtcbiAgICBpZiAodHlwZSA9PT0gJ0Jsb2NrUGFyYW0nKSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoXG4gICAgICAgICAgJ2Jsb2NrUGFyYW1zWycgKyBuYW1lWzBdICsgJ10ucGF0aFsnICsgbmFtZVsxXSArICddJ1xuICAgICAgICAgICsgKGNoaWxkID8gJyArICcgKyBKU09OLnN0cmluZ2lmeSgnLicgKyBjaGlsZCkgOiAnJykpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1BhdGhFeHByZXNzaW9uJykge1xuICAgICAgdGhpcy5wdXNoU3RyaW5nKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ3RydWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdudWxsJyk7XG4gICAgfVxuICB9LFxuXG4gIC8vIEhFTFBFUlNcblxuICBjb21waWxlcjogSmF2YVNjcmlwdENvbXBpbGVyLFxuXG4gIGNvbXBpbGVDaGlsZHJlbjogZnVuY3Rpb24oZW52aXJvbm1lbnQsIG9wdGlvbnMpIHtcbiAgICBsZXQgY2hpbGRyZW4gPSBlbnZpcm9ubWVudC5jaGlsZHJlbiwgY2hpbGQsIGNvbXBpbGVyO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICBjb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuXG4gICAgICBsZXQgZXhpc3RpbmcgPSB0aGlzLm1hdGNoRXhpc3RpbmdQcm9ncmFtKGNoaWxkKTtcblxuICAgICAgaWYgKGV4aXN0aW5nID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnByb2dyYW1zLnB1c2goJycpOyAvLyBQbGFjZWhvbGRlciB0byBwcmV2ZW50IG5hbWUgY29uZmxpY3RzIGZvciBuZXN0ZWQgY2hpbGRyZW5cbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5jb250ZXh0LnByb2dyYW1zLmxlbmd0aDtcbiAgICAgICAgY2hpbGQuaW5kZXggPSBpbmRleDtcbiAgICAgICAgY2hpbGQubmFtZSA9ICdwcm9ncmFtJyArIGluZGV4O1xuICAgICAgICB0aGlzLmNvbnRleHQucHJvZ3JhbXNbaW5kZXhdID0gY29tcGlsZXIuY29tcGlsZShjaGlsZCwgb3B0aW9ucywgdGhpcy5jb250ZXh0LCAhdGhpcy5wcmVjb21waWxlKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmRlY29yYXRvcnNbaW5kZXhdID0gY29tcGlsZXIuZGVjb3JhdG9ycztcbiAgICAgICAgdGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpbmRleF0gPSBjaGlsZDtcblxuICAgICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGNvbXBpbGVyLnVzZURlcHRocztcbiAgICAgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgY29tcGlsZXIudXNlQmxvY2tQYXJhbXM7XG4gICAgICAgIGNoaWxkLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzO1xuICAgICAgICBjaGlsZC51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZC5pbmRleCA9IGV4aXN0aW5nLmluZGV4O1xuICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0nICsgZXhpc3RpbmcuaW5kZXg7XG5cbiAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBleGlzdGluZy51c2VEZXB0aHM7XG4gICAgICAgIHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGV4aXN0aW5nLnVzZUJsb2NrUGFyYW1zO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbWF0Y2hFeGlzdGluZ1Byb2dyYW06IGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGxldCBlbnZpcm9ubWVudCA9IHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHNbaV07XG4gICAgICBpZiAoZW52aXJvbm1lbnQgJiYgZW52aXJvbm1lbnQuZXF1YWxzKGNoaWxkKSkge1xuICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHByb2dyYW1FeHByZXNzaW9uOiBmdW5jdGlvbihndWlkKSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5lbnZpcm9ubWVudC5jaGlsZHJlbltndWlkXSxcbiAgICAgICAgcHJvZ3JhbVBhcmFtcyA9IFtjaGlsZC5pbmRleCwgJ2RhdGEnLCBjaGlsZC5ibG9ja1BhcmFtc107XG5cbiAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcyB8fCB0aGlzLnVzZURlcHRocykge1xuICAgICAgcHJvZ3JhbVBhcmFtcy5wdXNoKCdibG9ja1BhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGhpcy51c2VEZXB0aHMpIHtcbiAgICAgIHByb2dyYW1QYXJhbXMucHVzaCgnZGVwdGhzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICdjb250YWluZXIucHJvZ3JhbSgnICsgcHJvZ3JhbVBhcmFtcy5qb2luKCcsICcpICsgJyknO1xuICB9LFxuXG4gIHVzZVJlZ2lzdGVyOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgaWYgKCF0aGlzLnJlZ2lzdGVyc1tuYW1lXSkge1xuICAgICAgdGhpcy5yZWdpc3RlcnNbbmFtZV0gPSB0cnVlO1xuICAgICAgdGhpcy5yZWdpc3RlcnMubGlzdC5wdXNoKG5hbWUpO1xuICAgIH1cbiAgfSxcblxuICBwdXNoOiBmdW5jdGlvbihleHByKSB7XG4gICAgaWYgKCEoZXhwciBpbnN0YW5jZW9mIExpdGVyYWwpKSB7XG4gICAgICBleHByID0gdGhpcy5zb3VyY2Uud3JhcChleHByKTtcbiAgICB9XG5cbiAgICB0aGlzLmlubGluZVN0YWNrLnB1c2goZXhwcik7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH0sXG5cbiAgcHVzaFN0YWNrTGl0ZXJhbDogZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoaXMucHVzaChuZXcgTGl0ZXJhbChpdGVtKSk7XG4gIH0sXG5cbiAgcHVzaFNvdXJjZTogZnVuY3Rpb24oc291cmNlKSB7XG4gICAgaWYgKHRoaXMucGVuZGluZ0NvbnRlbnQpIHtcbiAgICAgIHRoaXMuc291cmNlLnB1c2goXG4gICAgICAgICAgdGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcodGhpcy5wZW5kaW5nQ29udGVudCksIHRoaXMucGVuZGluZ0xvY2F0aW9uKSk7XG4gICAgICB0aGlzLnBlbmRpbmdDb250ZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgIHRoaXMuc291cmNlLnB1c2goc291cmNlKTtcbiAgICB9XG4gIH0sXG5cbiAgcmVwbGFjZVN0YWNrOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgIGxldCBwcmVmaXggPSBbJygnXSxcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIGNyZWF0ZWRTdGFjayxcbiAgICAgICAgdXNlZExpdGVyYWw7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy5pc0lubGluZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdyZXBsYWNlU3RhY2sgb24gbm9uLWlubGluZScpO1xuICAgIH1cblxuICAgIC8vIFdlIHdhbnQgdG8gbWVyZ2UgdGhlIGlubGluZSBzdGF0ZW1lbnQgaW50byB0aGUgcmVwbGFjZW1lbnQgc3RhdGVtZW50IHZpYSAnLCdcbiAgICBsZXQgdG9wID0gdGhpcy5wb3BTdGFjayh0cnVlKTtcblxuICAgIGlmICh0b3AgaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICAvLyBMaXRlcmFscyBkbyBub3QgbmVlZCB0byBiZSBpbmxpbmVkXG4gICAgICBzdGFjayA9IFt0b3AudmFsdWVdO1xuICAgICAgcHJlZml4ID0gWycoJywgc3RhY2tdO1xuICAgICAgdXNlZExpdGVyYWwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBHZXQgb3IgY3JlYXRlIHRoZSBjdXJyZW50IHN0YWNrIG5hbWUgZm9yIHVzZSBieSB0aGUgaW5saW5lXG4gICAgICBjcmVhdGVkU3RhY2sgPSB0cnVlO1xuICAgICAgbGV0IG5hbWUgPSB0aGlzLmluY3JTdGFjaygpO1xuXG4gICAgICBwcmVmaXggPSBbJygoJywgdGhpcy5wdXNoKG5hbWUpLCAnID0gJywgdG9wLCAnKSddO1xuICAgICAgc3RhY2sgPSB0aGlzLnRvcFN0YWNrKCk7XG4gICAgfVxuXG4gICAgbGV0IGl0ZW0gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0YWNrKTtcblxuICAgIGlmICghdXNlZExpdGVyYWwpIHtcbiAgICAgIHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG4gICAgaWYgKGNyZWF0ZWRTdGFjaykge1xuICAgICAgdGhpcy5zdGFja1Nsb3QtLTtcbiAgICB9XG4gICAgdGhpcy5wdXNoKHByZWZpeC5jb25jYXQoaXRlbSwgJyknKSk7XG4gIH0sXG5cbiAgaW5jclN0YWNrOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnN0YWNrU2xvdCsrO1xuICAgIGlmICh0aGlzLnN0YWNrU2xvdCA+IHRoaXMuc3RhY2tWYXJzLmxlbmd0aCkgeyB0aGlzLnN0YWNrVmFycy5wdXNoKCdzdGFjaycgKyB0aGlzLnN0YWNrU2xvdCk7IH1cbiAgICByZXR1cm4gdGhpcy50b3BTdGFja05hbWUoKTtcbiAgfSxcbiAgdG9wU3RhY2tOYW1lOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90O1xuICB9LFxuICBmbHVzaElubGluZTogZnVuY3Rpb24oKSB7XG4gICAgbGV0IGlubGluZVN0YWNrID0gdGhpcy5pbmxpbmVTdGFjaztcbiAgICB0aGlzLmlubGluZVN0YWNrID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGlubGluZVN0YWNrLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBsZXQgZW50cnkgPSBpbmxpbmVTdGFja1tpXTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGVudHJ5IGluc3RhbmNlb2YgTGl0ZXJhbCkge1xuICAgICAgICB0aGlzLmNvbXBpbGVTdGFjay5wdXNoKGVudHJ5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBzdGFjayA9IHRoaXMuaW5jclN0YWNrKCk7XG4gICAgICAgIHRoaXMucHVzaFNvdXJjZShbc3RhY2ssICcgPSAnLCBlbnRyeSwgJzsnXSk7XG4gICAgICAgIHRoaXMuY29tcGlsZVN0YWNrLnB1c2goc3RhY2spO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgaXNJbmxpbmU6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmlubGluZVN0YWNrLmxlbmd0aDtcbiAgfSxcblxuICBwb3BTdGFjazogZnVuY3Rpb24od3JhcHBlZCkge1xuICAgIGxldCBpbmxpbmUgPSB0aGlzLmlzSW5saW5lKCksXG4gICAgICAgIGl0ZW0gPSAoaW5saW5lID8gdGhpcy5pbmxpbmVTdGFjayA6IHRoaXMuY29tcGlsZVN0YWNrKS5wb3AoKTtcblxuICAgIGlmICghd3JhcHBlZCAmJiAoaXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFpbmxpbmUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCF0aGlzLnN0YWNrU2xvdCkge1xuICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgc3RhY2sgcG9wJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFja1Nsb3QtLTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgfSxcblxuICB0b3BTdGFjazogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHN0YWNrID0gKHRoaXMuaXNJbmxpbmUoKSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlzLmNvbXBpbGVTdGFjayksXG4gICAgICAgIGl0ZW0gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTGl0ZXJhbCkge1xuICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgfSxcblxuICBjb250ZXh0TmFtZTogZnVuY3Rpb24oY29udGV4dCkge1xuICAgIGlmICh0aGlzLnVzZURlcHRocyAmJiBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gJ2RlcHRoc1snICsgY29udGV4dCArICddJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdkZXB0aCcgKyBjb250ZXh0O1xuICAgIH1cbiAgfSxcblxuICBxdW90ZWRTdHJpbmc6IGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcoc3RyKTtcbiAgfSxcblxuICBvYmplY3RMaXRlcmFsOiBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2Uub2JqZWN0TGl0ZXJhbChvYmopO1xuICB9LFxuXG4gIGFsaWFzYWJsZTogZnVuY3Rpb24obmFtZSkge1xuICAgIGxldCByZXQgPSB0aGlzLmFsaWFzZXNbbmFtZV07XG4gICAgaWYgKHJldCkge1xuICAgICAgcmV0LnJlZmVyZW5jZUNvdW50Kys7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIHJldCA9IHRoaXMuYWxpYXNlc1tuYW1lXSA9IHRoaXMuc291cmNlLndyYXAobmFtZSk7XG4gICAgcmV0LmFsaWFzYWJsZSA9IHRydWU7XG4gICAgcmV0LnJlZmVyZW5jZUNvdW50ID0gMTtcblxuICAgIHJldHVybiByZXQ7XG4gIH0sXG5cbiAgc2V0dXBIZWxwZXI6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgbmFtZSwgYmxvY2tIZWxwZXIpIHtcbiAgICBsZXQgcGFyYW1zID0gW10sXG4gICAgICAgIHBhcmFtc0luaXQgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUsIHBhcmFtcywgYmxvY2tIZWxwZXIpO1xuICAgIGxldCBmb3VuZEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKSxcbiAgICAgICAgY2FsbENvbnRleHQgPSB0aGlzLmFsaWFzYWJsZShgJHt0aGlzLmNvbnRleHROYW1lKDApfSAhPSBudWxsID8gJHt0aGlzLmNvbnRleHROYW1lKDApfSA6IChjb250YWluZXIubnVsbENvbnRleHQgfHwge30pYCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICBwYXJhbXNJbml0OiBwYXJhbXNJbml0LFxuICAgICAgbmFtZTogZm91bmRIZWxwZXIsXG4gICAgICBjYWxsUGFyYW1zOiBbY2FsbENvbnRleHRdLmNvbmNhdChwYXJhbXMpXG4gICAgfTtcbiAgfSxcblxuICBzZXR1cFBhcmFtczogZnVuY3Rpb24oaGVscGVyLCBwYXJhbVNpemUsIHBhcmFtcykge1xuICAgIGxldCBvcHRpb25zID0ge30sXG4gICAgICAgIGNvbnRleHRzID0gW10sXG4gICAgICAgIHR5cGVzID0gW10sXG4gICAgICAgIGlkcyA9IFtdLFxuICAgICAgICBvYmplY3RBcmdzID0gIXBhcmFtcyxcbiAgICAgICAgcGFyYW07XG5cbiAgICBpZiAob2JqZWN0QXJncykge1xuICAgICAgcGFyYW1zID0gW107XG4gICAgfVxuXG4gICAgb3B0aW9ucy5uYW1lID0gdGhpcy5xdW90ZWRTdHJpbmcoaGVscGVyKTtcbiAgICBvcHRpb25zLmhhc2ggPSB0aGlzLnBvcFN0YWNrKCk7XG5cbiAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgb3B0aW9ucy5oYXNoSWRzID0gdGhpcy5wb3BTdGFjaygpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIG9wdGlvbnMuaGFzaFR5cGVzID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgb3B0aW9ucy5oYXNoQ29udGV4dHMgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgfVxuXG4gICAgbGV0IGludmVyc2UgPSB0aGlzLnBvcFN0YWNrKCksXG4gICAgICAgIHByb2dyYW0gPSB0aGlzLnBvcFN0YWNrKCk7XG5cbiAgICAvLyBBdm9pZCBzZXR0aW5nIGZuIGFuZCBpbnZlcnNlIGlmIG5laXRoZXIgYXJlIHNldC4gVGhpcyBhbGxvd3NcbiAgICAvLyBoZWxwZXJzIHRvIGRvIGEgY2hlY2sgZm9yIGBpZiAob3B0aW9ucy5mbilgXG4gICAgaWYgKHByb2dyYW0gfHwgaW52ZXJzZSkge1xuICAgICAgb3B0aW9ucy5mbiA9IHByb2dyYW0gfHwgJ2NvbnRhaW5lci5ub29wJztcbiAgICAgIG9wdGlvbnMuaW52ZXJzZSA9IGludmVyc2UgfHwgJ2NvbnRhaW5lci5ub29wJztcbiAgICB9XG5cbiAgICAvLyBUaGUgcGFyYW1ldGVycyBnbyBvbiB0byB0aGUgc3RhY2sgaW4gb3JkZXIgKG1ha2luZyBzdXJlIHRoYXQgdGhleSBhcmUgZXZhbHVhdGVkIGluIG9yZGVyKVxuICAgIC8vIHNvIHdlIG5lZWQgdG8gcG9wIHRoZW0gb2ZmIHRoZSBzdGFjayBpbiByZXZlcnNlIG9yZGVyXG4gICAgbGV0IGkgPSBwYXJhbVNpemU7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgcGFyYW0gPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICBwYXJhbXNbaV0gPSBwYXJhbTtcblxuICAgICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgICAgaWRzW2ldID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICAgIHR5cGVzW2ldID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgICBjb250ZXh0c1tpXSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob2JqZWN0QXJncykge1xuICAgICAgb3B0aW9ucy5hcmdzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShwYXJhbXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICBvcHRpb25zLmlkcyA9IHRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkoaWRzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICBvcHRpb25zLnR5cGVzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheSh0eXBlcyk7XG4gICAgICBvcHRpb25zLmNvbnRleHRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShjb250ZXh0cyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kYXRhKSB7XG4gICAgICBvcHRpb25zLmRhdGEgPSAnZGF0YSc7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zKSB7XG4gICAgICBvcHRpb25zLmJsb2NrUGFyYW1zID0gJ2Jsb2NrUGFyYW1zJztcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH0sXG5cbiAgc2V0dXBIZWxwZXJBcmdzOiBmdW5jdGlvbihoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zLCB1c2VSZWdpc3Rlcikge1xuICAgIGxldCBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKTtcbiAgICBvcHRpb25zID0gdGhpcy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpO1xuICAgIGlmICh1c2VSZWdpc3Rlcikge1xuICAgICAgdGhpcy51c2VSZWdpc3Rlcignb3B0aW9ucycpO1xuICAgICAgcGFyYW1zLnB1c2goJ29wdGlvbnMnKTtcbiAgICAgIHJldHVybiBbJ29wdGlvbnM9Jywgb3B0aW9uc107XG4gICAgfSBlbHNlIGlmIChwYXJhbXMpIHtcbiAgICAgIHBhcmFtcy5wdXNoKG9wdGlvbnMpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gIH1cbn07XG5cblxuKGZ1bmN0aW9uKCkge1xuICBjb25zdCByZXNlcnZlZFdvcmRzID0gKFxuICAgICdicmVhayBlbHNlIG5ldyB2YXInICtcbiAgICAnIGNhc2UgZmluYWxseSByZXR1cm4gdm9pZCcgK1xuICAgICcgY2F0Y2ggZm9yIHN3aXRjaCB3aGlsZScgK1xuICAgICcgY29udGludWUgZnVuY3Rpb24gdGhpcyB3aXRoJyArXG4gICAgJyBkZWZhdWx0IGlmIHRocm93JyArXG4gICAgJyBkZWxldGUgaW4gdHJ5JyArXG4gICAgJyBkbyBpbnN0YW5jZW9mIHR5cGVvZicgK1xuICAgICcgYWJzdHJhY3QgZW51bSBpbnQgc2hvcnQnICtcbiAgICAnIGJvb2xlYW4gZXhwb3J0IGludGVyZmFjZSBzdGF0aWMnICtcbiAgICAnIGJ5dGUgZXh0ZW5kcyBsb25nIHN1cGVyJyArXG4gICAgJyBjaGFyIGZpbmFsIG5hdGl2ZSBzeW5jaHJvbml6ZWQnICtcbiAgICAnIGNsYXNzIGZsb2F0IHBhY2thZ2UgdGhyb3dzJyArXG4gICAgJyBjb25zdCBnb3RvIHByaXZhdGUgdHJhbnNpZW50JyArXG4gICAgJyBkZWJ1Z2dlciBpbXBsZW1lbnRzIHByb3RlY3RlZCB2b2xhdGlsZScgK1xuICAgICcgZG91YmxlIGltcG9ydCBwdWJsaWMgbGV0IHlpZWxkIGF3YWl0JyArXG4gICAgJyBudWxsIHRydWUgZmFsc2UnXG4gICkuc3BsaXQoJyAnKTtcblxuICBjb25zdCBjb21waWxlcldvcmRzID0gSmF2YVNjcmlwdENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTID0ge307XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSByZXNlcnZlZFdvcmRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGNvbXBpbGVyV29yZHNbcmVzZXJ2ZWRXb3Jkc1tpXV0gPSB0cnVlO1xuICB9XG59KCkpO1xuXG5KYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAhSmF2YVNjcmlwdENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTW25hbWVdICYmICgvXlthLXpBLVpfJF1bMC05YS16QS1aXyRdKiQvKS50ZXN0KG5hbWUpO1xufTtcblxuZnVuY3Rpb24gc3RyaWN0TG9va3VwKHJlcXVpcmVUZXJtaW5hbCwgY29tcGlsZXIsIHBhcnRzLCB0eXBlKSB7XG4gIGxldCBzdGFjayA9IGNvbXBpbGVyLnBvcFN0YWNrKCksXG4gICAgICBpID0gMCxcbiAgICAgIGxlbiA9IHBhcnRzLmxlbmd0aDtcbiAgaWYgKHJlcXVpcmVUZXJtaW5hbCkge1xuICAgIGxlbi0tO1xuICB9XG5cbiAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgIHN0YWNrID0gY29tcGlsZXIubmFtZUxvb2t1cChzdGFjaywgcGFydHNbaV0sIHR5cGUpO1xuICB9XG5cbiAgaWYgKHJlcXVpcmVUZXJtaW5hbCkge1xuICAgIHJldHVybiBbY29tcGlsZXIuYWxpYXNhYmxlKCdjb250YWluZXIuc3RyaWN0JyksICcoJywgc3RhY2ssICcsICcsIGNvbXBpbGVyLnF1b3RlZFN0cmluZyhwYXJ0c1tpXSksICcpJ107XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEphdmFTY3JpcHRDb21waWxlcjtcbiJdfQ==