@open-flash/stream
Advanced tools
Comparing version 0.0.2 to 0.1.0
@@ -102,3 +102,3 @@ import { Incident } from "incident"; | ||
constructor(bytes: Uint8Array, byteOffset: UintSize = 0, bitOffset: UintSize = 0) { | ||
constructor(bytes: Uint8Array, _byteOffset: UintSize = 0, bitOffset: UintSize = 0) { | ||
this.bytes = bytes; | ||
@@ -105,0 +105,0 @@ this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.length); |
@@ -18,2 +18,2 @@ "use strict"; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvY29uY2F0LWJ5dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEscUJBQTRCLE1BQW9CO0lBQzlDLElBQUksU0FBUyxHQUFhLENBQUMsQ0FBQztJQUM1QixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtRQUMxQixTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztLQUMzQjtJQUNELE1BQU0sTUFBTSxHQUFlLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELElBQUksTUFBTSxHQUFhLENBQUMsQ0FBQztJQUN6QixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtRQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztLQUN4QjtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFaRCxrQ0FZQyIsImZpbGUiOiJjb25jYXQtYnl0ZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVaW50U2l6ZSB9IGZyb20gXCJzZW1hbnRpYy10eXBlc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0Qnl0ZXMoY2h1bmtzOiBVaW50OEFycmF5W10pOiBVaW50OEFycmF5IHtcbiAgbGV0IHRvdGFsU2l6ZTogVWludFNpemUgPSAwO1xuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykge1xuICAgIHRvdGFsU2l6ZSArPSBjaHVuay5sZW5ndGg7XG4gIH1cbiAgY29uc3QgcmVzdWx0OiBVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodG90YWxTaXplKTtcbiAgbGV0IG9mZnNldDogVWludFNpemUgPSAwO1xuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykge1xuICAgIHJlc3VsdC5zZXQoY2h1bmssIG9mZnNldCk7XG4gICAgb2Zmc2V0ICs9IGNodW5rLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvY29uY2F0LWJ5dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsU0FBZ0IsV0FBVyxDQUFDLE1BQW9CO0lBQzlDLElBQUksU0FBUyxHQUFhLENBQUMsQ0FBQztJQUM1QixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtRQUMxQixTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztLQUMzQjtJQUNELE1BQU0sTUFBTSxHQUFlLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELElBQUksTUFBTSxHQUFhLENBQUMsQ0FBQztJQUN6QixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtRQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztLQUN4QjtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFaRCxrQ0FZQyIsImZpbGUiOiJjb25jYXQtYnl0ZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVaW50U2l6ZSB9IGZyb20gXCJzZW1hbnRpYy10eXBlc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0Qnl0ZXMoY2h1bmtzOiBVaW50OEFycmF5W10pOiBVaW50OEFycmF5IHtcbiAgbGV0IHRvdGFsU2l6ZTogVWludFNpemUgPSAwO1xuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykge1xuICAgIHRvdGFsU2l6ZSArPSBjaHVuay5sZW5ndGg7XG4gIH1cbiAgY29uc3QgcmVzdWx0OiBVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodG90YWxTaXplKTtcbiAgbGV0IG9mZnNldDogVWludFNpemUgPSAwO1xuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykge1xuICAgIHJlc3VsdC5zZXQoY2h1bmssIG9mZnNldCk7XG4gICAgb2Zmc2V0ICs9IGNodW5rLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
@@ -9,3 +9,3 @@ import { Incident } from "incident"; | ||
export declare type IncompleteStreamError = Incident<Data, Name, Cause>; | ||
export declare function format({needed}: Data): string; | ||
export declare function format({ needed }: Data): string; | ||
export declare function createIncompleteStreamError(needed?: number): IncompleteStreamError; |
@@ -14,2 +14,2 @@ "use strict"; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvZXJyb3JzL2luY29tcGxldGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdUNBQW9DO0FBR3ZCLFFBQUEsSUFBSSxHQUFTLGtCQUFrQixDQUFDO0FBUzdDLGdCQUF1QixFQUFDLE1BQU0sRUFBTztJQUNuQyxPQUFPLFFBQVEsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZGLENBQUM7QUFGRCx3QkFFQztBQUVELHFDQUE0QyxNQUFlO0lBQ3pELE9BQU8sSUFBSSxtQkFBUSxDQUFDLFlBQUksRUFBRSxFQUFDLE1BQU0sRUFBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFGRCxrRUFFQyIsImZpbGUiOiJlcnJvcnMvaW5jb21wbGV0ZS1zdHJlYW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmNpZGVudCB9IGZyb20gXCJpbmNpZGVudFwiO1xuXG5leHBvcnQgdHlwZSBOYW1lID0gXCJJbmNvbXBsZXRlU3RyZWFtXCI7XG5leHBvcnQgY29uc3QgbmFtZTogTmFtZSA9IFwiSW5jb21wbGV0ZVN0cmVhbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICBuZWVkZWQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIENhdXNlID0gdW5kZWZpbmVkO1xuZXhwb3J0IHR5cGUgSW5jb21wbGV0ZVN0cmVhbUVycm9yID0gSW5jaWRlbnQ8RGF0YSwgTmFtZSwgQ2F1c2U+O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KHtuZWVkZWR9OiBEYXRhKSB7XG4gIHJldHVybiBgTmVlZCAke25lZWRlZCA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IG5lZWRlZH0gbW9yZSBieXRlcyB0byBwcm9jZXNzIHRoZSBzdHJlYW1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5jb21wbGV0ZVN0cmVhbUVycm9yKG5lZWRlZD86IG51bWJlcik6IEluY29tcGxldGVTdHJlYW1FcnJvciB7XG4gIHJldHVybiBuZXcgSW5jaWRlbnQobmFtZSwge25lZWRlZH0sIGZvcm1hdCk7XG59XG4iXSwic291cmNlUm9vdCI6Ii4uIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvZXJyb3JzL2luY29tcGxldGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdUNBQW9DO0FBR3ZCLFFBQUEsSUFBSSxHQUFTLGtCQUFrQixDQUFDO0FBUzdDLFNBQWdCLE1BQU0sQ0FBQyxFQUFDLE1BQU0sRUFBTztJQUNuQyxPQUFPLFFBQVEsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZGLENBQUM7QUFGRCx3QkFFQztBQUVELFNBQWdCLDJCQUEyQixDQUFDLE1BQWU7SUFDekQsT0FBTyxJQUFJLG1CQUFRLENBQUMsWUFBSSxFQUFFLEVBQUMsTUFBTSxFQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUZELGtFQUVDIiwiZmlsZSI6ImVycm9ycy9pbmNvbXBsZXRlLXN0cmVhbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluY2lkZW50IH0gZnJvbSBcImluY2lkZW50XCI7XG5cbmV4cG9ydCB0eXBlIE5hbWUgPSBcIkluY29tcGxldGVTdHJlYW1cIjtcbmV4cG9ydCBjb25zdCBuYW1lOiBOYW1lID0gXCJJbmNvbXBsZXRlU3RyZWFtXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YSB7XG4gIG5lZWRlZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQ2F1c2UgPSB1bmRlZmluZWQ7XG5leHBvcnQgdHlwZSBJbmNvbXBsZXRlU3RyZWFtRXJyb3IgPSBJbmNpZGVudDxEYXRhLCBOYW1lLCBDYXVzZT47XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQoe25lZWRlZH06IERhdGEpIHtcbiAgcmV0dXJuIGBOZWVkICR7bmVlZGVkID09PSB1bmRlZmluZWQgPyBcIlwiIDogbmVlZGVkfSBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgdGhlIHN0cmVhbWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbmNvbXBsZXRlU3RyZWFtRXJyb3IobmVlZGVkPzogbnVtYmVyKTogSW5jb21wbGV0ZVN0cmVhbUVycm9yIHtcbiAgcmV0dXJuIG5ldyBJbmNpZGVudChuYW1lLCB7bmVlZGVkfSwgZm9ybWF0KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiLi4ifQ== |
{ | ||
"name": "@open-flash/stream", | ||
"version": "0.0.2", | ||
"version": "0.1.0", | ||
"homepage": "https://github.com/open-flash/stream", | ||
@@ -28,32 +28,23 @@ "description": "Streams for Open Flash", | ||
"devDependencies": { | ||
"@types/chai": "^4.1.3", | ||
"@types/chai": "^4.1.7", | ||
"@types/gulp": "^4.0.5", | ||
"@types/minimist": "^1.2.0", | ||
"@types/mocha": "^5.2.0", | ||
"@types/node": "^9.6.6", | ||
"chai": "^4.1.2", | ||
"@types/mocha": "^5.2.5", | ||
"@types/node": "^10.12.18", | ||
"chai": "^4.2.0", | ||
"gulp": "^4.0.0", | ||
"gulp-cli": "^2.0.1", | ||
"minimist": "^1.2.0", | ||
"ts-node": "^6.0.1", | ||
"tslint": "^5.9.1", | ||
"turbo-gulp": "^0.17.1", | ||
"typescript": "^2.8.3" | ||
"ts-node": "^7.0.1", | ||
"tslint": "^5.12.1", | ||
"turbo-gulp": "^0.18.0", | ||
"typescript": "^3.2.4" | ||
}, | ||
"nyc": { | ||
"include": [ | ||
"build/test/lib/**/*.js", | ||
"build/test/lib/**/*.mjs" | ||
], | ||
"reporter": [ | ||
"text", | ||
"html" | ||
], | ||
"extension": [ | ||
".mjs" | ||
"c88": { | ||
"match": [ | ||
"build/test/lib/*.{js,mjs}", | ||
"build/test/lib/**/*.{js,mjs}" | ||
] | ||
}, | ||
"esm": { | ||
"mode": "strict" | ||
}, | ||
"gitHead": "09140ee7c617053a13716e51625a4fa7e539d222" | ||
"gitHead": "1286f6ec8ff3f5ccbd3d30eaeb956bfa3bbbbfa5" | ||
} |
@@ -63,3 +63,3 @@ import { Float16, Float32, Float64, Sint16, Sint32, Sint8, Uint16, Uint32, Uint8, UintSize } from "semantic-types"; | ||
bitPos: UintSize; | ||
constructor(bytes: Uint8Array, byteOffset?: UintSize, bitOffset?: UintSize); | ||
constructor(bytes: Uint8Array, _byteOffset?: UintSize, bitOffset?: UintSize); | ||
static equals(left: ReadableStream, right: ReadableStream): boolean; | ||
@@ -108,4 +108,4 @@ asBitStream(): this; | ||
readCString(): string; | ||
private readUintBits(n); | ||
private readIntBits(n); | ||
private readUintBits; | ||
private readIntBits; | ||
} |
@@ -6,3 +6,3 @@ "use strict"; | ||
class ReadableStream { | ||
constructor(bytes, byteOffset = 0, bitOffset = 0) { | ||
constructor(bytes, _byteOffset = 0, bitOffset = 0) { | ||
this.bytes = bytes; | ||
@@ -272,2 +272,2 @@ this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.length); | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLG9DQUFvQztJQUNwRixNQUFNLFFBQVEsR0FBWSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsa0NBQWtDO0lBQzFFLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRTtRQUNsQixPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ3BEO1NBQU0sSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLEVBQUUsZ0NBQWdDO1FBQzlELE9BQU8sUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0tBQy9DO1NBQU07UUFDTCxPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNwRTtBQUNILENBQUMiLCJmaWxlIjoicmVhZGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmNpZGVudCB9IGZyb20gXCJpbmNpZGVudFwiO1xuaW1wb3J0IHsgRmxvYXQxNiwgRmxvYXQzMiwgRmxvYXQ2NCwgU2ludDE2LCBTaW50MzIsIFNpbnQ4LCBVaW50MTYsIFVpbnQzMiwgVWludDgsIFVpbnRTaXplIH0gZnJvbSBcInNlbWFudGljLXR5cGVzXCI7XG5pbXBvcnQgeyBjcmVhdGVJbmNvbXBsZXRlU3RyZWFtRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMvaW5jb21wbGV0ZS1zdHJlYW1cIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbm9uLWJ5dGUtYWxpZ25lZCBzdHJlYW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFkYWJsZUJpdFN0cmVhbSB7XG4gIGJ5dGVQb3M6IFVpbnRTaXplO1xuICBiaXRQb3M6IFVpbnRTaXplO1xuXG4gIGFsaWduKCk6IHZvaWQ7XG5cbiAgYXNCeXRlU3RyZWFtKCk6IFJlYWRhYmxlQnl0ZVN0cmVhbTtcblxuICBza2lwQml0cyhuOiBVaW50U2l6ZSk6IHZvaWQ7XG5cbiAgcmVhZEJvb2xCaXRzKCk6IGJvb2xlYW47XG5cbiAgcmVhZFNpbnQxNkJpdHMobjogVWludFNpemUpOiBTaW50MTY7XG5cbiAgcmVhZFNpbnQzMkJpdHMobjogVWludFNpemUpOiBTaW50MzI7XG5cbiAgcmVhZFVpbnQxNkJpdHMobjogVWludFNpemUpOiBVaW50MTY7XG5cbiAgcmVhZFVpbnQzMkJpdHMobjogVWludFNpemUpOiBVaW50MzI7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGJ5dGUtYWxpZ25lZCBzdHJlYW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFkYWJsZUJ5dGVTdHJlYW0ge1xuICBieXRlUG9zOiBVaW50U2l6ZTtcblxuICBza2lwKHNpemU6IFVpbnRTaXplKTogdm9pZDtcblxuICBhbGlnbigpOiB2b2lkO1xuXG4gIGF2YWlsYWJsZSgpOiBVaW50U2l6ZTtcblxuICB0YWlsQnl0ZXMoKTogVWludDhBcnJheTtcblxuICBhc0JpdFN0cmVhbSgpOiBSZWFkYWJsZUJpdFN0cmVhbTtcblxuICB0YWtlKGxlbmd0aDogVWludFNpemUpOiBSZWFkYWJsZUJ5dGVTdHJlYW07XG5cbiAgdGFrZUJ5dGVzKGxlbmd0aDogVWludFNpemUpOiBVaW50OEFycmF5O1xuXG4gIHJlYWRTdHJpbmcoYnl0ZUxlbmd0aDogVWludFNpemUpOiBzdHJpbmc7XG5cbiAgcmVhZENTdHJpbmcoKTogc3RyaW5nO1xuXG4gIHJlYWRVaW50OCgpOiBVaW50ODtcblxuICBwZWVrVWludDgoKTogVWludDg7XG5cbiAgcmVhZFVpbnQxNkJFKCk6IFVpbnQxNjtcblxuICByZWFkVWludDE2TEUoKTogVWludDE2O1xuXG4gIHJlYWRVaW50MzJCRSgpOiBVaW50MzI7XG5cbiAgcmVhZFVpbnQzMkxFKCk6IFVpbnQzMjtcblxuICByZWFkVWludDMyTGViMTI4KCk6IFVpbnQzMjtcblxuICByZWFkU2ludDgoKTogU2ludDg7XG5cbiAgcmVhZFNpbnQxNkxFKCk6IFNpbnQxNjtcblxuICByZWFkU2ludDMyTEUoKTogU2ludDMyO1xuXG4gIC8qKlxuICAgKiBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byB1c2UgdGhpcyBidXQgRmxvYXQxNkxFIGZvciBTV0YgZmlsZXMuXG4gICAqL1xuICByZWFkRmxvYXQxNkJFKCk6IEZsb2F0MTY7XG5cbiAgcmVhZEZsb2F0MTZMRSgpOiBGbG9hdDE2O1xuXG4gIC8qKlxuICAgKiBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byB1c2UgdGhpcyBidXQgRmxvYXQzMkxFZm9yIFNXRiBmaWxlcy5cbiAgICovXG4gIHJlYWRGbG9hdDMyQkUoKTogRmxvYXQzMjtcblxuICByZWFkRmxvYXQzMkxFKCk6IEZsb2F0MzI7XG5cbiAgLyoqXG4gICAqIFlvdSBwcm9iYWJseSBkb24ndCB3YW50IHRvIHVzZSB0aGlzIGJ1dCBGbG9hdDY0TEVmb3IgU1dGIGZpbGVzLlxuICAgKi9cbiAgcmVhZEZsb2F0NjRCRSgpOiBGbG9hdDY0O1xuXG4gIHJlYWRGbG9hdDY0TEUoKTogRmxvYXQ2NDtcbn1cblxuZXhwb3J0IGNsYXNzIFJlYWRhYmxlU3RyZWFtIGltcGxlbWVudHMgUmVhZGFibGVCaXRTdHJlYW0sIFJlYWRhYmxlQnl0ZVN0cmVhbSB7XG4gIGJ5dGVzOiBVaW50OEFycmF5O1xuICB2aWV3OiBEYXRhVmlldztcbiAgYnl0ZVBvczogVWludFNpemU7XG4gIGJ5dGVFbmQ6IFVpbnRTaXplO1xuICBiaXRQb3M6IFVpbnRTaXplO1xuXG4gIGNvbnN0cnVjdG9yKGJ5dGVzOiBVaW50OEFycmF5LCBieXRlT2Zmc2V0OiBVaW50U2l6ZSA9IDAsIGJpdE9mZnNldDogVWludFNpemUgPSAwKSB7XG4gICAgdGhpcy5ieXRlcyA9IGJ5dGVzO1xuICAgIHRoaXMudmlldyA9IG5ldyBEYXRhVmlldyhieXRlcy5idWZmZXIsIGJ5dGVzLmJ5dGVPZmZzZXQsIGJ5dGVzLmxlbmd0aCk7XG4gICAgdGhpcy5ieXRlUG9zID0gMDtcbiAgICB0aGlzLmJpdFBvcyA9IGJpdE9mZnNldDtcbiAgICB0aGlzLmJ5dGVFbmQgPSBieXRlcy5sZW5ndGg7XG4gIH1cblxuICBzdGF0aWMgZXF1YWxzKGxlZnQ6IFJlYWRhYmxlU3RyZWFtLCByaWdodDogUmVhZGFibGVTdHJlYW0pOiBib29sZWFuIHtcbiAgICBpZiAobGVmdC5iaXRQb3MgIT09IHJpZ2h0LmJpdFBvcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBsZWZ0TGVuOiBudW1iZXIgPSBsZWZ0LmJ5dGVFbmQgLSBsZWZ0LmJ5dGVQb3M7XG4gICAgY29uc3QgcmlnaHRMZW46IG51bWJlciA9IHJpZ2h0LmJ5dGVFbmQgLSByaWdodC5ieXRlUG9zO1xuICAgIGlmIChsZWZ0TGVuICE9PSByaWdodExlbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAobGVmdExlbiA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBpOiBudW1iZXIgPSAwO1xuICAgIGlmIChsZWZ0LmJpdFBvcyAhPT0gMCkge1xuICAgICAgaSA9IDE7XG4gICAgICBjb25zdCBsZWZ0UGFydGlhbEJ5dGU6IFVpbnQ4ID0gbGVmdC5ieXRlc1tsZWZ0LmJ5dGVQb3NdO1xuICAgICAgY29uc3QgcmlnaHRQYXJ0aWFsQnl0ZTogVWludDggPSByaWdodC5ieXRlc1tyaWdodC5ieXRlUG9zXTtcbiAgICAgIGNvbnN0IG1hc2s6IFVpbnQ4ID0gKDEgPDwgKDggLSBsZWZ0LmJpdFBvcykpIC0gMTtcbiAgICAgIGlmICgobGVmdFBhcnRpYWxCeXRlICYgbWFzaykgIT09IChyaWdodFBhcnRpYWxCeXRlICYgbWFzaykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKDsgaSA8IGxlZnRMZW47IGkrKykge1xuICAgICAgaWYgKGxlZnQuYnl0ZXNbbGVmdC5ieXRlUG9zICsgaV0gIT09IHJpZ2h0LmJ5dGVzW3JpZ2h0LmJ5dGVQb3MgKyBpXSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXNCaXRTdHJlYW0oKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhc0J5dGVTdHJlYW0oKTogdGhpcyB7XG4gICAgdGhpcy5hbGlnbigpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWxpZ24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYml0UG9zICE9PSAwKSB7XG4gICAgICB0aGlzLmJpdFBvcyA9IDA7XG4gICAgICB0aGlzLmJ5dGVQb3MrKztcbiAgICB9XG4gIH1cblxuICB0YWlsKCk6IFJlYWRhYmxlU3RyZWFtIHtcbiAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHRoaXMudGFpbEJ5dGVzKCksIDAsIHRoaXMuYml0UG9zKTtcbiAgfVxuXG4gIHRhaWxCeXRlcygpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCByZXN1bHQ6IFVpbnQ4QXJyYXkgPSB0aGlzLmJ5dGVzLnN1YmFycmF5KHRoaXMuYnl0ZVBvcyk7XG4gICAgdGhpcy5ieXRlUG9zID0gdGhpcy5ieXRlRW5kO1xuICAgIHRoaXMuYml0UG9zID0gMDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXZhaWxhYmxlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYnl0ZUVuZCAtIHRoaXMuYnl0ZVBvcztcbiAgfVxuXG4gIHRha2UobGVuZ3RoOiBVaW50U2l6ZSk6IFJlYWRhYmxlU3RyZWFtIHtcbiAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHRoaXMudGFrZUJ5dGVzKGxlbmd0aCksIDAsIDApO1xuICB9XG5cbiAgdGFrZUJ5dGVzKGxlbmd0aDogVWludFNpemUpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCByZXN1bHQ6IFVpbnQ4QXJyYXkgPSB0aGlzLmJ5dGVzLnN1YmFycmF5KHRoaXMuYnl0ZVBvcywgdGhpcy5ieXRlUG9zICsgbGVuZ3RoKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gbGVuZ3RoO1xuICAgIHRoaXMuYml0UG9zID0gMDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZFNpbnQ4KCk6IFNpbnQ4IHtcbiAgICByZXR1cm4gdGhpcy52aWV3LmdldEludDgodGhpcy5ieXRlUG9zKyspO1xuICB9XG5cbiAgcmVhZFNpbnQxNkxFKCk6IFNpbnQxNiB7XG4gICAgY29uc3QgcmVzdWx0OiBTaW50MTYgPSB0aGlzLnZpZXcuZ2V0SW50MTYodGhpcy5ieXRlUG9zLCB0cnVlKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gMjtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZFNpbnQzMkxFKCk6IFNpbnQzMiB7XG4gICAgY29uc3QgcmVzdWx0OiBTaW50MzIgPSB0aGlzLnZpZXcuZ2V0SW50MzIodGhpcy5ieXRlUG9zLCB0cnVlKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gNDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZFVpbnQ4KCk6IFVpbnQ4IHtcbiAgICByZXR1cm4gdGhpcy52aWV3LmdldFVpbnQ4KHRoaXMuYnl0ZVBvcysrKTtcbiAgfVxuXG4gIHBlZWtVaW50OCgpOiBVaW50OCB7XG4gICAgcmV0dXJuIHRoaXMudmlldy5nZXRVaW50OCh0aGlzLmJ5dGVQb3MpO1xuICB9XG5cbiAgcmVhZFVpbnQxNkJFKCk6IFVpbnQxNiB7XG4gICAgY29uc3QgcmVzdWx0OiBVaW50MTYgPSB0aGlzLnZpZXcuZ2V0VWludDE2KHRoaXMuYnl0ZVBvcywgZmFsc2UpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSAyO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkVWludDE2TEUoKTogVWludDE2IHtcbiAgICBjb25zdCByZXN1bHQ6IFVpbnQxNiA9IHRoaXMudmlldy5nZXRVaW50MTYodGhpcy5ieXRlUG9zLCB0cnVlKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gMjtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZFVpbnQzMkJFKCk6IFVpbnQzMiB7XG4gICAgY29uc3QgcmVzdWx0OiBVaW50MzIgPSB0aGlzLnZpZXcuZ2V0VWludDMyKHRoaXMuYnl0ZVBvcywgZmFsc2UpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSA0O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkVWludDMyTEUoKTogVWludDMyIHtcbiAgICBjb25zdCByZXN1bHQ6IFVpbnQzMiA9IHRoaXMudmlldy5nZXRVaW50MzIodGhpcy5ieXRlUG9zLCB0cnVlKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gNDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZEZsb2F0MTZCRSgpOiBGbG9hdDE2IHtcbiAgICBjb25zdCB1MTY6IFVpbnQxNiA9IHRoaXMudmlldy5nZXRVaW50MTYodGhpcy5ieXRlUG9zLCBmYWxzZSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDI7XG4gICAgcmV0dXJuIHJlaW50ZXJwcmV0VWludDE2QXNGbG9hdDE2KHUxNik7XG4gIH1cblxuICByZWFkRmxvYXQxNkxFKCk6IEZsb2F0MTYge1xuICAgIGNvbnN0IHUxNjogVWludDE2ID0gdGhpcy52aWV3LmdldFVpbnQxNih0aGlzLmJ5dGVQb3MsIHRydWUpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSAyO1xuICAgIHJldHVybiByZWludGVycHJldFVpbnQxNkFzRmxvYXQxNih1MTYpO1xuICB9XG5cbiAgcmVhZEZsb2F0MzJCRSgpOiBGbG9hdDMyIHtcbiAgICBjb25zdCByZXN1bHQ6IEZsb2F0MzIgPSB0aGlzLnZpZXcuZ2V0RmxvYXQzMih0aGlzLmJ5dGVQb3MsIGZhbHNlKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gNDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZEZsb2F0MzJMRSgpOiBGbG9hdDMyIHtcbiAgICBjb25zdCByZXN1bHQ6IEZsb2F0MzIgPSB0aGlzLnZpZXcuZ2V0RmxvYXQzMih0aGlzLmJ5dGVQb3MsIHRydWUpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSA0O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkRmxvYXQ2NEJFKCk6IEZsb2F0NjQge1xuICAgIGNvbnN0IHJlc3VsdDogRmxvYXQ2NCA9IHRoaXMudmlldy5nZXRGbG9hdDY0KHRoaXMuYnl0ZVBvcywgZmFsc2UpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSA4O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkRmxvYXQ2NExFKCk6IEZsb2F0NjQge1xuICAgIGNvbnN0IHJlc3VsdDogRmxvYXQ2NCA9IHRoaXMudmlldy5nZXRGbG9hdDY0KHRoaXMuYnl0ZVBvcywgdHJ1ZSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNraXAoc2l6ZTogVWludFNpemUpOiB2b2lkIHtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gc2l6ZTtcbiAgfVxuXG4gIHNraXBCaXRzKG46IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucmVhZFVpbnRCaXRzKG4pO1xuICB9XG5cbiAgcmVhZEJvb2xCaXRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlYWRVaW50Qml0cygxKSA+IDA7XG4gIH1cblxuICByZWFkU2ludDE2Qml0cyhuOiBudW1iZXIpOiBTaW50MTYge1xuICAgIHJldHVybiB0aGlzLnJlYWRJbnRCaXRzKG4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNCW25dXG4gICAqL1xuICByZWFkU2ludDMyQml0cyhuOiBVaW50U2l6ZSk6IFNpbnQzMiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZEludEJpdHMobik7XG4gIH1cblxuICByZWFkVWludDE2Qml0cyhuOiBVaW50U2l6ZSk6IFVpbnQxNiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZFVpbnRCaXRzKG4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVCW25dXG4gICAqL1xuICByZWFkVWludDMyQml0cyhuOiBVaW50U2l6ZSk6IFVpbnQzMiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZFVpbnRCaXRzKG4pO1xuICB9XG5cbiAgLyoqXG4gICAqIExFQjEyOC1lbmNvZGVkIFVpbnQzMiAoMSB0byA1IGJ5dGVzKVxuICAgKi9cbiAgcmVhZFVpbnQzMkxlYjEyOCgpOiBVaW50MzIge1xuICAgIGxldCByZXN1bHQ6IFVpbnQzMiA9IDA7XG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgY29uc3QgbmV4dEJ5dGU6IFVpbnQ4ID0gdGhpcy5ieXRlc1t0aGlzLmJ5dGVQb3MrK107XG4gICAgICBpZiAoaSA8IDQpIHtcbiAgICAgICAgLy8gQml0LXNoaWZ0IGlzIHNhZmVcbiAgICAgICAgcmVzdWx0ICs9IChuZXh0Qnl0ZSAmIDB4N2YpIDw8ICg3ICogaSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBCaXQtc2hpZnQgaXMgdW5zYWZlLCB1c2UgYCogTWF0aC5wb3dgXG4gICAgICAgIHJlc3VsdCArPSAobmV4dEJ5dGUgJiAweDBmKSAqIE1hdGgucG93KDIsIDI4KTtcbiAgICAgIH1cbiAgICAgIGlmICgobmV4dEJ5dGUgJiAoMSA8PCA3KSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlYWRTdHJpbmcoYnl0ZUxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBlbmRPZlN0cmluZzogbnVtYmVyID0gdGhpcy5ieXRlUG9zICsgYnl0ZUxlbmd0aDtcbiAgICBpZiAoZW5kT2ZTdHJpbmcgPiB0aGlzLmJ5dGVzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgY3JlYXRlSW5jb21wbGV0ZVN0cmVhbUVycm9yKCk7XG4gICAgfVxuICAgIC8vIFRPRE8oZGVtdXJnb3MpOiBSZW1vdmUgdHlwZSBjYXN0XG4gICAgY29uc3Qgc3RyQnVmZmVyOiBCdWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmJ5dGVzLnN1YmFycmF5KHRoaXMuYnl0ZVBvcywgZW5kT2ZTdHJpbmcpIGFzIEJ1ZmZlcik7XG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmcgPSBzdHJCdWZmZXIudG9TdHJpbmcoXCJ1dGY4XCIpO1xuICAgIHRoaXMuYnl0ZVBvcyA9IGVuZE9mU3RyaW5nO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkQ1N0cmluZygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuZE9mU3RyaW5nOiBudW1iZXIgPSB0aGlzLmJ5dGVzLmluZGV4T2YoMCwgdGhpcy5ieXRlUG9zKTtcbiAgICBpZiAoZW5kT2ZTdHJpbmcgPCAwKSB7XG4gICAgICB0aHJvdyBjcmVhdGVJbmNvbXBsZXRlU3RyZWFtRXJyb3IoKTtcbiAgICB9XG4gICAgLy8gVE9ETyhkZW11cmdvcyk6IFJlbW92ZSB0eXBlIGNhc3RcbiAgICBjb25zdCBzdHJCdWZmZXI6IEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuYnl0ZXMuc3ViYXJyYXkodGhpcy5ieXRlUG9zLCBlbmRPZlN0cmluZykgYXMgQnVmZmVyKTtcbiAgICBjb25zdCByZXN1bHQ6IHN0cmluZyA9IHN0ckJ1ZmZlci50b1N0cmluZyhcInV0ZjhcIik7XG4gICAgdGhpcy5ieXRlUG9zID0gZW5kT2ZTdHJpbmcgKyAxO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHJlYWRVaW50Qml0cyhuOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChuID4gMzIpIHtcbiAgICAgIC8vIEV2ZW4gaWYgd2UgY291bGQgcmVhZCB1cCB0byA1MyBiaXRzLCB3ZSByZXN0cmljdCBpdCB0byAzMiBiaXRzICh3aGljaCBpcyBhbHJlYWR5IHVuc2FmZVxuICAgICAgLy8gaWYgd2UgY29uc2lkZXIgdGhhdCB0aGUgbWF4IHBvc2l0aXZlIG51bWJlciBzYWZlIHJlZ2FyZGluZyBiaXQgb3BlcmF0aW9ucyBpcyAyXjMxIC0gMSlcbiAgICAgIHRocm93IG5ldyBJbmNpZGVudChcIkJpdE92ZXJmbG93XCIsIFwiQ2Fubm90IHJlYWQgYWJvdmUgMzIgYml0cyB3aXRob3V0IG92ZXJmbG93XCIpO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0OiBudW1iZXIgPSAwO1xuICAgIHdoaWxlIChuID4gMCkge1xuICAgICAgaWYgKHRoaXMuYml0UG9zICsgbiA8IDgpIHtcbiAgICAgICAgY29uc3QgZW5kQml0UG9zOiBudW1iZXIgPSB0aGlzLmJpdFBvcyArIG47XG4gICAgICAgIGNvbnN0IHNoaWZ0OiBudW1iZXIgPSAxIDw8IChlbmRCaXRQb3MgLSB0aGlzLmJpdFBvcyk7XG4gICAgICAgIGNvbnN0IGN1cjogbnVtYmVyID0gKHRoaXMuYnl0ZXNbdGhpcy5ieXRlUG9zXSA+Pj4gOCAtIGVuZEJpdFBvcykgJiAoc2hpZnQgLSAxKTtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogc2hpZnQgKyBjdXI7XG4gICAgICAgIG4gPSAwO1xuICAgICAgICB0aGlzLmJpdFBvcyA9IGVuZEJpdFBvcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNoaWZ0OiBudW1iZXIgPSAxIDw8ICg4IC0gdGhpcy5iaXRQb3MpO1xuICAgICAgICBjb25zdCBjdXI6IG51bWJlciA9IHRoaXMuYnl0ZXNbdGhpcy5ieXRlUG9zXSAmIChzaGlmdCAtIDEpO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgKiBzaGlmdCArIGN1cjtcbiAgICAgICAgbiAtPSAoOCAtIHRoaXMuYml0UG9zKTtcbiAgICAgICAgdGhpcy5iaXRQb3MgPSAwO1xuICAgICAgICB0aGlzLmJ5dGVQb3MrKztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZEludEJpdHMobjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNvbnN0IHVuc2lnbmVkOiBudW1iZXIgPSB0aGlzLnJlYWRVaW50Qml0cyhuKTtcbiAgICBpZiAodW5zaWduZWQgPCBNYXRoLnBvdygyLCBuIC0gMSkpIHtcbiAgICAgIHJldHVybiB1bnNpZ25lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIC1NYXRoLnBvdygyLCBuKSArIHVuc2lnbmVkO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZWludGVycHJldFVpbnQxNkFzRmxvYXQxNih1MTY6IFVpbnQxNik6IEZsb2F0MTYge1xuICBjb25zdCBzaWduOiAtMSB8IDEgPSAodTE2ICYgKDEgPDwgMTUpKSAhPT0gMCA/IC0xIDogMTtcbiAgY29uc3QgZXhwb25lbnQ6IFNpbnQzMiA9ICh1MTYgJiAweDdjMDApID4+PiAxMDsgLy8gMHg3YzAwOiBiaXRzIDEwIHRvIDE0IChpbmNsdXNpdmUpXG4gIGNvbnN0IGZyYWN0aW9uOiBGbG9hdDY0ID0gdTE2ICYgMHgwM2ZmOyAvLyAweDAzZmY6IGJpdHMgMCB0byA5IChpbmNsdXNpdmUpXG4gIGlmIChleHBvbmVudCA9PT0gMCkge1xuICAgIHJldHVybiBzaWduICogTWF0aC5wb3coMiwgLTE0KSAqIChmcmFjdGlvbiAvIDEwMjQpO1xuICB9IGVsc2UgaWYgKGV4cG9uZW50ID09PSAweDFmKSB7IC8vIDB4MWY6IGJpdHMgMCB0byA0IChpbmNsdXNpdmUpXG4gICAgcmV0dXJuIGZyYWN0aW9uID09PSAwID8gc2lnbiAqIEluZmluaXR5IDogTmFOO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzaWduICogTWF0aC5wb3coMiwgZXhwb25lbnQgLSAxNSkgKiAoMSArIChmcmFjdGlvbiAvIDEwMjQpKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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O0lBQ3RELE1BQU0sUUFBUSxHQUFXLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLG9DQUFvQztJQUNwRixNQUFNLFFBQVEsR0FBWSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsa0NBQWtDO0lBQzFFLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRTtRQUNsQixPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ3BEO1NBQU0sSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLEVBQUUsZ0NBQWdDO1FBQzlELE9BQU8sUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0tBQy9DO1NBQU07UUFDTCxPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNwRTtBQUNILENBQUMiLCJmaWxlIjoicmVhZGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmNpZGVudCB9IGZyb20gXCJpbmNpZGVudFwiO1xuaW1wb3J0IHsgRmxvYXQxNiwgRmxvYXQzMiwgRmxvYXQ2NCwgU2ludDE2LCBTaW50MzIsIFNpbnQ4LCBVaW50MTYsIFVpbnQzMiwgVWludDgsIFVpbnRTaXplIH0gZnJvbSBcInNlbWFudGljLXR5cGVzXCI7XG5pbXBvcnQgeyBjcmVhdGVJbmNvbXBsZXRlU3RyZWFtRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMvaW5jb21wbGV0ZS1zdHJlYW1cIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbm9uLWJ5dGUtYWxpZ25lZCBzdHJlYW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFkYWJsZUJpdFN0cmVhbSB7XG4gIGJ5dGVQb3M6IFVpbnRTaXplO1xuICBiaXRQb3M6IFVpbnRTaXplO1xuXG4gIGFsaWduKCk6IHZvaWQ7XG5cbiAgYXNCeXRlU3RyZWFtKCk6IFJlYWRhYmxlQnl0ZVN0cmVhbTtcblxuICBza2lwQml0cyhuOiBVaW50U2l6ZSk6IHZvaWQ7XG5cbiAgcmVhZEJvb2xCaXRzKCk6IGJvb2xlYW47XG5cbiAgcmVhZFNpbnQxNkJpdHMobjogVWludFNpemUpOiBTaW50MTY7XG5cbiAgcmVhZFNpbnQzMkJpdHMobjogVWludFNpemUpOiBTaW50MzI7XG5cbiAgcmVhZFVpbnQxNkJpdHMobjogVWludFNpemUpOiBVaW50MTY7XG5cbiAgcmVhZFVpbnQzMkJpdHMobjogVWludFNpemUpOiBVaW50MzI7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGJ5dGUtYWxpZ25lZCBzdHJlYW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFkYWJsZUJ5dGVTdHJlYW0ge1xuICBieXRlUG9zOiBVaW50U2l6ZTtcblxuICBza2lwKHNpemU6IFVpbnRTaXplKTogdm9pZDtcblxuICBhbGlnbigpOiB2b2lkO1xuXG4gIGF2YWlsYWJsZSgpOiBVaW50U2l6ZTtcblxuICB0YWlsQnl0ZXMoKTogVWludDhBcnJheTtcblxuICBhc0JpdFN0cmVhbSgpOiBSZWFkYWJsZUJpdFN0cmVhbTtcblxuICB0YWtlKGxlbmd0aDogVWludFNpemUpOiBSZWFkYWJsZUJ5dGVTdHJlYW07XG5cbiAgdGFrZUJ5dGVzKGxlbmd0aDogVWludFNpemUpOiBVaW50OEFycmF5O1xuXG4gIHJlYWRTdHJpbmcoYnl0ZUxlbmd0aDogVWludFNpemUpOiBzdHJpbmc7XG5cbiAgcmVhZENTdHJpbmcoKTogc3RyaW5nO1xuXG4gIHJlYWRVaW50OCgpOiBVaW50ODtcblxuICBwZWVrVWludDgoKTogVWludDg7XG5cbiAgcmVhZFVpbnQxNkJFKCk6IFVpbnQxNjtcblxuICByZWFkVWludDE2TEUoKTogVWludDE2O1xuXG4gIHJlYWRVaW50MzJCRSgpOiBVaW50MzI7XG5cbiAgcmVhZFVpbnQzMkxFKCk6IFVpbnQzMjtcblxuICByZWFkVWludDMyTGViMTI4KCk6IFVpbnQzMjtcblxuICByZWFkU2ludDgoKTogU2ludDg7XG5cbiAgcmVhZFNpbnQxNkxFKCk6IFNpbnQxNjtcblxuICByZWFkU2ludDMyTEUoKTogU2ludDMyO1xuXG4gIC8qKlxuICAgKiBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byB1c2UgdGhpcyBidXQgRmxvYXQxNkxFIGZvciBTV0YgZmlsZXMuXG4gICAqL1xuICByZWFkRmxvYXQxNkJFKCk6IEZsb2F0MTY7XG5cbiAgcmVhZEZsb2F0MTZMRSgpOiBGbG9hdDE2O1xuXG4gIC8qKlxuICAgKiBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byB1c2UgdGhpcyBidXQgRmxvYXQzMkxFZm9yIFNXRiBmaWxlcy5cbiAgICovXG4gIHJlYWRGbG9hdDMyQkUoKTogRmxvYXQzMjtcblxuICByZWFkRmxvYXQzMkxFKCk6IEZsb2F0MzI7XG5cbiAgLyoqXG4gICAqIFlvdSBwcm9iYWJseSBkb24ndCB3YW50IHRvIHVzZSB0aGlzIGJ1dCBGbG9hdDY0TEVmb3IgU1dGIGZpbGVzLlxuICAgKi9cbiAgcmVhZEZsb2F0NjRCRSgpOiBGbG9hdDY0O1xuXG4gIHJlYWRGbG9hdDY0TEUoKTogRmxvYXQ2NDtcbn1cblxuZXhwb3J0IGNsYXNzIFJlYWRhYmxlU3RyZWFtIGltcGxlbWVudHMgUmVhZGFibGVCaXRTdHJlYW0sIFJlYWRhYmxlQnl0ZVN0cmVhbSB7XG4gIGJ5dGVzOiBVaW50OEFycmF5O1xuICB2aWV3OiBEYXRhVmlldztcbiAgYnl0ZVBvczogVWludFNpemU7XG4gIGJ5dGVFbmQ6IFVpbnRTaXplO1xuICBiaXRQb3M6IFVpbnRTaXplO1xuXG4gIGNvbnN0cnVjdG9yKGJ5dGVzOiBVaW50OEFycmF5LCBfYnl0ZU9mZnNldDogVWludFNpemUgPSAwLCBiaXRPZmZzZXQ6IFVpbnRTaXplID0gMCkge1xuICAgIHRoaXMuYnl0ZXMgPSBieXRlcztcbiAgICB0aGlzLnZpZXcgPSBuZXcgRGF0YVZpZXcoYnl0ZXMuYnVmZmVyLCBieXRlcy5ieXRlT2Zmc2V0LCBieXRlcy5sZW5ndGgpO1xuICAgIHRoaXMuYnl0ZVBvcyA9IDA7XG4gICAgdGhpcy5iaXRQb3MgPSBiaXRPZmZzZXQ7XG4gICAgdGhpcy5ieXRlRW5kID0gYnl0ZXMubGVuZ3RoO1xuICB9XG5cbiAgc3RhdGljIGVxdWFscyhsZWZ0OiBSZWFkYWJsZVN0cmVhbSwgcmlnaHQ6IFJlYWRhYmxlU3RyZWFtKTogYm9vbGVhbiB7XG4gICAgaWYgKGxlZnQuYml0UG9zICE9PSByaWdodC5iaXRQb3MpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbGVmdExlbjogbnVtYmVyID0gbGVmdC5ieXRlRW5kIC0gbGVmdC5ieXRlUG9zO1xuICAgIGNvbnN0IHJpZ2h0TGVuOiBudW1iZXIgPSByaWdodC5ieXRlRW5kIC0gcmlnaHQuYnl0ZVBvcztcbiAgICBpZiAobGVmdExlbiAhPT0gcmlnaHRMZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGxlZnRMZW4gPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgaTogbnVtYmVyID0gMDtcbiAgICBpZiAobGVmdC5iaXRQb3MgIT09IDApIHtcbiAgICAgIGkgPSAxO1xuICAgICAgY29uc3QgbGVmdFBhcnRpYWxCeXRlOiBVaW50OCA9IGxlZnQuYnl0ZXNbbGVmdC5ieXRlUG9zXTtcbiAgICAgIGNvbnN0IHJpZ2h0UGFydGlhbEJ5dGU6IFVpbnQ4ID0gcmlnaHQuYnl0ZXNbcmlnaHQuYnl0ZVBvc107XG4gICAgICBjb25zdCBtYXNrOiBVaW50OCA9ICgxIDw8ICg4IC0gbGVmdC5iaXRQb3MpKSAtIDE7XG4gICAgICBpZiAoKGxlZnRQYXJ0aWFsQnl0ZSAmIG1hc2spICE9PSAocmlnaHRQYXJ0aWFsQnl0ZSAmIG1hc2spKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICg7IGkgPCBsZWZ0TGVuOyBpKyspIHtcbiAgICAgIGlmIChsZWZ0LmJ5dGVzW2xlZnQuYnl0ZVBvcyArIGldICE9PSByaWdodC5ieXRlc1tyaWdodC5ieXRlUG9zICsgaV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzQml0U3RyZWFtKCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYXNCeXRlU3RyZWFtKCk6IHRoaXMge1xuICAgIHRoaXMuYWxpZ24oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFsaWduKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJpdFBvcyAhPT0gMCkge1xuICAgICAgdGhpcy5iaXRQb3MgPSAwO1xuICAgICAgdGhpcy5ieXRlUG9zKys7XG4gICAgfVxuICB9XG5cbiAgdGFpbCgpOiBSZWFkYWJsZVN0cmVhbSB7XG4gICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh0aGlzLnRhaWxCeXRlcygpLCAwLCB0aGlzLmJpdFBvcyk7XG4gIH1cblxuICB0YWlsQnl0ZXMoKTogVWludDhBcnJheSB7XG4gICAgY29uc3QgcmVzdWx0OiBVaW50OEFycmF5ID0gdGhpcy5ieXRlcy5zdWJhcnJheSh0aGlzLmJ5dGVQb3MpO1xuICAgIHRoaXMuYnl0ZVBvcyA9IHRoaXMuYnl0ZUVuZDtcbiAgICB0aGlzLmJpdFBvcyA9IDA7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGF2YWlsYWJsZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJ5dGVFbmQgLSB0aGlzLmJ5dGVQb3M7XG4gIH1cblxuICB0YWtlKGxlbmd0aDogVWludFNpemUpOiBSZWFkYWJsZVN0cmVhbSB7XG4gICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh0aGlzLnRha2VCeXRlcyhsZW5ndGgpLCAwLCAwKTtcbiAgfVxuXG4gIHRha2VCeXRlcyhsZW5ndGg6IFVpbnRTaXplKTogVWludDhBcnJheSB7XG4gICAgY29uc3QgcmVzdWx0OiBVaW50OEFycmF5ID0gdGhpcy5ieXRlcy5zdWJhcnJheSh0aGlzLmJ5dGVQb3MsIHRoaXMuYnl0ZVBvcyArIGxlbmd0aCk7XG4gICAgdGhpcy5ieXRlUG9zICs9IGxlbmd0aDtcbiAgICB0aGlzLmJpdFBvcyA9IDA7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlYWRTaW50OCgpOiBTaW50OCB7XG4gICAgcmV0dXJuIHRoaXMudmlldy5nZXRJbnQ4KHRoaXMuYnl0ZVBvcysrKTtcbiAgfVxuXG4gIHJlYWRTaW50MTZMRSgpOiBTaW50MTYge1xuICAgIGNvbnN0IHJlc3VsdDogU2ludDE2ID0gdGhpcy52aWV3LmdldEludDE2KHRoaXMuYnl0ZVBvcywgdHJ1ZSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDI7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlYWRTaW50MzJMRSgpOiBTaW50MzIge1xuICAgIGNvbnN0IHJlc3VsdDogU2ludDMyID0gdGhpcy52aWV3LmdldEludDMyKHRoaXMuYnl0ZVBvcywgdHJ1ZSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlYWRVaW50OCgpOiBVaW50OCB7XG4gICAgcmV0dXJuIHRoaXMudmlldy5nZXRVaW50OCh0aGlzLmJ5dGVQb3MrKyk7XG4gIH1cblxuICBwZWVrVWludDgoKTogVWludDgge1xuICAgIHJldHVybiB0aGlzLnZpZXcuZ2V0VWludDgodGhpcy5ieXRlUG9zKTtcbiAgfVxuXG4gIHJlYWRVaW50MTZCRSgpOiBVaW50MTYge1xuICAgIGNvbnN0IHJlc3VsdDogVWludDE2ID0gdGhpcy52aWV3LmdldFVpbnQxNih0aGlzLmJ5dGVQb3MsIGZhbHNlKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gMjtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZFVpbnQxNkxFKCk6IFVpbnQxNiB7XG4gICAgY29uc3QgcmVzdWx0OiBVaW50MTYgPSB0aGlzLnZpZXcuZ2V0VWludDE2KHRoaXMuYnl0ZVBvcywgdHJ1ZSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDI7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlYWRVaW50MzJCRSgpOiBVaW50MzIge1xuICAgIGNvbnN0IHJlc3VsdDogVWludDMyID0gdGhpcy52aWV3LmdldFVpbnQzMih0aGlzLmJ5dGVQb3MsIGZhbHNlKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gNDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZFVpbnQzMkxFKCk6IFVpbnQzMiB7XG4gICAgY29uc3QgcmVzdWx0OiBVaW50MzIgPSB0aGlzLnZpZXcuZ2V0VWludDMyKHRoaXMuYnl0ZVBvcywgdHJ1ZSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlYWRGbG9hdDE2QkUoKTogRmxvYXQxNiB7XG4gICAgY29uc3QgdTE2OiBVaW50MTYgPSB0aGlzLnZpZXcuZ2V0VWludDE2KHRoaXMuYnl0ZVBvcywgZmFsc2UpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSAyO1xuICAgIHJldHVybiByZWludGVycHJldFVpbnQxNkFzRmxvYXQxNih1MTYpO1xuICB9XG5cbiAgcmVhZEZsb2F0MTZMRSgpOiBGbG9hdDE2IHtcbiAgICBjb25zdCB1MTY6IFVpbnQxNiA9IHRoaXMudmlldy5nZXRVaW50MTYodGhpcy5ieXRlUG9zLCB0cnVlKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gMjtcbiAgICByZXR1cm4gcmVpbnRlcnByZXRVaW50MTZBc0Zsb2F0MTYodTE2KTtcbiAgfVxuXG4gIHJlYWRGbG9hdDMyQkUoKTogRmxvYXQzMiB7XG4gICAgY29uc3QgcmVzdWx0OiBGbG9hdDMyID0gdGhpcy52aWV3LmdldEZsb2F0MzIodGhpcy5ieXRlUG9zLCBmYWxzZSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlYWRGbG9hdDMyTEUoKTogRmxvYXQzMiB7XG4gICAgY29uc3QgcmVzdWx0OiBGbG9hdDMyID0gdGhpcy52aWV3LmdldEZsb2F0MzIodGhpcy5ieXRlUG9zLCB0cnVlKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gNDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZEZsb2F0NjRCRSgpOiBGbG9hdDY0IHtcbiAgICBjb25zdCByZXN1bHQ6IEZsb2F0NjQgPSB0aGlzLnZpZXcuZ2V0RmxvYXQ2NCh0aGlzLmJ5dGVQb3MsIGZhbHNlKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gODtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZEZsb2F0NjRMRSgpOiBGbG9hdDY0IHtcbiAgICBjb25zdCByZXN1bHQ6IEZsb2F0NjQgPSB0aGlzLnZpZXcuZ2V0RmxvYXQ2NCh0aGlzLmJ5dGVQb3MsIHRydWUpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSA4O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBza2lwKHNpemU6IFVpbnRTaXplKTogdm9pZCB7XG4gICAgdGhpcy5ieXRlUG9zICs9IHNpemU7XG4gIH1cblxuICBza2lwQml0cyhuOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWRVaW50Qml0cyhuKTtcbiAgfVxuXG4gIHJlYWRCb29sQml0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkVWludEJpdHMoMSkgPiAwO1xuICB9XG5cbiAgcmVhZFNpbnQxNkJpdHMobjogbnVtYmVyKTogU2ludDE2IHtcbiAgICByZXR1cm4gdGhpcy5yZWFkSW50Qml0cyhuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTQltuXVxuICAgKi9cbiAgcmVhZFNpbnQzMkJpdHMobjogVWludFNpemUpOiBTaW50MzIge1xuICAgIHJldHVybiB0aGlzLnJlYWRJbnRCaXRzKG4pO1xuICB9XG5cbiAgcmVhZFVpbnQxNkJpdHMobjogVWludFNpemUpOiBVaW50MTYge1xuICAgIHJldHVybiB0aGlzLnJlYWRVaW50Qml0cyhuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVQltuXVxuICAgKi9cbiAgcmVhZFVpbnQzMkJpdHMobjogVWludFNpemUpOiBVaW50MzIge1xuICAgIHJldHVybiB0aGlzLnJlYWRVaW50Qml0cyhuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMRUIxMjgtZW5jb2RlZCBVaW50MzIgKDEgdG8gNSBieXRlcylcbiAgICovXG4gIHJlYWRVaW50MzJMZWIxMjgoKTogVWludDMyIHtcbiAgICBsZXQgcmVzdWx0OiBVaW50MzIgPSAwO1xuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIGNvbnN0IG5leHRCeXRlOiBVaW50OCA9IHRoaXMuYnl0ZXNbdGhpcy5ieXRlUG9zKytdO1xuICAgICAgaWYgKGkgPCA0KSB7XG4gICAgICAgIC8vIEJpdC1zaGlmdCBpcyBzYWZlXG4gICAgICAgIHJlc3VsdCArPSAobmV4dEJ5dGUgJiAweDdmKSA8PCAoNyAqIGkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQml0LXNoaWZ0IGlzIHVuc2FmZSwgdXNlIGAqIE1hdGgucG93YFxuICAgICAgICByZXN1bHQgKz0gKG5leHRCeXRlICYgMHgwZikgKiBNYXRoLnBvdygyLCAyOCk7XG4gICAgICB9XG4gICAgICBpZiAoKG5leHRCeXRlICYgKDEgPDwgNykpID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkU3RyaW5nKGJ5dGVMZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgZW5kT2ZTdHJpbmc6IG51bWJlciA9IHRoaXMuYnl0ZVBvcyArIGJ5dGVMZW5ndGg7XG4gICAgaWYgKGVuZE9mU3RyaW5nID4gdGhpcy5ieXRlcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IGNyZWF0ZUluY29tcGxldGVTdHJlYW1FcnJvcigpO1xuICAgIH1cbiAgICAvLyBUT0RPKGRlbXVyZ29zKTogUmVtb3ZlIHR5cGUgY2FzdFxuICAgIGNvbnN0IHN0ckJ1ZmZlcjogQnVmZmVyID0gQnVmZmVyLmZyb20odGhpcy5ieXRlcy5zdWJhcnJheSh0aGlzLmJ5dGVQb3MsIGVuZE9mU3RyaW5nKSBhcyBCdWZmZXIpO1xuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nID0gc3RyQnVmZmVyLnRvU3RyaW5nKFwidXRmOFwiKTtcbiAgICB0aGlzLmJ5dGVQb3MgPSBlbmRPZlN0cmluZztcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmVhZENTdHJpbmcoKTogc3RyaW5nIHtcbiAgICBjb25zdCBlbmRPZlN0cmluZzogbnVtYmVyID0gdGhpcy5ieXRlcy5pbmRleE9mKDAsIHRoaXMuYnl0ZVBvcyk7XG4gICAgaWYgKGVuZE9mU3RyaW5nIDwgMCkge1xuICAgICAgdGhyb3cgY3JlYXRlSW5jb21wbGV0ZVN0cmVhbUVycm9yKCk7XG4gICAgfVxuICAgIC8vIFRPRE8oZGVtdXJnb3MpOiBSZW1vdmUgdHlwZSBjYXN0XG4gICAgY29uc3Qgc3RyQnVmZmVyOiBCdWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmJ5dGVzLnN1YmFycmF5KHRoaXMuYnl0ZVBvcywgZW5kT2ZTdHJpbmcpIGFzIEJ1ZmZlcik7XG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmcgPSBzdHJCdWZmZXIudG9TdHJpbmcoXCJ1dGY4XCIpO1xuICAgIHRoaXMuYnl0ZVBvcyA9IGVuZE9mU3RyaW5nICsgMTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkVWludEJpdHMobjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAobiA+IDMyKSB7XG4gICAgICAvLyBFdmVuIGlmIHdlIGNvdWxkIHJlYWQgdXAgdG8gNTMgYml0cywgd2UgcmVzdHJpY3QgaXQgdG8gMzIgYml0cyAod2hpY2ggaXMgYWxyZWFkeSB1bnNhZmVcbiAgICAgIC8vIGlmIHdlIGNvbnNpZGVyIHRoYXQgdGhlIG1heCBwb3NpdGl2ZSBudW1iZXIgc2FmZSByZWdhcmRpbmcgYml0IG9wZXJhdGlvbnMgaXMgMl4zMSAtIDEpXG4gICAgICB0aHJvdyBuZXcgSW5jaWRlbnQoXCJCaXRPdmVyZmxvd1wiLCBcIkNhbm5vdCByZWFkIGFib3ZlIDMyIGJpdHMgd2l0aG91dCBvdmVyZmxvd1wiKTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gMDtcbiAgICB3aGlsZSAobiA+IDApIHtcbiAgICAgIGlmICh0aGlzLmJpdFBvcyArIG4gPCA4KSB7XG4gICAgICAgIGNvbnN0IGVuZEJpdFBvczogbnVtYmVyID0gdGhpcy5iaXRQb3MgKyBuO1xuICAgICAgICBjb25zdCBzaGlmdDogbnVtYmVyID0gMSA8PCAoZW5kQml0UG9zIC0gdGhpcy5iaXRQb3MpO1xuICAgICAgICBjb25zdCBjdXI6IG51bWJlciA9ICh0aGlzLmJ5dGVzW3RoaXMuYnl0ZVBvc10gPj4+IDggLSBlbmRCaXRQb3MpICYgKHNoaWZ0IC0gMSk7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIHNoaWZ0ICsgY3VyO1xuICAgICAgICBuID0gMDtcbiAgICAgICAgdGhpcy5iaXRQb3MgPSBlbmRCaXRQb3M7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzaGlmdDogbnVtYmVyID0gMSA8PCAoOCAtIHRoaXMuYml0UG9zKTtcbiAgICAgICAgY29uc3QgY3VyOiBudW1iZXIgPSB0aGlzLmJ5dGVzW3RoaXMuYnl0ZVBvc10gJiAoc2hpZnQgLSAxKTtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogc2hpZnQgKyBjdXI7XG4gICAgICAgIG4gLT0gKDggLSB0aGlzLmJpdFBvcyk7XG4gICAgICAgIHRoaXMuYml0UG9zID0gMDtcbiAgICAgICAgdGhpcy5ieXRlUG9zKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHJlYWRJbnRCaXRzKG46IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjb25zdCB1bnNpZ25lZDogbnVtYmVyID0gdGhpcy5yZWFkVWludEJpdHMobik7XG4gICAgaWYgKHVuc2lnbmVkIDwgTWF0aC5wb3coMiwgbiAtIDEpKSB7XG4gICAgICByZXR1cm4gdW5zaWduZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgbikgKyB1bnNpZ25lZDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVpbnRlcnByZXRVaW50MTZBc0Zsb2F0MTYodTE2OiBVaW50MTYpOiBGbG9hdDE2IHtcbiAgY29uc3Qgc2lnbjogLTEgfCAxID0gKHUxNiAmICgxIDw8IDE1KSkgIT09IDAgPyAtMSA6IDE7XG4gIGNvbnN0IGV4cG9uZW50OiBTaW50MzIgPSAodTE2ICYgMHg3YzAwKSA+Pj4gMTA7IC8vIDB4N2MwMDogYml0cyAxMCB0byAxNCAoaW5jbHVzaXZlKVxuICBjb25zdCBmcmFjdGlvbjogRmxvYXQ2NCA9IHUxNiAmIDB4MDNmZjsgLy8gMHgwM2ZmOiBiaXRzIDAgdG8gOSAoaW5jbHVzaXZlKVxuICBpZiAoZXhwb25lbnQgPT09IDApIHtcbiAgICByZXR1cm4gc2lnbiAqIE1hdGgucG93KDIsIC0xNCkgKiAoZnJhY3Rpb24gLyAxMDI0KTtcbiAgfSBlbHNlIGlmIChleHBvbmVudCA9PT0gMHgxZikgeyAvLyAweDFmOiBiaXRzIDAgdG8gNCAoaW5jbHVzaXZlKVxuICAgIHJldHVybiBmcmFjdGlvbiA9PT0gMCA/IHNpZ24gKiBJbmZpbml0eSA6IE5hTjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc2lnbiAqIE1hdGgucG93KDIsIGV4cG9uZW50IC0gMTUpICogKDEgKyAoZnJhY3Rpb24gLyAxMDI0KSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -39,11 +39,9 @@ { | ||
"noStrictGenericChecks": false, | ||
"noUnusedLocals": false, | ||
"noUnusedParameters": false, | ||
"noUnusedLocals": true, | ||
"noUnusedParameters": true, | ||
"noImplicitUseStrict": false, | ||
"noLib": false, | ||
"noResolve": false, | ||
"outDir": "../../build/lib", | ||
"preserveConstEnums": true, | ||
"removeComments": false, | ||
"rootDir": "", | ||
"skipLibCheck": true, | ||
@@ -57,2 +55,4 @@ "sourceMap": true, | ||
"traceResolution": false, | ||
"rootDir": "", | ||
"outDir": "../../build/lib", | ||
"typeRoots": [ | ||
@@ -59,0 +59,0 @@ "../../node_modules/@types", |
@@ -87,4 +87,4 @@ import { Float16, Float32, Float64, Sint16, Sint32, Sint8, Uint16, Uint32, Uint8, UintSize } from "semantic-types"; | ||
getBytes(): Uint8Array; | ||
private writeUintBits(bits, value); | ||
private writeSintBits(bits, value); | ||
private writeUintBits; | ||
private writeSintBits; | ||
} |
@@ -230,2 +230,2 @@ "use strict"; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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Q0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWM7UUFDM0IsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWM7UUFDM0IsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWM7UUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGVBQWUsQ0FBQyxDQUFTLEVBQUUsS0FBYTtRQUN0QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxDQUFXLEVBQUUsS0FBYTtRQUN4QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFF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S0FDWjtJQUNELElBQUksUUFBUSxLQUFLLFlBQVksRUFBRTtRQUM3QixPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVztLQUMzRDtTQUFNO1FBQ0wsTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0tBQ2pFO0FBQ0gsQ0FBQyIsImZpbGUiOiJ3cml0YWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluY2lkZW50IH0gZnJvbSBcImluY2lkZW50XCI7XG5pbXBvcnQgeyBGbG9hdDE2LCBGbG9hdDMyLCBGbG9hdDY0LCBTaW50MTYsIFNpbnQzMiwgU2ludDgsIFVpbnQxNiwgVWludDMyLCBVaW50OCwgVWludFNpemUgfSBmcm9tIFwic2VtYW50aWMtdHlwZXNcIjtcbmltcG9ydCB7IGNvbmNhdEJ5dGVzIH0gZnJvbSBcIi4vY29uY2F0LWJ5dGVzXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG5vbi1ieXRlLWFsaWduZWQgc3RyZWFtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGFibGVCaXRTdHJlYW0ge1xuICBieXRlUG9zOiBVaW50U2l6ZTtcbiAgYml0UG9zOiBVaW50U2l6ZTtcblxuICBhbGlnbigpOiB2b2lkO1xuXG4gIGFzQnl0ZVN0cmVhbSgpOiBXcml0YWJsZUJ5dGVTdHJlYW07XG5cbiAgd3JpdGVaZXJvc0JpdHMobjogVWludFNpemUpOiB2b2lkO1xuXG4gIHdyaXRlQm9vbEJpdHModmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xuXG4gIHdyaXRlU2ludDE2Qml0cyhuOiBVaW50U2l6ZSwgdmFsdWU6IFNpbnQxNik6IHZvaWQ7XG5cbiAgd3JpdGVTaW50MzJCaXRzKG46IFVpbnRTaXplLCB2YWx1ZTogU2ludDMyKTogdm9pZDtcblxuICB3cml0ZVVpbnQxNkJpdHMobjogVWludFNpemUsIHZhbHVlOiBVaW50MTYpOiB2b2lkO1xuXG4gIHdyaXRlVWludDMyQml0cyhuOiBVaW50U2l6ZSwgdmFsdWU6IFVpbnQzMik6IHZvaWQ7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGJ5dGUtYWxpZ25lZCBzdHJlYW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0YWJsZUJ5dGVTdHJlYW0ge1xuICBieXRlUG9zOiBVaW50U2l6ZTtcblxuICB3cml0ZVplcm9zKHNpemU6IFVpbnRTaXplKTogdm9pZDtcblxuICBhc0JpdFN0cmVhbSgpOiBXcml0YWJsZUJpdFN0cmVhbTtcblxuICB3cml0ZSh2YWx1ZTogV3JpdGFibGVCeXRlU3RyZWFtKTogdm9pZDtcblxuICB3cml0ZUJ5dGVzKHZhbHVlOiBVaW50OEFycmF5KTogdm9pZDtcblxuICB3cml0ZVN0cmluZyh2YWx1ZTogc3RyaW5nKTogdm9pZDtcblxuICB3cml0ZUNTdHJpbmcodmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgd3JpdGVVaW50OCh2YWx1ZTogVWludDgpOiB2b2lkO1xuXG4gIHdyaXRlVWludDE2QkUodmFsdWU6IFVpbnQxNik6IHZvaWQ7XG5cbiAgd3JpdGVVaW50MTZMRSh2YWx1ZTogVWludDE2KTogdm9pZDtcblxuICB3cml0ZVVpbnQzMkJFKHZhbHVlOiBVaW50MzIpOiB2b2lkO1xuXG4gIHdyaXRlVWludDMyTEUodmFsdWU6IFVpbnQzMik6IHZvaWQ7XG5cbiAgd3JpdGVVaW50MzJMZWIxMjgodmFsdWU6IFVpbnQzMik6IHZvaWQ7XG5cbiAgd3JpdGVTaW50OCh2YWx1ZTogU2ludDgpOiB2b2lkO1xuXG4gIHdyaXRlU2ludDE2TEUodmFsdWU6IFNpbnQxNik6IHZvaWQ7XG5cbiAgd3JpdGVTaW50MzJMRSh2YWx1ZTogU2ludDMyKTogdm9pZDtcblxuICB3cml0ZUZsb2F0MTZCRSh2YWx1ZTogRmxvYXQxNik6IHZvaWQ7XG5cbiAgd3JpdGVGbG9hdDE2TEUodmFsdWU6IEZsb2F0MTYpOiB2b2lkO1xuXG4gIHdyaXRlRmxvYXQzMkJFKHZhbHVlOiBGbG9hdDMyKTogdm9pZDtcblxuICB3cml0ZUZsb2F0MzJMRSh2YWx1ZTogRmxvYXQzMik6IHZvaWQ7XG5cbiAgd3JpdGVGbG9hdDY0QkUodmFsdWU6IEZsb2F0NjQpOiB2b2lkO1xuXG4gIHdyaXRlRmxvYXQ2NExFKHZhbHVlOiBGbG9hdDY0KTogdm9pZDtcblxuICBnZXRCeXRlcygpOiBVaW50OEFycmF5O1xufVxuXG5jb25zdCBUTVBfQlVGRkVSOiBBcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig4KTtcbmNvbnN0IFRNUF9EQVRBX1ZJRVc6IERhdGFWaWV3ID0gbmV3IERhdGFWaWV3KFRNUF9CVUZGRVIpO1xuXG5leHBvcnQgY2xhc3MgV3JpdGFibGVTdHJlYW0gaW1wbGVtZW50cyBXcml0YWJsZUJpdFN0cmVhbSwgV3JpdGFibGVCeXRlU3RyZWFtIHtcbiAgYnl0ZVBvczogVWludFNpemU7XG4gIGJpdFBvczogVWludFNpemU7XG5cbiAgcHJpdmF0ZSBjaHVua3M6IFVpbnQ4QXJyYXlbXTtcbiAgcHJpdmF0ZSBiaXRzQnVmZmVyOiBVaW50ODtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJ5dGVQb3MgPSAwO1xuICAgIHRoaXMuYml0UG9zID0gMDtcbiAgICB0aGlzLmJpdHNCdWZmZXIgPSAwO1xuICAgIHRoaXMuY2h1bmtzID0gW107XG4gIH1cblxuICBhc0JpdFN0cmVhbSgpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFzQnl0ZVN0cmVhbSgpOiB0aGlzIHtcbiAgICB0aGlzLmFsaWduKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhbGlnbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5iaXRQb3MgIT09IDApIHtcbiAgICAgIHRoaXMud3JpdGVVaW50OCh0aGlzLmJpdHNCdWZmZXIpOyAvLyBJbmNyZW1lbnRzIGB0aGlzLmJ5dGVQb3NgXG4gICAgICB0aGlzLmJpdFBvcyA9IDA7XG4gICAgICB0aGlzLmJpdHNCdWZmZXIgPSAwO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlKHZhbHVlOiBXcml0YWJsZUJ5dGVTdHJlYW0pOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlQnl0ZXModmFsdWUuZ2V0Qnl0ZXMoKSk7XG4gIH1cblxuICB3cml0ZUJ5dGVzKHZhbHVlOiBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgdGhpcy5jaHVua3MucHVzaCh2YWx1ZSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IHZhbHVlLmxlbmd0aDtcbiAgfVxuXG4gIHdyaXRlWmVyb3Moc2l6ZTogVWludFNpemUpOiB2b2lkIHtcbiAgICB0aGlzLmNodW5rcy5wdXNoKG5ldyBVaW50OEFycmF5KHNpemUpKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gc2l6ZTtcbiAgfVxuXG4gIHdyaXRlWmVyb3NCaXRzKHNpemU6IFVpbnRTaXplKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYml0UG9zICsgc2l6ZSA8IDgpIHtcbiAgICAgIHRoaXMuYml0UG9zICs9IHNpemU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy53cml0ZVVpbnQ4KHRoaXMuYml0c0J1ZmZlcik7XG4gICAgdGhpcy5iaXRzQnVmZmVyID0gMDtcbiAgICBzaXplIC09IDggLSB0aGlzLmJpdFBvcztcblxuICAgIGNvbnN0IGJpdFBvczogVWludFNpemUgPSBzaXplICUgODtcbiAgICB0aGlzLndyaXRlWmVyb3MoKHNpemUgLSBiaXRQb3MpIC8gOCk7XG4gICAgdGhpcy5iaXRQb3MgPSBiaXRQb3M7XG4gIH1cblxuICB3cml0ZVNpbnQ4KHZhbHVlOiBTaW50OCk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVVaW50OCh2YWx1ZSA8IDAgPyAoMSA8PCA4KSArIHZhbHVlIDogdmFsdWUpO1xuICB9XG5cbiAgd3JpdGVTaW50MTZMRSh2YWx1ZTogU2ludDE2KTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVVpbnQxNkxFKHZhbHVlIDwgMCA/ICgxIDw8IDE2KSArIHZhbHVlIDogdmFsdWUpO1xuICB9XG5cbiAgd3JpdGVTaW50MzJMRSh2YWx1ZTogU2ludDMyKTogdm9pZCB7XG4gICAgdGhpcy5jaHVua3MucHVzaChCdWZmZXIuZnJvbShbXG4gICAgICAodmFsdWUgPj4+IDApICYgMHhmZixcbiAgICAgICh2YWx1ZSA+Pj4gOCkgJiAweGZmLFxuICAgICAgKHZhbHVlID4+PiAxNikgJiAweGZmLFxuICAgICAgKHZhbHVlID4+PiAyNCkgJiAweGZmLFxuICAgIF0pKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gNDtcbiAgfVxuXG4gIHdyaXRlVWludDgodmFsdWU6IFVpbnQ4KTogdm9pZCB7XG4gICAgdGhpcy5jaHVua3MucHVzaChCdWZmZXIuZnJvbShbdmFsdWUgJiAweGZmXSkpO1xuICAgIHRoaXMuYnl0ZVBvcysrO1xuICB9XG5cbiAgd3JpdGVVaW50MTZCRSh2YWx1ZTogVWludDE2KTogdm9pZCB7XG4gICAgdGhpcy5jaHVua3MucHVzaChCdWZmZXIuZnJvbShbXG4gICAgICAodmFsdWUgPj4+IDgpICYgMHhmZixcbiAgICAgICh2YWx1ZSA+Pj4gMCkgJiAweGZmLFxuICAgIF0pKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gMjtcbiAgfVxuXG4gIHdyaXRlVWludDE2TEUodmFsdWU6IFVpbnQxNik6IHZvaWQge1xuICAgIHRoaXMuY2h1bmtzLnB1c2goQnVmZmVyLmZyb20oW1xuICAgICAgKHZhbHVlID4+PiAwKSAmIDB4ZmYsXG4gICAgICAodmFsdWUgPj4+IDgpICYgMHhmZixcbiAgICBdKSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDI7XG4gIH1cblxuICB3cml0ZVVpbnQzMkJFKHZhbHVlOiBVaW50MzIpOiB2b2lkIHtcbiAgICB0aGlzLmNodW5rcy5wdXNoKEJ1ZmZlci5mcm9tKFtcbiAgICAgICh2YWx1ZSA+Pj4gMjQpICYgMHhmZixcbiAgICAgICh2YWx1ZSA+Pj4gMTYpICYgMHhmZixcbiAgICAgICh2YWx1ZSA+Pj4gOCkgJiAweGZmLFxuICAgICAgKHZhbHVlID4+PiAwKSAmIDB4ZmYsXG4gICAgXSkpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSA0O1xuICB9XG5cbiAgd3JpdGVVaW50MzJMRSh2YWx1ZTogVWludDMyKTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVNpbnQzMkxFKHZhbHVlIHwgMCk7XG4gIH1cblxuICB3cml0ZUZsb2F0MTZCRSh2YWx1ZTogRmxvYXQxNik6IHZvaWQge1xuICAgIHRoaXMud3JpdGVVaW50MTZCRShyZWludGVycHJldEZsb2F0MTZBc1VpbnQxNih2YWx1ZSkpO1xuICB9XG5cbiAgd3JpdGVGbG9hdDE2TEUodmFsdWU6IEZsb2F0MTYpOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlVWludDE2TEUocmVpbnRlcnByZXRGbG9hdDE2QXNVaW50MTYodmFsdWUpKTtcbiAgfVxuXG4gIHdyaXRlRmxvYXQzMkJFKHZhbHVlOiBGbG9hdDMyKTogdm9pZCB7XG4gICAgVE1QX0RBVEFfVklFVy5zZXRGbG9hdDMyKDAsIHZhbHVlLCBmYWxzZSk7XG4gICAgdGhpcy5jaHVua3MucHVzaChuZXcgVWludDhBcnJheShUTVBfQlVGRkVSLnNsaWNlKDAsIDQpKSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDQ7XG4gIH1cblxuICB3cml0ZUZsb2F0MzJMRSh2YWx1ZTogRmxvYXQzMik6IHZvaWQge1xuICAgIFRNUF9EQVRBX1ZJRVcuc2V0RmxvYXQzMigwLCB2YWx1ZSwgdHJ1ZSk7XG4gICAgdGhpcy5jaHVua3MucHVzaChuZXcgVWludDhBcnJheShUTVBfQlVGRkVSLnNsaWNlKDAsIDQpKSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDQ7XG4gIH1cblxuICB3cml0ZUZsb2F0NjRCRSh2YWx1ZTogRmxvYXQ2NCk6IHZvaWQge1xuICAgIFRNUF9EQVRBX1ZJRVcuc2V0RmxvYXQ2NCgwLCB2YWx1ZSwgZmFsc2UpO1xuICAgIHRoaXMuY2h1bmtzLnB1c2gobmV3IFVpbnQ4QXJyYXkoVE1QX0JVRkZFUi5zbGljZSgwLCA4KSkpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSA4O1xuICB9XG5cbiAgd3JpdGVGbG9hdDY0TEUodmFsdWU6IEZsb2F0NjQpOiB2b2lkIHtcbiAgICBUTVBfREFUQV9WSUVXLnNldEZsb2F0NjQoMCwgdmFsdWUsIHRydWUpO1xuICAgIHRoaXMuY2h1bmtzLnB1c2gobmV3IFVpbnQ4QXJyYXkoVE1QX0JVRkZFUi5zbGljZSgwLCA4KSkpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSA4O1xuICB9XG5cbiAgd3JpdGVCb29sQml0cyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLndyaXRlVWludEJpdHMoMSwgdmFsdWUgPyAxIDogMCk7XG4gIH1cblxuICB3cml0ZVNpbnQxNkJpdHMobjogbnVtYmVyLCB2YWx1ZTogU2ludDE2KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMud3JpdGVTaW50Qml0cyhuLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU0Jbbl1cbiAgICovXG4gIHdyaXRlU2ludDMyQml0cyhuOiBVaW50U2l6ZSwgdmFsdWU6IFNpbnQzMik6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLndyaXRlU2ludEJpdHMobiwgdmFsdWUpO1xuICB9XG5cbiAgd3JpdGVVaW50MTZCaXRzKG46IFVpbnRTaXplLCB2YWx1ZTogVWludDE2KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMud3JpdGVVaW50Qml0cyhuLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVUJbbl1cbiAgICovXG4gIHdyaXRlVWludDMyQml0cyhuOiBVaW50U2l6ZSwgdmFsdWU6IFVpbnQzMik6IHZvaWQge1xuICAgIHRoaXMud3JpdGVVaW50Qml0cyhuLCB2YWx1ZSk7XG4gIH1cblxuICB3cml0ZVVpbnQzMkxlYjEyOCh2YWx1ZTogVWludDMyKTogdm9pZCB7XG4gICAgY29uc3QgY2h1bms6IFVpbnQ4W10gPSBbXTtcbiAgICBkbyB7XG4gICAgICBsZXQgbmV4dEJ5dGU6IFVpbnQ4ID0gdmFsdWUgJiAweDdmO1xuICAgICAgdmFsdWUgPSB2YWx1ZSA+PiA3O1xuICAgICAgaWYgKHZhbHVlICE9PSAwKSB7XG4gICAgICAgIG5leHRCeXRlIHw9IDB4ODA7XG4gICAgICB9XG4gICAgICBjaHVuay5wdXNoKG5leHRCeXRlKTtcbiAgICB9IHdoaWxlICh2YWx1ZSAhPT0gMCk7XG4gICAgdGhpcy5jaHVua3MucHVzaChuZXcgVWludDhBcnJheShjaHVuaykpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSBjaHVuay5sZW5ndGg7XG4gIH1cblxuICB3cml0ZVN0cmluZyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy53cml0ZUJ5dGVzKEJ1ZmZlci5mcm9tKHZhbHVlLCBcInV0ZjhcIikpO1xuICB9XG5cbiAgd3JpdGVDU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlQnl0ZXMoQnVmZmVyLmZyb20odmFsdWUsIFwidXRmOFwiKSk7XG4gICAgdGhpcy53cml0ZVVpbnQ4KDApO1xuICB9XG5cbiAgZ2V0Qnl0ZXMoKTogVWludDhBcnJheSB7XG4gICAgY29uc3QgYnl0ZXM6IFVpbnQ4QXJyYXkgPSBjb25jYXRCeXRlcyh0aGlzLmNodW5rcyk7XG4gICAgdGhpcy5jaHVua3MgPSBbYnl0ZXNdO1xuICAgIHJldHVybiBieXRlcztcbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVVaW50Qml0cyhiaXRzOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoYml0cyA+IDMyKSB7XG4gICAgICAvLyBFdmVuIGlmIHdlIGNvdWxkIHJlYWQgdXAgdG8gNTMgYml0cywgd2UgcmVzdHJpY3QgaXQgdG8gMzIgYml0cyAod2hpY2ggaXMgYWxyZWFkeSB1bnNhZmVcbiAgICAgIC8vIGlmIHdlIGNvbnNpZGVyIHRoYXQgdGhlIG1heCBwb3NpdGl2ZSBudW1iZXIgc2FmZSByZWdhcmRpbmcgYml0IG9wZXJhdGlvbnMgaXMgMl4zMSAtIDEpXG4gICAgICB0aHJvdyBuZXcgSW5jaWRlbnQoXCJCaXRPdmVyZmxvd1wiLCBcIkNhbm5vdCByZWFkIGFib3ZlIDMyIGJpdHMgd2l0aG91dCBvdmVyZmxvd1wiKTtcbiAgICB9XG4gICAgd2hpbGUgKGJpdHMgPiAwKSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVCaXRzOiBudW1iZXIgPSA4IC0gdGhpcy5iaXRQb3M7XG5cbiAgICAgIGNvbnN0IGNvbnN1bWVkQml0czogbnVtYmVyID0gTWF0aC5taW4oYXZhaWxhYmxlQml0cywgYml0cyk7XG4gICAgICBjb25zdCBjaHVuazogbnVtYmVyID0gKHZhbHVlID4+PiAoYml0cyAtIGNvbnN1bWVkQml0cykpICYgKCgxIDw8IGNvbnN1bWVkQml0cykgLSAxKTtcbiAgICAgIHRoaXMuYml0c0J1ZmZlciA9IHRoaXMuYml0c0J1ZmZlciB8IChjaHVuayA8PCAoYXZhaWxhYmxlQml0cyAtIGNvbnN1bWVkQml0cykpO1xuICAgICAgYml0cyAtPSBjb25zdW1lZEJpdHM7XG4gICAgICB0aGlzLmJpdFBvcyArPSBjb25zdW1lZEJpdHM7XG4gICAgICBpZiAodGhpcy5iaXRQb3MgPT09IDgpIHtcbiAgICAgICAgdGhpcy53cml0ZVVpbnQ4KHRoaXMuYml0c0J1ZmZlcik7XG4gICAgICAgIHRoaXMuYml0c0J1ZmZlciA9IDA7XG4gICAgICAgIHRoaXMuYml0UG9zID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdyaXRlU2ludEJpdHMoYml0czogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgdGhpcy53cml0ZVVpbnRCaXRzKGJpdHMsIDIgKiogYml0cyArIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cml0ZVVpbnRCaXRzKGJpdHMsIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGbG9hdDE2OlxuICogMSBzaWduIGJpdCAoUylcbiAqIDUgZXhwb25lbnQgYml0cyAoRSlcbiAqIDEwIGZyYWN0aW9uIGJpdHMgKEYpXG4gKlxuICogRm9ybWF0OiBTRUVFRUVGRkZGRkZGRkZGXG4gKi9cbmZ1bmN0aW9uIHJlaW50ZXJwcmV0RmxvYXQxNkFzVWludDE2KHZhbHVlOiBGbG9hdDE2KTogVWludDE2IHtcbiAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgIHJldHVybiAweGZmZmY7XG4gIH1cbiAgY29uc3Qgc2lnbkJpdDogMCB8IDEgPSAodmFsdWUgPCAwIHx8IE9iamVjdC5pcyh2YWx1ZSwgLTApKSA/IDEgOiAwO1xuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKTtcbiAgaWYgKHZhbHVlIDwgTWF0aC5wb3coMiwgLTE0KSkge1xuICAgIGNvbnN0IGZyYWN0aW9uOiBVaW50MTYgPSBNYXRoLmZsb29yKHZhbHVlIC8gTWF0aC5wb3coMiwgLTI0KSk7XG4gICAgcmV0dXJuIChzaWduQml0IDw8IDE1KSB8IChmcmFjdGlvbiAmIDB4MDNmZik7XG4gIH1cbiAgY29uc3QgTUFYX0VYUE9ORU5UOiBudW1iZXIgPSAweDFmO1xuICBsZXQgZXhwb25lbnQ6IG51bWJlciA9IDE7XG4gIHdoaWxlIChleHBvbmVudCA8IE1BWF9FWFBPTkVOVCAmJiB2YWx1ZSA+PSBNYXRoLnBvdygyLCBleHBvbmVudCAtIDE0KSkge1xuICAgIGV4cG9uZW50Kys7XG4gIH1cbiAgaWYgKGV4cG9uZW50ID09PSBNQVhfRVhQT05FTlQpIHtcbiAgICByZXR1cm4gKHNpZ25CaXQgPDwgMTUpIHwgKE1BWF9FWFBPTkVOVCA8PCAxMCk7IC8vIEluZmluaXR5XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZnJhY3Rpb246IG51bWJlciA9IE1hdGguZmxvb3IoKHZhbHVlIC0gTWF0aC5wb3coMiwgZXhwb25lbnQgLSAxNSkpIC8gTWF0aC5wb3coMiwgZXhwb25lbnQgLSAyNSkpO1xuICAgIHJldHVybiAoc2lnbkJpdCA8PCAxNSkgfCAoZXhwb25lbnQgPDwgMTApIHwgKGZyYWN0aW9uICYgMHgwM2ZmKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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UUFDckUsUUFBUSxFQUFFLENBQUM7S0FDWjtJQUNELElBQUksUUFBUSxLQUFLLFlBQVksRUFBRTtRQUM3QixPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVztLQUMzRDtTQUFNO1FBQ0wsTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0tBQ2pFO0FBQ0gsQ0FBQyIsImZpbGUiOiJ3cml0YWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluY2lkZW50IH0gZnJvbSBcImluY2lkZW50XCI7XG5pbXBvcnQgeyBGbG9hdDE2LCBGbG9hdDMyLCBGbG9hdDY0LCBTaW50MTYsIFNpbnQzMiwgU2ludDgsIFVpbnQxNiwgVWludDMyLCBVaW50OCwgVWludFNpemUgfSBmcm9tIFwic2VtYW50aWMtdHlwZXNcIjtcbmltcG9ydCB7IGNvbmNhdEJ5dGVzIH0gZnJvbSBcIi4vY29uY2F0LWJ5dGVzXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG5vbi1ieXRlLWFsaWduZWQgc3RyZWFtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGFibGVCaXRTdHJlYW0ge1xuICBieXRlUG9zOiBVaW50U2l6ZTtcbiAgYml0UG9zOiBVaW50U2l6ZTtcblxuICBhbGlnbigpOiB2b2lkO1xuXG4gIGFzQnl0ZVN0cmVhbSgpOiBXcml0YWJsZUJ5dGVTdHJlYW07XG5cbiAgd3JpdGVaZXJvc0JpdHMobjogVWludFNpemUpOiB2b2lkO1xuXG4gIHdyaXRlQm9vbEJpdHModmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xuXG4gIHdyaXRlU2ludDE2Qml0cyhuOiBVaW50U2l6ZSwgdmFsdWU6IFNpbnQxNik6IHZvaWQ7XG5cbiAgd3JpdGVTaW50MzJCaXRzKG46IFVpbnRTaXplLCB2YWx1ZTogU2ludDMyKTogdm9pZDtcblxuICB3cml0ZVVpbnQxNkJpdHMobjogVWludFNpemUsIHZhbHVlOiBVaW50MTYpOiB2b2lkO1xuXG4gIHdyaXRlVWludDMyQml0cyhuOiBVaW50U2l6ZSwgdmFsdWU6IFVpbnQzMik6IHZvaWQ7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGJ5dGUtYWxpZ25lZCBzdHJlYW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0YWJsZUJ5dGVTdHJlYW0ge1xuICBieXRlUG9zOiBVaW50U2l6ZTtcblxuICB3cml0ZVplcm9zKHNpemU6IFVpbnRTaXplKTogdm9pZDtcblxuICBhc0JpdFN0cmVhbSgpOiBXcml0YWJsZUJpdFN0cmVhbTtcblxuICB3cml0ZSh2YWx1ZTogV3JpdGFibGVCeXRlU3RyZWFtKTogdm9pZDtcblxuICB3cml0ZUJ5dGVzKHZhbHVlOiBVaW50OEFycmF5KTogdm9pZDtcblxuICB3cml0ZVN0cmluZyh2YWx1ZTogc3RyaW5nKTogdm9pZDtcblxuICB3cml0ZUNTdHJpbmcodmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgd3JpdGVVaW50OCh2YWx1ZTogVWludDgpOiB2b2lkO1xuXG4gIHdyaXRlVWludDE2QkUodmFsdWU6IFVpbnQxNik6IHZvaWQ7XG5cbiAgd3JpdGVVaW50MTZMRSh2YWx1ZTogVWludDE2KTogdm9pZDtcblxuICB3cml0ZVVpbnQzMkJFKHZhbHVlOiBVaW50MzIpOiB2b2lkO1xuXG4gIHdyaXRlVWludDMyTEUodmFsdWU6IFVpbnQzMik6IHZvaWQ7XG5cbiAgd3JpdGVVaW50MzJMZWIxMjgodmFsdWU6IFVpbnQzMik6IHZvaWQ7XG5cbiAgd3JpdGVTaW50OCh2YWx1ZTogU2ludDgpOiB2b2lkO1xuXG4gIHdyaXRlU2ludDE2TEUodmFsdWU6IFNpbnQxNik6IHZvaWQ7XG5cbiAgd3JpdGVTaW50MzJMRSh2YWx1ZTogU2ludDMyKTogdm9pZDtcblxuICB3cml0ZUZsb2F0MTZCRSh2YWx1ZTogRmxvYXQxNik6IHZvaWQ7XG5cbiAgd3JpdGVGbG9hdDE2TEUodmFsdWU6IEZsb2F0MTYpOiB2b2lkO1xuXG4gIHdyaXRlRmxvYXQzMkJFKHZhbHVlOiBGbG9hdDMyKTogdm9pZDtcblxuICB3cml0ZUZsb2F0MzJMRSh2YWx1ZTogRmxvYXQzMik6IHZvaWQ7XG5cbiAgd3JpdGVGbG9hdDY0QkUodmFsdWU6IEZsb2F0NjQpOiB2b2lkO1xuXG4gIHdyaXRlRmxvYXQ2NExFKHZhbHVlOiBGbG9hdDY0KTogdm9pZDtcblxuICBnZXRCeXRlcygpOiBVaW50OEFycmF5O1xufVxuXG5jb25zdCBUTVBfQlVGRkVSOiBBcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig4KTtcbmNvbnN0IFRNUF9EQVRBX1ZJRVc6IERhdGFWaWV3ID0gbmV3IERhdGFWaWV3KFRNUF9CVUZGRVIpO1xuXG5leHBvcnQgY2xhc3MgV3JpdGFibGVTdHJlYW0gaW1wbGVtZW50cyBXcml0YWJsZUJpdFN0cmVhbSwgV3JpdGFibGVCeXRlU3RyZWFtIHtcbiAgYnl0ZVBvczogVWludFNpemU7XG4gIGJpdFBvczogVWludFNpemU7XG5cbiAgcHJpdmF0ZSBjaHVua3M6IFVpbnQ4QXJyYXlbXTtcbiAgcHJpdmF0ZSBiaXRzQnVmZmVyOiBVaW50ODtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJ5dGVQb3MgPSAwO1xuICAgIHRoaXMuYml0UG9zID0gMDtcbiAgICB0aGlzLmJpdHNCdWZmZXIgPSAwO1xuICAgIHRoaXMuY2h1bmtzID0gW107XG4gIH1cblxuICBhc0JpdFN0cmVhbSgpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFzQnl0ZVN0cmVhbSgpOiB0aGlzIHtcbiAgICB0aGlzLmFsaWduKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhbGlnbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5iaXRQb3MgIT09IDApIHtcbiAgICAgIHRoaXMud3JpdGVVaW50OCh0aGlzLmJpdHNCdWZmZXIpOyAvLyBJbmNyZW1lbnRzIGB0aGlzLmJ5dGVQb3NgXG4gICAgICB0aGlzLmJpdFBvcyA9IDA7XG4gICAgICB0aGlzLmJpdHNCdWZmZXIgPSAwO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlKHZhbHVlOiBXcml0YWJsZUJ5dGVTdHJlYW0pOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlQnl0ZXModmFsdWUuZ2V0Qnl0ZXMoKSk7XG4gIH1cblxuICB3cml0ZUJ5dGVzKHZhbHVlOiBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgdGhpcy5jaHVua3MucHVzaCh2YWx1ZSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IHZhbHVlLmxlbmd0aDtcbiAgfVxuXG4gIHdyaXRlWmVyb3Moc2l6ZTogVWludFNpemUpOiB2b2lkIHtcbiAgICB0aGlzLmNodW5rcy5wdXNoKG5ldyBVaW50OEFycmF5KHNpemUpKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gc2l6ZTtcbiAgfVxuXG4gIHdyaXRlWmVyb3NCaXRzKHNpemU6IFVpbnRTaXplKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYml0UG9zICsgc2l6ZSA8IDgpIHtcbiAgICAgIHRoaXMuYml0UG9zICs9IHNpemU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy53cml0ZVVpbnQ4KHRoaXMuYml0c0J1ZmZlcik7XG4gICAgdGhpcy5iaXRzQnVmZmVyID0gMDtcbiAgICBzaXplIC09IDggLSB0aGlzLmJpdFBvcztcblxuICAgIGNvbnN0IGJpdFBvczogVWludFNpemUgPSBzaXplICUgODtcbiAgICB0aGlzLndyaXRlWmVyb3MoKHNpemUgLSBiaXRQb3MpIC8gOCk7XG4gICAgdGhpcy5iaXRQb3MgPSBiaXRQb3M7XG4gIH1cblxuICB3cml0ZVNpbnQ4KHZhbHVlOiBTaW50OCk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVVaW50OCh2YWx1ZSA8IDAgPyAoMSA8PCA4KSArIHZhbHVlIDogdmFsdWUpO1xuICB9XG5cbiAgd3JpdGVTaW50MTZMRSh2YWx1ZTogU2ludDE2KTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVVpbnQxNkxFKHZhbHVlIDwgMCA/ICgxIDw8IDE2KSArIHZhbHVlIDogdmFsdWUpO1xuICB9XG5cbiAgd3JpdGVTaW50MzJMRSh2YWx1ZTogU2ludDMyKTogdm9pZCB7XG4gICAgdGhpcy5jaHVua3MucHVzaChCdWZmZXIuZnJvbShbXG4gICAgICAodmFsdWUgPj4+IDApICYgMHhmZixcbiAgICAgICh2YWx1ZSA+Pj4gOCkgJiAweGZmLFxuICAgICAgKHZhbHVlID4+PiAxNikgJiAweGZmLFxuICAgICAgKHZhbHVlID4+PiAyNCkgJiAweGZmLFxuICAgIF0pKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gNDtcbiAgfVxuXG4gIHdyaXRlVWludDgodmFsdWU6IFVpbnQ4KTogdm9pZCB7XG4gICAgdGhpcy5jaHVua3MucHVzaChCdWZmZXIuZnJvbShbdmFsdWUgJiAweGZmXSkpO1xuICAgIHRoaXMuYnl0ZVBvcysrO1xuICB9XG5cbiAgd3JpdGVVaW50MTZCRSh2YWx1ZTogVWludDE2KTogdm9pZCB7XG4gICAgdGhpcy5jaHVua3MucHVzaChCdWZmZXIuZnJvbShbXG4gICAgICAodmFsdWUgPj4+IDgpICYgMHhmZixcbiAgICAgICh2YWx1ZSA+Pj4gMCkgJiAweGZmLFxuICAgIF0pKTtcbiAgICB0aGlzLmJ5dGVQb3MgKz0gMjtcbiAgfVxuXG4gIHdyaXRlVWludDE2TEUodmFsdWU6IFVpbnQxNik6IHZvaWQge1xuICAgIHRoaXMuY2h1bmtzLnB1c2goQnVmZmVyLmZyb20oW1xuICAgICAgKHZhbHVlID4+PiAwKSAmIDB4ZmYsXG4gICAgICAodmFsdWUgPj4+IDgpICYgMHhmZixcbiAgICBdKSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDI7XG4gIH1cblxuICB3cml0ZVVpbnQzMkJFKHZhbHVlOiBVaW50MzIpOiB2b2lkIHtcbiAgICB0aGlzLmNodW5rcy5wdXNoKEJ1ZmZlci5mcm9tKFtcbiAgICAgICh2YWx1ZSA+Pj4gMjQpICYgMHhmZixcbiAgICAgICh2YWx1ZSA+Pj4gMTYpICYgMHhmZixcbiAgICAgICh2YWx1ZSA+Pj4gOCkgJiAweGZmLFxuICAgICAgKHZhbHVlID4+PiAwKSAmIDB4ZmYsXG4gICAgXSkpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSA0O1xuICB9XG5cbiAgd3JpdGVVaW50MzJMRSh2YWx1ZTogVWludDMyKTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVNpbnQzMkxFKHZhbHVlIHwgMCk7XG4gIH1cblxuICB3cml0ZUZsb2F0MTZCRSh2YWx1ZTogRmxvYXQxNik6IHZvaWQge1xuICAgIHRoaXMud3JpdGVVaW50MTZCRShyZWludGVycHJldEZsb2F0MTZBc1VpbnQxNih2YWx1ZSkpO1xuICB9XG5cbiAgd3JpdGVGbG9hdDE2TEUodmFsdWU6IEZsb2F0MTYpOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlVWludDE2TEUocmVpbnRlcnByZXRGbG9hdDE2QXNVaW50MTYodmFsdWUpKTtcbiAgfVxuXG4gIHdyaXRlRmxvYXQzMkJFKHZhbHVlOiBGbG9hdDMyKTogdm9pZCB7XG4gICAgVE1QX0RBVEFfVklFVy5zZXRGbG9hdDMyKDAsIHZhbHVlLCBmYWxzZSk7XG4gICAgdGhpcy5jaHVua3MucHVzaChuZXcgVWludDhBcnJheShUTVBfQlVGRkVSLnNsaWNlKDAsIDQpKSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDQ7XG4gIH1cblxuICB3cml0ZUZsb2F0MzJMRSh2YWx1ZTogRmxvYXQzMik6IHZvaWQge1xuICAgIFRNUF9EQVRBX1ZJRVcuc2V0RmxvYXQzMigwLCB2YWx1ZSwgdHJ1ZSk7XG4gICAgdGhpcy5jaHVua3MucHVzaChuZXcgVWludDhBcnJheShUTVBfQlVGRkVSLnNsaWNlKDAsIDQpKSk7XG4gICAgdGhpcy5ieXRlUG9zICs9IDQ7XG4gIH1cblxuICB3cml0ZUZsb2F0NjRCRSh2YWx1ZTogRmxvYXQ2NCk6IHZvaWQge1xuICAgIFRNUF9EQVRBX1ZJRVcuc2V0RmxvYXQ2NCgwLCB2YWx1ZSwgZmFsc2UpO1xuICAgIHRoaXMuY2h1bmtzLnB1c2gobmV3IFVpbnQ4QXJyYXkoVE1QX0JVRkZFUi5zbGljZSgwLCA4KSkpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSA4O1xuICB9XG5cbiAgd3JpdGVGbG9hdDY0TEUodmFsdWU6IEZsb2F0NjQpOiB2b2lkIHtcbiAgICBUTVBfREFUQV9WSUVXLnNldEZsb2F0NjQoMCwgdmFsdWUsIHRydWUpO1xuICAgIHRoaXMuY2h1bmtzLnB1c2gobmV3IFVpbnQ4QXJyYXkoVE1QX0JVRkZFUi5zbGljZSgwLCA4KSkpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSA4O1xuICB9XG5cbiAgd3JpdGVCb29sQml0cyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLndyaXRlVWludEJpdHMoMSwgdmFsdWUgPyAxIDogMCk7XG4gIH1cblxuICB3cml0ZVNpbnQxNkJpdHMobjogbnVtYmVyLCB2YWx1ZTogU2ludDE2KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMud3JpdGVTaW50Qml0cyhuLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU0Jbbl1cbiAgICovXG4gIHdyaXRlU2ludDMyQml0cyhuOiBVaW50U2l6ZSwgdmFsdWU6IFNpbnQzMik6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLndyaXRlU2ludEJpdHMobiwgdmFsdWUpO1xuICB9XG5cbiAgd3JpdGVVaW50MTZCaXRzKG46IFVpbnRTaXplLCB2YWx1ZTogVWludDE2KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMud3JpdGVVaW50Qml0cyhuLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVUJbbl1cbiAgICovXG4gIHdyaXRlVWludDMyQml0cyhuOiBVaW50U2l6ZSwgdmFsdWU6IFVpbnQzMik6IHZvaWQge1xuICAgIHRoaXMud3JpdGVVaW50Qml0cyhuLCB2YWx1ZSk7XG4gIH1cblxuICB3cml0ZVVpbnQzMkxlYjEyOCh2YWx1ZTogVWludDMyKTogdm9pZCB7XG4gICAgY29uc3QgY2h1bms6IFVpbnQ4W10gPSBbXTtcbiAgICBkbyB7XG4gICAgICBsZXQgbmV4dEJ5dGU6IFVpbnQ4ID0gdmFsdWUgJiAweDdmO1xuICAgICAgdmFsdWUgPSB2YWx1ZSA+PiA3O1xuICAgICAgaWYgKHZhbHVlICE9PSAwKSB7XG4gICAgICAgIG5leHRCeXRlIHw9IDB4ODA7XG4gICAgICB9XG4gICAgICBjaHVuay5wdXNoKG5leHRCeXRlKTtcbiAgICB9IHdoaWxlICh2YWx1ZSAhPT0gMCk7XG4gICAgdGhpcy5jaHVua3MucHVzaChuZXcgVWludDhBcnJheShjaHVuaykpO1xuICAgIHRoaXMuYnl0ZVBvcyArPSBjaHVuay5sZW5ndGg7XG4gIH1cblxuICB3cml0ZVN0cmluZyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy53cml0ZUJ5dGVzKEJ1ZmZlci5mcm9tKHZhbHVlLCBcInV0ZjhcIikpO1xuICB9XG5cbiAgd3JpdGVDU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlQnl0ZXMoQnVmZmVyLmZyb20odmFsdWUsIFwidXRmOFwiKSk7XG4gICAgdGhpcy53cml0ZVVpbnQ4KDApO1xuICB9XG5cbiAgZ2V0Qnl0ZXMoKTogVWludDhBcnJheSB7XG4gICAgY29uc3QgYnl0ZXM6IFVpbnQ4QXJyYXkgPSBjb25jYXRCeXRlcyh0aGlzLmNodW5rcyk7XG4gICAgdGhpcy5jaHVua3MgPSBbYnl0ZXNdO1xuICAgIHJldHVybiBieXRlcztcbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVVaW50Qml0cyhiaXRzOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoYml0cyA+IDMyKSB7XG4gICAgICAvLyBFdmVuIGlmIHdlIGNvdWxkIHJlYWQgdXAgdG8gNTMgYml0cywgd2UgcmVzdHJpY3QgaXQgdG8gMzIgYml0cyAod2hpY2ggaXMgYWxyZWFkeSB1bnNhZmVcbiAgICAgIC8vIGlmIHdlIGNvbnNpZGVyIHRoYXQgdGhlIG1heCBwb3NpdGl2ZSBudW1iZXIgc2FmZSByZWdhcmRpbmcgYml0IG9wZXJhdGlvbnMgaXMgMl4zMSAtIDEpXG4gICAgICB0aHJvdyBuZXcgSW5jaWRlbnQoXCJCaXRPdmVyZmxvd1wiLCBcIkNhbm5vdCByZWFkIGFib3ZlIDMyIGJpdHMgd2l0aG91dCBvdmVyZmxvd1wiKTtcbiAgICB9XG4gICAgd2hpbGUgKGJpdHMgPiAwKSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVCaXRzOiBudW1iZXIgPSA4IC0gdGhpcy5iaXRQb3M7XG5cbiAgICAgIGNvbnN0IGNvbnN1bWVkQml0czogbnVtYmVyID0gTWF0aC5taW4oYXZhaWxhYmxlQml0cywgYml0cyk7XG4gICAgICBjb25zdCBjaHVuazogbnVtYmVyID0gKHZhbHVlID4+PiAoYml0cyAtIGNvbnN1bWVkQml0cykpICYgKCgxIDw8IGNvbnN1bWVkQml0cykgLSAxKTtcbiAgICAgIHRoaXMuYml0c0J1ZmZlciA9IHRoaXMuYml0c0J1ZmZlciB8IChjaHVuayA8PCAoYXZhaWxhYmxlQml0cyAtIGNvbnN1bWVkQml0cykpO1xuICAgICAgYml0cyAtPSBjb25zdW1lZEJpdHM7XG4gICAgICB0aGlzLmJpdFBvcyArPSBjb25zdW1lZEJpdHM7XG4gICAgICBpZiAodGhpcy5iaXRQb3MgPT09IDgpIHtcbiAgICAgICAgdGhpcy53cml0ZVVpbnQ4KHRoaXMuYml0c0J1ZmZlcik7XG4gICAgICAgIHRoaXMuYml0c0J1ZmZlciA9IDA7XG4gICAgICAgIHRoaXMuYml0UG9zID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdyaXRlU2ludEJpdHMoYml0czogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgdGhpcy53cml0ZVVpbnRCaXRzKGJpdHMsIDIgKiogYml0cyArIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cml0ZVVpbnRCaXRzKGJpdHMsIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGbG9hdDE2OlxuICogMSBzaWduIGJpdCAoUylcbiAqIDUgZXhwb25lbnQgYml0cyAoRSlcbiAqIDEwIGZyYWN0aW9uIGJpdHMgKEYpXG4gKlxuICogRm9ybWF0OiBTRUVFRUVGRkZGRkZGRkZGXG4gKi9cbmZ1bmN0aW9uIHJlaW50ZXJwcmV0RmxvYXQxNkFzVWludDE2KHZhbHVlOiBGbG9hdDE2KTogVWludDE2IHtcbiAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgIHJldHVybiAweGZmZmY7XG4gIH1cbiAgY29uc3Qgc2lnbkJpdDogMCB8IDEgPSAodmFsdWUgPCAwIHx8IE9iamVjdC5pcyh2YWx1ZSwgLTApKSA/IDEgOiAwO1xuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKTtcbiAgaWYgKHZhbHVlIDwgTWF0aC5wb3coMiwgLTE0KSkge1xuICAgIGNvbnN0IGZyYWN0aW9uOiBVaW50MTYgPSBNYXRoLmZsb29yKHZhbHVlIC8gTWF0aC5wb3coMiwgLTI0KSk7XG4gICAgcmV0dXJuIChzaWduQml0IDw8IDE1KSB8IChmcmFjdGlvbiAmIDB4MDNmZik7XG4gIH1cbiAgY29uc3QgTUFYX0VYUE9ORU5UOiBudW1iZXIgPSAweDFmO1xuICBsZXQgZXhwb25lbnQ6IG51bWJlciA9IDE7XG4gIHdoaWxlIChleHBvbmVudCA8IE1BWF9FWFBPTkVOVCAmJiB2YWx1ZSA+PSBNYXRoLnBvdygyLCBleHBvbmVudCAtIDE0KSkge1xuICAgIGV4cG9uZW50Kys7XG4gIH1cbiAgaWYgKGV4cG9uZW50ID09PSBNQVhfRVhQT05FTlQpIHtcbiAgICByZXR1cm4gKHNpZ25CaXQgPDwgMTUpIHwgKE1BWF9FWFBPTkVOVCA8PCAxMCk7IC8vIEluZmluaXR5XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZnJhY3Rpb246IG51bWJlciA9IE1hdGguZmxvb3IoKHZhbHVlIC0gTWF0aC5wb3coMiwgZXhwb25lbnQgLSAxNSkpIC8gTWF0aC5wb3coMiwgZXhwb25lbnQgLSAyNSkpO1xuICAgIHJldHVybiAoc2lnbkJpdCA8PCAxNSkgfCAoZXhwb25lbnQgPDwgMTApIHwgKGZyYWN0aW9uICYgMHgwM2ZmKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
162679
24
2343
13