pup-recorder 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_tsup-dts-rollup.d.ts +8 -4
- package/dist/app.cjs +11 -3
- package/dist/chunk-CNRKD76V.js +555 -0
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -4
- package/package.json +2 -1
- package/dist/chunk-A5IYURQQ.js +0 -565
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'source-map-support/register.js';
|
|
2
|
-
import { logger, ConcurrencyLimiter, __using, __callDispose } from './chunk-
|
|
3
|
-
export { AbortLink, ConcurrencyLimiter, DEFAULT_DURATION, DEFAULT_FPS, DEFAULT_HEIGHT, DEFAULT_OUT_DIR, DEFAULT_WIDTH, Logger, PUP_ARGS_KEY, RenderSchema, VIDEO_FORMATS, exec, isVideoFormat, logger, noerr, pargs, parseNumber, parseString, penv, pup, pupDisableGPU, pupLogLevel, pupUseInnerProxy } from './chunk-
|
|
2
|
+
import { logger, ConcurrencyLimiter, __using, __callDispose } from './chunk-CNRKD76V.js';
|
|
3
|
+
export { AbortLink, ConcurrencyLimiter, DEFAULT_DURATION, DEFAULT_FPS, DEFAULT_HEIGHT, DEFAULT_OUT_DIR, DEFAULT_WIDTH, Logger, PUP_ARGS_KEY, RenderSchema, VIDEO_FORMATS, exec, isVideoFormat, logger, noerr, pargs, parseNumber, parseString, penv, pup, pupApp, pupDisableGPU, pupLogLevel, pupPkgRoot, pupUseInnerProxy } from './chunk-CNRKD76V.js';
|
|
4
4
|
import { setTimeout as setTimeout$1 } from 'timers/promises';
|
|
5
5
|
import { Log, FormatContext, FFmpegError, Codec, CodecContext, Rational, SoftwareScaleContext, Frame, Packet, FilterGraph, Filter, FilterInOut } from 'node-av';
|
|
6
6
|
import { AV_LOG_ERROR, AV_LOG_WARNING, AV_SAMPLE_FMT_FLT, AV_PIX_FMT_YUVA420P, AV_SAMPLE_FMT_FLTP, FF_ENCODER_AAC, FF_ENCODER_LIBX265, AV_CODEC_FLAG_GLOBAL_HEADER, AV_PIX_FMT_BGRA, SWS_BILINEAR, AVERROR_EAGAIN, AVERROR_EOF, AV_CHANNEL_LAYOUT_STEREO } from 'node-av/constants';
|
|
@@ -359,7 +359,7 @@ var FORMAT_SPECS = {
|
|
|
359
359
|
pixFmt: AV_PIX_FMT_YUVA420P,
|
|
360
360
|
codecTag: "hvc1",
|
|
361
361
|
globalHeader: true,
|
|
362
|
-
videoOpts: { preset: "ultrafast", "x265-params": "log-level=
|
|
362
|
+
videoOpts: { preset: "ultrafast", "x265-params": "log-level=1" },
|
|
363
363
|
audioCodecName: FF_ENCODER_AAC,
|
|
364
364
|
audioSampleFmt: AV_SAMPLE_FMT_FLTP,
|
|
365
365
|
outSampleRate: 44100
|
|
@@ -467,4 +467,4 @@ var EncoderPipeline = class _EncoderPipeline {
|
|
|
467
467
|
|
|
468
468
|
export { EncoderPipeline, FormatMuxer, Lazy, periodical, sleep, useRetry };
|
|
469
469
|
//# sourceMappingURL=index.js.map
|
|
470
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2xhenkudHMiLCIuLi9zcmMvYmFzZS90aW1pbmcudHMiLCIuLi9zcmMvYmFzZS9yZXRyeS50cyIsIi4uL3NyYy9iYXNlL2VuY29kZXIvYXVkaW8udHMiLCIuLi9zcmMvYmFzZS9lbmNvZGVyL211eGVyLnRzIiwiLi4vc3JjL2Jhc2UvZW5jb2Rlci92aWRlby50cyIsIi4uL3NyYy9iYXNlL2VuY29kZXIvZW5jb2Rlci50cyJdLCJuYW1lcyI6WyJzZXRUaW1lb3V0IiwiRkZtcGVnRXJyb3IiLCJDb2RlYyIsIkNvZGVjQ29udGV4dCIsIlJhdGlvbmFsIiwiQVZfQ09ERUNfRkxBR19HTE9CQUxfSEVBREVSIiwiRnJhbWUiLCJQYWNrZXQiLCJBVkVSUk9SX0VBR0FJTiIsIkFWRVJST1JfRU9GIiwiQVZfUElYX0ZNVF9ZVVZBNDIwUCIsIkFWX1NBTVBMRV9GTVRfRkxUUCIsIkFWX1NBTVBMRV9GTVRfRkxUIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFTyxJQUFNLE9BQU4sTUFBYztBQUFBLEVBQ25CLFlBQXFCLFNBQUEsRUFBb0I7QUFBcEIsSUFBQSxJQUFBLENBQUEsU0FBQSxHQUFBLFNBQUE7QUFBQSxFQUFxQjtBQUFBLEVBRTFDLElBQUksS0FBQSxHQUFXO0FBQ2IsSUFBQSxJQUFJLENBQUMsS0FBSyxZQUFBLEVBQWM7QUFDdEIsTUFBQSxJQUFBLENBQUssTUFBQSxHQUFTLEtBQUssU0FBQSxFQUFVO0FBQzdCLE1BQUEsSUFBQSxDQUFLLFlBQUEsR0FBZSxJQUFBO0FBQUEsSUFDdEI7QUFDQSxJQUFBLE9BQU8sSUFBQSxDQUFLLE1BQUE7QUFBQSxFQUNkO0FBQUEsRUFFQSxJQUFJLFdBQUEsR0FBdUI7QUFDekIsSUFBQSxPQUFPLElBQUEsQ0FBSyxZQUFBO0FBQUEsRUFDZDtBQUFBLEVBRVEsWUFBQSxHQUFlLEtBQUE7QUFBQSxFQUNmLE1BQUE7QUFDVjs7O0FDakJPLFNBQVMsTUFBTSxFQUFBLEVBQVk7QUFDaEMsRUFBQSxPQUFPLElB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QUEsRUFDVDtBQUNGIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMS8zMC5cblxuZXhwb3J0IGNsYXNzIExhenk8VD4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtYWtlVmFsdWU6ICgpID0+IFQpIHt9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5tYWtlVmFsdWUoKTtcbiAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlITtcbiAgfVxuXG4gIGdldCBpbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIF92YWx1ZTogVCB8IHVuZGVmaW5lZDtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmV4cG9ydCBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGVyaW9kaWNhbChjYWxsYmFjazogKGNvdW50OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkLCBtczogbnVtYmVyKSB7XG4gIGxldCB0b2tlbjogTm9kZUpTLlRpbWVvdXQ7XG4gIGxldCBjbG9zZWQgPSBmYWxzZTtcbiAgYXN5bmMgZnVuY3Rpb24gdGljayhjb3VudDogbnVtYmVyKSB7XG4gICAgYXdhaXQgY2FsbGJhY2soY291bnQpO1xuICAgIGlmIChjbG9zZWQpIHJldHVybjtcbiAgICB0b2tlbiA9IHNldFRpbWVvdXQoKCkgPT4gdGljayhjb3VudCArIDEpLCBtcyk7XG4gIH1cbiAgdG9rZW4gPSBzZXRUaW1lb3V0KCgpID0+IHRpY2soMCksIG1zKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBjbG9zZWQgPSB0cnVlO1xuICAgIGNsZWFyVGltZW91dCh0b2tlbik7XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA1LlxuXG5pbXBvcnQgeyBzZXRUaW1lb3V0IH0gZnJvbSBcInRpbWVycy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgc2xlZXAgfSBmcm9tIFwiLi90aW1pbmdcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZXRyeU9wdGlvbnM8QXJncyBleHRlbmRzIGFueVtdLCBSZXQ+IHtcbiAgZm46ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPFJldD47XG4gIG1heEF0dGVtcHRzPzogbnVtYmVyO1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlUmV0cnk8QXJncyBleHRlbmRzIGFueVtdLCBSZXQ+KHsgZm4sIG1heEF0dGVtcHRzID0gMywgdGltZW91dCB9OiBSZXRyeU9wdGlvbnM8QXJncywgUmV0Pikge1xuICBjb25zdCB0aW1lb3V0RXJyb3IgPSBuZXcgRXJyb3IoYHRpbWVvdXQgb3ZlciAke3RpbWVvdXR9bXNgKTtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzOiBBcmdzKSB7XG4gICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtmbiguLi5hcmdzKV07XG4gICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIHNldFRpbWVvdXQodGltZW91dCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHRocm93IHRpbWVvdXRFcnJvcjtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmFjZShwcm9taXNlcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGF0dGVtcHQrKztcbiAgICAgICAgaWYgKGF0dGVtcHQgPj0gbWF4QXR0ZW1wdHMpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHNsZWVwKE1hdGgucG93KDIsIGF0dGVtcHQpICogMTAwICsgTWF0aC5yYW5kb20oKSAqIDEwMCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMy8yMS5cblxuaW1wb3J0IHtcbiAgQ29kZWMsXG4gIENvZGVjQ29udGV4dCxcbiAgRkZtcGVnRXJyb3IsXG4gIEZpbHRlcixcbiAgRmlsdGVyR3JhcGgsXG4gIEZpbHRlckluT3V0LFxuICBGcmFtZSxcbiAgUGFja2V0LFxuICBSYXRpb25hbCxcbiAgdHlwZSBGaWx0ZXJDb250ZXh0LFxufSBmcm9tIFwibm9kZS1hdlwiO1xuaW1wb3J0IHtcbiAgQVZfQ0hBTk5FTF9MQVlPVVRfU1RFUkVPLFxuICBBVl9DT0RFQ19GTEFHX0dMT0JBTF9IRUFERVIsXG4gIEFWX1NBTVBMRV9GTVRfRkxULFxuICBBVl9TQU1QTEVfRk1UX0ZMVFAsXG4gIEFWRVJST1JfRUFHQUlOLFxuICBBVkVSUk9SX0VPRixcbiAgdHlwZSBGRkF1ZGlvRW5jb2Rlcixcbn0gZnJvbSBcIm5vZGUtYXYvY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IEZvcm1hdE11eGVyIH0gZnJvbSBcIi4vbXV4ZXJcIjtcblxuY29uc3QgU0FNUExFX0ZNVF9OQU1FOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xuICBbQVZfU0FNUExFX0ZNVF9GTFRdOiBcImZsdFwiLFxuICBbQVZfU0FNUExFX0ZNVF9GTFRQXTogXCJmbHRwXCIsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGlvRW5jb2Rlck9wdGlvbnMge1xuICBvdXRTYW1wbGVSYXRlOiBudW1iZXI7XG4gIG91dFNhbXBsZUZtdDogdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUIHwgdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUUDtcbiAgY29kZWNOYW1lOiBGRkF1ZGlvRW5jb2RlcjtcbiAgZ2xvYmFsSGVhZGVyOiBib29sZWFuO1xuICBiaXRyYXRlOiBudW1iZXI7XG4gIG11eGVyOiBGb3JtYXRNdXhlcjtcbn1cblxudHlwZSBTdHJlYW0gPSBSZXR1cm5UeXBlPGltcG9ydChcIm5vZGUtYXZcIikuRm9ybWF0Q29udGV4dFtcIm5ld1N0cmVhbVwiXT47XG5cbmV4cG9ydCBjbGFzcyBBdWRpb0VuY29kZXIgaW1wbGVtZW50cyBEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3R4OiBDb2RlY0NvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbTogU3RyZWFtO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRSYXRlOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX291dEZtdDogdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUIHwgdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUUDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZnJhbWVTaXplOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BrdDogUGFja2V0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJGcmFtZTogRnJhbWU7XG5cbiAgcHJpdmF0ZSBfZ3JhcGg/OiBGaWx0ZXJHcmFwaDtcbiAgcHJpdmF0ZSBfYnVmU3JjPzogRmlsdGVyQ29udGV4dDtcbiAgcHJpdmF0ZSBfYnVmU2luaz86IEZpbHRlckNvbnRleHQ7XG4gIHByaXZhdGUgX2luUmF0ZT86IG51bWJlcjtcbiAgcHRzID0gMG47XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihjdHg6IENvZGVjQ29udGV4dCwgc3RyZWFtOiBTdHJlYW0sIG91dEZtdDogdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUIHwgdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUUCkge1xuICAgIHRoaXMuX2N0eCA9IGN0eDtcbiAgICB0aGlzLl9zdHJlYW0gPSBzdHJlYW07XG4gICAgdGhpcy5fb3V0UmF0ZSA9IGN0eC5zYW1wbGVSYXRlO1xuICAgIHRoaXMuX291dEZtdCA9IG91dEZtdDtcbiAgICB0aGlzLl9mcmFtZVNpemUgPSBjdHguZnJhbWVTaXplO1xuXG4gICAgdGhpcy5fcGt0ID0gbmV3IFBhY2tldCgpO1xuICAgIHRoaXMuX3BrdC5hbGxvYygpO1xuXG4gICAgdGhpcy5fZmlsdGVyRnJhbWUgPSBuZXcgRnJhbWUoKTtcbiAgICB0aGlzLl9maWx0ZXJGcmFtZS5hbGxvYygpO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZShvcHRzOiBBdWRpb0VuY29kZXJPcHRpb25zKTogUHJvbWlzZTxBdWRpb0VuY29kZXI+IHtcbiAgICBjb25zdCB7IG91dFNhbXBsZVJhdGUsIG91dFNhbXBsZUZtdCwgY29kZWNOYW1lLCBnbG9iYWxIZWFkZXIsIGJpdHJhdGUsIG11eGVyIH0gPSBvcHRzO1xuXG4gICAgY29uc3QgY29kZWMgPSBDb2RlYy5maW5kRW5jb2RlckJ5TmFtZShjb2RlY05hbWUpO1xuICAgIGlmICghY29kZWMpIHRocm93IG5ldyBFcnJvcihgQXVkaW8gZW5jb2RlciBub3QgZm91bmQ6ICR7Y29kZWNOYW1lfWApO1xuXG4gICAgY29uc3QgY3R4ID0gbmV3IENvZGVjQ29udGV4dCgpO1xuICAgIGN0eC5hbGxvY0NvbnRleHQzKGNvZGVjKTtcbiAgICBjdHguY29kZWNJZCA9IGNvZGVjLmlkO1xuICAgIGN0eC5zYW1wbGVGb3JtYXQgPSBvdXRTYW1wbGVGbXQ7XG4gICAgY3R4LnNhbXBsZVJhdGUgPSBvdXRTYW1wbGVSYXRlO1xuICAgIGN0eC5jaGFubmVsTGF5b3V0ID0gQVZfQ0hBTk5FTF9MQVlPVVRfU1RFUkVPO1xuICAgIGN0eC50aW1lQmFzZSA9IG5ldyBSYXRpb25hbCgxLCBvdXRTYW1wbGVSYXRlKTtcbiAgICBjdHguYml0UmF0ZSA9IEJpZ0ludChiaXRyYXRlKTtcbiAgICBpZiAoZ2xvYmFsSGVhZGVyKSBjdHguc2V0RmxhZ3MoQVZfQ09ERUNfRkxBR19HTE9CQUxfSEVBREVSKTtcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoYXdhaXQgY3R4Lm9wZW4yKGNvZGVjLCBudWxsKSwgXCJhdWRpb0N0eC5vcGVuMlwiKTtcblxuICAgIGNvbnN0IHN0cmVhbSA9IG11eGVyLmFkZFN0cmVhbShjdHgpO1xuICAgIHJldHVybiBuZXcgQXVkaW9FbmNvZGVyKGN0eCwgc3RyZWFtLCBvdXRTYW1wbGVGbXQpO1xuICB9XG5cbiAgLyoqIENhbGxlZCBvbmNlIHdoZW4gYXVkaW8tbWV0YSBhcnJpdmVzIHdpdGggdGhlIHBhZ2UncyBhY3R1YWwgc2FtcGxlIHJhdGUuICovXG4gIHNldElucHV0UmF0ZShpblNhbXBsZVJhdGU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2VHcmFwaCgpO1xuICAgIHRoaXMuX2luUmF0ZSA9IGluU2FtcGxlUmF0ZTtcblxuICAgIGNvbnN0IGdyYXBoID0gbmV3IEZpbHRlckdyYXBoKCk7XG4gICAgZ3JhcGguYWxsb2MoKTtcblxuICAgIC8vIGFidWZmZXIgc291cmNlOiBpbnRlcmxlYXZlZCBzdGVyZW8gZmxvYXQgZnJvbSBicm93c2VyXG4gICAgY29uc3QgYWJ1ZmZlciA9IEZpbHRlci5nZXRCeU5hbWUoXCJhYnVmZmVyXCIpITtcbiAgICBjb25zdCBzcmNBcmdzID0gYHNhbXBsZV9yYXRlPSR7aW5TYW1wbGVSYXRlfTpzYW1wbGVfZm10PWZsdDpjaGFubmVsX2xheW91dD1zdGVyZW86dGltZV9iYXNlPTEvJHtpblNhbXBsZVJhdGV9YDtcbiAgICBjb25zdCBidWZTcmMgPSBncmFwaC5jcmVhdGVGaWx0ZXIoYWJ1ZmZlciwgXCJzcmNcIiwgc3JjQXJncyk7XG4gICAgaWYgKCFidWZTcmMpIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgYWJ1ZmZlclwiKTtcblxuICAgIC8vIGFidWZmZXJzaW5rXG4gICAgY29uc3QgYWJ1ZmZlcnNpbmsgPSBGaWx0ZXIuZ2V0QnlOYW1lKFwiYWJ1ZmZlcnNpbmtcIikhO1xuICAgIGNvbnN0IGJ1ZlNpbmsgPSBncmFwaC5jcmVhdGVGaWx0ZXIoYWJ1ZmZlcnNpbmssIFwic2lua1wiKTtcbiAgICBpZiAoIWJ1ZlNpbmspIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgYWJ1ZmZlcnNpbmtcIik7XG5cbiAgICAvLyBQYXJzZSBmaWx0ZXIgY2hhaW46IGFmb3JtYXQgKyBhc2V0bnNhbXBsZXNcbiAgICBjb25zdCBmbXROYW1lID0gU0FNUExFX0ZNVF9OQU1FW3RoaXMuX291dEZtdF0gPz8gXCJmbHRcIjtcbiAgICBjb25zdCBmaWx0ZXJEZXNjID0gYGFmb3JtYXQ9c2FtcGxlX2ZtdHM9JHtmbXROYW1lfTpzYW1wbGVfcmF0ZXM9JHt0aGlzLl9vdXRSYXRlfTpjaGFubmVsX2xheW91dHM9c3RlcmVvLGFzZXRuc2FtcGxlcz1uPSR7dGhpcy5fZnJhbWVTaXplfTpwPTFgO1xuXG4gICAgY29uc3Qgb3V0cHV0cyA9IEZpbHRlckluT3V0LmNyZWF0ZUxpc3QoW3sgbmFtZTogXCJpblwiLCBmaWx0ZXJDdHg6IGJ1ZlNyYywgcGFkSWR4OiAwIH1dKTtcbiAgICBjb25zdCBpbnB1dHMgPSBGaWx0ZXJJbk91dC5jcmVhdGVMaXN0KFt7IG5hbWU6IFwib3V0XCIsIGZpbHRlckN0eDogYnVmU2luaywgcGFkSWR4OiAwIH1dKTtcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoZ3JhcGgucGFyc2VQdHIoZmlsdGVyRGVzYywgaW5wdXRzLCBvdXRwdXRzKSwgXCJncmFwaC5wYXJzZVB0clwiKTtcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoZ3JhcGguY29uZmlnU3luYygpLCBcImdyYXBoLmNvbmZpZ1wiKTtcblxuICAgIHRoaXMuX2dyYXBoID0gZ3JhcGg7XG4gICAgdGhpcy5fYnVmU3JjID0gYnVmU3JjO1xuICAgIHRoaXMuX2J1ZlNpbmsgPSBidWZTaW5rO1xuICB9XG5cbiAgZ2V0IHN0cmVhbSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RyZWFtO1xuICB9XG4gIGdldCB0aW1lQmFzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3R4LnRpbWVCYXNlO1xuICB9XG5cbiAgYXN5bmMgZW5jb2RlKHBjbTogQnVmZmVyLCBtdXhlcjogRm9ybWF0TXV4ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX2J1ZlNyYyB8fCAhdGhpcy5fYnVmU2luayB8fCAhdGhpcy5faW5SYXRlKSByZXR1cm47XG5cbiAgICAvLyBJbi1wbGFjZSBzYW5pdGl6ZSDigJQgbXV0YXRlIHNvdXJjZSBkaXJlY3RseSwgbm8gY29weVxuICAgIGNvbnN0IHNyYyA9IG5ldyBGbG9hdDMyQXJyYXkocGNtLmJ1ZmZlciwgcGNtLmJ5dGVPZmZzZXQsIHBjbS5ieXRlTGVuZ3RoIC8gNCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcmMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNGaW5pdGUoc3JjW2ldISkpIHNyY1tpXSA9IDA7XG4gICAgfVxuICAgIGNvbnN0IG5TYW1wbGVzID0gc3JjLmxlbmd0aCA+PiAxO1xuXG4gICAgdXNpbmcgZnJhbWUgPSBGcmFtZS5mcm9tQXVkaW9CdWZmZXIoQnVmZmVyLmZyb20oc3JjLmJ1ZmZlciwgc3JjLmJ5dGVPZmZzZXQsIHNyYy5ieXRlTGVuZ3RoKSwge1xuICAgICAgbmJTYW1wbGVzOiBuU2FtcGxlcyxcbiAgICAgIGZvcm1hdDogQVZfU0FNUExFX0ZNVF9GTFQsXG4gICAgICBzYW1wbGVSYXRlOiB0aGlzLl9pblJhdGUsXG4gICAgICBjaGFubmVsTGF5b3V0OiBBVl9DSEFOTkVMX0xBWU9VVF9TVEVSRU8sXG4gICAgICBwdHM6IHRoaXMucHRzLFxuICAgICAgdGltZUJhc2U6IHsgbnVtOiAxLCBkZW46IHRoaXMuX2luUmF0ZSB9LFxuICAgIH0pO1xuICAgIHRoaXMucHRzICs9IEJpZ0ludChuU2FtcGxlcyk7XG5cbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoYXdhaXQgdGhpcy5fYnVmU3JjLmJ1ZmZlcnNyY0FkZEZyYW1lKGZyYW1lKSwgXCJidWZmZXJzcmNBZGRGcmFtZVwiKTtcbiAgICBhd2FpdCB0aGlzLl9kcmFpbkZpbHRlcihtdXhlcik7XG4gIH1cblxuICBhc3luYyBmbHVzaChtdXhlcjogRm9ybWF0TXV4ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fYnVmU3JjICYmIHRoaXMuX2J1ZlNpbmspIHtcbiAgICAgIC8vIFNpZ25hbCBFT0YgdG8gZmlsdGVyIGdyYXBoXG4gICAgICBhd2FpdCB0aGlzLl9idWZTcmMuYnVmZmVyc3JjQWRkRnJhbWUobnVsbCk7XG4gICAgICBhd2FpdCB0aGlzLl9kcmFpbkZpbHRlcihtdXhlcik7XG4gICAgfVxuICAgIC8vIEZsdXNoIGNvZGVjXG4gICAgYXdhaXQgdGhpcy5fY3R4LnNlbmRGcmFtZShudWxsKTtcbiAgICBhd2FpdCB0aGlzLl9kcmFpbkNvZGVjKG11eGVyKTtcbiAgfVxuXG4gIFtTeW1ib2wuZGlzcG9zZV0oKTogdm9pZCB7XG4gICAgdGhpcy5fcGt0LmZyZWUoKTtcbiAgICB0aGlzLl9maWx0ZXJGcmFtZS5mcmVlKCk7XG4gICAgdGhpcy5fZGlzcG9zZUdyYXBoKCk7XG4gICAgdGhpcy5fY3R4LmZyZWVDb250ZXh0KCk7XG4gIH1cblxuICAvKiogRHJhaW4gZmlsdGVyIOKGkiBzZW5kIHRvIGNvZGVjIOKGkiBkcmFpbiBjb2RlYyBwYWNrZXRzLiAqL1xuICBwcml2YXRlIGFzeW5jIF9kcmFpbkZpbHRlcihtdXhlcjogRm9ybWF0TXV4ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvdXRGcmFtZSA9IHRoaXMuX2ZpbHRlckZyYW1lO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCByID0gYXdhaXQgdGhpcy5fYnVmU2luayEuYnVmZmVyc2lua0dldEZyYW1lKG91dEZyYW1lKTtcbiAgICAgIGlmIChyID09PSBBVkVSUk9SX0VBR0FJTiB8fCByID09PSBBVkVSUk9SX0VPRikgYnJlYWs7XG4gICAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IociwgXCJidWZmZXJzaW5rR2V0RnJhbWVcIik7XG4gICAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoYXdhaXQgdGhpcy5fY3R4LnNlbmRGcmFtZShvdXRGcmFtZSksIFwiYXVkaW9DdHguc2VuZEZyYW1lXCIpO1xuICAgICAgb3V0RnJhbWUudW5yZWYoKTtcbiAgICAgIGF3YWl0IHRoaXMuX2RyYWluQ29kZWMobXV4ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBEcmFpbiBjb2RlYyBwYWNrZXRzIHRvIG11eGVyLiAqL1xuICBwcml2YXRlIGFzeW5jIF9kcmFpbkNvZGVjKG11eGVyOiBGb3JtYXRNdXhlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBrdCA9IHRoaXMuX3BrdDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgciA9IGF3YWl0IHRoaXMuX2N0eC5yZWNlaXZlUGFja2V0KHBrdCk7XG4gICAgICBpZiAociA9PT0gQVZFUlJPUl9FQUdBSU4gfHwgciA9PT0gQVZFUlJPUl9FT0YpIGJyZWFrO1xuICAgICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKHIsIFwiYXVkaW8ucmVjZWl2ZVBhY2tldFwiKTtcbiAgICAgIHBrdC5zdHJlYW1JbmRleCA9IHRoaXMuX3N0cmVhbS5pbmRleDtcbiAgICAgIHBrdC5yZXNjYWxlVHModGhpcy5fY3R4LnRpbWVCYXNlLCB0aGlzLl9zdHJlYW0udGltZUJhc2UpO1xuICAgICAgYXdhaXQgbXV4ZXIud3JpdGVQYWNrZXQocGt0KTtcbiAgICAgIHBrdC51bnJlZigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rpc3Bvc2VHcmFwaCgpOiB2b2lkIHtcbiAgICAvLyBGaWx0ZXJHcmFwaC5mcmVlKCkgcmVsZWFzZXMgYWxsIGNvbnRhaW5lZCBmaWx0ZXIgY29udGV4dHNcbiAgICB0aGlzLl9ncmFwaD8uW1N5bWJvbC5kaXNwb3NlXSgpO1xuICAgIHRoaXMuX2dyYXBoID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2J1ZlNyYyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9idWZTaW5rID0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb2RlY0NvbnRleHQsIEZGbXBlZ0Vycm9yLCBGb3JtYXRDb250ZXh0LCBQYWNrZXQgfSBmcm9tIFwibm9kZS1hdlwiO1xuXG5leHBvcnQgY2xhc3MgRm9ybWF0TXV4ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdHg6IEZvcm1hdENvbnRleHQ7XG4gIHByaXZhdGUgX29wZW5lZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKG91dFBhdGg6IHN0cmluZykge1xuICAgIHRoaXMuX2N0eCA9IG5ldyBGb3JtYXRDb250ZXh0KCk7XG4gICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKHRoaXMuX2N0eC5hbGxvY091dHB1dENvbnRleHQyKG51bGwsIG51bGwsIG91dFBhdGgpLCBcImFsbG9jT3V0cHV0Q29udGV4dDJcIik7XG4gIH1cblxuICBhZGRTdHJlYW0oY29kZWNDdHg6IENvZGVjQ29udGV4dCwgY29kZWNUYWc/OiBzdHJpbmcpOiBSZXR1cm5UeXBlPEZvcm1hdENvbnRleHRbXCJuZXdTdHJlYW1cIl0+IHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLl9jdHgubmV3U3RyZWFtKG51bGwpO1xuICAgIHN0cmVhbS50aW1lQmFzZSA9IGNvZGVjQ3R4LnRpbWVCYXNlO1xuICAgIEZGbXBlZ0Vycm9yLnRocm93SWZFcnJvcihzdHJlYW0uY29kZWNwYXIuZnJvbUNvbnRleHQoY29kZWNDdHgpLCBcImNvZGVjcGFyLmZyb21Db250ZXh0XCIpO1xuICAgIGlmIChjb2RlY1RhZykgc3RyZWFtLmNvZGVjcGFyLmNvZGVjVGFnID0gY29kZWNUYWc7XG4gICAgcmV0dXJuIHN0cmVhbTtcbiAgfVxuXG4gIGFzeW5jIG9wZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX29wZW5lZCkgcmV0dXJuO1xuICAgIEZGbXBlZ0Vycm9yLnRocm93SWZFcnJvcihhd2FpdCB0aGlzLl9jdHgub3Blbk91dHB1dCgpLCBcIm9wZW5PdXRwdXRcIik7XG4gICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKGF3YWl0IHRoaXMuX2N0eC53cml0ZUhlYWRlcihudWxsKSwgXCJ3cml0ZUhlYWRlclwiKTtcbiAgICB0aGlzLl9vcGVuZWQgPSB0cnVlO1xuICB9XG5cbiAgYXN5bmMgd3JpdGVQYWNrZXQocGt0OiBQYWNrZXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoYXdhaXQgdGhpcy5fY3R4LmludGVybGVhdmVkV3JpdGVGcmFtZShwa3QpLCBcImludGVybGVhdmVkV3JpdGVGcmFtZVwiKTtcbiAgfVxuXG4gIGFzeW5jIGZpbmlzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX29wZW5lZCkgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMuX2N0eC53cml0ZVRyYWlsZXIoKTtcbiAgICBhd2FpdCB0aGlzLl9jdHguY2xvc2VPdXRwdXQoKTtcbiAgICB0aGlzLl9vcGVuZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmZpbmlzaCgpO1xuICAgIGF3YWl0IHRoaXMuX2N0eFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAzLzIxLlxuXG5pbXBvcnQgeyBDb2RlYywgQ29kZWNDb250ZXh0LCBGRm1wZWdFcnJvciwgRnJhbWUsIFBhY2tldCwgUmF0aW9uYWwsIFNvZnR3YXJlU2NhbGVDb250ZXh0IH0gZnJvbSBcIm5vZGUtYXZcIjtcbmltcG9ydCB7XG4gIEFWX0NPREVDX0ZMQUdfR0xPQkFMX0hFQURFUixcbiAgQVZfUElYX0ZNVF9CR1JBLFxuICBBVl9QSVhfRk1UX1lVVjQyMFAsXG4gIEFWX1BJWF9GTVRfWVVWQTQyMFAsXG4gIEFWRVJST1JfRUFHQUlOLFxuICBBVkVSUk9SX0VPRixcbiAgU1dTX0JJTElORUFSLFxuICB0eXBlIEZGVmlkZW9FbmNvZGVyLFxufSBmcm9tIFwibm9kZS1hdi9jb25zdGFudHNcIjtcbmltcG9ydCB0eXBlIHsgRm9ybWF0TXV4ZXIgfSBmcm9tIFwiLi9tdXhlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvRW5jb2Rlck9wdGlvbnMge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgZnBzOiBudW1iZXI7XG4gIGNvZGVjTmFtZTogRkZWaWRlb0VuY29kZXI7XG4gIHBpeEZtdDogdHlwZW9mIEFWX1BJWF9GTVRfWVVWQTQyMFAgfCB0eXBlb2YgQVZfUElYX0ZNVF9ZVVY0MjBQO1xuICBjb2RlY1RhZz86IHN0cmluZztcbiAgZ2xvYmFsSGVhZGVyOiBib29sZWFuO1xuICBjb2RlY09wdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGJpdHJhdGU6IG51bWJlcjtcbiAgbXV4ZXI6IEZvcm1hdE11eGVyO1xufVxuXG50eXBlIFN0cmVhbSA9IFJldHVyblR5cGU8aW1wb3J0KFwibm9kZS1hdlwiKS5Gb3JtYXRDb250ZXh0W1wibmV3U3RyZWFtXCJdPjtcblxuZXhwb3J0IGNsYXNzIFZpZGVvRW5jb2RlciBpbXBsZW1lbnRzIERpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdHg6IENvZGVjQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3dzOiBTb2Z0d2FyZVNjYWxlQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3JjOiBGcmFtZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHN0OiBGcmFtZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGt0OiBQYWNrZXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbTogU3RyZWFtO1xuICBwdHMgPSAwbjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIGN0eDogQ29kZWNDb250ZXh0LFxuICAgIHN3czogU29mdHdhcmVTY2FsZUNvbnRleHQsXG4gICAgc3JjOiBGcmFtZSxcbiAgICBkc3Q6IEZyYW1lLFxuICAgIHBrdDogUGFja2V0LFxuICAgIHN0cmVhbTogU3RyZWFtLFxuICApIHtcbiAgICB0aGlzLl9jdHggPSBjdHg7XG4gICAgdGhpcy5fc3dzID0gc3dzO1xuICAgIHRoaXMuX3NyYyA9IHNyYztcbiAgICB0aGlzLl9kc3QgPSBkc3Q7XG4gICAgdGhpcy5fcGt0ID0gcGt0O1xuICAgIHRoaXMuX3N0cmVhbSA9IHN0cmVhbTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBjcmVhdGUob3B0czogVmlkZW9FbmNvZGVyT3B0aW9ucyk6IFByb21pc2U8VmlkZW9FbmNvZGVyPiB7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCBmcHMsIGNvZGVjTmFtZSwgcGl4Rm10LCBjb2RlY1RhZywgZ2xvYmFsSGVhZGVyLCBjb2RlY09wdHMsIGJpdHJhdGUsIG11eGVyIH0gPSBvcHRzO1xuXG4gICAgY29uc3QgY29kZWMgPSBDb2RlYy5maW5kRW5jb2RlckJ5TmFtZShjb2RlY05hbWUpO1xuICAgIGlmICghY29kZWMpIHRocm93IG5ldyBFcnJvcihgVmlkZW8gZW5jb2RlciBub3QgZm91bmQ6ICR7Y29kZWNOYW1lfWApO1xuXG4gICAgY29uc3QgY3R4ID0gbmV3IENvZGVjQ29udGV4dCgpO1xuICAgIGN0eC5hbGxvY0NvbnRleHQzKGNvZGVjKTtcbiAgICBjdHguY29kZWNJZCA9IGNvZGVjLmlkO1xuICAgIGN0eC53aWR0aCA9IHdpZHRoO1xuICAgIGN0eC5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgY3R4LnBpeGVsRm9ybWF0ID0gcGl4Rm10O1xuICAgIGN0eC50aW1lQmFzZSA9IG5ldyBSYXRpb25hbCgxLCBmcHMpO1xuICAgIGN0eC5mcmFtZXJhdGUgPSBuZXcgUmF0aW9uYWwoZnBzLCAxKTtcbiAgICBjdHguZ29wU2l6ZSA9IGZwcztcbiAgICBjdHguYml0UmF0ZSA9IEJpZ0ludChiaXRyYXRlKTtcbiAgICBjdHguc2V0T3B0aW9uKFwidGhyZWFkc1wiLCBcIjRcIik7XG4gICAgaWYgKGdsb2JhbEhlYWRlcikgY3R4LnNldEZsYWdzKEFWX0NPREVDX0ZMQUdfR0xPQkFMX0hFQURFUik7XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoY29kZWNPcHRzKSkgY3R4LnNldE9wdGlvbihrLCB2KTtcbiAgICBpZiAoY29kZWNUYWcpIGN0eC5jb2RlY1RhZyA9IGNvZGVjVGFnO1xuICAgIEZGbXBlZ0Vycm9yLnRocm93SWZFcnJvcihhd2FpdCBjdHgub3BlbjIoY29kZWMsIG51bGwpLCBcInZpZGVvQ3R4Lm9wZW4yXCIpO1xuXG4gICAgY29uc3Qgc3dzID0gbmV3IFNvZnR3YXJlU2NhbGVDb250ZXh0KCk7XG4gICAgc3dzLmdldENvbnRleHQod2lkdGgsIGhlaWdodCwgQVZfUElYX0ZNVF9CR1JBLCB3aWR0aCwgaGVpZ2h0LCBwaXhGbXQsIFNXU19CSUxJTkVBUik7XG5cbiAgICBjb25zdCBkc3QgPSBuZXcgRnJhbWUoKTtcbiAgICBkc3QuYWxsb2MoKTtcbiAgICBkc3QuZm9ybWF0ID0gcGl4Rm10O1xuICAgIGRzdC53aWR0aCA9IHdpZHRoO1xuICAgIGRzdC5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKGRzdC5nZXRCdWZmZXIoMCksIFwiZHN0RnJhbWUuZ2V0QnVmZmVyXCIpO1xuXG4gICAgLy8gUHJlLWFsbG9jYXRlIHNyYyBmcmFtZSAoQkdSQSwgcmV1c2VkIGV2ZXJ5IGVuY29kZSlcbiAgICBjb25zdCBzcmMgPSBuZXcgRnJhbWUoKTtcbiAgICBzcmMuYWxsb2MoKTtcbiAgICBzcmMuZm9ybWF0ID0gQVZfUElYX0ZNVF9CR1JBO1xuICAgIHNyYy53aWR0aCA9IHdpZHRoO1xuICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKHNyYy5nZXRCdWZmZXIoMCksIFwic3JjRnJhbWUuZ2V0QnVmZmVyXCIpO1xuXG4gICAgLy8gUHJlLWFsbG9jYXRlIHJldXNhYmxlIHBhY2tldFxuICAgIGNvbnN0IHBrdCA9IG5ldyBQYWNrZXQoKTtcbiAgICBwa3QuYWxsb2MoKTtcblxuICAgIGNvbnN0IHN0cmVhbSA9IG11eGVyLmFkZFN0cmVhbShjdHgsIGNvZGVjVGFnKTtcbiAgICByZXR1cm4gbmV3IFZpZGVvRW5jb2RlcihjdHgsIHN3cywgc3JjLCBkc3QsIHBrdCwgc3RyZWFtKTtcbiAgfVxuXG4gIGdldCBzdHJlYW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0cmVhbTtcbiAgfVxuICBnZXQgdGltZUJhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N0eC50aW1lQmFzZTtcbiAgfVxuXG4gIGFzeW5jIGVuY29kZShiZ3JhOiBCdWZmZXIsIG11eGVyOiBGb3JtYXRNdXhlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgX3NyYzogc3JjLCBfZHN0OiBkc3QsIF9zd3M6IHN3cyB9ID0gdGhpcztcblxuICAgIC8vIFJldXNlIHNyYyBmcmFtZTogbWFrZVdyaXRhYmxlICsgZnJvbUJ1ZmZlciArIHB0c1xuICAgIEZGbXBlZ0Vycm9yLnRocm93SWZFcnJvcihzcmMubWFrZVdyaXRhYmxlKCksIFwic3JjLm1ha2VXcml0YWJsZVwiKTtcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3Ioc3JjLmZyb21CdWZmZXIoYmdyYSksIFwic3JjLmZyb21CdWZmZXJcIik7XG4gICAgc3JjLnB0cyA9IHRoaXMucHRzO1xuXG4gICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKGRzdC5tYWtlV3JpdGFibGUoKSwgXCJkc3QubWFrZVdyaXRhYmxlXCIpO1xuICAgIEZGbXBlZ0Vycm9yLnRocm93SWZFcnJvcihhd2FpdCBzd3Muc2NhbGVGcmFtZShkc3QsIHNyYyksIFwic3dzLnNjYWxlRnJhbWVcIik7XG5cbiAgICBkc3QucHRzID0gdGhpcy5wdHMrKztcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoYXdhaXQgdGhpcy5fY3R4LnNlbmRGcmFtZShkc3QpLCBcInZpZGVvQ3R4LnNlbmRGcmFtZVwiKTtcbiAgICBhd2FpdCB0aGlzLmRyYWluKG11eGVyKTtcbiAgfVxuXG4gIGFzeW5jIGZsdXNoKG11eGVyOiBGb3JtYXRNdXhlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX2N0eC5zZW5kRnJhbWUobnVsbCk7XG4gICAgYXdhaXQgdGhpcy5kcmFpbihtdXhlcik7XG4gIH1cblxuICBbU3ltYm9sLmRpc3Bvc2VdKCk6IHZvaWQge1xuICAgIHRoaXMuX3BrdC5mcmVlKCk7XG4gICAgdGhpcy5fc3JjLmZyZWUoKTtcbiAgICB0aGlzLl9kc3QuZnJlZSgpO1xuICAgIHRoaXMuX3N3c1tTeW1ib2wuZGlzcG9zZV0oKTtcbiAgICB0aGlzLl9jdHguZnJlZUNvbnRleHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZHJhaW4obXV4ZXI6IEZvcm1hdE11eGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGt0ID0gdGhpcy5fcGt0O1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCByID0gYXdhaXQgdGhpcy5fY3R4LnJlY2VpdmVQYWNrZXQocGt0KTtcbiAgICAgIGlmIChyID09PSBBVkVSUk9SX0VBR0FJTiB8fCByID09PSBBVkVSUk9SX0VPRikgYnJlYWs7XG4gICAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IociwgXCJ2aWRlby5yZWNlaXZlUGFja2V0XCIpO1xuICAgICAgcGt0LnN0cmVhbUluZGV4ID0gdGhpcy5fc3RyZWFtLmluZGV4O1xuICAgICAgcGt0LnJlc2NhbGVUcyh0aGlzLl9jdHgudGltZUJhc2UsIHRoaXMuX3N0cmVhbS50aW1lQmFzZSk7XG4gICAgICBhd2FpdCBtdXhlci53cml0ZVBhY2tldChwa3QpO1xuICAgICAgcGt0LnVucmVmKCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAzLzIxLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tIFwibm9kZS1hdlwiO1xuaW1wb3J0IHtcbiAgQVZfTE9HX0VSUk9SLFxuICBBVl9MT0dfV0FSTklORyxcbiAgQVZfUElYX0ZNVF9ZVVZBNDIwUCxcbiAgQVZfU0FNUExFX0ZNVF9GTFQsXG4gIEFWX1NBTVBMRV9GTVRfRkxUUCxcbiAgRkZfRU5DT0RFUl9BQUMsXG4gIEZGX0VOQ09ERVJfTElCWDI2NSxcbiAgdHlwZSBGRkF1ZGlvRW5jb2RlcixcbiAgdHlwZSBGRlZpZGVvRW5jb2Rlcixcbn0gZnJvbSBcIm5vZGUtYXYvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHR5cGUgeyBWaWRlb0Zvcm1hdCB9IGZyb20gXCIuLi8uLi9yZW5kZXJlci9zY2hlbWFcIjtcbmltcG9ydCB7IENvbmN1cnJlbmN5TGltaXRlciB9IGZyb20gXCIuLi9saW1pdGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgQXVkaW9FbmNvZGVyIH0gZnJvbSBcIi4vYXVkaW9cIjtcbmltcG9ydCB7IEZvcm1hdE11eGVyIH0gZnJvbSBcIi4vbXV4ZXJcIjtcbmltcG9ydCB7IFZpZGVvRW5jb2RlciB9IGZyb20gXCIuL3ZpZGVvXCI7XG5cbkxvZy5zZXRDYWxsYmFjaygobGV2ZWwsIG1lc3NhZ2UpID0+IHtcbiAgY29uc3QgbXNnID0gbWVzc2FnZS50cmltRW5kKCk7XG4gIGlmICghbXNnKSByZXR1cm47XG4gIGlmIChsZXZlbCA8PSBBVl9MT0dfRVJST1IpIGxvZ2dlci5lcnJvcihtc2cpO1xuICBlbHNlIGlmIChsZXZlbCA8PSBBVl9MT0dfV0FSTklORykgbG9nZ2VyLndhcm4obXNnKTtcbn0pO1xuXG5pbnRlcmZhY2UgRm9ybWF0U3BlYyB7XG4gIHZpZGVvQ29kZWNOYW1lOiBGRlZpZGVvRW5jb2RlcjtcbiAgcGl4Rm10OiB0eXBlb2YgQVZfUElYX0ZNVF9ZVVZBNDIwUDtcbiAgY29kZWNUYWc/OiBzdHJpbmc7XG4gIGdsb2JhbEhlYWRlcjogYm9vbGVhbjtcbiAgdmlkZW9PcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBhdWRpb0NvZGVjTmFtZTogRkZBdWRpb0VuY29kZXI7XG4gIGF1ZGlvU2FtcGxlRm10OiB0eXBlb2YgQVZfU0FNUExFX0ZNVF9GTFQgfCB0eXBlb2YgQVZfU0FNUExFX0ZNVF9GTFRQO1xuICBvdXRTYW1wbGVSYXRlOiBudW1iZXI7XG59XG5cbmNvbnN0IEZPUk1BVF9TUEVDUzogUmVjb3JkPFZpZGVvRm9ybWF0LCBGb3JtYXRTcGVjPiA9IHtcbiAgbXA0OiB7XG4gICAgdmlkZW9Db2RlY05hbWU6IEZGX0VOQ09ERVJfTElCWDI2NSxcbiAgICBwaXhGbXQ6IEFWX1BJWF9GTVRfWVVWQTQyMFAsXG4gICAgY29kZWNUYWc6IFwiaHZjMVwiLFxuICAgIGdsb2JhbEhlYWRlcjogdHJ1ZSxcbiAgICB2aWRlb09wdHM6IHsgcHJlc2V0OiBcInVsdHJhZmFzdFwiLCBcIngyNjUtcGFyYW1zXCI6IFwibG9nLWxldmVsPTJcIiB9LFxuICAgIGF1ZGlvQ29kZWNOYW1lOiBGRl9FTkNPREVSX0FBQyxcbiAgICBhdWRpb1NhbXBsZUZtdDogQVZfU0FNUExFX0ZNVF9GTFRQLFxuICAgIG91dFNhbXBsZVJhdGU6IDQ0XzEwMCxcbiAgfSxcbiAgd2VibToge1xuICAgIHZpZGVvQ29kZWNOYW1lOiBcImxpYnZweC12cDlcIiBhcyBGRlZpZGVvRW5jb2RlcixcbiAgICBwaXhGbXQ6IEFWX1BJWF9GTVRfWVVWQTQyMFAsXG4gICAgZ2xvYmFsSGVhZGVyOiBmYWxzZSxcbiAgICB2aWRlb09wdHM6IHsgcXVhbGl0eTogXCJyZWFsdGltZVwiLCBcImNwdS11c2VkXCI6IFwiOFwiIH0sXG4gICAgYXVkaW9Db2RlY05hbWU6IFwibGlib3B1c1wiIGFzIEZGQXVkaW9FbmNvZGVyLFxuICAgIGF1ZGlvU2FtcGxlRm10OiBBVl9TQU1QTEVfRk1UX0ZMVCxcbiAgICBvdXRTYW1wbGVSYXRlOiA0OF8wMDAsXG4gIH0sXG59O1xuXG5pbnRlcmZhY2UgRm9ybWF0U3RhdGUge1xuICBmb3JtYXQ6IFZpZGVvRm9ybWF0O1xuICBvdXRQYXRoOiBzdHJpbmc7XG4gIG11eGVyOiBGb3JtYXRNdXhlcjtcbiAgdmlkZW86IFZpZGVvRW5jb2RlcjtcbiAgYXVkaW8/OiBBdWRpb0VuY29kZXI7XG4gIGxpbWl0ZXI6IENvbmN1cnJlbmN5TGltaXRlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmNvZGVyUGlwZWxpbmVPcHRpb25zIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGZwczogbnVtYmVyO1xuICBmb3JtYXRzOiBWaWRlb0Zvcm1hdFtdO1xuICBvdXREaXI6IHN0cmluZztcbiAgd2l0aEF1ZGlvPzogYm9vbGVhbjtcbiAgdmlkZW9CaXRyYXRlPzogbnVtYmVyO1xuICBhdWRpb0JpdHJhdGU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEVuY29kZXJSZXN1bHQgPSBQYXJ0aWFsPFJlY29yZDxWaWRlb0Zvcm1hdCwgc3RyaW5nPj47XG5cbmV4cG9ydCBjbGFzcyBFbmNvZGVyUGlwZWxpbmUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZXM6IEZvcm1hdFN0YXRlW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihzdGF0ZXM6IEZvcm1hdFN0YXRlW10pIHtcbiAgICB0aGlzLl9zdGF0ZXMgPSBzdGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlKHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgZnBzLFxuICAgIGZvcm1hdHMsXG4gICAgb3V0RGlyLFxuICAgIHdpdGhBdWRpbyA9IGZhbHNlLFxuICAgIHZpZGVvQml0cmF0ZSA9IDhfMDAwXzAwMCxcbiAgICBhdWRpb0JpdHJhdGUgPSAxMjhfMDAwLFxuICB9OiBFbmNvZGVyUGlwZWxpbmVPcHRpb25zKTogUHJvbWlzZTxFbmNvZGVyUGlwZWxpbmU+IHtcbiAgICBjb25zdCBzdGF0ZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZvcm1hdHMubWFwKGFzeW5jIChmb3JtYXQpID0+IHtcbiAgICAgICAgY29uc3Qgc3BlYyA9IEZPUk1BVF9TUEVDU1tmb3JtYXRdO1xuICAgICAgICBjb25zdCBvdXRQYXRoID0gam9pbihvdXREaXIsIGBvdXRwdXQuJHtmb3JtYXR9YCk7XG4gICAgICAgIGNvbnN0IG11eGVyID0gbmV3IEZvcm1hdE11eGVyKG91dFBhdGgpO1xuXG4gICAgICAgIGNvbnN0IHZpZGVvID0gYXdhaXQgVmlkZW9FbmNvZGVyLmNyZWF0ZSh7XG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgIGZwcyxcbiAgICAgICAgICBjb2RlY05hbWU6IHNwZWMudmlkZW9Db2RlY05hbWUsXG4gICAgICAgICAgcGl4Rm10OiBzcGVjLnBpeEZtdCxcbiAgICAgICAgICBjb2RlY1RhZzogc3BlYy5jb2RlY1RhZyxcbiAgICAgICAgICBnbG9iYWxIZWFkZXI6IHNwZWMuZ2xvYmFsSGVhZGVyLFxuICAgICAgICAgIGNvZGVjT3B0czogc3BlYy52aWRlb09wdHMsXG4gICAgICAgICAgYml0cmF0ZTogdmlkZW9CaXRyYXRlLFxuICAgICAgICAgIG11eGVyLFxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgYXVkaW86IEF1ZGlvRW5jb2RlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHdpdGhBdWRpbykge1xuICAgICAgICAgIGF1ZGlvID0gYXdhaXQgQXVkaW9FbmNvZGVyLmNyZWF0ZSh7XG4gICAgICAgICAgICBvdXRTYW1wbGVSYXRlOiBzcGVjLm91dFNhbXBsZVJhdGUsXG4gICAgICAgICAgICBvdXRTYW1wbGVGbXQ6IHNwZWMuYXVkaW9TYW1wbGVGbXQsXG4gICAgICAgICAgICBjb2RlY05hbWU6IHNwZWMuYXVkaW9Db2RlY05hbWUsXG4gICAgICAgICAgICBnbG9iYWxIZWFkZXI6IHNwZWMuZ2xvYmFsSGVhZGVyLFxuICAgICAgICAgICAgYml0cmF0ZTogYXVkaW9CaXRyYXRlLFxuICAgICAgICAgICAgbXV4ZXIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBtdXhlci5vcGVuKCk7XG4gICAgICAgIGNvbnN0IGxpbWl0ZXIgPSBuZXcgQ29uY3VycmVuY3lMaW1pdGVyKDEpO1xuICAgICAgICByZXR1cm4geyBmb3JtYXQsIG91dFBhdGgsIG11eGVyLCB2aWRlbywgYXVkaW8sIGxpbWl0ZXIgfSBzYXRpc2ZpZXMgRm9ybWF0U3RhdGU7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiBuZXcgRW5jb2RlclBpcGVsaW5lKHN0YXRlcyk7XG4gIH1cblxuICBzZXR1cEF1ZGlvKHNhbXBsZVJhdGU6IG51bWJlcik6IHZvaWQge1xuICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLl9zdGF0ZXMpIHtcbiAgICAgIHMuYXVkaW8/LnNldElucHV0UmF0ZShzYW1wbGVSYXRlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBlbmNvZGVGcmFtZShiZ3JhOiBCdWZmZXIsIF90aW1lc3RhbXBVczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5fc3RhdGVzLm1hcCgocykgPT4gcy5saW1pdGVyLnNjaGVkdWxlKCgpID0+IHMudmlkZW8uZW5jb2RlKGJncmEsIHMubXV4ZXIpKSkpO1xuICB9XG5cbiAgYXN5bmMgZW5jb2RlQXVkaW8ocGNtOiBCdWZmZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMuX3N0YXRlcy5tYXAoKHMpID0+IHtcbiAgICAgICAgaWYgKCFzLmF1ZGlvKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIHJldHVybiBzLmxpbWl0ZXIuc2NoZWR1bGUoKCkgPT4gcy5hdWRpbyEuZW5jb2RlKHBjbSwgcy5tdXhlcikpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGZpbmlzaCgpOiBQcm9taXNlPEVuY29kZXJSZXN1bHQ+IHtcbiAgICBjb25zdCByZXN1bHQ6IEVuY29kZXJSZXN1bHQgPSB7fTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMuX3N0YXRlcy5tYXAoYXN5bmMgKHMpID0+IHtcbiAgICAgICAgYXdhaXQgcy5saW1pdGVyLmVuZCgpO1xuICAgICAgICBhd2FpdCBzLmF1ZGlvPy5mbHVzaChzLm11eGVyKTtcbiAgICAgICAgYXdhaXQgcy52aWRlby5mbHVzaChzLm11eGVyKTtcbiAgICAgICAgcmVzdWx0W3MuZm9ybWF0XSA9IHMub3V0UGF0aDtcbiAgICAgICAgdXNpbmcgX2EgPSBzLmF1ZGlvO1xuICAgICAgICB1c2luZyBfdiA9IHMudmlkZW87XG4gICAgICAgIGF3YWl0IHVzaW5nIF9tID0gcy5tdXhlcjtcbiAgICAgIH0pLFxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|
|
470
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2xhenkudHMiLCIuLi9zcmMvYmFzZS90aW1pbmcudHMiLCIuLi9zcmMvYmFzZS9yZXRyeS50cyIsIi4uL3NyYy9iYXNlL2VuY29kZXIvYXVkaW8udHMiLCIuLi9zcmMvYmFzZS9lbmNvZGVyL211eGVyLnRzIiwiLi4vc3JjL2Jhc2UvZW5jb2Rlci92aWRlby50cyIsIi4uL3NyYy9iYXNlL2VuY29kZXIvZW5jb2Rlci50cyJdLCJuYW1lcyI6WyJzZXRUaW1lb3V0IiwiRkZtcGVnRXJyb3IiLCJDb2RlYyIsIkNvZGVjQ29udGV4dCIsIlJhdGlvbmFsIiwiQVZfQ09ERUNfRkxBR19HTE9CQUxfSEVBREVSIiwiRnJhbWUiLCJQYWNrZXQiLCJBVkVSUk9SX0VBR0FJTiIsIkFWRVJST1JfRU9GIiwiQVZfUElYX0ZNVF9ZVVZBNDIwUCIsIkFWX1NBTVBMRV9GTVRfRkxUUCIsIkFWX1NBTVBMRV9GTVRfRkxUIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFTyxJQUFNLE9BQU4sTUFBYztBQUFBLEVBQ25CLFlBQXFCLFNBQUEsRUFBb0I7QUFBcEIsSUFBQSxJQUFBLENBQUEsU0FBQSxHQUFBLFNBQUE7QUFBQSxFQUFxQjtBQUFBLEVBRTFDLElBQUksS0FBQSxHQUFXO0FBQ2IsSUFBQSxJQUFJLENBQUMsS0FBSyxZQUFBLEVBQWM7QUFDdEIsTUFBQSxJQUFBLENBQUssTUFBQSxHQUFTLEtBQUssU0FBQSxFQUFVO0FBQzdCLE1BQUEsSUFBQSxDQUFLLFlBQUEsR0FBZSxJQUFBO0FBQUEsSUFDdEI7QUFDQSxJQUFBLE9BQU8sSUFBQSxDQUFLLE1BQUE7QUFBQSxFQUNkO0FBQUEsRUFFQSxJQUFJLFdBQUEsR0FBdUI7QUFDekIsSUFBQSxPQUFPLElBQUEsQ0FBSyxZQUFBO0FBQUEsRUFDZDtBQUFBLEVBRVEsWUFBQSxHQUFlLEtBQUE7QUFBQSxFQUNmLE1BQUE7QUFDVjs7O0FDakJPLFNBQVMsTUFBTSxFQUFBLEVBQVk7QUFDaEMsRUFBQSxPQUFPLElB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QUEsRUFDVDtBQUNGIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMS8zMC5cblxuZXhwb3J0IGNsYXNzIExhenk8VD4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtYWtlVmFsdWU6ICgpID0+IFQpIHt9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5tYWtlVmFsdWUoKTtcbiAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlITtcbiAgfVxuXG4gIGdldCBpbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIF92YWx1ZTogVCB8IHVuZGVmaW5lZDtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmV4cG9ydCBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGVyaW9kaWNhbChjYWxsYmFjazogKGNvdW50OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkLCBtczogbnVtYmVyKSB7XG4gIGxldCB0b2tlbjogTm9kZUpTLlRpbWVvdXQ7XG4gIGxldCBjbG9zZWQgPSBmYWxzZTtcbiAgYXN5bmMgZnVuY3Rpb24gdGljayhjb3VudDogbnVtYmVyKSB7XG4gICAgYXdhaXQgY2FsbGJhY2soY291bnQpO1xuICAgIGlmIChjbG9zZWQpIHJldHVybjtcbiAgICB0b2tlbiA9IHNldFRpbWVvdXQoKCkgPT4gdGljayhjb3VudCArIDEpLCBtcyk7XG4gIH1cbiAgdG9rZW4gPSBzZXRUaW1lb3V0KCgpID0+IHRpY2soMCksIG1zKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBjbG9zZWQgPSB0cnVlO1xuICAgIGNsZWFyVGltZW91dCh0b2tlbik7XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA1LlxuXG5pbXBvcnQgeyBzZXRUaW1lb3V0IH0gZnJvbSBcInRpbWVycy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgc2xlZXAgfSBmcm9tIFwiLi90aW1pbmdcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZXRyeU9wdGlvbnM8QXJncyBleHRlbmRzIGFueVtdLCBSZXQ+IHtcbiAgZm46ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPFJldD47XG4gIG1heEF0dGVtcHRzPzogbnVtYmVyO1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlUmV0cnk8QXJncyBleHRlbmRzIGFueVtdLCBSZXQ+KHsgZm4sIG1heEF0dGVtcHRzID0gMywgdGltZW91dCB9OiBSZXRyeU9wdGlvbnM8QXJncywgUmV0Pikge1xuICBjb25zdCB0aW1lb3V0RXJyb3IgPSBuZXcgRXJyb3IoYHRpbWVvdXQgb3ZlciAke3RpbWVvdXR9bXNgKTtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uICguLi5hcmdzOiBBcmdzKSB7XG4gICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtmbiguLi5hcmdzKV07XG4gICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIHNldFRpbWVvdXQodGltZW91dCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHRocm93IHRpbWVvdXRFcnJvcjtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmFjZShwcm9taXNlcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGF0dGVtcHQrKztcbiAgICAgICAgaWYgKGF0dGVtcHQgPj0gbWF4QXR0ZW1wdHMpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHNsZWVwKE1hdGgucG93KDIsIGF0dGVtcHQpICogMTAwICsgTWF0aC5yYW5kb20oKSAqIDEwMCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMy8yMS5cblxuaW1wb3J0IHtcbiAgQ29kZWMsXG4gIENvZGVjQ29udGV4dCxcbiAgRkZtcGVnRXJyb3IsXG4gIEZpbHRlcixcbiAgRmlsdGVyR3JhcGgsXG4gIEZpbHRlckluT3V0LFxuICBGcmFtZSxcbiAgUGFja2V0LFxuICBSYXRpb25hbCxcbiAgdHlwZSBGaWx0ZXJDb250ZXh0LFxufSBmcm9tIFwibm9kZS1hdlwiO1xuaW1wb3J0IHtcbiAgQVZfQ0hBTk5FTF9MQVlPVVRfU1RFUkVPLFxuICBBVl9DT0RFQ19GTEFHX0dMT0JBTF9IRUFERVIsXG4gIEFWX1NBTVBMRV9GTVRfRkxULFxuICBBVl9TQU1QTEVfRk1UX0ZMVFAsXG4gIEFWRVJST1JfRUFHQUlOLFxuICBBVkVSUk9SX0VPRixcbiAgdHlwZSBGRkF1ZGlvRW5jb2Rlcixcbn0gZnJvbSBcIm5vZGUtYXYvY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IEZvcm1hdE11eGVyIH0gZnJvbSBcIi4vbXV4ZXJcIjtcblxuY29uc3QgU0FNUExFX0ZNVF9OQU1FOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xuICBbQVZfU0FNUExFX0ZNVF9GTFRdOiBcImZsdFwiLFxuICBbQVZfU0FNUExFX0ZNVF9GTFRQXTogXCJmbHRwXCIsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGlvRW5jb2Rlck9wdGlvbnMge1xuICBvdXRTYW1wbGVSYXRlOiBudW1iZXI7XG4gIG91dFNhbXBsZUZtdDogdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUIHwgdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUUDtcbiAgY29kZWNOYW1lOiBGRkF1ZGlvRW5jb2RlcjtcbiAgZ2xvYmFsSGVhZGVyOiBib29sZWFuO1xuICBiaXRyYXRlOiBudW1iZXI7XG4gIG11eGVyOiBGb3JtYXRNdXhlcjtcbn1cblxudHlwZSBTdHJlYW0gPSBSZXR1cm5UeXBlPGltcG9ydChcIm5vZGUtYXZcIikuRm9ybWF0Q29udGV4dFtcIm5ld1N0cmVhbVwiXT47XG5cbmV4cG9ydCBjbGFzcyBBdWRpb0VuY29kZXIgaW1wbGVtZW50cyBEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3R4OiBDb2RlY0NvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbTogU3RyZWFtO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRSYXRlOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX291dEZtdDogdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUIHwgdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUUDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZnJhbWVTaXplOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BrdDogUGFja2V0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJGcmFtZTogRnJhbWU7XG5cbiAgcHJpdmF0ZSBfZ3JhcGg/OiBGaWx0ZXJHcmFwaDtcbiAgcHJpdmF0ZSBfYnVmU3JjPzogRmlsdGVyQ29udGV4dDtcbiAgcHJpdmF0ZSBfYnVmU2luaz86IEZpbHRlckNvbnRleHQ7XG4gIHByaXZhdGUgX2luUmF0ZT86IG51bWJlcjtcbiAgcHRzID0gMG47XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihjdHg6IENvZGVjQ29udGV4dCwgc3RyZWFtOiBTdHJlYW0sIG91dEZtdDogdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUIHwgdHlwZW9mIEFWX1NBTVBMRV9GTVRfRkxUUCkge1xuICAgIHRoaXMuX2N0eCA9IGN0eDtcbiAgICB0aGlzLl9zdHJlYW0gPSBzdHJlYW07XG4gICAgdGhpcy5fb3V0UmF0ZSA9IGN0eC5zYW1wbGVSYXRlO1xuICAgIHRoaXMuX291dEZtdCA9IG91dEZtdDtcbiAgICB0aGlzLl9mcmFtZVNpemUgPSBjdHguZnJhbWVTaXplO1xuXG4gICAgdGhpcy5fcGt0ID0gbmV3IFBhY2tldCgpO1xuICAgIHRoaXMuX3BrdC5hbGxvYygpO1xuXG4gICAgdGhpcy5fZmlsdGVyRnJhbWUgPSBuZXcgRnJhbWUoKTtcbiAgICB0aGlzLl9maWx0ZXJGcmFtZS5hbGxvYygpO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZShvcHRzOiBBdWRpb0VuY29kZXJPcHRpb25zKTogUHJvbWlzZTxBdWRpb0VuY29kZXI+IHtcbiAgICBjb25zdCB7IG91dFNhbXBsZVJhdGUsIG91dFNhbXBsZUZtdCwgY29kZWNOYW1lLCBnbG9iYWxIZWFkZXIsIGJpdHJhdGUsIG11eGVyIH0gPSBvcHRzO1xuXG4gICAgY29uc3QgY29kZWMgPSBDb2RlYy5maW5kRW5jb2RlckJ5TmFtZShjb2RlY05hbWUpO1xuICAgIGlmICghY29kZWMpIHRocm93IG5ldyBFcnJvcihgQXVkaW8gZW5jb2RlciBub3QgZm91bmQ6ICR7Y29kZWNOYW1lfWApO1xuXG4gICAgY29uc3QgY3R4ID0gbmV3IENvZGVjQ29udGV4dCgpO1xuICAgIGN0eC5hbGxvY0NvbnRleHQzKGNvZGVjKTtcbiAgICBjdHguY29kZWNJZCA9IGNvZGVjLmlkO1xuICAgIGN0eC5zYW1wbGVGb3JtYXQgPSBvdXRTYW1wbGVGbXQ7XG4gICAgY3R4LnNhbXBsZVJhdGUgPSBvdXRTYW1wbGVSYXRlO1xuICAgIGN0eC5jaGFubmVsTGF5b3V0ID0gQVZfQ0hBTk5FTF9MQVlPVVRfU1RFUkVPO1xuICAgIGN0eC50aW1lQmFzZSA9IG5ldyBSYXRpb25hbCgxLCBvdXRTYW1wbGVSYXRlKTtcbiAgICBjdHguYml0UmF0ZSA9IEJpZ0ludChiaXRyYXRlKTtcbiAgICBpZiAoZ2xvYmFsSGVhZGVyKSBjdHguc2V0RmxhZ3MoQVZfQ09ERUNfRkxBR19HTE9CQUxfSEVBREVSKTtcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoYXdhaXQgY3R4Lm9wZW4yKGNvZGVjLCBudWxsKSwgXCJhdWRpb0N0eC5vcGVuMlwiKTtcblxuICAgIGNvbnN0IHN0cmVhbSA9IG11eGVyLmFkZFN0cmVhbShjdHgpO1xuICAgIHJldHVybiBuZXcgQXVkaW9FbmNvZGVyKGN0eCwgc3RyZWFtLCBvdXRTYW1wbGVGbXQpO1xuICB9XG5cbiAgLyoqIENhbGxlZCBvbmNlIHdoZW4gYXVkaW8tbWV0YSBhcnJpdmVzIHdpdGggdGhlIHBhZ2UncyBhY3R1YWwgc2FtcGxlIHJhdGUuICovXG4gIHNldElucHV0UmF0ZShpblNhbXBsZVJhdGU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2VHcmFwaCgpO1xuICAgIHRoaXMuX2luUmF0ZSA9IGluU2FtcGxlUmF0ZTtcblxuICAgIGNvbnN0IGdyYXBoID0gbmV3IEZpbHRlckdyYXBoKCk7XG4gICAgZ3JhcGguYWxsb2MoKTtcblxuICAgIC8vIGFidWZmZXIgc291cmNlOiBpbnRlcmxlYXZlZCBzdGVyZW8gZmxvYXQgZnJvbSBicm93c2VyXG4gICAgY29uc3QgYWJ1ZmZlciA9IEZpbHRlci5nZXRCeU5hbWUoXCJhYnVmZmVyXCIpITtcbiAgICBjb25zdCBzcmNBcmdzID0gYHNhbXBsZV9yYXRlPSR7aW5TYW1wbGVSYXRlfTpzYW1wbGVfZm10PWZsdDpjaGFubmVsX2xheW91dD1zdGVyZW86dGltZV9iYXNlPTEvJHtpblNhbXBsZVJhdGV9YDtcbiAgICBjb25zdCBidWZTcmMgPSBncmFwaC5jcmVhdGVGaWx0ZXIoYWJ1ZmZlciwgXCJzcmNcIiwgc3JjQXJncyk7XG4gICAgaWYgKCFidWZTcmMpIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgYWJ1ZmZlclwiKTtcblxuICAgIC8vIGFidWZmZXJzaW5rXG4gICAgY29uc3QgYWJ1ZmZlcnNpbmsgPSBGaWx0ZXIuZ2V0QnlOYW1lKFwiYWJ1ZmZlcnNpbmtcIikhO1xuICAgIGNvbnN0IGJ1ZlNpbmsgPSBncmFwaC5jcmVhdGVGaWx0ZXIoYWJ1ZmZlcnNpbmssIFwic2lua1wiKTtcbiAgICBpZiAoIWJ1ZlNpbmspIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgYWJ1ZmZlcnNpbmtcIik7XG5cbiAgICAvLyBQYXJzZSBmaWx0ZXIgY2hhaW46IGFmb3JtYXQgKyBhc2V0bnNhbXBsZXNcbiAgICBjb25zdCBmbXROYW1lID0gU0FNUExFX0ZNVF9OQU1FW3RoaXMuX291dEZtdF0gPz8gXCJmbHRcIjtcbiAgICBjb25zdCBmaWx0ZXJEZXNjID0gYGFmb3JtYXQ9c2FtcGxlX2ZtdHM9JHtmbXROYW1lfTpzYW1wbGVfcmF0ZXM9JHt0aGlzLl9vdXRSYXRlfTpjaGFubmVsX2xheW91dHM9c3RlcmVvLGFzZXRuc2FtcGxlcz1uPSR7dGhpcy5fZnJhbWVTaXplfTpwPTFgO1xuXG4gICAgY29uc3Qgb3V0cHV0cyA9IEZpbHRlckluT3V0LmNyZWF0ZUxpc3QoW3sgbmFtZTogXCJpblwiLCBmaWx0ZXJDdHg6IGJ1ZlNyYywgcGFkSWR4OiAwIH1dKTtcbiAgICBjb25zdCBpbnB1dHMgPSBGaWx0ZXJJbk91dC5jcmVhdGVMaXN0KFt7IG5hbWU6IFwib3V0XCIsIGZpbHRlckN0eDogYnVmU2luaywgcGFkSWR4OiAwIH1dKTtcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoZ3JhcGgucGFyc2VQdHIoZmlsdGVyRGVzYywgaW5wdXRzLCBvdXRwdXRzKSwgXCJncmFwaC5wYXJzZVB0clwiKTtcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoZ3JhcGguY29uZmlnU3luYygpLCBcImdyYXBoLmNvbmZpZ1wiKTtcblxuICAgIHRoaXMuX2dyYXBoID0gZ3JhcGg7XG4gICAgdGhpcy5fYnVmU3JjID0gYnVmU3JjO1xuICAgIHRoaXMuX2J1ZlNpbmsgPSBidWZTaW5rO1xuICB9XG5cbiAgZ2V0IHN0cmVhbSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RyZWFtO1xuICB9XG4gIGdldCB0aW1lQmFzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3R4LnRpbWVCYXNlO1xuICB9XG5cbiAgYXN5bmMgZW5jb2RlKHBjbTogQnVmZmVyLCBtdXhlcjogRm9ybWF0TXV4ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX2J1ZlNyYyB8fCAhdGhpcy5fYnVmU2luayB8fCAhdGhpcy5faW5SYXRlKSByZXR1cm47XG5cbiAgICAvLyBJbi1wbGFjZSBzYW5pdGl6ZSDigJQgbXV0YXRlIHNvdXJjZSBkaXJlY3RseSwgbm8gY29weVxuICAgIGNvbnN0IHNyYyA9IG5ldyBGbG9hdDMyQXJyYXkocGNtLmJ1ZmZlciwgcGNtLmJ5dGVPZmZzZXQsIHBjbS5ieXRlTGVuZ3RoIC8gNCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcmMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNGaW5pdGUoc3JjW2ldISkpIHNyY1tpXSA9IDA7XG4gICAgfVxuICAgIGNvbnN0IG5TYW1wbGVzID0gc3JjLmxlbmd0aCA+PiAxO1xuXG4gICAgdXNpbmcgZnJhbWUgPSBGcmFtZS5mcm9tQXVkaW9CdWZmZXIoQnVmZmVyLmZyb20oc3JjLmJ1ZmZlciwgc3JjLmJ5dGVPZmZzZXQsIHNyYy5ieXRlTGVuZ3RoKSwge1xuICAgICAgbmJTYW1wbGVzOiBuU2FtcGxlcyxcbiAgICAgIGZvcm1hdDogQVZfU0FNUExFX0ZNVF9GTFQsXG4gICAgICBzYW1wbGVSYXRlOiB0aGlzLl9pblJhdGUsXG4gICAgICBjaGFubmVsTGF5b3V0OiBBVl9DSEFOTkVMX0xBWU9VVF9TVEVSRU8sXG4gICAgICBwdHM6IHRoaXMucHRzLFxuICAgICAgdGltZUJhc2U6IHsgbnVtOiAxLCBkZW46IHRoaXMuX2luUmF0ZSB9LFxuICAgIH0pO1xuICAgIHRoaXMucHRzICs9IEJpZ0ludChuU2FtcGxlcyk7XG5cbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoYXdhaXQgdGhpcy5fYnVmU3JjLmJ1ZmZlcnNyY0FkZEZyYW1lKGZyYW1lKSwgXCJidWZmZXJzcmNBZGRGcmFtZVwiKTtcbiAgICBhd2FpdCB0aGlzLl9kcmFpbkZpbHRlcihtdXhlcik7XG4gIH1cblxuICBhc3luYyBmbHVzaChtdXhlcjogRm9ybWF0TXV4ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fYnVmU3JjICYmIHRoaXMuX2J1ZlNpbmspIHtcbiAgICAgIC8vIFNpZ25hbCBFT0YgdG8gZmlsdGVyIGdyYXBoXG4gICAgICBhd2FpdCB0aGlzLl9idWZTcmMuYnVmZmVyc3JjQWRkRnJhbWUobnVsbCk7XG4gICAgICBhd2FpdCB0aGlzLl9kcmFpbkZpbHRlcihtdXhlcik7XG4gICAgfVxuICAgIC8vIEZsdXNoIGNvZGVjXG4gICAgYXdhaXQgdGhpcy5fY3R4LnNlbmRGcmFtZShudWxsKTtcbiAgICBhd2FpdCB0aGlzLl9kcmFpbkNvZGVjKG11eGVyKTtcbiAgfVxuXG4gIFtTeW1ib2wuZGlzcG9zZV0oKTogdm9pZCB7XG4gICAgdGhpcy5fcGt0LmZyZWUoKTtcbiAgICB0aGlzLl9maWx0ZXJGcmFtZS5mcmVlKCk7XG4gICAgdGhpcy5fZGlzcG9zZUdyYXBoKCk7XG4gICAgdGhpcy5fY3R4LmZyZWVDb250ZXh0KCk7XG4gIH1cblxuICAvKiogRHJhaW4gZmlsdGVyIOKGkiBzZW5kIHRvIGNvZGVjIOKGkiBkcmFpbiBjb2RlYyBwYWNrZXRzLiAqL1xuICBwcml2YXRlIGFzeW5jIF9kcmFpbkZpbHRlcihtdXhlcjogRm9ybWF0TXV4ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvdXRGcmFtZSA9IHRoaXMuX2ZpbHRlckZyYW1lO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCByID0gYXdhaXQgdGhpcy5fYnVmU2luayEuYnVmZmVyc2lua0dldEZyYW1lKG91dEZyYW1lKTtcbiAgICAgIGlmIChyID09PSBBVkVSUk9SX0VBR0FJTiB8fCByID09PSBBVkVSUk9SX0VPRikgYnJlYWs7XG4gICAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IociwgXCJidWZmZXJzaW5rR2V0RnJhbWVcIik7XG4gICAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoYXdhaXQgdGhpcy5fY3R4LnNlbmRGcmFtZShvdXRGcmFtZSksIFwiYXVkaW9DdHguc2VuZEZyYW1lXCIpO1xuICAgICAgb3V0RnJhbWUudW5yZWYoKTtcbiAgICAgIGF3YWl0IHRoaXMuX2RyYWluQ29kZWMobXV4ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBEcmFpbiBjb2RlYyBwYWNrZXRzIHRvIG11eGVyLiAqL1xuICBwcml2YXRlIGFzeW5jIF9kcmFpbkNvZGVjKG11eGVyOiBGb3JtYXRNdXhlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBrdCA9IHRoaXMuX3BrdDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgciA9IGF3YWl0IHRoaXMuX2N0eC5yZWNlaXZlUGFja2V0KHBrdCk7XG4gICAgICBpZiAociA9PT0gQVZFUlJPUl9FQUdBSU4gfHwgciA9PT0gQVZFUlJPUl9FT0YpIGJyZWFrO1xuICAgICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKHIsIFwiYXVkaW8ucmVjZWl2ZVBhY2tldFwiKTtcbiAgICAgIHBrdC5zdHJlYW1JbmRleCA9IHRoaXMuX3N0cmVhbS5pbmRleDtcbiAgICAgIHBrdC5yZXNjYWxlVHModGhpcy5fY3R4LnRpbWVCYXNlLCB0aGlzLl9zdHJlYW0udGltZUJhc2UpO1xuICAgICAgYXdhaXQgbXV4ZXIud3JpdGVQYWNrZXQocGt0KTtcbiAgICAgIHBrdC51bnJlZigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rpc3Bvc2VHcmFwaCgpOiB2b2lkIHtcbiAgICAvLyBGaWx0ZXJHcmFwaC5mcmVlKCkgcmVsZWFzZXMgYWxsIGNvbnRhaW5lZCBmaWx0ZXIgY29udGV4dHNcbiAgICB0aGlzLl9ncmFwaD8uW1N5bWJvbC5kaXNwb3NlXSgpO1xuICAgIHRoaXMuX2dyYXBoID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2J1ZlNyYyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9idWZTaW5rID0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb2RlY0NvbnRleHQsIEZGbXBlZ0Vycm9yLCBGb3JtYXRDb250ZXh0LCBQYWNrZXQgfSBmcm9tIFwibm9kZS1hdlwiO1xuXG5leHBvcnQgY2xhc3MgRm9ybWF0TXV4ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdHg6IEZvcm1hdENvbnRleHQ7XG4gIHByaXZhdGUgX29wZW5lZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKG91dFBhdGg6IHN0cmluZykge1xuICAgIHRoaXMuX2N0eCA9IG5ldyBGb3JtYXRDb250ZXh0KCk7XG4gICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKHRoaXMuX2N0eC5hbGxvY091dHB1dENvbnRleHQyKG51bGwsIG51bGwsIG91dFBhdGgpLCBcImFsbG9jT3V0cHV0Q29udGV4dDJcIik7XG4gIH1cblxuICBhZGRTdHJlYW0oY29kZWNDdHg6IENvZGVjQ29udGV4dCwgY29kZWNUYWc/OiBzdHJpbmcpOiBSZXR1cm5UeXBlPEZvcm1hdENvbnRleHRbXCJuZXdTdHJlYW1cIl0+IHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLl9jdHgubmV3U3RyZWFtKG51bGwpO1xuICAgIHN0cmVhbS50aW1lQmFzZSA9IGNvZGVjQ3R4LnRpbWVCYXNlO1xuICAgIEZGbXBlZ0Vycm9yLnRocm93SWZFcnJvcihzdHJlYW0uY29kZWNwYXIuZnJvbUNvbnRleHQoY29kZWNDdHgpLCBcImNvZGVjcGFyLmZyb21Db250ZXh0XCIpO1xuICAgIGlmIChjb2RlY1RhZykgc3RyZWFtLmNvZGVjcGFyLmNvZGVjVGFnID0gY29kZWNUYWc7XG4gICAgcmV0dXJuIHN0cmVhbTtcbiAgfVxuXG4gIGFzeW5jIG9wZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX29wZW5lZCkgcmV0dXJuO1xuICAgIEZGbXBlZ0Vycm9yLnRocm93SWZFcnJvcihhd2FpdCB0aGlzLl9jdHgub3Blbk91dHB1dCgpLCBcIm9wZW5PdXRwdXRcIik7XG4gICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKGF3YWl0IHRoaXMuX2N0eC53cml0ZUhlYWRlcihudWxsKSwgXCJ3cml0ZUhlYWRlclwiKTtcbiAgICB0aGlzLl9vcGVuZWQgPSB0cnVlO1xuICB9XG5cbiAgYXN5bmMgd3JpdGVQYWNrZXQocGt0OiBQYWNrZXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoYXdhaXQgdGhpcy5fY3R4LmludGVybGVhdmVkV3JpdGVGcmFtZShwa3QpLCBcImludGVybGVhdmVkV3JpdGVGcmFtZVwiKTtcbiAgfVxuXG4gIGFzeW5jIGZpbmlzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX29wZW5lZCkgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMuX2N0eC53cml0ZVRyYWlsZXIoKTtcbiAgICBhd2FpdCB0aGlzLl9jdHguY2xvc2VPdXRwdXQoKTtcbiAgICB0aGlzLl9vcGVuZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmZpbmlzaCgpO1xuICAgIGF3YWl0IHRoaXMuX2N0eFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAzLzIxLlxuXG5pbXBvcnQgeyBDb2RlYywgQ29kZWNDb250ZXh0LCBGRm1wZWdFcnJvciwgRnJhbWUsIFBhY2tldCwgUmF0aW9uYWwsIFNvZnR3YXJlU2NhbGVDb250ZXh0IH0gZnJvbSBcIm5vZGUtYXZcIjtcbmltcG9ydCB7XG4gIEFWX0NPREVDX0ZMQUdfR0xPQkFMX0hFQURFUixcbiAgQVZfUElYX0ZNVF9CR1JBLFxuICBBVl9QSVhfRk1UX1lVVjQyMFAsXG4gIEFWX1BJWF9GTVRfWVVWQTQyMFAsXG4gIEFWRVJST1JfRUFHQUlOLFxuICBBVkVSUk9SX0VPRixcbiAgU1dTX0JJTElORUFSLFxuICB0eXBlIEZGVmlkZW9FbmNvZGVyLFxufSBmcm9tIFwibm9kZS1hdi9jb25zdGFudHNcIjtcbmltcG9ydCB0eXBlIHsgRm9ybWF0TXV4ZXIgfSBmcm9tIFwiLi9tdXhlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvRW5jb2Rlck9wdGlvbnMge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgZnBzOiBudW1iZXI7XG4gIGNvZGVjTmFtZTogRkZWaWRlb0VuY29kZXI7XG4gIHBpeEZtdDogdHlwZW9mIEFWX1BJWF9GTVRfWVVWQTQyMFAgfCB0eXBlb2YgQVZfUElYX0ZNVF9ZVVY0MjBQO1xuICBjb2RlY1RhZz86IHN0cmluZztcbiAgZ2xvYmFsSGVhZGVyOiBib29sZWFuO1xuICBjb2RlY09wdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGJpdHJhdGU6IG51bWJlcjtcbiAgbXV4ZXI6IEZvcm1hdE11eGVyO1xufVxuXG50eXBlIFN0cmVhbSA9IFJldHVyblR5cGU8aW1wb3J0KFwibm9kZS1hdlwiKS5Gb3JtYXRDb250ZXh0W1wibmV3U3RyZWFtXCJdPjtcblxuZXhwb3J0IGNsYXNzIFZpZGVvRW5jb2RlciBpbXBsZW1lbnRzIERpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdHg6IENvZGVjQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3dzOiBTb2Z0d2FyZVNjYWxlQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3JjOiBGcmFtZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHN0OiBGcmFtZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGt0OiBQYWNrZXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbTogU3RyZWFtO1xuICBwdHMgPSAwbjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIGN0eDogQ29kZWNDb250ZXh0LFxuICAgIHN3czogU29mdHdhcmVTY2FsZUNvbnRleHQsXG4gICAgc3JjOiBGcmFtZSxcbiAgICBkc3Q6IEZyYW1lLFxuICAgIHBrdDogUGFja2V0LFxuICAgIHN0cmVhbTogU3RyZWFtLFxuICApIHtcbiAgICB0aGlzLl9jdHggPSBjdHg7XG4gICAgdGhpcy5fc3dzID0gc3dzO1xuICAgIHRoaXMuX3NyYyA9IHNyYztcbiAgICB0aGlzLl9kc3QgPSBkc3Q7XG4gICAgdGhpcy5fcGt0ID0gcGt0O1xuICAgIHRoaXMuX3N0cmVhbSA9IHN0cmVhbTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBjcmVhdGUob3B0czogVmlkZW9FbmNvZGVyT3B0aW9ucyk6IFByb21pc2U8VmlkZW9FbmNvZGVyPiB7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCBmcHMsIGNvZGVjTmFtZSwgcGl4Rm10LCBjb2RlY1RhZywgZ2xvYmFsSGVhZGVyLCBjb2RlY09wdHMsIGJpdHJhdGUsIG11eGVyIH0gPSBvcHRzO1xuXG4gICAgY29uc3QgY29kZWMgPSBDb2RlYy5maW5kRW5jb2RlckJ5TmFtZShjb2RlY05hbWUpO1xuICAgIGlmICghY29kZWMpIHRocm93IG5ldyBFcnJvcihgVmlkZW8gZW5jb2RlciBub3QgZm91bmQ6ICR7Y29kZWNOYW1lfWApO1xuXG4gICAgY29uc3QgY3R4ID0gbmV3IENvZGVjQ29udGV4dCgpO1xuICAgIGN0eC5hbGxvY0NvbnRleHQzKGNvZGVjKTtcbiAgICBjdHguY29kZWNJZCA9IGNvZGVjLmlkO1xuICAgIGN0eC53aWR0aCA9IHdpZHRoO1xuICAgIGN0eC5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgY3R4LnBpeGVsRm9ybWF0ID0gcGl4Rm10O1xuICAgIGN0eC50aW1lQmFzZSA9IG5ldyBSYXRpb25hbCgxLCBmcHMpO1xuICAgIGN0eC5mcmFtZXJhdGUgPSBuZXcgUmF0aW9uYWwoZnBzLCAxKTtcbiAgICBjdHguZ29wU2l6ZSA9IGZwcztcbiAgICBjdHguYml0UmF0ZSA9IEJpZ0ludChiaXRyYXRlKTtcbiAgICBjdHguc2V0T3B0aW9uKFwidGhyZWFkc1wiLCBcIjRcIik7XG4gICAgaWYgKGdsb2JhbEhlYWRlcikgY3R4LnNldEZsYWdzKEFWX0NPREVDX0ZMQUdfR0xPQkFMX0hFQURFUik7XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoY29kZWNPcHRzKSkgY3R4LnNldE9wdGlvbihrLCB2KTtcbiAgICBpZiAoY29kZWNUYWcpIGN0eC5jb2RlY1RhZyA9IGNvZGVjVGFnO1xuICAgIEZGbXBlZ0Vycm9yLnRocm93SWZFcnJvcihhd2FpdCBjdHgub3BlbjIoY29kZWMsIG51bGwpLCBcInZpZGVvQ3R4Lm9wZW4yXCIpO1xuXG4gICAgY29uc3Qgc3dzID0gbmV3IFNvZnR3YXJlU2NhbGVDb250ZXh0KCk7XG4gICAgc3dzLmdldENvbnRleHQod2lkdGgsIGhlaWdodCwgQVZfUElYX0ZNVF9CR1JBLCB3aWR0aCwgaGVpZ2h0LCBwaXhGbXQsIFNXU19CSUxJTkVBUik7XG5cbiAgICBjb25zdCBkc3QgPSBuZXcgRnJhbWUoKTtcbiAgICBkc3QuYWxsb2MoKTtcbiAgICBkc3QuZm9ybWF0ID0gcGl4Rm10O1xuICAgIGRzdC53aWR0aCA9IHdpZHRoO1xuICAgIGRzdC5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKGRzdC5nZXRCdWZmZXIoMCksIFwiZHN0RnJhbWUuZ2V0QnVmZmVyXCIpO1xuXG4gICAgLy8gUHJlLWFsbG9jYXRlIHNyYyBmcmFtZSAoQkdSQSwgcmV1c2VkIGV2ZXJ5IGVuY29kZSlcbiAgICBjb25zdCBzcmMgPSBuZXcgRnJhbWUoKTtcbiAgICBzcmMuYWxsb2MoKTtcbiAgICBzcmMuZm9ybWF0ID0gQVZfUElYX0ZNVF9CR1JBO1xuICAgIHNyYy53aWR0aCA9IHdpZHRoO1xuICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKHNyYy5nZXRCdWZmZXIoMCksIFwic3JjRnJhbWUuZ2V0QnVmZmVyXCIpO1xuXG4gICAgLy8gUHJlLWFsbG9jYXRlIHJldXNhYmxlIHBhY2tldFxuICAgIGNvbnN0IHBrdCA9IG5ldyBQYWNrZXQoKTtcbiAgICBwa3QuYWxsb2MoKTtcblxuICAgIGNvbnN0IHN0cmVhbSA9IG11eGVyLmFkZFN0cmVhbShjdHgsIGNvZGVjVGFnKTtcbiAgICByZXR1cm4gbmV3IFZpZGVvRW5jb2RlcihjdHgsIHN3cywgc3JjLCBkc3QsIHBrdCwgc3RyZWFtKTtcbiAgfVxuXG4gIGdldCBzdHJlYW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0cmVhbTtcbiAgfVxuICBnZXQgdGltZUJhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N0eC50aW1lQmFzZTtcbiAgfVxuXG4gIGFzeW5jIGVuY29kZShiZ3JhOiBCdWZmZXIsIG11eGVyOiBGb3JtYXRNdXhlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgX3NyYzogc3JjLCBfZHN0OiBkc3QsIF9zd3M6IHN3cyB9ID0gdGhpcztcblxuICAgIC8vIFJldXNlIHNyYyBmcmFtZTogbWFrZVdyaXRhYmxlICsgZnJvbUJ1ZmZlciArIHB0c1xuICAgIEZGbXBlZ0Vycm9yLnRocm93SWZFcnJvcihzcmMubWFrZVdyaXRhYmxlKCksIFwic3JjLm1ha2VXcml0YWJsZVwiKTtcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3Ioc3JjLmZyb21CdWZmZXIoYmdyYSksIFwic3JjLmZyb21CdWZmZXJcIik7XG4gICAgc3JjLnB0cyA9IHRoaXMucHRzO1xuXG4gICAgRkZtcGVnRXJyb3IudGhyb3dJZkVycm9yKGRzdC5tYWtlV3JpdGFibGUoKSwgXCJkc3QubWFrZVdyaXRhYmxlXCIpO1xuICAgIEZGbXBlZ0Vycm9yLnRocm93SWZFcnJvcihhd2FpdCBzd3Muc2NhbGVGcmFtZShkc3QsIHNyYyksIFwic3dzLnNjYWxlRnJhbWVcIik7XG5cbiAgICBkc3QucHRzID0gdGhpcy5wdHMrKztcbiAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IoYXdhaXQgdGhpcy5fY3R4LnNlbmRGcmFtZShkc3QpLCBcInZpZGVvQ3R4LnNlbmRGcmFtZVwiKTtcbiAgICBhd2FpdCB0aGlzLmRyYWluKG11eGVyKTtcbiAgfVxuXG4gIGFzeW5jIGZsdXNoKG11eGVyOiBGb3JtYXRNdXhlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX2N0eC5zZW5kRnJhbWUobnVsbCk7XG4gICAgYXdhaXQgdGhpcy5kcmFpbihtdXhlcik7XG4gIH1cblxuICBbU3ltYm9sLmRpc3Bvc2VdKCk6IHZvaWQge1xuICAgIHRoaXMuX3BrdC5mcmVlKCk7XG4gICAgdGhpcy5fc3JjLmZyZWUoKTtcbiAgICB0aGlzLl9kc3QuZnJlZSgpO1xuICAgIHRoaXMuX3N3c1tTeW1ib2wuZGlzcG9zZV0oKTtcbiAgICB0aGlzLl9jdHguZnJlZUNvbnRleHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZHJhaW4obXV4ZXI6IEZvcm1hdE11eGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGt0ID0gdGhpcy5fcGt0O1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCByID0gYXdhaXQgdGhpcy5fY3R4LnJlY2VpdmVQYWNrZXQocGt0KTtcbiAgICAgIGlmIChyID09PSBBVkVSUk9SX0VBR0FJTiB8fCByID09PSBBVkVSUk9SX0VPRikgYnJlYWs7XG4gICAgICBGRm1wZWdFcnJvci50aHJvd0lmRXJyb3IociwgXCJ2aWRlby5yZWNlaXZlUGFja2V0XCIpO1xuICAgICAgcGt0LnN0cmVhbUluZGV4ID0gdGhpcy5fc3RyZWFtLmluZGV4O1xuICAgICAgcGt0LnJlc2NhbGVUcyh0aGlzLl9jdHgudGltZUJhc2UsIHRoaXMuX3N0cmVhbS50aW1lQmFzZSk7XG4gICAgICBhd2FpdCBtdXhlci53cml0ZVBhY2tldChwa3QpO1xuICAgICAgcGt0LnVucmVmKCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAzLzIxLlxuXG5pbXBvcnQgeyBMb2cgfSBmcm9tIFwibm9kZS1hdlwiO1xuaW1wb3J0IHtcbiAgQVZfTE9HX0VSUk9SLFxuICBBVl9MT0dfV0FSTklORyxcbiAgQVZfUElYX0ZNVF9ZVVZBNDIwUCxcbiAgQVZfU0FNUExFX0ZNVF9GTFQsXG4gIEFWX1NBTVBMRV9GTVRfRkxUUCxcbiAgRkZfRU5DT0RFUl9BQUMsXG4gIEZGX0VOQ09ERVJfTElCWDI2NSxcbiAgdHlwZSBGRkF1ZGlvRW5jb2RlcixcbiAgdHlwZSBGRlZpZGVvRW5jb2Rlcixcbn0gZnJvbSBcIm5vZGUtYXYvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHR5cGUgeyBWaWRlb0Zvcm1hdCB9IGZyb20gXCIuLi8uLi9yZW5kZXJlci9zY2hlbWFcIjtcbmltcG9ydCB7IENvbmN1cnJlbmN5TGltaXRlciB9IGZyb20gXCIuLi9saW1pdGVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgQXVkaW9FbmNvZGVyIH0gZnJvbSBcIi4vYXVkaW9cIjtcbmltcG9ydCB7IEZvcm1hdE11eGVyIH0gZnJvbSBcIi4vbXV4ZXJcIjtcbmltcG9ydCB7IFZpZGVvRW5jb2RlciB9IGZyb20gXCIuL3ZpZGVvXCI7XG5cbkxvZy5zZXRDYWxsYmFjaygobGV2ZWwsIG1lc3NhZ2UpID0+IHtcbiAgY29uc3QgbXNnID0gbWVzc2FnZS50cmltRW5kKCk7XG4gIGlmICghbXNnKSByZXR1cm47XG4gIGlmIChsZXZlbCA8PSBBVl9MT0dfRVJST1IpIGxvZ2dlci5lcnJvcihtc2cpO1xuICBlbHNlIGlmIChsZXZlbCA8PSBBVl9MT0dfV0FSTklORykgbG9nZ2VyLndhcm4obXNnKTtcbn0pO1xuXG5pbnRlcmZhY2UgRm9ybWF0U3BlYyB7XG4gIHZpZGVvQ29kZWNOYW1lOiBGRlZpZGVvRW5jb2RlcjtcbiAgcGl4Rm10OiB0eXBlb2YgQVZfUElYX0ZNVF9ZVVZBNDIwUDtcbiAgY29kZWNUYWc/OiBzdHJpbmc7XG4gIGdsb2JhbEhlYWRlcjogYm9vbGVhbjtcbiAgdmlkZW9PcHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBhdWRpb0NvZGVjTmFtZTogRkZBdWRpb0VuY29kZXI7XG4gIGF1ZGlvU2FtcGxlRm10OiB0eXBlb2YgQVZfU0FNUExFX0ZNVF9GTFQgfCB0eXBlb2YgQVZfU0FNUExFX0ZNVF9GTFRQO1xuICBvdXRTYW1wbGVSYXRlOiBudW1iZXI7XG59XG5cbmNvbnN0IEZPUk1BVF9TUEVDUzogUmVjb3JkPFZpZGVvRm9ybWF0LCBGb3JtYXRTcGVjPiA9IHtcbiAgbXA0OiB7XG4gICAgdmlkZW9Db2RlY05hbWU6IEZGX0VOQ09ERVJfTElCWDI2NSxcbiAgICBwaXhGbXQ6IEFWX1BJWF9GTVRfWVVWQTQyMFAsXG4gICAgY29kZWNUYWc6IFwiaHZjMVwiLFxuICAgIGdsb2JhbEhlYWRlcjogdHJ1ZSxcbiAgICB2aWRlb09wdHM6IHsgcHJlc2V0OiBcInVsdHJhZmFzdFwiLCBcIngyNjUtcGFyYW1zXCI6IFwibG9nLWxldmVsPTFcIiB9LFxuICAgIGF1ZGlvQ29kZWNOYW1lOiBGRl9FTkNPREVSX0FBQyxcbiAgICBhdWRpb1NhbXBsZUZtdDogQVZfU0FNUExFX0ZNVF9GTFRQLFxuICAgIG91dFNhbXBsZVJhdGU6IDQ0XzEwMCxcbiAgfSxcbiAgd2VibToge1xuICAgIHZpZGVvQ29kZWNOYW1lOiBcImxpYnZweC12cDlcIiBhcyBGRlZpZGVvRW5jb2RlcixcbiAgICBwaXhGbXQ6IEFWX1BJWF9GTVRfWVVWQTQyMFAsXG4gICAgZ2xvYmFsSGVhZGVyOiBmYWxzZSxcbiAgICB2aWRlb09wdHM6IHsgcXVhbGl0eTogXCJyZWFsdGltZVwiLCBcImNwdS11c2VkXCI6IFwiOFwiIH0sXG4gICAgYXVkaW9Db2RlY05hbWU6IFwibGlib3B1c1wiIGFzIEZGQXVkaW9FbmNvZGVyLFxuICAgIGF1ZGlvU2FtcGxlRm10OiBBVl9TQU1QTEVfRk1UX0ZMVCxcbiAgICBvdXRTYW1wbGVSYXRlOiA0OF8wMDAsXG4gIH0sXG59O1xuXG5pbnRlcmZhY2UgRm9ybWF0U3RhdGUge1xuICBmb3JtYXQ6IFZpZGVvRm9ybWF0O1xuICBvdXRQYXRoOiBzdHJpbmc7XG4gIG11eGVyOiBGb3JtYXRNdXhlcjtcbiAgdmlkZW86IFZpZGVvRW5jb2RlcjtcbiAgYXVkaW8/OiBBdWRpb0VuY29kZXI7XG4gIGxpbWl0ZXI6IENvbmN1cnJlbmN5TGltaXRlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmNvZGVyUGlwZWxpbmVPcHRpb25zIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGZwczogbnVtYmVyO1xuICBmb3JtYXRzOiBWaWRlb0Zvcm1hdFtdO1xuICBvdXREaXI6IHN0cmluZztcbiAgd2l0aEF1ZGlvPzogYm9vbGVhbjtcbiAgdmlkZW9CaXRyYXRlPzogbnVtYmVyO1xuICBhdWRpb0JpdHJhdGU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEVuY29kZXJSZXN1bHQgPSBQYXJ0aWFsPFJlY29yZDxWaWRlb0Zvcm1hdCwgc3RyaW5nPj47XG5cbmV4cG9ydCBjbGFzcyBFbmNvZGVyUGlwZWxpbmUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZXM6IEZvcm1hdFN0YXRlW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihzdGF0ZXM6IEZvcm1hdFN0YXRlW10pIHtcbiAgICB0aGlzLl9zdGF0ZXMgPSBzdGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlKHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgZnBzLFxuICAgIGZvcm1hdHMsXG4gICAgb3V0RGlyLFxuICAgIHdpdGhBdWRpbyA9IGZhbHNlLFxuICAgIHZpZGVvQml0cmF0ZSA9IDhfMDAwXzAwMCxcbiAgICBhdWRpb0JpdHJhdGUgPSAxMjhfMDAwLFxuICB9OiBFbmNvZGVyUGlwZWxpbmVPcHRpb25zKTogUHJvbWlzZTxFbmNvZGVyUGlwZWxpbmU+IHtcbiAgICBjb25zdCBzdGF0ZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGZvcm1hdHMubWFwKGFzeW5jIChmb3JtYXQpID0+IHtcbiAgICAgICAgY29uc3Qgc3BlYyA9IEZPUk1BVF9TUEVDU1tmb3JtYXRdO1xuICAgICAgICBjb25zdCBvdXRQYXRoID0gam9pbihvdXREaXIsIGBvdXRwdXQuJHtmb3JtYXR9YCk7XG4gICAgICAgIGNvbnN0IG11eGVyID0gbmV3IEZvcm1hdE11eGVyKG91dFBhdGgpO1xuXG4gICAgICAgIGNvbnN0IHZpZGVvID0gYXdhaXQgVmlkZW9FbmNvZGVyLmNyZWF0ZSh7XG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgIGZwcyxcbiAgICAgICAgICBjb2RlY05hbWU6IHNwZWMudmlkZW9Db2RlY05hbWUsXG4gICAgICAgICAgcGl4Rm10OiBzcGVjLnBpeEZtdCxcbiAgICAgICAgICBjb2RlY1RhZzogc3BlYy5jb2RlY1RhZyxcbiAgICAgICAgICBnbG9iYWxIZWFkZXI6IHNwZWMuZ2xvYmFsSGVhZGVyLFxuICAgICAgICAgIGNvZGVjT3B0czogc3BlYy52aWRlb09wdHMsXG4gICAgICAgICAgYml0cmF0ZTogdmlkZW9CaXRyYXRlLFxuICAgICAgICAgIG11eGVyLFxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgYXVkaW86IEF1ZGlvRW5jb2RlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHdpdGhBdWRpbykge1xuICAgICAgICAgIGF1ZGlvID0gYXdhaXQgQXVkaW9FbmNvZGVyLmNyZWF0ZSh7XG4gICAgICAgICAgICBvdXRTYW1wbGVSYXRlOiBzcGVjLm91dFNhbXBsZVJhdGUsXG4gICAgICAgICAgICBvdXRTYW1wbGVGbXQ6IHNwZWMuYXVkaW9TYW1wbGVGbXQsXG4gICAgICAgICAgICBjb2RlY05hbWU6IHNwZWMuYXVkaW9Db2RlY05hbWUsXG4gICAgICAgICAgICBnbG9iYWxIZWFkZXI6IHNwZWMuZ2xvYmFsSGVhZGVyLFxuICAgICAgICAgICAgYml0cmF0ZTogYXVkaW9CaXRyYXRlLFxuICAgICAgICAgICAgbXV4ZXIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBtdXhlci5vcGVuKCk7XG4gICAgICAgIGNvbnN0IGxpbWl0ZXIgPSBuZXcgQ29uY3VycmVuY3lMaW1pdGVyKDEpO1xuICAgICAgICByZXR1cm4geyBmb3JtYXQsIG91dFBhdGgsIG11eGVyLCB2aWRlbywgYXVkaW8sIGxpbWl0ZXIgfSBzYXRpc2ZpZXMgRm9ybWF0U3RhdGU7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiBuZXcgRW5jb2RlclBpcGVsaW5lKHN0YXRlcyk7XG4gIH1cblxuICBzZXR1cEF1ZGlvKHNhbXBsZVJhdGU6IG51bWJlcik6IHZvaWQge1xuICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLl9zdGF0ZXMpIHtcbiAgICAgIHMuYXVkaW8/LnNldElucHV0UmF0ZShzYW1wbGVSYXRlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBlbmNvZGVGcmFtZShiZ3JhOiBCdWZmZXIsIF90aW1lc3RhbXBVczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5fc3RhdGVzLm1hcCgocykgPT4gcy5saW1pdGVyLnNjaGVkdWxlKCgpID0+IHMudmlkZW8uZW5jb2RlKGJncmEsIHMubXV4ZXIpKSkpO1xuICB9XG5cbiAgYXN5bmMgZW5jb2RlQXVkaW8ocGNtOiBCdWZmZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMuX3N0YXRlcy5tYXAoKHMpID0+IHtcbiAgICAgICAgaWYgKCFzLmF1ZGlvKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIHJldHVybiBzLmxpbWl0ZXIuc2NoZWR1bGUoKCkgPT4gcy5hdWRpbyEuZW5jb2RlKHBjbSwgcy5tdXhlcikpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGZpbmlzaCgpOiBQcm9taXNlPEVuY29kZXJSZXN1bHQ+IHtcbiAgICBjb25zdCByZXN1bHQ6IEVuY29kZXJSZXN1bHQgPSB7fTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMuX3N0YXRlcy5tYXAoYXN5bmMgKHMpID0+IHtcbiAgICAgICAgYXdhaXQgcy5saW1pdGVyLmVuZCgpO1xuICAgICAgICBhd2FpdCBzLmF1ZGlvPy5mbHVzaChzLm11eGVyKTtcbiAgICAgICAgYXdhaXQgcy52aWRlby5mbHVzaChzLm11eGVyKTtcbiAgICAgICAgcmVzdWx0W3MuZm9ybWF0XSA9IHMub3V0UGF0aDtcbiAgICAgICAgdXNpbmcgX2EgPSBzLmF1ZGlvO1xuICAgICAgICB1c2luZyBfdiA9IHMudmlkZW87XG4gICAgICAgIGF3YWl0IHVzaW5nIF9tID0gcy5tdXhlcjtcbiAgICAgIH0pLFxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pup-recorder",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Record web pages as video",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"pup": "dist/cli.js"
|
|
17
17
|
},
|
|
18
18
|
"exports": {
|
|
19
|
+
"./package.json": "./package.json",
|
|
19
20
|
".": {
|
|
20
21
|
"types": "./dist/index.d.ts",
|
|
21
22
|
"import": "./dist/index.js",
|