create-leo-app 0.7.2 → 0.7.3
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/package.json +10 -2
- package/template-extension/README.md +4 -0
- package/template-extension/package.json +15 -0
- package/template-extension/rollup.config.js +21 -0
- package/template-extension/src/offscreen.js +1 -0
- package/template-extension/src/service_worker.js +20 -0
- package/template-extension/src/worker.js +34 -0
- package/template-extension/static/manifest.json +16 -0
- package/template-extension/static/offscreen.html +9 -0
- package/template-nextjs-ts/README.md +19 -0
- package/template-nextjs-ts/_gitignore +35 -0
- package/template-nextjs-ts/next-env.d.ts +5 -0
- package/template-nextjs-ts/next.config.js +32 -0
- package/template-nextjs-ts/node_modules/@types/node/LICENSE +21 -0
- package/template-nextjs-ts/node_modules/@types/node/README.md +15 -0
- package/template-nextjs-ts/node_modules/@types/node/assert/strict.d.ts +8 -0
- package/template-nextjs-ts/node_modules/@types/node/assert.d.ts +1040 -0
- package/template-nextjs-ts/node_modules/@types/node/async_hooks.d.ts +541 -0
- package/template-nextjs-ts/node_modules/@types/node/buffer.d.ts +2301 -0
- package/template-nextjs-ts/node_modules/@types/node/child_process.d.ts +1544 -0
- package/template-nextjs-ts/node_modules/@types/node/cluster.d.ts +578 -0
- package/template-nextjs-ts/node_modules/@types/node/console.d.ts +452 -0
- package/template-nextjs-ts/node_modules/@types/node/constants.d.ts +19 -0
- package/template-nextjs-ts/node_modules/@types/node/crypto.d.ts +4524 -0
- package/template-nextjs-ts/node_modules/@types/node/dgram.d.ts +596 -0
- package/template-nextjs-ts/node_modules/@types/node/diagnostics_channel.d.ts +554 -0
- package/template-nextjs-ts/node_modules/@types/node/dns/promises.d.ts +476 -0
- package/template-nextjs-ts/node_modules/@types/node/dns.d.ts +864 -0
- package/template-nextjs-ts/node_modules/@types/node/dom-events.d.ts +124 -0
- package/template-nextjs-ts/node_modules/@types/node/domain.d.ts +170 -0
- package/template-nextjs-ts/node_modules/@types/node/events.d.ts +931 -0
- package/template-nextjs-ts/node_modules/@types/node/fs/promises.d.ts +1245 -0
- package/template-nextjs-ts/node_modules/@types/node/fs.d.ts +4317 -0
- package/template-nextjs-ts/node_modules/@types/node/globals.d.ts +503 -0
- package/template-nextjs-ts/node_modules/@types/node/globals.global.d.ts +1 -0
- package/template-nextjs-ts/node_modules/@types/node/http.d.ts +1908 -0
- package/template-nextjs-ts/node_modules/@types/node/http2.d.ts +2418 -0
- package/template-nextjs-ts/node_modules/@types/node/https.d.ts +550 -0
- package/template-nextjs-ts/node_modules/@types/node/index.d.ts +89 -0
- package/template-nextjs-ts/node_modules/@types/node/inspector.d.ts +3696 -0
- package/template-nextjs-ts/node_modules/@types/node/module.d.ts +315 -0
- package/template-nextjs-ts/node_modules/@types/node/net.d.ts +999 -0
- package/template-nextjs-ts/node_modules/@types/node/os.d.ts +495 -0
- package/template-nextjs-ts/node_modules/@types/node/package.json +217 -0
- package/template-nextjs-ts/node_modules/@types/node/path.d.ts +191 -0
- package/template-nextjs-ts/node_modules/@types/node/perf_hooks.d.ts +934 -0
- package/template-nextjs-ts/node_modules/@types/node/process.d.ts +1879 -0
- package/template-nextjs-ts/node_modules/@types/node/punycode.d.ts +117 -0
- package/template-nextjs-ts/node_modules/@types/node/querystring.d.ts +153 -0
- package/template-nextjs-ts/node_modules/@types/node/readline/promises.d.ts +150 -0
- package/template-nextjs-ts/node_modules/@types/node/readline.d.ts +540 -0
- package/template-nextjs-ts/node_modules/@types/node/repl.d.ts +430 -0
- package/template-nextjs-ts/node_modules/@types/node/sea.d.ts +153 -0
- package/template-nextjs-ts/node_modules/@types/node/stream/consumers.d.ts +12 -0
- package/template-nextjs-ts/node_modules/@types/node/stream/promises.d.ts +83 -0
- package/template-nextjs-ts/node_modules/@types/node/stream/web.d.ts +521 -0
- package/template-nextjs-ts/node_modules/@types/node/stream.d.ts +1707 -0
- package/template-nextjs-ts/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/template-nextjs-ts/node_modules/@types/node/test.d.ts +1874 -0
- package/template-nextjs-ts/node_modules/@types/node/timers/promises.d.ts +97 -0
- package/template-nextjs-ts/node_modules/@types/node/timers.d.ts +240 -0
- package/template-nextjs-ts/node_modules/@types/node/tls.d.ts +1217 -0
- package/template-nextjs-ts/node_modules/@types/node/trace_events.d.ts +197 -0
- package/template-nextjs-ts/node_modules/@types/node/tty.d.ts +208 -0
- package/template-nextjs-ts/node_modules/@types/node/url.d.ts +952 -0
- package/template-nextjs-ts/node_modules/@types/node/util.d.ts +2298 -0
- package/template-nextjs-ts/node_modules/@types/node/v8.d.ts +808 -0
- package/template-nextjs-ts/node_modules/@types/node/vm.d.ts +924 -0
- package/template-nextjs-ts/node_modules/@types/node/wasi.d.ts +181 -0
- package/template-nextjs-ts/node_modules/@types/node/worker_threads.d.ts +694 -0
- package/template-nextjs-ts/node_modules/@types/node/zlib.d.ts +539 -0
- package/template-nextjs-ts/package.json +24 -0
- package/template-nextjs-ts/public/aleo.svg +8 -0
- package/template-nextjs-ts/public/next.svg +1 -0
- package/template-nextjs-ts/src/app/favicon.ico +0 -0
- package/template-nextjs-ts/src/app/globals.css +126 -0
- package/template-nextjs-ts/src/app/layout.tsx +22 -0
- package/template-nextjs-ts/src/app/page.module.css +160 -0
- package/template-nextjs-ts/src/app/page.tsx +94 -0
- package/template-nextjs-ts/src/app/worker.ts +47 -0
- package/template-nextjs-ts/tsconfig.json +27 -0
- package/template-node/README.md +5 -0
- package/template-node/_gitignore +24 -0
- package/template-node/package.json +12 -0
- package/template-node-ts/README.md +5 -0
- package/template-node-ts/_gitignore +24 -0
- package/template-node-ts/package.json +19 -0
- package/template-node-ts/rollup.config.js +19 -0
- package/template-node-ts/src/index.ts +65 -0
- package/template-node-ts/tsconfig.json +15 -0
- package/template-offline-public-transaction-ts/README.md +52 -0
- package/template-offline-public-transaction-ts/_gitignore +24 -0
- package/template-offline-public-transaction-ts/package.json +19 -0
- package/template-offline-public-transaction-ts/rollup.config.js +19 -0
- package/template-offline-public-transaction-ts/src/helpers.ts +70 -0
- package/template-offline-public-transaction-ts/src/index.ts +171 -0
- package/template-offline-public-transaction-ts/tsconfig.json +15 -0
- package/template-react-leo/.babelrc +6 -0
- package/template-react-leo/.eslintrc.cjs +20 -0
- package/template-react-leo/README.md +90 -0
- package/template-react-leo/_gitignore +24 -0
- package/template-react-leo/_headers +3 -0
- package/template-react-leo/helloworld/.env.example +2 -0
- package/template-react-leo/helloworld/README.md +13 -0
- package/template-react-leo/helloworld/build/main.aleo +7 -0
- package/template-react-leo/helloworld/build/program.json +6 -0
- package/template-react-leo/helloworld/inputs/helloworld.in +4 -0
- package/template-react-leo/helloworld/program.json +6 -0
- package/template-react-leo/helloworld/src/main.leo +7 -0
- package/template-react-leo/index.html +88 -0
- package/template-react-leo/install.sh +30 -0
- package/template-react-leo/package.json +44 -0
- package/template-react-leo/public/favicon.ico +0 -0
- package/template-react-leo/src/App.css +42 -0
- package/template-react-leo/src/App.jsx +103 -0
- package/template-react-leo/src/assets/aleo.svg +5 -0
- package/template-react-leo/src/assets/react.svg +1 -0
- package/template-react-leo/src/index.css +69 -0
- package/template-react-leo/src/main.jsx +10 -0
- package/template-react-leo/src/workers/AleoWorker.js +20 -0
- package/template-react-leo/src/workers/worker.js +72 -0
- package/template-react-leo/vite.config.js +16 -0
- package/template-react-leo/webpack.config.js +102 -0
- package/template-react-managed-worker/.babelrc +6 -0
- package/template-react-managed-worker/.eslintrc.cjs +20 -0
- package/template-react-managed-worker/README.md +8 -0
- package/template-react-managed-worker/_gitignore +24 -0
- package/template-react-managed-worker/index.html +88 -0
- package/template-react-managed-worker/package.json +41 -0
- package/template-react-managed-worker/public/favicon.ico +0 -0
- package/template-react-managed-worker/src/App.css +42 -0
- package/template-react-managed-worker/src/App.jsx +78 -0
- package/template-react-managed-worker/src/assets/aleo.png +0 -0
- package/template-react-managed-worker/src/assets/react.svg +1 -0
- package/template-react-managed-worker/src/index.css +69 -0
- package/template-react-managed-worker/src/main.jsx +10 -0
- package/template-react-managed-worker/vite.config.js +20 -0
- package/template-react-managed-worker/webpack.config.js +90 -0
- package/template-react-ts/.babelrc +7 -0
- package/template-react-ts/.eslintrc.cjs +20 -0
- package/template-react-ts/README.md +90 -0
- package/template-react-ts/_gitignore +24 -0
- package/template-react-ts/_headers +3 -0
- package/template-react-ts/helloworld/.env.example +2 -0
- package/template-react-ts/helloworld/README.md +13 -0
- package/template-react-ts/helloworld/build/main.aleo +7 -0
- package/template-react-ts/helloworld/build/program.json +6 -0
- package/template-react-ts/helloworld/inputs/helloworld.in +4 -0
- package/template-react-ts/helloworld/program.json +6 -0
- package/template-react-ts/helloworld/src/main.leo +7 -0
- package/template-react-ts/index.html +88 -0
- package/template-react-ts/install.sh +30 -0
- package/template-react-ts/node_modules/@types/node/LICENSE +21 -0
- package/template-react-ts/node_modules/@types/node/README.md +15 -0
- package/template-react-ts/node_modules/@types/node/assert/strict.d.ts +8 -0
- package/template-react-ts/node_modules/@types/node/assert.d.ts +1040 -0
- package/template-react-ts/node_modules/@types/node/async_hooks.d.ts +541 -0
- package/template-react-ts/node_modules/@types/node/buffer.d.ts +2301 -0
- package/template-react-ts/node_modules/@types/node/child_process.d.ts +1544 -0
- package/template-react-ts/node_modules/@types/node/cluster.d.ts +578 -0
- package/template-react-ts/node_modules/@types/node/console.d.ts +452 -0
- package/template-react-ts/node_modules/@types/node/constants.d.ts +19 -0
- package/template-react-ts/node_modules/@types/node/crypto.d.ts +4524 -0
- package/template-react-ts/node_modules/@types/node/dgram.d.ts +596 -0
- package/template-react-ts/node_modules/@types/node/diagnostics_channel.d.ts +554 -0
- package/template-react-ts/node_modules/@types/node/dns/promises.d.ts +476 -0
- package/template-react-ts/node_modules/@types/node/dns.d.ts +864 -0
- package/template-react-ts/node_modules/@types/node/dom-events.d.ts +124 -0
- package/template-react-ts/node_modules/@types/node/domain.d.ts +170 -0
- package/template-react-ts/node_modules/@types/node/events.d.ts +931 -0
- package/template-react-ts/node_modules/@types/node/fs/promises.d.ts +1245 -0
- package/template-react-ts/node_modules/@types/node/fs.d.ts +4317 -0
- package/template-react-ts/node_modules/@types/node/globals.d.ts +503 -0
- package/template-react-ts/node_modules/@types/node/globals.global.d.ts +1 -0
- package/template-react-ts/node_modules/@types/node/http.d.ts +1908 -0
- package/template-react-ts/node_modules/@types/node/http2.d.ts +2418 -0
- package/template-react-ts/node_modules/@types/node/https.d.ts +550 -0
- package/template-react-ts/node_modules/@types/node/index.d.ts +89 -0
- package/template-react-ts/node_modules/@types/node/inspector.d.ts +3696 -0
- package/template-react-ts/node_modules/@types/node/module.d.ts +315 -0
- package/template-react-ts/node_modules/@types/node/net.d.ts +999 -0
- package/template-react-ts/node_modules/@types/node/os.d.ts +495 -0
- package/template-react-ts/node_modules/@types/node/package.json +217 -0
- package/template-react-ts/node_modules/@types/node/path.d.ts +191 -0
- package/template-react-ts/node_modules/@types/node/perf_hooks.d.ts +934 -0
- package/template-react-ts/node_modules/@types/node/process.d.ts +1879 -0
- package/template-react-ts/node_modules/@types/node/punycode.d.ts +117 -0
- package/template-react-ts/node_modules/@types/node/querystring.d.ts +153 -0
- package/template-react-ts/node_modules/@types/node/readline/promises.d.ts +150 -0
- package/template-react-ts/node_modules/@types/node/readline.d.ts +540 -0
- package/template-react-ts/node_modules/@types/node/repl.d.ts +430 -0
- package/template-react-ts/node_modules/@types/node/sea.d.ts +153 -0
- package/template-react-ts/node_modules/@types/node/stream/consumers.d.ts +12 -0
- package/template-react-ts/node_modules/@types/node/stream/promises.d.ts +83 -0
- package/template-react-ts/node_modules/@types/node/stream/web.d.ts +521 -0
- package/template-react-ts/node_modules/@types/node/stream.d.ts +1707 -0
- package/template-react-ts/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/template-react-ts/node_modules/@types/node/test.d.ts +1874 -0
- package/template-react-ts/node_modules/@types/node/timers/promises.d.ts +97 -0
- package/template-react-ts/node_modules/@types/node/timers.d.ts +240 -0
- package/template-react-ts/node_modules/@types/node/tls.d.ts +1217 -0
- package/template-react-ts/node_modules/@types/node/trace_events.d.ts +197 -0
- package/template-react-ts/node_modules/@types/node/tty.d.ts +208 -0
- package/template-react-ts/node_modules/@types/node/url.d.ts +952 -0
- package/template-react-ts/node_modules/@types/node/util.d.ts +2298 -0
- package/template-react-ts/node_modules/@types/node/v8.d.ts +808 -0
- package/template-react-ts/node_modules/@types/node/vm.d.ts +924 -0
- package/template-react-ts/node_modules/@types/node/wasi.d.ts +181 -0
- package/template-react-ts/node_modules/@types/node/worker_threads.d.ts +694 -0
- package/template-react-ts/node_modules/@types/node/zlib.d.ts +539 -0
- package/template-react-ts/node_modules/diff/CONTRIBUTING.md +39 -0
- package/template-react-ts/node_modules/diff/LICENSE +31 -0
- package/template-react-ts/node_modules/diff/README.md +207 -0
- package/template-react-ts/node_modules/diff/dist/diff.js +1585 -0
- package/template-react-ts/node_modules/diff/dist/diff.min.js +38 -0
- package/template-react-ts/node_modules/diff/lib/convert/dmp.js +32 -0
- package/template-react-ts/node_modules/diff/lib/convert/xml.js +42 -0
- package/template-react-ts/node_modules/diff/lib/diff/array.js +45 -0
- package/template-react-ts/node_modules/diff/lib/diff/base.js +304 -0
- package/template-react-ts/node_modules/diff/lib/diff/character.js +37 -0
- package/template-react-ts/node_modules/diff/lib/diff/css.js +41 -0
- package/template-react-ts/node_modules/diff/lib/diff/json.js +163 -0
- package/template-react-ts/node_modules/diff/lib/diff/line.js +89 -0
- package/template-react-ts/node_modules/diff/lib/diff/sentence.js +41 -0
- package/template-react-ts/node_modules/diff/lib/diff/word.js +107 -0
- package/template-react-ts/node_modules/diff/lib/index.es6.js +1519 -0
- package/template-react-ts/node_modules/diff/lib/index.js +216 -0
- package/template-react-ts/node_modules/diff/lib/patch/apply.js +243 -0
- package/template-react-ts/node_modules/diff/lib/patch/create.js +247 -0
- package/template-react-ts/node_modules/diff/lib/patch/merge.js +609 -0
- package/template-react-ts/node_modules/diff/lib/patch/parse.js +156 -0
- package/template-react-ts/node_modules/diff/lib/util/array.js +32 -0
- package/template-react-ts/node_modules/diff/lib/util/distance-iterator.js +57 -0
- package/template-react-ts/node_modules/diff/lib/util/params.js +24 -0
- package/template-react-ts/node_modules/diff/package.json +73 -0
- package/template-react-ts/node_modules/diff/release-notes.md +261 -0
- package/template-react-ts/node_modules/diff/runtime.js +3 -0
- package/template-react-ts/node_modules/ts-node/LICENSE +21 -0
- package/template-react-ts/node_modules/ts-node/README.md +1442 -0
- package/template-react-ts/node_modules/ts-node/child-loader.mjs +8 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-cwd.d.ts +2 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-cwd.js +6 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-cwd.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-esm.d.ts +2 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-esm.js +6 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-esm.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-script-deprecated.d.ts +2 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-script-deprecated.js +7 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-script-deprecated.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-script.d.ts +2 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-script.js +6 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-script.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-transpile.d.ts +2 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-transpile.js +6 -0
- package/template-react-ts/node_modules/ts-node/dist/bin-transpile.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/bin.d.ts +11 -0
- package/template-react-ts/node_modules/ts-node/dist/bin.js +581 -0
- package/template-react-ts/node_modules/ts-node/dist/bin.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/child/argv-payload.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/child/argv-payload.js +19 -0
- package/template-react-ts/node_modules/ts-node/dist/child/argv-payload.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/child/child-entrypoint.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/child/child-entrypoint.js +24 -0
- package/template-react-ts/node_modules/ts-node/dist/child/child-entrypoint.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/child/child-loader.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/child/child-loader.js +32 -0
- package/template-react-ts/node_modules/ts-node/dist/child/child-loader.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/child/child-require.d.ts +7 -0
- package/template-react-ts/node_modules/ts-node/dist/child/child-require.js +22 -0
- package/template-react-ts/node_modules/ts-node/dist/child/child-require.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/child/spawn-child.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/child/spawn-child.js +49 -0
- package/template-react-ts/node_modules/ts-node/dist/child/spawn-child.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/cjs-resolve-hooks.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/cjs-resolve-hooks.js +29 -0
- package/template-react-ts/node_modules/ts-node/dist/cjs-resolve-hooks.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/configuration.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/configuration.js +308 -0
- package/template-react-ts/node_modules/ts-node/dist/configuration.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/esm.d.ts +53 -0
- package/template-react-ts/node_modules/ts-node/dist/esm.js +228 -0
- package/template-react-ts/node_modules/ts-node/dist/esm.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/file-extensions.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/file-extensions.js +133 -0
- package/template-react-ts/node_modules/ts-node/dist/file-extensions.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/index.d.ts +332 -0
- package/template-react-ts/node_modules/ts-node/dist/index.js +953 -0
- package/template-react-ts/node_modules/ts-node/dist/index.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/module-type-classifier.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/module-type-classifier.js +64 -0
- package/template-react-ts/node_modules/ts-node/dist/module-type-classifier.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/node-module-type-classifier.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/node-module-type-classifier.js +39 -0
- package/template-react-ts/node_modules/ts-node/dist/node-module-type-classifier.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/repl.d.ts +78 -0
- package/template-react-ts/node_modules/ts-node/dist/repl.js +561 -0
- package/template-react-ts/node_modules/ts-node/dist/repl.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/resolver-functions.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/resolver-functions.js +143 -0
- package/template-react-ts/node_modules/ts-node/dist/resolver-functions.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/transpilers/swc.d.ts +11 -0
- package/template-react-ts/node_modules/ts-node/dist/transpilers/swc.js +218 -0
- package/template-react-ts/node_modules/ts-node/dist/transpilers/swc.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/transpilers/types.d.ts +35 -0
- package/template-react-ts/node_modules/ts-node/dist/transpilers/types.js +3 -0
- package/template-react-ts/node_modules/ts-node/dist/transpilers/types.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/ts-compiler-types.d.ts +63 -0
- package/template-react-ts/node_modules/ts-node/dist/ts-compiler-types.js +3 -0
- package/template-react-ts/node_modules/ts-node/dist/ts-compiler-types.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/ts-internals.d.ts +6 -0
- package/template-react-ts/node_modules/ts-node/dist/ts-internals.js +321 -0
- package/template-react-ts/node_modules/ts-node/dist/ts-internals.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/ts-transpile-module.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/ts-transpile-module.js +100 -0
- package/template-react-ts/node_modules/ts-node/dist/ts-transpile-module.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/tsconfig-schema.d.ts +13 -0
- package/template-react-ts/node_modules/ts-node/dist/tsconfig-schema.js +3 -0
- package/template-react-ts/node_modules/ts-node/dist/tsconfig-schema.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/tsconfigs.d.ts +1 -0
- package/template-react-ts/node_modules/ts-node/dist/tsconfigs.js +36 -0
- package/template-react-ts/node_modules/ts-node/dist/tsconfigs.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist/util.d.ts +4 -0
- package/template-react-ts/node_modules/ts-node/dist/util.js +175 -0
- package/template-react-ts/node_modules/ts-node/dist/util.js.map +1 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/NODE-LICENSE.md +24 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/README.md +36 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-internal-constants.js +4 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-internal-errors.js +82 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-internal-modules-cjs-helpers.js +89 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-internal-modules-cjs-loader.js +593 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-internal-modules-esm-get_format.js +106 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-internal-modules-esm-resolve.js +962 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-internal-modules-package_json_reader.js +44 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-internal-repl-await.js +254 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-internalBinding-fs.js +58 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-nativemodule.js +9 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-options.js +103 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/node-primordials.js +37 -0
- package/template-react-ts/node_modules/ts-node/dist-raw/runmain-hack.js +9 -0
- package/template-react-ts/node_modules/ts-node/esm/transpile-only.mjs +8 -0
- package/template-react-ts/node_modules/ts-node/esm.mjs +8 -0
- package/template-react-ts/node_modules/ts-node/node10/tsconfig.json +3 -0
- package/template-react-ts/node_modules/ts-node/node12/tsconfig.json +3 -0
- package/template-react-ts/node_modules/ts-node/node14/tsconfig.json +3 -0
- package/template-react-ts/node_modules/ts-node/node16/tsconfig.json +3 -0
- package/template-react-ts/node_modules/ts-node/package.json +182 -0
- package/template-react-ts/node_modules/ts-node/register/files.js +3 -0
- package/template-react-ts/node_modules/ts-node/register/index.js +1 -0
- package/template-react-ts/node_modules/ts-node/register/transpile-only.js +3 -0
- package/template-react-ts/node_modules/ts-node/register/type-check.js +3 -0
- package/template-react-ts/node_modules/ts-node/transpilers/swc-experimental.js +1 -0
- package/template-react-ts/node_modules/ts-node/transpilers/swc.js +1 -0
- package/template-react-ts/node_modules/ts-node/tsconfig.schema.json +183 -0
- package/template-react-ts/node_modules/ts-node/tsconfig.schemastore-schema.json +1326 -0
- package/template-react-ts/package.json +49 -0
- package/template-react-ts/public/favicon.ico +0 -0
- package/template-react-ts/src/App.css +42 -0
- package/template-react-ts/src/App.tsx +103 -0
- package/template-react-ts/src/assets/aleo.svg +5 -0
- package/template-react-ts/src/assets/react.svg +1 -0
- package/template-react-ts/src/custom.d.ts +16 -0
- package/template-react-ts/src/index.css +69 -0
- package/template-react-ts/src/main.tsx +10 -0
- package/template-react-ts/src/workers/AleoWorker.ts +21 -0
- package/template-react-ts/src/workers/worker.ts +73 -0
- package/template-react-ts/tsconfig.json +16 -0
- package/template-react-ts/vite.config.ts +16 -0
- package/template-react-ts/webpack.config.ts +112 -0
- package/template-vanilla/_gitignore +24 -0
- package/template-vanilla/_headers +3 -0
- package/template-vanilla/index.html +13 -0
- package/template-vanilla/javascript.svg +1 -0
- package/template-vanilla/main.js +48 -0
- package/template-vanilla/package.json +16 -0
- package/template-vanilla/public/aleo.svg +76 -0
- package/template-vanilla/public/vite.svg +1 -0
- package/template-vanilla/style.css +97 -0
- package/template-vanilla/vite.config.js +12 -0
- package/template-vanilla/worker.js +95 -0
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
/*istanbul ignore start*/
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.calcLineCount = calcLineCount;
|
|
8
|
+
exports.merge = merge;
|
|
9
|
+
|
|
10
|
+
/*istanbul ignore end*/
|
|
11
|
+
var
|
|
12
|
+
/*istanbul ignore start*/
|
|
13
|
+
_create = require("./create")
|
|
14
|
+
/*istanbul ignore end*/
|
|
15
|
+
;
|
|
16
|
+
|
|
17
|
+
var
|
|
18
|
+
/*istanbul ignore start*/
|
|
19
|
+
_parse = require("./parse")
|
|
20
|
+
/*istanbul ignore end*/
|
|
21
|
+
;
|
|
22
|
+
|
|
23
|
+
var
|
|
24
|
+
/*istanbul ignore start*/
|
|
25
|
+
_array = require("../util/array")
|
|
26
|
+
/*istanbul ignore end*/
|
|
27
|
+
;
|
|
28
|
+
|
|
29
|
+
/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
|
|
30
|
+
|
|
31
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
|
|
32
|
+
|
|
33
|
+
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
|
|
34
|
+
|
|
35
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
|
|
36
|
+
|
|
37
|
+
/*istanbul ignore end*/
|
|
38
|
+
function calcLineCount(hunk) {
|
|
39
|
+
/*istanbul ignore start*/
|
|
40
|
+
var _calcOldNewLineCount =
|
|
41
|
+
/*istanbul ignore end*/
|
|
42
|
+
calcOldNewLineCount(hunk.lines),
|
|
43
|
+
oldLines = _calcOldNewLineCount.oldLines,
|
|
44
|
+
newLines = _calcOldNewLineCount.newLines;
|
|
45
|
+
|
|
46
|
+
if (oldLines !== undefined) {
|
|
47
|
+
hunk.oldLines = oldLines;
|
|
48
|
+
} else {
|
|
49
|
+
delete hunk.oldLines;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (newLines !== undefined) {
|
|
53
|
+
hunk.newLines = newLines;
|
|
54
|
+
} else {
|
|
55
|
+
delete hunk.newLines;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function merge(mine, theirs, base) {
|
|
60
|
+
mine = loadPatch(mine, base);
|
|
61
|
+
theirs = loadPatch(theirs, base);
|
|
62
|
+
var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.
|
|
63
|
+
// Leaving sanity checks on this to the API consumer that may know more about the
|
|
64
|
+
// meaning in their own context.
|
|
65
|
+
|
|
66
|
+
if (mine.index || theirs.index) {
|
|
67
|
+
ret.index = mine.index || theirs.index;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (mine.newFileName || theirs.newFileName) {
|
|
71
|
+
if (!fileNameChanged(mine)) {
|
|
72
|
+
// No header or no change in ours, use theirs (and ours if theirs does not exist)
|
|
73
|
+
ret.oldFileName = theirs.oldFileName || mine.oldFileName;
|
|
74
|
+
ret.newFileName = theirs.newFileName || mine.newFileName;
|
|
75
|
+
ret.oldHeader = theirs.oldHeader || mine.oldHeader;
|
|
76
|
+
ret.newHeader = theirs.newHeader || mine.newHeader;
|
|
77
|
+
} else if (!fileNameChanged(theirs)) {
|
|
78
|
+
// No header or no change in theirs, use ours
|
|
79
|
+
ret.oldFileName = mine.oldFileName;
|
|
80
|
+
ret.newFileName = mine.newFileName;
|
|
81
|
+
ret.oldHeader = mine.oldHeader;
|
|
82
|
+
ret.newHeader = mine.newHeader;
|
|
83
|
+
} else {
|
|
84
|
+
// Both changed... figure it out
|
|
85
|
+
ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
|
|
86
|
+
ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
|
|
87
|
+
ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
|
|
88
|
+
ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
ret.hunks = [];
|
|
93
|
+
var mineIndex = 0,
|
|
94
|
+
theirsIndex = 0,
|
|
95
|
+
mineOffset = 0,
|
|
96
|
+
theirsOffset = 0;
|
|
97
|
+
|
|
98
|
+
while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
|
|
99
|
+
var mineCurrent = mine.hunks[mineIndex] || {
|
|
100
|
+
oldStart: Infinity
|
|
101
|
+
},
|
|
102
|
+
theirsCurrent = theirs.hunks[theirsIndex] || {
|
|
103
|
+
oldStart: Infinity
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
if (hunkBefore(mineCurrent, theirsCurrent)) {
|
|
107
|
+
// This patch does not overlap with any of the others, yay.
|
|
108
|
+
ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
|
|
109
|
+
mineIndex++;
|
|
110
|
+
theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
|
|
111
|
+
} else if (hunkBefore(theirsCurrent, mineCurrent)) {
|
|
112
|
+
// This patch does not overlap with any of the others, yay.
|
|
113
|
+
ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
|
|
114
|
+
theirsIndex++;
|
|
115
|
+
mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
|
|
116
|
+
} else {
|
|
117
|
+
// Overlap, merge as best we can
|
|
118
|
+
var mergedHunk = {
|
|
119
|
+
oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
|
|
120
|
+
oldLines: 0,
|
|
121
|
+
newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
|
|
122
|
+
newLines: 0,
|
|
123
|
+
lines: []
|
|
124
|
+
};
|
|
125
|
+
mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
|
|
126
|
+
theirsIndex++;
|
|
127
|
+
mineIndex++;
|
|
128
|
+
ret.hunks.push(mergedHunk);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return ret;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function loadPatch(param, base) {
|
|
136
|
+
if (typeof param === 'string') {
|
|
137
|
+
if (/^@@/m.test(param) || /^Index:/m.test(param)) {
|
|
138
|
+
return (
|
|
139
|
+
/*istanbul ignore start*/
|
|
140
|
+
(0,
|
|
141
|
+
/*istanbul ignore end*/
|
|
142
|
+
|
|
143
|
+
/*istanbul ignore start*/
|
|
144
|
+
_parse
|
|
145
|
+
/*istanbul ignore end*/
|
|
146
|
+
.
|
|
147
|
+
/*istanbul ignore start*/
|
|
148
|
+
parsePatch)
|
|
149
|
+
/*istanbul ignore end*/
|
|
150
|
+
(param)[0]
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (!base) {
|
|
155
|
+
throw new Error('Must provide a base reference or pass in a patch');
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return (
|
|
159
|
+
/*istanbul ignore start*/
|
|
160
|
+
(0,
|
|
161
|
+
/*istanbul ignore end*/
|
|
162
|
+
|
|
163
|
+
/*istanbul ignore start*/
|
|
164
|
+
_create
|
|
165
|
+
/*istanbul ignore end*/
|
|
166
|
+
.
|
|
167
|
+
/*istanbul ignore start*/
|
|
168
|
+
structuredPatch)
|
|
169
|
+
/*istanbul ignore end*/
|
|
170
|
+
(undefined, undefined, base, param)
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return param;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function fileNameChanged(patch) {
|
|
178
|
+
return patch.newFileName && patch.newFileName !== patch.oldFileName;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function selectField(index, mine, theirs) {
|
|
182
|
+
if (mine === theirs) {
|
|
183
|
+
return mine;
|
|
184
|
+
} else {
|
|
185
|
+
index.conflict = true;
|
|
186
|
+
return {
|
|
187
|
+
mine: mine,
|
|
188
|
+
theirs: theirs
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function hunkBefore(test, check) {
|
|
194
|
+
return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function cloneHunk(hunk, offset) {
|
|
198
|
+
return {
|
|
199
|
+
oldStart: hunk.oldStart,
|
|
200
|
+
oldLines: hunk.oldLines,
|
|
201
|
+
newStart: hunk.newStart + offset,
|
|
202
|
+
newLines: hunk.newLines,
|
|
203
|
+
lines: hunk.lines
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
|
|
208
|
+
// This will generally result in a conflicted hunk, but there are cases where the context
|
|
209
|
+
// is the only overlap where we can successfully merge the content here.
|
|
210
|
+
var mine = {
|
|
211
|
+
offset: mineOffset,
|
|
212
|
+
lines: mineLines,
|
|
213
|
+
index: 0
|
|
214
|
+
},
|
|
215
|
+
their = {
|
|
216
|
+
offset: theirOffset,
|
|
217
|
+
lines: theirLines,
|
|
218
|
+
index: 0
|
|
219
|
+
}; // Handle any leading content
|
|
220
|
+
|
|
221
|
+
insertLeading(hunk, mine, their);
|
|
222
|
+
insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.
|
|
223
|
+
|
|
224
|
+
while (mine.index < mine.lines.length && their.index < their.lines.length) {
|
|
225
|
+
var mineCurrent = mine.lines[mine.index],
|
|
226
|
+
theirCurrent = their.lines[their.index];
|
|
227
|
+
|
|
228
|
+
if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
|
|
229
|
+
// Both modified ...
|
|
230
|
+
mutualChange(hunk, mine, their);
|
|
231
|
+
} else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
|
|
232
|
+
/*istanbul ignore start*/
|
|
233
|
+
var _hunk$lines;
|
|
234
|
+
|
|
235
|
+
/*istanbul ignore end*/
|
|
236
|
+
// Mine inserted
|
|
237
|
+
|
|
238
|
+
/*istanbul ignore start*/
|
|
239
|
+
(_hunk$lines =
|
|
240
|
+
/*istanbul ignore end*/
|
|
241
|
+
hunk.lines).push.
|
|
242
|
+
/*istanbul ignore start*/
|
|
243
|
+
apply
|
|
244
|
+
/*istanbul ignore end*/
|
|
245
|
+
(
|
|
246
|
+
/*istanbul ignore start*/
|
|
247
|
+
_hunk$lines
|
|
248
|
+
/*istanbul ignore end*/
|
|
249
|
+
,
|
|
250
|
+
/*istanbul ignore start*/
|
|
251
|
+
_toConsumableArray(
|
|
252
|
+
/*istanbul ignore end*/
|
|
253
|
+
collectChange(mine)));
|
|
254
|
+
} else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
|
|
255
|
+
/*istanbul ignore start*/
|
|
256
|
+
var _hunk$lines2;
|
|
257
|
+
|
|
258
|
+
/*istanbul ignore end*/
|
|
259
|
+
// Theirs inserted
|
|
260
|
+
|
|
261
|
+
/*istanbul ignore start*/
|
|
262
|
+
(_hunk$lines2 =
|
|
263
|
+
/*istanbul ignore end*/
|
|
264
|
+
hunk.lines).push.
|
|
265
|
+
/*istanbul ignore start*/
|
|
266
|
+
apply
|
|
267
|
+
/*istanbul ignore end*/
|
|
268
|
+
(
|
|
269
|
+
/*istanbul ignore start*/
|
|
270
|
+
_hunk$lines2
|
|
271
|
+
/*istanbul ignore end*/
|
|
272
|
+
,
|
|
273
|
+
/*istanbul ignore start*/
|
|
274
|
+
_toConsumableArray(
|
|
275
|
+
/*istanbul ignore end*/
|
|
276
|
+
collectChange(their)));
|
|
277
|
+
} else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
|
|
278
|
+
// Mine removed or edited
|
|
279
|
+
removal(hunk, mine, their);
|
|
280
|
+
} else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
|
|
281
|
+
// Their removed or edited
|
|
282
|
+
removal(hunk, their, mine, true);
|
|
283
|
+
} else if (mineCurrent === theirCurrent) {
|
|
284
|
+
// Context identity
|
|
285
|
+
hunk.lines.push(mineCurrent);
|
|
286
|
+
mine.index++;
|
|
287
|
+
their.index++;
|
|
288
|
+
} else {
|
|
289
|
+
// Context mismatch
|
|
290
|
+
conflict(hunk, collectChange(mine), collectChange(their));
|
|
291
|
+
}
|
|
292
|
+
} // Now push anything that may be remaining
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
insertTrailing(hunk, mine);
|
|
296
|
+
insertTrailing(hunk, their);
|
|
297
|
+
calcLineCount(hunk);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
function mutualChange(hunk, mine, their) {
|
|
301
|
+
var myChanges = collectChange(mine),
|
|
302
|
+
theirChanges = collectChange(their);
|
|
303
|
+
|
|
304
|
+
if (allRemoves(myChanges) && allRemoves(theirChanges)) {
|
|
305
|
+
// Special case for remove changes that are supersets of one another
|
|
306
|
+
if (
|
|
307
|
+
/*istanbul ignore start*/
|
|
308
|
+
(0,
|
|
309
|
+
/*istanbul ignore end*/
|
|
310
|
+
|
|
311
|
+
/*istanbul ignore start*/
|
|
312
|
+
_array
|
|
313
|
+
/*istanbul ignore end*/
|
|
314
|
+
.
|
|
315
|
+
/*istanbul ignore start*/
|
|
316
|
+
arrayStartsWith)
|
|
317
|
+
/*istanbul ignore end*/
|
|
318
|
+
(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
|
|
319
|
+
/*istanbul ignore start*/
|
|
320
|
+
var _hunk$lines3;
|
|
321
|
+
|
|
322
|
+
/*istanbul ignore end*/
|
|
323
|
+
|
|
324
|
+
/*istanbul ignore start*/
|
|
325
|
+
(_hunk$lines3 =
|
|
326
|
+
/*istanbul ignore end*/
|
|
327
|
+
hunk.lines).push.
|
|
328
|
+
/*istanbul ignore start*/
|
|
329
|
+
apply
|
|
330
|
+
/*istanbul ignore end*/
|
|
331
|
+
(
|
|
332
|
+
/*istanbul ignore start*/
|
|
333
|
+
_hunk$lines3
|
|
334
|
+
/*istanbul ignore end*/
|
|
335
|
+
,
|
|
336
|
+
/*istanbul ignore start*/
|
|
337
|
+
_toConsumableArray(
|
|
338
|
+
/*istanbul ignore end*/
|
|
339
|
+
myChanges));
|
|
340
|
+
|
|
341
|
+
return;
|
|
342
|
+
} else if (
|
|
343
|
+
/*istanbul ignore start*/
|
|
344
|
+
(0,
|
|
345
|
+
/*istanbul ignore end*/
|
|
346
|
+
|
|
347
|
+
/*istanbul ignore start*/
|
|
348
|
+
_array
|
|
349
|
+
/*istanbul ignore end*/
|
|
350
|
+
.
|
|
351
|
+
/*istanbul ignore start*/
|
|
352
|
+
arrayStartsWith)
|
|
353
|
+
/*istanbul ignore end*/
|
|
354
|
+
(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
|
|
355
|
+
/*istanbul ignore start*/
|
|
356
|
+
var _hunk$lines4;
|
|
357
|
+
|
|
358
|
+
/*istanbul ignore end*/
|
|
359
|
+
|
|
360
|
+
/*istanbul ignore start*/
|
|
361
|
+
(_hunk$lines4 =
|
|
362
|
+
/*istanbul ignore end*/
|
|
363
|
+
hunk.lines).push.
|
|
364
|
+
/*istanbul ignore start*/
|
|
365
|
+
apply
|
|
366
|
+
/*istanbul ignore end*/
|
|
367
|
+
(
|
|
368
|
+
/*istanbul ignore start*/
|
|
369
|
+
_hunk$lines4
|
|
370
|
+
/*istanbul ignore end*/
|
|
371
|
+
,
|
|
372
|
+
/*istanbul ignore start*/
|
|
373
|
+
_toConsumableArray(
|
|
374
|
+
/*istanbul ignore end*/
|
|
375
|
+
theirChanges));
|
|
376
|
+
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
} else if (
|
|
380
|
+
/*istanbul ignore start*/
|
|
381
|
+
(0,
|
|
382
|
+
/*istanbul ignore end*/
|
|
383
|
+
|
|
384
|
+
/*istanbul ignore start*/
|
|
385
|
+
_array
|
|
386
|
+
/*istanbul ignore end*/
|
|
387
|
+
.
|
|
388
|
+
/*istanbul ignore start*/
|
|
389
|
+
arrayEqual)
|
|
390
|
+
/*istanbul ignore end*/
|
|
391
|
+
(myChanges, theirChanges)) {
|
|
392
|
+
/*istanbul ignore start*/
|
|
393
|
+
var _hunk$lines5;
|
|
394
|
+
|
|
395
|
+
/*istanbul ignore end*/
|
|
396
|
+
|
|
397
|
+
/*istanbul ignore start*/
|
|
398
|
+
(_hunk$lines5 =
|
|
399
|
+
/*istanbul ignore end*/
|
|
400
|
+
hunk.lines).push.
|
|
401
|
+
/*istanbul ignore start*/
|
|
402
|
+
apply
|
|
403
|
+
/*istanbul ignore end*/
|
|
404
|
+
(
|
|
405
|
+
/*istanbul ignore start*/
|
|
406
|
+
_hunk$lines5
|
|
407
|
+
/*istanbul ignore end*/
|
|
408
|
+
,
|
|
409
|
+
/*istanbul ignore start*/
|
|
410
|
+
_toConsumableArray(
|
|
411
|
+
/*istanbul ignore end*/
|
|
412
|
+
myChanges));
|
|
413
|
+
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
conflict(hunk, myChanges, theirChanges);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
function removal(hunk, mine, their, swap) {
|
|
421
|
+
var myChanges = collectChange(mine),
|
|
422
|
+
theirChanges = collectContext(their, myChanges);
|
|
423
|
+
|
|
424
|
+
if (theirChanges.merged) {
|
|
425
|
+
/*istanbul ignore start*/
|
|
426
|
+
var _hunk$lines6;
|
|
427
|
+
|
|
428
|
+
/*istanbul ignore end*/
|
|
429
|
+
|
|
430
|
+
/*istanbul ignore start*/
|
|
431
|
+
(_hunk$lines6 =
|
|
432
|
+
/*istanbul ignore end*/
|
|
433
|
+
hunk.lines).push.
|
|
434
|
+
/*istanbul ignore start*/
|
|
435
|
+
apply
|
|
436
|
+
/*istanbul ignore end*/
|
|
437
|
+
(
|
|
438
|
+
/*istanbul ignore start*/
|
|
439
|
+
_hunk$lines6
|
|
440
|
+
/*istanbul ignore end*/
|
|
441
|
+
,
|
|
442
|
+
/*istanbul ignore start*/
|
|
443
|
+
_toConsumableArray(
|
|
444
|
+
/*istanbul ignore end*/
|
|
445
|
+
theirChanges.merged));
|
|
446
|
+
} else {
|
|
447
|
+
conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
function conflict(hunk, mine, their) {
|
|
452
|
+
hunk.conflict = true;
|
|
453
|
+
hunk.lines.push({
|
|
454
|
+
conflict: true,
|
|
455
|
+
mine: mine,
|
|
456
|
+
theirs: their
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
function insertLeading(hunk, insert, their) {
|
|
461
|
+
while (insert.offset < their.offset && insert.index < insert.lines.length) {
|
|
462
|
+
var line = insert.lines[insert.index++];
|
|
463
|
+
hunk.lines.push(line);
|
|
464
|
+
insert.offset++;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
function insertTrailing(hunk, insert) {
|
|
469
|
+
while (insert.index < insert.lines.length) {
|
|
470
|
+
var line = insert.lines[insert.index++];
|
|
471
|
+
hunk.lines.push(line);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
function collectChange(state) {
|
|
476
|
+
var ret = [],
|
|
477
|
+
operation = state.lines[state.index][0];
|
|
478
|
+
|
|
479
|
+
while (state.index < state.lines.length) {
|
|
480
|
+
var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
|
|
481
|
+
|
|
482
|
+
if (operation === '-' && line[0] === '+') {
|
|
483
|
+
operation = '+';
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
if (operation === line[0]) {
|
|
487
|
+
ret.push(line);
|
|
488
|
+
state.index++;
|
|
489
|
+
} else {
|
|
490
|
+
break;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
return ret;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
function collectContext(state, matchChanges) {
|
|
498
|
+
var changes = [],
|
|
499
|
+
merged = [],
|
|
500
|
+
matchIndex = 0,
|
|
501
|
+
contextChanges = false,
|
|
502
|
+
conflicted = false;
|
|
503
|
+
|
|
504
|
+
while (matchIndex < matchChanges.length && state.index < state.lines.length) {
|
|
505
|
+
var change = state.lines[state.index],
|
|
506
|
+
match = matchChanges[matchIndex]; // Once we've hit our add, then we are done
|
|
507
|
+
|
|
508
|
+
if (match[0] === '+') {
|
|
509
|
+
break;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
contextChanges = contextChanges || change[0] !== ' ';
|
|
513
|
+
merged.push(match);
|
|
514
|
+
matchIndex++; // Consume any additions in the other block as a conflict to attempt
|
|
515
|
+
// to pull in the remaining context after this
|
|
516
|
+
|
|
517
|
+
if (change[0] === '+') {
|
|
518
|
+
conflicted = true;
|
|
519
|
+
|
|
520
|
+
while (change[0] === '+') {
|
|
521
|
+
changes.push(change);
|
|
522
|
+
change = state.lines[++state.index];
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
if (match.substr(1) === change.substr(1)) {
|
|
527
|
+
changes.push(change);
|
|
528
|
+
state.index++;
|
|
529
|
+
} else {
|
|
530
|
+
conflicted = true;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
|
|
535
|
+
conflicted = true;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
if (conflicted) {
|
|
539
|
+
return changes;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
while (matchIndex < matchChanges.length) {
|
|
543
|
+
merged.push(matchChanges[matchIndex++]);
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
return {
|
|
547
|
+
merged: merged,
|
|
548
|
+
changes: changes
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
function allRemoves(changes) {
|
|
553
|
+
return changes.reduce(function (prev, change) {
|
|
554
|
+
return prev && change[0] === '-';
|
|
555
|
+
}, true);
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
function skipRemoveSuperset(state, removeChanges, delta) {
|
|
559
|
+
for (var i = 0; i < delta; i++) {
|
|
560
|
+
var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
|
|
561
|
+
|
|
562
|
+
if (state.lines[state.index + i] !== ' ' + changeContent) {
|
|
563
|
+
return false;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
state.index += delta;
|
|
568
|
+
return true;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
function calcOldNewLineCount(lines) {
|
|
572
|
+
var oldLines = 0;
|
|
573
|
+
var newLines = 0;
|
|
574
|
+
lines.forEach(function (line) {
|
|
575
|
+
if (typeof line !== 'string') {
|
|
576
|
+
var myCount = calcOldNewLineCount(line.mine);
|
|
577
|
+
var theirCount = calcOldNewLineCount(line.theirs);
|
|
578
|
+
|
|
579
|
+
if (oldLines !== undefined) {
|
|
580
|
+
if (myCount.oldLines === theirCount.oldLines) {
|
|
581
|
+
oldLines += myCount.oldLines;
|
|
582
|
+
} else {
|
|
583
|
+
oldLines = undefined;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
if (newLines !== undefined) {
|
|
588
|
+
if (myCount.newLines === theirCount.newLines) {
|
|
589
|
+
newLines += myCount.newLines;
|
|
590
|
+
} else {
|
|
591
|
+
newLines = undefined;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
} else {
|
|
595
|
+
if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
|
|
596
|
+
newLines++;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
|
|
600
|
+
oldLines++;
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
});
|
|
604
|
+
return {
|
|
605
|
+
oldLines: oldLines,
|
|
606
|
+
newLines: newLines
|
|
607
|
+
};
|
|
608
|
+
}
|
|
609
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwiaHVuayIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwicGFyc2VQYXRjaCIsIkVycm9yIiwic3RydWN0dXJlZFBhdGNoIiwicGF0Y2giLCJjb25mbGljdCIsImNoZWNrIiwib2Zmc2V0IiwibWluZUxpbmVzIiwidGhlaXJPZmZzZXQiLCJ0aGVpckxpbmVzIiwidGhlaXIiLCJpbnNlcnRMZWFkaW5nIiwidGhlaXJDdXJyZW50IiwibXV0dWFsQ2hhbmdlIiwiY29sbGVjdENoYW5nZSIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJhcnJheUVxdWFsIiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7OztBQUVPLFNBQVNBLGFBQVQsQ0FBdUJDLElBQXZCLEVBQTZCO0FBQUE7QUFBQTtBQUFBO0FBQ0xDLEVBQUFBLG1CQUFtQixDQUFDRCxJQUFJLENBQUNFLEtBQU4sQ0FEZDtBQUFBLE1BQzNCQyxRQUQyQix3QkFDM0JBLFFBRDJCO0FBQUEsTUFDakJDLFFBRGlCLHdCQUNqQkEsUUFEaUI7O0FBR2xDLE1BQUlELFFBQVEsS0FBS0UsU0FBakIsRUFBNEI7QUFDMUJMLElBQUFBLElBQUksQ0FBQ0csUUFBTCxHQUFnQkEsUUFBaEI7QUFDRCxHQUZELE1BRU87QUFDTCxXQUFPSCxJQUFJLENBQUNHLFFBQVo7QUFDRDs7QUFFRCxNQUFJQyxRQUFRLEtBQUtDLFNBQWpCLEVBQTRCO0FBQzFCTCxJQUFBQSxJQUFJLENBQUNJLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBT0osSUFBSSxDQUFDSSxRQUFaO0FBQ0Q7QUFDRjs7QUFFTSxTQUFTRSxLQUFULENBQWVDLElBQWYsRUFBcUJDLE1BQXJCLEVBQTZCQyxJQUE3QixFQUFtQztBQUN4Q0YsRUFBQUEsSUFBSSxHQUFHRyxTQUFTLENBQUNILElBQUQsRUFBT0UsSUFBUCxDQUFoQjtBQUNBRCxFQUFBQSxNQUFNLEdBQUdFLFNBQVMsQ0FBQ0YsTUFBRCxFQUFTQyxJQUFULENBQWxCO0FBRUEsTUFBSUUsR0FBRyxHQUFHLEVBQVYsQ0FKd0MsQ0FN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R0FBWixJQUFtQkEsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEUvRCxRQUFBQSxRQUFRO0FBQ1Q7QUFDRjtBQUNGLEdBNUJEO0FBOEJBLFNBQU87QUFBQ0EsSUFBQUEsUUFBUSxFQUFSQSxRQUFEO0FBQVdDLElBQUFBLFFBQVEsRUFBUkE7QUFBWCxHQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N0cnVjdHVyZWRQYXRjaH0gZnJvbSAnLi9jcmVhdGUnO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhcnNlJztcblxuaW1wb3J0IHthcnJheUVxdWFsLCBhcnJheVN0YXJ0c1dpdGh9IGZyb20gJy4uL3V0aWwvYXJyYXknO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY0xpbmVDb3VudChodW5rKSB7XG4gIGNvbnN0IHtvbGRMaW5lcywgbmV3TGluZXN9ID0gY2FsY09sZE5ld0xpbmVDb3VudChodW5rLmxpbmVzKTtcblxuICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsub2xkTGluZXMgPSBvbGRMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaHVuay5uZXdMaW5lcyA9IG5ld0xpbmVzO1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBodW5rLm5ld0xpbmVzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShtaW5lLCB0aGVpcnMsIGJhc2UpIHtcbiAgbWluZSA9IGxvYWRQYXRjaChtaW5lLCBiYXNlKTtcbiAgdGhlaXJzID0gbG9hZFBhdGNoKHRoZWlycywgYmFzZSk7XG5cbiAgbGV0IHJldCA9IHt9O1xuXG4gIC8vIEZvciBpbmRleCB3ZSBqdXN0IGxldCBpdCBwYXNzIHRocm91Z2ggYXMgaXQgZG9lc24ndCBoYXZlIGFueSBuZWNlc3NhcnkgbWVhbmluZy5cbiAgLy8gTGVhdmluZyBzYW5pdHkgY2hlY2tzIG9uIHRoaXMgdG8gdGhlIEFQSSBjb25zdW1lciB0aGF0IG1heSBrbm93IG1vcmUgYWJvdXQgdGhlXG4gIC8vIG1lYW5pbmcgaW4gdGhlaXIgb3duIGNvbnRleHQuXG4gIGlmIChtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleCkge1xuICAgIHJldC5pbmRleCA9IG1pbmUuaW5kZXggfHwgdGhlaXJzLmluZGV4O1xuICB9XG5cbiAgaWYgKG1pbmUubmV3RmlsZU5hbWUgfHwgdGhlaXJzLm5ld0ZpbGVOYW1lKSB7XG4gICAgaWYgKCFmaWxlTmFtZUNoYW5nZWQobWluZSkpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gb3VycywgdXNlIHRoZWlycyAoYW5kIG91cnMgaWYgdGhlaXJzIGRvZXMgbm90IGV4aXN0KVxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gdGhlaXJzLm9sZEZpbGVOYW1lIHx8IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSB0aGVpcnMubmV3RmlsZU5hbWUgfHwgbWluZS5uZXdGaWxlTmFtZTtcbiAgICAgIHJldC5vbGRIZWFkZXIgPSB0aGVpcnMub2xkSGVhZGVyIHx8IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHRoZWlycy5uZXdIZWFkZXIgfHwgbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIGlmICghZmlsZU5hbWVDaGFuZ2VkKHRoZWlycykpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gdGhlaXJzLCB1c2Ugb3Vyc1xuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gbWluZS5vbGRGaWxlTmFtZTtcbiAgICAgIHJldC5uZXdGaWxlTmFtZSA9IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gbWluZS5vbGRIZWFkZXI7XG4gICAgICByZXQubmV3SGVhZGVyID0gbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJvdGggY2hhbmdlZC4uLiBmaWd1cmUgaXQgb3V0XG4gICAgICByZXQub2xkRmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUub2xkRmlsZU5hbWUsIHRoZWlycy5vbGRGaWxlTmFtZSk7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUubmV3RmlsZU5hbWUsIHRoZWlycy5uZXdGaWxlTmFtZSk7XG4gICAgICByZXQub2xkSGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEhlYWRlciwgdGhlaXJzLm9sZEhlYWRlcik7XG4gICAgICByZXQubmV3SGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0hlYWRlciwgdGhlaXJzLm5ld0hlYWRlcik7XG4gICAgfVxuICB9XG5cbiAgcmV0Lmh1bmtzID0gW107XG5cbiAgbGV0IG1pbmVJbmRleCA9IDAsXG4gICAgICB0aGVpcnNJbmRleCA9IDAsXG4gICAgICBtaW5lT2Zmc2V0ID0gMCxcbiAgICAgIHRoZWlyc09mZnNldCA9IDA7XG5cbiAgd2hpbGUgKG1pbmVJbmRleCA8IG1pbmUuaHVua3MubGVuZ3RoIHx8IHRoZWlyc0luZGV4IDwgdGhlaXJzLmh1bmtzLmxlbmd0aCkge1xuICAgIGxldCBtaW5lQ3VycmVudCA9IG1pbmUuaHVua3NbbWluZUluZGV4XSB8fCB7b2xkU3RhcnQ6IEluZmluaXR5fSxcbiAgICAgICAgdGhlaXJzQ3VycmVudCA9IHRoZWlycy5odW5rc1t0aGVpcnNJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX07XG5cbiAgICBpZiAoaHVua0JlZm9yZShtaW5lQ3VycmVudCwgdGhlaXJzQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsobWluZUN1cnJlbnQsIG1pbmVPZmZzZXQpKTtcbiAgICAgIG1pbmVJbmRleCsrO1xuICAgICAgdGhlaXJzT2Zmc2V0ICs9IG1pbmVDdXJyZW50Lm5ld0xpbmVzIC0gbWluZUN1cnJlbnQub2xkTGluZXM7XG4gICAgfSBlbHNlIGlmIChodW5rQmVmb3JlKHRoZWlyc0N1cnJlbnQsIG1pbmVDdXJyZW50KSkge1xuICAgICAgLy8gVGhpcyBwYXRjaCBkb2VzIG5vdCBvdmVybGFwIHdpdGggYW55IG9mIHRoZSBvdGhlcnMsIHlheS5cbiAgICAgIHJldC5odW5rcy5wdXNoKGNsb25lSHVuayh0aGVpcnNDdXJyZW50LCB0aGVpcnNPZmZzZXQpKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lT2Zmc2V0ICs9IHRoZWlyc0N1cnJlbnQubmV3TGluZXMgLSB0aGVpcnNDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdmVybGFwLCBtZXJnZSBhcyBiZXN0IHdlIGNhblxuICAgICAgbGV0IG1lcmdlZEh1bmsgPSB7XG4gICAgICAgIG9sZFN0YXJ0OiBNYXRoLm1pbihtaW5lQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCksXG4gICAgICAgIG9sZExpbmVzOiAwLFxuICAgICAgICBuZXdTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQubmV3U3RhcnQgKyBtaW5lT2Zmc2V0LCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0ICsgdGhlaXJzT2Zmc2V0KSxcbiAgICAgICAgbmV3TGluZXM6IDAsXG4gICAgICAgIGxpbmVzOiBbXVxuICAgICAgfTtcbiAgICAgIG1lcmdlTGluZXMobWVyZ2VkSHVuaywgbWluZUN1cnJlbnQub2xkU3RhcnQsIG1pbmVDdXJyZW50LmxpbmVzLCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0LCB0aGVpcnNDdXJyZW50LmxpbmVzKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lSW5kZXgrKztcblxuICAgICAgcmV0Lmh1bmtzLnB1c2gobWVyZ2VkSHVuayk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gbG9hZFBhdGNoKHBhcmFtLCBiYXNlKSB7XG4gIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCgvXkBAL20pLnRlc3QocGFyYW0pIHx8ICgoL15JbmRleDovbSkudGVzdChwYXJhbSkpKSB7XG4gICAgICByZXR1cm4gcGFyc2VQYXRjaChwYXJhbSlbMF07XG4gICAgfVxuXG4gICAgaWYgKCFiYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ011c3QgcHJvdmlkZSBhIGJhc2UgcmVmZXJlbmNlIG9yIHBhc3MgaW4gYSBwYXRjaCcpO1xuICAgIH1cbiAgICByZXR1cm4gc3RydWN0dXJlZFBhdGNoKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBiYXNlLCBwYXJhbSk7XG4gIH1cblxuICByZXR1cm4gcGFyYW07XG59XG5cbmZ1bmN0aW9uIGZpbGVOYW1lQ2hhbmdlZChwYXRjaCkge1xuICByZXR1cm4gcGF0Y2gubmV3RmlsZU5hbWUgJiYgcGF0Y2gubmV3RmlsZU5hbWUgIT09IHBhdGNoLm9sZEZpbGVOYW1lO1xufVxuXG5mdW5jdGlvbiBzZWxlY3RGaWVsZChpbmRleCwgbWluZSwgdGhlaXJzKSB7XG4gIGlmIChtaW5lID09PSB0aGVpcnMpIHtcbiAgICByZXR1cm4gbWluZTtcbiAgfSBlbHNlIHtcbiAgICBpbmRleC5jb25mbGljdCA9IHRydWU7XG4gICAgcmV0dXJuIHttaW5lLCB0aGVpcnN9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGh1bmtCZWZvcmUodGVzdCwgY2hlY2spIHtcbiAgcmV0dXJuIHRlc3Qub2xkU3RhcnQgPCBjaGVjay5vbGRTdGFydFxuICAgICYmICh0ZXN0Lm9sZFN0YXJ0ICsgdGVzdC5vbGRMaW5lcykgPCBjaGVjay5vbGRTdGFydDtcbn1cblxuZnVuY3Rpb24gY2xvbmVIdW5rKGh1bmssIG9mZnNldCkge1xuICByZXR1cm4ge1xuICAgIG9sZFN0YXJ0OiBodW5rLm9sZFN0YXJ0LCBvbGRMaW5lczogaHVuay5vbGRMaW5lcyxcbiAgICBuZXdTdGFydDogaHVuay5uZXdTdGFydCArIG9mZnNldCwgbmV3TGluZXM6IGh1bmsubmV3TGluZXMsXG4gICAgbGluZXM6IGh1bmsubGluZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VMaW5lcyhodW5rLCBtaW5lT2Zmc2V0LCBtaW5lTGluZXMsIHRoZWlyT2Zmc2V0LCB0aGVpckxpbmVzKSB7XG4gIC8vIFRoaXMgd2lsbCBnZW5lcmFsbHkgcmVzdWx0IGluIGEgY29uZmxpY3RlZCBodW5rLCBidXQgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHRoZSBjb250ZXh0XG4gIC8vIGlzIHRoZSBvbmx5IG92ZXJsYXAgd2hlcmUgd2UgY2FuIHN1Y2Nlc3NmdWxseSBtZXJnZSB0aGUgY29udGVudCBoZXJlLlxuICBsZXQgbWluZSA9IHtvZmZzZXQ6IG1pbmVPZmZzZXQsIGxpbmVzOiBtaW5lTGluZXMsIGluZGV4OiAwfSxcbiAgICAgIHRoZWlyID0ge29mZnNldDogdGhlaXJPZmZzZXQsIGxpbmVzOiB0aGVpckxpbmVzLCBpbmRleDogMH07XG5cbiAgLy8gSGFuZGxlIGFueSBsZWFkaW5nIGNvbnRlbnRcbiAgaW5zZXJ0TGVhZGluZyhodW5rLCBtaW5lLCB0aGVpcik7XG4gIGluc2VydExlYWRpbmcoaHVuaywgdGhlaXIsIG1pbmUpO1xuXG4gIC8vIE5vdyBpbiB0aGUgb3ZlcmxhcCBjb250ZW50LiBTY2FuIHRocm91Z2ggYW5kIHNlbGVjdCB0aGUgYmVzdCBjaGFuZ2VzIGZyb20gZWFjaC5cbiAgd2hpbGUgKG1pbmUuaW5kZXggPCBtaW5lLmxpbmVzLmxlbmd0aCAmJiB0aGVpci5pbmRleCA8IHRoZWlyLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBtaW5lQ3VycmVudCA9IG1pbmUubGluZXNbbWluZS5pbmRleF0sXG4gICAgICAgIHRoZWlyQ3VycmVudCA9IHRoZWlyLmxpbmVzW3RoZWlyLmluZGV4XTtcblxuICAgIGlmICgobWluZUN1cnJlbnRbMF0gPT09ICctJyB8fCBtaW5lQ3VycmVudFswXSA9PT0gJysnKVxuICAgICAgICAmJiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgfHwgdGhlaXJDdXJyZW50WzBdID09PSAnKycpKSB7XG4gICAgICAvLyBCb3RoIG1vZGlmaWVkIC4uLlxuICAgICAgbXV0dWFsQ2hhbmdlKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnKycgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgaW5zZXJ0ZWRcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gY29sbGVjdENoYW5nZShtaW5lKSk7XG4gICAgfSBlbHNlIGlmICh0aGVpckN1cnJlbnRbMF0gPT09ICcrJyAmJiBtaW5lQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBUaGVpcnMgaW5zZXJ0ZWRcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gY29sbGVjdENoYW5nZSh0aGVpcikpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnRbMF0gPT09ICctJyAmJiB0aGVpckN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gTWluZSByZW1vdmVkIG9yIGVkaXRlZFxuICAgICAgcmVtb3ZhbChodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmICh0aGVpckN1cnJlbnRbMF0gPT09ICctJyAmJiBtaW5lQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBUaGVpciByZW1vdmVkIG9yIGVkaXRlZFxuICAgICAgcmVtb3ZhbChodW5rLCB0aGVpciwgbWluZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudCA9PT0gdGhlaXJDdXJyZW50KSB7XG4gICAgICAvLyBDb250ZXh0IGlkZW50aXR5XG4gICAgICBodW5rLmxpbmVzLnB1c2gobWluZUN1cnJlbnQpO1xuICAgICAgbWluZS5pbmRleCsrO1xuICAgICAgdGhlaXIuaW5kZXgrKztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29udGV4dCBtaXNtYXRjaFxuICAgICAgY29uZmxpY3QoaHVuaywgY29sbGVjdENoYW5nZShtaW5lKSwgY29sbGVjdENoYW5nZSh0aGVpcikpO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5vdyBwdXNoIGFueXRoaW5nIHRoYXQgbWF5IGJlIHJlbWFpbmluZ1xuICBpbnNlcnRUcmFpbGluZyhodW5rLCBtaW5lKTtcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgdGhlaXIpO1xuXG4gIGNhbGNMaW5lQ291bnQoaHVuayk7XG59XG5cbmZ1bmN0aW9uIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcikge1xuICBsZXQgbXlDaGFuZ2VzID0gY29sbGVjdENoYW5nZShtaW5lKSxcbiAgICAgIHRoZWlyQ2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UodGhlaXIpO1xuXG4gIGlmIChhbGxSZW1vdmVzKG15Q2hhbmdlcykgJiYgYWxsUmVtb3Zlcyh0aGVpckNoYW5nZXMpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlIGZvciByZW1vdmUgY2hhbmdlcyB0aGF0IGFyZSBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXJcbiAgICBpZiAoYXJyYXlTdGFydHNXaXRoKG15Q2hhbmdlcywgdGhlaXJDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQodGhlaXIsIG15Q2hhbmdlcywgbXlDaGFuZ2VzLmxlbmd0aCAtIHRoZWlyQ2hhbmdlcy5sZW5ndGgpKSB7XG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChhcnJheVN0YXJ0c1dpdGgodGhlaXJDaGFuZ2VzLCBteUNoYW5nZXMpXG4gICAgICAgICYmIHNraXBSZW1vdmVTdXBlcnNldChtaW5lLCB0aGVpckNoYW5nZXMsIHRoZWlyQ2hhbmdlcy5sZW5ndGggLSBteUNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhcnJheUVxdWFsKG15Q2hhbmdlcywgdGhlaXJDaGFuZ2VzKSkge1xuICAgIGh1bmsubGluZXMucHVzaCguLi4gbXlDaGFuZ2VzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25mbGljdChodW5rLCBteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIsIHN3YXApIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q29udGV4dCh0aGVpciwgbXlDaGFuZ2VzKTtcbiAgaWYgKHRoZWlyQ2hhbmdlcy5tZXJnZWQpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIHRoZWlyQ2hhbmdlcy5tZXJnZWQpO1xuICB9IGVsc2Uge1xuICAgIGNvbmZsaWN0KGh1bmssIHN3YXAgPyB0aGVpckNoYW5nZXMgOiBteUNoYW5nZXMsIHN3YXAgPyBteUNoYW5nZXMgOiB0aGVpckNoYW5nZXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbmZsaWN0KGh1bmssIG1pbmUsIHRoZWlyKSB7XG4gIGh1bmsuY29uZmxpY3QgPSB0cnVlO1xuICBodW5rLmxpbmVzLnB1c2goe1xuICAgIGNvbmZsaWN0OiB0cnVlLFxuICAgIG1pbmU6IG1pbmUsXG4gICAgdGhlaXJzOiB0aGVpclxuICB9KTtcbn1cblxuZnVuY3Rpb24gaW5zZXJ0TGVhZGluZyhodW5rLCBpbnNlcnQsIHRoZWlyKSB7XG4gIHdoaWxlIChpbnNlcnQub2Zmc2V0IDwgdGhlaXIub2Zmc2V0ICYmIGluc2VydC5pbmRleCA8IGluc2VydC5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbGluZSA9IGluc2VydC5saW5lc1tpbnNlcnQuaW5kZXgrK107XG4gICAgaHVuay5saW5lcy5wdXNoKGxpbmUpO1xuICAgIGluc2VydC5vZmZzZXQrKztcbiAgfVxufVxuZnVuY3Rpb24gaW5zZXJ0VHJhaWxpbmcoaHVuaywgaW5zZXJ0KSB7XG4gIHdoaWxlIChpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2xsZWN0Q2hhbmdlKHN0YXRlKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIG9wZXJhdGlvbiA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XVswXTtcbiAgd2hpbGUgKHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF07XG5cbiAgICAvLyBHcm91cCBhZGRpdGlvbnMgdGhhdCBhcmUgaW1tZWRpYXRlbHkgYWZ0ZXIgc3VidHJhY3Rpb25zIGFuZCB0cmVhdCB0aGVtIGFzIG9uZSBcImF0b21pY1wiIG1vZGlmeSBjaGFuZ2UuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJy0nICYmIGxpbmVbMF0gPT09ICcrJykge1xuICAgICAgb3BlcmF0aW9uID0gJysnO1xuICAgIH1cblxuICAgIGlmIChvcGVyYXRpb24gPT09IGxpbmVbMF0pIHtcbiAgICAgIHJldC5wdXNoKGxpbmUpO1xuICAgICAgc3RhdGUuaW5kZXgrKztcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIGNvbGxlY3RDb250ZXh0KHN0YXRlLCBtYXRjaENoYW5nZXMpIHtcbiAgbGV0IGNoYW5nZXMgPSBbXSxcbiAgICAgIG1lcmdlZCA9IFtdLFxuICAgICAgbWF0Y2hJbmRleCA9IDAsXG4gICAgICBjb250ZXh0Q2hhbmdlcyA9IGZhbHNlLFxuICAgICAgY29uZmxpY3RlZCA9IGZhbHNlO1xuICB3aGlsZSAobWF0Y2hJbmRleCA8IG1hdGNoQ2hhbmdlcy5sZW5ndGhcbiAgICAgICAgJiYgc3RhdGUuaW5kZXggPCBzdGF0ZS5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgY2hhbmdlID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdLFxuICAgICAgICBtYXRjaCA9IG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4XTtcblxuICAgIC8vIE9uY2Ugd2UndmUgaGl0IG91ciBhZGQsIHRoZW4gd2UgYXJlIGRvbmVcbiAgICBpZiAobWF0Y2hbMF0gPT09ICcrJykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29udGV4dENoYW5nZXMgPSBjb250ZXh0Q2hhbmdlcyB8fCBjaGFuZ2VbMF0gIT09ICcgJztcblxuICAgIG1lcmdlZC5wdXNoKG1hdGNoKTtcbiAgICBtYXRjaEluZGV4Kys7XG5cbiAgICAvLyBDb25zdW1lIGFueSBhZGRpdGlvbnMgaW4gdGhlIG90aGVyIGJsb2NrIGFzIGEgY29uZmxpY3QgdG8gYXR0ZW1wdFxuICAgIC8vIHRvIHB1bGwgaW4gdGhlIHJlbWFpbmluZyBjb250ZXh0IGFmdGVyIHRoaXNcbiAgICBpZiAoY2hhbmdlWzBdID09PSAnKycpIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuXG4gICAgICB3aGlsZSAoY2hhbmdlWzBdID09PSAnKycpIHtcbiAgICAgICAgY2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICAgIGNoYW5nZSA9IHN0YXRlLmxpbmVzWysrc3RhdGUuaW5kZXhdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtYXRjaC5zdWJzdHIoMSkgPT09IGNoYW5nZS5zdWJzdHIoMSkpIHtcbiAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgc3RhdGUuaW5kZXgrKztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmxpY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKChtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF0gfHwgJycpWzBdID09PSAnKydcbiAgICAgICYmIGNvbnRleHRDaGFuZ2VzKSB7XG4gICAgY29uZmxpY3RlZCA9IHRydWU7XG4gIH1cblxuICBpZiAoY29uZmxpY3RlZCkge1xuICAgIHJldHVybiBjaGFuZ2VzO1xuICB9XG5cbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoKSB7XG4gICAgbWVyZ2VkLnB1c2gobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXgrK10pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXJnZWQsXG4gICAgY2hhbmdlc1xuICB9O1xufVxuXG5mdW5jdGlvbiBhbGxSZW1vdmVzKGNoYW5nZXMpIHtcbiAgcmV0dXJuIGNoYW5nZXMucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGNoYW5nZSkge1xuICAgIHJldHVybiBwcmV2ICYmIGNoYW5nZVswXSA9PT0gJy0nO1xuICB9LCB0cnVlKTtcbn1cbmZ1bmN0aW9uIHNraXBSZW1vdmVTdXBlcnNldChzdGF0ZSwgcmVtb3ZlQ2hhbmdlcywgZGVsdGEpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWx0YTsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZUNvbnRlbnQgPSByZW1vdmVDaGFuZ2VzW3JlbW92ZUNoYW5nZXMubGVuZ3RoIC0gZGVsdGEgKyBpXS5zdWJzdHIoMSk7XG4gICAgaWYgKHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4ICsgaV0gIT09ICcgJyArIGNoYW5nZUNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS5pbmRleCArPSBkZWx0YTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNhbGNPbGROZXdMaW5lQ291bnQobGluZXMpIHtcbiAgbGV0IG9sZExpbmVzID0gMDtcbiAgbGV0IG5ld0xpbmVzID0gMDtcblxuICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICBpZiAodHlwZW9mIGxpbmUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbXlDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS5taW5lKTtcbiAgICAgIGxldCB0aGVpckNvdW50ID0gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lLnRoZWlycyk7XG5cbiAgICAgIGlmIChvbGRMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChteUNvdW50Lm9sZExpbmVzID09PSB0aGVpckNvdW50Lm9sZExpbmVzKSB7XG4gICAgICAgICAgb2xkTGluZXMgKz0gbXlDb3VudC5vbGRMaW5lcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvbGRMaW5lcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5uZXdMaW5lcyA9PT0gdGhlaXJDb3VudC5uZXdMaW5lcykge1xuICAgICAgICAgIG5ld0xpbmVzICs9IG15Q291bnQubmV3TGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3TGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICcrJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG5ld0xpbmVzKys7XG4gICAgICB9XG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCAmJiAobGluZVswXSA9PT0gJy0nIHx8IGxpbmVbMF0gPT09ICcgJykpIHtcbiAgICAgICAgb2xkTGluZXMrKztcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7b2xkTGluZXMsIG5ld0xpbmVzfTtcbn1cbiJdfQ==
|