nyc 13.2.0 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -1
- package/README.md +127 -93
- package/bin/nyc.js +15 -30
- package/bin/wrap.js +8 -10
- package/index.js +168 -142
- package/lib/commands/check-coverage.js +26 -6
- package/lib/commands/instrument.js +64 -24
- package/lib/commands/merge.js +1 -6
- package/lib/commands/report.js +66 -6
- package/lib/config-util.js +23 -9
- package/lib/hash.js +26 -4
- package/lib/instrumenters/istanbul.js +8 -14
- package/lib/instrumenters/noop.js +5 -5
- package/lib/process.js +18 -24
- package/lib/source-maps.js +11 -12
- package/package.json +25 -60
- package/lib/self-coverage-helper.js +0 -20
- package/node_modules/ansi-regex/index.js +0 -10
- package/node_modules/ansi-regex/license +0 -9
- package/node_modules/ansi-regex/package.json +0 -88
- package/node_modules/ansi-regex/readme.md +0 -46
- package/node_modules/append-transform/index.js +0 -89
- package/node_modules/append-transform/license +0 -21
- package/node_modules/append-transform/package.json +0 -82
- package/node_modules/append-transform/readme.md +0 -76
- package/node_modules/archy/.travis.yml +0 -4
- package/node_modules/archy/LICENSE +0 -18
- package/node_modules/archy/examples/beep.js +0 -24
- package/node_modules/archy/examples/multi_line.js +0 -25
- package/node_modules/archy/index.js +0 -35
- package/node_modules/archy/package.json +0 -86
- package/node_modules/archy/readme.markdown +0 -88
- package/node_modules/archy/test/beep.js +0 -40
- package/node_modules/archy/test/multi_line.js +0 -45
- package/node_modules/archy/test/non_unicode.js +0 -40
- package/node_modules/arrify/index.js +0 -8
- package/node_modules/arrify/license +0 -21
- package/node_modules/arrify/package.json +0 -71
- package/node_modules/arrify/readme.md +0 -36
- package/node_modules/async/CHANGELOG.md +0 -269
- package/node_modules/async/LICENSE +0 -19
- package/node_modules/async/README.md +0 -56
- package/node_modules/async/all.js +0 -50
- package/node_modules/async/allLimit.js +0 -42
- package/node_modules/async/allSeries.js +0 -37
- package/node_modules/async/any.js +0 -52
- package/node_modules/async/anyLimit.js +0 -43
- package/node_modules/async/anySeries.js +0 -38
- package/node_modules/async/apply.js +0 -68
- package/node_modules/async/applyEach.js +0 -51
- package/node_modules/async/applyEachSeries.js +0 -37
- package/node_modules/async/asyncify.js +0 -110
- package/node_modules/async/auto.js +0 -289
- package/node_modules/async/autoInject.js +0 -170
- package/node_modules/async/bower.json +0 -17
- package/node_modules/async/cargo.js +0 -94
- package/node_modules/async/compose.js +0 -58
- package/node_modules/async/concat.js +0 -43
- package/node_modules/async/concatLimit.js +0 -65
- package/node_modules/async/concatSeries.js +0 -36
- package/node_modules/async/constant.js +0 -66
- package/node_modules/async/detect.js +0 -61
- package/node_modules/async/detectLimit.js +0 -48
- package/node_modules/async/detectSeries.js +0 -38
- package/node_modules/async/dir.js +0 -43
- package/node_modules/async/dist/async.js +0 -5609
- package/node_modules/async/dist/async.min.js +0 -2
- package/node_modules/async/dist/async.min.map +0 -1
- package/node_modules/async/doDuring.js +0 -66
- package/node_modules/async/doUntil.js +0 -39
- package/node_modules/async/doWhilst.js +0 -59
- package/node_modules/async/during.js +0 -76
- package/node_modules/async/each.js +0 -82
- package/node_modules/async/eachLimit.js +0 -45
- package/node_modules/async/eachOf.js +0 -111
- package/node_modules/async/eachOfLimit.js +0 -41
- package/node_modules/async/eachOfSeries.js +0 -35
- package/node_modules/async/eachSeries.js +0 -37
- package/node_modules/async/ensureAsync.js +0 -73
- package/node_modules/async/every.js +0 -50
- package/node_modules/async/everyLimit.js +0 -42
- package/node_modules/async/everySeries.js +0 -37
- package/node_modules/async/filter.js +0 -45
- package/node_modules/async/filterLimit.js +0 -37
- package/node_modules/async/filterSeries.js +0 -35
- package/node_modules/async/find.js +0 -61
- package/node_modules/async/findLimit.js +0 -48
- package/node_modules/async/findSeries.js +0 -38
- package/node_modules/async/foldl.js +0 -78
- package/node_modules/async/foldr.js +0 -44
- package/node_modules/async/forEach.js +0 -82
- package/node_modules/async/forEachLimit.js +0 -45
- package/node_modules/async/forEachOf.js +0 -111
- package/node_modules/async/forEachOfLimit.js +0 -41
- package/node_modules/async/forEachOfSeries.js +0 -35
- package/node_modules/async/forEachSeries.js +0 -37
- package/node_modules/async/forever.js +0 -65
- package/node_modules/async/groupBy.js +0 -54
- package/node_modules/async/groupByLimit.js +0 -71
- package/node_modules/async/groupBySeries.js +0 -37
- package/node_modules/async/index.js +0 -582
- package/node_modules/async/inject.js +0 -78
- package/node_modules/async/internal/DoublyLinkedList.js +0 -88
- package/node_modules/async/internal/applyEach.js +0 -38
- package/node_modules/async/internal/breakLoop.js +0 -9
- package/node_modules/async/internal/consoleFunc.js +0 -42
- package/node_modules/async/internal/createTester.js +0 -44
- package/node_modules/async/internal/doLimit.js +0 -12
- package/node_modules/async/internal/doParallel.js +0 -23
- package/node_modules/async/internal/doParallelLimit.js +0 -23
- package/node_modules/async/internal/eachOfLimit.js +0 -74
- package/node_modules/async/internal/filter.js +0 -75
- package/node_modules/async/internal/findGetResult.js +0 -10
- package/node_modules/async/internal/getIterator.js +0 -13
- package/node_modules/async/internal/initialParams.js +0 -21
- package/node_modules/async/internal/iterator.js +0 -58
- package/node_modules/async/internal/map.js +0 -35
- package/node_modules/async/internal/notId.js +0 -10
- package/node_modules/async/internal/once.js +0 -15
- package/node_modules/async/internal/onlyOnce.js +0 -15
- package/node_modules/async/internal/parallel.js +0 -42
- package/node_modules/async/internal/queue.js +0 -204
- package/node_modules/async/internal/reject.js +0 -21
- package/node_modules/async/internal/setImmediate.js +0 -42
- package/node_modules/async/internal/slice.js +0 -16
- package/node_modules/async/internal/withoutIndex.js +0 -12
- package/node_modules/async/internal/wrapAsync.js +0 -25
- package/node_modules/async/log.js +0 -41
- package/node_modules/async/map.js +0 -54
- package/node_modules/async/mapLimit.js +0 -37
- package/node_modules/async/mapSeries.js +0 -36
- package/node_modules/async/mapValues.js +0 -63
- package/node_modules/async/mapValuesLimit.js +0 -61
- package/node_modules/async/mapValuesSeries.js +0 -37
- package/node_modules/async/memoize.js +0 -101
- package/node_modules/async/nextTick.js +0 -51
- package/node_modules/async/package.json +0 -110
- package/node_modules/async/parallel.js +0 -90
- package/node_modules/async/parallelLimit.js +0 -40
- package/node_modules/async/priorityQueue.js +0 -98
- package/node_modules/async/queue.js +0 -130
- package/node_modules/async/race.js +0 -70
- package/node_modules/async/reduce.js +0 -78
- package/node_modules/async/reduceRight.js +0 -44
- package/node_modules/async/reflect.js +0 -81
- package/node_modules/async/reflectAll.js +0 -105
- package/node_modules/async/reject.js +0 -45
- package/node_modules/async/rejectLimit.js +0 -37
- package/node_modules/async/rejectSeries.js +0 -35
- package/node_modules/async/retry.js +0 -156
- package/node_modules/async/retryable.js +0 -65
- package/node_modules/async/select.js +0 -45
- package/node_modules/async/selectLimit.js +0 -37
- package/node_modules/async/selectSeries.js +0 -35
- package/node_modules/async/seq.js +0 -91
- package/node_modules/async/series.js +0 -85
- package/node_modules/async/setImmediate.js +0 -45
- package/node_modules/async/some.js +0 -52
- package/node_modules/async/someLimit.js +0 -43
- package/node_modules/async/someSeries.js +0 -38
- package/node_modules/async/sortBy.js +0 -91
- package/node_modules/async/timeout.js +0 -89
- package/node_modules/async/times.js +0 -50
- package/node_modules/async/timesLimit.js +0 -42
- package/node_modules/async/timesSeries.js +0 -32
- package/node_modules/async/transform.js +0 -87
- package/node_modules/async/tryEach.js +0 -81
- package/node_modules/async/unmemoize.js +0 -25
- package/node_modules/async/until.js +0 -41
- package/node_modules/async/waterfall.js +0 -113
- package/node_modules/async/whilst.js +0 -72
- package/node_modules/async/wrapSync.js +0 -110
- package/node_modules/balanced-match/.npmignore +0 -5
- package/node_modules/balanced-match/LICENSE.md +0 -21
- package/node_modules/balanced-match/README.md +0 -91
- package/node_modules/balanced-match/index.js +0 -59
- package/node_modules/balanced-match/package.json +0 -80
- package/node_modules/brace-expansion/LICENSE +0 -21
- package/node_modules/brace-expansion/README.md +0 -129
- package/node_modules/brace-expansion/index.js +0 -201
- package/node_modules/brace-expansion/package.json +0 -78
- package/node_modules/builtin-modules/builtin-modules.json +0 -35
- package/node_modules/builtin-modules/index.js +0 -10
- package/node_modules/builtin-modules/license +0 -21
- package/node_modules/builtin-modules/package.json +0 -75
- package/node_modules/builtin-modules/readme.md +0 -41
- package/node_modules/builtin-modules/static.js +0 -2
- package/node_modules/caching-transform/index.js +0 -84
- package/node_modules/caching-transform/license +0 -21
- package/node_modules/caching-transform/package.json +0 -81
- package/node_modules/caching-transform/readme.md +0 -151
- package/node_modules/camelcase/index.js +0 -71
- package/node_modules/camelcase/license +0 -9
- package/node_modules/camelcase/package.json +0 -76
- package/node_modules/camelcase/readme.md +0 -81
- package/node_modules/cliui/CHANGELOG.md +0 -51
- package/node_modules/cliui/LICENSE.txt +0 -14
- package/node_modules/cliui/README.md +0 -115
- package/node_modules/cliui/index.js +0 -324
- package/node_modules/cliui/package.json +0 -102
- package/node_modules/code-point-at/index.js +0 -32
- package/node_modules/code-point-at/license +0 -21
- package/node_modules/code-point-at/package.json +0 -74
- package/node_modules/code-point-at/readme.md +0 -32
- package/node_modules/commander/CHANGELOG.md +0 -382
- package/node_modules/commander/LICENSE +0 -22
- package/node_modules/commander/Readme.md +0 -425
- package/node_modules/commander/index.js +0 -1236
- package/node_modules/commander/package.json +0 -73
- package/node_modules/commander/typings/index.d.ts +0 -309
- package/node_modules/commondir/LICENSE +0 -24
- package/node_modules/commondir/example/dir.js +0 -3
- package/node_modules/commondir/index.js +0 -29
- package/node_modules/commondir/package.json +0 -66
- package/node_modules/commondir/readme.markdown +0 -48
- package/node_modules/commondir/test/dirs.js +0 -55
- package/node_modules/concat-map/.travis.yml +0 -4
- package/node_modules/concat-map/LICENSE +0 -18
- package/node_modules/concat-map/README.markdown +0 -62
- package/node_modules/concat-map/example/map.js +0 -6
- package/node_modules/concat-map/index.js +0 -13
- package/node_modules/concat-map/package.json +0 -91
- package/node_modules/concat-map/test/map.js +0 -39
- package/node_modules/convert-source-map/LICENSE +0 -23
- package/node_modules/convert-source-map/README.md +0 -125
- package/node_modules/convert-source-map/index.js +0 -136
- package/node_modules/convert-source-map/package.json +0 -72
- package/node_modules/cross-spawn/LICENSE +0 -19
- package/node_modules/cross-spawn/README.md +0 -71
- package/node_modules/cross-spawn/index.js +0 -59
- package/node_modules/cross-spawn/lib/enoent.js +0 -73
- package/node_modules/cross-spawn/lib/hasBrokenSpawn.js +0 -11
- package/node_modules/cross-spawn/lib/parse.js +0 -140
- package/node_modules/cross-spawn/lib/resolveCommand.js +0 -31
- package/node_modules/cross-spawn/package.json +0 -84
- package/node_modules/debug/CHANGELOG.md +0 -395
- package/node_modules/debug/LICENSE +0 -19
- package/node_modules/debug/README.md +0 -455
- package/node_modules/debug/dist/debug.js +0 -912
- package/node_modules/debug/package.json +0 -106
- package/node_modules/debug/src/browser.js +0 -264
- package/node_modules/debug/src/common.js +0 -266
- package/node_modules/debug/src/index.js +0 -10
- package/node_modules/debug/src/node.js +0 -257
- package/node_modules/decamelize/index.js +0 -13
- package/node_modules/decamelize/license +0 -21
- package/node_modules/decamelize/package.json +0 -78
- package/node_modules/decamelize/readme.md +0 -48
- package/node_modules/default-require-extensions/js.js +0 -8
- package/node_modules/default-require-extensions/json.js +0 -14
- package/node_modules/default-require-extensions/license +0 -21
- package/node_modules/default-require-extensions/package.json +0 -77
- package/node_modules/default-require-extensions/readme.md +0 -32
- package/node_modules/end-of-stream/LICENSE +0 -21
- package/node_modules/end-of-stream/README.md +0 -52
- package/node_modules/end-of-stream/index.js +0 -87
- package/node_modules/end-of-stream/package.json +0 -65
- package/node_modules/error-ex/LICENSE +0 -21
- package/node_modules/error-ex/README.md +0 -144
- package/node_modules/error-ex/index.js +0 -141
- package/node_modules/error-ex/package.json +0 -94
- package/node_modules/es6-error/CHANGELOG.md +0 -26
- package/node_modules/es6-error/LICENSE.md +0 -21
- package/node_modules/es6-error/README.md +0 -59
- package/node_modules/es6-error/es6/index.js +0 -72
- package/node_modules/es6-error/lib/index.js +0 -79
- package/node_modules/es6-error/package.json +0 -78
- package/node_modules/es6-error/typings/index.d.ts +0 -1
- package/node_modules/execa/index.js +0 -361
- package/node_modules/execa/lib/errname.js +0 -39
- package/node_modules/execa/lib/stdio.js +0 -41
- package/node_modules/execa/license +0 -9
- package/node_modules/execa/node_modules/cross-spawn/CHANGELOG.md +0 -100
- package/node_modules/execa/node_modules/cross-spawn/LICENSE +0 -21
- package/node_modules/execa/node_modules/cross-spawn/README.md +0 -94
- package/node_modules/execa/node_modules/cross-spawn/index.js +0 -39
- package/node_modules/execa/node_modules/cross-spawn/lib/enoent.js +0 -59
- package/node_modules/execa/node_modules/cross-spawn/lib/parse.js +0 -125
- package/node_modules/execa/node_modules/cross-spawn/lib/util/escape.js +0 -45
- package/node_modules/execa/node_modules/cross-spawn/lib/util/readShebang.js +0 -32
- package/node_modules/execa/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -47
- package/node_modules/execa/node_modules/cross-spawn/package.json +0 -110
- package/node_modules/execa/package.json +0 -110
- package/node_modules/execa/readme.md +0 -327
- package/node_modules/find-cache-dir/index.js +0 -32
- package/node_modules/find-cache-dir/license +0 -9
- package/node_modules/find-cache-dir/package.json +0 -77
- package/node_modules/find-cache-dir/readme.md +0 -116
- package/node_modules/find-up/index.js +0 -46
- package/node_modules/find-up/license +0 -9
- package/node_modules/find-up/package.json +0 -88
- package/node_modules/find-up/readme.md +0 -87
- package/node_modules/foreground-child/CHANGELOG.md +0 -93
- package/node_modules/foreground-child/LICENSE +0 -15
- package/node_modules/foreground-child/README.md +0 -52
- package/node_modules/foreground-child/changelog.sh +0 -10
- package/node_modules/foreground-child/index.js +0 -102
- package/node_modules/foreground-child/package.json +0 -68
- package/node_modules/fs.realpath/LICENSE +0 -43
- package/node_modules/fs.realpath/README.md +0 -33
- package/node_modules/fs.realpath/index.js +0 -66
- package/node_modules/fs.realpath/old.js +0 -303
- package/node_modules/fs.realpath/package.json +0 -63
- package/node_modules/get-caller-file/LICENSE.md +0 -6
- package/node_modules/get-caller-file/README.md +0 -4
- package/node_modules/get-caller-file/index.js +0 -20
- package/node_modules/get-caller-file/package.json +0 -62
- package/node_modules/get-stream/buffer-stream.js +0 -51
- package/node_modules/get-stream/index.js +0 -50
- package/node_modules/get-stream/license +0 -9
- package/node_modules/get-stream/package.json +0 -81
- package/node_modules/get-stream/readme.md +0 -123
- package/node_modules/glob/LICENSE +0 -15
- package/node_modules/glob/README.md +0 -368
- package/node_modules/glob/changelog.md +0 -67
- package/node_modules/glob/common.js +0 -240
- package/node_modules/glob/glob.js +0 -790
- package/node_modules/glob/package.json +0 -84
- package/node_modules/glob/sync.js +0 -486
- package/node_modules/graceful-fs/LICENSE +0 -15
- package/node_modules/graceful-fs/README.md +0 -133
- package/node_modules/graceful-fs/clone.js +0 -19
- package/node_modules/graceful-fs/graceful-fs.js +0 -279
- package/node_modules/graceful-fs/legacy-streams.js +0 -118
- package/node_modules/graceful-fs/package.json +0 -92
- package/node_modules/graceful-fs/polyfills.js +0 -329
- package/node_modules/handlebars/LICENSE +0 -19
- package/node_modules/handlebars/README.markdown +0 -168
- package/node_modules/handlebars/bin/handlebars +0 -128
- package/node_modules/handlebars/dist/amd/handlebars/base.js +0 -96
- package/node_modules/handlebars/dist/amd/handlebars/compiler/ast.js +0 -31
- package/node_modules/handlebars/dist/amd/handlebars/compiler/base.js +0 -36
- package/node_modules/handlebars/dist/amd/handlebars/compiler/code-gen.js +0 -163
- package/node_modules/handlebars/dist/amd/handlebars/compiler/compiler.js +0 -569
- package/node_modules/handlebars/dist/amd/handlebars/compiler/helpers.js +0 -228
- package/node_modules/handlebars/dist/amd/handlebars/compiler/javascript-compiler.js +0 -1120
- package/node_modules/handlebars/dist/amd/handlebars/compiler/parser.js +0 -739
- package/node_modules/handlebars/dist/amd/handlebars/compiler/printer.js +0 -186
- package/node_modules/handlebars/dist/amd/handlebars/compiler/visitor.js +0 -138
- package/node_modules/handlebars/dist/amd/handlebars/compiler/whitespace-control.js +0 -219
- package/node_modules/handlebars/dist/amd/handlebars/decorators/inline.js +0 -25
- package/node_modules/handlebars/dist/amd/handlebars/decorators.js +0 -16
- package/node_modules/handlebars/dist/amd/handlebars/exception.js +0 -53
- package/node_modules/handlebars/dist/amd/handlebars/helpers/block-helper-missing.js +0 -35
- package/node_modules/handlebars/dist/amd/handlebars/helpers/each.js +0 -89
- package/node_modules/handlebars/dist/amd/handlebars/helpers/helper-missing.js +0 -22
- package/node_modules/handlebars/dist/amd/handlebars/helpers/if.js +0 -25
- package/node_modules/handlebars/dist/amd/handlebars/helpers/log.js +0 -24
- package/node_modules/handlebars/dist/amd/handlebars/helpers/lookup.js +0 -10
- package/node_modules/handlebars/dist/amd/handlebars/helpers/with.js +0 -29
- package/node_modules/handlebars/dist/amd/handlebars/helpers.js +0 -34
- package/node_modules/handlebars/dist/amd/handlebars/logger.js +0 -44
- package/node_modules/handlebars/dist/amd/handlebars/no-conflict.js +0 -18
- package/node_modules/handlebars/dist/amd/handlebars/runtime.js +0 -297
- package/node_modules/handlebars/dist/amd/handlebars/safe-string.js +0 -15
- package/node_modules/handlebars/dist/amd/handlebars/utils.js +0 -126
- package/node_modules/handlebars/dist/amd/handlebars.js +0 -51
- package/node_modules/handlebars/dist/amd/handlebars.runtime.js +0 -44
- package/node_modules/handlebars/dist/amd/precompiler.js +0 -313
- package/node_modules/handlebars/dist/cjs/handlebars/base.js +0 -104
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js +0 -31
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js +0 -48
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js +0 -166
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js +0 -573
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js +0 -228
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js +0 -1128
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js +0 -739
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/printer.js +0 -186
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js +0 -140
- package/node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js +0 -221
- package/node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js +0 -29
- package/node_modules/handlebars/dist/cjs/handlebars/decorators.js +0 -16
- package/node_modules/handlebars/dist/cjs/handlebars/exception.js +0 -54
- package/node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js +0 -39
- package/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js +0 -94
- package/node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js +0 -25
- package/node_modules/handlebars/dist/cjs/handlebars/helpers/if.js +0 -29
- package/node_modules/handlebars/dist/cjs/handlebars/helpers/log.js +0 -26
- package/node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js +0 -12
- package/node_modules/handlebars/dist/cjs/handlebars/helpers/with.js +0 -33
- package/node_modules/handlebars/dist/cjs/handlebars/helpers.js +0 -46
- package/node_modules/handlebars/dist/cjs/handlebars/logger.js +0 -47
- package/node_modules/handlebars/dist/cjs/handlebars/no-conflict.js +0 -20
- package/node_modules/handlebars/dist/cjs/handlebars/runtime.js +0 -307
- package/node_modules/handlebars/dist/cjs/handlebars/safe-string.js +0 -15
- package/node_modules/handlebars/dist/cjs/handlebars/utils.js +0 -124
- package/node_modules/handlebars/dist/cjs/handlebars.js +0 -65
- package/node_modules/handlebars/dist/cjs/handlebars.runtime.js +0 -66
- package/node_modules/handlebars/dist/cjs/precompiler.js +0 -327
- package/node_modules/handlebars/dist/handlebars.amd.js +0 -4350
- package/node_modules/handlebars/dist/handlebars.amd.min.js +0 -29
- package/node_modules/handlebars/dist/handlebars.js +0 -4838
- package/node_modules/handlebars/dist/handlebars.min.js +0 -29
- package/node_modules/handlebars/dist/handlebars.runtime.amd.js +0 -1046
- package/node_modules/handlebars/dist/handlebars.runtime.amd.min.js +0 -27
- package/node_modules/handlebars/dist/handlebars.runtime.js +0 -1468
- package/node_modules/handlebars/dist/handlebars.runtime.min.js +0 -27
- package/node_modules/handlebars/lib/handlebars/base.js +0 -78
- package/node_modules/handlebars/lib/handlebars/compiler/ast.js +0 -28
- package/node_modules/handlebars/lib/handlebars/compiler/base.js +0 -24
- package/node_modules/handlebars/lib/handlebars/compiler/code-gen.js +0 -168
- package/node_modules/handlebars/lib/handlebars/compiler/compiler.js +0 -559
- package/node_modules/handlebars/lib/handlebars/compiler/helpers.js +0 -210
- package/node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js +0 -1137
- package/node_modules/handlebars/lib/handlebars/compiler/parser.js +0 -622
- package/node_modules/handlebars/lib/handlebars/compiler/printer.js +0 -171
- package/node_modules/handlebars/lib/handlebars/compiler/visitor.js +0 -129
- package/node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js +0 -216
- package/node_modules/handlebars/lib/handlebars/decorators/inline.js +0 -22
- package/node_modules/handlebars/lib/handlebars/decorators.js +0 -6
- package/node_modules/handlebars/lib/handlebars/exception.js +0 -49
- package/node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js +0 -32
- package/node_modules/handlebars/lib/handlebars/helpers/each.js +0 -79
- package/node_modules/handlebars/lib/handlebars/helpers/helper-missing.js +0 -13
- package/node_modules/handlebars/lib/handlebars/helpers/if.js +0 -20
- package/node_modules/handlebars/lib/handlebars/helpers/log.js +0 -19
- package/node_modules/handlebars/lib/handlebars/helpers/lookup.js +0 -5
- package/node_modules/handlebars/lib/handlebars/helpers/with.js +0 -24
- package/node_modules/handlebars/lib/handlebars/helpers.js +0 -17
- package/node_modules/handlebars/lib/handlebars/logger.js +0 -35
- package/node_modules/handlebars/lib/handlebars/no-conflict.js +0 -13
- package/node_modules/handlebars/lib/handlebars/runtime.js +0 -281
- package/node_modules/handlebars/lib/handlebars/safe-string.js +0 -10
- package/node_modules/handlebars/lib/handlebars/utils.js +0 -108
- package/node_modules/handlebars/lib/handlebars.js +0 -41
- package/node_modules/handlebars/lib/handlebars.runtime.js +0 -37
- package/node_modules/handlebars/lib/index.js +0 -25
- package/node_modules/handlebars/lib/precompiler.js +0 -298
- package/node_modules/handlebars/node_modules/source-map/CHANGELOG.md +0 -301
- package/node_modules/handlebars/node_modules/source-map/LICENSE +0 -28
- package/node_modules/handlebars/node_modules/source-map/README.md +0 -742
- package/node_modules/handlebars/node_modules/source-map/dist/source-map.debug.js +0 -3234
- package/node_modules/handlebars/node_modules/source-map/dist/source-map.js +0 -3233
- package/node_modules/handlebars/node_modules/source-map/dist/source-map.min.js +0 -2
- package/node_modules/handlebars/node_modules/source-map/dist/source-map.min.js.map +0 -1
- package/node_modules/handlebars/node_modules/source-map/lib/array-set.js +0 -121
- package/node_modules/handlebars/node_modules/source-map/lib/base64-vlq.js +0 -140
- package/node_modules/handlebars/node_modules/source-map/lib/base64.js +0 -67
- package/node_modules/handlebars/node_modules/source-map/lib/binary-search.js +0 -111
- package/node_modules/handlebars/node_modules/source-map/lib/mapping-list.js +0 -79
- package/node_modules/handlebars/node_modules/source-map/lib/quick-sort.js +0 -114
- package/node_modules/handlebars/node_modules/source-map/lib/source-map-consumer.js +0 -1145
- package/node_modules/handlebars/node_modules/source-map/lib/source-map-generator.js +0 -425
- package/node_modules/handlebars/node_modules/source-map/lib/source-node.js +0 -413
- package/node_modules/handlebars/node_modules/source-map/lib/util.js +0 -488
- package/node_modules/handlebars/node_modules/source-map/package.json +0 -215
- package/node_modules/handlebars/node_modules/source-map/source-map.d.ts +0 -98
- package/node_modules/handlebars/node_modules/source-map/source-map.js +0 -8
- package/node_modules/handlebars/package.json +0 -121
- package/node_modules/handlebars/print-script +0 -95
- package/node_modules/handlebars/release-notes.md +0 -624
- package/node_modules/handlebars/runtime.js +0 -3
- package/node_modules/has-flag/index.js +0 -8
- package/node_modules/has-flag/license +0 -9
- package/node_modules/has-flag/package.json +0 -81
- package/node_modules/has-flag/readme.md +0 -70
- package/node_modules/hasha/index.js +0 -67
- package/node_modules/hasha/license +0 -21
- package/node_modules/hasha/package.json +0 -87
- package/node_modules/hasha/readme.md +0 -120
- package/node_modules/hosted-git-info/CHANGELOG.md +0 -54
- package/node_modules/hosted-git-info/LICENSE +0 -13
- package/node_modules/hosted-git-info/README.md +0 -133
- package/node_modules/hosted-git-info/git-host-info.js +0 -77
- package/node_modules/hosted-git-info/git-host.js +0 -131
- package/node_modules/hosted-git-info/index.js +0 -122
- package/node_modules/hosted-git-info/package.json +0 -72
- package/node_modules/imurmurhash/README.md +0 -122
- package/node_modules/imurmurhash/imurmurhash.js +0 -138
- package/node_modules/imurmurhash/imurmurhash.min.js +0 -12
- package/node_modules/imurmurhash/package.json +0 -67
- package/node_modules/inflight/LICENSE +0 -15
- package/node_modules/inflight/README.md +0 -37
- package/node_modules/inflight/inflight.js +0 -54
- package/node_modules/inflight/package.json +0 -62
- package/node_modules/inherits/LICENSE +0 -16
- package/node_modules/inherits/README.md +0 -42
- package/node_modules/inherits/inherits.js +0 -7
- package/node_modules/inherits/inherits_browser.js +0 -23
- package/node_modules/inherits/package.json +0 -67
- package/node_modules/invert-kv/index.js +0 -15
- package/node_modules/invert-kv/license +0 -9
- package/node_modules/invert-kv/package.json +0 -67
- package/node_modules/invert-kv/readme.md +0 -25
- package/node_modules/is-arrayish/.editorconfig +0 -18
- package/node_modules/is-arrayish/.istanbul.yml +0 -4
- package/node_modules/is-arrayish/.npmignore +0 -5
- package/node_modules/is-arrayish/.travis.yml +0 -17
- package/node_modules/is-arrayish/LICENSE +0 -21
- package/node_modules/is-arrayish/README.md +0 -16
- package/node_modules/is-arrayish/index.js +0 -10
- package/node_modules/is-arrayish/package.json +0 -69
- package/node_modules/is-builtin-module/index.js +0 -10
- package/node_modules/is-builtin-module/license +0 -21
- package/node_modules/is-builtin-module/package.json +0 -78
- package/node_modules/is-builtin-module/readme.md +0 -33
- package/node_modules/is-fullwidth-code-point/index.js +0 -46
- package/node_modules/is-fullwidth-code-point/license +0 -21
- package/node_modules/is-fullwidth-code-point/package.json +0 -81
- package/node_modules/is-fullwidth-code-point/readme.md +0 -39
- package/node_modules/is-stream/index.js +0 -21
- package/node_modules/is-stream/license +0 -21
- package/node_modules/is-stream/package.json +0 -75
- package/node_modules/is-stream/readme.md +0 -42
- package/node_modules/isexe/.npmignore +0 -2
- package/node_modules/isexe/LICENSE +0 -15
- package/node_modules/isexe/README.md +0 -51
- package/node_modules/isexe/index.js +0 -57
- package/node_modules/isexe/mode.js +0 -41
- package/node_modules/isexe/package.json +0 -64
- package/node_modules/isexe/test/basic.js +0 -221
- package/node_modules/isexe/windows.js +0 -42
- package/node_modules/istanbul-lib-coverage/CHANGELOG.md +0 -106
- package/node_modules/istanbul-lib-coverage/LICENSE +0 -24
- package/node_modules/istanbul-lib-coverage/README.md +0 -33
- package/node_modules/istanbul-lib-coverage/index.js +0 -64
- package/node_modules/istanbul-lib-coverage/lib/coverage-map.js +0 -130
- package/node_modules/istanbul-lib-coverage/lib/file.js +0 -356
- package/node_modules/istanbul-lib-coverage/package.json +0 -76
- package/node_modules/istanbul-lib-hook/CHANGELOG.md +0 -109
- package/node_modules/istanbul-lib-hook/LICENSE +0 -24
- package/node_modules/istanbul-lib-hook/README.md +0 -7
- package/node_modules/istanbul-lib-hook/index.js +0 -5
- package/node_modules/istanbul-lib-hook/lib/hook.js +0 -237
- package/node_modules/istanbul-lib-hook/package.json +0 -65
- package/node_modules/istanbul-lib-report/CHANGELOG.md +0 -102
- package/node_modules/istanbul-lib-report/LICENSE +0 -24
- package/node_modules/istanbul-lib-report/README.md +0 -8
- package/node_modules/istanbul-lib-report/index.js +0 -56
- package/node_modules/istanbul-lib-report/lib/context.js +0 -126
- package/node_modules/istanbul-lib-report/lib/file-writer.js +0 -188
- package/node_modules/istanbul-lib-report/lib/path.js +0 -162
- package/node_modules/istanbul-lib-report/lib/summarizer.js +0 -294
- package/node_modules/istanbul-lib-report/lib/tree.js +0 -164
- package/node_modules/istanbul-lib-report/lib/watermarks.js +0 -14
- package/node_modules/istanbul-lib-report/lib/xml-writer.js +0 -102
- package/node_modules/istanbul-lib-report/node_modules/supports-color/browser.js +0 -5
- package/node_modules/istanbul-lib-report/node_modules/supports-color/index.js +0 -138
- package/node_modules/istanbul-lib-report/node_modules/supports-color/license +0 -9
- package/node_modules/istanbul-lib-report/node_modules/supports-color/package.json +0 -88
- package/node_modules/istanbul-lib-report/node_modules/supports-color/readme.md +0 -85
- package/node_modules/istanbul-lib-report/package.json +0 -71
- package/node_modules/istanbul-lib-source-maps/CHANGELOG.md +0 -156
- package/node_modules/istanbul-lib-source-maps/LICENSE +0 -24
- package/node_modules/istanbul-lib-source-maps/README.md +0 -12
- package/node_modules/istanbul-lib-source-maps/index.js +0 -15
- package/node_modules/istanbul-lib-source-maps/lib/map-store.js +0 -172
- package/node_modules/istanbul-lib-source-maps/lib/mapped.js +0 -130
- package/node_modules/istanbul-lib-source-maps/lib/pathutils.js +0 -19
- package/node_modules/istanbul-lib-source-maps/lib/source-store.js +0 -78
- package/node_modules/istanbul-lib-source-maps/lib/transformer.js +0 -267
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/CHANGELOG.md +0 -301
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/LICENSE +0 -28
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/README.md +0 -742
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/dist/source-map.debug.js +0 -3234
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/dist/source-map.js +0 -3233
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/dist/source-map.min.js +0 -2
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/dist/source-map.min.js.map +0 -1
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/lib/array-set.js +0 -121
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/lib/base64-vlq.js +0 -140
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/lib/base64.js +0 -67
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/lib/binary-search.js +0 -111
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/lib/mapping-list.js +0 -79
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/lib/quick-sort.js +0 -114
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/lib/source-map-consumer.js +0 -1145
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/lib/source-map-generator.js +0 -425
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/lib/source-node.js +0 -413
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/lib/util.js +0 -488
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/package.json +0 -215
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/source-map.d.ts +0 -98
- package/node_modules/istanbul-lib-source-maps/node_modules/source-map/source-map.js +0 -8
- package/node_modules/istanbul-lib-source-maps/package.json +0 -76
- package/node_modules/istanbul-reports/CHANGELOG.md +0 -198
- package/node_modules/istanbul-reports/LICENSE +0 -24
- package/node_modules/istanbul-reports/README.md +0 -14
- package/node_modules/istanbul-reports/index.js +0 -19
- package/node_modules/istanbul-reports/lib/clover/index.js +0 -166
- package/node_modules/istanbul-reports/lib/cobertura/index.js +0 -146
- package/node_modules/istanbul-reports/lib/html/annotator.js +0 -278
- package/node_modules/istanbul-reports/lib/html/assets/base.css +0 -223
- package/node_modules/istanbul-reports/lib/html/assets/block-navigation.js +0 -78
- package/node_modules/istanbul-reports/lib/html/assets/sort-arrow-sprite.png +0 -0
- package/node_modules/istanbul-reports/lib/html/assets/sorter.js +0 -169
- package/node_modules/istanbul-reports/lib/html/assets/vendor/prettify.css +0 -1
- package/node_modules/istanbul-reports/lib/html/assets/vendor/prettify.js +0 -1
- package/node_modules/istanbul-reports/lib/html/helpers.js +0 -107
- package/node_modules/istanbul-reports/lib/html/index.js +0 -277
- package/node_modules/istanbul-reports/lib/html/insertion-text.js +0 -113
- package/node_modules/istanbul-reports/lib/html/templates/foot.txt +0 -21
- package/node_modules/istanbul-reports/lib/html/templates/head.txt +0 -63
- package/node_modules/istanbul-reports/lib/json/index.js +0 -39
- package/node_modules/istanbul-reports/lib/json-summary/index.js +0 -48
- package/node_modules/istanbul-reports/lib/lcov/index.js +0 -29
- package/node_modules/istanbul-reports/lib/lcovonly/index.js +0 -68
- package/node_modules/istanbul-reports/lib/none/index.js +0 -7
- package/node_modules/istanbul-reports/lib/teamcity/index.js +0 -55
- package/node_modules/istanbul-reports/lib/text/index.js +0 -245
- package/node_modules/istanbul-reports/lib/text-lcov/index.js +0 -14
- package/node_modules/istanbul-reports/lib/text-summary/index.js +0 -60
- package/node_modules/istanbul-reports/package.json +0 -69
- package/node_modules/json-parse-better-errors/CHANGELOG.md +0 -46
- package/node_modules/json-parse-better-errors/LICENSE.md +0 -7
- package/node_modules/json-parse-better-errors/README.md +0 -46
- package/node_modules/json-parse-better-errors/index.js +0 -38
- package/node_modules/json-parse-better-errors/package.json +0 -79
- package/node_modules/lcid/index.js +0 -23
- package/node_modules/lcid/lcid.json +0 -203
- package/node_modules/lcid/license +0 -9
- package/node_modules/lcid/package.json +0 -82
- package/node_modules/lcid/readme.md +0 -35
- package/node_modules/load-json-file/index.js +0 -11
- package/node_modules/load-json-file/license +0 -21
- package/node_modules/load-json-file/package.json +0 -79
- package/node_modules/load-json-file/readme.md +0 -45
- package/node_modules/locate-path/index.js +0 -24
- package/node_modules/locate-path/license +0 -9
- package/node_modules/locate-path/package.json +0 -79
- package/node_modules/locate-path/readme.md +0 -99
- package/node_modules/lodash/LICENSE +0 -47
- package/node_modules/lodash/README.md +0 -39
- package/node_modules/lodash/_DataView.js +0 -7
- package/node_modules/lodash/_Hash.js +0 -32
- package/node_modules/lodash/_LazyWrapper.js +0 -28
- package/node_modules/lodash/_ListCache.js +0 -32
- package/node_modules/lodash/_LodashWrapper.js +0 -22
- package/node_modules/lodash/_Map.js +0 -7
- package/node_modules/lodash/_MapCache.js +0 -32
- package/node_modules/lodash/_Promise.js +0 -7
- package/node_modules/lodash/_Set.js +0 -7
- package/node_modules/lodash/_SetCache.js +0 -27
- package/node_modules/lodash/_Stack.js +0 -27
- package/node_modules/lodash/_Symbol.js +0 -6
- package/node_modules/lodash/_Uint8Array.js +0 -6
- package/node_modules/lodash/_WeakMap.js +0 -7
- package/node_modules/lodash/_apply.js +0 -21
- package/node_modules/lodash/_arrayAggregator.js +0 -22
- package/node_modules/lodash/_arrayEach.js +0 -22
- package/node_modules/lodash/_arrayEachRight.js +0 -21
- package/node_modules/lodash/_arrayEvery.js +0 -23
- package/node_modules/lodash/_arrayFilter.js +0 -25
- package/node_modules/lodash/_arrayIncludes.js +0 -17
- package/node_modules/lodash/_arrayIncludesWith.js +0 -22
- package/node_modules/lodash/_arrayLikeKeys.js +0 -49
- package/node_modules/lodash/_arrayMap.js +0 -21
- package/node_modules/lodash/_arrayPush.js +0 -20
- package/node_modules/lodash/_arrayReduce.js +0 -26
- package/node_modules/lodash/_arrayReduceRight.js +0 -24
- package/node_modules/lodash/_arraySample.js +0 -15
- package/node_modules/lodash/_arraySampleSize.js +0 -17
- package/node_modules/lodash/_arrayShuffle.js +0 -15
- package/node_modules/lodash/_arraySome.js +0 -23
- package/node_modules/lodash/_asciiSize.js +0 -12
- package/node_modules/lodash/_asciiToArray.js +0 -12
- package/node_modules/lodash/_asciiWords.js +0 -15
- package/node_modules/lodash/_assignMergeValue.js +0 -20
- package/node_modules/lodash/_assignValue.js +0 -28
- package/node_modules/lodash/_assocIndexOf.js +0 -21
- package/node_modules/lodash/_baseAggregator.js +0 -21
- package/node_modules/lodash/_baseAssign.js +0 -17
- package/node_modules/lodash/_baseAssignIn.js +0 -17
- package/node_modules/lodash/_baseAssignValue.js +0 -25
- package/node_modules/lodash/_baseAt.js +0 -23
- package/node_modules/lodash/_baseClamp.js +0 -22
- package/node_modules/lodash/_baseClone.js +0 -171
- package/node_modules/lodash/_baseConforms.js +0 -18
- package/node_modules/lodash/_baseConformsTo.js +0 -27
- package/node_modules/lodash/_baseCreate.js +0 -30
- package/node_modules/lodash/_baseDelay.js +0 -21
- package/node_modules/lodash/_baseDifference.js +0 -67
- package/node_modules/lodash/_baseEach.js +0 -14
- package/node_modules/lodash/_baseEachRight.js +0 -14
- package/node_modules/lodash/_baseEvery.js +0 -21
- package/node_modules/lodash/_baseExtremum.js +0 -32
- package/node_modules/lodash/_baseFill.js +0 -32
- package/node_modules/lodash/_baseFilter.js +0 -21
- package/node_modules/lodash/_baseFindIndex.js +0 -24
- package/node_modules/lodash/_baseFindKey.js +0 -23
- package/node_modules/lodash/_baseFlatten.js +0 -38
- package/node_modules/lodash/_baseFor.js +0 -16
- package/node_modules/lodash/_baseForOwn.js +0 -16
- package/node_modules/lodash/_baseForOwnRight.js +0 -16
- package/node_modules/lodash/_baseForRight.js +0 -15
- package/node_modules/lodash/_baseFunctions.js +0 -19
- package/node_modules/lodash/_baseGet.js +0 -24
- package/node_modules/lodash/_baseGetAllKeys.js +0 -20
- package/node_modules/lodash/_baseGetTag.js +0 -28
- package/node_modules/lodash/_baseGt.js +0 -14
- package/node_modules/lodash/_baseHas.js +0 -19
- package/node_modules/lodash/_baseHasIn.js +0 -13
- package/node_modules/lodash/_baseInRange.js +0 -18
- package/node_modules/lodash/_baseIndexOf.js +0 -20
- package/node_modules/lodash/_baseIndexOfWith.js +0 -23
- package/node_modules/lodash/_baseIntersection.js +0 -74
- package/node_modules/lodash/_baseInverter.js +0 -21
- package/node_modules/lodash/_baseInvoke.js +0 -24
- package/node_modules/lodash/_baseIsArguments.js +0 -18
- package/node_modules/lodash/_baseIsArrayBuffer.js +0 -17
- package/node_modules/lodash/_baseIsDate.js +0 -18
- package/node_modules/lodash/_baseIsEqual.js +0 -28
- package/node_modules/lodash/_baseIsEqualDeep.js +0 -83
- package/node_modules/lodash/_baseIsMap.js +0 -18
- package/node_modules/lodash/_baseIsMatch.js +0 -62
- package/node_modules/lodash/_baseIsNaN.js +0 -12
- package/node_modules/lodash/_baseIsNative.js +0 -47
- package/node_modules/lodash/_baseIsRegExp.js +0 -18
- package/node_modules/lodash/_baseIsSet.js +0 -18
- package/node_modules/lodash/_baseIsTypedArray.js +0 -60
- package/node_modules/lodash/_baseIteratee.js +0 -31
- package/node_modules/lodash/_baseKeys.js +0 -30
- package/node_modules/lodash/_baseKeysIn.js +0 -33
- package/node_modules/lodash/_baseLodash.js +0 -10
- package/node_modules/lodash/_baseLt.js +0 -14
- package/node_modules/lodash/_baseMap.js +0 -22
- package/node_modules/lodash/_baseMatches.js +0 -22
- package/node_modules/lodash/_baseMatchesProperty.js +0 -33
- package/node_modules/lodash/_baseMean.js +0 -20
- package/node_modules/lodash/_baseMerge.js +0 -42
- package/node_modules/lodash/_baseMergeDeep.js +0 -94
- package/node_modules/lodash/_baseNth.js +0 -20
- package/node_modules/lodash/_baseOrderBy.js +0 -34
- package/node_modules/lodash/_basePick.js +0 -19
- package/node_modules/lodash/_basePickBy.js +0 -30
- package/node_modules/lodash/_baseProperty.js +0 -14
- package/node_modules/lodash/_basePropertyDeep.js +0 -16
- package/node_modules/lodash/_basePropertyOf.js +0 -14
- package/node_modules/lodash/_basePullAll.js +0 -51
- package/node_modules/lodash/_basePullAt.js +0 -37
- package/node_modules/lodash/_baseRandom.js +0 -18
- package/node_modules/lodash/_baseRange.js +0 -28
- package/node_modules/lodash/_baseReduce.js +0 -23
- package/node_modules/lodash/_baseRepeat.js +0 -35
- package/node_modules/lodash/_baseRest.js +0 -17
- package/node_modules/lodash/_baseSample.js +0 -15
- package/node_modules/lodash/_baseSampleSize.js +0 -18
- package/node_modules/lodash/_baseSet.js +0 -47
- package/node_modules/lodash/_baseSetData.js +0 -17
- package/node_modules/lodash/_baseSetToString.js +0 -22
- package/node_modules/lodash/_baseShuffle.js +0 -15
- package/node_modules/lodash/_baseSlice.js +0 -31
- package/node_modules/lodash/_baseSome.js +0 -22
- package/node_modules/lodash/_baseSortBy.js +0 -21
- package/node_modules/lodash/_baseSortedIndex.js +0 -42
- package/node_modules/lodash/_baseSortedIndexBy.js +0 -64
- package/node_modules/lodash/_baseSortedUniq.js +0 -30
- package/node_modules/lodash/_baseSum.js +0 -24
- package/node_modules/lodash/_baseTimes.js +0 -20
- package/node_modules/lodash/_baseToNumber.js +0 -24
- package/node_modules/lodash/_baseToPairs.js +0 -18
- package/node_modules/lodash/_baseToString.js +0 -37
- package/node_modules/lodash/_baseUnary.js +0 -14
- package/node_modules/lodash/_baseUniq.js +0 -72
- package/node_modules/lodash/_baseUnset.js +0 -20
- package/node_modules/lodash/_baseUpdate.js +0 -18
- package/node_modules/lodash/_baseValues.js +0 -19
- package/node_modules/lodash/_baseWhile.js +0 -26
- package/node_modules/lodash/_baseWrapperValue.js +0 -25
- package/node_modules/lodash/_baseXor.js +0 -36
- package/node_modules/lodash/_baseZipObject.js +0 -23
- package/node_modules/lodash/_cacheHas.js +0 -13
- package/node_modules/lodash/_castArrayLikeObject.js +0 -14
- package/node_modules/lodash/_castFunction.js +0 -14
- package/node_modules/lodash/_castPath.js +0 -21
- package/node_modules/lodash/_castRest.js +0 -14
- package/node_modules/lodash/_castSlice.js +0 -18
- package/node_modules/lodash/_charsEndIndex.js +0 -19
- package/node_modules/lodash/_charsStartIndex.js +0 -20
- package/node_modules/lodash/_cloneArrayBuffer.js +0 -16
- package/node_modules/lodash/_cloneBuffer.js +0 -35
- package/node_modules/lodash/_cloneDataView.js +0 -16
- package/node_modules/lodash/_cloneRegExp.js +0 -17
- package/node_modules/lodash/_cloneSymbol.js +0 -18
- package/node_modules/lodash/_cloneTypedArray.js +0 -16
- package/node_modules/lodash/_compareAscending.js +0 -41
- package/node_modules/lodash/_compareMultiple.js +0 -44
- package/node_modules/lodash/_composeArgs.js +0 -39
- package/node_modules/lodash/_composeArgsRight.js +0 -41
- package/node_modules/lodash/_copyArray.js +0 -20
- package/node_modules/lodash/_copyObject.js +0 -40
- package/node_modules/lodash/_copySymbols.js +0 -16
- package/node_modules/lodash/_copySymbolsIn.js +0 -16
- package/node_modules/lodash/_coreJsData.js +0 -6
- package/node_modules/lodash/_countHolders.js +0 -21
- package/node_modules/lodash/_createAggregator.js +0 -23
- package/node_modules/lodash/_createAssigner.js +0 -37
- package/node_modules/lodash/_createBaseEach.js +0 -32
- package/node_modules/lodash/_createBaseFor.js +0 -25
- package/node_modules/lodash/_createBind.js +0 -28
- package/node_modules/lodash/_createCaseFirst.js +0 -33
- package/node_modules/lodash/_createCompounder.js +0 -24
- package/node_modules/lodash/_createCtor.js +0 -37
- package/node_modules/lodash/_createCurry.js +0 -46
- package/node_modules/lodash/_createFind.js +0 -25
- package/node_modules/lodash/_createFlow.js +0 -78
- package/node_modules/lodash/_createHybrid.js +0 -92
- package/node_modules/lodash/_createInverter.js +0 -17
- package/node_modules/lodash/_createMathOperation.js +0 -38
- package/node_modules/lodash/_createOver.js +0 -27
- package/node_modules/lodash/_createPadding.js +0 -33
- package/node_modules/lodash/_createPartial.js +0 -43
- package/node_modules/lodash/_createRange.js +0 -30
- package/node_modules/lodash/_createRecurry.js +0 -56
- package/node_modules/lodash/_createRelationalOperation.js +0 -20
- package/node_modules/lodash/_createRound.js +0 -33
- package/node_modules/lodash/_createSet.js +0 -19
- package/node_modules/lodash/_createToPairs.js +0 -30
- package/node_modules/lodash/_createWrap.js +0 -106
- package/node_modules/lodash/_customDefaultsAssignIn.js +0 -29
- package/node_modules/lodash/_customDefaultsMerge.js +0 -28
- package/node_modules/lodash/_customOmitClone.js +0 -16
- package/node_modules/lodash/_deburrLetter.js +0 -71
- package/node_modules/lodash/_defineProperty.js +0 -11
- package/node_modules/lodash/_equalArrays.js +0 -83
- package/node_modules/lodash/_equalByTag.js +0 -112
- package/node_modules/lodash/_equalObjects.js +0 -89
- package/node_modules/lodash/_escapeHtmlChar.js +0 -21
- package/node_modules/lodash/_escapeStringChar.js +0 -22
- package/node_modules/lodash/_flatRest.js +0 -16
- package/node_modules/lodash/_freeGlobal.js +0 -4
- package/node_modules/lodash/_getAllKeys.js +0 -16
- package/node_modules/lodash/_getAllKeysIn.js +0 -17
- package/node_modules/lodash/_getData.js +0 -15
- package/node_modules/lodash/_getFuncName.js +0 -31
- package/node_modules/lodash/_getHolder.js +0 -13
- package/node_modules/lodash/_getMapData.js +0 -18
- package/node_modules/lodash/_getMatchData.js +0 -24
- package/node_modules/lodash/_getNative.js +0 -17
- package/node_modules/lodash/_getPrototype.js +0 -6
- package/node_modules/lodash/_getRawTag.js +0 -46
- package/node_modules/lodash/_getSymbols.js +0 -30
- package/node_modules/lodash/_getSymbolsIn.js +0 -25
- package/node_modules/lodash/_getTag.js +0 -58
- package/node_modules/lodash/_getValue.js +0 -13
- package/node_modules/lodash/_getView.js +0 -33
- package/node_modules/lodash/_getWrapDetails.js +0 -17
- package/node_modules/lodash/_hasPath.js +0 -39
- package/node_modules/lodash/_hasUnicode.js +0 -26
- package/node_modules/lodash/_hasUnicodeWord.js +0 -15
- package/node_modules/lodash/_hashClear.js +0 -15
- package/node_modules/lodash/_hashDelete.js +0 -17
- package/node_modules/lodash/_hashGet.js +0 -30
- package/node_modules/lodash/_hashHas.js +0 -23
- package/node_modules/lodash/_hashSet.js +0 -23
- package/node_modules/lodash/_initCloneArray.js +0 -26
- package/node_modules/lodash/_initCloneByTag.js +0 -77
- package/node_modules/lodash/_initCloneObject.js +0 -18
- package/node_modules/lodash/_insertWrapDetails.js +0 -23
- package/node_modules/lodash/_isFlattenable.js +0 -20
- package/node_modules/lodash/_isIndex.js +0 -25
- package/node_modules/lodash/_isIterateeCall.js +0 -30
- package/node_modules/lodash/_isKey.js +0 -29
- package/node_modules/lodash/_isKeyable.js +0 -15
- package/node_modules/lodash/_isLaziable.js +0 -28
- package/node_modules/lodash/_isMaskable.js +0 -14
- package/node_modules/lodash/_isMasked.js +0 -20
- package/node_modules/lodash/_isPrototype.js +0 -18
- package/node_modules/lodash/_isStrictComparable.js +0 -15
- package/node_modules/lodash/_iteratorToArray.js +0 -18
- package/node_modules/lodash/_lazyClone.js +0 -23
- package/node_modules/lodash/_lazyReverse.js +0 -23
- package/node_modules/lodash/_lazyValue.js +0 -69
- package/node_modules/lodash/_listCacheClear.js +0 -13
- package/node_modules/lodash/_listCacheDelete.js +0 -35
- package/node_modules/lodash/_listCacheGet.js +0 -19
- package/node_modules/lodash/_listCacheHas.js +0 -16
- package/node_modules/lodash/_listCacheSet.js +0 -26
- package/node_modules/lodash/_mapCacheClear.js +0 -21
- package/node_modules/lodash/_mapCacheDelete.js +0 -18
- package/node_modules/lodash/_mapCacheGet.js +0 -16
- package/node_modules/lodash/_mapCacheHas.js +0 -16
- package/node_modules/lodash/_mapCacheSet.js +0 -22
- package/node_modules/lodash/_mapToArray.js +0 -18
- package/node_modules/lodash/_matchesStrictComparable.js +0 -20
- package/node_modules/lodash/_memoizeCapped.js +0 -26
- package/node_modules/lodash/_mergeData.js +0 -90
- package/node_modules/lodash/_metaMap.js +0 -6
- package/node_modules/lodash/_nativeCreate.js +0 -6
- package/node_modules/lodash/_nativeKeys.js +0 -6
- package/node_modules/lodash/_nativeKeysIn.js +0 -20
- package/node_modules/lodash/_nodeUtil.js +0 -30
- package/node_modules/lodash/_objectToString.js +0 -22
- package/node_modules/lodash/_overArg.js +0 -15
- package/node_modules/lodash/_overRest.js +0 -36
- package/node_modules/lodash/_parent.js +0 -16
- package/node_modules/lodash/_reEscape.js +0 -4
- package/node_modules/lodash/_reEvaluate.js +0 -4
- package/node_modules/lodash/_reInterpolate.js +0 -4
- package/node_modules/lodash/_realNames.js +0 -4
- package/node_modules/lodash/_reorder.js +0 -29
- package/node_modules/lodash/_replaceHolders.js +0 -29
- package/node_modules/lodash/_root.js +0 -9
- package/node_modules/lodash/_safeGet.js +0 -17
- package/node_modules/lodash/_setCacheAdd.js +0 -19
- package/node_modules/lodash/_setCacheHas.js +0 -14
- package/node_modules/lodash/_setData.js +0 -20
- package/node_modules/lodash/_setToArray.js +0 -18
- package/node_modules/lodash/_setToPairs.js +0 -18
- package/node_modules/lodash/_setToString.js +0 -14
- package/node_modules/lodash/_setWrapToString.js +0 -21
- package/node_modules/lodash/_shortOut.js +0 -37
- package/node_modules/lodash/_shuffleSelf.js +0 -28
- package/node_modules/lodash/_stackClear.js +0 -15
- package/node_modules/lodash/_stackDelete.js +0 -18
- package/node_modules/lodash/_stackGet.js +0 -14
- package/node_modules/lodash/_stackHas.js +0 -14
- package/node_modules/lodash/_stackSet.js +0 -34
- package/node_modules/lodash/_strictIndexOf.js +0 -23
- package/node_modules/lodash/_strictLastIndexOf.js +0 -21
- package/node_modules/lodash/_stringSize.js +0 -18
- package/node_modules/lodash/_stringToArray.js +0 -18
- package/node_modules/lodash/_stringToPath.js +0 -27
- package/node_modules/lodash/_toKey.js +0 -21
- package/node_modules/lodash/_toSource.js +0 -26
- package/node_modules/lodash/_unescapeHtmlChar.js +0 -21
- package/node_modules/lodash/_unicodeSize.js +0 -44
- package/node_modules/lodash/_unicodeToArray.js +0 -40
- package/node_modules/lodash/_unicodeWords.js +0 -69
- package/node_modules/lodash/_updateWrapDetails.js +0 -46
- package/node_modules/lodash/_wrapperClone.js +0 -23
- package/node_modules/lodash/add.js +0 -22
- package/node_modules/lodash/after.js +0 -42
- package/node_modules/lodash/array.js +0 -67
- package/node_modules/lodash/ary.js +0 -29
- package/node_modules/lodash/assign.js +0 -58
- package/node_modules/lodash/assignIn.js +0 -40
- package/node_modules/lodash/assignInWith.js +0 -38
- package/node_modules/lodash/assignWith.js +0 -37
- package/node_modules/lodash/at.js +0 -23
- package/node_modules/lodash/attempt.js +0 -35
- package/node_modules/lodash/before.js +0 -40
- package/node_modules/lodash/bind.js +0 -57
- package/node_modules/lodash/bindAll.js +0 -41
- package/node_modules/lodash/bindKey.js +0 -68
- package/node_modules/lodash/camelCase.js +0 -29
- package/node_modules/lodash/capitalize.js +0 -23
- package/node_modules/lodash/castArray.js +0 -44
- package/node_modules/lodash/ceil.js +0 -26
- package/node_modules/lodash/chain.js +0 -38
- package/node_modules/lodash/chunk.js +0 -50
- package/node_modules/lodash/clamp.js +0 -39
- package/node_modules/lodash/clone.js +0 -36
- package/node_modules/lodash/cloneDeep.js +0 -29
- package/node_modules/lodash/cloneDeepWith.js +0 -40
- package/node_modules/lodash/cloneWith.js +0 -42
- package/node_modules/lodash/collection.js +0 -30
- package/node_modules/lodash/commit.js +0 -33
- package/node_modules/lodash/compact.js +0 -31
- package/node_modules/lodash/concat.js +0 -43
- package/node_modules/lodash/cond.js +0 -60
- package/node_modules/lodash/conforms.js +0 -35
- package/node_modules/lodash/conformsTo.js +0 -32
- package/node_modules/lodash/constant.js +0 -26
- package/node_modules/lodash/core.js +0 -3854
- package/node_modules/lodash/core.min.js +0 -29
- package/node_modules/lodash/countBy.js +0 -40
- package/node_modules/lodash/create.js +0 -43
- package/node_modules/lodash/curry.js +0 -57
- package/node_modules/lodash/curryRight.js +0 -54
- package/node_modules/lodash/date.js +0 -3
- package/node_modules/lodash/debounce.js +0 -190
- package/node_modules/lodash/deburr.js +0 -45
- package/node_modules/lodash/defaultTo.js +0 -25
- package/node_modules/lodash/defaults.js +0 -64
- package/node_modules/lodash/defaultsDeep.js +0 -30
- package/node_modules/lodash/defer.js +0 -26
- package/node_modules/lodash/delay.js +0 -28
- package/node_modules/lodash/difference.js +0 -33
- package/node_modules/lodash/differenceBy.js +0 -44
- package/node_modules/lodash/differenceWith.js +0 -40
- package/node_modules/lodash/divide.js +0 -22
- package/node_modules/lodash/drop.js +0 -38
- package/node_modules/lodash/dropRight.js +0 -39
- package/node_modules/lodash/dropRightWhile.js +0 -45
- package/node_modules/lodash/dropWhile.js +0 -45
- package/node_modules/lodash/each.js +0 -1
- package/node_modules/lodash/eachRight.js +0 -1
- package/node_modules/lodash/endsWith.js +0 -43
- package/node_modules/lodash/entries.js +0 -1
- package/node_modules/lodash/entriesIn.js +0 -1
- package/node_modules/lodash/eq.js +0 -37
- package/node_modules/lodash/escape.js +0 -43
- package/node_modules/lodash/escapeRegExp.js +0 -32
- package/node_modules/lodash/every.js +0 -56
- package/node_modules/lodash/extend.js +0 -1
- package/node_modules/lodash/extendWith.js +0 -1
- package/node_modules/lodash/fill.js +0 -45
- package/node_modules/lodash/filter.js +0 -48
- package/node_modules/lodash/find.js +0 -42
- package/node_modules/lodash/findIndex.js +0 -55
- package/node_modules/lodash/findKey.js +0 -44
- package/node_modules/lodash/findLast.js +0 -25
- package/node_modules/lodash/findLastIndex.js +0 -59
- package/node_modules/lodash/findLastKey.js +0 -44
- package/node_modules/lodash/first.js +0 -1
- package/node_modules/lodash/flatMap.js +0 -29
- package/node_modules/lodash/flatMapDeep.js +0 -31
- package/node_modules/lodash/flatMapDepth.js +0 -31
- package/node_modules/lodash/flatten.js +0 -22
- package/node_modules/lodash/flattenDeep.js +0 -25
- package/node_modules/lodash/flattenDepth.js +0 -33
- package/node_modules/lodash/flip.js +0 -28
- package/node_modules/lodash/floor.js +0 -26
- package/node_modules/lodash/flow.js +0 -27
- package/node_modules/lodash/flowRight.js +0 -26
- package/node_modules/lodash/forEach.js +0 -41
- package/node_modules/lodash/forEachRight.js +0 -31
- package/node_modules/lodash/forIn.js +0 -39
- package/node_modules/lodash/forInRight.js +0 -37
- package/node_modules/lodash/forOwn.js +0 -36
- package/node_modules/lodash/forOwnRight.js +0 -34
- package/node_modules/lodash/fp/F.js +0 -1
- package/node_modules/lodash/fp/T.js +0 -1
- package/node_modules/lodash/fp/__.js +0 -1
- package/node_modules/lodash/fp/_baseConvert.js +0 -569
- package/node_modules/lodash/fp/_convertBrowser.js +0 -18
- package/node_modules/lodash/fp/_falseOptions.js +0 -7
- package/node_modules/lodash/fp/_mapping.js +0 -358
- package/node_modules/lodash/fp/_util.js +0 -16
- package/node_modules/lodash/fp/add.js +0 -5
- package/node_modules/lodash/fp/after.js +0 -5
- package/node_modules/lodash/fp/all.js +0 -1
- package/node_modules/lodash/fp/allPass.js +0 -1
- package/node_modules/lodash/fp/always.js +0 -1
- package/node_modules/lodash/fp/any.js +0 -1
- package/node_modules/lodash/fp/anyPass.js +0 -1
- package/node_modules/lodash/fp/apply.js +0 -1
- package/node_modules/lodash/fp/array.js +0 -2
- package/node_modules/lodash/fp/ary.js +0 -5
- package/node_modules/lodash/fp/assign.js +0 -5
- package/node_modules/lodash/fp/assignAll.js +0 -5
- package/node_modules/lodash/fp/assignAllWith.js +0 -5
- package/node_modules/lodash/fp/assignIn.js +0 -5
- package/node_modules/lodash/fp/assignInAll.js +0 -5
- package/node_modules/lodash/fp/assignInAllWith.js +0 -5
- package/node_modules/lodash/fp/assignInWith.js +0 -5
- package/node_modules/lodash/fp/assignWith.js +0 -5
- package/node_modules/lodash/fp/assoc.js +0 -1
- package/node_modules/lodash/fp/assocPath.js +0 -1
- package/node_modules/lodash/fp/at.js +0 -5
- package/node_modules/lodash/fp/attempt.js +0 -5
- package/node_modules/lodash/fp/before.js +0 -5
- package/node_modules/lodash/fp/bind.js +0 -5
- package/node_modules/lodash/fp/bindAll.js +0 -5
- package/node_modules/lodash/fp/bindKey.js +0 -5
- package/node_modules/lodash/fp/camelCase.js +0 -5
- package/node_modules/lodash/fp/capitalize.js +0 -5
- package/node_modules/lodash/fp/castArray.js +0 -5
- package/node_modules/lodash/fp/ceil.js +0 -5
- package/node_modules/lodash/fp/chain.js +0 -5
- package/node_modules/lodash/fp/chunk.js +0 -5
- package/node_modules/lodash/fp/clamp.js +0 -5
- package/node_modules/lodash/fp/clone.js +0 -5
- package/node_modules/lodash/fp/cloneDeep.js +0 -5
- package/node_modules/lodash/fp/cloneDeepWith.js +0 -5
- package/node_modules/lodash/fp/cloneWith.js +0 -5
- package/node_modules/lodash/fp/collection.js +0 -2
- package/node_modules/lodash/fp/commit.js +0 -5
- package/node_modules/lodash/fp/compact.js +0 -5
- package/node_modules/lodash/fp/complement.js +0 -1
- package/node_modules/lodash/fp/compose.js +0 -1
- package/node_modules/lodash/fp/concat.js +0 -5
- package/node_modules/lodash/fp/cond.js +0 -5
- package/node_modules/lodash/fp/conforms.js +0 -1
- package/node_modules/lodash/fp/conformsTo.js +0 -5
- package/node_modules/lodash/fp/constant.js +0 -5
- package/node_modules/lodash/fp/contains.js +0 -1
- package/node_modules/lodash/fp/convert.js +0 -18
- package/node_modules/lodash/fp/countBy.js +0 -5
- package/node_modules/lodash/fp/create.js +0 -5
- package/node_modules/lodash/fp/curry.js +0 -5
- package/node_modules/lodash/fp/curryN.js +0 -5
- package/node_modules/lodash/fp/curryRight.js +0 -5
- package/node_modules/lodash/fp/curryRightN.js +0 -5
- package/node_modules/lodash/fp/date.js +0 -2
- package/node_modules/lodash/fp/debounce.js +0 -5
- package/node_modules/lodash/fp/deburr.js +0 -5
- package/node_modules/lodash/fp/defaultTo.js +0 -5
- package/node_modules/lodash/fp/defaults.js +0 -5
- package/node_modules/lodash/fp/defaultsAll.js +0 -5
- package/node_modules/lodash/fp/defaultsDeep.js +0 -5
- package/node_modules/lodash/fp/defaultsDeepAll.js +0 -5
- package/node_modules/lodash/fp/defer.js +0 -5
- package/node_modules/lodash/fp/delay.js +0 -5
- package/node_modules/lodash/fp/difference.js +0 -5
- package/node_modules/lodash/fp/differenceBy.js +0 -5
- package/node_modules/lodash/fp/differenceWith.js +0 -5
- package/node_modules/lodash/fp/dissoc.js +0 -1
- package/node_modules/lodash/fp/dissocPath.js +0 -1
- package/node_modules/lodash/fp/divide.js +0 -5
- package/node_modules/lodash/fp/drop.js +0 -5
- package/node_modules/lodash/fp/dropLast.js +0 -1
- package/node_modules/lodash/fp/dropLastWhile.js +0 -1
- package/node_modules/lodash/fp/dropRight.js +0 -5
- package/node_modules/lodash/fp/dropRightWhile.js +0 -5
- package/node_modules/lodash/fp/dropWhile.js +0 -5
- package/node_modules/lodash/fp/each.js +0 -1
- package/node_modules/lodash/fp/eachRight.js +0 -1
- package/node_modules/lodash/fp/endsWith.js +0 -5
- package/node_modules/lodash/fp/entries.js +0 -1
- package/node_modules/lodash/fp/entriesIn.js +0 -1
- package/node_modules/lodash/fp/eq.js +0 -5
- package/node_modules/lodash/fp/equals.js +0 -1
- package/node_modules/lodash/fp/escape.js +0 -5
- package/node_modules/lodash/fp/escapeRegExp.js +0 -5
- package/node_modules/lodash/fp/every.js +0 -5
- package/node_modules/lodash/fp/extend.js +0 -1
- package/node_modules/lodash/fp/extendAll.js +0 -1
- package/node_modules/lodash/fp/extendAllWith.js +0 -1
- package/node_modules/lodash/fp/extendWith.js +0 -1
- package/node_modules/lodash/fp/fill.js +0 -5
- package/node_modules/lodash/fp/filter.js +0 -5
- package/node_modules/lodash/fp/find.js +0 -5
- package/node_modules/lodash/fp/findFrom.js +0 -5
- package/node_modules/lodash/fp/findIndex.js +0 -5
- package/node_modules/lodash/fp/findIndexFrom.js +0 -5
- package/node_modules/lodash/fp/findKey.js +0 -5
- package/node_modules/lodash/fp/findLast.js +0 -5
- package/node_modules/lodash/fp/findLastFrom.js +0 -5
- package/node_modules/lodash/fp/findLastIndex.js +0 -5
- package/node_modules/lodash/fp/findLastIndexFrom.js +0 -5
- package/node_modules/lodash/fp/findLastKey.js +0 -5
- package/node_modules/lodash/fp/first.js +0 -1
- package/node_modules/lodash/fp/flatMap.js +0 -5
- package/node_modules/lodash/fp/flatMapDeep.js +0 -5
- package/node_modules/lodash/fp/flatMapDepth.js +0 -5
- package/node_modules/lodash/fp/flatten.js +0 -5
- package/node_modules/lodash/fp/flattenDeep.js +0 -5
- package/node_modules/lodash/fp/flattenDepth.js +0 -5
- package/node_modules/lodash/fp/flip.js +0 -5
- package/node_modules/lodash/fp/floor.js +0 -5
- package/node_modules/lodash/fp/flow.js +0 -5
- package/node_modules/lodash/fp/flowRight.js +0 -5
- package/node_modules/lodash/fp/forEach.js +0 -5
- package/node_modules/lodash/fp/forEachRight.js +0 -5
- package/node_modules/lodash/fp/forIn.js +0 -5
- package/node_modules/lodash/fp/forInRight.js +0 -5
- package/node_modules/lodash/fp/forOwn.js +0 -5
- package/node_modules/lodash/fp/forOwnRight.js +0 -5
- package/node_modules/lodash/fp/fromPairs.js +0 -5
- package/node_modules/lodash/fp/function.js +0 -2
- package/node_modules/lodash/fp/functions.js +0 -5
- package/node_modules/lodash/fp/functionsIn.js +0 -5
- package/node_modules/lodash/fp/get.js +0 -5
- package/node_modules/lodash/fp/getOr.js +0 -5
- package/node_modules/lodash/fp/groupBy.js +0 -5
- package/node_modules/lodash/fp/gt.js +0 -5
- package/node_modules/lodash/fp/gte.js +0 -5
- package/node_modules/lodash/fp/has.js +0 -5
- package/node_modules/lodash/fp/hasIn.js +0 -5
- package/node_modules/lodash/fp/head.js +0 -5
- package/node_modules/lodash/fp/identical.js +0 -1
- package/node_modules/lodash/fp/identity.js +0 -5
- package/node_modules/lodash/fp/inRange.js +0 -5
- package/node_modules/lodash/fp/includes.js +0 -5
- package/node_modules/lodash/fp/includesFrom.js +0 -5
- package/node_modules/lodash/fp/indexBy.js +0 -1
- package/node_modules/lodash/fp/indexOf.js +0 -5
- package/node_modules/lodash/fp/indexOfFrom.js +0 -5
- package/node_modules/lodash/fp/init.js +0 -1
- package/node_modules/lodash/fp/initial.js +0 -5
- package/node_modules/lodash/fp/intersection.js +0 -5
- package/node_modules/lodash/fp/intersectionBy.js +0 -5
- package/node_modules/lodash/fp/intersectionWith.js +0 -5
- package/node_modules/lodash/fp/invert.js +0 -5
- package/node_modules/lodash/fp/invertBy.js +0 -5
- package/node_modules/lodash/fp/invertObj.js +0 -1
- package/node_modules/lodash/fp/invoke.js +0 -5
- package/node_modules/lodash/fp/invokeArgs.js +0 -5
- package/node_modules/lodash/fp/invokeArgsMap.js +0 -5
- package/node_modules/lodash/fp/invokeMap.js +0 -5
- package/node_modules/lodash/fp/isArguments.js +0 -5
- package/node_modules/lodash/fp/isArray.js +0 -5
- package/node_modules/lodash/fp/isArrayBuffer.js +0 -5
- package/node_modules/lodash/fp/isArrayLike.js +0 -5
- package/node_modules/lodash/fp/isArrayLikeObject.js +0 -5
- package/node_modules/lodash/fp/isBoolean.js +0 -5
- package/node_modules/lodash/fp/isBuffer.js +0 -5
- package/node_modules/lodash/fp/isDate.js +0 -5
- package/node_modules/lodash/fp/isElement.js +0 -5
- package/node_modules/lodash/fp/isEmpty.js +0 -5
- package/node_modules/lodash/fp/isEqual.js +0 -5
- package/node_modules/lodash/fp/isEqualWith.js +0 -5
- package/node_modules/lodash/fp/isError.js +0 -5
- package/node_modules/lodash/fp/isFinite.js +0 -5
- package/node_modules/lodash/fp/isFunction.js +0 -5
- package/node_modules/lodash/fp/isInteger.js +0 -5
- package/node_modules/lodash/fp/isLength.js +0 -5
- package/node_modules/lodash/fp/isMap.js +0 -5
- package/node_modules/lodash/fp/isMatch.js +0 -5
- package/node_modules/lodash/fp/isMatchWith.js +0 -5
- package/node_modules/lodash/fp/isNaN.js +0 -5
- package/node_modules/lodash/fp/isNative.js +0 -5
- package/node_modules/lodash/fp/isNil.js +0 -5
- package/node_modules/lodash/fp/isNull.js +0 -5
- package/node_modules/lodash/fp/isNumber.js +0 -5
- package/node_modules/lodash/fp/isObject.js +0 -5
- package/node_modules/lodash/fp/isObjectLike.js +0 -5
- package/node_modules/lodash/fp/isPlainObject.js +0 -5
- package/node_modules/lodash/fp/isRegExp.js +0 -5
- package/node_modules/lodash/fp/isSafeInteger.js +0 -5
- package/node_modules/lodash/fp/isSet.js +0 -5
- package/node_modules/lodash/fp/isString.js +0 -5
- package/node_modules/lodash/fp/isSymbol.js +0 -5
- package/node_modules/lodash/fp/isTypedArray.js +0 -5
- package/node_modules/lodash/fp/isUndefined.js +0 -5
- package/node_modules/lodash/fp/isWeakMap.js +0 -5
- package/node_modules/lodash/fp/isWeakSet.js +0 -5
- package/node_modules/lodash/fp/iteratee.js +0 -5
- package/node_modules/lodash/fp/join.js +0 -5
- package/node_modules/lodash/fp/juxt.js +0 -1
- package/node_modules/lodash/fp/kebabCase.js +0 -5
- package/node_modules/lodash/fp/keyBy.js +0 -5
- package/node_modules/lodash/fp/keys.js +0 -5
- package/node_modules/lodash/fp/keysIn.js +0 -5
- package/node_modules/lodash/fp/lang.js +0 -2
- package/node_modules/lodash/fp/last.js +0 -5
- package/node_modules/lodash/fp/lastIndexOf.js +0 -5
- package/node_modules/lodash/fp/lastIndexOfFrom.js +0 -5
- package/node_modules/lodash/fp/lowerCase.js +0 -5
- package/node_modules/lodash/fp/lowerFirst.js +0 -5
- package/node_modules/lodash/fp/lt.js +0 -5
- package/node_modules/lodash/fp/lte.js +0 -5
- package/node_modules/lodash/fp/map.js +0 -5
- package/node_modules/lodash/fp/mapKeys.js +0 -5
- package/node_modules/lodash/fp/mapValues.js +0 -5
- package/node_modules/lodash/fp/matches.js +0 -1
- package/node_modules/lodash/fp/matchesProperty.js +0 -5
- package/node_modules/lodash/fp/math.js +0 -2
- package/node_modules/lodash/fp/max.js +0 -5
- package/node_modules/lodash/fp/maxBy.js +0 -5
- package/node_modules/lodash/fp/mean.js +0 -5
- package/node_modules/lodash/fp/meanBy.js +0 -5
- package/node_modules/lodash/fp/memoize.js +0 -5
- package/node_modules/lodash/fp/merge.js +0 -5
- package/node_modules/lodash/fp/mergeAll.js +0 -5
- package/node_modules/lodash/fp/mergeAllWith.js +0 -5
- package/node_modules/lodash/fp/mergeWith.js +0 -5
- package/node_modules/lodash/fp/method.js +0 -5
- package/node_modules/lodash/fp/methodOf.js +0 -5
- package/node_modules/lodash/fp/min.js +0 -5
- package/node_modules/lodash/fp/minBy.js +0 -5
- package/node_modules/lodash/fp/mixin.js +0 -5
- package/node_modules/lodash/fp/multiply.js +0 -5
- package/node_modules/lodash/fp/nAry.js +0 -1
- package/node_modules/lodash/fp/negate.js +0 -5
- package/node_modules/lodash/fp/next.js +0 -5
- package/node_modules/lodash/fp/noop.js +0 -5
- package/node_modules/lodash/fp/now.js +0 -5
- package/node_modules/lodash/fp/nth.js +0 -5
- package/node_modules/lodash/fp/nthArg.js +0 -5
- package/node_modules/lodash/fp/number.js +0 -2
- package/node_modules/lodash/fp/object.js +0 -2
- package/node_modules/lodash/fp/omit.js +0 -5
- package/node_modules/lodash/fp/omitAll.js +0 -1
- package/node_modules/lodash/fp/omitBy.js +0 -5
- package/node_modules/lodash/fp/once.js +0 -5
- package/node_modules/lodash/fp/orderBy.js +0 -5
- package/node_modules/lodash/fp/over.js +0 -5
- package/node_modules/lodash/fp/overArgs.js +0 -5
- package/node_modules/lodash/fp/overEvery.js +0 -5
- package/node_modules/lodash/fp/overSome.js +0 -5
- package/node_modules/lodash/fp/pad.js +0 -5
- package/node_modules/lodash/fp/padChars.js +0 -5
- package/node_modules/lodash/fp/padCharsEnd.js +0 -5
- package/node_modules/lodash/fp/padCharsStart.js +0 -5
- package/node_modules/lodash/fp/padEnd.js +0 -5
- package/node_modules/lodash/fp/padStart.js +0 -5
- package/node_modules/lodash/fp/parseInt.js +0 -5
- package/node_modules/lodash/fp/partial.js +0 -5
- package/node_modules/lodash/fp/partialRight.js +0 -5
- package/node_modules/lodash/fp/partition.js +0 -5
- package/node_modules/lodash/fp/path.js +0 -1
- package/node_modules/lodash/fp/pathEq.js +0 -1
- package/node_modules/lodash/fp/pathOr.js +0 -1
- package/node_modules/lodash/fp/paths.js +0 -1
- package/node_modules/lodash/fp/pick.js +0 -5
- package/node_modules/lodash/fp/pickAll.js +0 -1
- package/node_modules/lodash/fp/pickBy.js +0 -5
- package/node_modules/lodash/fp/pipe.js +0 -1
- package/node_modules/lodash/fp/placeholder.js +0 -6
- package/node_modules/lodash/fp/plant.js +0 -5
- package/node_modules/lodash/fp/pluck.js +0 -1
- package/node_modules/lodash/fp/prop.js +0 -1
- package/node_modules/lodash/fp/propEq.js +0 -1
- package/node_modules/lodash/fp/propOr.js +0 -1
- package/node_modules/lodash/fp/property.js +0 -1
- package/node_modules/lodash/fp/propertyOf.js +0 -5
- package/node_modules/lodash/fp/props.js +0 -1
- package/node_modules/lodash/fp/pull.js +0 -5
- package/node_modules/lodash/fp/pullAll.js +0 -5
- package/node_modules/lodash/fp/pullAllBy.js +0 -5
- package/node_modules/lodash/fp/pullAllWith.js +0 -5
- package/node_modules/lodash/fp/pullAt.js +0 -5
- package/node_modules/lodash/fp/random.js +0 -5
- package/node_modules/lodash/fp/range.js +0 -5
- package/node_modules/lodash/fp/rangeRight.js +0 -5
- package/node_modules/lodash/fp/rangeStep.js +0 -5
- package/node_modules/lodash/fp/rangeStepRight.js +0 -5
- package/node_modules/lodash/fp/rearg.js +0 -5
- package/node_modules/lodash/fp/reduce.js +0 -5
- package/node_modules/lodash/fp/reduceRight.js +0 -5
- package/node_modules/lodash/fp/reject.js +0 -5
- package/node_modules/lodash/fp/remove.js +0 -5
- package/node_modules/lodash/fp/repeat.js +0 -5
- package/node_modules/lodash/fp/replace.js +0 -5
- package/node_modules/lodash/fp/rest.js +0 -5
- package/node_modules/lodash/fp/restFrom.js +0 -5
- package/node_modules/lodash/fp/result.js +0 -5
- package/node_modules/lodash/fp/reverse.js +0 -5
- package/node_modules/lodash/fp/round.js +0 -5
- package/node_modules/lodash/fp/sample.js +0 -5
- package/node_modules/lodash/fp/sampleSize.js +0 -5
- package/node_modules/lodash/fp/seq.js +0 -2
- package/node_modules/lodash/fp/set.js +0 -5
- package/node_modules/lodash/fp/setWith.js +0 -5
- package/node_modules/lodash/fp/shuffle.js +0 -5
- package/node_modules/lodash/fp/size.js +0 -5
- package/node_modules/lodash/fp/slice.js +0 -5
- package/node_modules/lodash/fp/snakeCase.js +0 -5
- package/node_modules/lodash/fp/some.js +0 -5
- package/node_modules/lodash/fp/sortBy.js +0 -5
- package/node_modules/lodash/fp/sortedIndex.js +0 -5
- package/node_modules/lodash/fp/sortedIndexBy.js +0 -5
- package/node_modules/lodash/fp/sortedIndexOf.js +0 -5
- package/node_modules/lodash/fp/sortedLastIndex.js +0 -5
- package/node_modules/lodash/fp/sortedLastIndexBy.js +0 -5
- package/node_modules/lodash/fp/sortedLastIndexOf.js +0 -5
- package/node_modules/lodash/fp/sortedUniq.js +0 -5
- package/node_modules/lodash/fp/sortedUniqBy.js +0 -5
- package/node_modules/lodash/fp/split.js +0 -5
- package/node_modules/lodash/fp/spread.js +0 -5
- package/node_modules/lodash/fp/spreadFrom.js +0 -5
- package/node_modules/lodash/fp/startCase.js +0 -5
- package/node_modules/lodash/fp/startsWith.js +0 -5
- package/node_modules/lodash/fp/string.js +0 -2
- package/node_modules/lodash/fp/stubArray.js +0 -5
- package/node_modules/lodash/fp/stubFalse.js +0 -5
- package/node_modules/lodash/fp/stubObject.js +0 -5
- package/node_modules/lodash/fp/stubString.js +0 -5
- package/node_modules/lodash/fp/stubTrue.js +0 -5
- package/node_modules/lodash/fp/subtract.js +0 -5
- package/node_modules/lodash/fp/sum.js +0 -5
- package/node_modules/lodash/fp/sumBy.js +0 -5
- package/node_modules/lodash/fp/symmetricDifference.js +0 -1
- package/node_modules/lodash/fp/symmetricDifferenceBy.js +0 -1
- package/node_modules/lodash/fp/symmetricDifferenceWith.js +0 -1
- package/node_modules/lodash/fp/tail.js +0 -5
- package/node_modules/lodash/fp/take.js +0 -5
- package/node_modules/lodash/fp/takeLast.js +0 -1
- package/node_modules/lodash/fp/takeLastWhile.js +0 -1
- package/node_modules/lodash/fp/takeRight.js +0 -5
- package/node_modules/lodash/fp/takeRightWhile.js +0 -5
- package/node_modules/lodash/fp/takeWhile.js +0 -5
- package/node_modules/lodash/fp/tap.js +0 -5
- package/node_modules/lodash/fp/template.js +0 -5
- package/node_modules/lodash/fp/templateSettings.js +0 -5
- package/node_modules/lodash/fp/throttle.js +0 -5
- package/node_modules/lodash/fp/thru.js +0 -5
- package/node_modules/lodash/fp/times.js +0 -5
- package/node_modules/lodash/fp/toArray.js +0 -5
- package/node_modules/lodash/fp/toFinite.js +0 -5
- package/node_modules/lodash/fp/toInteger.js +0 -5
- package/node_modules/lodash/fp/toIterator.js +0 -5
- package/node_modules/lodash/fp/toJSON.js +0 -5
- package/node_modules/lodash/fp/toLength.js +0 -5
- package/node_modules/lodash/fp/toLower.js +0 -5
- package/node_modules/lodash/fp/toNumber.js +0 -5
- package/node_modules/lodash/fp/toPairs.js +0 -5
- package/node_modules/lodash/fp/toPairsIn.js +0 -5
- package/node_modules/lodash/fp/toPath.js +0 -5
- package/node_modules/lodash/fp/toPlainObject.js +0 -5
- package/node_modules/lodash/fp/toSafeInteger.js +0 -5
- package/node_modules/lodash/fp/toString.js +0 -5
- package/node_modules/lodash/fp/toUpper.js +0 -5
- package/node_modules/lodash/fp/transform.js +0 -5
- package/node_modules/lodash/fp/trim.js +0 -5
- package/node_modules/lodash/fp/trimChars.js +0 -5
- package/node_modules/lodash/fp/trimCharsEnd.js +0 -5
- package/node_modules/lodash/fp/trimCharsStart.js +0 -5
- package/node_modules/lodash/fp/trimEnd.js +0 -5
- package/node_modules/lodash/fp/trimStart.js +0 -5
- package/node_modules/lodash/fp/truncate.js +0 -5
- package/node_modules/lodash/fp/unapply.js +0 -1
- package/node_modules/lodash/fp/unary.js +0 -5
- package/node_modules/lodash/fp/unescape.js +0 -5
- package/node_modules/lodash/fp/union.js +0 -5
- package/node_modules/lodash/fp/unionBy.js +0 -5
- package/node_modules/lodash/fp/unionWith.js +0 -5
- package/node_modules/lodash/fp/uniq.js +0 -5
- package/node_modules/lodash/fp/uniqBy.js +0 -5
- package/node_modules/lodash/fp/uniqWith.js +0 -5
- package/node_modules/lodash/fp/uniqueId.js +0 -5
- package/node_modules/lodash/fp/unnest.js +0 -1
- package/node_modules/lodash/fp/unset.js +0 -5
- package/node_modules/lodash/fp/unzip.js +0 -5
- package/node_modules/lodash/fp/unzipWith.js +0 -5
- package/node_modules/lodash/fp/update.js +0 -5
- package/node_modules/lodash/fp/updateWith.js +0 -5
- package/node_modules/lodash/fp/upperCase.js +0 -5
- package/node_modules/lodash/fp/upperFirst.js +0 -5
- package/node_modules/lodash/fp/useWith.js +0 -1
- package/node_modules/lodash/fp/util.js +0 -2
- package/node_modules/lodash/fp/value.js +0 -5
- package/node_modules/lodash/fp/valueOf.js +0 -5
- package/node_modules/lodash/fp/values.js +0 -5
- package/node_modules/lodash/fp/valuesIn.js +0 -5
- package/node_modules/lodash/fp/where.js +0 -1
- package/node_modules/lodash/fp/whereEq.js +0 -1
- package/node_modules/lodash/fp/without.js +0 -5
- package/node_modules/lodash/fp/words.js +0 -5
- package/node_modules/lodash/fp/wrap.js +0 -5
- package/node_modules/lodash/fp/wrapperAt.js +0 -5
- package/node_modules/lodash/fp/wrapperChain.js +0 -5
- package/node_modules/lodash/fp/wrapperLodash.js +0 -5
- package/node_modules/lodash/fp/wrapperReverse.js +0 -5
- package/node_modules/lodash/fp/wrapperValue.js +0 -5
- package/node_modules/lodash/fp/xor.js +0 -5
- package/node_modules/lodash/fp/xorBy.js +0 -5
- package/node_modules/lodash/fp/xorWith.js +0 -5
- package/node_modules/lodash/fp/zip.js +0 -5
- package/node_modules/lodash/fp/zipAll.js +0 -5
- package/node_modules/lodash/fp/zipObj.js +0 -1
- package/node_modules/lodash/fp/zipObject.js +0 -5
- package/node_modules/lodash/fp/zipObjectDeep.js +0 -5
- package/node_modules/lodash/fp/zipWith.js +0 -5
- package/node_modules/lodash/fp.js +0 -2
- package/node_modules/lodash/fromPairs.js +0 -28
- package/node_modules/lodash/function.js +0 -25
- package/node_modules/lodash/functions.js +0 -31
- package/node_modules/lodash/functionsIn.js +0 -31
- package/node_modules/lodash/get.js +0 -33
- package/node_modules/lodash/groupBy.js +0 -41
- package/node_modules/lodash/gt.js +0 -29
- package/node_modules/lodash/gte.js +0 -30
- package/node_modules/lodash/has.js +0 -35
- package/node_modules/lodash/hasIn.js +0 -34
- package/node_modules/lodash/head.js +0 -23
- package/node_modules/lodash/identity.js +0 -21
- package/node_modules/lodash/inRange.js +0 -55
- package/node_modules/lodash/includes.js +0 -53
- package/node_modules/lodash/index.js +0 -1
- package/node_modules/lodash/indexOf.js +0 -42
- package/node_modules/lodash/initial.js +0 -22
- package/node_modules/lodash/intersection.js +0 -30
- package/node_modules/lodash/intersectionBy.js +0 -45
- package/node_modules/lodash/intersectionWith.js +0 -41
- package/node_modules/lodash/invert.js +0 -42
- package/node_modules/lodash/invertBy.js +0 -56
- package/node_modules/lodash/invoke.js +0 -24
- package/node_modules/lodash/invokeMap.js +0 -41
- package/node_modules/lodash/isArguments.js +0 -36
- package/node_modules/lodash/isArray.js +0 -26
- package/node_modules/lodash/isArrayBuffer.js +0 -27
- package/node_modules/lodash/isArrayLike.js +0 -33
- package/node_modules/lodash/isArrayLikeObject.js +0 -33
- package/node_modules/lodash/isBoolean.js +0 -29
- package/node_modules/lodash/isBuffer.js +0 -38
- package/node_modules/lodash/isDate.js +0 -27
- package/node_modules/lodash/isElement.js +0 -25
- package/node_modules/lodash/isEmpty.js +0 -77
- package/node_modules/lodash/isEqual.js +0 -35
- package/node_modules/lodash/isEqualWith.js +0 -41
- package/node_modules/lodash/isError.js +0 -36
- package/node_modules/lodash/isFinite.js +0 -36
- package/node_modules/lodash/isFunction.js +0 -37
- package/node_modules/lodash/isInteger.js +0 -33
- package/node_modules/lodash/isLength.js +0 -35
- package/node_modules/lodash/isMap.js +0 -27
- package/node_modules/lodash/isMatch.js +0 -36
- package/node_modules/lodash/isMatchWith.js +0 -41
- package/node_modules/lodash/isNaN.js +0 -38
- package/node_modules/lodash/isNative.js +0 -40
- package/node_modules/lodash/isNil.js +0 -25
- package/node_modules/lodash/isNull.js +0 -22
- package/node_modules/lodash/isNumber.js +0 -38
- package/node_modules/lodash/isObject.js +0 -31
- package/node_modules/lodash/isObjectLike.js +0 -29
- package/node_modules/lodash/isPlainObject.js +0 -62
- package/node_modules/lodash/isRegExp.js +0 -27
- package/node_modules/lodash/isSafeInteger.js +0 -37
- package/node_modules/lodash/isSet.js +0 -27
- package/node_modules/lodash/isString.js +0 -30
- package/node_modules/lodash/isSymbol.js +0 -29
- package/node_modules/lodash/isTypedArray.js +0 -27
- package/node_modules/lodash/isUndefined.js +0 -22
- package/node_modules/lodash/isWeakMap.js +0 -28
- package/node_modules/lodash/isWeakSet.js +0 -28
- package/node_modules/lodash/iteratee.js +0 -53
- package/node_modules/lodash/join.js +0 -26
- package/node_modules/lodash/kebabCase.js +0 -28
- package/node_modules/lodash/keyBy.js +0 -36
- package/node_modules/lodash/keys.js +0 -37
- package/node_modules/lodash/keysIn.js +0 -32
- package/node_modules/lodash/lang.js +0 -58
- package/node_modules/lodash/last.js +0 -20
- package/node_modules/lodash/lastIndexOf.js +0 -46
- package/node_modules/lodash/lodash.js +0 -17107
- package/node_modules/lodash/lodash.min.js +0 -137
- package/node_modules/lodash/lowerCase.js +0 -27
- package/node_modules/lodash/lowerFirst.js +0 -22
- package/node_modules/lodash/lt.js +0 -29
- package/node_modules/lodash/lte.js +0 -30
- package/node_modules/lodash/map.js +0 -53
- package/node_modules/lodash/mapKeys.js +0 -36
- package/node_modules/lodash/mapValues.js +0 -43
- package/node_modules/lodash/matches.js +0 -39
- package/node_modules/lodash/matchesProperty.js +0 -37
- package/node_modules/lodash/math.js +0 -17
- package/node_modules/lodash/max.js +0 -29
- package/node_modules/lodash/maxBy.js +0 -34
- package/node_modules/lodash/mean.js +0 -22
- package/node_modules/lodash/meanBy.js +0 -31
- package/node_modules/lodash/memoize.js +0 -73
- package/node_modules/lodash/merge.js +0 -39
- package/node_modules/lodash/mergeWith.js +0 -39
- package/node_modules/lodash/method.js +0 -34
- package/node_modules/lodash/methodOf.js +0 -33
- package/node_modules/lodash/min.js +0 -29
- package/node_modules/lodash/minBy.js +0 -34
- package/node_modules/lodash/mixin.js +0 -74
- package/node_modules/lodash/multiply.js +0 -22
- package/node_modules/lodash/negate.js +0 -40
- package/node_modules/lodash/next.js +0 -35
- package/node_modules/lodash/noop.js +0 -17
- package/node_modules/lodash/now.js +0 -23
- package/node_modules/lodash/nth.js +0 -29
- package/node_modules/lodash/nthArg.js +0 -32
- package/node_modules/lodash/number.js +0 -5
- package/node_modules/lodash/object.js +0 -49
- package/node_modules/lodash/omit.js +0 -57
- package/node_modules/lodash/omitBy.js +0 -29
- package/node_modules/lodash/once.js +0 -25
- package/node_modules/lodash/orderBy.js +0 -47
- package/node_modules/lodash/over.js +0 -24
- package/node_modules/lodash/overArgs.js +0 -61
- package/node_modules/lodash/overEvery.js +0 -30
- package/node_modules/lodash/overSome.js +0 -30
- package/node_modules/lodash/package.json +0 -80
- package/node_modules/lodash/pad.js +0 -49
- package/node_modules/lodash/padEnd.js +0 -39
- package/node_modules/lodash/padStart.js +0 -39
- package/node_modules/lodash/parseInt.js +0 -43
- package/node_modules/lodash/partial.js +0 -50
- package/node_modules/lodash/partialRight.js +0 -49
- package/node_modules/lodash/partition.js +0 -43
- package/node_modules/lodash/pick.js +0 -25
- package/node_modules/lodash/pickBy.js +0 -37
- package/node_modules/lodash/plant.js +0 -48
- package/node_modules/lodash/property.js +0 -32
- package/node_modules/lodash/propertyOf.js +0 -30
- package/node_modules/lodash/pull.js +0 -29
- package/node_modules/lodash/pullAll.js +0 -29
- package/node_modules/lodash/pullAllBy.js +0 -33
- package/node_modules/lodash/pullAllWith.js +0 -32
- package/node_modules/lodash/pullAt.js +0 -43
- package/node_modules/lodash/random.js +0 -82
- package/node_modules/lodash/range.js +0 -46
- package/node_modules/lodash/rangeRight.js +0 -41
- package/node_modules/lodash/rearg.js +0 -33
- package/node_modules/lodash/reduce.js +0 -51
- package/node_modules/lodash/reduceRight.js +0 -36
- package/node_modules/lodash/reject.js +0 -46
- package/node_modules/lodash/remove.js +0 -53
- package/node_modules/lodash/repeat.js +0 -37
- package/node_modules/lodash/replace.js +0 -29
- package/node_modules/lodash/rest.js +0 -40
- package/node_modules/lodash/result.js +0 -56
- package/node_modules/lodash/reverse.js +0 -34
- package/node_modules/lodash/round.js +0 -26
- package/node_modules/lodash/sample.js +0 -24
- package/node_modules/lodash/sampleSize.js +0 -37
- package/node_modules/lodash/seq.js +0 -16
- package/node_modules/lodash/set.js +0 -35
- package/node_modules/lodash/setWith.js +0 -32
- package/node_modules/lodash/shuffle.js +0 -25
- package/node_modules/lodash/size.js +0 -46
- package/node_modules/lodash/slice.js +0 -37
- package/node_modules/lodash/snakeCase.js +0 -28
- package/node_modules/lodash/some.js +0 -51
- package/node_modules/lodash/sortBy.js +0 -48
- package/node_modules/lodash/sortedIndex.js +0 -24
- package/node_modules/lodash/sortedIndexBy.js +0 -33
- package/node_modules/lodash/sortedIndexOf.js +0 -31
- package/node_modules/lodash/sortedLastIndex.js +0 -25
- package/node_modules/lodash/sortedLastIndexBy.js +0 -33
- package/node_modules/lodash/sortedLastIndexOf.js +0 -31
- package/node_modules/lodash/sortedUniq.js +0 -24
- package/node_modules/lodash/sortedUniqBy.js +0 -26
- package/node_modules/lodash/split.js +0 -52
- package/node_modules/lodash/spread.js +0 -63
- package/node_modules/lodash/startCase.js +0 -29
- package/node_modules/lodash/startsWith.js +0 -39
- package/node_modules/lodash/string.js +0 -33
- package/node_modules/lodash/stubArray.js +0 -23
- package/node_modules/lodash/stubFalse.js +0 -18
- package/node_modules/lodash/stubObject.js +0 -23
- package/node_modules/lodash/stubString.js +0 -18
- package/node_modules/lodash/stubTrue.js +0 -18
- package/node_modules/lodash/subtract.js +0 -22
- package/node_modules/lodash/sum.js +0 -24
- package/node_modules/lodash/sumBy.js +0 -33
- package/node_modules/lodash/tail.js +0 -22
- package/node_modules/lodash/take.js +0 -37
- package/node_modules/lodash/takeRight.js +0 -39
- package/node_modules/lodash/takeRightWhile.js +0 -45
- package/node_modules/lodash/takeWhile.js +0 -45
- package/node_modules/lodash/tap.js +0 -29
- package/node_modules/lodash/template.js +0 -238
- package/node_modules/lodash/templateSettings.js +0 -67
- package/node_modules/lodash/throttle.js +0 -69
- package/node_modules/lodash/thru.js +0 -28
- package/node_modules/lodash/times.js +0 -51
- package/node_modules/lodash/toArray.js +0 -58
- package/node_modules/lodash/toFinite.js +0 -42
- package/node_modules/lodash/toInteger.js +0 -36
- package/node_modules/lodash/toIterator.js +0 -23
- package/node_modules/lodash/toJSON.js +0 -1
- package/node_modules/lodash/toLength.js +0 -38
- package/node_modules/lodash/toLower.js +0 -28
- package/node_modules/lodash/toNumber.js +0 -66
- package/node_modules/lodash/toPairs.js +0 -30
- package/node_modules/lodash/toPairsIn.js +0 -30
- package/node_modules/lodash/toPath.js +0 -33
- package/node_modules/lodash/toPlainObject.js +0 -32
- package/node_modules/lodash/toSafeInteger.js +0 -37
- package/node_modules/lodash/toString.js +0 -28
- package/node_modules/lodash/toUpper.js +0 -28
- package/node_modules/lodash/transform.js +0 -65
- package/node_modules/lodash/trim.js +0 -49
- package/node_modules/lodash/trimEnd.js +0 -43
- package/node_modules/lodash/trimStart.js +0 -43
- package/node_modules/lodash/truncate.js +0 -111
- package/node_modules/lodash/unary.js +0 -22
- package/node_modules/lodash/unescape.js +0 -34
- package/node_modules/lodash/union.js +0 -26
- package/node_modules/lodash/unionBy.js +0 -39
- package/node_modules/lodash/unionWith.js +0 -34
- package/node_modules/lodash/uniq.js +0 -25
- package/node_modules/lodash/uniqBy.js +0 -31
- package/node_modules/lodash/uniqWith.js +0 -28
- package/node_modules/lodash/uniqueId.js +0 -28
- package/node_modules/lodash/unset.js +0 -34
- package/node_modules/lodash/unzip.js +0 -45
- package/node_modules/lodash/unzipWith.js +0 -39
- package/node_modules/lodash/update.js +0 -35
- package/node_modules/lodash/updateWith.js +0 -33
- package/node_modules/lodash/upperCase.js +0 -27
- package/node_modules/lodash/upperFirst.js +0 -22
- package/node_modules/lodash/util.js +0 -34
- package/node_modules/lodash/value.js +0 -1
- package/node_modules/lodash/valueOf.js +0 -1
- package/node_modules/lodash/values.js +0 -34
- package/node_modules/lodash/valuesIn.js +0 -32
- package/node_modules/lodash/without.js +0 -31
- package/node_modules/lodash/words.js +0 -35
- package/node_modules/lodash/wrap.js +0 -30
- package/node_modules/lodash/wrapperAt.js +0 -48
- package/node_modules/lodash/wrapperChain.js +0 -34
- package/node_modules/lodash/wrapperLodash.js +0 -147
- package/node_modules/lodash/wrapperReverse.js +0 -44
- package/node_modules/lodash/wrapperValue.js +0 -21
- package/node_modules/lodash/xor.js +0 -28
- package/node_modules/lodash/xorBy.js +0 -39
- package/node_modules/lodash/xorWith.js +0 -34
- package/node_modules/lodash/zip.js +0 -22
- package/node_modules/lodash/zipObject.js +0 -24
- package/node_modules/lodash/zipObjectDeep.js +0 -23
- package/node_modules/lodash/zipWith.js +0 -32
- package/node_modules/lodash.flattendeep/LICENSE +0 -47
- package/node_modules/lodash.flattendeep/README.md +0 -18
- package/node_modules/lodash.flattendeep/index.js +0 -350
- package/node_modules/lodash.flattendeep/package.json +0 -72
- package/node_modules/lru-cache/LICENSE +0 -15
- package/node_modules/lru-cache/README.md +0 -158
- package/node_modules/lru-cache/index.js +0 -468
- package/node_modules/lru-cache/package.json +0 -75
- package/node_modules/make-dir/index.js +0 -85
- package/node_modules/make-dir/license +0 -9
- package/node_modules/make-dir/package.json +0 -93
- package/node_modules/make-dir/readme.md +0 -116
- package/node_modules/map-age-cleaner/dist/index.d.ts +0 -20
- package/node_modules/map-age-cleaner/dist/index.js +0 -92
- package/node_modules/map-age-cleaner/license +0 -9
- package/node_modules/map-age-cleaner/package.json +0 -94
- package/node_modules/map-age-cleaner/readme.md +0 -67
- package/node_modules/mem/index.js +0 -82
- package/node_modules/mem/license +0 -9
- package/node_modules/mem/package.json +0 -79
- package/node_modules/mem/readme.md +0 -167
- package/node_modules/merge-source-map/LICENSE +0 -21
- package/node_modules/merge-source-map/README.md +0 -91
- package/node_modules/merge-source-map/index.js +0 -65
- package/node_modules/merge-source-map/node_modules/source-map/CHANGELOG.md +0 -301
- package/node_modules/merge-source-map/node_modules/source-map/LICENSE +0 -28
- package/node_modules/merge-source-map/node_modules/source-map/README.md +0 -742
- package/node_modules/merge-source-map/node_modules/source-map/dist/source-map.debug.js +0 -3234
- package/node_modules/merge-source-map/node_modules/source-map/dist/source-map.js +0 -3233
- package/node_modules/merge-source-map/node_modules/source-map/dist/source-map.min.js +0 -2
- package/node_modules/merge-source-map/node_modules/source-map/dist/source-map.min.js.map +0 -1
- package/node_modules/merge-source-map/node_modules/source-map/lib/array-set.js +0 -121
- package/node_modules/merge-source-map/node_modules/source-map/lib/base64-vlq.js +0 -140
- package/node_modules/merge-source-map/node_modules/source-map/lib/base64.js +0 -67
- package/node_modules/merge-source-map/node_modules/source-map/lib/binary-search.js +0 -111
- package/node_modules/merge-source-map/node_modules/source-map/lib/mapping-list.js +0 -79
- package/node_modules/merge-source-map/node_modules/source-map/lib/quick-sort.js +0 -114
- package/node_modules/merge-source-map/node_modules/source-map/lib/source-map-consumer.js +0 -1145
- package/node_modules/merge-source-map/node_modules/source-map/lib/source-map-generator.js +0 -425
- package/node_modules/merge-source-map/node_modules/source-map/lib/source-node.js +0 -413
- package/node_modules/merge-source-map/node_modules/source-map/lib/util.js +0 -488
- package/node_modules/merge-source-map/node_modules/source-map/package.json +0 -215
- package/node_modules/merge-source-map/node_modules/source-map/source-map.d.ts +0 -98
- package/node_modules/merge-source-map/node_modules/source-map/source-map.js +0 -8
- package/node_modules/merge-source-map/package.json +0 -74
- package/node_modules/mimic-fn/index.js +0 -9
- package/node_modules/mimic-fn/license +0 -9
- package/node_modules/mimic-fn/package.json +0 -77
- package/node_modules/mimic-fn/readme.md +0 -68
- package/node_modules/minimatch/LICENSE +0 -15
- package/node_modules/minimatch/README.md +0 -209
- package/node_modules/minimatch/minimatch.js +0 -923
- package/node_modules/minimatch/package.json +0 -73
- package/node_modules/minimist/.travis.yml +0 -4
- package/node_modules/minimist/LICENSE +0 -18
- package/node_modules/minimist/example/parse.js +0 -2
- package/node_modules/minimist/index.js +0 -187
- package/node_modules/minimist/package.json +0 -74
- package/node_modules/minimist/readme.markdown +0 -73
- package/node_modules/minimist/test/bool.js +0 -119
- package/node_modules/minimist/test/dash.js +0 -24
- package/node_modules/minimist/test/default_bool.js +0 -20
- package/node_modules/minimist/test/dotted.js +0 -22
- package/node_modules/minimist/test/long.js +0 -31
- package/node_modules/minimist/test/num.js +0 -36
- package/node_modules/minimist/test/parse.js +0 -197
- package/node_modules/minimist/test/parse_modified.js +0 -9
- package/node_modules/minimist/test/short.js +0 -67
- package/node_modules/minimist/test/whitespace.js +0 -8
- package/node_modules/mkdirp/.travis.yml +0 -8
- package/node_modules/mkdirp/LICENSE +0 -21
- package/node_modules/mkdirp/bin/cmd.js +0 -33
- package/node_modules/mkdirp/bin/usage.txt +0 -12
- package/node_modules/mkdirp/examples/pow.js +0 -6
- package/node_modules/mkdirp/index.js +0 -98
- package/node_modules/mkdirp/node_modules/minimist/.travis.yml +0 -4
- package/node_modules/mkdirp/node_modules/minimist/LICENSE +0 -18
- package/node_modules/mkdirp/node_modules/minimist/example/parse.js +0 -2
- package/node_modules/mkdirp/node_modules/minimist/index.js +0 -187
- package/node_modules/mkdirp/node_modules/minimist/package.json +0 -74
- package/node_modules/mkdirp/node_modules/minimist/readme.markdown +0 -73
- package/node_modules/mkdirp/node_modules/minimist/test/dash.js +0 -24
- package/node_modules/mkdirp/node_modules/minimist/test/default_bool.js +0 -20
- package/node_modules/mkdirp/node_modules/minimist/test/dotted.js +0 -16
- package/node_modules/mkdirp/node_modules/minimist/test/long.js +0 -31
- package/node_modules/mkdirp/node_modules/minimist/test/parse.js +0 -318
- package/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js +0 -9
- package/node_modules/mkdirp/node_modules/minimist/test/short.js +0 -67
- package/node_modules/mkdirp/node_modules/minimist/test/whitespace.js +0 -8
- package/node_modules/mkdirp/package.json +0 -69
- package/node_modules/mkdirp/readme.markdown +0 -100
- package/node_modules/mkdirp/test/chmod.js +0 -41
- package/node_modules/mkdirp/test/clobber.js +0 -38
- package/node_modules/mkdirp/test/mkdirp.js +0 -28
- package/node_modules/mkdirp/test/opts_fs.js +0 -29
- package/node_modules/mkdirp/test/opts_fs_sync.js +0 -27
- package/node_modules/mkdirp/test/perm.js +0 -32
- package/node_modules/mkdirp/test/perm_sync.js +0 -36
- package/node_modules/mkdirp/test/race.js +0 -37
- package/node_modules/mkdirp/test/rel.js +0 -32
- package/node_modules/mkdirp/test/return.js +0 -25
- package/node_modules/mkdirp/test/return_sync.js +0 -24
- package/node_modules/mkdirp/test/root.js +0 -19
- package/node_modules/mkdirp/test/sync.js +0 -32
- package/node_modules/mkdirp/test/umask.js +0 -28
- package/node_modules/mkdirp/test/umask_sync.js +0 -32
- package/node_modules/ms/index.js +0 -162
- package/node_modules/ms/license.md +0 -21
- package/node_modules/ms/package.json +0 -73
- package/node_modules/ms/readme.md +0 -60
- package/node_modules/nice-try/CHANGELOG.md +0 -21
- package/node_modules/nice-try/LICENSE +0 -21
- package/node_modules/nice-try/README.md +0 -32
- package/node_modules/nice-try/package.json +0 -65
- package/node_modules/nice-try/src/index.js +0 -12
- package/node_modules/normalize-package-data/AUTHORS +0 -4
- package/node_modules/normalize-package-data/LICENSE +0 -30
- package/node_modules/normalize-package-data/README.md +0 -106
- package/node_modules/normalize-package-data/lib/extract_description.js +0 -14
- package/node_modules/normalize-package-data/lib/fixer.js +0 -417
- package/node_modules/normalize-package-data/lib/make_warning.js +0 -23
- package/node_modules/normalize-package-data/lib/normalize.js +0 -39
- package/node_modules/normalize-package-data/lib/safe_format.js +0 -9
- package/node_modules/normalize-package-data/lib/typos.json +0 -25
- package/node_modules/normalize-package-data/lib/warning_messages.json +0 -30
- package/node_modules/normalize-package-data/package.json +0 -90
- package/node_modules/npm-run-path/index.js +0 -39
- package/node_modules/npm-run-path/license +0 -21
- package/node_modules/npm-run-path/package.json +0 -81
- package/node_modules/npm-run-path/readme.md +0 -81
- package/node_modules/number-is-nan/index.js +0 -4
- package/node_modules/number-is-nan/license +0 -21
- package/node_modules/number-is-nan/package.json +0 -73
- package/node_modules/number-is-nan/readme.md +0 -28
- package/node_modules/once/LICENSE +0 -15
- package/node_modules/once/README.md +0 -79
- package/node_modules/once/once.js +0 -42
- package/node_modules/once/package.json +0 -73
- package/node_modules/optimist/.travis.yml +0 -4
- package/node_modules/optimist/LICENSE +0 -21
- package/node_modules/optimist/example/bool.js +0 -10
- package/node_modules/optimist/example/boolean_double.js +0 -7
- package/node_modules/optimist/example/boolean_single.js +0 -7
- package/node_modules/optimist/example/default_hash.js +0 -8
- package/node_modules/optimist/example/default_singles.js +0 -7
- package/node_modules/optimist/example/divide.js +0 -8
- package/node_modules/optimist/example/line_count.js +0 -20
- package/node_modules/optimist/example/line_count_options.js +0 -29
- package/node_modules/optimist/example/line_count_wrap.js +0 -29
- package/node_modules/optimist/example/nonopt.js +0 -4
- package/node_modules/optimist/example/reflect.js +0 -2
- package/node_modules/optimist/example/short.js +0 -3
- package/node_modules/optimist/example/string.js +0 -11
- package/node_modules/optimist/example/usage-options.js +0 -19
- package/node_modules/optimist/example/xup.js +0 -10
- package/node_modules/optimist/index.js +0 -343
- package/node_modules/optimist/package.json +0 -71
- package/node_modules/optimist/readme.markdown +0 -513
- package/node_modules/optimist/test/_/argv.js +0 -2
- package/node_modules/optimist/test/_/bin.js +0 -3
- package/node_modules/optimist/test/_.js +0 -71
- package/node_modules/optimist/test/dash.js +0 -31
- package/node_modules/optimist/test/parse.js +0 -446
- package/node_modules/optimist/test/parse_modified.js +0 -14
- package/node_modules/optimist/test/short.js +0 -16
- package/node_modules/optimist/test/usage.js +0 -292
- package/node_modules/optimist/test/whitespace.js +0 -8
- package/node_modules/os-homedir/index.js +0 -24
- package/node_modules/os-homedir/license +0 -21
- package/node_modules/os-homedir/package.json +0 -77
- package/node_modules/os-homedir/readme.md +0 -31
- package/node_modules/os-locale/index.js +0 -114
- package/node_modules/os-locale/license +0 -9
- package/node_modules/os-locale/package.json +0 -80
- package/node_modules/os-locale/readme.md +0 -71
- package/node_modules/p-defer/index.js +0 -11
- package/node_modules/p-defer/license +0 -21
- package/node_modules/p-defer/package.json +0 -76
- package/node_modules/p-defer/readme.md +0 -47
- package/node_modules/p-finally/index.js +0 -15
- package/node_modules/p-finally/license +0 -21
- package/node_modules/p-finally/package.json +0 -78
- package/node_modules/p-finally/readme.md +0 -47
- package/node_modules/p-is-promise/index.js +0 -10
- package/node_modules/p-is-promise/license +0 -21
- package/node_modules/p-is-promise/package.json +0 -78
- package/node_modules/p-is-promise/readme.md +0 -43
- package/node_modules/p-limit/index.js +0 -49
- package/node_modules/p-limit/license +0 -9
- package/node_modules/p-limit/package.json +0 -84
- package/node_modules/p-limit/readme.md +0 -90
- package/node_modules/p-locate/index.js +0 -34
- package/node_modules/p-locate/license +0 -9
- package/node_modules/p-locate/package.json +0 -86
- package/node_modules/p-locate/readme.md +0 -88
- package/node_modules/p-try/index.js +0 -5
- package/node_modules/p-try/license +0 -9
- package/node_modules/p-try/package.json +0 -75
- package/node_modules/p-try/readme.md +0 -47
- package/node_modules/package-hash/LICENSE +0 -14
- package/node_modules/package-hash/README.md +0 -79
- package/node_modules/package-hash/index.js +0 -174
- package/node_modules/package-hash/package.json +0 -91
- package/node_modules/parse-json/index.js +0 -33
- package/node_modules/parse-json/license +0 -9
- package/node_modules/parse-json/package.json +0 -78
- package/node_modules/parse-json/readme.md +0 -83
- package/node_modules/path-exists/index.js +0 -17
- package/node_modules/path-exists/license +0 -21
- package/node_modules/path-exists/package.json +0 -81
- package/node_modules/path-exists/readme.md +0 -50
- package/node_modules/path-is-absolute/index.js +0 -20
- package/node_modules/path-is-absolute/license +0 -21
- package/node_modules/path-is-absolute/package.json +0 -79
- package/node_modules/path-is-absolute/readme.md +0 -59
- package/node_modules/path-key/index.js +0 -13
- package/node_modules/path-key/license +0 -21
- package/node_modules/path-key/package.json +0 -76
- package/node_modules/path-key/readme.md +0 -51
- package/node_modules/path-type/index.js +0 -42
- package/node_modules/path-type/license +0 -9
- package/node_modules/path-type/package.json +0 -80
- package/node_modules/path-type/readme.md +0 -42
- package/node_modules/pify/index.js +0 -84
- package/node_modules/pify/license +0 -9
- package/node_modules/pify/package.json +0 -88
- package/node_modules/pify/readme.md +0 -131
- package/node_modules/pkg-dir/index.js +0 -10
- package/node_modules/pkg-dir/license +0 -9
- package/node_modules/pkg-dir/package.json +0 -88
- package/node_modules/pkg-dir/readme.md +0 -66
- package/node_modules/pseudomap/LICENSE +0 -15
- package/node_modules/pseudomap/README.md +0 -60
- package/node_modules/pseudomap/map.js +0 -9
- package/node_modules/pseudomap/package.json +0 -57
- package/node_modules/pseudomap/pseudomap.js +0 -113
- package/node_modules/pseudomap/test/basic.js +0 -86
- package/node_modules/pump/.travis.yml +0 -5
- package/node_modules/pump/LICENSE +0 -21
- package/node_modules/pump/README.md +0 -65
- package/node_modules/pump/index.js +0 -82
- package/node_modules/pump/package.json +0 -62
- package/node_modules/pump/test-browser.js +0 -66
- package/node_modules/pump/test-node.js +0 -53
- package/node_modules/read-pkg/index.js +0 -47
- package/node_modules/read-pkg/license +0 -9
- package/node_modules/read-pkg/package.json +0 -78
- package/node_modules/read-pkg/readme.md +0 -79
- package/node_modules/read-pkg-up/index.js +0 -26
- package/node_modules/read-pkg-up/license +0 -9
- package/node_modules/read-pkg-up/package.json +0 -92
- package/node_modules/read-pkg-up/readme.md +0 -82
- package/node_modules/release-zalgo/LICENSE +0 -14
- package/node_modules/release-zalgo/README.md +0 -194
- package/node_modules/release-zalgo/index.js +0 -9
- package/node_modules/release-zalgo/lib/Async.js +0 -21
- package/node_modules/release-zalgo/lib/Sync.js +0 -24
- package/node_modules/release-zalgo/lib/Thenable.js +0 -39
- package/node_modules/release-zalgo/lib/constants.js +0 -6
- package/node_modules/release-zalgo/lib/unwrapSync.js +0 -54
- package/node_modules/release-zalgo/package.json +0 -80
- package/node_modules/require-directory/.jshintrc +0 -67
- package/node_modules/require-directory/.npmignore +0 -1
- package/node_modules/require-directory/.travis.yml +0 -3
- package/node_modules/require-directory/LICENSE +0 -22
- package/node_modules/require-directory/README.markdown +0 -184
- package/node_modules/require-directory/index.js +0 -86
- package/node_modules/require-directory/package.json +0 -73
- package/node_modules/require-main-filename/.npmignore +0 -3
- package/node_modules/require-main-filename/.travis.yml +0 -8
- package/node_modules/require-main-filename/LICENSE.txt +0 -14
- package/node_modules/require-main-filename/README.md +0 -26
- package/node_modules/require-main-filename/index.js +0 -18
- package/node_modules/require-main-filename/package.json +0 -63
- package/node_modules/require-main-filename/test.js +0 -36
- package/node_modules/resolve-from/index.js +0 -47
- package/node_modules/resolve-from/license +0 -9
- package/node_modules/resolve-from/package.json +0 -69
- package/node_modules/resolve-from/readme.md +0 -72
- package/node_modules/rimraf/LICENSE +0 -15
- package/node_modules/rimraf/README.md +0 -101
- package/node_modules/rimraf/bin.js +0 -50
- package/node_modules/rimraf/package.json +0 -74
- package/node_modules/rimraf/rimraf.js +0 -364
- package/node_modules/safe-buffer/LICENSE +0 -21
- package/node_modules/safe-buffer/README.md +0 -584
- package/node_modules/safe-buffer/index.d.ts +0 -187
- package/node_modules/safe-buffer/index.js +0 -62
- package/node_modules/safe-buffer/package.json +0 -70
- package/node_modules/semver/LICENSE +0 -15
- package/node_modules/semver/README.md +0 -399
- package/node_modules/semver/bin/semver +0 -153
- package/node_modules/semver/package.json +0 -65
- package/node_modules/semver/range.bnf +0 -16
- package/node_modules/semver/semver.js +0 -1352
- package/node_modules/set-blocking/CHANGELOG.md +0 -26
- package/node_modules/set-blocking/LICENSE.txt +0 -14
- package/node_modules/set-blocking/README.md +0 -31
- package/node_modules/set-blocking/index.js +0 -7
- package/node_modules/set-blocking/package.json +0 -74
- package/node_modules/shebang-command/index.js +0 -19
- package/node_modules/shebang-command/license +0 -21
- package/node_modules/shebang-command/package.json +0 -76
- package/node_modules/shebang-command/readme.md +0 -39
- package/node_modules/shebang-regex/index.js +0 -2
- package/node_modules/shebang-regex/license +0 -21
- package/node_modules/shebang-regex/package.json +0 -67
- package/node_modules/shebang-regex/readme.md +0 -29
- package/node_modules/signal-exit/CHANGELOG.md +0 -27
- package/node_modules/signal-exit/LICENSE.txt +0 -16
- package/node_modules/signal-exit/README.md +0 -40
- package/node_modules/signal-exit/index.js +0 -157
- package/node_modules/signal-exit/package.json +0 -77
- package/node_modules/signal-exit/signals.js +0 -53
- package/node_modules/spawn-wrap/LICENSE +0 -15
- package/node_modules/spawn-wrap/README.md +0 -111
- package/node_modules/spawn-wrap/index.js +0 -447
- package/node_modules/spawn-wrap/lib/is-windows.js +0 -5
- package/node_modules/spawn-wrap/package.json +0 -71
- package/node_modules/spawn-wrap/shim.js +0 -180
- package/node_modules/spdx-correct/LICENSE +0 -202
- package/node_modules/spdx-correct/README.md +0 -14
- package/node_modules/spdx-correct/index.js +0 -343
- package/node_modules/spdx-correct/package.json +0 -91
- package/node_modules/spdx-exceptions/README.md +0 -36
- package/node_modules/spdx-exceptions/index.json +0 -34
- package/node_modules/spdx-exceptions/package.json +0 -52
- package/node_modules/spdx-exceptions/test.log +0 -8
- package/node_modules/spdx-expression-parse/AUTHORS +0 -4
- package/node_modules/spdx-expression-parse/LICENSE +0 -22
- package/node_modules/spdx-expression-parse/README.md +0 -91
- package/node_modules/spdx-expression-parse/index.js +0 -8
- package/node_modules/spdx-expression-parse/package.json +0 -100
- package/node_modules/spdx-expression-parse/parse.js +0 -138
- package/node_modules/spdx-expression-parse/scan.js +0 -131
- package/node_modules/spdx-license-ids/README.md +0 -52
- package/node_modules/spdx-license-ids/deprecated.json +0 -24
- package/node_modules/spdx-license-ids/index.json +0 -356
- package/node_modules/spdx-license-ids/package.json +0 -78
- package/node_modules/string-width/index.js +0 -36
- package/node_modules/string-width/license +0 -9
- package/node_modules/string-width/package.json +0 -94
- package/node_modules/string-width/readme.md +0 -42
- package/node_modules/strip-ansi/index.js +0 -4
- package/node_modules/strip-ansi/license +0 -9
- package/node_modules/strip-ansi/package.json +0 -90
- package/node_modules/strip-ansi/readme.md +0 -39
- package/node_modules/strip-bom/index.js +0 -14
- package/node_modules/strip-bom/license +0 -21
- package/node_modules/strip-bom/package.json +0 -78
- package/node_modules/strip-bom/readme.md +0 -36
- package/node_modules/strip-eof/index.js +0 -15
- package/node_modules/strip-eof/license +0 -21
- package/node_modules/strip-eof/package.json +0 -75
- package/node_modules/strip-eof/readme.md +0 -28
- package/node_modules/test-exclude/CHANGELOG.md +0 -253
- package/node_modules/test-exclude/LICENSE.txt +0 -14
- package/node_modules/test-exclude/README.md +0 -56
- package/node_modules/test-exclude/index.js +0 -149
- package/node_modules/test-exclude/package.json +0 -70
- package/node_modules/uglify-js/LICENSE +0 -29
- package/node_modules/uglify-js/README.md +0 -1135
- package/node_modules/uglify-js/bin/uglifyjs +0 -417
- package/node_modules/uglify-js/lib/ast.js +0 -951
- package/node_modules/uglify-js/lib/compress.js +0 -6497
- package/node_modules/uglify-js/lib/minify.js +0 -246
- package/node_modules/uglify-js/lib/mozilla-ast.js +0 -629
- package/node_modules/uglify-js/lib/output.js +0 -1513
- package/node_modules/uglify-js/lib/parse.js +0 -1648
- package/node_modules/uglify-js/lib/propmangle.js +0 -234
- package/node_modules/uglify-js/lib/scope.js +0 -596
- package/node_modules/uglify-js/lib/sourcemap.js +0 -104
- package/node_modules/uglify-js/lib/transform.js +0 -185
- package/node_modules/uglify-js/lib/utils.js +0 -277
- package/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md +0 -301
- package/node_modules/uglify-js/node_modules/source-map/LICENSE +0 -28
- package/node_modules/uglify-js/node_modules/source-map/README.md +0 -742
- package/node_modules/uglify-js/node_modules/source-map/dist/source-map.debug.js +0 -3234
- package/node_modules/uglify-js/node_modules/source-map/dist/source-map.js +0 -3233
- package/node_modules/uglify-js/node_modules/source-map/dist/source-map.min.js +0 -2
- package/node_modules/uglify-js/node_modules/source-map/dist/source-map.min.js.map +0 -1
- package/node_modules/uglify-js/node_modules/source-map/lib/array-set.js +0 -121
- package/node_modules/uglify-js/node_modules/source-map/lib/base64-vlq.js +0 -140
- package/node_modules/uglify-js/node_modules/source-map/lib/base64.js +0 -67
- package/node_modules/uglify-js/node_modules/source-map/lib/binary-search.js +0 -111
- package/node_modules/uglify-js/node_modules/source-map/lib/mapping-list.js +0 -79
- package/node_modules/uglify-js/node_modules/source-map/lib/quick-sort.js +0 -114
- package/node_modules/uglify-js/node_modules/source-map/lib/source-map-consumer.js +0 -1145
- package/node_modules/uglify-js/node_modules/source-map/lib/source-map-generator.js +0 -425
- package/node_modules/uglify-js/node_modules/source-map/lib/source-node.js +0 -413
- package/node_modules/uglify-js/node_modules/source-map/lib/util.js +0 -488
- package/node_modules/uglify-js/node_modules/source-map/package.json +0 -216
- package/node_modules/uglify-js/node_modules/source-map/source-map.d.ts +0 -98
- package/node_modules/uglify-js/node_modules/source-map/source-map.js +0 -8
- package/node_modules/uglify-js/package.json +0 -107
- package/node_modules/uglify-js/tools/domprops.json +0 -5601
- package/node_modules/uglify-js/tools/exit.js +0 -15
- package/node_modules/uglify-js/tools/exports.js +0 -6
- package/node_modules/uglify-js/tools/node.js +0 -78
- package/node_modules/uglify-js/tools/props.html +0 -61
- package/node_modules/uuid/.eslintrc.json +0 -47
- package/node_modules/uuid/AUTHORS +0 -5
- package/node_modules/uuid/CHANGELOG.md +0 -110
- package/node_modules/uuid/LICENSE.md +0 -21
- package/node_modules/uuid/README.md +0 -293
- package/node_modules/uuid/README_js.md +0 -280
- package/node_modules/uuid/bin/uuid +0 -65
- package/node_modules/uuid/index.js +0 -8
- package/node_modules/uuid/lib/bytesToUuid.js +0 -24
- package/node_modules/uuid/lib/md5-browser.js +0 -216
- package/node_modules/uuid/lib/md5.js +0 -25
- package/node_modules/uuid/lib/rng-browser.js +0 -34
- package/node_modules/uuid/lib/rng.js +0 -8
- package/node_modules/uuid/lib/sha1-browser.js +0 -89
- package/node_modules/uuid/lib/sha1.js +0 -25
- package/node_modules/uuid/lib/v35.js +0 -57
- package/node_modules/uuid/package.json +0 -99
- package/node_modules/uuid/v1.js +0 -109
- package/node_modules/uuid/v3.js +0 -4
- package/node_modules/uuid/v4.js +0 -29
- package/node_modules/uuid/v5.js +0 -3
- package/node_modules/validate-npm-package-license/LICENSE +0 -202
- package/node_modules/validate-npm-package-license/README.md +0 -113
- package/node_modules/validate-npm-package-license/index.js +0 -86
- package/node_modules/validate-npm-package-license/package.json +0 -70
- package/node_modules/which/CHANGELOG.md +0 -152
- package/node_modules/which/LICENSE +0 -15
- package/node_modules/which/README.md +0 -51
- package/node_modules/which/bin/which +0 -52
- package/node_modules/which/package.json +0 -73
- package/node_modules/which/which.js +0 -135
- package/node_modules/which-module/CHANGELOG.md +0 -26
- package/node_modules/which-module/LICENSE +0 -13
- package/node_modules/which-module/README.md +0 -55
- package/node_modules/which-module/index.js +0 -9
- package/node_modules/which-module/package.json +0 -72
- package/node_modules/wordwrap/LICENSE +0 -18
- package/node_modules/wordwrap/README.markdown +0 -70
- package/node_modules/wordwrap/example/center.js +0 -10
- package/node_modules/wordwrap/example/meat.js +0 -3
- package/node_modules/wordwrap/index.js +0 -76
- package/node_modules/wordwrap/package.json +0 -69
- package/node_modules/wordwrap/test/break.js +0 -30
- package/node_modules/wordwrap/test/idleness.txt +0 -63
- package/node_modules/wordwrap/test/wrap.js +0 -31
- package/node_modules/wrap-ansi/index.js +0 -168
- package/node_modules/wrap-ansi/license +0 -21
- package/node_modules/wrap-ansi/node_modules/ansi-regex/index.js +0 -4
- package/node_modules/wrap-ansi/node_modules/ansi-regex/license +0 -21
- package/node_modules/wrap-ansi/node_modules/ansi-regex/package.json +0 -111
- package/node_modules/wrap-ansi/node_modules/ansi-regex/readme.md +0 -39
- package/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/index.js +0 -46
- package/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/license +0 -21
- package/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/package.json +0 -80
- package/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/readme.md +0 -39
- package/node_modules/wrap-ansi/node_modules/string-width/index.js +0 -37
- package/node_modules/wrap-ansi/node_modules/string-width/license +0 -21
- package/node_modules/wrap-ansi/node_modules/string-width/package.json +0 -91
- package/node_modules/wrap-ansi/node_modules/string-width/readme.md +0 -42
- package/node_modules/wrap-ansi/node_modules/strip-ansi/index.js +0 -6
- package/node_modules/wrap-ansi/node_modules/strip-ansi/license +0 -21
- package/node_modules/wrap-ansi/node_modules/strip-ansi/package.json +0 -105
- package/node_modules/wrap-ansi/node_modules/strip-ansi/readme.md +0 -33
- package/node_modules/wrap-ansi/package.json +0 -123
- package/node_modules/wrap-ansi/readme.md +0 -73
- package/node_modules/wrappy/LICENSE +0 -15
- package/node_modules/wrappy/README.md +0 -36
- package/node_modules/wrappy/package.json +0 -62
- package/node_modules/wrappy/wrappy.js +0 -33
- package/node_modules/write-file-atomic/CHANGELOG.md +0 -20
- package/node_modules/write-file-atomic/LICENSE +0 -6
- package/node_modules/write-file-atomic/README.md +0 -56
- package/node_modules/write-file-atomic/index.js +0 -233
- package/node_modules/write-file-atomic/package.json +0 -71
- package/node_modules/y18n/CHANGELOG.md +0 -21
- package/node_modules/y18n/LICENSE +0 -13
- package/node_modules/y18n/README.md +0 -109
- package/node_modules/y18n/index.js +0 -188
- package/node_modules/y18n/package.json +0 -70
- package/node_modules/yallist/LICENSE +0 -15
- package/node_modules/yallist/README.md +0 -204
- package/node_modules/yallist/iterator.js +0 -7
- package/node_modules/yallist/package.json +0 -65
- package/node_modules/yallist/yallist.js +0 -370
- package/node_modules/yargs/CHANGELOG.md +0 -1231
- package/node_modules/yargs/LICENSE +0 -22
- package/node_modules/yargs/README.md +0 -122
- package/node_modules/yargs/completion.sh.hbs +0 -28
- package/node_modules/yargs/index.js +0 -32
- package/node_modules/yargs/lib/apply-extends.js +0 -53
- package/node_modules/yargs/lib/argsert.js +0 -66
- package/node_modules/yargs/lib/command.js +0 -433
- package/node_modules/yargs/lib/completion.js +0 -105
- package/node_modules/yargs/lib/levenshtein.js +0 -47
- package/node_modules/yargs/lib/middleware.js +0 -10
- package/node_modules/yargs/lib/obj-filter.js +0 -11
- package/node_modules/yargs/lib/usage.js +0 -535
- package/node_modules/yargs/lib/validation.js +0 -341
- package/node_modules/yargs/lib/yerror.js +0 -11
- package/node_modules/yargs/locales/be.json +0 -39
- package/node_modules/yargs/locales/de.json +0 -39
- package/node_modules/yargs/locales/en.json +0 -42
- package/node_modules/yargs/locales/es.json +0 -39
- package/node_modules/yargs/locales/fr.json +0 -37
- package/node_modules/yargs/locales/hi.json +0 -42
- package/node_modules/yargs/locales/hu.json +0 -39
- package/node_modules/yargs/locales/id.json +0 -43
- package/node_modules/yargs/locales/it.json +0 -39
- package/node_modules/yargs/locales/ja.json +0 -42
- package/node_modules/yargs/locales/ko.json +0 -42
- package/node_modules/yargs/locales/nb.json +0 -37
- package/node_modules/yargs/locales/nl.json +0 -42
- package/node_modules/yargs/locales/nn.json +0 -39
- package/node_modules/yargs/locales/pirate.json +0 -13
- package/node_modules/yargs/locales/pl.json +0 -42
- package/node_modules/yargs/locales/pt.json +0 -38
- package/node_modules/yargs/locales/pt_BR.json +0 -42
- package/node_modules/yargs/locales/ru.json +0 -39
- package/node_modules/yargs/locales/th.json +0 -39
- package/node_modules/yargs/locales/tr.json +0 -41
- package/node_modules/yargs/locales/zh_CN.json +0 -41
- package/node_modules/yargs/locales/zh_TW.json +0 -40
- package/node_modules/yargs/package.json +0 -110
- package/node_modules/yargs/yargs.js +0 -1190
- package/node_modules/yargs-parser/CHANGELOG.md +0 -412
- package/node_modules/yargs-parser/LICENSE.txt +0 -14
- package/node_modules/yargs-parser/README.md +0 -351
- package/node_modules/yargs-parser/index.js +0 -866
- package/node_modules/yargs-parser/lib/tokenize-arg-string.js +0 -41
- package/node_modules/yargs-parser/package.json +0 -83
|
@@ -1,1128 +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 (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
|
|
31
|
-
return [parent, '.', name];
|
|
32
|
-
} else {
|
|
33
|
-
return [parent, '[', JSON.stringify(name), ']'];
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
depthedLookup: function depthedLookup(name) {
|
|
37
|
-
return [this.aliasable('container.lookup'), '(depths, "', name, '")'];
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
compilerInfo: function compilerInfo() {
|
|
41
|
-
var revision = _base.COMPILER_REVISION,
|
|
42
|
-
versions = _base.REVISION_CHANGES[revision];
|
|
43
|
-
return [revision, versions];
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
appendToBuffer: function appendToBuffer(source, location, explicit) {
|
|
47
|
-
// Force a source as this simplifies the merge logic.
|
|
48
|
-
if (!_utils.isArray(source)) {
|
|
49
|
-
source = [source];
|
|
50
|
-
}
|
|
51
|
-
source = this.source.wrap(source, location);
|
|
52
|
-
|
|
53
|
-
if (this.environment.isSimple) {
|
|
54
|
-
return ['return ', source, ';'];
|
|
55
|
-
} else if (explicit) {
|
|
56
|
-
// This is a case where the buffer operation occurs as a child of another
|
|
57
|
-
// construct, generally braces. We have to explicitly output these buffer
|
|
58
|
-
// operations to ensure that the emitted code goes in the correct location.
|
|
59
|
-
return ['buffer += ', source, ';'];
|
|
60
|
-
} else {
|
|
61
|
-
source.appendToBuffer = true;
|
|
62
|
-
return source;
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
initializeBuffer: function initializeBuffer() {
|
|
67
|
-
return this.quotedString('');
|
|
68
|
-
},
|
|
69
|
-
// END PUBLIC API
|
|
70
|
-
|
|
71
|
-
compile: function compile(environment, options, context, asObject) {
|
|
72
|
-
this.environment = environment;
|
|
73
|
-
this.options = options;
|
|
74
|
-
this.stringParams = this.options.stringParams;
|
|
75
|
-
this.trackIds = this.options.trackIds;
|
|
76
|
-
this.precompile = !asObject;
|
|
77
|
-
|
|
78
|
-
this.name = this.environment.name;
|
|
79
|
-
this.isChild = !!context;
|
|
80
|
-
this.context = context || {
|
|
81
|
-
decorators: [],
|
|
82
|
-
programs: [],
|
|
83
|
-
environments: []
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
this.preamble();
|
|
87
|
-
|
|
88
|
-
this.stackSlot = 0;
|
|
89
|
-
this.stackVars = [];
|
|
90
|
-
this.aliases = {};
|
|
91
|
-
this.registers = { list: [] };
|
|
92
|
-
this.hashes = [];
|
|
93
|
-
this.compileStack = [];
|
|
94
|
-
this.inlineStack = [];
|
|
95
|
-
this.blockParams = [];
|
|
96
|
-
|
|
97
|
-
this.compileChildren(environment, options);
|
|
98
|
-
|
|
99
|
-
this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat;
|
|
100
|
-
this.useBlockParams = this.useBlockParams || environment.useBlockParams;
|
|
101
|
-
|
|
102
|
-
var opcodes = environment.opcodes,
|
|
103
|
-
opcode = undefined,
|
|
104
|
-
firstLoc = undefined,
|
|
105
|
-
i = undefined,
|
|
106
|
-
l = undefined;
|
|
107
|
-
|
|
108
|
-
for (i = 0, l = opcodes.length; i < l; i++) {
|
|
109
|
-
opcode = opcodes[i];
|
|
110
|
-
|
|
111
|
-
this.source.currentLocation = opcode.loc;
|
|
112
|
-
firstLoc = firstLoc || opcode.loc;
|
|
113
|
-
this[opcode.opcode].apply(this, opcode.args);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Flush any trailing content that might be pending.
|
|
117
|
-
this.source.currentLocation = firstLoc;
|
|
118
|
-
this.pushSource('');
|
|
119
|
-
|
|
120
|
-
/* istanbul ignore next */
|
|
121
|
-
if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {
|
|
122
|
-
throw new _exception2['default']('Compile completed with content left on stack');
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
if (!this.decorators.isEmpty()) {
|
|
126
|
-
this.useDecorators = true;
|
|
127
|
-
|
|
128
|
-
this.decorators.prepend('var decorators = container.decorators;\n');
|
|
129
|
-
this.decorators.push('return fn;');
|
|
130
|
-
|
|
131
|
-
if (asObject) {
|
|
132
|
-
this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]);
|
|
133
|
-
} else {
|
|
134
|
-
this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\n');
|
|
135
|
-
this.decorators.push('}\n');
|
|
136
|
-
this.decorators = this.decorators.merge();
|
|
137
|
-
}
|
|
138
|
-
} else {
|
|
139
|
-
this.decorators = undefined;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
var fn = this.createFunctionContext(asObject);
|
|
143
|
-
if (!this.isChild) {
|
|
144
|
-
var ret = {
|
|
145
|
-
compiler: this.compilerInfo(),
|
|
146
|
-
main: fn
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
if (this.decorators) {
|
|
150
|
-
ret.main_d = this.decorators; // eslint-disable-line camelcase
|
|
151
|
-
ret.useDecorators = true;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
var _context = this.context;
|
|
155
|
-
var programs = _context.programs;
|
|
156
|
-
var decorators = _context.decorators;
|
|
157
|
-
|
|
158
|
-
for (i = 0, l = programs.length; i < l; i++) {
|
|
159
|
-
if (programs[i]) {
|
|
160
|
-
ret[i] = programs[i];
|
|
161
|
-
if (decorators[i]) {
|
|
162
|
-
ret[i + '_d'] = decorators[i];
|
|
163
|
-
ret.useDecorators = true;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if (this.environment.usePartial) {
|
|
169
|
-
ret.usePartial = true;
|
|
170
|
-
}
|
|
171
|
-
if (this.options.data) {
|
|
172
|
-
ret.useData = true;
|
|
173
|
-
}
|
|
174
|
-
if (this.useDepths) {
|
|
175
|
-
ret.useDepths = true;
|
|
176
|
-
}
|
|
177
|
-
if (this.useBlockParams) {
|
|
178
|
-
ret.useBlockParams = true;
|
|
179
|
-
}
|
|
180
|
-
if (this.options.compat) {
|
|
181
|
-
ret.compat = true;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
if (!asObject) {
|
|
185
|
-
ret.compiler = JSON.stringify(ret.compiler);
|
|
186
|
-
|
|
187
|
-
this.source.currentLocation = { start: { line: 1, column: 0 } };
|
|
188
|
-
ret = this.objectLiteral(ret);
|
|
189
|
-
|
|
190
|
-
if (options.srcName) {
|
|
191
|
-
ret = ret.toStringWithSourceMap({ file: options.destName });
|
|
192
|
-
ret.map = ret.map && ret.map.toString();
|
|
193
|
-
} else {
|
|
194
|
-
ret = ret.toString();
|
|
195
|
-
}
|
|
196
|
-
} else {
|
|
197
|
-
ret.compilerOptions = this.options;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
return ret;
|
|
201
|
-
} else {
|
|
202
|
-
return fn;
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
|
|
206
|
-
preamble: function preamble() {
|
|
207
|
-
// track the last context pushed into place to allow skipping the
|
|
208
|
-
// getContext opcode when it would be a noop
|
|
209
|
-
this.lastContext = 0;
|
|
210
|
-
this.source = new _codeGen2['default'](this.options.srcName);
|
|
211
|
-
this.decorators = new _codeGen2['default'](this.options.srcName);
|
|
212
|
-
},
|
|
213
|
-
|
|
214
|
-
createFunctionContext: function createFunctionContext(asObject) {
|
|
215
|
-
var varDeclarations = '';
|
|
216
|
-
|
|
217
|
-
var locals = this.stackVars.concat(this.registers.list);
|
|
218
|
-
if (locals.length > 0) {
|
|
219
|
-
varDeclarations += ', ' + locals.join(', ');
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Generate minimizer alias mappings
|
|
223
|
-
//
|
|
224
|
-
// When using true SourceNodes, this will update all references to the given alias
|
|
225
|
-
// as the source nodes are reused in situ. For the non-source node compilation mode,
|
|
226
|
-
// aliases will not be used, but this case is already being run on the client and
|
|
227
|
-
// we aren't concern about minimizing the template size.
|
|
228
|
-
var aliasCount = 0;
|
|
229
|
-
for (var alias in this.aliases) {
|
|
230
|
-
// eslint-disable-line guard-for-in
|
|
231
|
-
var node = this.aliases[alias];
|
|
232
|
-
|
|
233
|
-
if (this.aliases.hasOwnProperty(alias) && node.children && node.referenceCount > 1) {
|
|
234
|
-
varDeclarations += ', alias' + ++aliasCount + '=' + alias;
|
|
235
|
-
node.children[0] = 'alias' + aliasCount;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
var params = ['container', 'depth0', 'helpers', 'partials', 'data'];
|
|
240
|
-
|
|
241
|
-
if (this.useBlockParams || this.useDepths) {
|
|
242
|
-
params.push('blockParams');
|
|
243
|
-
}
|
|
244
|
-
if (this.useDepths) {
|
|
245
|
-
params.push('depths');
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
// Perform a second pass over the output to merge content when possible
|
|
249
|
-
var source = this.mergeSource(varDeclarations);
|
|
250
|
-
|
|
251
|
-
if (asObject) {
|
|
252
|
-
params.push(source);
|
|
253
|
-
|
|
254
|
-
return Function.apply(this, params);
|
|
255
|
-
} else {
|
|
256
|
-
return this.source.wrap(['function(', params.join(','), ') {\n ', source, '}']);
|
|
257
|
-
}
|
|
258
|
-
},
|
|
259
|
-
mergeSource: function mergeSource(varDeclarations) {
|
|
260
|
-
var isSimple = this.environment.isSimple,
|
|
261
|
-
appendOnly = !this.forceBuffer,
|
|
262
|
-
appendFirst = undefined,
|
|
263
|
-
sourceSeen = undefined,
|
|
264
|
-
bufferStart = undefined,
|
|
265
|
-
bufferEnd = undefined;
|
|
266
|
-
this.source.each(function (line) {
|
|
267
|
-
if (line.appendToBuffer) {
|
|
268
|
-
if (bufferStart) {
|
|
269
|
-
line.prepend(' + ');
|
|
270
|
-
} else {
|
|
271
|
-
bufferStart = line;
|
|
272
|
-
}
|
|
273
|
-
bufferEnd = line;
|
|
274
|
-
} else {
|
|
275
|
-
if (bufferStart) {
|
|
276
|
-
if (!sourceSeen) {
|
|
277
|
-
appendFirst = true;
|
|
278
|
-
} else {
|
|
279
|
-
bufferStart.prepend('buffer += ');
|
|
280
|
-
}
|
|
281
|
-
bufferEnd.add(';');
|
|
282
|
-
bufferStart = bufferEnd = undefined;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
sourceSeen = true;
|
|
286
|
-
if (!isSimple) {
|
|
287
|
-
appendOnly = false;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
if (appendOnly) {
|
|
293
|
-
if (bufferStart) {
|
|
294
|
-
bufferStart.prepend('return ');
|
|
295
|
-
bufferEnd.add(';');
|
|
296
|
-
} else if (!sourceSeen) {
|
|
297
|
-
this.source.push('return "";');
|
|
298
|
-
}
|
|
299
|
-
} else {
|
|
300
|
-
varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());
|
|
301
|
-
|
|
302
|
-
if (bufferStart) {
|
|
303
|
-
bufferStart.prepend('return buffer + ');
|
|
304
|
-
bufferEnd.add(';');
|
|
305
|
-
} else {
|
|
306
|
-
this.source.push('return buffer;');
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
if (varDeclarations) {
|
|
311
|
-
this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n'));
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
return this.source.merge();
|
|
315
|
-
},
|
|
316
|
-
|
|
317
|
-
// [blockValue]
|
|
318
|
-
//
|
|
319
|
-
// On stack, before: hash, inverse, program, value
|
|
320
|
-
// On stack, after: return value of blockHelperMissing
|
|
321
|
-
//
|
|
322
|
-
// The purpose of this opcode is to take a block of the form
|
|
323
|
-
// `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and
|
|
324
|
-
// replace it on the stack with the result of properly
|
|
325
|
-
// invoking blockHelperMissing.
|
|
326
|
-
blockValue: function blockValue(name) {
|
|
327
|
-
var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'),
|
|
328
|
-
params = [this.contextName(0)];
|
|
329
|
-
this.setupHelperArgs(name, 0, params);
|
|
330
|
-
|
|
331
|
-
var blockName = this.popStack();
|
|
332
|
-
params.splice(1, 0, blockName);
|
|
333
|
-
|
|
334
|
-
this.push(this.source.functionCall(blockHelperMissing, 'call', params));
|
|
335
|
-
},
|
|
336
|
-
|
|
337
|
-
// [ambiguousBlockValue]
|
|
338
|
-
//
|
|
339
|
-
// On stack, before: hash, inverse, program, value
|
|
340
|
-
// Compiler value, before: lastHelper=value of last found helper, if any
|
|
341
|
-
// On stack, after, if no lastHelper: same as [blockValue]
|
|
342
|
-
// On stack, after, if lastHelper: value
|
|
343
|
-
ambiguousBlockValue: function ambiguousBlockValue() {
|
|
344
|
-
// We're being a bit cheeky and reusing the options value from the prior exec
|
|
345
|
-
var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'),
|
|
346
|
-
params = [this.contextName(0)];
|
|
347
|
-
this.setupHelperArgs('', 0, params, true);
|
|
348
|
-
|
|
349
|
-
this.flushInline();
|
|
350
|
-
|
|
351
|
-
var current = this.topStack();
|
|
352
|
-
params.splice(1, 0, current);
|
|
353
|
-
|
|
354
|
-
this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']);
|
|
355
|
-
},
|
|
356
|
-
|
|
357
|
-
// [appendContent]
|
|
358
|
-
//
|
|
359
|
-
// On stack, before: ...
|
|
360
|
-
// On stack, after: ...
|
|
361
|
-
//
|
|
362
|
-
// Appends the string value of `content` to the current buffer
|
|
363
|
-
appendContent: function appendContent(content) {
|
|
364
|
-
if (this.pendingContent) {
|
|
365
|
-
content = this.pendingContent + content;
|
|
366
|
-
} else {
|
|
367
|
-
this.pendingLocation = this.source.currentLocation;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
this.pendingContent = content;
|
|
371
|
-
},
|
|
372
|
-
|
|
373
|
-
// [append]
|
|
374
|
-
//
|
|
375
|
-
// On stack, before: value, ...
|
|
376
|
-
// On stack, after: ...
|
|
377
|
-
//
|
|
378
|
-
// Coerces `value` to a String and appends it to the current buffer.
|
|
379
|
-
//
|
|
380
|
-
// If `value` is truthy, or 0, it is coerced into a string and appended
|
|
381
|
-
// Otherwise, the empty string is appended
|
|
382
|
-
append: function append() {
|
|
383
|
-
if (this.isInline()) {
|
|
384
|
-
this.replaceStack(function (current) {
|
|
385
|
-
return [' != null ? ', current, ' : ""'];
|
|
386
|
-
});
|
|
387
|
-
|
|
388
|
-
this.pushSource(this.appendToBuffer(this.popStack()));
|
|
389
|
-
} else {
|
|
390
|
-
var local = this.popStack();
|
|
391
|
-
this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']);
|
|
392
|
-
if (this.environment.isSimple) {
|
|
393
|
-
this.pushSource(['else { ', this.appendToBuffer("''", undefined, true), ' }']);
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
},
|
|
397
|
-
|
|
398
|
-
// [appendEscaped]
|
|
399
|
-
//
|
|
400
|
-
// On stack, before: value, ...
|
|
401
|
-
// On stack, after: ...
|
|
402
|
-
//
|
|
403
|
-
// Escape `value` and append it to the buffer
|
|
404
|
-
appendEscaped: function appendEscaped() {
|
|
405
|
-
this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')']));
|
|
406
|
-
},
|
|
407
|
-
|
|
408
|
-
// [getContext]
|
|
409
|
-
//
|
|
410
|
-
// On stack, before: ...
|
|
411
|
-
// On stack, after: ...
|
|
412
|
-
// Compiler value, after: lastContext=depth
|
|
413
|
-
//
|
|
414
|
-
// Set the value of the `lastContext` compiler value to the depth
|
|
415
|
-
getContext: function getContext(depth) {
|
|
416
|
-
this.lastContext = depth;
|
|
417
|
-
},
|
|
418
|
-
|
|
419
|
-
// [pushContext]
|
|
420
|
-
//
|
|
421
|
-
// On stack, before: ...
|
|
422
|
-
// On stack, after: currentContext, ...
|
|
423
|
-
//
|
|
424
|
-
// Pushes the value of the current context onto the stack.
|
|
425
|
-
pushContext: function pushContext() {
|
|
426
|
-
this.pushStackLiteral(this.contextName(this.lastContext));
|
|
427
|
-
},
|
|
428
|
-
|
|
429
|
-
// [lookupOnContext]
|
|
430
|
-
//
|
|
431
|
-
// On stack, before: ...
|
|
432
|
-
// On stack, after: currentContext[name], ...
|
|
433
|
-
//
|
|
434
|
-
// Looks up the value of `name` on the current context and pushes
|
|
435
|
-
// it onto the stack.
|
|
436
|
-
lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) {
|
|
437
|
-
var i = 0;
|
|
438
|
-
|
|
439
|
-
if (!scoped && this.options.compat && !this.lastContext) {
|
|
440
|
-
// The depthed query is expected to handle the undefined logic for the root level that
|
|
441
|
-
// is implemented below, so we evaluate that directly in compat mode
|
|
442
|
-
this.push(this.depthedLookup(parts[i++]));
|
|
443
|
-
} else {
|
|
444
|
-
this.pushContext();
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
this.resolvePath('context', parts, i, falsy, strict);
|
|
448
|
-
},
|
|
449
|
-
|
|
450
|
-
// [lookupBlockParam]
|
|
451
|
-
//
|
|
452
|
-
// On stack, before: ...
|
|
453
|
-
// On stack, after: blockParam[name], ...
|
|
454
|
-
//
|
|
455
|
-
// Looks up the value of `parts` on the given block param and pushes
|
|
456
|
-
// it onto the stack.
|
|
457
|
-
lookupBlockParam: function lookupBlockParam(blockParamId, parts) {
|
|
458
|
-
this.useBlockParams = true;
|
|
459
|
-
|
|
460
|
-
this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);
|
|
461
|
-
this.resolvePath('context', parts, 1);
|
|
462
|
-
},
|
|
463
|
-
|
|
464
|
-
// [lookupData]
|
|
465
|
-
//
|
|
466
|
-
// On stack, before: ...
|
|
467
|
-
// On stack, after: data, ...
|
|
468
|
-
//
|
|
469
|
-
// Push the data lookup operator
|
|
470
|
-
lookupData: function lookupData(depth, parts, strict) {
|
|
471
|
-
if (!depth) {
|
|
472
|
-
this.pushStackLiteral('data');
|
|
473
|
-
} else {
|
|
474
|
-
this.pushStackLiteral('container.data(data, ' + depth + ')');
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
this.resolvePath('data', parts, 0, true, strict);
|
|
478
|
-
},
|
|
479
|
-
|
|
480
|
-
resolvePath: function resolvePath(type, parts, i, falsy, strict) {
|
|
481
|
-
// istanbul ignore next
|
|
482
|
-
|
|
483
|
-
var _this = this;
|
|
484
|
-
|
|
485
|
-
if (this.options.strict || this.options.assumeObjects) {
|
|
486
|
-
this.push(strictLookup(this.options.strict && strict, this, parts, type));
|
|
487
|
-
return;
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
var len = parts.length;
|
|
491
|
-
for (; i < len; i++) {
|
|
492
|
-
/* eslint-disable no-loop-func */
|
|
493
|
-
this.replaceStack(function (current) {
|
|
494
|
-
var lookup = _this.nameLookup(current, parts[i], type);
|
|
495
|
-
// We want to ensure that zero and false are handled properly if the context (falsy flag)
|
|
496
|
-
// needs to have the special handling for these values.
|
|
497
|
-
if (!falsy) {
|
|
498
|
-
return [' != null ? ', lookup, ' : ', current];
|
|
499
|
-
} else {
|
|
500
|
-
// Otherwise we can use generic falsy handling
|
|
501
|
-
return [' && ', lookup];
|
|
502
|
-
}
|
|
503
|
-
});
|
|
504
|
-
/* eslint-enable no-loop-func */
|
|
505
|
-
}
|
|
506
|
-
},
|
|
507
|
-
|
|
508
|
-
// [resolvePossibleLambda]
|
|
509
|
-
//
|
|
510
|
-
// On stack, before: value, ...
|
|
511
|
-
// On stack, after: resolved value, ...
|
|
512
|
-
//
|
|
513
|
-
// If the `value` is a lambda, replace it on the stack by
|
|
514
|
-
// the return value of the lambda
|
|
515
|
-
resolvePossibleLambda: function resolvePossibleLambda() {
|
|
516
|
-
this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']);
|
|
517
|
-
},
|
|
518
|
-
|
|
519
|
-
// [pushStringParam]
|
|
520
|
-
//
|
|
521
|
-
// On stack, before: ...
|
|
522
|
-
// On stack, after: string, currentContext, ...
|
|
523
|
-
//
|
|
524
|
-
// This opcode is designed for use in string mode, which
|
|
525
|
-
// provides the string value of a parameter along with its
|
|
526
|
-
// depth rather than resolving it immediately.
|
|
527
|
-
pushStringParam: function pushStringParam(string, type) {
|
|
528
|
-
this.pushContext();
|
|
529
|
-
this.pushString(type);
|
|
530
|
-
|
|
531
|
-
// If it's a subexpression, the string result
|
|
532
|
-
// will be pushed after this opcode.
|
|
533
|
-
if (type !== 'SubExpression') {
|
|
534
|
-
if (typeof string === 'string') {
|
|
535
|
-
this.pushString(string);
|
|
536
|
-
} else {
|
|
537
|
-
this.pushStackLiteral(string);
|
|
538
|
-
}
|
|
539
|
-
}
|
|
540
|
-
},
|
|
541
|
-
|
|
542
|
-
emptyHash: function emptyHash(omitEmpty) {
|
|
543
|
-
if (this.trackIds) {
|
|
544
|
-
this.push('{}'); // hashIds
|
|
545
|
-
}
|
|
546
|
-
if (this.stringParams) {
|
|
547
|
-
this.push('{}'); // hashContexts
|
|
548
|
-
this.push('{}'); // hashTypes
|
|
549
|
-
}
|
|
550
|
-
this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');
|
|
551
|
-
},
|
|
552
|
-
pushHash: function pushHash() {
|
|
553
|
-
if (this.hash) {
|
|
554
|
-
this.hashes.push(this.hash);
|
|
555
|
-
}
|
|
556
|
-
this.hash = { values: [], types: [], contexts: [], ids: [] };
|
|
557
|
-
},
|
|
558
|
-
popHash: function popHash() {
|
|
559
|
-
var hash = this.hash;
|
|
560
|
-
this.hash = this.hashes.pop();
|
|
561
|
-
|
|
562
|
-
if (this.trackIds) {
|
|
563
|
-
this.push(this.objectLiteral(hash.ids));
|
|
564
|
-
}
|
|
565
|
-
if (this.stringParams) {
|
|
566
|
-
this.push(this.objectLiteral(hash.contexts));
|
|
567
|
-
this.push(this.objectLiteral(hash.types));
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
this.push(this.objectLiteral(hash.values));
|
|
571
|
-
},
|
|
572
|
-
|
|
573
|
-
// [pushString]
|
|
574
|
-
//
|
|
575
|
-
// On stack, before: ...
|
|
576
|
-
// On stack, after: quotedString(string), ...
|
|
577
|
-
//
|
|
578
|
-
// Push a quoted version of `string` onto the stack
|
|
579
|
-
pushString: function pushString(string) {
|
|
580
|
-
this.pushStackLiteral(this.quotedString(string));
|
|
581
|
-
},
|
|
582
|
-
|
|
583
|
-
// [pushLiteral]
|
|
584
|
-
//
|
|
585
|
-
// On stack, before: ...
|
|
586
|
-
// On stack, after: value, ...
|
|
587
|
-
//
|
|
588
|
-
// Pushes a value onto the stack. This operation prevents
|
|
589
|
-
// the compiler from creating a temporary variable to hold
|
|
590
|
-
// it.
|
|
591
|
-
pushLiteral: function pushLiteral(value) {
|
|
592
|
-
this.pushStackLiteral(value);
|
|
593
|
-
},
|
|
594
|
-
|
|
595
|
-
// [pushProgram]
|
|
596
|
-
//
|
|
597
|
-
// On stack, before: ...
|
|
598
|
-
// On stack, after: program(guid), ...
|
|
599
|
-
//
|
|
600
|
-
// Push a program expression onto the stack. This takes
|
|
601
|
-
// a compile-time guid and converts it into a runtime-accessible
|
|
602
|
-
// expression.
|
|
603
|
-
pushProgram: function pushProgram(guid) {
|
|
604
|
-
if (guid != null) {
|
|
605
|
-
this.pushStackLiteral(this.programExpression(guid));
|
|
606
|
-
} else {
|
|
607
|
-
this.pushStackLiteral(null);
|
|
608
|
-
}
|
|
609
|
-
},
|
|
610
|
-
|
|
611
|
-
// [registerDecorator]
|
|
612
|
-
//
|
|
613
|
-
// On stack, before: hash, program, params..., ...
|
|
614
|
-
// On stack, after: ...
|
|
615
|
-
//
|
|
616
|
-
// Pops off the decorator's parameters, invokes the decorator,
|
|
617
|
-
// and inserts the decorator into the decorators list.
|
|
618
|
-
registerDecorator: function registerDecorator(paramSize, name) {
|
|
619
|
-
var foundDecorator = this.nameLookup('decorators', name, 'decorator'),
|
|
620
|
-
options = this.setupHelperArgs(name, paramSize);
|
|
621
|
-
|
|
622
|
-
this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']);
|
|
623
|
-
},
|
|
624
|
-
|
|
625
|
-
// [invokeHelper]
|
|
626
|
-
//
|
|
627
|
-
// On stack, before: hash, inverse, program, params..., ...
|
|
628
|
-
// On stack, after: result of helper invocation
|
|
629
|
-
//
|
|
630
|
-
// Pops off the helper's parameters, invokes the helper,
|
|
631
|
-
// and pushes the helper's return value onto the stack.
|
|
632
|
-
//
|
|
633
|
-
// If the helper is not found, `helperMissing` is called.
|
|
634
|
-
invokeHelper: function invokeHelper(paramSize, name, isSimple) {
|
|
635
|
-
var nonHelper = this.popStack(),
|
|
636
|
-
helper = this.setupHelper(paramSize, name),
|
|
637
|
-
simple = isSimple ? [helper.name, ' || '] : '';
|
|
638
|
-
|
|
639
|
-
var lookup = ['('].concat(simple, nonHelper);
|
|
640
|
-
if (!this.options.strict) {
|
|
641
|
-
lookup.push(' || ', this.aliasable('helpers.helperMissing'));
|
|
642
|
-
}
|
|
643
|
-
lookup.push(')');
|
|
644
|
-
|
|
645
|
-
this.push(this.source.functionCall(lookup, 'call', helper.callParams));
|
|
646
|
-
},
|
|
647
|
-
|
|
648
|
-
// [invokeKnownHelper]
|
|
649
|
-
//
|
|
650
|
-
// On stack, before: hash, inverse, program, params..., ...
|
|
651
|
-
// On stack, after: result of helper invocation
|
|
652
|
-
//
|
|
653
|
-
// This operation is used when the helper is known to exist,
|
|
654
|
-
// so a `helperMissing` fallback is not required.
|
|
655
|
-
invokeKnownHelper: function invokeKnownHelper(paramSize, name) {
|
|
656
|
-
var helper = this.setupHelper(paramSize, name);
|
|
657
|
-
this.push(this.source.functionCall(helper.name, 'call', helper.callParams));
|
|
658
|
-
},
|
|
659
|
-
|
|
660
|
-
// [invokeAmbiguous]
|
|
661
|
-
//
|
|
662
|
-
// On stack, before: hash, inverse, program, params..., ...
|
|
663
|
-
// On stack, after: result of disambiguation
|
|
664
|
-
//
|
|
665
|
-
// This operation is used when an expression like `{{foo}}`
|
|
666
|
-
// is provided, but we don't know at compile-time whether it
|
|
667
|
-
// is a helper or a path.
|
|
668
|
-
//
|
|
669
|
-
// This operation emits more code than the other options,
|
|
670
|
-
// and can be avoided by passing the `knownHelpers` and
|
|
671
|
-
// `knownHelpersOnly` flags at compile-time.
|
|
672
|
-
invokeAmbiguous: function invokeAmbiguous(name, helperCall) {
|
|
673
|
-
this.useRegister('helper');
|
|
674
|
-
|
|
675
|
-
var nonHelper = this.popStack();
|
|
676
|
-
|
|
677
|
-
this.emptyHash();
|
|
678
|
-
var helper = this.setupHelper(0, name, helperCall);
|
|
679
|
-
|
|
680
|
-
var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
|
|
681
|
-
|
|
682
|
-
var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];
|
|
683
|
-
if (!this.options.strict) {
|
|
684
|
-
lookup[0] = '(helper = ';
|
|
685
|
-
lookup.push(' != null ? helper : ', this.aliasable('helpers.helperMissing'));
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('"function"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']);
|
|
689
|
-
},
|
|
690
|
-
|
|
691
|
-
// [invokePartial]
|
|
692
|
-
//
|
|
693
|
-
// On stack, before: context, ...
|
|
694
|
-
// On stack after: result of partial invocation
|
|
695
|
-
//
|
|
696
|
-
// This operation pops off a context, invokes a partial with that context,
|
|
697
|
-
// and pushes the result of the invocation back.
|
|
698
|
-
invokePartial: function invokePartial(isDynamic, name, indent) {
|
|
699
|
-
var params = [],
|
|
700
|
-
options = this.setupParams(name, 1, params);
|
|
701
|
-
|
|
702
|
-
if (isDynamic) {
|
|
703
|
-
name = this.popStack();
|
|
704
|
-
delete options.name;
|
|
705
|
-
}
|
|
706
|
-
|
|
707
|
-
if (indent) {
|
|
708
|
-
options.indent = JSON.stringify(indent);
|
|
709
|
-
}
|
|
710
|
-
options.helpers = 'helpers';
|
|
711
|
-
options.partials = 'partials';
|
|
712
|
-
options.decorators = 'container.decorators';
|
|
713
|
-
|
|
714
|
-
if (!isDynamic) {
|
|
715
|
-
params.unshift(this.nameLookup('partials', name, 'partial'));
|
|
716
|
-
} else {
|
|
717
|
-
params.unshift(name);
|
|
718
|
-
}
|
|
719
|
-
|
|
720
|
-
if (this.options.compat) {
|
|
721
|
-
options.depths = 'depths';
|
|
722
|
-
}
|
|
723
|
-
options = this.objectLiteral(options);
|
|
724
|
-
params.push(options);
|
|
725
|
-
|
|
726
|
-
this.push(this.source.functionCall('container.invokePartial', '', params));
|
|
727
|
-
},
|
|
728
|
-
|
|
729
|
-
// [assignToHash]
|
|
730
|
-
//
|
|
731
|
-
// On stack, before: value, ..., hash, ...
|
|
732
|
-
// On stack, after: ..., hash, ...
|
|
733
|
-
//
|
|
734
|
-
// Pops a value off the stack and assigns it to the current hash
|
|
735
|
-
assignToHash: function assignToHash(key) {
|
|
736
|
-
var value = this.popStack(),
|
|
737
|
-
context = undefined,
|
|
738
|
-
type = undefined,
|
|
739
|
-
id = undefined;
|
|
740
|
-
|
|
741
|
-
if (this.trackIds) {
|
|
742
|
-
id = this.popStack();
|
|
743
|
-
}
|
|
744
|
-
if (this.stringParams) {
|
|
745
|
-
type = this.popStack();
|
|
746
|
-
context = this.popStack();
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
var hash = this.hash;
|
|
750
|
-
if (context) {
|
|
751
|
-
hash.contexts[key] = context;
|
|
752
|
-
}
|
|
753
|
-
if (type) {
|
|
754
|
-
hash.types[key] = type;
|
|
755
|
-
}
|
|
756
|
-
if (id) {
|
|
757
|
-
hash.ids[key] = id;
|
|
758
|
-
}
|
|
759
|
-
hash.values[key] = value;
|
|
760
|
-
},
|
|
761
|
-
|
|
762
|
-
pushId: function pushId(type, name, child) {
|
|
763
|
-
if (type === 'BlockParam') {
|
|
764
|
-
this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : ''));
|
|
765
|
-
} else if (type === 'PathExpression') {
|
|
766
|
-
this.pushString(name);
|
|
767
|
-
} else if (type === 'SubExpression') {
|
|
768
|
-
this.pushStackLiteral('true');
|
|
769
|
-
} else {
|
|
770
|
-
this.pushStackLiteral('null');
|
|
771
|
-
}
|
|
772
|
-
},
|
|
773
|
-
|
|
774
|
-
// HELPERS
|
|
775
|
-
|
|
776
|
-
compiler: JavaScriptCompiler,
|
|
777
|
-
|
|
778
|
-
compileChildren: function compileChildren(environment, options) {
|
|
779
|
-
var children = environment.children,
|
|
780
|
-
child = undefined,
|
|
781
|
-
compiler = undefined;
|
|
782
|
-
|
|
783
|
-
for (var i = 0, l = children.length; i < l; i++) {
|
|
784
|
-
child = children[i];
|
|
785
|
-
compiler = new this.compiler(); // eslint-disable-line new-cap
|
|
786
|
-
|
|
787
|
-
var existing = this.matchExistingProgram(child);
|
|
788
|
-
|
|
789
|
-
if (existing == null) {
|
|
790
|
-
this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children
|
|
791
|
-
var index = this.context.programs.length;
|
|
792
|
-
child.index = index;
|
|
793
|
-
child.name = 'program' + index;
|
|
794
|
-
this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);
|
|
795
|
-
this.context.decorators[index] = compiler.decorators;
|
|
796
|
-
this.context.environments[index] = child;
|
|
797
|
-
|
|
798
|
-
this.useDepths = this.useDepths || compiler.useDepths;
|
|
799
|
-
this.useBlockParams = this.useBlockParams || compiler.useBlockParams;
|
|
800
|
-
child.useDepths = this.useDepths;
|
|
801
|
-
child.useBlockParams = this.useBlockParams;
|
|
802
|
-
} else {
|
|
803
|
-
child.index = existing.index;
|
|
804
|
-
child.name = 'program' + existing.index;
|
|
805
|
-
|
|
806
|
-
this.useDepths = this.useDepths || existing.useDepths;
|
|
807
|
-
this.useBlockParams = this.useBlockParams || existing.useBlockParams;
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
},
|
|
811
|
-
matchExistingProgram: function matchExistingProgram(child) {
|
|
812
|
-
for (var i = 0, len = this.context.environments.length; i < len; i++) {
|
|
813
|
-
var environment = this.context.environments[i];
|
|
814
|
-
if (environment && environment.equals(child)) {
|
|
815
|
-
return environment;
|
|
816
|
-
}
|
|
817
|
-
}
|
|
818
|
-
},
|
|
819
|
-
|
|
820
|
-
programExpression: function programExpression(guid) {
|
|
821
|
-
var child = this.environment.children[guid],
|
|
822
|
-
programParams = [child.index, 'data', child.blockParams];
|
|
823
|
-
|
|
824
|
-
if (this.useBlockParams || this.useDepths) {
|
|
825
|
-
programParams.push('blockParams');
|
|
826
|
-
}
|
|
827
|
-
if (this.useDepths) {
|
|
828
|
-
programParams.push('depths');
|
|
829
|
-
}
|
|
830
|
-
|
|
831
|
-
return 'container.program(' + programParams.join(', ') + ')';
|
|
832
|
-
},
|
|
833
|
-
|
|
834
|
-
useRegister: function useRegister(name) {
|
|
835
|
-
if (!this.registers[name]) {
|
|
836
|
-
this.registers[name] = true;
|
|
837
|
-
this.registers.list.push(name);
|
|
838
|
-
}
|
|
839
|
-
},
|
|
840
|
-
|
|
841
|
-
push: function push(expr) {
|
|
842
|
-
if (!(expr instanceof Literal)) {
|
|
843
|
-
expr = this.source.wrap(expr);
|
|
844
|
-
}
|
|
845
|
-
|
|
846
|
-
this.inlineStack.push(expr);
|
|
847
|
-
return expr;
|
|
848
|
-
},
|
|
849
|
-
|
|
850
|
-
pushStackLiteral: function pushStackLiteral(item) {
|
|
851
|
-
this.push(new Literal(item));
|
|
852
|
-
},
|
|
853
|
-
|
|
854
|
-
pushSource: function pushSource(source) {
|
|
855
|
-
if (this.pendingContent) {
|
|
856
|
-
this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation));
|
|
857
|
-
this.pendingContent = undefined;
|
|
858
|
-
}
|
|
859
|
-
|
|
860
|
-
if (source) {
|
|
861
|
-
this.source.push(source);
|
|
862
|
-
}
|
|
863
|
-
},
|
|
864
|
-
|
|
865
|
-
replaceStack: function replaceStack(callback) {
|
|
866
|
-
var prefix = ['('],
|
|
867
|
-
stack = undefined,
|
|
868
|
-
createdStack = undefined,
|
|
869
|
-
usedLiteral = undefined;
|
|
870
|
-
|
|
871
|
-
/* istanbul ignore next */
|
|
872
|
-
if (!this.isInline()) {
|
|
873
|
-
throw new _exception2['default']('replaceStack on non-inline');
|
|
874
|
-
}
|
|
875
|
-
|
|
876
|
-
// We want to merge the inline statement into the replacement statement via ','
|
|
877
|
-
var top = this.popStack(true);
|
|
878
|
-
|
|
879
|
-
if (top instanceof Literal) {
|
|
880
|
-
// Literals do not need to be inlined
|
|
881
|
-
stack = [top.value];
|
|
882
|
-
prefix = ['(', stack];
|
|
883
|
-
usedLiteral = true;
|
|
884
|
-
} else {
|
|
885
|
-
// Get or create the current stack name for use by the inline
|
|
886
|
-
createdStack = true;
|
|
887
|
-
var _name = this.incrStack();
|
|
888
|
-
|
|
889
|
-
prefix = ['((', this.push(_name), ' = ', top, ')'];
|
|
890
|
-
stack = this.topStack();
|
|
891
|
-
}
|
|
892
|
-
|
|
893
|
-
var item = callback.call(this, stack);
|
|
894
|
-
|
|
895
|
-
if (!usedLiteral) {
|
|
896
|
-
this.popStack();
|
|
897
|
-
}
|
|
898
|
-
if (createdStack) {
|
|
899
|
-
this.stackSlot--;
|
|
900
|
-
}
|
|
901
|
-
this.push(prefix.concat(item, ')'));
|
|
902
|
-
},
|
|
903
|
-
|
|
904
|
-
incrStack: function incrStack() {
|
|
905
|
-
this.stackSlot++;
|
|
906
|
-
if (this.stackSlot > this.stackVars.length) {
|
|
907
|
-
this.stackVars.push('stack' + this.stackSlot);
|
|
908
|
-
}
|
|
909
|
-
return this.topStackName();
|
|
910
|
-
},
|
|
911
|
-
topStackName: function topStackName() {
|
|
912
|
-
return 'stack' + this.stackSlot;
|
|
913
|
-
},
|
|
914
|
-
flushInline: function flushInline() {
|
|
915
|
-
var inlineStack = this.inlineStack;
|
|
916
|
-
this.inlineStack = [];
|
|
917
|
-
for (var i = 0, len = inlineStack.length; i < len; i++) {
|
|
918
|
-
var entry = inlineStack[i];
|
|
919
|
-
/* istanbul ignore if */
|
|
920
|
-
if (entry instanceof Literal) {
|
|
921
|
-
this.compileStack.push(entry);
|
|
922
|
-
} else {
|
|
923
|
-
var stack = this.incrStack();
|
|
924
|
-
this.pushSource([stack, ' = ', entry, ';']);
|
|
925
|
-
this.compileStack.push(stack);
|
|
926
|
-
}
|
|
927
|
-
}
|
|
928
|
-
},
|
|
929
|
-
isInline: function isInline() {
|
|
930
|
-
return this.inlineStack.length;
|
|
931
|
-
},
|
|
932
|
-
|
|
933
|
-
popStack: function popStack(wrapped) {
|
|
934
|
-
var inline = this.isInline(),
|
|
935
|
-
item = (inline ? this.inlineStack : this.compileStack).pop();
|
|
936
|
-
|
|
937
|
-
if (!wrapped && item instanceof Literal) {
|
|
938
|
-
return item.value;
|
|
939
|
-
} else {
|
|
940
|
-
if (!inline) {
|
|
941
|
-
/* istanbul ignore next */
|
|
942
|
-
if (!this.stackSlot) {
|
|
943
|
-
throw new _exception2['default']('Invalid stack pop');
|
|
944
|
-
}
|
|
945
|
-
this.stackSlot--;
|
|
946
|
-
}
|
|
947
|
-
return item;
|
|
948
|
-
}
|
|
949
|
-
},
|
|
950
|
-
|
|
951
|
-
topStack: function topStack() {
|
|
952
|
-
var stack = this.isInline() ? this.inlineStack : this.compileStack,
|
|
953
|
-
item = stack[stack.length - 1];
|
|
954
|
-
|
|
955
|
-
/* istanbul ignore if */
|
|
956
|
-
if (item instanceof Literal) {
|
|
957
|
-
return item.value;
|
|
958
|
-
} else {
|
|
959
|
-
return item;
|
|
960
|
-
}
|
|
961
|
-
},
|
|
962
|
-
|
|
963
|
-
contextName: function contextName(context) {
|
|
964
|
-
if (this.useDepths && context) {
|
|
965
|
-
return 'depths[' + context + ']';
|
|
966
|
-
} else {
|
|
967
|
-
return 'depth' + context;
|
|
968
|
-
}
|
|
969
|
-
},
|
|
970
|
-
|
|
971
|
-
quotedString: function quotedString(str) {
|
|
972
|
-
return this.source.quotedString(str);
|
|
973
|
-
},
|
|
974
|
-
|
|
975
|
-
objectLiteral: function objectLiteral(obj) {
|
|
976
|
-
return this.source.objectLiteral(obj);
|
|
977
|
-
},
|
|
978
|
-
|
|
979
|
-
aliasable: function aliasable(name) {
|
|
980
|
-
var ret = this.aliases[name];
|
|
981
|
-
if (ret) {
|
|
982
|
-
ret.referenceCount++;
|
|
983
|
-
return ret;
|
|
984
|
-
}
|
|
985
|
-
|
|
986
|
-
ret = this.aliases[name] = this.source.wrap(name);
|
|
987
|
-
ret.aliasable = true;
|
|
988
|
-
ret.referenceCount = 1;
|
|
989
|
-
|
|
990
|
-
return ret;
|
|
991
|
-
},
|
|
992
|
-
|
|
993
|
-
setupHelper: function setupHelper(paramSize, name, blockHelper) {
|
|
994
|
-
var params = [],
|
|
995
|
-
paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);
|
|
996
|
-
var foundHelper = this.nameLookup('helpers', name, 'helper'),
|
|
997
|
-
callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : (container.nullContext || {})');
|
|
998
|
-
|
|
999
|
-
return {
|
|
1000
|
-
params: params,
|
|
1001
|
-
paramsInit: paramsInit,
|
|
1002
|
-
name: foundHelper,
|
|
1003
|
-
callParams: [callContext].concat(params)
|
|
1004
|
-
};
|
|
1005
|
-
},
|
|
1006
|
-
|
|
1007
|
-
setupParams: function setupParams(helper, paramSize, params) {
|
|
1008
|
-
var options = {},
|
|
1009
|
-
contexts = [],
|
|
1010
|
-
types = [],
|
|
1011
|
-
ids = [],
|
|
1012
|
-
objectArgs = !params,
|
|
1013
|
-
param = undefined;
|
|
1014
|
-
|
|
1015
|
-
if (objectArgs) {
|
|
1016
|
-
params = [];
|
|
1017
|
-
}
|
|
1018
|
-
|
|
1019
|
-
options.name = this.quotedString(helper);
|
|
1020
|
-
options.hash = this.popStack();
|
|
1021
|
-
|
|
1022
|
-
if (this.trackIds) {
|
|
1023
|
-
options.hashIds = this.popStack();
|
|
1024
|
-
}
|
|
1025
|
-
if (this.stringParams) {
|
|
1026
|
-
options.hashTypes = this.popStack();
|
|
1027
|
-
options.hashContexts = this.popStack();
|
|
1028
|
-
}
|
|
1029
|
-
|
|
1030
|
-
var inverse = this.popStack(),
|
|
1031
|
-
program = this.popStack();
|
|
1032
|
-
|
|
1033
|
-
// Avoid setting fn and inverse if neither are set. This allows
|
|
1034
|
-
// helpers to do a check for `if (options.fn)`
|
|
1035
|
-
if (program || inverse) {
|
|
1036
|
-
options.fn = program || 'container.noop';
|
|
1037
|
-
options.inverse = inverse || 'container.noop';
|
|
1038
|
-
}
|
|
1039
|
-
|
|
1040
|
-
// The parameters go on to the stack in order (making sure that they are evaluated in order)
|
|
1041
|
-
// so we need to pop them off the stack in reverse order
|
|
1042
|
-
var i = paramSize;
|
|
1043
|
-
while (i--) {
|
|
1044
|
-
param = this.popStack();
|
|
1045
|
-
params[i] = param;
|
|
1046
|
-
|
|
1047
|
-
if (this.trackIds) {
|
|
1048
|
-
ids[i] = this.popStack();
|
|
1049
|
-
}
|
|
1050
|
-
if (this.stringParams) {
|
|
1051
|
-
types[i] = this.popStack();
|
|
1052
|
-
contexts[i] = this.popStack();
|
|
1053
|
-
}
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1056
|
-
if (objectArgs) {
|
|
1057
|
-
options.args = this.source.generateArray(params);
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
if (this.trackIds) {
|
|
1061
|
-
options.ids = this.source.generateArray(ids);
|
|
1062
|
-
}
|
|
1063
|
-
if (this.stringParams) {
|
|
1064
|
-
options.types = this.source.generateArray(types);
|
|
1065
|
-
options.contexts = this.source.generateArray(contexts);
|
|
1066
|
-
}
|
|
1067
|
-
|
|
1068
|
-
if (this.options.data) {
|
|
1069
|
-
options.data = 'data';
|
|
1070
|
-
}
|
|
1071
|
-
if (this.useBlockParams) {
|
|
1072
|
-
options.blockParams = 'blockParams';
|
|
1073
|
-
}
|
|
1074
|
-
return options;
|
|
1075
|
-
},
|
|
1076
|
-
|
|
1077
|
-
setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) {
|
|
1078
|
-
var options = this.setupParams(helper, paramSize, params);
|
|
1079
|
-
options = this.objectLiteral(options);
|
|
1080
|
-
if (useRegister) {
|
|
1081
|
-
this.useRegister('options');
|
|
1082
|
-
params.push('options');
|
|
1083
|
-
return ['options=', options];
|
|
1084
|
-
} else if (params) {
|
|
1085
|
-
params.push(options);
|
|
1086
|
-
return '';
|
|
1087
|
-
} else {
|
|
1088
|
-
return options;
|
|
1089
|
-
}
|
|
1090
|
-
}
|
|
1091
|
-
};
|
|
1092
|
-
|
|
1093
|
-
(function () {
|
|
1094
|
-
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(' ');
|
|
1095
|
-
|
|
1096
|
-
var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};
|
|
1097
|
-
|
|
1098
|
-
for (var i = 0, l = reservedWords.length; i < l; i++) {
|
|
1099
|
-
compilerWords[reservedWords[i]] = true;
|
|
1100
|
-
}
|
|
1101
|
-
})();
|
|
1102
|
-
|
|
1103
|
-
JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
|
|
1104
|
-
return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
|
|
1105
|
-
};
|
|
1106
|
-
|
|
1107
|
-
function strictLookup(requireTerminal, compiler, parts, type) {
|
|
1108
|
-
var stack = compiler.popStack(),
|
|
1109
|
-
i = 0,
|
|
1110
|
-
len = parts.length;
|
|
1111
|
-
if (requireTerminal) {
|
|
1112
|
-
len--;
|
|
1113
|
-
}
|
|
1114
|
-
|
|
1115
|
-
for (; i < len; i++) {
|
|
1116
|
-
stack = compiler.nameLookup(stack, parts[i], type);
|
|
1117
|
-
}
|
|
1118
|
-
|
|
1119
|
-
if (requireTerminal) {
|
|
1120
|
-
return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ')'];
|
|
1121
|
-
} else {
|
|
1122
|
-
return stack;
|
|
1123
|
-
}
|
|
1124
|
-
}
|
|
1125
|
-
|
|
1126
|
-
exports['default'] = JavaScriptCompiler;
|
|
1127
|
-
module.exports = exports['default'];
|
|
1128
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztvQkFBb0QsU0FBUzs7eUJBQ3ZDLGNBQWM7Ozs7cUJBQ2QsVUFBVTs7dUJBQ1osWUFBWTs7OztBQUVoQyxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDdEIsTUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Q0FDcEI7O0FBRUQsU0FBUyxrQkFBa0IsR0FBRyxFQUFFOztBQUVoQyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUc7OztBQUc3QixZQUFVLEVBQUUsb0JBQVMsTUFBTSxFQUFFLElBQUksY0FBYTtBQUM1QyxRQUFJLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzFELGFBQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxhQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ2pEO0dBQ0Y7QUFDRCxlQUFhLEVBQUUsdUJBQVMsSUFBSSxFQUFFO0FBQzVCLFdBQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztHQUN2RTs7QUFFRCxjQUFZLEVBQUUsd0JBQVc7QUFDdkIsUUFBTSxRQUFRLDBCQUFvQjtRQUM1QixRQUFRLEdBQUcsdUJBQWlCLFFBQVEsQ0FBQyxDQUFDO0FBQzVDLFdBQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7R0FDN0I7O0FBRUQsZ0JBQWMsRUFBRSx3QkFBUyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTs7QUFFbkQsUUFBSSxDQUFDLGVBQVEsTUFBTSxDQUFDLEVBQUU7QUFDcEIsWUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDbkI7QUFDRCxVQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDOztBQUU1QyxRQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO0FBQzdCLGFBQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ2pDLE1BQU0sSUFBSSxRQUFRLEVBQUU7Ozs7QUFJbkIsYUFBTyxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDcEMsTUFBTTtBQUNMLFlBQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQzdCLGFBQU8sTUFBTSxDQUFDO0tBQ2Y7R0FDRjs7QUFFRCxrQkFBZ0IsRUFBRSw0QkFBVztBQUMzQixXQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7R0FDOUI7OztBQUdELFNBQU8sRUFBRSxpQkFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDekQsUUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7QUFDL0IsUUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDdkIsUUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUM5QyxRQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3RDLFFBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxRQUFRLENBQUM7O0FBRTVCLFFBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFDbEMsUUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ3pCLFFBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJO0FBQ3hCLGdCQUFVLEVBQUUsRUFBRTtBQUNkLGNBQVEsRUFBRSxFQUFFO0FBQ1osa0JBQVksRUFBRSxFQUFFO0tBQ2pCLENBQUM7O0FBRUYsUUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDOztBQUVoQixRQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztBQUNuQixRQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNwQixRQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNsQixRQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzlCLFFBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLFFBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLFFBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLFFBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDOztBQUV0QixRQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFFM0MsUUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLFdBQVcsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUM3RyxRQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksV0FBVyxDQUFDLGNBQWMsQ0FBQzs7QUFFeEUsUUFBSSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU87UUFDN0IsTUFBTSxZQUFBO1FBQ04sUUFBUSxZQUFBO1FBQ1IsQ0FBQyxZQUFBO1FBQ0QsQ0FBQyxZQUFBLENBQUM7O0FBRU4sU0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsWUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFcEIsVUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUN6QyxjQUFRLEdBQUcsUUFBUSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDbEMsVUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5Qzs7O0FBR0QsUUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3ZDLFFBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7OztBQUdwQixRQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7QUFDekUsWUFBTSwyQkFBYyw4Q0FBOEMsQ0FBQyxDQUFDO0tBQ3JFOztBQUVELFFBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFO0FBQzlCLFVBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDOztBQUUxQixVQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0FBQ3BFLFVBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDOztBQUVuQyxVQUFJLFFBQVEsRUFBRTtBQUNaLFlBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7T0FDMUksTUFBTTtBQUNMLFlBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7QUFDakcsWUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUIsWUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO09BQzNDO0tBQ0YsTUFBTTtBQUNMLFVBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0tBQzdCOztBQUVELFFBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM5QyxRQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNqQixVQUFJLEdBQUcsR0FBRztBQUNSLGdCQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRTtBQUM3QixZQUFJLEVBQUUsRUFBRTtPQUNULENBQUM7O0FBRUYsVUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ25CLFdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUM3QixXQUFHLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztPQUMxQjs7cUJBRTRCLElBQUksQ0FBQyxPQUFPO1VBQXBDLFFBQVEsWUFBUixRQUFRO1VBQUUsVUFBVSxZQUFWLFVBQVU7O0FBQ3pCLFdBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNDLFlBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ2YsYUFBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixjQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNqQixlQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixlQUFHLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztXQUMxQjtTQUNGO09BQ0Y7O0FBRUQsVUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRTtBQUMvQixXQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztPQUN2QjtBQUNELFVBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDckIsV0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7T0FDcEI7QUFDRCxVQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDbEIsV0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7T0FDdEI7QUFDRCxVQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7QUFDdkIsV0FBRyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7T0FDM0I7QUFDRCxVQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQ3ZCLFdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO09BQ25COztBQUVELFVBQUksQ0FBQyxRQUFRLEVBQUU7QUFDYixXQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztBQUU1QyxZQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsR0FBRyxFQUFDLEtBQUssRUFBRSxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBQyxFQUFDLENBQUM7QUFDNUQsV0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7O0FBRTlCLFlBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtBQUNuQixhQUFHLEdBQUcsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDO0FBQzFELGFBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3pDLE1BQU07QUFDTCxhQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3RCO09BQ0YsTUFBTTtBQUNMLFdBQUcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztPQUNwQzs7QUFFRCxhQUFPLEdBQUcsQ0FBQztLQUNaLE1BQU07QUFDTCxhQUFPLEVBQUUsQ0FBQztLQUNYO0dBQ0Y7O0FBRUQsVUFBUSxFQUFFLG9CQUFXOzs7QUFHbkIsUUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDckIsUUFBSSxDQUFDLE1BQU0sR0FBRyx5QkFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hELFFBQUksQ0FBQyxVQUFVLEdBQUcseUJBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztHQUNyRDs7QUFFRCx1QkFBcUIsRUFBRSwrQkFBUyxRQUFRLEVBQUU7QUFDeEMsUUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDOztBQUV6QixRQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hELFFBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDckIscUJBQWUsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM3Qzs7Ozs7Ozs7QUFRRCxRQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDbkIsU0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFOztBQUM5QixVQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUUvQixVQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUU7QUFDbEYsdUJBQWUsSUFBSSxTQUFTLEdBQUksRUFBRSxVQUFVLEFBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQzVELFlBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztPQUN6QztLQUNGOztBQUVELFFBQUksTUFBTSxHQUFHLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDOztBQUVwRSxRQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUN6QyxZQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQzVCO0FBQ0QsUUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ2xCLFlBQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDdkI7OztBQUdELFFBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7O0FBRS9DLFFBQUksUUFBUSxFQUFFO0FBQ1osWUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs7QUFFcEIsYUFBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNyQyxNQUFNO0FBQ0wsYUFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUNsRjtHQUNGO0FBQ0QsYUFBVyxFQUFFLHFCQUFTLGVBQWUsRUFBRTtBQUNyQyxRQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7UUFDcEMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVc7UUFDOUIsV0FBVyxZQUFBO1FBRVgsVUFBVSxZQUFBO1FBQ1YsV0FBVyxZQUFBO1FBQ1gsU0FBUyxZQUFBLENBQUM7QUFDZCxRQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFDLElBQUksRUFBSztBQUN6QixVQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7QUFDdkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3RCLE1BQU07QUFDTCxxQkFBVyxHQUFHLElBQUksQ0FBQztTQUNwQjtBQUNELGlCQUFTLEdBQUcsSUFBSSxDQUFDO09BQ2xCLE1BQU07QUFDTCxZQUFJLFdBQVcsRUFBRTtBQUNmLGNBQUksQ0FBQyxVQUFVLEVBQUU7QUFDZix1QkFBVyxHQUFHLElBQUksQ0FBQztXQUNwQixNQUFNO0FBQ0wsdUJBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7V0FDbkM7QUFDRCxtQkFBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixxQkFBVyxHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDckM7O0FBRUQsa0JBQVUsR0FBRyxJQUFJLENBQUM7QUFDbEIsWUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNiLG9CQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3BCO09BQ0Y7S0FDRixDQUFDLENBQUM7O0FBR0gsUUFBSSxVQUFVLEVBQUU7QUFDZCxVQUFJLFdBQVcsRUFBRTtBQUNmLG1CQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO09BQ3BCLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRTtBQUN0QixZQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztPQUNoQztLQUNGLE1BQU07QUFDTCxxQkFBZSxJQUFJLGFBQWEsSUFBSSxXQUFXLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBLEFBQUMsQ0FBQzs7QUFFaEYsVUFBSSxXQUFXLEVBQUU7QUFDZixtQkFBVyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3hDLGlCQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO09BQ3BCLE1BQU07QUFDTCxZQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO09BQ3BDO0tBQ0Y7O0FBRUQsUUFBSSxlQUFlLEVBQUU7QUFDbkIsVUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUEsQUFBQyxDQUFDLENBQUM7S0FDekY7O0FBRUQsV0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0dBQzVCOzs7Ozs7Ozs7OztBQVdELFlBQVUsRUFBRSxvQkFBUyxJQUFJLEVBQUU7QUFDekIsUUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLDRCQUE0QixDQUFDO1FBQ2pFLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxRQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7O0FBRXRDLFFBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNoQyxVQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7O0FBRS9CLFFBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7R0FDekU7Ozs7Ozs7O0FBUUQscUJBQW1CLEVBQUUsK0JBQVc7O0FBRTlCLFFBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw0QkFBNEIsQ0FBQztRQUNqRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsUUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQzs7QUFFMUMsUUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDOztBQUVuQixRQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDOUIsVUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDOztBQUU3QixRQUFJLENBQUMsVUFBVSxDQUFDLENBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUM5QixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFDOUUsR0FBRyxDQUFDLENBQUMsQ0FBQztHQUNYOzs7Ozs7OztBQVFELGVBQWEsRUFBRSx1QkFBUyxPQUFPLEVBQUU7QUFDL0IsUUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztLQUN6QyxNQUFNO0FBQ0wsVUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztLQUNwRDs7QUFFRCxRQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztHQUMvQjs7Ozs7Ozs7Ozs7QUFXRCxRQUFNLEVBQUUsa0JBQVc7QUFDakIsUUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7QUFDbkIsVUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFDLE9BQU87ZUFBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO09BQUEsQ0FBQyxDQUFDOztBQUVsRSxVQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN2RCxNQUFNO0FBQ0wsVUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzVCLFVBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwRyxVQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO0FBQzdCLFlBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7T0FDaEY7S0FDRjtHQUNGOzs7Ozs7OztBQVFELGVBQWEsRUFBRSx5QkFBVztBQUN4QixRQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQy9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0dBQ2pGOzs7Ozs7Ozs7QUFTRCxZQUFVLEVBQUUsb0JBQVMsS0FBSyxFQUFFO0FBQzFCLFFBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0dBQzFCOzs7Ozs7OztBQVFELGFBQVcsRUFBRSx1QkFBVztBQUN0QixRQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztHQUMzRDs7Ozs7Ozs7O0FBU0QsaUJBQWUsRUFBRSx5QkFBUyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDdEQsUUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUVWLFFBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFOzs7QUFHdkQsVUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMzQyxNQUFNO0FBQ0wsVUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQ3BCOztBQUVELFFBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0dBQ3REOzs7Ozs7Ozs7QUFTRCxrQkFBZ0IsRUFBRSwwQkFBUyxZQUFZLEVBQUUsS0FBSyxFQUFFO0FBQzlDLFFBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDOztBQUUzQixRQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekUsUUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0dBQ3ZDOzs7Ozs7OztBQVFELFlBQVUsRUFBRSxvQkFBUyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUN6QyxRQUFJLENBQUMsS0FBSyxFQUFFO0FBQ1YsVUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQy9CLE1BQU07QUFDTCxVQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQzlEOztBQUVELFFBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0dBQ2xEOztBQUVELGFBQVcsRUFBRSxxQkFBUyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFOzs7OztBQUNuRCxRQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO0FBQ3JELFVBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUUsYUFBTztLQUNSOztBQUVELFFBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDdkIsV0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFOztBQUVuQixVQUFJLENBQUMsWUFBWSxDQUFDLFVBQUMsT0FBTyxFQUFLO0FBQzdCLFlBQUksTUFBTSxHQUFHLE1BQUssVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7OztBQUd0RCxZQUFJLENBQUMsS0FBSyxFQUFFO0FBQ1YsaUJBQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNoRCxNQUFNOztBQUVMLGlCQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pCO09BQ0YsQ0FBQyxDQUFDOztLQUVKO0dBQ0Y7Ozs7Ozs7OztBQVNELHVCQUFxQixFQUFFLGlDQUFXO0FBQ2hDLFFBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQ3ZHOzs7Ozs7Ozs7O0FBVUQsaUJBQWUsRUFBRSx5QkFBUyxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQ3RDLFFBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNuQixRQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7O0FBSXRCLFFBQUksSUFBSSxLQUFLLGVBQWUsRUFBRTtBQUM1QixVQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtBQUM5QixZQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO09BQ3pCLE1BQU07QUFDTCxZQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7T0FDL0I7S0FDRjtHQUNGOztBQUVELFdBQVMsRUFBRSxtQkFBUyxTQUFTLEVBQUU7QUFDN0IsUUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2pCLFVBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakI7QUFDRCxRQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7QUFDckIsVUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixVQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2pCO0FBQ0QsUUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUM7R0FDdkQ7QUFDRCxVQUFRLEVBQUUsb0JBQVc7QUFDbkIsUUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ2IsVUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzdCO0FBQ0QsUUFBSSxDQUFDLElBQUksR0FBRyxFQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUMsQ0FBQztHQUM1RDtBQUNELFNBQU8sRUFBRSxtQkFBVztBQUNsQixRQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3JCLFFBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzs7QUFFOUIsUUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2pCLFVBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN6QztBQUNELFFBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtBQUNyQixVQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQzNDOztBQUVELFFBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztHQUM1Qzs7Ozs7Ozs7QUFRRCxZQUFVLEVBQUUsb0JBQVMsTUFBTSxFQUFFO0FBQzNCLFFBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7R0FDbEQ7Ozs7Ozs7Ozs7QUFVRCxhQUFXLEVBQUUscUJBQVMsS0FBSyxFQUFFO0FBQzNCLFFBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztHQUM5Qjs7Ozs7Ozs7OztBQVVELGFBQVcsRUFBRSxxQkFBUyxJQUFJLEVBQUU7QUFDMUIsUUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO0FBQ2hCLFVBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNyRCxNQUFNO0FBQ0wsVUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzdCO0dBQ0Y7Ozs7Ozs7OztBQVNELG1CQUFpQixFQUFBLDJCQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUU7QUFDakMsUUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztRQUNqRSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7O0FBRXBELFFBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQ25CLE9BQU8sRUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFDdkYsU0FBUyxDQUNWLENBQUMsQ0FBQztHQUNKOzs7Ozs7Ozs7OztBQVdELGNBQVksRUFBRSxzQkFBUyxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUNoRCxRQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQzNCLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUM7UUFDMUMsTUFBTSxHQUFHLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDOztBQUVuRCxRQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDN0MsUUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQ3hCLFlBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsVUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzs7QUFFakIsUUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0dBQ3hFOzs7Ozs7Ozs7QUFTRCxtQkFBaUIsRUFBRSwyQkFBUyxTQUFTLEVBQUUsSUFBSSxFQUFFO0FBQzNDLFFBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DLFFBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7R0FDN0U7Ozs7Ozs7Ozs7Ozs7O0FBY0QsaUJBQWUsRUFBRSx5QkFBUyxJQUFJLEVBQUUsVUFBVSxFQUFFO0FBQzFDLFFBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7O0FBRTNCLFFBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7QUFFaEMsUUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2pCLFFBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQzs7QUFFbkQsUUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7O0FBRTlFLFFBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyRSxRQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7QUFDeEIsWUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUN6QixZQUFNLENBQUMsSUFBSSxDQUNULHNCQUFzQixFQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLENBQ3hDLENBQUM7S0FDSDs7QUFFRCxRQUFJLENBQUMsSUFBSSxDQUFDLENBQ04sR0FBRyxFQUFFLE1BQU0sRUFDVixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUcsSUFBSSxFQUMzRCxxQkFBcUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsYUFBYSxDQUMvRSxDQUFDLENBQUM7R0FDSjs7Ozs7Ozs7O0FBU0QsZUFBYSxFQUFFLHVCQUFTLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0FBQy9DLFFBQUksTUFBTSxHQUFHLEVBQUU7UUFDWCxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDOztBQUVoRCxRQUFJLFNBQVMsRUFBRTtBQUNiLFVBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDdkIsYUFBTyxPQUFPLENBQUMsSUFBSSxDQUFDO0tBQ3JCOztBQUVELFFBQUksTUFBTSxFQUFFO0FBQ1YsYUFBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3pDO0FBQ0QsV0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDNUIsV0FBTyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDOUIsV0FBTyxDQUFDLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQzs7QUFFNUMsUUFBSSxDQUFDLFNBQVMsRUFBRTtBQUNkLFlBQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDOUQsTUFBTTtBQUNMLFlBQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdEI7O0FBRUQsUUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtBQUN2QixhQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztLQUMzQjtBQUNELFdBQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RDLFVBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7O0FBRXJCLFFBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMseUJBQXlCLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7R0FDNUU7Ozs7Ozs7O0FBUUQsY0FBWSxFQUFFLHNCQUFTLEdBQUcsRUFBRTtBQUMxQixRQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ3ZCLE9BQU8sWUFBQTtRQUNQLElBQUksWUFBQTtRQUNKLEVBQUUsWUFBQSxDQUFDOztBQUVQLFFBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNqQixRQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQ3RCO0FBQ0QsUUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO0FBQ3JCLFVBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDdkIsYUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUMzQjs7QUFFRCxRQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3JCLFFBQUksT0FBTyxFQUFFO0FBQ1gsVUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDOUI7QUFDRCxRQUFJLElBQUksRUFBRTtBQUNSLFVBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQ3hCO0FBQ0QsUUFBSSxFQUFFLEVBQUU7QUFDTixVQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUNwQjtBQUNELFFBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0dBQzFCOztBQUVELFFBQU0sRUFBRSxnQkFBUyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUNsQyxRQUFJLElBQUksS0FBSyxZQUFZLEVBQUU7QUFDekIsVUFBSSxDQUFDLGdCQUFnQixDQUNqQixjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUNqRCxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQSxBQUFDLENBQUMsQ0FBQztLQUMzRCxNQUFNLElBQUksSUFBSSxLQUFLLGdCQUFnQixFQUFFO0FBQ3BDLFVBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkIsTUFBTSxJQUFJLElBQUksS0FBSyxlQUFlLEVBQUU7QUFDbkMsVUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQy9CLE1BQU07QUFDTCxVQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7R0FDRjs7OztBQUlELFVBQVEsRUFBRSxrQkFBa0I7O0FBRTVCLGlCQUFlLEVBQUUseUJBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUM5QyxRQUFJLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUTtRQUFFLEtBQUssWUFBQTtRQUFFLFFBQVEsWUFBQSxDQUFDOztBQUVyRCxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQy9DLFdBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsY0FBUSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDOztBQUUvQixVQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRWhELFVBQUksUUFBUSxJQUFJLElBQUksRUFBRTtBQUNwQixZQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0IsWUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ3pDLGFBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3BCLGFBQUssQ0FBQyxJQUFJLEdBQUcsU0FBUyxHQUFHLEtBQUssQ0FBQztBQUMvQixZQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRyxZQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO0FBQ3JELFlBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQzs7QUFFekMsWUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDdEQsWUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUM7QUFDckUsYUFBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ2pDLGFBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztPQUM1QyxNQUFNO0FBQ0wsYUFBSyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQzdCLGFBQUssQ0FBQyxJQUFJLEdBQUcsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7O0FBRXhDLFlBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQ3RELFlBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDO09BQ3RFO0tBQ0Y7R0FDRjtBQUNELHNCQUFvQixFQUFFLDhCQUFTLEtBQUssRUFBRTtBQUNwQyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDcEUsVUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsVUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM1QyxlQUFPLFdBQVcsQ0FBQztPQUNwQjtLQUNGO0dBQ0Y7O0FBRUQsbUJBQWlCLEVBQUUsMkJBQVMsSUFBSSxFQUFFO0FBQ2hDLFFBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QyxhQUFhLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7O0FBRTdELFFBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ3pDLG1CQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ25DO0FBQ0QsUUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ2xCLG1CQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQzlCOztBQUVELFdBQU8sb0JBQW9CLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7R0FDOUQ7O0FBRUQsYUFBVyxFQUFFLHFCQUFTLElBQUksRUFBRTtBQUMxQixRQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN6QixVQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUM1QixVQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDaEM7R0FDRjs7QUFFRCxNQUFJLEVBQUUsY0FBUyxJQUFJLEVBQUU7QUFDbkIsUUFBSSxFQUFFLElBQUksWUFBWSxPQUFPLENBQUEsQUFBQyxFQUFFO0FBQzlCLFVBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvQjs7QUFFRCxRQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixXQUFPLElBQUksQ0FBQztHQUNiOztBQUVELGtCQUFnQixFQUFFLDBCQUFTLElBQUksRUFBRTtBQUMvQixRQUFJLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7R0FDOUI7O0FBRUQsWUFBVSxFQUFFLG9CQUFTLE1BQU0sRUFBRTtBQUMzQixRQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7QUFDdkIsVUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDOUYsVUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7S0FDakM7O0FBRUQsUUFBSSxNQUFNLEVBQUU7QUFDVixVQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMxQjtHQUNGOztBQUVELGNBQVksRUFBRSxzQkFBUyxRQUFRLEVBQUU7QUFDL0IsUUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDZCxLQUFLLFlBQUE7UUFDTCxZQUFZLFlBQUE7UUFDWixXQUFXLFlBQUEsQ0FBQzs7O0FBR2hCLFFBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7QUFDcEIsWUFBTSwyQkFBYyw0QkFBNEIsQ0FBQyxDQUFDO0tBQ25EOzs7QUFHRCxRQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUU5QixRQUFJLEdBQUcsWUFBWSxPQUFPLEVBQUU7O0FBRTFCLFdBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQixZQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEIsaUJBQVcsR0FBRyxJQUFJLENBQUM7S0FDcEIsTUFBTTs7QUFFTCxrQkFBWSxHQUFHLElBQUksQ0FBQztBQUNwQixVQUFJLEtBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7O0FBRTVCLFlBQU0sR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbEQsV0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzs7QUFFdEMsUUFBSSxDQUFDLFdBQVcsRUFBRTtBQUNoQixVQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDakI7QUFDRCxRQUFJLFlBQVksRUFBRTtBQUNoQixVQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7S0FDbEI7QUFDRCxRQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7R0FDckM7O0FBRUQsV0FBUyxFQUFFLHFCQUFXO0FBQ3BCLFFBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNqQixRQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7QUFBRSxVQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQUU7QUFDOUYsV0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7R0FDNUI7QUFDRCxjQUFZLEVBQUUsd0JBQVc7QUFDdkIsV0FBTyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztHQUNqQztBQUNELGFBQVcsRUFBRSx1QkFBVztBQUN0QixRQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQ25DLFFBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdEQsVUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUUzQixVQUFJLEtBQUssWUFBWSxPQUFPLEVBQUU7QUFDNUIsWUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7T0FDL0IsTUFBTTtBQUNMLFlBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUM3QixZQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxZQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztPQUMvQjtLQUNGO0dBQ0Y7QUFDRCxVQUFRLEVBQUUsb0JBQVc7QUFDbkIsV0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztHQUNoQzs7QUFFRCxVQUFRLEVBQUUsa0JBQVMsT0FBTyxFQUFFO0FBQzFCLFFBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDeEIsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQSxDQUFFLEdBQUcsRUFBRSxDQUFDOztBQUVqRSxRQUFJLENBQUMsT0FBTyxJQUFLLElBQUksWUFBWSxPQUFPLEFBQUMsRUFBRTtBQUN6QyxhQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDbkIsTUFBTTtBQUNMLFVBQUksQ0FBQyxNQUFNLEVBQUU7O0FBRVgsWUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDbkIsZ0JBQU0sMkJBQWMsbUJBQW1CLENBQUMsQ0FBQztTQUMxQztBQUNELFlBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztPQUNsQjtBQUNELGFBQU8sSUFBSSxDQUFDO0tBQ2I7R0FDRjs7QUFFRCxVQUFRLEVBQUUsb0JBQVc7QUFDbkIsUUFBSSxLQUFLLEdBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQUFBQztRQUNoRSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7OztBQUduQyxRQUFJLElBQUksWUFBWSxPQUFPLEVBQUU7QUFDM0IsYUFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQ25CLE1BQU07QUFDTCxhQUFPLElBQUksQ0FBQztLQUNiO0dBQ0Y7O0FBRUQsYUFBVyxFQUFFLHFCQUFTLE9BQU8sRUFBRTtBQUM3QixRQUFJLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxFQUFFO0FBQzdCLGFBQU8sU0FBUyxHQUFHLE9BQU8sR0FBRyxHQUFHLENBQUM7S0FDbEMsTUFBTTtBQUNMLGFBQU8sT0FBTyxHQUFHLE9BQU8sQ0FBQztLQUMxQjtHQUNGOztBQUVELGNBQVksRUFBRSxzQkFBUyxHQUFHLEVBQUU7QUFDMUIsV0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztHQUN0Qzs7QUFFRCxlQUFhLEVBQUUsdUJBQVMsR0FBRyxFQUFFO0FBQzNCLFdBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7R0FDdkM7O0FBRUQsV0FBUyxFQUFFLG1CQUFTLElBQUksRUFBRTtBQUN4QixRQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLFFBQUksR0FBRyxFQUFFO0FBQ1AsU0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JCLGFBQU8sR0FBRyxDQUFDO0tBQ1o7O0FBRUQsT0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEQsT0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDckIsT0FBRyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7O0FBRXZCLFdBQU8sR0FBRyxDQUFDO0dBQ1o7O0FBRUQsYUFBVyxFQUFFLHFCQUFTLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ2xELFFBQUksTUFBTSxHQUFHLEVBQUU7UUFDWCxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM1RSxRQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO1FBQ3hELFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLG1CQUFjLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHNDQUFtQyxDQUFDOztBQUU1SCxXQUFPO0FBQ0wsWUFBTSxFQUFFLE1BQU07QUFDZCxnQkFBVSxFQUFFLFVBQVU7QUFDdEIsVUFBSSxFQUFFLFdBQVc7QUFDakIsZ0JBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7S0FDekMsQ0FBQztHQUNIOztBQUVELGFBQVcsRUFBRSxxQkFBUyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRTtBQUMvQyxRQUFJLE9BQU8sR0FBRyxFQUFFO1FBQ1osUUFBUSxHQUFHLEVBQUU7UUFDYixLQUFLLEdBQUcsRUFBRTtRQUNWLEdBQUcsR0FBRyxFQUFFO1FBQ1IsVUFBVSxHQUFHLENBQUMsTUFBTTtRQUNwQixLQUFLLFlBQUEsQ0FBQzs7QUFFVixRQUFJLFVBQVUsRUFBRTtBQUNkLFlBQU0sR0FBRyxFQUFFLENBQUM7S0FDYjs7QUFFRCxXQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekMsV0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7O0FBRS9CLFFBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNqQixhQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUNuQztBQUNELFFBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtBQUNyQixhQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNwQyxhQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUN4Qzs7QUFFRCxRQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Ozs7QUFJOUIsUUFBSSxPQUFPLElBQUksT0FBTyxFQUFFO0FBQ3RCLGFBQU8sQ0FBQyxFQUFFLEdBQUcsT0FBTyxJQUFJLGdCQUFnQixDQUFDO0FBQ3pDLGFBQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLGdCQUFnQixDQUFDO0tBQy9DOzs7O0FBSUQsUUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ2xCLFdBQU8sQ0FBQyxFQUFFLEVBQUU7QUFDVixXQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3hCLFlBQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWxCLFVBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNqQixXQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO09BQzFCO0FBQ0QsVUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO0FBQ3JCLGFBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDM0IsZ0JBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7T0FDL0I7S0FDRjs7QUFFRCxRQUFJLFVBQVUsRUFBRTtBQUNkLGFBQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDbEQ7O0FBRUQsUUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2pCLGFBQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDOUM7QUFDRCxRQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7QUFDckIsYUFBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqRCxhQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3hEOztBQUVELFFBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDckIsYUFBTyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7S0FDdkI7QUFDRCxRQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7QUFDdkIsYUFBTyxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUM7S0FDckM7QUFDRCxXQUFPLE9BQU8sQ0FBQztHQUNoQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTtBQUNoRSxRQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDMUQsV0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEMsUUFBSSxXQUFXLEVBQUU7QUFDZixVQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVCLFlBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkIsYUFBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUM5QixNQUFNLElBQUksTUFBTSxFQUFFO0FBQ2pCLFlBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckIsYUFBTyxFQUFFLENBQUM7S0FDWCxNQUFNO0FBQ0wsYUFBTyxPQUFPLENBQUM7S0FDaEI7R0FDRjtDQUNGLENBQUM7O0FBR0YsQUFBQyxDQUFBLFlBQVc7QUFDVixNQUFNLGFBQWEsR0FBRyxDQUNwQixvQkFBb0IsR0FDcEIsMkJBQTJCLEdBQzNCLHlCQUF5QixHQUN6Qiw4QkFBOEIsR0FDOUIsbUJBQW1CLEdBQ25CLGdCQUFnQixHQUNoQix1QkFBdUIsR0FDdkIsMEJBQTBCLEdBQzFCLGtDQUFrQyxHQUNsQywwQkFBMEIsR0FDMUIsaUNBQWlDLEdBQ2pDLDZCQUE2QixHQUM3QiwrQkFBK0IsR0FDL0IseUNBQXlDLEdBQ3pDLHVDQUF1QyxHQUN2QyxrQkFBa0IsQ0FBQSxDQUNsQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7O0FBRWIsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQzs7QUFFN0QsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwRCxpQkFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztHQUN4QztDQUNGLENBQUEsRUFBRSxDQUFFOztBQUVMLGtCQUFrQixDQUFDLDZCQUE2QixHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQ2hFLFNBQU8sQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQUFBQyw0QkFBNEIsQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDOUYsQ0FBQzs7QUFFRixTQUFTLFlBQVksQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7QUFDNUQsTUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRTtNQUMzQixDQUFDLEdBQUcsQ0FBQztNQUNMLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3ZCLE1BQUksZUFBZSxFQUFFO0FBQ25CLE9BQUcsRUFBRSxDQUFDO0dBQ1A7O0FBRUQsU0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ25CLFNBQUssR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7R0FDcEQ7O0FBRUQsTUFBSSxlQUFlLEVBQUU7QUFDbkIsV0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0dBQ3pHLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O3FCQUVjLGtCQUFrQiIsImZpbGUiOiJqYXZhc2NyaXB0LWNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09NUElMRVJfUkVWSVNJT04sIFJFVklTSU9OX0NIQU5HRVMgfSBmcm9tICcuLi9iYXNlJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcbmltcG9ydCB7aXNBcnJheX0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IENvZGVHZW4gZnJvbSAnLi9jb2RlLWdlbic7XG5cbmZ1bmN0aW9uIExpdGVyYWwodmFsdWUpIHtcbiAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBKYXZhU2NyaXB0Q29tcGlsZXIoKSB7fVxuXG5KYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlID0ge1xuICAvLyBQVUJMSUMgQVBJOiBZb3UgY2FuIG92ZXJyaWRlIHRoZXNlIG1ldGhvZHMgaW4gYSBzdWJjbGFzcyB0byBwcm92aWRlXG4gIC8vIGFsdGVybmF0aXZlIGNvbXBpbGVkIGZvcm1zIGZvciBuYW1lIGxvb2t1cCBhbmQgYnVmZmVyaW5nIHNlbWFudGljc1xuICBuYW1lTG9va3VwOiBmdW5jdGlvbihwYXJlbnQsIG5hbWUvKiAsIHR5cGUqLykge1xuICAgIGlmIChKYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUobmFtZSkpIHtcbiAgICAgIHJldHVybiBbcGFyZW50LCAnLicsIG5hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3BhcmVudCwgJ1snLCBKU09OLnN0cmluZ2lmeShuYW1lKSwgJ10nXTtcbiAgICB9XG4gIH0sXG4gIGRlcHRoZWRMb29rdXA6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICByZXR1cm4gW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubG9va3VwJyksICcoZGVwdGhzLCBcIicsIG5hbWUsICdcIiknXTtcbiAgfSxcblxuICBjb21waWxlckluZm86IGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHJldmlzaW9uID0gQ09NUElMRVJfUkVWSVNJT04sXG4gICAgICAgICAgdmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW3JldmlzaW9uXTtcbiAgICByZXR1cm4gW3JldmlzaW9uLCB2ZXJzaW9uc107XG4gIH0sXG5cbiAgYXBwZW5kVG9CdWZmZXI6IGZ1bmN0aW9uKHNvdXJjZSwgbG9jYXRpb24sIGV4cGxpY2l0KSB7XG4gICAgLy8gRm9yY2UgYSBzb3VyY2UgYXMgdGhpcyBzaW1wbGlmaWVzIHRoZSBtZXJnZSBsb2dpYy5cbiAgICBpZiAoIWlzQXJyYXkoc291cmNlKSkge1xuICAgICAgc291cmNlID0gW3NvdXJjZV07XG4gICAgfVxuICAgIHNvdXJjZSA9IHRoaXMuc291cmNlLndyYXAoc291cmNlLCBsb2NhdGlvbik7XG5cbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSkge1xuICAgICAgcmV0dXJuIFsncmV0dXJuICcsIHNvdXJjZSwgJzsnXTtcbiAgICB9IGVsc2UgaWYgKGV4cGxpY2l0KSB7XG4gICAgICAvLyBUaGlzIGlzIGEgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIG9wZXJhdGlvbiBvY2N1cnMgYXMgYSBjaGlsZCBvZiBhbm90aGVyXG4gICAgICAvLyBjb25zdHJ1Y3QsIGdlbmVyYWxseSBicmFjZXMuIFdlIGhhdmUgdG8gZXhwbGljaXRseSBvdXRwdXQgdGhlc2UgYnVmZmVyXG4gICAgICAvLyBvcGVyYXRpb25zIHRvIGVuc3VyZSB0aGF0IHRoZSBlbWl0dGVkIGNvZGUgZ29lcyBpbiB0aGUgY29ycmVjdCBsb2NhdGlvbi5cbiAgICAgIHJldHVybiBbJ2J1ZmZlciArPSAnLCBzb3VyY2UsICc7J107XG4gICAgfSBlbHNlIHtcbiAgICAgIHNvdXJjZS5hcHBlbmRUb0J1ZmZlciA9IHRydWU7XG4gICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgfSxcblxuICBpbml0aWFsaXplQnVmZmVyOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZWRTdHJpbmcoJycpO1xuICB9LFxuICAvLyBFTkQgUFVCTElDIEFQSVxuXG4gIGNvbXBpbGU6IGZ1bmN0aW9uKGVudmlyb25tZW50LCBvcHRpb25zLCBjb250ZXh0LCBhc09iamVjdCkge1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuc3RyaW5nUGFyYW1zID0gdGhpcy5vcHRpb25zLnN0cmluZ1BhcmFtcztcbiAgICB0aGlzLnRyYWNrSWRzID0gdGhpcy5vcHRpb25zLnRyYWNrSWRzO1xuICAgIHRoaXMucHJlY29tcGlsZSA9ICFhc09iamVjdDtcblxuICAgIHRoaXMubmFtZSA9IHRoaXMuZW52aXJvbm1lbnQubmFtZTtcbiAgICB0aGlzLmlzQ2hpbGQgPSAhIWNvbnRleHQ7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dCB8fCB7XG4gICAgICBkZWNvcmF0b3JzOiBbXSxcbiAgICAgIHByb2dyYW1zOiBbXSxcbiAgICAgIGVudmlyb25tZW50czogW11cbiAgICB9O1xuXG4gICAgdGhpcy5wcmVhbWJsZSgpO1xuXG4gICAgdGhpcy5zdGFja1Nsb3QgPSAwO1xuICAgIHRoaXMuc3RhY2tWYXJzID0gW107XG4gICAgdGhpcy5hbGlhc2VzID0ge307XG4gICAgdGhpcy5yZWdpc3RlcnMgPSB7IGxpc3Q6IFtdIH07XG4gICAgdGhpcy5oYXNoZXMgPSBbXTtcbiAgICB0aGlzLmNvbXBpbGVTdGFjayA9IFtdO1xuICAgIHRoaXMuaW5saW5lU3RhY2sgPSBbXTtcbiAgICB0aGlzLmJsb2NrUGFyYW1zID0gW107XG5cbiAgICB0aGlzLmNvbXBpbGVDaGlsZHJlbihlbnZpcm9ubWVudCwgb3B0aW9ucyk7XG5cbiAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGVudmlyb25tZW50LnVzZURlcHRocyB8fCBlbnZpcm9ubWVudC51c2VEZWNvcmF0b3JzIHx8IHRoaXMub3B0aW9ucy5jb21wYXQ7XG4gICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgZW52aXJvbm1lbnQudXNlQmxvY2tQYXJhbXM7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IGVudmlyb25tZW50Lm9wY29kZXMsXG4gICAgICAgIG9wY29kZSxcbiAgICAgICAgZmlyc3RMb2MsXG4gICAgICAgIGksXG4gICAgICAgIGw7XG5cbiAgICBmb3IgKGkgPSAwLCBsID0gb3Bjb2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIG9wY29kZSA9IG9wY29kZXNbaV07XG5cbiAgICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IG9wY29kZS5sb2M7XG4gICAgICBmaXJzdExvYyA9IGZpcnN0TG9jIHx8IG9wY29kZS5sb2M7XG4gICAgICB0aGlzW29wY29kZS5vcGNvZGVdLmFwcGx5KHRoaXMsIG9wY29kZS5hcmdzKTtcbiAgICB9XG5cbiAgICAvLyBGbHVzaCBhbnkgdHJhaWxpbmcgY29udGVudCB0aGF0IG1pZ2h0IGJlIHBlbmRpbmcuXG4gICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uID0gZmlyc3RMb2M7XG4gICAgdGhpcy5wdXNoU291cmNlKCcnKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHRoaXMuc3RhY2tTbG90IHx8IHRoaXMuaW5saW5lU3RhY2subGVuZ3RoIHx8IHRoaXMuY29tcGlsZVN0YWNrLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQ29tcGlsZSBjb21wbGV0ZWQgd2l0aCBjb250ZW50IGxlZnQgb24gc3RhY2snKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGVjb3JhdG9ycy5pc0VtcHR5KCkpIHtcbiAgICAgIHRoaXMudXNlRGVjb3JhdG9ycyA9IHRydWU7XG5cbiAgICAgIHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCd2YXIgZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5kZWNvcmF0b3JzO1xcbicpO1xuICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ3JldHVybiBmbjsnKTtcblxuICAgICAgaWYgKGFzT2JqZWN0KSB7XG4gICAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IEZ1bmN0aW9uLmFwcGx5KHRoaXMsIFsnZm4nLCAncHJvcHMnLCAnY29udGFpbmVyJywgJ2RlcHRoMCcsICdkYXRhJywgJ2Jsb2NrUGFyYW1zJywgJ2RlcHRocycsIHRoaXMuZGVjb3JhdG9ycy5tZXJnZSgpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZCgnZnVuY3Rpb24oZm4sIHByb3BzLCBjb250YWluZXIsIGRlcHRoMCwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xcbicpO1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMucHVzaCgnfVxcbicpO1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMgPSB0aGlzLmRlY29yYXRvcnMubWVyZ2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCBmbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb25Db250ZXh0KGFzT2JqZWN0KTtcbiAgICBpZiAoIXRoaXMuaXNDaGlsZCkge1xuICAgICAgbGV0IHJldCA9IHtcbiAgICAgICAgY29tcGlsZXI6IHRoaXMuY29tcGlsZXJJbmZvKCksXG4gICAgICAgIG1haW46IGZuXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5kZWNvcmF0b3JzKSB7XG4gICAgICAgIHJldC5tYWluX2QgPSB0aGlzLmRlY29yYXRvcnM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2FtZWxjYXNlXG4gICAgICAgIHJldC51c2VEZWNvcmF0b3JzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IHtwcm9ncmFtcywgZGVjb3JhdG9yc30gPSB0aGlzLmNvbnRleHQ7XG4gICAgICBmb3IgKGkgPSAwLCBsID0gcHJvZ3JhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChwcm9ncmFtc1tpXSkge1xuICAgICAgICAgIHJldFtpXSA9IHByb2dyYW1zW2ldO1xuICAgICAgICAgIGlmIChkZWNvcmF0b3JzW2ldKSB7XG4gICAgICAgICAgICByZXRbaSArICdfZCddID0gZGVjb3JhdG9yc1tpXTtcbiAgICAgICAgICAgIHJldC51c2VEZWNvcmF0b3JzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQudXNlUGFydGlhbCkge1xuICAgICAgICByZXQudXNlUGFydGlhbCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHtcbiAgICAgICAgcmV0LnVzZURhdGEgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7XG4gICAgICAgIHJldC51c2VEZXB0aHMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHtcbiAgICAgICAgcmV0LnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7XG4gICAgICAgIHJldC5jb21wYXQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWFzT2JqZWN0KSB7XG4gICAgICAgIHJldC5jb21waWxlciA9IEpTT04uc3RyaW5naWZ5KHJldC5jb21waWxlcik7XG5cbiAgICAgICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uID0ge3N0YXJ0OiB7bGluZTogMSwgY29sdW1uOiAwfX07XG4gICAgICAgIHJldCA9IHRoaXMub2JqZWN0TGl0ZXJhbChyZXQpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnNyY05hbWUpIHtcbiAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmdXaXRoU291cmNlTWFwKHtmaWxlOiBvcHRpb25zLmRlc3ROYW1lfSk7XG4gICAgICAgICAgcmV0Lm1hcCA9IHJldC5tYXAgJiYgcmV0Lm1hcC50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldCA9IHJldC50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXQuY29tcGlsZXJPcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZm47XG4gICAgfVxuICB9LFxuXG4gIHByZWFtYmxlOiBmdW5jdGlvbigpIHtcbiAgICAvLyB0cmFjayB0aGUgbGFzdCBjb250ZXh0IHB1c2hlZCBpbnRvIHBsYWNlIHRvIGFsbG93IHNraXBwaW5nIHRoZVxuICAgIC8vIGdldENvbnRleHQgb3Bjb2RlIHdoZW4gaXQgd291bGQgYmUgYSBub29wXG4gICAgdGhpcy5sYXN0Q29udGV4dCA9IDA7XG4gICAgdGhpcy5zb3VyY2UgPSBuZXcgQ29kZUdlbih0aGlzLm9wdGlvbnMuc3JjTmFtZSk7XG4gICAgdGhpcy5kZWNvcmF0b3JzID0gbmV3IENvZGVHZW4odGhpcy5vcHRpb25zLnNyY05hbWUpO1xuICB9LFxuXG4gIGNyZWF0ZUZ1bmN0aW9uQ29udGV4dDogZnVuY3Rpb24oYXNPYmplY3QpIHtcbiAgICBsZXQgdmFyRGVjbGFyYXRpb25zID0gJyc7XG5cbiAgICBsZXQgbG9jYWxzID0gdGhpcy5zdGFja1ZhcnMuY29uY2F0KHRoaXMucmVnaXN0ZXJzLmxpc3QpO1xuICAgIGlmIChsb2NhbHMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsICcgKyBsb2NhbHMuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0ZSBtaW5pbWl6ZXIgYWxpYXMgbWFwcGluZ3NcbiAgICAvL1xuICAgIC8vIFdoZW4gdXNpbmcgdHJ1ZSBTb3VyY2VOb2RlcywgdGhpcyB3aWxsIHVwZGF0ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgZ2l2ZW4gYWxpYXNcbiAgICAvLyBhcyB0aGUgc291cmNlIG5vZGVzIGFyZSByZXVzZWQgaW4gc2l0dS4gRm9yIHRoZSBub24tc291cmNlIG5vZGUgY29tcGlsYXRpb24gbW9kZSxcbiAgICAvLyBhbGlhc2VzIHdpbGwgbm90IGJlIHVzZWQsIGJ1dCB0aGlzIGNhc2UgaXMgYWxyZWFkeSBiZWluZyBydW4gb24gdGhlIGNsaWVudCBhbmRcbiAgICAvLyB3ZSBhcmVuJ3QgY29uY2VybiBhYm91dCBtaW5pbWl6aW5nIHRoZSB0ZW1wbGF0ZSBzaXplLlxuICAgIGxldCBhbGlhc0NvdW50ID0gMDtcbiAgICBmb3IgKGxldCBhbGlhcyBpbiB0aGlzLmFsaWFzZXMpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgIGxldCBub2RlID0gdGhpcy5hbGlhc2VzW2FsaWFzXTtcblxuICAgICAgaWYgKHRoaXMuYWxpYXNlcy5oYXNPd25Qcm9wZXJ0eShhbGlhcykgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLnJlZmVyZW5jZUNvdW50ID4gMSkge1xuICAgICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgYWxpYXMnICsgKCsrYWxpYXNDb3VudCkgKyAnPScgKyBhbGlhcztcbiAgICAgICAgbm9kZS5jaGlsZHJlblswXSA9ICdhbGlhcycgKyBhbGlhc0NvdW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwYXJhbXMgPSBbJ2NvbnRhaW5lcicsICdkZXB0aDAnLCAnaGVscGVycycsICdwYXJ0aWFscycsICdkYXRhJ107XG5cbiAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcyB8fCB0aGlzLnVzZURlcHRocykge1xuICAgICAgcGFyYW1zLnB1c2goJ2Jsb2NrUGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZURlcHRocykge1xuICAgICAgcGFyYW1zLnB1c2goJ2RlcHRocycpO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gYSBzZWNvbmQgcGFzcyBvdmVyIHRoZSBvdXRwdXQgdG8gbWVyZ2UgY29udGVudCB3aGVuIHBvc3NpYmxlXG4gICAgbGV0IHNvdXJjZSA9IHRoaXMubWVyZ2VTb3VyY2UodmFyRGVjbGFyYXRpb25zKTtcblxuICAgIGlmIChhc09iamVjdCkge1xuICAgICAgcGFyYW1zLnB1c2goc291cmNlKTtcblxuICAgICAgcmV0dXJuIEZ1bmN0aW9uLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNvdXJjZS53cmFwKFsnZnVuY3Rpb24oJywgcGFyYW1zLmpvaW4oJywnKSwgJykge1xcbiAgJywgc291cmNlLCAnfSddKTtcbiAgICB9XG4gIH0sXG4gIG1lcmdlU291cmNlOiBmdW5jdGlvbih2YXJEZWNsYXJhdGlvbnMpIHtcbiAgICBsZXQgaXNTaW1wbGUgPSB0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlLFxuICAgICAgICBhcHBlbmRPbmx5ID0gIXRoaXMuZm9yY2VCdWZmZXIsXG4gICAgICAgIGFwcGVuZEZpcnN0LFxuXG4gICAgICAgIHNvdXJjZVNlZW4sXG4gICAgICAgIGJ1ZmZlclN0YXJ0LFxuICAgICAgICBidWZmZXJFbmQ7XG4gICAgdGhpcy5zb3VyY2UuZWFjaCgobGluZSkgPT4ge1xuICAgICAgaWYgKGxpbmUuYXBwZW5kVG9CdWZmZXIpIHtcbiAgICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7XG4gICAgICAgICAgbGluZS5wcmVwZW5kKCcgICsgJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVmZmVyU3RhcnQgPSBsaW5lO1xuICAgICAgICB9XG4gICAgICAgIGJ1ZmZlckVuZCA9IGxpbmU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYnVmZmVyU3RhcnQpIHtcbiAgICAgICAgICBpZiAoIXNvdXJjZVNlZW4pIHtcbiAgICAgICAgICAgIGFwcGVuZEZpcnN0ID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgnYnVmZmVyICs9ICcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7XG4gICAgICAgICAgYnVmZmVyU3RhcnQgPSBidWZmZXJFbmQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBzb3VyY2VTZWVuID0gdHJ1ZTtcbiAgICAgICAgaWYgKCFpc1NpbXBsZSkge1xuICAgICAgICAgIGFwcGVuZE9ubHkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG5cbiAgICBpZiAoYXBwZW5kT25seSkge1xuICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7XG4gICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ3JldHVybiAnKTtcbiAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpO1xuICAgICAgfSBlbHNlIGlmICghc291cmNlU2Vlbikge1xuICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKCdyZXR1cm4gXCJcIjsnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsIGJ1ZmZlciA9ICcgKyAoYXBwZW5kRmlyc3QgPyAnJyA6IHRoaXMuaW5pdGlhbGl6ZUJ1ZmZlcigpKTtcblxuICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7XG4gICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ3JldHVybiBidWZmZXIgKyAnKTtcbiAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zb3VyY2UucHVzaCgncmV0dXJuIGJ1ZmZlcjsnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFyRGVjbGFyYXRpb25zKSB7XG4gICAgICB0aGlzLnNvdXJjZS5wcmVwZW5kKCd2YXIgJyArIHZhckRlY2xhcmF0aW9ucy5zdWJzdHJpbmcoMikgKyAoYXBwZW5kRmlyc3QgPyAnJyA6ICc7XFxuJykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNvdXJjZS5tZXJnZSgpO1xuICB9LFxuXG4gIC8vIFtibG9ja1ZhbHVlXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZVxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJldHVybiB2YWx1ZSBvZiBibG9ja0hlbHBlck1pc3NpbmdcbiAgLy9cbiAgLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBvcGNvZGUgaXMgdG8gdGFrZSBhIGJsb2NrIG9mIHRoZSBmb3JtXG4gIC8vIGB7eyN0aGlzLmZvb319Li4ue3svdGhpcy5mb299fWAsIHJlc29sdmUgdGhlIHZhbHVlIG9mIGBmb29gLCBhbmRcbiAgLy8gcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgd2l0aCB0aGUgcmVzdWx0IG9mIHByb3Blcmx5XG4gIC8vIGludm9raW5nIGJsb2NrSGVscGVyTWlzc2luZy5cbiAgYmxvY2tWYWx1ZTogZnVuY3Rpb24obmFtZSkge1xuICAgIGxldCBibG9ja0hlbHBlck1pc3NpbmcgPSB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmcnKSxcbiAgICAgICAgcGFyYW1zID0gW3RoaXMuY29udGV4dE5hbWUoMCldO1xuICAgIHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5hbWUsIDAsIHBhcmFtcyk7XG5cbiAgICBsZXQgYmxvY2tOYW1lID0gdGhpcy5wb3BTdGFjaygpO1xuICAgIHBhcmFtcy5zcGxpY2UoMSwgMCwgYmxvY2tOYW1lKTtcblxuICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYmxvY2tIZWxwZXJNaXNzaW5nLCAnY2FsbCcsIHBhcmFtcykpO1xuICB9LFxuXG4gIC8vIFthbWJpZ3VvdXNCbG9ja1ZhbHVlXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZVxuICAvLyBDb21waWxlciB2YWx1ZSwgYmVmb3JlOiBsYXN0SGVscGVyPXZhbHVlIG9mIGxhc3QgZm91bmQgaGVscGVyLCBpZiBhbnlcbiAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBubyBsYXN0SGVscGVyOiBzYW1lIGFzIFtibG9ja1ZhbHVlXVxuICAvLyBPbiBzdGFjaywgYWZ0ZXIsIGlmIGxhc3RIZWxwZXI6IHZhbHVlXG4gIGFtYmlndW91c0Jsb2NrVmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgIC8vIFdlJ3JlIGJlaW5nIGEgYml0IGNoZWVreSBhbmQgcmV1c2luZyB0aGUgb3B0aW9ucyB2YWx1ZSBmcm9tIHRoZSBwcmlvciBleGVjXG4gICAgbGV0IGJsb2NrSGVscGVyTWlzc2luZyA9IHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmJsb2NrSGVscGVyTWlzc2luZycpLFxuICAgICAgICBwYXJhbXMgPSBbdGhpcy5jb250ZXh0TmFtZSgwKV07XG4gICAgdGhpcy5zZXR1cEhlbHBlckFyZ3MoJycsIDAsIHBhcmFtcywgdHJ1ZSk7XG5cbiAgICB0aGlzLmZsdXNoSW5saW5lKCk7XG5cbiAgICBsZXQgY3VycmVudCA9IHRoaXMudG9wU3RhY2soKTtcbiAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGN1cnJlbnQpO1xuXG4gICAgdGhpcy5wdXNoU291cmNlKFtcbiAgICAgICAgJ2lmICghJywgdGhpcy5sYXN0SGVscGVyLCAnKSB7ICcsXG4gICAgICAgICAgY3VycmVudCwgJyA9ICcsIHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChibG9ja0hlbHBlck1pc3NpbmcsICdjYWxsJywgcGFyYW1zKSxcbiAgICAgICAgJ30nXSk7XG4gIH0sXG5cbiAgLy8gW2FwcGVuZENvbnRlbnRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLlxuICAvL1xuICAvLyBBcHBlbmRzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYGNvbnRlbnRgIHRvIHRoZSBjdXJyZW50IGJ1ZmZlclxuICBhcHBlbmRDb250ZW50OiBmdW5jdGlvbihjb250ZW50KSB7XG4gICAgaWYgKHRoaXMucGVuZGluZ0NvbnRlbnQpIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLnBlbmRpbmdDb250ZW50ICsgY29udGVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wZW5kaW5nTG9jYXRpb24gPSB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb247XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nQ29udGVudCA9IGNvbnRlbnQ7XG4gIH0sXG5cbiAgLy8gW2FwcGVuZF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLlxuICAvL1xuICAvLyBDb2VyY2VzIGB2YWx1ZWAgdG8gYSBTdHJpbmcgYW5kIGFwcGVuZHMgaXQgdG8gdGhlIGN1cnJlbnQgYnVmZmVyLlxuICAvL1xuICAvLyBJZiBgdmFsdWVgIGlzIHRydXRoeSwgb3IgMCwgaXQgaXMgY29lcmNlZCBpbnRvIGEgc3RyaW5nIGFuZCBhcHBlbmRlZFxuICAvLyBPdGhlcndpc2UsIHRoZSBlbXB0eSBzdHJpbmcgaXMgYXBwZW5kZWRcbiAgYXBwZW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc0lubGluZSgpKSB7XG4gICAgICB0aGlzLnJlcGxhY2VTdGFjaygoY3VycmVudCkgPT4gWycgIT0gbnVsbCA/ICcsIGN1cnJlbnQsICcgOiBcIlwiJ10pO1xuXG4gICAgICB0aGlzLnB1c2hTb3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnBvcFN0YWNrKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGxvY2FsID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgdGhpcy5wdXNoU291cmNlKFsnaWYgKCcsIGxvY2FsLCAnICE9IG51bGwpIHsgJywgdGhpcy5hcHBlbmRUb0J1ZmZlcihsb2NhbCwgdW5kZWZpbmVkLCB0cnVlKSwgJyB9J10pO1xuICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHtcbiAgICAgICAgdGhpcy5wdXNoU291cmNlKFsnZWxzZSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIoXCInJ1wiLCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8vIFthcHBlbmRFc2NhcGVkXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vXG4gIC8vIEVzY2FwZSBgdmFsdWVgIGFuZCBhcHBlbmQgaXQgdG8gdGhlIGJ1ZmZlclxuICBhcHBlbmRFc2NhcGVkOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnB1c2hTb3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcihcbiAgICAgICAgW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIuZXNjYXBlRXhwcmVzc2lvbicpLCAnKCcsIHRoaXMucG9wU3RhY2soKSwgJyknXSkpO1xuICB9LFxuXG4gIC8vIFtnZXRDb250ZXh0XVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy8gQ29tcGlsZXIgdmFsdWUsIGFmdGVyOiBsYXN0Q29udGV4dD1kZXB0aFxuICAvL1xuICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBgbGFzdENvbnRleHRgIGNvbXBpbGVyIHZhbHVlIHRvIHRoZSBkZXB0aFxuICBnZXRDb250ZXh0OiBmdW5jdGlvbihkZXB0aCkge1xuICAgIHRoaXMubGFzdENvbnRleHQgPSBkZXB0aDtcbiAgfSxcblxuICAvLyBbcHVzaENvbnRleHRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi5cbiAgLy9cbiAgLy8gUHVzaGVzIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBjb250ZXh0IG9udG8gdGhlIHN0YWNrLlxuICBwdXNoQ29udGV4dDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMuY29udGV4dE5hbWUodGhpcy5sYXN0Q29udGV4dCkpO1xuICB9LFxuXG4gIC8vIFtsb29rdXBPbkNvbnRleHRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0W25hbWVdLCAuLi5cbiAgLy9cbiAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBuYW1lYCBvbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwdXNoZXNcbiAgLy8gaXQgb250byB0aGUgc3RhY2suXG4gIGxvb2t1cE9uQ29udGV4dDogZnVuY3Rpb24ocGFydHMsIGZhbHN5LCBzdHJpY3QsIHNjb3BlZCkge1xuICAgIGxldCBpID0gMDtcblxuICAgIGlmICghc2NvcGVkICYmIHRoaXMub3B0aW9ucy5jb21wYXQgJiYgIXRoaXMubGFzdENvbnRleHQpIHtcbiAgICAgIC8vIFRoZSBkZXB0aGVkIHF1ZXJ5IGlzIGV4cGVjdGVkIHRvIGhhbmRsZSB0aGUgdW5kZWZpbmVkIGxvZ2ljIGZvciB0aGUgcm9vdCBsZXZlbCB0aGF0XG4gICAgICAvLyBpcyBpbXBsZW1lbnRlZCBiZWxvdywgc28gd2UgZXZhbHVhdGUgdGhhdCBkaXJlY3RseSBpbiBjb21wYXQgbW9kZVxuICAgICAgdGhpcy5wdXNoKHRoaXMuZGVwdGhlZExvb2t1cChwYXJ0c1tpKytdKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaENvbnRleHQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIGksIGZhbHN5LCBzdHJpY3QpO1xuICB9LFxuXG4gIC8vIFtsb29rdXBCbG9ja1BhcmFtXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBibG9ja1BhcmFtW25hbWVdLCAuLi5cbiAgLy9cbiAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBwYXJ0c2Agb24gdGhlIGdpdmVuIGJsb2NrIHBhcmFtIGFuZCBwdXNoZXNcbiAgLy8gaXQgb250byB0aGUgc3RhY2suXG4gIGxvb2t1cEJsb2NrUGFyYW06IGZ1bmN0aW9uKGJsb2NrUGFyYW1JZCwgcGFydHMpIHtcbiAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTtcblxuICAgIHRoaXMucHVzaChbJ2Jsb2NrUGFyYW1zWycsIGJsb2NrUGFyYW1JZFswXSwgJ11bJywgYmxvY2tQYXJhbUlkWzFdLCAnXSddKTtcbiAgICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIDEpO1xuICB9LFxuXG4gIC8vIFtsb29rdXBEYXRhXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBkYXRhLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCB0aGUgZGF0YSBsb29rdXAgb3BlcmF0b3JcbiAgbG9va3VwRGF0YTogZnVuY3Rpb24oZGVwdGgsIHBhcnRzLCBzdHJpY3QpIHtcbiAgICBpZiAoIWRlcHRoKSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2RhdGEnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdjb250YWluZXIuZGF0YShkYXRhLCAnICsgZGVwdGggKyAnKScpO1xuICAgIH1cblxuICAgIHRoaXMucmVzb2x2ZVBhdGgoJ2RhdGEnLCBwYXJ0cywgMCwgdHJ1ZSwgc3RyaWN0KTtcbiAgfSxcblxuICByZXNvbHZlUGF0aDogZnVuY3Rpb24odHlwZSwgcGFydHMsIGksIGZhbHN5LCBzdHJpY3QpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnN0cmljdCB8fCB0aGlzLm9wdGlvbnMuYXNzdW1lT2JqZWN0cykge1xuICAgICAgdGhpcy5wdXNoKHN0cmljdExvb2t1cCh0aGlzLm9wdGlvbnMuc3RyaWN0ICYmIHN0cmljdCwgdGhpcywgcGFydHMsIHR5cGUpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbGVuID0gcGFydHMubGVuZ3RoO1xuICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqL1xuICAgICAgdGhpcy5yZXBsYWNlU3RhY2soKGN1cnJlbnQpID0+IHtcbiAgICAgICAgbGV0IGxvb2t1cCA9IHRoaXMubmFtZUxvb2t1cChjdXJyZW50LCBwYXJ0c1tpXSwgdHlwZSk7XG4gICAgICAgIC8vIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgemVybyBhbmQgZmFsc2UgYXJlIGhhbmRsZWQgcHJvcGVybHkgaWYgdGhlIGNvbnRleHQgKGZhbHN5IGZsYWcpXG4gICAgICAgIC8vIG5lZWRzIHRvIGhhdmUgdGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZXNlIHZhbHVlcy5cbiAgICAgICAgaWYgKCFmYWxzeSkge1xuICAgICAgICAgIHJldHVybiBbJyAhPSBudWxsID8gJywgbG9va3VwLCAnIDogJywgY3VycmVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIGNhbiB1c2UgZ2VuZXJpYyBmYWxzeSBoYW5kbGluZ1xuICAgICAgICAgIHJldHVybiBbJyAmJiAnLCBsb29rdXBdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG4gICAgfVxuICB9LFxuXG4gIC8vIFtyZXNvbHZlUG9zc2libGVMYW1iZGFdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXNvbHZlZCB2YWx1ZSwgLi4uXG4gIC8vXG4gIC8vIElmIHRoZSBgdmFsdWVgIGlzIGEgbGFtYmRhLCByZXBsYWNlIGl0IG9uIHRoZSBzdGFjayBieVxuICAvLyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBsYW1iZGFcbiAgcmVzb2x2ZVBvc3NpYmxlTGFtYmRhOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnB1c2goW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubGFtYmRhJyksICcoJywgdGhpcy5wb3BTdGFjaygpLCAnLCAnLCB0aGlzLmNvbnRleHROYW1lKDApLCAnKSddKTtcbiAgfSxcblxuICAvLyBbcHVzaFN0cmluZ1BhcmFtXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBzdHJpbmcsIGN1cnJlbnRDb250ZXh0LCAuLi5cbiAgLy9cbiAgLy8gVGhpcyBvcGNvZGUgaXMgZGVzaWduZWQgZm9yIHVzZSBpbiBzdHJpbmcgbW9kZSwgd2hpY2hcbiAgLy8gcHJvdmlkZXMgdGhlIHN0cmluZyB2YWx1ZSBvZiBhIHBhcmFtZXRlciBhbG9uZyB3aXRoIGl0c1xuICAvLyBkZXB0aCByYXRoZXIgdGhhbiByZXNvbHZpbmcgaXQgaW1tZWRpYXRlbHkuXG4gIHB1c2hTdHJpbmdQYXJhbTogZnVuY3Rpb24oc3RyaW5nLCB0eXBlKSB7XG4gICAgdGhpcy5wdXNoQ29udGV4dCgpO1xuICAgIHRoaXMucHVzaFN0cmluZyh0eXBlKTtcblxuICAgIC8vIElmIGl0J3MgYSBzdWJleHByZXNzaW9uLCB0aGUgc3RyaW5nIHJlc3VsdFxuICAgIC8vIHdpbGwgYmUgcHVzaGVkIGFmdGVyIHRoaXMgb3Bjb2RlLlxuICAgIGlmICh0eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAgICAgIGlmICh0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLnB1c2hTdHJpbmcoc3RyaW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChzdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBlbXB0eUhhc2g6IGZ1bmN0aW9uKG9taXRFbXB0eSkge1xuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hJZHNcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hDb250ZXh0c1xuICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoVHlwZXNcbiAgICB9XG4gICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKG9taXRFbXB0eSA/ICd1bmRlZmluZWQnIDogJ3t9Jyk7XG4gIH0sXG4gIHB1c2hIYXNoOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5oYXNoKSB7XG4gICAgICB0aGlzLmhhc2hlcy5wdXNoKHRoaXMuaGFzaCk7XG4gICAgfVxuICAgIHRoaXMuaGFzaCA9IHt2YWx1ZXM6IFtdLCB0eXBlczogW10sIGNvbnRleHRzOiBbXSwgaWRzOiBbXX07XG4gIH0sXG4gIHBvcEhhc2g6IGZ1bmN0aW9uKCkge1xuICAgIGxldCBoYXNoID0gdGhpcy5oYXNoO1xuICAgIHRoaXMuaGFzaCA9IHRoaXMuaGFzaGVzLnBvcCgpO1xuXG4gICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC5pZHMpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2guY29udGV4dHMpKTtcbiAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC50eXBlcykpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC52YWx1ZXMpKTtcbiAgfSxcblxuICAvLyBbcHVzaFN0cmluZ11cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogcXVvdGVkU3RyaW5nKHN0cmluZyksIC4uLlxuICAvL1xuICAvLyBQdXNoIGEgcXVvdGVkIHZlcnNpb24gb2YgYHN0cmluZ2Agb250byB0aGUgc3RhY2tcbiAgcHVzaFN0cmluZzogZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucXVvdGVkU3RyaW5nKHN0cmluZykpO1xuICB9LFxuXG4gIC8vIFtwdXNoTGl0ZXJhbF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogdmFsdWUsIC4uLlxuICAvL1xuICAvLyBQdXNoZXMgYSB2YWx1ZSBvbnRvIHRoZSBzdGFjay4gVGhpcyBvcGVyYXRpb24gcHJldmVudHNcbiAgLy8gdGhlIGNvbXBpbGVyIGZyb20gY3JlYXRpbmcgYSB0ZW1wb3JhcnkgdmFyaWFibGUgdG8gaG9sZFxuICAvLyBpdC5cbiAgcHVzaExpdGVyYWw6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHZhbHVlKTtcbiAgfSxcblxuICAvLyBbcHVzaFByb2dyYW1dXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHByb2dyYW0oZ3VpZCksIC4uLlxuICAvL1xuICAvLyBQdXNoIGEgcHJvZ3JhbSBleHByZXNzaW9uIG9udG8gdGhlIHN0YWNrLiBUaGlzIHRha2VzXG4gIC8vIGEgY29tcGlsZS10aW1lIGd1aWQgYW5kIGNvbnZlcnRzIGl0IGludG8gYSBydW50aW1lLWFjY2Vzc2libGVcbiAgLy8gZXhwcmVzc2lvbi5cbiAgcHVzaFByb2dyYW06IGZ1bmN0aW9uKGd1aWQpIHtcbiAgICBpZiAoZ3VpZCAhPSBudWxsKSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5wcm9ncmFtRXhwcmVzc2lvbihndWlkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChudWxsKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gW3JlZ2lzdGVyRGVjb3JhdG9yXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLlxuICAvL1xuICAvLyBQb3BzIG9mZiB0aGUgZGVjb3JhdG9yJ3MgcGFyYW1ldGVycywgaW52b2tlcyB0aGUgZGVjb3JhdG9yLFxuICAvLyBhbmQgaW5zZXJ0cyB0aGUgZGVjb3JhdG9yIGludG8gdGhlIGRlY29yYXRvcnMgbGlzdC5cbiAgcmVnaXN0ZXJEZWNvcmF0b3IocGFyYW1TaXplLCBuYW1lKSB7XG4gICAgbGV0IGZvdW5kRGVjb3JhdG9yID0gdGhpcy5uYW1lTG9va3VwKCdkZWNvcmF0b3JzJywgbmFtZSwgJ2RlY29yYXRvcicpLFxuICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cEhlbHBlckFyZ3MobmFtZSwgcGFyYW1TaXplKTtcblxuICAgIHRoaXMuZGVjb3JhdG9ycy5wdXNoKFtcbiAgICAgICdmbiA9ICcsXG4gICAgICB0aGlzLmRlY29yYXRvcnMuZnVuY3Rpb25DYWxsKGZvdW5kRGVjb3JhdG9yLCAnJywgWydmbicsICdwcm9wcycsICdjb250YWluZXInLCBvcHRpb25zXSksXG4gICAgICAnIHx8IGZuOydcbiAgICBdKTtcbiAgfSxcblxuICAvLyBbaW52b2tlSGVscGVyXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvblxuICAvL1xuICAvLyBQb3BzIG9mZiB0aGUgaGVscGVyJ3MgcGFyYW1ldGVycywgaW52b2tlcyB0aGUgaGVscGVyLFxuICAvLyBhbmQgcHVzaGVzIHRoZSBoZWxwZXIncyByZXR1cm4gdmFsdWUgb250byB0aGUgc3RhY2suXG4gIC8vXG4gIC8vIElmIHRoZSBoZWxwZXIgaXMgbm90IGZvdW5kLCBgaGVscGVyTWlzc2luZ2AgaXMgY2FsbGVkLlxuICBpbnZva2VIZWxwZXI6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgbmFtZSwgaXNTaW1wbGUpIHtcbiAgICBsZXQgbm9uSGVscGVyID0gdGhpcy5wb3BTdGFjaygpLFxuICAgICAgICBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSksXG4gICAgICAgIHNpbXBsZSA9IGlzU2ltcGxlID8gW2hlbHBlci5uYW1lLCAnIHx8ICddIDogJyc7XG5cbiAgICBsZXQgbG9va3VwID0gWycoJ10uY29uY2F0KHNpbXBsZSwgbm9uSGVscGVyKTtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgIGxvb2t1cC5wdXNoKCcgfHwgJywgdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuaGVscGVyTWlzc2luZycpKTtcbiAgICB9XG4gICAgbG9va3VwLnB1c2goJyknKTtcblxuICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwobG9va3VwLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZUtub3duSGVscGVyXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvblxuICAvL1xuICAvLyBUaGlzIG9wZXJhdGlvbiBpcyB1c2VkIHdoZW4gdGhlIGhlbHBlciBpcyBrbm93biB0byBleGlzdCxcbiAgLy8gc28gYSBgaGVscGVyTWlzc2luZ2AgZmFsbGJhY2sgaXMgbm90IHJlcXVpcmVkLlxuICBpbnZva2VLbm93bkhlbHBlcjogZnVuY3Rpb24ocGFyYW1TaXplLCBuYW1lKSB7XG4gICAgbGV0IGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKTtcbiAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGhlbHBlci5uYW1lLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZUFtYmlndW91c11cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgZGlzYW1iaWd1YXRpb25cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJlc3Npb24gbGlrZSBge3tmb299fWBcbiAgLy8gaXMgcHJvdmlkZWQsIGJ1dCB3ZSBkb24ndCBrbm93IGF0IGNvbXBpbGUtdGltZSB3aGV0aGVyIGl0XG4gIC8vIGlzIGEgaGVscGVyIG9yIGEgcGF0aC5cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gZW1pdHMgbW9yZSBjb2RlIHRoYW4gdGhlIG90aGVyIG9wdGlvbnMsXG4gIC8vIGFuZCBjYW4gYmUgYXZvaWRlZCBieSBwYXNzaW5nIHRoZSBga25vd25IZWxwZXJzYCBhbmRcbiAgLy8gYGtub3duSGVscGVyc09ubHlgIGZsYWdzIGF0IGNvbXBpbGUtdGltZS5cbiAgaW52b2tlQW1iaWd1b3VzOiBmdW5jdGlvbihuYW1lLCBoZWxwZXJDYWxsKSB7XG4gICAgdGhpcy51c2VSZWdpc3RlcignaGVscGVyJyk7XG5cbiAgICBsZXQgbm9uSGVscGVyID0gdGhpcy5wb3BTdGFjaygpO1xuXG4gICAgdGhpcy5lbXB0eUhhc2goKTtcbiAgICBsZXQgaGVscGVyID0gdGhpcy5zZXR1cEhlbHBlcigwLCBuYW1lLCBoZWxwZXJDYWxsKTtcblxuICAgIGxldCBoZWxwZXJOYW1lID0gdGhpcy5sYXN0SGVscGVyID0gdGhpcy5uYW1lTG9va3VwKCdoZWxwZXJzJywgbmFtZSwgJ2hlbHBlcicpO1xuXG4gICAgbGV0IGxvb2t1cCA9IFsnKCcsICcoaGVscGVyID0gJywgaGVscGVyTmFtZSwgJyB8fCAnLCBub25IZWxwZXIsICcpJ107XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBsb29rdXBbMF0gPSAnKGhlbHBlciA9ICc7XG4gICAgICBsb29rdXAucHVzaChcbiAgICAgICAgJyAhPSBudWxsID8gaGVscGVyIDogJyxcbiAgICAgICAgdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuaGVscGVyTWlzc2luZycpXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucHVzaChbXG4gICAgICAgICcoJywgbG9va3VwLFxuICAgICAgICAoaGVscGVyLnBhcmFtc0luaXQgPyBbJyksKCcsIGhlbHBlci5wYXJhbXNJbml0XSA6IFtdKSwgJyksJyxcbiAgICAgICAgJyh0eXBlb2YgaGVscGVyID09PSAnLCB0aGlzLmFsaWFzYWJsZSgnXCJmdW5jdGlvblwiJyksICcgPyAnLFxuICAgICAgICB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoJ2hlbHBlcicsICdjYWxsJywgaGVscGVyLmNhbGxQYXJhbXMpLCAnIDogaGVscGVyKSknXG4gICAgXSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZVBhcnRpYWxdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGNvbnRleHQsIC4uLlxuICAvLyBPbiBzdGFjayBhZnRlcjogcmVzdWx0IG9mIHBhcnRpYWwgaW52b2NhdGlvblxuICAvL1xuICAvLyBUaGlzIG9wZXJhdGlvbiBwb3BzIG9mZiBhIGNvbnRleHQsIGludm9rZXMgYSBwYXJ0aWFsIHdpdGggdGhhdCBjb250ZXh0LFxuICAvLyBhbmQgcHVzaGVzIHRoZSByZXN1bHQgb2YgdGhlIGludm9jYXRpb24gYmFjay5cbiAgaW52b2tlUGFydGlhbDogZnVuY3Rpb24oaXNEeW5hbWljLCBuYW1lLCBpbmRlbnQpIHtcbiAgICBsZXQgcGFyYW1zID0gW10sXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLnNldHVwUGFyYW1zKG5hbWUsIDEsIHBhcmFtcyk7XG5cbiAgICBpZiAoaXNEeW5hbWljKSB7XG4gICAgICBuYW1lID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgZGVsZXRlIG9wdGlvbnMubmFtZTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50KSB7XG4gICAgICBvcHRpb25zLmluZGVudCA9IEpTT04uc3RyaW5naWZ5KGluZGVudCk7XG4gICAgfVxuICAgIG9wdGlvbnMuaGVscGVycyA9ICdoZWxwZXJzJztcbiAgICBvcHRpb25zLnBhcnRpYWxzID0gJ3BhcnRpYWxzJztcbiAgICBvcHRpb25zLmRlY29yYXRvcnMgPSAnY29udGFpbmVyLmRlY29yYXRvcnMnO1xuXG4gICAgaWYgKCFpc0R5bmFtaWMpIHtcbiAgICAgIHBhcmFtcy51bnNoaWZ0KHRoaXMubmFtZUxvb2t1cCgncGFydGlhbHMnLCBuYW1lLCAncGFydGlhbCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyYW1zLnVuc2hpZnQobmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXQpIHtcbiAgICAgIG9wdGlvbnMuZGVwdGhzID0gJ2RlcHRocyc7XG4gICAgfVxuICAgIG9wdGlvbnMgPSB0aGlzLm9iamVjdExpdGVyYWwob3B0aW9ucyk7XG4gICAgcGFyYW1zLnB1c2gob3B0aW9ucyk7XG5cbiAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCdjb250YWluZXIuaW52b2tlUGFydGlhbCcsICcnLCBwYXJhbXMpKTtcbiAgfSxcblxuICAvLyBbYXNzaWduVG9IYXNoXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uLCBoYXNoLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi4sIGhhc2gsIC4uLlxuICAvL1xuICAvLyBQb3BzIGEgdmFsdWUgb2ZmIHRoZSBzdGFjayBhbmQgYXNzaWducyBpdCB0byB0aGUgY3VycmVudCBoYXNoXG4gIGFzc2lnblRvSGFzaDogZnVuY3Rpb24oa2V5KSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BTdGFjaygpLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICB0eXBlLFxuICAgICAgICBpZDtcblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICBpZCA9IHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICB0eXBlID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgY29udGV4dCA9IHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG5cbiAgICBsZXQgaGFzaCA9IHRoaXMuaGFzaDtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgaGFzaC5jb250ZXh0c1trZXldID0gY29udGV4dDtcbiAgICB9XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGhhc2gudHlwZXNba2V5XSA9IHR5cGU7XG4gICAgfVxuICAgIGlmIChpZCkge1xuICAgICAgaGFzaC5pZHNba2V5XSA9IGlkO1xuICAgIH1cbiAgICBoYXNoLnZhbHVlc1trZXldID0gdmFsdWU7XG4gIH0sXG5cbiAgcHVzaElkOiBmdW5jdGlvbih0eXBlLCBuYW1lLCBjaGlsZCkge1xuICAgIGlmICh0eXBlID09PSAnQmxvY2tQYXJhbScpIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChcbiAgICAgICAgICAnYmxvY2tQYXJhbXNbJyArIG5hbWVbMF0gKyAnXS5wYXRoWycgKyBuYW1lWzFdICsgJ10nXG4gICAgICAgICAgKyAoY2hpbGQgPyAnICsgJyArIEpTT04uc3RyaW5naWZ5KCcuJyArIGNoaWxkKSA6ICcnKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnUGF0aEV4cHJlc3Npb24nKSB7XG4gICAgICB0aGlzLnB1c2hTdHJpbmcobmFtZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgndHJ1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ251bGwnKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gSEVMUEVSU1xuXG4gIGNvbXBpbGVyOiBKYXZhU2NyaXB0Q29tcGlsZXIsXG5cbiAgY29tcGlsZUNoaWxkcmVuOiBmdW5jdGlvbihlbnZpcm9ubWVudCwgb3B0aW9ucykge1xuICAgIGxldCBjaGlsZHJlbiA9IGVudmlyb25tZW50LmNoaWxkcmVuLCBjaGlsZCwgY29tcGlsZXI7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgIGNvbXBpbGVyID0gbmV3IHRoaXMuY29tcGlsZXIoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG5cbiAgICAgIGxldCBleGlzdGluZyA9IHRoaXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpO1xuXG4gICAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbnRleHQucHJvZ3JhbXMucHVzaCgnJyk7IC8vIFBsYWNlaG9sZGVyIHRvIHByZXZlbnQgbmFtZSBjb25mbGljdHMgZm9yIG5lc3RlZCBjaGlsZHJlblxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmNvbnRleHQucHJvZ3JhbXMubGVuZ3RoO1xuICAgICAgICBjaGlsZC5pbmRleCA9IGluZGV4O1xuICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0nICsgaW5kZXg7XG4gICAgICAgIHRoaXMuY29udGV4dC5wcm9ncmFtc1tpbmRleF0gPSBjb21waWxlci5jb21waWxlKGNoaWxkLCBvcHRpb25zLCB0aGlzLmNvbnRleHQsICF0aGlzLnByZWNvbXBpbGUpO1xuICAgICAgICB0aGlzLmNvbnRleHQuZGVjb3JhdG9yc1tpbmRleF0gPSBjb21waWxlci5kZWNvcmF0b3JzO1xuICAgICAgICB0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRzW2luZGV4XSA9IGNoaWxkO1xuXG4gICAgICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgY29tcGlsZXIudXNlRGVwdGhzO1xuICAgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBjb21waWxlci51c2VCbG9ja1BhcmFtcztcbiAgICAgICAgY2hpbGQudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHM7XG4gICAgICAgIGNoaWxkLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkLmluZGV4ID0gZXhpc3RpbmcuaW5kZXg7XG4gICAgICAgIGNoaWxkLm5hbWUgPSAncHJvZ3JhbScgKyBleGlzdGluZy5pbmRleDtcblxuICAgICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGV4aXN0aW5nLnVzZURlcHRocztcbiAgICAgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgZXhpc3RpbmcudXNlQmxvY2tQYXJhbXM7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtYXRjaEV4aXN0aW5nUHJvZ3JhbTogZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgbGV0IGVudmlyb25tZW50ID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpXTtcbiAgICAgIGlmIChlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5lcXVhbHMoY2hpbGQpKSB7XG4gICAgICAgIHJldHVybiBlbnZpcm9ubWVudDtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcHJvZ3JhbUV4cHJlc3Npb246IGZ1bmN0aW9uKGd1aWQpIHtcbiAgICBsZXQgY2hpbGQgPSB0aGlzLmVudmlyb25tZW50LmNoaWxkcmVuW2d1aWRdLFxuICAgICAgICBwcm9ncmFtUGFyYW1zID0gW2NoaWxkLmluZGV4LCAnZGF0YScsIGNoaWxkLmJsb2NrUGFyYW1zXTtcblxuICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IHRoaXMudXNlRGVwdGhzKSB7XG4gICAgICBwcm9ncmFtUGFyYW1zLnB1c2goJ2Jsb2NrUGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZURlcHRocykge1xuICAgICAgcHJvZ3JhbVBhcmFtcy5wdXNoKCdkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ2NvbnRhaW5lci5wcm9ncmFtKCcgKyBwcm9ncmFtUGFyYW1zLmpvaW4oJywgJykgKyAnKSc7XG4gIH0sXG5cbiAgdXNlUmVnaXN0ZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBpZiAoIXRoaXMucmVnaXN0ZXJzW25hbWVdKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyc1tuYW1lXSA9IHRydWU7XG4gICAgICB0aGlzLnJlZ2lzdGVycy5saXN0LnB1c2gobmFtZSk7XG4gICAgfVxuICB9LFxuXG4gIHB1c2g6IGZ1bmN0aW9uKGV4cHIpIHtcbiAgICBpZiAoIShleHByIGluc3RhbmNlb2YgTGl0ZXJhbCkpIHtcbiAgICAgIGV4cHIgPSB0aGlzLnNvdXJjZS53cmFwKGV4cHIpO1xuICAgIH1cblxuICAgIHRoaXMuaW5saW5lU3RhY2sucHVzaChleHByKTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfSxcblxuICBwdXNoU3RhY2tMaXRlcmFsOiBmdW5jdGlvbihpdGVtKSB7XG4gICAgdGhpcy5wdXNoKG5ldyBMaXRlcmFsKGl0ZW0pKTtcbiAgfSxcblxuICBwdXNoU291cmNlOiBmdW5jdGlvbihzb3VyY2UpIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nQ29udGVudCkge1xuICAgICAgdGhpcy5zb3VyY2UucHVzaChcbiAgICAgICAgICB0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyh0aGlzLnBlbmRpbmdDb250ZW50KSwgdGhpcy5wZW5kaW5nTG9jYXRpb24pKTtcbiAgICAgIHRoaXMucGVuZGluZ0NvbnRlbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSkge1xuICAgICAgdGhpcy5zb3VyY2UucHVzaChzb3VyY2UpO1xuICAgIH1cbiAgfSxcblxuICByZXBsYWNlU3RhY2s6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgbGV0IHByZWZpeCA9IFsnKCddLFxuICAgICAgICBzdGFjayxcbiAgICAgICAgY3JlYXRlZFN0YWNrLFxuICAgICAgICB1c2VkTGl0ZXJhbDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCF0aGlzLmlzSW5saW5lKCkpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ3JlcGxhY2VTdGFjayBvbiBub24taW5saW5lJyk7XG4gICAgfVxuXG4gICAgLy8gV2Ugd2FudCB0byBtZXJnZSB0aGUgaW5saW5lIHN0YXRlbWVudCBpbnRvIHRoZSByZXBsYWNlbWVudCBzdGF0ZW1lbnQgdmlhICcsJ1xuICAgIGxldCB0b3AgPSB0aGlzLnBvcFN0YWNrKHRydWUpO1xuXG4gICAgaWYgKHRvcCBpbnN0YW5jZW9mIExpdGVyYWwpIHtcbiAgICAgIC8vIExpdGVyYWxzIGRvIG5vdCBuZWVkIHRvIGJlIGlubGluZWRcbiAgICAgIHN0YWNrID0gW3RvcC52YWx1ZV07XG4gICAgICBwcmVmaXggPSBbJygnLCBzdGFja107XG4gICAgICB1c2VkTGl0ZXJhbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEdldCBvciBjcmVhdGUgdGhlIGN1cnJlbnQgc3RhY2sgbmFtZSBmb3IgdXNlIGJ5IHRoZSBpbmxpbmVcbiAgICAgIGNyZWF0ZWRTdGFjayA9IHRydWU7XG4gICAgICBsZXQgbmFtZSA9IHRoaXMuaW5jclN0YWNrKCk7XG5cbiAgICAgIHByZWZpeCA9IFsnKCgnLCB0aGlzLnB1c2gobmFtZSksICcgPSAnLCB0b3AsICcpJ107XG4gICAgICBzdGFjayA9IHRoaXMudG9wU3RhY2soKTtcbiAgICB9XG5cbiAgICBsZXQgaXRlbSA9IGNhbGxiYWNrLmNhbGwodGhpcywgc3RhY2spO1xuXG4gICAgaWYgKCF1c2VkTGl0ZXJhbCkge1xuICAgICAgdGhpcy5wb3BTdGFjaygpO1xuICAgIH1cbiAgICBpZiAoY3JlYXRlZFN0YWNrKSB7XG4gICAgICB0aGlzLnN0YWNrU2xvdC0tO1xuICAgIH1cbiAgICB0aGlzLnB1c2gocHJlZml4LmNvbmNhdChpdGVtLCAnKScpKTtcbiAgfSxcblxuICBpbmNyU3RhY2s6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc3RhY2tTbG90Kys7XG4gICAgaWYgKHRoaXMuc3RhY2tTbG90ID4gdGhpcy5zdGFja1ZhcnMubGVuZ3RoKSB7IHRoaXMuc3RhY2tWYXJzLnB1c2goJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90KTsgfVxuICAgIHJldHVybiB0aGlzLnRvcFN0YWNrTmFtZSgpO1xuICB9LFxuICB0b3BTdGFja05hbWU6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAnc3RhY2snICsgdGhpcy5zdGFja1Nsb3Q7XG4gIH0sXG4gIGZsdXNoSW5saW5lOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgaW5saW5lU3RhY2sgPSB0aGlzLmlubGluZVN0YWNrO1xuICAgIHRoaXMuaW5saW5lU3RhY2sgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gaW5saW5lU3RhY2subGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGxldCBlbnRyeSA9IGlubGluZVN0YWNrW2ldO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoZW50cnkgaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICAgIHRoaXMuY29tcGlsZVN0YWNrLnB1c2goZW50cnkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHN0YWNrID0gdGhpcy5pbmNyU3RhY2soKTtcbiAgICAgICAgdGhpcy5wdXNoU291cmNlKFtzdGFjaywgJyA9ICcsIGVudHJ5LCAnOyddKTtcbiAgICAgICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChzdGFjayk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBpc0lubGluZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5saW5lU3RhY2subGVuZ3RoO1xuICB9LFxuXG4gIHBvcFN0YWNrOiBmdW5jdGlvbih3cmFwcGVkKSB7XG4gICAgbGV0IGlubGluZSA9IHRoaXMuaXNJbmxpbmUoKSxcbiAgICAgICAgaXRlbSA9IChpbmxpbmUgPyB0aGlzLmlubGluZVN0YWNrIDogdGhpcy5jb21waWxlU3RhY2spLnBvcCgpO1xuXG4gICAgaWYgKCF3cmFwcGVkICYmIChpdGVtIGluc3RhbmNlb2YgTGl0ZXJhbCkpIHtcbiAgICAgIHJldHVybiBpdGVtLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWlubGluZSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAoIXRoaXMuc3RhY2tTbG90KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW52YWxpZCBzdGFjayBwb3AnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YWNrU2xvdC0tO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICB9LFxuXG4gIHRvcFN0YWNrOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgc3RhY2sgPSAodGhpcy5pc0lubGluZSgpID8gdGhpcy5pbmxpbmVTdGFjayA6IHRoaXMuY29tcGlsZVN0YWNrKSxcbiAgICAgICAgaXRlbSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICB9LFxuXG4gIGNvbnRleHROYW1lOiBmdW5jdGlvbihjb250ZXh0KSB7XG4gICAgaWYgKHRoaXMudXNlRGVwdGhzICYmIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiAnZGVwdGhzWycgKyBjb250ZXh0ICsgJ10nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2RlcHRoJyArIGNvbnRleHQ7XG4gICAgfVxuICB9LFxuXG4gIHF1b3RlZFN0cmluZzogZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyhzdHIpO1xuICB9LFxuXG4gIG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5vYmplY3RMaXRlcmFsKG9iaik7XG4gIH0sXG5cbiAgYWxpYXNhYmxlOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgbGV0IHJldCA9IHRoaXMuYWxpYXNlc1tuYW1lXTtcbiAgICBpZiAocmV0KSB7XG4gICAgICByZXQucmVmZXJlbmNlQ291bnQrKztcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgcmV0ID0gdGhpcy5hbGlhc2VzW25hbWVdID0gdGhpcy5zb3VyY2Uud3JhcChuYW1lKTtcbiAgICByZXQuYWxpYXNhYmxlID0gdHJ1ZTtcbiAgICByZXQucmVmZXJlbmNlQ291bnQgPSAxO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBzZXR1cEhlbHBlcjogZnVuY3Rpb24ocGFyYW1TaXplLCBuYW1lLCBibG9ja0hlbHBlcikge1xuICAgIGxldCBwYXJhbXMgPSBbXSxcbiAgICAgICAgcGFyYW1zSW5pdCA9IHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5hbWUsIHBhcmFtU2l6ZSwgcGFyYW1zLCBibG9ja0hlbHBlcik7XG4gICAgbGV0IGZvdW5kSGVscGVyID0gdGhpcy5uYW1lTG9va3VwKCdoZWxwZXJzJywgbmFtZSwgJ2hlbHBlcicpLFxuICAgICAgICBjYWxsQ29udGV4dCA9IHRoaXMuYWxpYXNhYmxlKGAke3RoaXMuY29udGV4dE5hbWUoMCl9ICE9IG51bGwgPyAke3RoaXMuY29udGV4dE5hbWUoMCl9IDogKGNvbnRhaW5lci5udWxsQ29udGV4dCB8fCB7fSlgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIHBhcmFtc0luaXQ6IHBhcmFtc0luaXQsXG4gICAgICBuYW1lOiBmb3VuZEhlbHBlcixcbiAgICAgIGNhbGxQYXJhbXM6IFtjYWxsQ29udGV4dF0uY29uY2F0KHBhcmFtcylcbiAgICB9O1xuICB9LFxuXG4gIHNldHVwUGFyYW1zOiBmdW5jdGlvbihoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKSB7XG4gICAgbGV0IG9wdGlvbnMgPSB7fSxcbiAgICAgICAgY29udGV4dHMgPSBbXSxcbiAgICAgICAgdHlwZXMgPSBbXSxcbiAgICAgICAgaWRzID0gW10sXG4gICAgICAgIG9iamVjdEFyZ3MgPSAhcGFyYW1zLFxuICAgICAgICBwYXJhbTtcblxuICAgIGlmIChvYmplY3RBcmdzKSB7XG4gICAgICBwYXJhbXMgPSBbXTtcbiAgICB9XG5cbiAgICBvcHRpb25zLm5hbWUgPSB0aGlzLnF1b3RlZFN0cmluZyhoZWxwZXIpO1xuICAgIG9wdGlvbnMuaGFzaCA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICBvcHRpb25zLmhhc2hJZHMgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgb3B0aW9ucy5oYXNoVHlwZXMgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICBvcHRpb25zLmhhc2hDb250ZXh0cyA9IHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG5cbiAgICBsZXQgaW52ZXJzZSA9IHRoaXMucG9wU3RhY2soKSxcbiAgICAgICAgcHJvZ3JhbSA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIC8vIEF2b2lkIHNldHRpbmcgZm4gYW5kIGludmVyc2UgaWYgbmVpdGhlciBhcmUgc2V0LiBUaGlzIGFsbG93c1xuICAgIC8vIGhlbHBlcnMgdG8gZG8gYSBjaGVjayBmb3IgYGlmIChvcHRpb25zLmZuKWBcbiAgICBpZiAocHJvZ3JhbSB8fCBpbnZlcnNlKSB7XG4gICAgICBvcHRpb25zLmZuID0gcHJvZ3JhbSB8fCAnY29udGFpbmVyLm5vb3AnO1xuICAgICAgb3B0aW9ucy5pbnZlcnNlID0gaW52ZXJzZSB8fCAnY29udGFpbmVyLm5vb3AnO1xuICAgIH1cblxuICAgIC8vIFRoZSBwYXJhbWV0ZXJzIGdvIG9uIHRvIHRoZSBzdGFjayBpbiBvcmRlciAobWFraW5nIHN1cmUgdGhhdCB0aGV5IGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIpXG4gICAgLy8gc28gd2UgbmVlZCB0byBwb3AgdGhlbSBvZmYgdGhlIHN0YWNrIGluIHJldmVyc2Ugb3JkZXJcbiAgICBsZXQgaSA9IHBhcmFtU2l6ZTtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBwYXJhbSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIHBhcmFtc1tpXSA9IHBhcmFtO1xuXG4gICAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgICBpZHNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgICAgdHlwZXNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICAgIGNvbnRleHRzW2ldID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvYmplY3RBcmdzKSB7XG4gICAgICBvcHRpb25zLmFyZ3MgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHBhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgIG9wdGlvbnMuaWRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShpZHMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIG9wdGlvbnMudHlwZXMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHR5cGVzKTtcbiAgICAgIG9wdGlvbnMuY29udGV4dHMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGNvbnRleHRzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHtcbiAgICAgIG9wdGlvbnMuZGF0YSA9ICdkYXRhJztcbiAgICB9XG4gICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHtcbiAgICAgIG9wdGlvbnMuYmxvY2tQYXJhbXMgPSAnYmxvY2tQYXJhbXMnO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfSxcblxuICBzZXR1cEhlbHBlckFyZ3M6IGZ1bmN0aW9uKGhlbHBlciwgcGFyYW1TaXplLCBwYXJhbXMsIHVzZVJlZ2lzdGVyKSB7XG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLnNldHVwUGFyYW1zKGhlbHBlciwgcGFyYW1TaXplLCBwYXJhbXMpO1xuICAgIG9wdGlvbnMgPSB0aGlzLm9iamVjdExpdGVyYWwob3B0aW9ucyk7XG4gICAgaWYgKHVzZVJlZ2lzdGVyKSB7XG4gICAgICB0aGlzLnVzZVJlZ2lzdGVyKCdvcHRpb25zJyk7XG4gICAgICBwYXJhbXMucHVzaCgnb3B0aW9ucycpO1xuICAgICAgcmV0dXJuIFsnb3B0aW9ucz0nLCBvcHRpb25zXTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcykge1xuICAgICAgcGFyYW1zLnB1c2gob3B0aW9ucyk7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cbiAgfVxufTtcblxuXG4oZnVuY3Rpb24oKSB7XG4gIGNvbnN0IHJlc2VydmVkV29yZHMgPSAoXG4gICAgJ2JyZWFrIGVsc2UgbmV3IHZhcicgK1xuICAgICcgY2FzZSBmaW5hbGx5IHJldHVybiB2b2lkJyArXG4gICAgJyBjYXRjaCBmb3Igc3dpdGNoIHdoaWxlJyArXG4gICAgJyBjb250aW51ZSBmdW5jdGlvbiB0aGlzIHdpdGgnICtcbiAgICAnIGRlZmF1bHQgaWYgdGhyb3cnICtcbiAgICAnIGRlbGV0ZSBpbiB0cnknICtcbiAgICAnIGRvIGluc3RhbmNlb2YgdHlwZW9mJyArXG4gICAgJyBhYnN0cmFjdCBlbnVtIGludCBzaG9ydCcgK1xuICAgICcgYm9vbGVhbiBleHBvcnQgaW50ZXJmYWNlIHN0YXRpYycgK1xuICAgICcgYnl0ZSBleHRlbmRzIGxvbmcgc3VwZXInICtcbiAgICAnIGNoYXIgZmluYWwgbmF0aXZlIHN5bmNocm9uaXplZCcgK1xuICAgICcgY2xhc3MgZmxvYXQgcGFja2FnZSB0aHJvd3MnICtcbiAgICAnIGNvbnN0IGdvdG8gcHJpdmF0ZSB0cmFuc2llbnQnICtcbiAgICAnIGRlYnVnZ2VyIGltcGxlbWVudHMgcHJvdGVjdGVkIHZvbGF0aWxlJyArXG4gICAgJyBkb3VibGUgaW1wb3J0IHB1YmxpYyBsZXQgeWllbGQgYXdhaXQnICtcbiAgICAnIG51bGwgdHJ1ZSBmYWxzZSdcbiAgKS5zcGxpdCgnICcpO1xuXG4gIGNvbnN0IGNvbXBpbGVyV29yZHMgPSBKYXZhU2NyaXB0Q29tcGlsZXIuUkVTRVJWRURfV09SRFMgPSB7fTtcblxuICBmb3IgKGxldCBpID0gMCwgbCA9IHJlc2VydmVkV29yZHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgY29tcGlsZXJXb3Jkc1tyZXNlcnZlZFdvcmRzW2ldXSA9IHRydWU7XG4gIH1cbn0oKSk7XG5cbkphdmFTY3JpcHRDb21waWxlci5pc1ZhbGlkSmF2YVNjcmlwdFZhcmlhYmxlTmFtZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICFKYXZhU2NyaXB0Q29tcGlsZXIuUkVTRVJWRURfV09SRFNbbmFtZV0gJiYgKC9eW2EtekEtWl8kXVswLTlhLXpBLVpfJF0qJC8pLnRlc3QobmFtZSk7XG59O1xuXG5mdW5jdGlvbiBzdHJpY3RMb29rdXAocmVxdWlyZVRlcm1pbmFsLCBjb21waWxlciwgcGFydHMsIHR5cGUpIHtcbiAgbGV0IHN0YWNrID0gY29tcGlsZXIucG9wU3RhY2soKSxcbiAgICAgIGkgPSAwLFxuICAgICAgbGVuID0gcGFydHMubGVuZ3RoO1xuICBpZiAocmVxdWlyZVRlcm1pbmFsKSB7XG4gICAgbGVuLS07XG4gIH1cblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgc3RhY2sgPSBjb21waWxlci5uYW1lTG9va3VwKHN0YWNrLCBwYXJ0c1tpXSwgdHlwZSk7XG4gIH1cblxuICBpZiAocmVxdWlyZVRlcm1pbmFsKSB7XG4gICAgcmV0dXJuIFtjb21waWxlci5hbGlhc2FibGUoJ2NvbnRhaW5lci5zdHJpY3QnKSwgJygnLCBzdGFjaywgJywgJywgY29tcGlsZXIucXVvdGVkU3RyaW5nKHBhcnRzW2ldKSwgJyknXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSmF2YVNjcmlwdENvbXBpbGVyO1xuIl19
|