{"version":3,"sources":["../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/index.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/FormatBase.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/ArrayFormatBase.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/ImageDataDirectoryArray.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/ImageDirectoryEntry.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/util/functions.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/ImageDosHeader.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/ImageFileHeader.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/ImageOptionalHeader.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/ImageOptionalHeader64.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/ImageNtHeaders.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/ImageSectionHeaderArray.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/util/generate.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/NtExecutable.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/NtExecutableResource.js","../node_modules/.pnpm/pe-library@1.0.1/node_modules/pe-library/dist/format/index.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/version.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/data/index.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/util/functions.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/data/IconItem.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/data/RawIconItem.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/data/IconFile.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/resource/index.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/resource/IconGroupEntry.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/resource/StringTableItem.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/resource/StringTable.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/resource/VersionFileFlags.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/resource/VersionFileOS.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/resource/VersionFileSubtypes.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/resource/VersionFileType.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/resource/VersionInfo.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/DERObject.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/derUtil.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/ObjectIdentifier.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/KnownOids.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/certUtil.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/AlgorithmIdentifier.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/ContentInfo.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/CertificateDataRoot.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/DigestInfo.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/IssuerAndSerialNumber.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/SignedData.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/SignerInfo.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/SpcIndirectDataContent.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/SpcPeImageData.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/SpcLink.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/data/Attribute.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/timestamp.js","../node_modules/.pnpm/resedit@2.0.3/node_modules/resedit/dist/sign/index.js","../src/index.ts","../package.json","../src/cli.ts"],"names":["version_default","FormatBase","d","b","ArrayFormatBase","__extends","ImageDataDirectoryArray","ImageDirectoryEntry","c","ImageDosHeader","ImageFileHeader","ImageOptionalHeader","ImageOptionalHeader64","ImageNtHeaders","ImageSectionHeaderArray","NtExecutable","options","NtExecutableResource","off","cloneObject","createDataView","roundUp","copyBuffer","allocatePartialBinary","cloneToArrayBuffer","IconItem","RawIconItem","IconFile","generateEntryBinary","IconGroupEntry","e","StringTableItem","StringTable","VersionFileFlags","VersionFileOS","VersionFileDriverSubtype","VersionFileFontSubtype","VersionFileType","child","VersionInfo","lang","language","RawDERObject","ObjectIdentifier","AlgorithmIdentifier","ContentInfo","CertificateDataRoot","DigestInfo","IssuerAndSerialNumber","SignedData","SignerInfo","SpcAttributeTypeAndOptionalValue","SpcIndirectDataContent","SpcIndirectDataContentInfo","SpcPeImageData","SpcPeImageAttributeTypeAndOptionalValue","SpcLink","SpcLinkUrl","SpcLinkFile","Attribute","_a","exec","readFileSync","writeFileSync","program"],"mappings":"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","file":"cli.cjs","sourcesContent":["import { NtExecutable, NtExecutableResource, Format } from 'pe-library';\r\nimport version from './version.js';\r\nimport * as Data from './data/index.js';\r\nimport * as Resource from './resource/index.js';\r\nimport { generateExecutableWithSign, } from './sign/index.js';\r\nexport { NtExecutable, NtExecutableResource, version, Data, Format, Resource, generateExecutableWithSign, };\r\n","var FormatBase = /** @class */ (function () {\r\n    function FormatBase(view) {\r\n        this.view = view;\r\n    }\r\n    FormatBase.prototype.copyTo = function (bin, offset) {\r\n        new Uint8Array(bin, offset, this.view.byteLength).set(new Uint8Array(this.view.buffer, this.view.byteOffset, this.view.byteLength));\r\n    };\r\n    Object.defineProperty(FormatBase.prototype, \"byteLength\", {\r\n        get: function () {\r\n            return this.view.byteLength;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    return FormatBase;\r\n}());\r\nexport default FormatBase;\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport FormatBase from './FormatBase.js';\r\n/** abstract class that support array-like methods and 'for...of' operation */\r\nvar ArrayFormatBase = /** @class */ (function (_super) {\r\n    __extends(ArrayFormatBase, _super);\r\n    function ArrayFormatBase(view) {\r\n        return _super.call(this, view) || this;\r\n    }\r\n    ArrayFormatBase.prototype.forEach = function (callback) {\r\n        var len = this.length;\r\n        var a = [];\r\n        a.length = len;\r\n        for (var i = 0; i < len; ++i) {\r\n            a[i] = this.get(i);\r\n        }\r\n        for (var i = 0; i < len; ++i) {\r\n            callback(a[i], i, this);\r\n        }\r\n    };\r\n    ArrayFormatBase.prototype._iterator = function () {\r\n        return new (/** @class */ (function () {\r\n            function class_1(base) {\r\n                this.base = base;\r\n                this.i = 0;\r\n            }\r\n            class_1.prototype.next = function () {\r\n                if (this.i === this.base.length) {\r\n                    return {\r\n                        value: undefined,\r\n                        done: true,\r\n                    };\r\n                }\r\n                else {\r\n                    return {\r\n                        value: this.base.get(this.i++),\r\n                        done: false,\r\n                    };\r\n                }\r\n            };\r\n            return class_1;\r\n        }()))(this);\r\n    };\r\n    return ArrayFormatBase;\r\n}(FormatBase));\r\n/* istanbul ignore else */\r\nif (typeof Symbol !== 'undefined') {\r\n    ArrayFormatBase.prototype[Symbol.iterator] =\r\n        ArrayFormatBase.prototype._iterator;\r\n}\r\nexport default ArrayFormatBase;\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport ArrayFormatBase from './ArrayFormatBase.js';\r\nvar ImageDataDirectoryArray = /** @class */ (function (_super) {\r\n    __extends(ImageDataDirectoryArray, _super);\r\n    function ImageDataDirectoryArray(view) {\r\n        var _this = _super.call(this, view) || this;\r\n        _this.length = 16;\r\n        return _this;\r\n    }\r\n    /** @note This does not clone binary data; the changes to the array will modify the specified buffer `bin` */\r\n    ImageDataDirectoryArray.from = function (bin, offset) {\r\n        if (offset === void 0) { offset = 0; }\r\n        return new ImageDataDirectoryArray(new DataView(bin, offset, 128));\r\n    };\r\n    ImageDataDirectoryArray.prototype.get = function (index) {\r\n        return {\r\n            virtualAddress: this.view.getUint32(index * 8, true),\r\n            size: this.view.getUint32(4 + index * 8, true),\r\n        };\r\n    };\r\n    ImageDataDirectoryArray.prototype.set = function (index, data) {\r\n        this.view.setUint32(index * 8, data.virtualAddress, true);\r\n        this.view.setUint32(4 + index * 8, data.size, true);\r\n    };\r\n    ImageDataDirectoryArray.prototype.findIndexByVirtualAddress = function (virtualAddress) {\r\n        for (var i = 0; i < 16; ++i) {\r\n            var va = this.view.getUint32(i * 8, true);\r\n            var vs = this.view.getUint32(4 + i * 8, true);\r\n            if (virtualAddress >= va && virtualAddress < va + vs) {\r\n                return i;\r\n            }\r\n        }\r\n        return null;\r\n    };\r\n    ImageDataDirectoryArray.size = 128; // 16 * 8\r\n    ImageDataDirectoryArray.itemSize = 8;\r\n    return ImageDataDirectoryArray;\r\n}(ArrayFormatBase));\r\nexport default ImageDataDirectoryArray;\r\n","var ImageDirectoryEntry;\r\n(function (ImageDirectoryEntry) {\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"Export\"] = 0] = \"Export\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"Import\"] = 1] = \"Import\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"Resource\"] = 2] = \"Resource\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"Exception\"] = 3] = \"Exception\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"Certificate\"] = 4] = \"Certificate\";\r\n    // alias\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"Security\"] = 4] = \"Security\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"BaseRelocation\"] = 5] = \"BaseRelocation\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"Debug\"] = 6] = \"Debug\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"Architecture\"] = 7] = \"Architecture\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"GlobalPointer\"] = 8] = \"GlobalPointer\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"Tls\"] = 9] = \"Tls\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"TLS\"] = 9] = \"TLS\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"LoadConfig\"] = 10] = \"LoadConfig\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"BoundImport\"] = 11] = \"BoundImport\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"Iat\"] = 12] = \"Iat\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"IAT\"] = 12] = \"IAT\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"DelayImport\"] = 13] = \"DelayImport\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"ComDescriptor\"] = 14] = \"ComDescriptor\";\r\n    ImageDirectoryEntry[ImageDirectoryEntry[\"COMDescriptor\"] = 14] = \"COMDescriptor\";\r\n})(ImageDirectoryEntry || (ImageDirectoryEntry = {}));\r\nexport default ImageDirectoryEntry;\r\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\r\n/// <reference lib='dom' />\r\nimport ImageDosHeader from '../format/ImageDosHeader.js';\r\nexport function cloneObject(object) {\r\n    var r = {};\r\n    Object.keys(object).forEach(function (key) {\r\n        r[key] = object[key];\r\n    });\r\n    return r;\r\n}\r\n/* eslint-enable @typescript-eslint/ban-types */\r\nexport function createDataView(bin, byteOffset, byteLength) {\r\n    if ('buffer' in bin) {\r\n        var newOffset = bin.byteOffset;\r\n        var newLength = bin.byteLength;\r\n        if (typeof byteOffset !== 'undefined') {\r\n            newOffset += byteOffset;\r\n            newLength -= byteOffset;\r\n        }\r\n        if (typeof byteLength !== 'undefined') {\r\n            newLength = byteLength;\r\n        }\r\n        return new DataView(bin.buffer, newOffset, newLength);\r\n    }\r\n    else {\r\n        return new DataView(bin, byteOffset, byteLength);\r\n    }\r\n}\r\nexport function calculateCheckSumForPE(bin, storeToBinary) {\r\n    var dosHeader = ImageDosHeader.from(bin);\r\n    var view = new DataView(bin);\r\n    var checkSumOffset = dosHeader.newHeaderAddress + 88;\r\n    var result = 0;\r\n    var limit = 0x100000000; // 2^32\r\n    var update = function (dword) {\r\n        result += dword;\r\n        if (result >= limit) {\r\n            result = (result % limit) + ((result / limit) | 0);\r\n        }\r\n    };\r\n    var len = view.byteLength;\r\n    var lenExtra = len % 4;\r\n    var lenAlign = len - lenExtra;\r\n    for (var i = 0; i < lenAlign; i += 4) {\r\n        if (i !== checkSumOffset) {\r\n            update(view.getUint32(i, true));\r\n        }\r\n    }\r\n    if (lenExtra !== 0) {\r\n        var extra = 0;\r\n        for (var i = 0; i < lenExtra; i++) {\r\n            extra |= view.getUint8(lenAlign + i) << ((3 - i) * 8);\r\n        }\r\n        update(extra);\r\n    }\r\n    result = (result & 0xffff) + (result >>> 16);\r\n    result += result >>> 16;\r\n    result = (result & 0xffff) + len;\r\n    if (storeToBinary) {\r\n        view.setUint32(checkSumOffset, result, true);\r\n    }\r\n    return result;\r\n}\r\nexport function roundUp(val, align) {\r\n    return Math.floor((val + align - 1) / align) * align;\r\n}\r\nexport function copyBuffer(dest, destOffset, src, srcOffset, length) {\r\n    var ua8Dest = 'buffer' in dest\r\n        ? new Uint8Array(dest.buffer, dest.byteOffset + (destOffset || 0), length)\r\n        : new Uint8Array(dest, destOffset, length);\r\n    var ua8Src = 'buffer' in src\r\n        ? new Uint8Array(src.buffer, src.byteOffset + (srcOffset || 0), length)\r\n        : new Uint8Array(src, srcOffset, length);\r\n    ua8Dest.set(ua8Src);\r\n}\r\nexport function allocatePartialBinary(binBase, offset, length) {\r\n    var b = new ArrayBuffer(length);\r\n    copyBuffer(b, 0, binBase, offset, length);\r\n    return b;\r\n}\r\nexport function cloneToArrayBuffer(binBase) {\r\n    if ('buffer' in binBase) {\r\n        var b = new ArrayBuffer(binBase.byteLength);\r\n        new Uint8Array(b).set(new Uint8Array(binBase.buffer, binBase.byteOffset, binBase.byteLength));\r\n        return b;\r\n    }\r\n    else {\r\n        var b = new ArrayBuffer(binBase.byteLength);\r\n        new Uint8Array(b).set(new Uint8Array(binBase));\r\n        return b;\r\n    }\r\n}\r\nexport function getFixedString(view, offset, length) {\r\n    var actualLen = 0;\r\n    for (var i = 0; i < length; ++i) {\r\n        if (view.getUint8(offset + i) === 0) {\r\n            break;\r\n        }\r\n        ++actualLen;\r\n    }\r\n    if (typeof Buffer !== 'undefined') {\r\n        return Buffer.from(view.buffer, view.byteOffset + offset, actualLen).toString('utf8');\r\n    }\r\n    else if (typeof decodeURIComponent !== 'undefined') {\r\n        var s = '';\r\n        for (var i = 0; i < actualLen; ++i) {\r\n            var c = view.getUint8(offset + i);\r\n            if (c < 16) {\r\n                s += '%0' + c.toString(16);\r\n            }\r\n            else {\r\n                s += '%' + c.toString(16);\r\n            }\r\n        }\r\n        return decodeURIComponent(s);\r\n    }\r\n    else {\r\n        var s = '';\r\n        for (var i = 0; i < actualLen; ++i) {\r\n            var c = view.getUint8(offset + i);\r\n            s += String.fromCharCode(c);\r\n        }\r\n        return s;\r\n    }\r\n}\r\nexport function setFixedString(view, offset, length, text) {\r\n    if (typeof Buffer !== 'undefined') {\r\n        var u = new Uint8Array(view.buffer, view.byteOffset + offset, length);\r\n        // fill by zero\r\n        u.set(new Uint8Array(length));\r\n        u.set(Buffer.from(text, 'utf8').subarray(0, length));\r\n    }\r\n    else if (typeof encodeURIComponent !== 'undefined') {\r\n        var s = encodeURIComponent(text);\r\n        for (var i = 0, j = 0; i < length; ++i) {\r\n            if (j >= s.length) {\r\n                view.setUint8(i + offset, 0);\r\n            }\r\n            else {\r\n                var c = s.charCodeAt(j);\r\n                if (c === 37) {\r\n                    // '%'\r\n                    var n = parseInt(s.substr(j + 1, 2), 16);\r\n                    if (typeof n === 'number' && !isNaN(n)) {\r\n                        view.setUint8(i + offset, n);\r\n                    }\r\n                    else {\r\n                        view.setUint8(i + offset, 0);\r\n                    }\r\n                    j += 3;\r\n                }\r\n                else {\r\n                    view.setUint8(i + offset, c);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    else {\r\n        for (var i = 0, j = 0; i < length; ++i) {\r\n            if (j >= text.length) {\r\n                view.setUint8(i + offset, 0);\r\n            }\r\n            else {\r\n                var c = text.charCodeAt(j);\r\n                view.setUint8(i + offset, c & 0xff);\r\n            }\r\n        }\r\n    }\r\n}\r\nexport function binaryToString(bin) {\r\n    if (typeof TextDecoder !== 'undefined') {\r\n        var dec = new TextDecoder();\r\n        return dec.decode(bin);\r\n    }\r\n    else if (typeof Buffer !== 'undefined') {\r\n        var b = void 0;\r\n        if ('buffer' in bin) {\r\n            b = Buffer.from(bin.buffer, bin.byteOffset, bin.byteLength);\r\n        }\r\n        else {\r\n            b = Buffer.from(bin);\r\n        }\r\n        return b.toString('utf8');\r\n    }\r\n    else {\r\n        var view = void 0;\r\n        if ('buffer' in bin) {\r\n            view = new Uint8Array(bin.buffer, bin.byteOffset, bin.byteLength);\r\n        }\r\n        else {\r\n            view = new Uint8Array(bin);\r\n        }\r\n        if (typeof decodeURIComponent !== 'undefined') {\r\n            var s = '';\r\n            for (var i = 0; i < view.length; ++i) {\r\n                var c = view[i];\r\n                if (c < 16) {\r\n                    s += '%0' + c.toString(16);\r\n                }\r\n                else {\r\n                    s += '%' + c.toString(16);\r\n                }\r\n            }\r\n            return decodeURIComponent(s);\r\n        }\r\n        else {\r\n            var s = '';\r\n            for (var i = 0; i < view.length; ++i) {\r\n                var c = view[i];\r\n                s += String.fromCharCode(c);\r\n            }\r\n            return s;\r\n        }\r\n    }\r\n}\r\nexport function stringToBinary(string) {\r\n    if (typeof TextEncoder !== 'undefined') {\r\n        var enc = new TextEncoder();\r\n        return cloneToArrayBuffer(enc.encode(string));\r\n    }\r\n    else if (typeof Buffer !== 'undefined') {\r\n        return cloneToArrayBuffer(Buffer.from(string, 'utf8'));\r\n    }\r\n    else if (typeof encodeURIComponent !== 'undefined') {\r\n        var data = encodeURIComponent(string);\r\n        var len = 0;\r\n        for (var i = 0; i < data.length; ++len) {\r\n            var c = data.charCodeAt(i);\r\n            if (c === 37) {\r\n                i += 3;\r\n            }\r\n            else {\r\n                ++i;\r\n            }\r\n        }\r\n        var bin = new ArrayBuffer(len);\r\n        var view = new Uint8Array(bin);\r\n        for (var i = 0, j = 0; i < data.length; ++j) {\r\n            var c = data.charCodeAt(i);\r\n            if (c === 37) {\r\n                var n = parseInt(data.substring(i + 1, i + 3), 16);\r\n                view[j] = n;\r\n                i += 3;\r\n            }\r\n            else {\r\n                view[j] = c;\r\n                ++i;\r\n            }\r\n        }\r\n        return bin;\r\n    }\r\n    else {\r\n        var bin = new ArrayBuffer(string.length);\r\n        new Uint8Array(bin).set([].map.call(string, function (c) {\r\n            return c.charCodeAt(0);\r\n        }));\r\n        return bin;\r\n    }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport FormatBase from './FormatBase.js';\r\nimport { createDataView } from '../util/functions.js';\r\nvar ImageDosHeader = /** @class */ (function (_super) {\r\n    __extends(ImageDosHeader, _super);\r\n    function ImageDosHeader(view) {\r\n        return _super.call(this, view) || this;\r\n    }\r\n    ImageDosHeader.from = function (bin, offset) {\r\n        if (offset === void 0) { offset = 0; }\r\n        return new ImageDosHeader(createDataView(bin, offset, 64));\r\n    };\r\n    ImageDosHeader.prototype.isValid = function () {\r\n        return this.magic === ImageDosHeader.DEFAULT_MAGIC;\r\n    };\r\n    Object.defineProperty(ImageDosHeader.prototype, \"magic\", {\r\n        get: function () {\r\n            return this.view.getUint16(0, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(0, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"lastPageSize\", {\r\n        get: function () {\r\n            return this.view.getUint16(2, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(2, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"pages\", {\r\n        get: function () {\r\n            return this.view.getUint16(4, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(4, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"relocations\", {\r\n        get: function () {\r\n            return this.view.getUint16(6, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(6, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"headerSizeInParagraph\", {\r\n        get: function () {\r\n            return this.view.getUint16(8, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(8, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"minAllocParagraphs\", {\r\n        get: function () {\r\n            return this.view.getUint16(10, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(10, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"maxAllocParagraphs\", {\r\n        get: function () {\r\n            return this.view.getUint16(12, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(12, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"initialSS\", {\r\n        get: function () {\r\n            return this.view.getUint16(14, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(14, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"initialSP\", {\r\n        get: function () {\r\n            return this.view.getUint16(16, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(16, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"checkSum\", {\r\n        get: function () {\r\n            return this.view.getUint16(18, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(18, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"initialIP\", {\r\n        get: function () {\r\n            return this.view.getUint16(20, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(20, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"initialCS\", {\r\n        get: function () {\r\n            return this.view.getUint16(22, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(22, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"relocationTableAddress\", {\r\n        get: function () {\r\n            return this.view.getUint16(24, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(24, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"overlayNum\", {\r\n        get: function () {\r\n            return this.view.getUint16(26, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(26, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"oemId\", {\r\n        // WORD e_res[4] (28,30,32,34)\r\n        get: function () {\r\n            return this.view.getUint16(36, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(36, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"oemInfo\", {\r\n        get: function () {\r\n            return this.view.getUint16(38, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(38, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageDosHeader.prototype, \"newHeaderAddress\", {\r\n        // WORD e_res2[10] (40,42,44,46,48,50,52,54,56,58)\r\n        get: function () {\r\n            return this.view.getUint32(60, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(60, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    ImageDosHeader.size = 64;\r\n    ImageDosHeader.DEFAULT_MAGIC = 0x5a4d; // 'MZ'\r\n    return ImageDosHeader;\r\n}(FormatBase));\r\nexport default ImageDosHeader;\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport FormatBase from './FormatBase.js';\r\nvar ImageFileHeader = /** @class */ (function (_super) {\r\n    __extends(ImageFileHeader, _super);\r\n    function ImageFileHeader(view) {\r\n        return _super.call(this, view) || this;\r\n    }\r\n    ImageFileHeader.from = function (bin, offset) {\r\n        if (offset === void 0) { offset = 0; }\r\n        return new ImageFileHeader(new DataView(bin, offset, 20));\r\n    };\r\n    Object.defineProperty(ImageFileHeader.prototype, \"machine\", {\r\n        get: function () {\r\n            return this.view.getUint16(0, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(0, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageFileHeader.prototype, \"numberOfSections\", {\r\n        get: function () {\r\n            return this.view.getUint16(2, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(2, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageFileHeader.prototype, \"timeDateStamp\", {\r\n        get: function () {\r\n            return this.view.getUint32(4, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(4, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageFileHeader.prototype, \"pointerToSymbolTable\", {\r\n        get: function () {\r\n            return this.view.getUint32(8, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(8, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageFileHeader.prototype, \"numberOfSymbols\", {\r\n        get: function () {\r\n            return this.view.getUint32(12, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(12, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageFileHeader.prototype, \"sizeOfOptionalHeader\", {\r\n        get: function () {\r\n            return this.view.getUint16(16, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(16, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageFileHeader.prototype, \"characteristics\", {\r\n        get: function () {\r\n            return this.view.getUint16(18, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(18, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    ImageFileHeader.size = 20;\r\n    return ImageFileHeader;\r\n}(FormatBase));\r\nexport default ImageFileHeader;\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport FormatBase from './FormatBase.js';\r\nvar ImageOptionalHeader = /** @class */ (function (_super) {\r\n    __extends(ImageOptionalHeader, _super);\r\n    function ImageOptionalHeader(view) {\r\n        return _super.call(this, view) || this;\r\n    }\r\n    ImageOptionalHeader.from = function (bin, offset) {\r\n        if (offset === void 0) { offset = 0; }\r\n        return new ImageOptionalHeader(new DataView(bin, offset, 96));\r\n    };\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"magic\", {\r\n        get: function () {\r\n            return this.view.getUint16(0, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(0, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"majorLinkerVersion\", {\r\n        get: function () {\r\n            return this.view.getUint8(2);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint8(2, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"minorLinkerVersion\", {\r\n        get: function () {\r\n            return this.view.getUint8(3);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint8(3, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"sizeOfCode\", {\r\n        get: function () {\r\n            return this.view.getUint32(4, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(4, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"sizeOfInitializedData\", {\r\n        get: function () {\r\n            return this.view.getUint32(8, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(8, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"sizeOfUninitializedData\", {\r\n        get: function () {\r\n            return this.view.getUint32(12, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(12, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"addressOfEntryPoint\", {\r\n        get: function () {\r\n            return this.view.getUint32(16, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(16, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"baseOfCode\", {\r\n        get: function () {\r\n            return this.view.getUint32(20, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(20, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"baseOfData\", {\r\n        get: function () {\r\n            return this.view.getUint32(24, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(24, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"imageBase\", {\r\n        get: function () {\r\n            return this.view.getUint32(28, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(28, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"sectionAlignment\", {\r\n        get: function () {\r\n            return this.view.getUint32(32, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(32, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"fileAlignment\", {\r\n        get: function () {\r\n            return this.view.getUint32(36, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(36, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"majorOperatingSystemVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(40, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(40, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"minorOperatingSystemVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(42, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(42, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"majorImageVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(44, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(44, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"minorImageVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(46, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(46, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"majorSubsystemVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(48, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(48, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"minorSubsystemVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(50, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(50, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"win32VersionValue\", {\r\n        get: function () {\r\n            return this.view.getUint32(52, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(52, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"sizeOfImage\", {\r\n        get: function () {\r\n            return this.view.getUint32(56, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(56, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"sizeOfHeaders\", {\r\n        get: function () {\r\n            return this.view.getUint32(60, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(60, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"checkSum\", {\r\n        get: function () {\r\n            return this.view.getUint32(64, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(64, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"subsystem\", {\r\n        get: function () {\r\n            return this.view.getUint16(68, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(68, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"dllCharacteristics\", {\r\n        get: function () {\r\n            return this.view.getUint16(70, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(70, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"sizeOfStackReserve\", {\r\n        get: function () {\r\n            return this.view.getUint32(72, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(72, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"sizeOfStackCommit\", {\r\n        get: function () {\r\n            return this.view.getUint32(76, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(76, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"sizeOfHeapReserve\", {\r\n        get: function () {\r\n            return this.view.getUint32(80, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(80, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"sizeOfHeapCommit\", {\r\n        get: function () {\r\n            return this.view.getUint32(84, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(84, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"loaderFlags\", {\r\n        get: function () {\r\n            return this.view.getUint32(88, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(88, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader.prototype, \"numberOfRvaAndSizes\", {\r\n        get: function () {\r\n            return this.view.getUint32(92, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(92, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    ImageOptionalHeader.size = 96;\r\n    ImageOptionalHeader.DEFAULT_MAGIC = 0x10b;\r\n    return ImageOptionalHeader;\r\n}(FormatBase));\r\nexport default ImageOptionalHeader;\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport FormatBase from './FormatBase.js';\r\nfunction getUint64LE(view, offset) {\r\n    return (view.getUint32(offset + 4, true) * 0x100000000 +\r\n        view.getUint32(offset, true));\r\n}\r\nfunction setUint64LE(view, offset, val) {\r\n    view.setUint32(offset, val & 0xffffffff, true);\r\n    view.setUint32(offset + 4, Math.floor(val / 0x100000000), true);\r\n}\r\nfunction getUint64LEBigInt(view, offset) {\r\n    /* istanbul ignore if */\r\n    if (typeof BigInt === 'undefined') {\r\n        throw new Error('BigInt not supported');\r\n    }\r\n    return (BigInt(0x100000000) * BigInt(view.getUint32(offset + 4, true)) +\r\n        BigInt(view.getUint32(offset, true)));\r\n}\r\nfunction setUint64LEBigInt(view, offset, val) {\r\n    /* istanbul ignore if */\r\n    if (typeof BigInt === 'undefined') {\r\n        throw new Error('BigInt not supported');\r\n    }\r\n    view.setUint32(offset, Number(val & BigInt(0xffffffff)), true);\r\n    view.setUint32(offset + 4, Math.floor(Number((val / BigInt(0x100000000)) & BigInt(0xffffffff))), true);\r\n}\r\nvar ImageOptionalHeader64 = /** @class */ (function (_super) {\r\n    __extends(ImageOptionalHeader64, _super);\r\n    function ImageOptionalHeader64(view) {\r\n        return _super.call(this, view) || this;\r\n    }\r\n    ImageOptionalHeader64.from = function (bin, offset) {\r\n        if (offset === void 0) { offset = 0; }\r\n        return new ImageOptionalHeader64(new DataView(bin, offset, 112));\r\n    };\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"magic\", {\r\n        get: function () {\r\n            return this.view.getUint16(0, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(0, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"majorLinkerVersion\", {\r\n        get: function () {\r\n            return this.view.getUint8(2);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint8(2, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"minorLinkerVersion\", {\r\n        get: function () {\r\n            return this.view.getUint8(3);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint8(3, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfCode\", {\r\n        get: function () {\r\n            return this.view.getUint32(4, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(4, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfInitializedData\", {\r\n        get: function () {\r\n            return this.view.getUint32(8, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(8, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfUninitializedData\", {\r\n        get: function () {\r\n            return this.view.getUint32(12, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(12, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"addressOfEntryPoint\", {\r\n        get: function () {\r\n            return this.view.getUint32(16, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(16, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"baseOfCode\", {\r\n        get: function () {\r\n            return this.view.getUint32(20, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(20, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"imageBase\", {\r\n        get: function () {\r\n            return getUint64LE(this.view, 24);\r\n        },\r\n        set: function (val) {\r\n            setUint64LE(this.view, 24, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"imageBaseBigInt\", {\r\n        get: function () {\r\n            return getUint64LEBigInt(this.view, 24);\r\n        },\r\n        set: function (val) {\r\n            setUint64LEBigInt(this.view, 24, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sectionAlignment\", {\r\n        get: function () {\r\n            return this.view.getUint32(32, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(32, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"fileAlignment\", {\r\n        get: function () {\r\n            return this.view.getUint32(36, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(36, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"majorOperatingSystemVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(40, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(40, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"minorOperatingSystemVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(42, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(42, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"majorImageVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(44, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(44, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"minorImageVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(46, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(46, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"majorSubsystemVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(48, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(48, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"minorSubsystemVersion\", {\r\n        get: function () {\r\n            return this.view.getUint16(50, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(50, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"win32VersionValue\", {\r\n        get: function () {\r\n            return this.view.getUint32(52, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(52, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfImage\", {\r\n        get: function () {\r\n            return this.view.getUint32(56, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(56, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfHeaders\", {\r\n        get: function () {\r\n            return this.view.getUint32(60, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(60, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"checkSum\", {\r\n        get: function () {\r\n            return this.view.getUint32(64, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(64, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"subsystem\", {\r\n        get: function () {\r\n            return this.view.getUint16(68, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(68, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"dllCharacteristics\", {\r\n        get: function () {\r\n            return this.view.getUint16(70, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint16(70, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfStackReserve\", {\r\n        get: function () {\r\n            return getUint64LE(this.view, 72);\r\n        },\r\n        set: function (val) {\r\n            setUint64LE(this.view, 72, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfStackReserveBigInt\", {\r\n        get: function () {\r\n            return getUint64LEBigInt(this.view, 72);\r\n        },\r\n        set: function (val) {\r\n            setUint64LEBigInt(this.view, 72, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfStackCommit\", {\r\n        get: function () {\r\n            return getUint64LE(this.view, 80);\r\n        },\r\n        set: function (val) {\r\n            setUint64LE(this.view, 80, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfStackCommitBigInt\", {\r\n        get: function () {\r\n            return getUint64LEBigInt(this.view, 80);\r\n        },\r\n        set: function (val) {\r\n            setUint64LEBigInt(this.view, 80, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfHeapReserve\", {\r\n        get: function () {\r\n            return getUint64LE(this.view, 88);\r\n        },\r\n        set: function (val) {\r\n            setUint64LE(this.view, 88, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfHeapReserveBigInt\", {\r\n        get: function () {\r\n            return getUint64LEBigInt(this.view, 88);\r\n        },\r\n        set: function (val) {\r\n            setUint64LEBigInt(this.view, 88, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfHeapCommit\", {\r\n        get: function () {\r\n            return getUint64LE(this.view, 96);\r\n        },\r\n        set: function (val) {\r\n            setUint64LE(this.view, 96, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"sizeOfHeapCommitBigInt\", {\r\n        get: function () {\r\n            return getUint64LEBigInt(this.view, 96);\r\n        },\r\n        set: function (val) {\r\n            setUint64LEBigInt(this.view, 96, val);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"loaderFlags\", {\r\n        get: function () {\r\n            return this.view.getUint32(104, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(104, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageOptionalHeader64.prototype, \"numberOfRvaAndSizes\", {\r\n        get: function () {\r\n            return this.view.getUint32(108, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(108, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    ImageOptionalHeader64.size = 112;\r\n    ImageOptionalHeader64.DEFAULT_MAGIC = 0x20b;\r\n    return ImageOptionalHeader64;\r\n}(FormatBase));\r\nexport default ImageOptionalHeader64;\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport FormatBase from './FormatBase.js';\r\nimport ImageFileHeader from './ImageFileHeader.js';\r\nimport ImageOptionalHeader from './ImageOptionalHeader.js';\r\nimport ImageOptionalHeader64 from './ImageOptionalHeader64.js';\r\nimport ImageDataDirectoryArray from './ImageDataDirectoryArray.js';\r\nimport { createDataView } from '../util/functions.js';\r\nvar ImageNtHeaders = /** @class */ (function (_super) {\r\n    __extends(ImageNtHeaders, _super);\r\n    function ImageNtHeaders(view) {\r\n        return _super.call(this, view) || this;\r\n    }\r\n    ImageNtHeaders.from = function (bin, offset) {\r\n        if (offset === void 0) { offset = 0; }\r\n        var magic = createDataView(bin, offset + ImageFileHeader.size, 6).getUint16(4, true);\r\n        var len = 4 + ImageFileHeader.size + ImageDataDirectoryArray.size;\r\n        if (magic === ImageOptionalHeader64.DEFAULT_MAGIC) {\r\n            len += ImageOptionalHeader64.size;\r\n        }\r\n        else {\r\n            len += ImageOptionalHeader.size;\r\n        }\r\n        return new ImageNtHeaders(createDataView(bin, offset, len));\r\n    };\r\n    ImageNtHeaders.prototype.isValid = function () {\r\n        return this.signature === ImageNtHeaders.DEFAULT_SIGNATURE;\r\n    };\r\n    ImageNtHeaders.prototype.is32bit = function () {\r\n        return (this.view.getUint16(ImageFileHeader.size + 4, true) ===\r\n            ImageOptionalHeader.DEFAULT_MAGIC);\r\n    };\r\n    Object.defineProperty(ImageNtHeaders.prototype, \"signature\", {\r\n        get: function () {\r\n            return this.view.getUint32(0, true);\r\n        },\r\n        set: function (val) {\r\n            this.view.setUint32(0, val, true);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageNtHeaders.prototype, \"fileHeader\", {\r\n        get: function () {\r\n            return ImageFileHeader.from(this.view.buffer, this.view.byteOffset + 4);\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageNtHeaders.prototype, \"optionalHeader\", {\r\n        get: function () {\r\n            var off = ImageFileHeader.size + 4;\r\n            var magic = this.view.getUint16(off, true);\r\n            if (magic === ImageOptionalHeader64.DEFAULT_MAGIC) {\r\n                return ImageOptionalHeader64.from(this.view.buffer, this.view.byteOffset + off);\r\n            }\r\n            else {\r\n                return ImageOptionalHeader.from(this.view.buffer, this.view.byteOffset + off);\r\n            }\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(ImageNtHeaders.prototype, \"optionalHeaderDataDirectory\", {\r\n        get: function () {\r\n            return ImageDataDirectoryArray.from(this.view.buffer, this.view.byteOffset + this.getDataDirectoryOffset());\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    ImageNtHeaders.prototype.getDataDirectoryOffset = function () {\r\n        var off = ImageFileHeader.size + 4;\r\n        var magic = this.view.getUint16(off, true);\r\n        if (magic === ImageOptionalHeader64.DEFAULT_MAGIC) {\r\n            off += ImageOptionalHeader64.size;\r\n        }\r\n        else {\r\n            off += ImageOptionalHeader.size;\r\n        }\r\n        return off;\r\n    };\r\n    ImageNtHeaders.prototype.getSectionHeaderOffset = function () {\r\n        return this.getDataDirectoryOffset() + ImageDataDirectoryArray.size;\r\n    };\r\n    ImageNtHeaders.DEFAULT_SIGNATURE = 0x4550; // 'PE\\x00\\x00'\r\n    return ImageNtHeaders;\r\n}(FormatBase));\r\nexport default ImageNtHeaders;\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport ArrayFormatBase from './ArrayFormatBase.js';\r\nimport { getFixedString, setFixedString } from '../util/functions.js';\r\nvar ImageSectionHeaderArray = /** @class */ (function (_super) {\r\n    __extends(ImageSectionHeaderArray, _super);\r\n    function ImageSectionHeaderArray(view, length) {\r\n        var _this = _super.call(this, view) || this;\r\n        _this.length = length;\r\n        return _this;\r\n    }\r\n    ImageSectionHeaderArray.from = function (bin, length, offset) {\r\n        if (offset === void 0) { offset = 0; }\r\n        var size = length * 40;\r\n        return new ImageSectionHeaderArray(new DataView(bin, offset, size), length);\r\n    };\r\n    ImageSectionHeaderArray.prototype.get = function (index) {\r\n        return {\r\n            name: getFixedString(this.view, index * 40, 8),\r\n            virtualSize: this.view.getUint32(8 + index * 40, true),\r\n            virtualAddress: this.view.getUint32(12 + index * 40, true),\r\n            sizeOfRawData: this.view.getUint32(16 + index * 40, true),\r\n            pointerToRawData: this.view.getUint32(20 + index * 40, true),\r\n            pointerToRelocations: this.view.getUint32(24 + index * 40, true),\r\n            pointerToLineNumbers: this.view.getUint32(28 + index * 40, true),\r\n            numberOfRelocations: this.view.getUint16(32 + index * 40, true),\r\n            numberOfLineNumbers: this.view.getUint16(34 + index * 40, true),\r\n            characteristics: this.view.getUint32(36 + index * 40, true),\r\n        };\r\n    };\r\n    ImageSectionHeaderArray.prototype.set = function (index, data) {\r\n        setFixedString(this.view, index * 40, 8, data.name);\r\n        this.view.setUint32(8 + index * 40, data.virtualSize, true);\r\n        this.view.setUint32(12 + index * 40, data.virtualAddress, true);\r\n        this.view.setUint32(16 + index * 40, data.sizeOfRawData, true);\r\n        this.view.setUint32(20 + index * 40, data.pointerToRawData, true);\r\n        this.view.setUint32(24 + index * 40, data.pointerToRelocations, true);\r\n        this.view.setUint32(28 + index * 40, data.pointerToLineNumbers, true);\r\n        this.view.setUint16(32 + index * 40, data.numberOfRelocations, true);\r\n        this.view.setUint16(34 + index * 40, data.numberOfLineNumbers, true);\r\n        this.view.setUint32(36 + index * 40, data.characteristics, true);\r\n    };\r\n    ImageSectionHeaderArray.itemSize = 40;\r\n    return ImageSectionHeaderArray;\r\n}(ArrayFormatBase));\r\nexport default ImageSectionHeaderArray;\r\n","// To make the binary (DOS_STUB_PROGRAM):\r\n// $ cd tools/dos-stub\r\n// $ nasm -f bin -o dos-stub.bin dos-stub.asm\r\n// $ node -e \"console.log([].map.call(fs.readFileSync('tools/dos-stub/dos-stub.bin'), (v)=>`0x${Buffer.from([v]).toString('hex')}`).join(','))\"\r\n//\r\n// NOTE: the original dos-stub.asm program and the bit code in DOS_STUB_PROGRAM are under the 0-BSD license.\r\nimport ImageDataDirectoryArray from '../format/ImageDataDirectoryArray.js';\r\nimport ImageDosHeader from '../format/ImageDosHeader.js';\r\nimport ImageFileHeader from '../format/ImageFileHeader.js';\r\nimport ImageNtHeaders from '../format/ImageNtHeaders.js';\r\nimport ImageOptionalHeader from '../format/ImageOptionalHeader.js';\r\nimport ImageOptionalHeader64 from '../format/ImageOptionalHeader64.js';\r\nimport { copyBuffer, roundUp } from './functions.js';\r\n// fill with '0x00' to make 8-bytes alignment\r\n// prettier-ignore\r\nvar DOS_STUB_PROGRAM = new Uint8Array([\r\n    0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09, 0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21, 0x44, 0x4f,\r\n    0x53, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f,\r\n    0x72, 0x74, 0x65, 0x64, 0x2e, 0x0d, 0x0d, 0x0a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n]);\r\nvar DOS_STUB_SIZE = roundUp(ImageDosHeader.size + DOS_STUB_PROGRAM.length, 0x80);\r\nvar DEFAULT_FILE_ALIGNMENT = 512;\r\nexport function getDosStubDataSize() {\r\n    return DOS_STUB_SIZE;\r\n}\r\nexport function fillDosStubData(bin) {\r\n    var dos = ImageDosHeader.from(bin);\r\n    dos.magic = ImageDosHeader.DEFAULT_MAGIC;\r\n    // last page size\r\n    dos.lastPageSize = DOS_STUB_SIZE % 512;\r\n    // total page count\r\n    dos.pages = Math.ceil(DOS_STUB_SIZE / 512);\r\n    // no relocations\r\n    dos.relocations = 0;\r\n    // header size as paragraph count (1 paragraph = 16 bytes)\r\n    dos.headerSizeInParagraph = Math.ceil(ImageDosHeader.size / 16);\r\n    dos.minAllocParagraphs = 0;\r\n    dos.maxAllocParagraphs = 0xffff;\r\n    dos.initialSS = 0;\r\n    dos.initialSP = 0x80;\r\n    // (no relocations, but set offset after the header)\r\n    dos.relocationTableAddress = ImageDosHeader.size;\r\n    dos.newHeaderAddress = DOS_STUB_SIZE;\r\n    copyBuffer(bin, ImageDosHeader.size, DOS_STUB_PROGRAM, 0, DOS_STUB_PROGRAM.length);\r\n}\r\nexport function estimateNewHeaderSize(is32Bit) {\r\n    return (\r\n    // magic\r\n    4 +\r\n        ImageFileHeader.size +\r\n        (is32Bit ? ImageOptionalHeader.size : ImageOptionalHeader64.size) +\r\n        ImageDataDirectoryArray.size);\r\n}\r\nexport function fillPeHeaderEmptyData(bin, offset, totalBinSize, is32Bit, isDLL) {\r\n    var _bin;\r\n    var _offset;\r\n    if ('buffer' in bin) {\r\n        _bin = bin.buffer;\r\n        _offset = bin.byteOffset + offset;\r\n    }\r\n    else {\r\n        _bin = bin;\r\n        _offset = offset;\r\n    }\r\n    new DataView(_bin, _offset).setUint32(0, ImageNtHeaders.DEFAULT_SIGNATURE, true);\r\n    var fh = ImageFileHeader.from(_bin, _offset + 4);\r\n    fh.machine = is32Bit ? 0x14c : 0x8664;\r\n    fh.numberOfSections = 0; // no sections\r\n    fh.timeDateStamp = 0;\r\n    fh.pointerToSymbolTable = 0;\r\n    fh.numberOfSymbols = 0;\r\n    fh.sizeOfOptionalHeader =\r\n        (is32Bit ? ImageOptionalHeader.size : ImageOptionalHeader64.size) +\r\n            ImageDataDirectoryArray.size;\r\n    fh.characteristics = isDLL ? 0x2102 : 0x102;\r\n    var oh = (is32Bit ? ImageOptionalHeader : ImageOptionalHeader64).from(_bin, _offset + 4 + ImageFileHeader.size);\r\n    oh.magic = is32Bit\r\n        ? ImageOptionalHeader.DEFAULT_MAGIC\r\n        : ImageOptionalHeader64.DEFAULT_MAGIC;\r\n    // oh.majorLinkerVersion = 0;\r\n    // oh.minorLinkerVersion = 0;\r\n    oh.sizeOfCode = 0;\r\n    oh.sizeOfInitializedData = 0;\r\n    oh.sizeOfUninitializedData = 0;\r\n    oh.addressOfEntryPoint = 0;\r\n    oh.baseOfCode = 0x1000;\r\n    // oh.baseOfData = 0; // for 32bit only\r\n    oh.imageBase = is32Bit ? 0x1000000 : 0x180000000;\r\n    oh.sectionAlignment = 4096;\r\n    oh.fileAlignment = DEFAULT_FILE_ALIGNMENT;\r\n    oh.majorOperatingSystemVersion = 6;\r\n    oh.minorOperatingSystemVersion = 0;\r\n    // oh.majorImageVersion = 0;\r\n    // oh.minorImageVersion = 0;\r\n    oh.majorSubsystemVersion = 6;\r\n    oh.minorSubsystemVersion = 0;\r\n    // oh.win32VersionValue = 0;\r\n    oh.sizeOfHeaders = roundUp(totalBinSize, oh.fileAlignment);\r\n    // oh.checkSum = 0;\r\n    oh.subsystem = 2; // IMAGE_SUBSYSTEM_WINDOWS_GUI\r\n    oh.dllCharacteristics =\r\n        (is32Bit ? 0 : 0x20) + // IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA\r\n            0x40 + // IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE\r\n            0x100; // IMAGE_DLLCHARACTERISTICS_NX_COMPAT\r\n    oh.sizeOfStackReserve = 0x100000;\r\n    oh.sizeOfStackCommit = 0x1000;\r\n    oh.sizeOfHeapReserve = 0x100000;\r\n    oh.sizeOfHeapCommit = 0x1000;\r\n    // oh.loaderFlags = 0;\r\n    oh.numberOfRvaAndSizes =\r\n        ImageDataDirectoryArray.size / ImageDataDirectoryArray.itemSize;\r\n}\r\nexport function makeEmptyNtExecutableBinary(is32Bit, isDLL) {\r\n    var bufferSize = roundUp(DOS_STUB_SIZE + estimateNewHeaderSize(is32Bit), DEFAULT_FILE_ALIGNMENT);\r\n    var bin = new ArrayBuffer(bufferSize);\r\n    fillDosStubData(bin);\r\n    fillPeHeaderEmptyData(bin, DOS_STUB_SIZE, bufferSize, is32Bit, isDLL);\r\n    return bin;\r\n}\r\n","import ImageDataDirectoryArray from './format/ImageDataDirectoryArray.js';\r\nimport ImageDirectoryEntry from './format/ImageDirectoryEntry.js';\r\nimport ImageDosHeader from './format/ImageDosHeader.js';\r\nimport ImageNtHeaders from './format/ImageNtHeaders.js';\r\nimport ImageSectionHeaderArray from './format/ImageSectionHeaderArray.js';\r\nimport { allocatePartialBinary, calculateCheckSumForPE, cloneObject, cloneToArrayBuffer, roundUp, } from './util/functions.js';\r\nimport { makeEmptyNtExecutableBinary } from './util/generate.js';\r\nvar NtExecutable = /** @class */ (function () {\r\n    function NtExecutable(_headers, _sections, _ex) {\r\n        this._headers = _headers;\r\n        this._sections = _sections;\r\n        this._ex = _ex;\r\n        var dh = ImageDosHeader.from(_headers);\r\n        var nh = ImageNtHeaders.from(_headers, dh.newHeaderAddress);\r\n        this._dh = dh;\r\n        this._nh = nh;\r\n        this._dda = nh.optionalHeaderDataDirectory;\r\n        _sections.sort(function (a, b) {\r\n            var ra = a.info.pointerToRawData;\r\n            var rb = a.info.pointerToRawData;\r\n            if (ra !== rb) {\r\n                return ra - rb;\r\n            }\r\n            var va = a.info.virtualAddress;\r\n            var vb = b.info.virtualAddress;\r\n            if (va === vb) {\r\n                return a.info.virtualSize - b.info.virtualSize;\r\n            }\r\n            return va - vb;\r\n        });\r\n    }\r\n    /**\r\n     * Creates an NtExecutable instance with an 'empty' executable binary.\r\n     * @param is32Bit set true if the binary is for 32-bit (default: false)\r\n     * @param isDLL set true if the binary is DLL (default: true)\r\n     * @return NtExecutable instance\r\n     */\r\n    NtExecutable.createEmpty = function (is32Bit, isDLL) {\r\n        if (is32Bit === void 0) { is32Bit = false; }\r\n        if (isDLL === void 0) { isDLL = true; }\r\n        return this.from(makeEmptyNtExecutableBinary(is32Bit, isDLL));\r\n    };\r\n    /**\r\n     * Parse the binary and create NtExecutable instance.\r\n     * An error will be thrown if the binary data is invalid\r\n     * @param bin binary data\r\n     * @param options additional option for parsing\r\n     * @return NtExecutable instance\r\n     */\r\n    NtExecutable.from = function (bin, options) {\r\n        var dh = ImageDosHeader.from(bin);\r\n        var nh = ImageNtHeaders.from(bin, dh.newHeaderAddress);\r\n        if (!dh.isValid() || !nh.isValid()) {\r\n            throw new TypeError('Invalid binary format');\r\n        }\r\n        if (nh.fileHeader.numberOfSymbols > 0) {\r\n            throw new Error('Binary with symbols is not supported now');\r\n        }\r\n        var fileAlignment = nh.optionalHeader.fileAlignment;\r\n        var securityEntry = nh.optionalHeaderDataDirectory.get(ImageDirectoryEntry.Certificate);\r\n        if (securityEntry.size > 0) {\r\n            // Signed executables should be parsed only when `ignoreCert` is true\r\n            if (!(options === null || options === void 0 ? void 0 : options.ignoreCert)) {\r\n                throw new Error('Parsing signed executable binary is not allowed by default.');\r\n            }\r\n        }\r\n        var secOff = dh.newHeaderAddress + nh.getSectionHeaderOffset();\r\n        var secCount = nh.fileHeader.numberOfSections;\r\n        var sections = [];\r\n        var tempSectionHeaderBinary = allocatePartialBinary(bin, secOff, secCount * ImageSectionHeaderArray.itemSize);\r\n        var secArray = ImageSectionHeaderArray.from(tempSectionHeaderBinary, secCount, 0);\r\n        var lastOffset = roundUp(secOff + secCount * ImageSectionHeaderArray.itemSize, fileAlignment);\r\n        // console.log(`from data size 0x${bin.byteLength.toString(16)}:`);\r\n        secArray.forEach(function (info) {\r\n            if (!info.pointerToRawData || !info.sizeOfRawData) {\r\n                info.pointerToRawData = 0;\r\n                info.sizeOfRawData = 0;\r\n                sections.push({\r\n                    info: info,\r\n                    data: null,\r\n                });\r\n            }\r\n            else {\r\n                // console.log(`  section ${info.name}: 0x${info.pointerToRawData.toString(16)}, size = 0x${info.sizeOfRawData.toString(16)}`);\r\n                var secBin = allocatePartialBinary(bin, info.pointerToRawData, info.sizeOfRawData);\r\n                sections.push({\r\n                    info: info,\r\n                    data: secBin,\r\n                });\r\n                var secEndOffset = roundUp(info.pointerToRawData + info.sizeOfRawData, fileAlignment);\r\n                if (secEndOffset > lastOffset) {\r\n                    lastOffset = secEndOffset;\r\n                }\r\n            }\r\n        });\r\n        // the size of DOS and NT headers is equal to section offset\r\n        var headers = allocatePartialBinary(bin, 0, secOff);\r\n        // extra data\r\n        var exData = null;\r\n        var lastExDataOffset = bin.byteLength;\r\n        // It may contain that both extra data and certificate data are available.\r\n        // In this case the extra data is followed by the certificate data.\r\n        if (securityEntry.size > 0) {\r\n            lastExDataOffset = securityEntry.virtualAddress;\r\n        }\r\n        if (lastOffset < lastExDataOffset) {\r\n            exData = allocatePartialBinary(bin, lastOffset, lastExDataOffset - lastOffset);\r\n        }\r\n        return new NtExecutable(headers, sections, exData);\r\n    };\r\n    /**\r\n     * Returns whether the executable is for 32-bit architecture\r\n     */\r\n    NtExecutable.prototype.is32bit = function () {\r\n        return this._nh.is32bit();\r\n    };\r\n    NtExecutable.prototype.getTotalHeaderSize = function () {\r\n        return this._headers.byteLength;\r\n    };\r\n    Object.defineProperty(NtExecutable.prototype, \"dosHeader\", {\r\n        get: function () {\r\n            return this._dh;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(NtExecutable.prototype, \"newHeader\", {\r\n        get: function () {\r\n            return this._nh;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    NtExecutable.prototype.getRawHeader = function () {\r\n        return this._headers;\r\n    };\r\n    NtExecutable.prototype.getImageBase = function () {\r\n        return this._nh.optionalHeader.imageBase;\r\n    };\r\n    NtExecutable.prototype.getFileAlignment = function () {\r\n        return this._nh.optionalHeader.fileAlignment;\r\n    };\r\n    NtExecutable.prototype.getSectionAlignment = function () {\r\n        return this._nh.optionalHeader.sectionAlignment;\r\n    };\r\n    /**\r\n     * Return all sections. The returned array is sorted by raw address.\r\n     */\r\n    NtExecutable.prototype.getAllSections = function () {\r\n        return this._sections;\r\n    };\r\n    /**\r\n     * Return the section data from ImageDirectoryEntry enum value.\r\n     * @note\r\n     * The returned instance is equal to the value in {@link getAllSections}'s return value.\r\n     */\r\n    NtExecutable.prototype.getSectionByEntry = function (entry) {\r\n        var dd = this._dda.get(entry);\r\n        var r = this._sections\r\n            .filter(function (sec) {\r\n            var vaEnd = sec.info.virtualAddress + sec.info.virtualSize;\r\n            return (dd.virtualAddress >= sec.info.virtualAddress &&\r\n                dd.virtualAddress < vaEnd);\r\n        })\r\n            .shift();\r\n        return r !== undefined ? r : null;\r\n    };\r\n    /**\r\n     * Set the section data from ImageDirectoryEntry enum value.\r\n     * If entry is found, then replaces the secion data. If not found, then adds the section data.\r\n     *\r\n     * NOTE: 'virtualAddress' and 'pointerToRawData' of section object is ignored\r\n     * and calculated automatically. 'virtualSize' and 'sizeOfRawData' are used, but\r\n     * if the 'section.data.byteLength' is larger than 'sizeOfRawData', then\r\n     * these members are replaced.\r\n     *\r\n     * @param entry ImageDirectoryEntry enum value for the section\r\n     * @param section the section data, or null to remove the section\r\n     */\r\n    NtExecutable.prototype.setSectionByEntry = function (entry, section) {\r\n        var sec = section\r\n            ? { data: section.data, info: section.info }\r\n            : null;\r\n        var dd = this._dda.get(entry);\r\n        var hasEntry = dd.size > 0;\r\n        if (!sec) {\r\n            if (!hasEntry) {\r\n                // no need to replace\r\n            }\r\n            else {\r\n                // clear entry\r\n                this._dda.set(entry, { size: 0, virtualAddress: 0 });\r\n                var len = this._sections.length;\r\n                for (var i = 0; i < len; ++i) {\r\n                    var sec_1 = this._sections[i];\r\n                    var vaStart = sec_1.info.virtualAddress;\r\n                    var vaLast = vaStart + sec_1.info.virtualSize;\r\n                    if (dd.virtualAddress >= vaStart &&\r\n                        dd.virtualAddress < vaLast) {\r\n                        this._sections.splice(i, 1);\r\n                        // section count changed\r\n                        this._nh.fileHeader.numberOfSections =\r\n                            this._sections.length;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var rawSize = !sec.data ? 0 : sec.data.byteLength;\r\n            var fileAlign = this._nh.optionalHeader.fileAlignment;\r\n            var secAlign = this._nh.optionalHeader.sectionAlignment;\r\n            var alignedFileSize = !sec.data ? 0 : roundUp(rawSize, fileAlign);\r\n            var alignedSecSize = !sec.data\r\n                ? 0\r\n                : roundUp(sec.info.virtualSize, secAlign);\r\n            if (sec.info.sizeOfRawData < alignedFileSize) {\r\n                sec.info.sizeOfRawData = alignedFileSize;\r\n            }\r\n            else {\r\n                alignedFileSize = sec.info.sizeOfRawData;\r\n            }\r\n            if (!hasEntry) {\r\n                var virtAddr_1 = 0;\r\n                var rawAddr_1 = roundUp(this._headers.byteLength, fileAlign);\r\n                // get largest addresses\r\n                this._sections.forEach(function (secExist) {\r\n                    if (secExist.info.pointerToRawData) {\r\n                        if (rawAddr_1 <= secExist.info.pointerToRawData) {\r\n                            rawAddr_1 =\r\n                                secExist.info.pointerToRawData +\r\n                                    secExist.info.sizeOfRawData;\r\n                        }\r\n                    }\r\n                    if (virtAddr_1 <= secExist.info.virtualAddress) {\r\n                        virtAddr_1 =\r\n                            secExist.info.virtualAddress +\r\n                                secExist.info.virtualSize;\r\n                    }\r\n                });\r\n                if (!alignedFileSize) {\r\n                    rawAddr_1 = 0;\r\n                }\r\n                if (!virtAddr_1) {\r\n                    virtAddr_1 = this.newHeader.optionalHeader.baseOfCode;\r\n                }\r\n                virtAddr_1 = roundUp(virtAddr_1, secAlign);\r\n                sec.info.pointerToRawData = rawAddr_1;\r\n                sec.info.virtualAddress = virtAddr_1;\r\n                // add entry\r\n                this._dda.set(entry, {\r\n                    size: rawSize,\r\n                    virtualAddress: virtAddr_1,\r\n                });\r\n                this._sections.push(sec);\r\n                // section count changed\r\n                this._nh.fileHeader.numberOfSections = this._sections.length;\r\n                // change image size\r\n                this._nh.optionalHeader.sizeOfImage = roundUp(virtAddr_1 + alignedSecSize, this._nh.optionalHeader.sectionAlignment);\r\n            }\r\n            else {\r\n                // replace entry\r\n                this.replaceSectionImpl(dd.virtualAddress, sec.info, sec.data);\r\n            }\r\n        }\r\n    };\r\n    /**\r\n     * Returns the extra data in the executable, or `null` if nothing.\r\n     * You can rewrite the returned buffer without using `setExtraData` if\r\n     * the size of the new data is equal to the old data.\r\n     */\r\n    NtExecutable.prototype.getExtraData = function () {\r\n        return this._ex;\r\n    };\r\n    /**\r\n     * Specifies the new extra data in the executable.\r\n     * The specified buffer will be cloned and you can release it after calling this method.\r\n     * @param bin buffer containing the new data\r\n     * @note\r\n     * The extra data will not be aligned by `NtExecutable`.\r\n     */\r\n    NtExecutable.prototype.setExtraData = function (bin) {\r\n        if (bin === null) {\r\n            this._ex = null;\r\n        }\r\n        else {\r\n            this._ex = cloneToArrayBuffer(bin);\r\n        }\r\n    };\r\n    /**\r\n     * Generates the executable binary data.\r\n     */\r\n    NtExecutable.prototype.generate = function (paddingSize) {\r\n        // calculate binary size\r\n        var dh = this._dh;\r\n        var nh = this._nh;\r\n        var secOff = dh.newHeaderAddress + nh.getSectionHeaderOffset();\r\n        var size = secOff;\r\n        size += this._sections.length * ImageSectionHeaderArray.itemSize;\r\n        var align = nh.optionalHeader.fileAlignment;\r\n        size = roundUp(size, align);\r\n        this._sections.forEach(function (sec) {\r\n            if (!sec.info.pointerToRawData) {\r\n                return;\r\n            }\r\n            var lastOff = sec.info.pointerToRawData + sec.info.sizeOfRawData;\r\n            if (size < lastOff) {\r\n                size = lastOff;\r\n                size = roundUp(size, align);\r\n            }\r\n        });\r\n        var lastPosition = size;\r\n        if (this._ex !== null) {\r\n            size += this._ex.byteLength;\r\n        }\r\n        if (typeof paddingSize === 'number') {\r\n            size += paddingSize;\r\n        }\r\n        // make buffer\r\n        var bin = new ArrayBuffer(size);\r\n        var u8bin = new Uint8Array(bin);\r\n        u8bin.set(new Uint8Array(this._headers, 0, secOff));\r\n        // reset Security section offset (eliminate it)\r\n        ImageDataDirectoryArray.from(bin, dh.newHeaderAddress + nh.getDataDirectoryOffset()).set(ImageDirectoryEntry.Certificate, {\r\n            size: 0,\r\n            virtualAddress: 0,\r\n        });\r\n        var secArray = ImageSectionHeaderArray.from(bin, this._sections.length, secOff);\r\n        this._sections.forEach(function (sec, i) {\r\n            if (!sec.data) {\r\n                sec.info.pointerToRawData = 0;\r\n                sec.info.sizeOfRawData = 0;\r\n            }\r\n            secArray.set(i, sec.info);\r\n            if (!sec.data || !sec.info.pointerToRawData) {\r\n                return;\r\n            }\r\n            u8bin.set(new Uint8Array(sec.data), sec.info.pointerToRawData);\r\n        });\r\n        if (this._ex !== null) {\r\n            u8bin.set(new Uint8Array(this._ex), lastPosition);\r\n        }\r\n        // re-calc checksum\r\n        if (nh.optionalHeader.checkSum !== 0) {\r\n            calculateCheckSumForPE(bin, true);\r\n        }\r\n        return bin;\r\n    };\r\n    NtExecutable.prototype.rearrangeSections = function (rawAddressStart, rawDiff, virtualAddressStart, virtualDiff) {\r\n        if (!rawDiff && !virtualDiff) {\r\n            return;\r\n        }\r\n        var nh = this._nh;\r\n        var secAlign = nh.optionalHeader.sectionAlignment;\r\n        var dirs = this._dda;\r\n        var len = this._sections.length;\r\n        var lastVirtAddress = 0;\r\n        for (var i = 0; i < len; ++i) {\r\n            var sec = this._sections[i];\r\n            var virtAddr = sec.info.virtualAddress;\r\n            if (virtualDiff && virtAddr >= virtualAddressStart) {\r\n                var iDir = dirs.findIndexByVirtualAddress(virtAddr);\r\n                virtAddr += virtualDiff;\r\n                if (iDir !== null) {\r\n                    dirs.set(iDir, {\r\n                        virtualAddress: virtAddr,\r\n                        size: sec.info.virtualSize,\r\n                    });\r\n                }\r\n                sec.info.virtualAddress = virtAddr;\r\n            }\r\n            var fileAddr = sec.info.pointerToRawData;\r\n            if (rawDiff && fileAddr >= rawAddressStart) {\r\n                sec.info.pointerToRawData = fileAddr + rawDiff;\r\n            }\r\n            lastVirtAddress = roundUp(sec.info.virtualAddress + sec.info.virtualSize, secAlign);\r\n        }\r\n        // fix image size from last virtual address\r\n        nh.optionalHeader.sizeOfImage = lastVirtAddress;\r\n    };\r\n    // NOTE: info.virtualSize must be valid\r\n    NtExecutable.prototype.replaceSectionImpl = function (virtualAddress, info, data) {\r\n        var len = this._sections.length;\r\n        for (var i = 0; i < len; ++i) {\r\n            var s = this._sections[i];\r\n            // console.log(`replaceSectionImpl: ${virtualAddress} <--> ${s.info.virtualAddress}`);\r\n            if (s.info.virtualAddress === virtualAddress) {\r\n                // console.log(`  found`);\r\n                var secAlign = this._nh.optionalHeader.sectionAlignment;\r\n                var fileAddr = s.info.pointerToRawData;\r\n                var oldFileAddr = fileAddr + s.info.sizeOfRawData;\r\n                var oldVirtAddr = virtualAddress + roundUp(s.info.virtualSize, secAlign);\r\n                s.info = cloneObject(info);\r\n                s.info.virtualAddress = virtualAddress;\r\n                s.info.pointerToRawData = fileAddr;\r\n                s.data = data;\r\n                // shift addresses\r\n                var newFileAddr = fileAddr + info.sizeOfRawData;\r\n                var newVirtAddr = virtualAddress + roundUp(info.virtualSize, secAlign);\r\n                this.rearrangeSections(oldFileAddr, newFileAddr - oldFileAddr, oldVirtAddr, newVirtAddr - oldVirtAddr);\r\n                // BLOCK: rewrite DataDirectory entry for specified virtualAddress\r\n                {\r\n                    var dirs = this._dda;\r\n                    var iDir = dirs.findIndexByVirtualAddress(virtualAddress);\r\n                    if (iDir !== null) {\r\n                        dirs.set(iDir, {\r\n                            virtualAddress: virtualAddress,\r\n                            size: info.virtualSize,\r\n                        });\r\n                    }\r\n                }\r\n                break;\r\n            }\r\n        }\r\n    };\r\n    return NtExecutable;\r\n}());\r\nexport default NtExecutable;\r\n","import ImageDirectoryEntry from './format/ImageDirectoryEntry.js';\r\nimport { binaryToString, cloneObject, copyBuffer, roundUp, stringToBinary, } from './util/functions.js';\r\nfunction removeDuplicates(a) {\r\n    return a.reduce(function (p, c) {\r\n        return p.indexOf(c) >= 0 ? p : p.concat(c);\r\n    }, []);\r\n}\r\nfunction readString(view, offset) {\r\n    var length = view.getUint16(offset, true);\r\n    var r = '';\r\n    offset += 2;\r\n    for (var i = 0; i < length; ++i) {\r\n        r += String.fromCharCode(view.getUint16(offset, true));\r\n        offset += 2;\r\n    }\r\n    return r;\r\n}\r\nfunction readLanguageTable(view, typeEntry, name, languageTable, cb) {\r\n    var off = languageTable;\r\n    var nameEntry = {\r\n        name: name,\r\n        languageTable: languageTable,\r\n        characteristics: view.getUint32(off, true),\r\n        dateTime: view.getUint32(off + 4, true),\r\n        majorVersion: view.getUint16(off + 8, true),\r\n        minorVersion: view.getUint16(off + 10, true),\r\n    };\r\n    var nameCount = view.getUint16(off + 12, true);\r\n    var idCount = view.getUint16(off + 14, true);\r\n    off += 16;\r\n    for (var i = 0; i < nameCount; ++i) {\r\n        var nameOffset = view.getUint32(off, true) & 0x7fffffff;\r\n        var dataOffset = view.getUint32(off + 4, true);\r\n        // ignore if the offset refers to the next table\r\n        if ((dataOffset & 0x80000000) !== 0) {\r\n            off += 8;\r\n            continue;\r\n        }\r\n        var name_1 = readString(view, nameOffset);\r\n        cb(typeEntry, nameEntry, { lang: name_1, dataOffset: dataOffset });\r\n        off += 8;\r\n    }\r\n    for (var i = 0; i < idCount; ++i) {\r\n        var id = view.getUint32(off, true) & 0x7fffffff;\r\n        var dataOffset = view.getUint32(off + 4, true);\r\n        // ignore if the offset refers to the next table\r\n        if ((dataOffset & 0x80000000) !== 0) {\r\n            off += 8;\r\n            continue;\r\n        }\r\n        cb(typeEntry, nameEntry, { lang: id, dataOffset: dataOffset });\r\n        off += 8;\r\n    }\r\n}\r\nfunction readNameTable(view, type, nameTable, cb) {\r\n    var off = nameTable;\r\n    var typeEntry = {\r\n        type: type,\r\n        nameTable: nameTable,\r\n        characteristics: view.getUint32(off, true),\r\n        dateTime: view.getUint32(off + 4, true),\r\n        majorVersion: view.getUint16(off + 8, true),\r\n        minorVersion: view.getUint16(off + 10, true),\r\n    };\r\n    var nameCount = view.getUint16(off + 12, true);\r\n    var idCount = view.getUint16(off + 14, true);\r\n    off += 16;\r\n    for (var i = 0; i < nameCount; ++i) {\r\n        var nameOffset = view.getUint32(off, true) & 0x7fffffff;\r\n        var nextTable = view.getUint32(off + 4, true);\r\n        // ignore if no next table is available\r\n        if (!(nextTable & 0x80000000)) {\r\n            off += 8;\r\n            continue;\r\n        }\r\n        nextTable &= 0x7fffffff;\r\n        var name_2 = readString(view, nameOffset);\r\n        readLanguageTable(view, typeEntry, name_2, nextTable, cb);\r\n        off += 8;\r\n    }\r\n    for (var i = 0; i < idCount; ++i) {\r\n        var id = view.getUint32(off, true) & 0x7fffffff;\r\n        var nextTable = view.getUint32(off + 4, true);\r\n        // ignore if no next table is available\r\n        if (!(nextTable & 0x80000000)) {\r\n            off += 8;\r\n            continue;\r\n        }\r\n        nextTable &= 0x7fffffff;\r\n        readLanguageTable(view, typeEntry, id, nextTable, cb);\r\n        off += 8;\r\n    }\r\n}\r\nfunction divideEntriesImplByID(r, names, entries) {\r\n    var entriesByString = {};\r\n    var entriesByNumber = {};\r\n    entries.forEach(function (e) {\r\n        if (typeof e.lang === 'string') {\r\n            entriesByString[e.lang] = e;\r\n            names.push(e.lang);\r\n        }\r\n        else {\r\n            entriesByNumber[e.lang] = e;\r\n        }\r\n    });\r\n    var strKeys = Object.keys(entriesByString);\r\n    strKeys.sort().forEach(function (type) {\r\n        r.s.push(entriesByString[type]);\r\n    });\r\n    var numKeys = Object.keys(entriesByNumber);\r\n    numKeys\r\n        .map(function (k) { return Number(k); })\r\n        .sort(function (a, b) { return a - b; })\r\n        .forEach(function (type) {\r\n        r.n.push(entriesByNumber[type]);\r\n    });\r\n    return 16 + 8 * (strKeys.length + numKeys.length);\r\n}\r\nfunction divideEntriesImplByName(r, names, entries) {\r\n    var entriesByString = {};\r\n    var entriesByNumber = {};\r\n    entries.forEach(function (e) {\r\n        var _a, _b;\r\n        if (typeof e.id === 'string') {\r\n            var a = (_a = entriesByString[e.id]) !== null && _a !== void 0 ? _a : (entriesByString[e.id] = []);\r\n            names.push(e.id);\r\n            a.push(e);\r\n        }\r\n        else {\r\n            var a = (_b = entriesByNumber[e.id]) !== null && _b !== void 0 ? _b : (entriesByNumber[e.id] = []);\r\n            a.push(e);\r\n        }\r\n    });\r\n    var sSum = Object.keys(entriesByString)\r\n        .sort()\r\n        .map(function (id) {\r\n        var o = {\r\n            id: id,\r\n            s: [],\r\n            n: [],\r\n        };\r\n        r.s.push(o);\r\n        return divideEntriesImplByID(o, names, entriesByString[id]);\r\n    })\r\n        .reduce(function (p, c) { return p + 8 + c; }, 0);\r\n    var nSum = Object.keys(entriesByNumber)\r\n        .map(function (k) { return Number(k); })\r\n        .sort(function (a, b) { return a - b; })\r\n        .map(function (id) {\r\n        var o = {\r\n            id: id,\r\n            s: [],\r\n            n: [],\r\n        };\r\n        r.n.push(o);\r\n        return divideEntriesImplByID(o, names, entriesByNumber[id]);\r\n    })\r\n        .reduce(function (p, c) { return p + 8 + c; }, 0);\r\n    return 16 + sSum + nSum;\r\n}\r\nfunction divideEntriesImplByType(r, names, entries) {\r\n    var entriesByString = {};\r\n    var entriesByNumber = {};\r\n    entries.forEach(function (e) {\r\n        var _a, _b;\r\n        if (typeof e.type === 'string') {\r\n            var a = (_a = entriesByString[e.type]) !== null && _a !== void 0 ? _a : (entriesByString[e.type] = []);\r\n            names.push(e.type);\r\n            a.push(e);\r\n        }\r\n        else {\r\n            var a = (_b = entriesByNumber[e.type]) !== null && _b !== void 0 ? _b : (entriesByNumber[e.type] = []);\r\n            a.push(e);\r\n        }\r\n    });\r\n    var sSum = Object.keys(entriesByString)\r\n        .sort()\r\n        .map(function (type) {\r\n        var o = { type: type, s: [], n: [] };\r\n        r.s.push(o);\r\n        return divideEntriesImplByName(o, names, entriesByString[type]);\r\n    })\r\n        .reduce(function (p, c) { return p + 8 + c; }, 0);\r\n    var nSum = Object.keys(entriesByNumber)\r\n        .map(function (k) { return Number(k); })\r\n        .sort(function (a, b) { return a - b; })\r\n        .map(function (type) {\r\n        var o = { type: type, s: [], n: [] };\r\n        r.n.push(o);\r\n        return divideEntriesImplByName(o, names, entriesByNumber[type]);\r\n    })\r\n        .reduce(function (p, c) { return p + 8 + c; }, 0);\r\n    return 16 + sSum + nSum;\r\n}\r\nfunction calculateStringLengthForWrite(text) {\r\n    var length = text.length;\r\n    // limit to 65535 because the 'length' field is uint16\r\n    return length > 65535 ? 65535 : length;\r\n}\r\nfunction getStringOffset(target, strings) {\r\n    var l = strings.length;\r\n    for (var i = 0; i < l; ++i) {\r\n        var s = strings[i];\r\n        if (s.text === target) {\r\n            return s.offset;\r\n        }\r\n    }\r\n    throw new Error('Unexpected');\r\n}\r\n/** (returns offset just after the written text) */\r\nfunction writeString(view, offset, text) {\r\n    var length = calculateStringLengthForWrite(text);\r\n    view.setUint16(offset, length, true);\r\n    offset += 2;\r\n    for (var i = 0; i < length; ++i) {\r\n        view.setUint16(offset, text.charCodeAt(i), true);\r\n        offset += 2;\r\n    }\r\n    return offset;\r\n}\r\nfunction writeLanguageTable(view, offset, strings, data) {\r\n    // characteristics\r\n    view.setUint32(offset, 0, true);\r\n    // timestamp\r\n    view.setUint32(offset + 4, 0, true);\r\n    // major version / minor version\r\n    view.setUint32(offset + 8, 0, true);\r\n    // name entries\r\n    view.setUint16(offset + 12, data.s.length, true);\r\n    // id entries\r\n    view.setUint16(offset + 14, data.n.length, true);\r\n    offset += 16;\r\n    // name entries (not in specification)\r\n    data.s.forEach(function (e) {\r\n        var strOff = getStringOffset(e.lang, strings);\r\n        view.setUint32(offset, strOff, true);\r\n        view.setUint32(offset + 4, e.offset, true);\r\n        offset += 8;\r\n    });\r\n    // id entries\r\n    data.n.forEach(function (e) {\r\n        view.setUint32(offset, e.lang, true);\r\n        view.setUint32(offset + 4, e.offset, true);\r\n        offset += 8;\r\n    });\r\n    return offset;\r\n}\r\nfunction writeNameTable(view, offset, leafOffset, strings, data) {\r\n    // characteristics\r\n    view.setUint32(offset, 0, true);\r\n    // timestamp\r\n    view.setUint32(offset + 4, 0, true);\r\n    // major version / minor version\r\n    view.setUint32(offset + 8, 0, true);\r\n    // name entries\r\n    view.setUint16(offset + 12, data.s.length, true);\r\n    // id entries\r\n    view.setUint16(offset + 14, data.n.length, true);\r\n    offset += 16;\r\n    data.s.forEach(function (e) {\r\n        e.offset = leafOffset;\r\n        leafOffset = writeLanguageTable(view, leafOffset, strings, e);\r\n    });\r\n    data.n.forEach(function (e) {\r\n        e.offset = leafOffset;\r\n        leafOffset = writeLanguageTable(view, leafOffset, strings, e);\r\n    });\r\n    data.s.forEach(function (e) {\r\n        var strOff = getStringOffset(e.id, strings);\r\n        view.setUint32(offset, strOff + 0x80000000, true);\r\n        view.setUint32(offset + 4, e.offset + 0x80000000, true);\r\n        offset += 8;\r\n    });\r\n    data.n.forEach(function (e) {\r\n        view.setUint32(offset, e.id, true);\r\n        view.setUint32(offset + 4, e.offset + 0x80000000, true);\r\n        offset += 8;\r\n    });\r\n    return leafOffset;\r\n}\r\nfunction writeTypeTable(view, offset, strings, data) {\r\n    // characteristics\r\n    view.setUint32(offset, 0, true);\r\n    // timestamp\r\n    view.setUint32(offset + 4, 0, true);\r\n    // major version / minor version\r\n    view.setUint32(offset + 8, 0, true);\r\n    // name entries\r\n    view.setUint16(offset + 12, data.s.length, true);\r\n    // id entries\r\n    view.setUint16(offset + 14, data.n.length, true);\r\n    offset += 16;\r\n    var nextTableOffset = offset + 8 * (data.s.length + data.n.length);\r\n    data.s.forEach(function (e) {\r\n        e.offset = nextTableOffset;\r\n        nextTableOffset += 16 + 8 * (e.s.length + e.n.length);\r\n    });\r\n    data.n.forEach(function (e) {\r\n        e.offset = nextTableOffset;\r\n        nextTableOffset += 16 + 8 * (e.s.length + e.n.length);\r\n    });\r\n    data.s.forEach(function (e) {\r\n        var strOff = getStringOffset(e.type, strings);\r\n        view.setUint32(offset, strOff + 0x80000000, true);\r\n        view.setUint32(offset + 4, e.offset + 0x80000000, true);\r\n        offset += 8;\r\n        nextTableOffset = writeNameTable(view, e.offset, nextTableOffset, strings, e);\r\n    });\r\n    data.n.forEach(function (e) {\r\n        view.setUint32(offset, e.type, true);\r\n        view.setUint32(offset + 4, e.offset + 0x80000000, true);\r\n        offset += 8;\r\n        nextTableOffset = writeNameTable(view, e.offset, nextTableOffset, strings, e);\r\n    });\r\n    return nextTableOffset;\r\n}\r\n////////////////////////////////////////////////////////////////////////////////\r\n/** Manages resource data for NtExecutable */\r\nvar NtExecutableResource = /** @class */ (function () {\r\n    function NtExecutableResource() {\r\n        /** The timestamp for resource */\r\n        this.dateTime = 0;\r\n        /** The major version data for resource */\r\n        this.majorVersion = 0;\r\n        /** The minor version data for resource */\r\n        this.minorVersion = 0;\r\n        /** Resource entries */\r\n        this.entries = [];\r\n        /**\r\n         * The section data header of resource data (used by outputResource method).\r\n         * This instance will be null if the base executable does not contain resource data.\r\n         * You can override this field before calling outputResource method.\r\n         * (Note that the addresses and sizes are ignored for output)\r\n         */\r\n        this.sectionDataHeader = null;\r\n        this.originalSize = 0;\r\n    }\r\n    NtExecutableResource.prototype.parse = function (section, ignoreUnparsableData) {\r\n        if (!section.data) {\r\n            return;\r\n        }\r\n        var view = new DataView(section.data);\r\n        // --- First: Resource Directory Table ---\r\n        // (off: 0 -- Characteristics (uint32))\r\n        this.dateTime = view.getUint32(4, true);\r\n        this.majorVersion = view.getUint16(8, true);\r\n        this.minorVersion = view.getUint16(10, true);\r\n        var nameCount = view.getUint16(12, true);\r\n        var idCount = view.getUint16(14, true);\r\n        var off = 16;\r\n        var res = [];\r\n        var cb = function (t, n, l) {\r\n            var off = view.getUint32(l.dataOffset, true) -\r\n                section.info.virtualAddress;\r\n            var size = view.getUint32(l.dataOffset + 4, true);\r\n            var cp = view.getUint32(l.dataOffset + 8, true);\r\n            if (off >= 0) {\r\n                var bin = new Uint8Array(size);\r\n                bin.set(new Uint8Array(section.data, off, size));\r\n                res.push({\r\n                    type: t.type,\r\n                    id: n.name,\r\n                    lang: l.lang,\r\n                    codepage: cp,\r\n                    bin: bin.buffer,\r\n                });\r\n            }\r\n            else {\r\n                if (!ignoreUnparsableData) {\r\n                    throw new Error('Cannot parse resource directory entry; RVA seems to be invalid.');\r\n                }\r\n                res.push({\r\n                    type: t.type,\r\n                    id: n.name,\r\n                    lang: l.lang,\r\n                    codepage: cp,\r\n                    bin: new ArrayBuffer(0),\r\n                    rva: l.dataOffset,\r\n                });\r\n            }\r\n        };\r\n        for (var i = 0; i < nameCount; ++i) {\r\n            var nameOffset = view.getUint32(off, true) & 0x7fffffff;\r\n            var nextTable = view.getUint32(off + 4, true);\r\n            // ignore if no next table is available\r\n            if (!(nextTable & 0x80000000)) {\r\n                off += 8;\r\n                continue;\r\n            }\r\n            nextTable &= 0x7fffffff;\r\n            var name_3 = readString(view, nameOffset);\r\n            readNameTable(view, name_3, nextTable, cb);\r\n            off += 8;\r\n        }\r\n        for (var i = 0; i < idCount; ++i) {\r\n            var typeId = view.getUint32(off, true) & 0x7fffffff;\r\n            var nextTable = view.getUint32(off + 4, true);\r\n            // ignore if no next table is available\r\n            if (!(nextTable & 0x80000000)) {\r\n                off += 8;\r\n                continue;\r\n            }\r\n            nextTable &= 0x7fffffff;\r\n            readNameTable(view, typeId, nextTable, cb);\r\n            off += 8;\r\n        }\r\n        this.entries = res;\r\n        this.originalSize = section.data.byteLength;\r\n    };\r\n    /**\r\n     * Parses resource data for `NtExecutable`.\r\n     * This function returns valid instance even if\r\n     * the executable does not have resource data.\r\n     * @param exe `NtExecutable` instance\r\n     * @param ignoreUnparsableData (default: false) specify true if skipping 'unparsable' (e.g. unusual format) data.\r\n     *   When true, the resource data may break on write operation.\r\n     */\r\n    NtExecutableResource.from = function (exe, ignoreUnparsableData) {\r\n        if (ignoreUnparsableData === void 0) { ignoreUnparsableData = false; }\r\n        var secs = []\r\n            .concat(exe.getAllSections())\r\n            .sort(function (a, b) { return a.info.virtualAddress - b.info.virtualAddress; });\r\n        var entry = exe.getSectionByEntry(ImageDirectoryEntry.Resource);\r\n        // check if the section order is supported\r\n        // (not supported if any other sections except 'relocation' is available,\r\n        // because the recalculation of virtual address is not simple)\r\n        if (entry) {\r\n            var reloc = exe.getSectionByEntry(ImageDirectoryEntry.BaseRelocation);\r\n            for (var i = 0; i < secs.length; ++i) {\r\n                var s = secs[i];\r\n                if (s === entry) {\r\n                    for (var j = i + 1; j < secs.length; ++j) {\r\n                        if (!reloc || secs[j] !== reloc) {\r\n                            throw new Error('After Resource section, sections except for relocation are not supported');\r\n                        }\r\n                    }\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        var r = new NtExecutableResource();\r\n        r.sectionDataHeader = entry ? cloneObject(entry.info) : null;\r\n        if (entry) {\r\n            r.parse(entry, ignoreUnparsableData);\r\n        }\r\n        return r;\r\n    };\r\n    /**\r\n     * Add or replace the resource entry.\r\n     * This method replaces the entry only if there is an entry with `type`, `id` and `lang` equal.\r\n     */\r\n    NtExecutableResource.prototype.replaceResourceEntry = function (entry) {\r\n        for (var len = this.entries.length, i = 0; i < len; ++i) {\r\n            var e = this.entries[i];\r\n            if (e.type === entry.type &&\r\n                e.id === entry.id &&\r\n                e.lang === entry.lang) {\r\n                this.entries[i] = entry;\r\n                return;\r\n            }\r\n        }\r\n        this.entries.push(entry);\r\n    };\r\n    /**\r\n     * Returns all resource entries, which has specified type and id, as UTF-8 string data.\r\n     * @param type Resource type\r\n     * @param id Resource id\r\n     * @returns an array of lang and value pair (tuple)\r\n     */\r\n    NtExecutableResource.prototype.getResourceEntriesAsString = function (type, id) {\r\n        return this.entries\r\n            .filter(function (entry) { return entry.type === type && entry.id === id; })\r\n            .map(function (entry) { return [entry.lang, binaryToString(entry.bin)]; });\r\n    };\r\n    /**\r\n     * Add or replace the resource entry with UTF-8 string data.\r\n     * This method is a wrapper of {@link NtExecutableResource.replaceResourceEntry}.\r\n     */\r\n    NtExecutableResource.prototype.replaceResourceEntryFromString = function (type, id, lang, value) {\r\n        var entry = {\r\n            type: type,\r\n            id: id,\r\n            lang: lang,\r\n            codepage: 1200,\r\n            bin: stringToBinary(value),\r\n        };\r\n        this.replaceResourceEntry(entry);\r\n    };\r\n    /**\r\n     * Removes resource entries which has specified type and id.\r\n     */\r\n    NtExecutableResource.prototype.removeResourceEntry = function (type, id, lang) {\r\n        this.entries = this.entries.filter(function (entry) {\r\n            return !(entry.type === type &&\r\n                entry.id === id &&\r\n                (typeof lang === 'undefined' || entry.lang === lang));\r\n        });\r\n    };\r\n    /**\r\n     * Generates resource data binary for NtExecutable (not for .res file)\r\n     * @param virtualAddress The virtual address for the section\r\n     * @param alignment File alignment value of executable\r\n     * @param noGrow Set true to disallow growing resource section (throw errors if data exceeds)\r\n     * @param allowShrink Set true to allow shrinking resource section (if the data size is less than original)\r\n     */\r\n    NtExecutableResource.prototype.generateResourceData = function (virtualAddress, alignment, noGrow, allowShrink) {\r\n        if (noGrow === void 0) { noGrow = false; }\r\n        if (allowShrink === void 0) { allowShrink = false; }\r\n        // estimate data size and divide to output table\r\n        var r = {\r\n            s: [],\r\n            n: [],\r\n        };\r\n        var strings = [];\r\n        var size = divideEntriesImplByType(r, strings, this.entries);\r\n        strings = removeDuplicates(strings);\r\n        var stringsOffset = size;\r\n        size += strings.reduce(function (prev, cur) {\r\n            return prev + 2 + calculateStringLengthForWrite(cur) * 2;\r\n        }, 0);\r\n        size = roundUp(size, 8);\r\n        var descOffset = size;\r\n        size = this.entries.reduce(function (p, e) {\r\n            e.offset = p;\r\n            return p + 16;\r\n        }, descOffset);\r\n        var dataOffset = size;\r\n        size = this.entries.reduce(function (p, e) {\r\n            return roundUp(p, 8) + e.bin.byteLength;\r\n        }, dataOffset);\r\n        var alignedSize = roundUp(size, alignment);\r\n        var originalAlignedSize = roundUp(this.originalSize, alignment);\r\n        if (noGrow) {\r\n            if (alignedSize > originalAlignedSize) {\r\n                throw new Error('New resource data is larger than original');\r\n            }\r\n        }\r\n        if (!allowShrink) {\r\n            if (alignedSize < originalAlignedSize) {\r\n                alignedSize = originalAlignedSize;\r\n            }\r\n        }\r\n        // generate binary\r\n        var bin = new ArrayBuffer(alignedSize);\r\n        var view = new DataView(bin);\r\n        var o = descOffset;\r\n        var va = virtualAddress + dataOffset;\r\n        this.entries.forEach(function (e) {\r\n            var len = e.bin.byteLength;\r\n            if (typeof e.rva !== 'undefined') {\r\n                // RVA\r\n                view.setUint32(o, e.rva, true);\r\n            }\r\n            else {\r\n                va = roundUp(va, 8);\r\n                // RVA\r\n                view.setUint32(o, va, true);\r\n                va += len;\r\n            }\r\n            // size\r\n            view.setUint32(o + 4, len, true);\r\n            // codepage\r\n            view.setUint32(o + 8, e.codepage, true);\r\n            // (zero)\r\n            view.setUint32(o + 12, 0, true);\r\n            o += 16;\r\n        });\r\n        o = dataOffset;\r\n        this.entries.forEach(function (e) {\r\n            var len = e.bin.byteLength;\r\n            copyBuffer(bin, o, e.bin, 0, len);\r\n            o += roundUp(len, 8);\r\n        });\r\n        var stringsData = [];\r\n        o = stringsOffset;\r\n        strings.forEach(function (s) {\r\n            stringsData.push({\r\n                offset: o,\r\n                text: s,\r\n            });\r\n            o = writeString(view, o, s);\r\n        });\r\n        writeTypeTable(view, 0, stringsData, r);\r\n        // fill with 'PADDINGX'\r\n        if (alignedSize > size) {\r\n            var pad = 'PADDINGX';\r\n            for (var i = size, j = 0; i < alignedSize; ++i, ++j) {\r\n                if (j === 8) {\r\n                    j = 0;\r\n                }\r\n                view.setUint8(i, pad.charCodeAt(j));\r\n            }\r\n        }\r\n        return {\r\n            bin: bin,\r\n            rawSize: size,\r\n            dataOffset: dataOffset,\r\n            descEntryOffset: descOffset,\r\n            descEntryCount: this.entries.length,\r\n        };\r\n    };\r\n    /**\r\n     * Writes holding resource data to specified NtExecutable instance.\r\n     * @param exeDest An NtExecutable instance to write resource section to\r\n     * @param noGrow Set true to disallow growing resource section (throw errors if data exceeds)\r\n     * @param allowShrink Set true to allow shrinking resource section (if the data size is less than original)\r\n     */\r\n    NtExecutableResource.prototype.outputResource = function (exeDest, noGrow, allowShrink) {\r\n        if (noGrow === void 0) { noGrow = false; }\r\n        if (allowShrink === void 0) { allowShrink = false; }\r\n        // make section data\r\n        var fileAlign = exeDest.getFileAlignment();\r\n        var sectionData;\r\n        if (this.sectionDataHeader) {\r\n            sectionData = {\r\n                data: null,\r\n                info: cloneObject(this.sectionDataHeader),\r\n            };\r\n        }\r\n        else {\r\n            sectionData = {\r\n                data: null,\r\n                info: {\r\n                    name: '.rsrc',\r\n                    virtualSize: 0,\r\n                    virtualAddress: 0,\r\n                    sizeOfRawData: 0,\r\n                    pointerToRawData: 0,\r\n                    pointerToRelocations: 0,\r\n                    pointerToLineNumbers: 0,\r\n                    numberOfRelocations: 0,\r\n                    numberOfLineNumbers: 0,\r\n                    characteristics: 0x40000040, // read access and initialized data\r\n                },\r\n            };\r\n        }\r\n        // first, set virtualAddress to 0 because\r\n        // the virtual address is not determined now\r\n        var data = this.generateResourceData(0, fileAlign, noGrow, allowShrink);\r\n        sectionData.data = data.bin;\r\n        sectionData.info.sizeOfRawData = data.bin.byteLength;\r\n        sectionData.info.virtualSize = data.rawSize;\r\n        // write as section\r\n        exeDest.setSectionByEntry(ImageDirectoryEntry.Resource, sectionData);\r\n        // rewrite section raw-data\r\n        var generatedSection = exeDest.getSectionByEntry(ImageDirectoryEntry.Resource);\r\n        var view = new DataView(generatedSection.data);\r\n        // set RVA\r\n        var o = data.descEntryOffset;\r\n        var va = generatedSection.info.virtualAddress + data.dataOffset;\r\n        for (var i = 0; i < data.descEntryCount; ++i) {\r\n            var len = view.getUint32(o + 4, true);\r\n            va = roundUp(va, 8);\r\n            // RVA\r\n            view.setUint32(o, va, true);\r\n            va += len;\r\n            o += 16;\r\n        }\r\n    };\r\n    return NtExecutableResource;\r\n}());\r\nexport default NtExecutableResource;\r\n","import ArrayFormatBase from './ArrayFormatBase.js';\r\nimport FormatBase from './FormatBase.js';\r\nimport ImageDataDirectoryArray from './ImageDataDirectoryArray.js';\r\nimport ImageDirectoryEntry from './ImageDirectoryEntry.js';\r\nimport ImageDosHeader from './ImageDosHeader.js';\r\nimport ImageFileHeader from './ImageFileHeader.js';\r\nimport ImageNtHeaders from './ImageNtHeaders.js';\r\nimport ImageOptionalHeader from './ImageOptionalHeader.js';\r\nimport ImageOptionalHeader64 from './ImageOptionalHeader64.js';\r\nimport ImageSectionHeaderArray from './ImageSectionHeaderArray.js';\r\nexport { ArrayFormatBase, FormatBase, ImageDataDirectoryArray, ImageDirectoryEntry, ImageDosHeader, ImageFileHeader, ImageNtHeaders, ImageOptionalHeader, ImageOptionalHeader64, ImageSectionHeaderArray, };\r\nexport function getImageDosHeader(bin) {\r\n    return ImageDosHeader.from(bin);\r\n}\r\nexport function getImageNtHeadersByDosHeader(bin, dosHeader) {\r\n    return ImageNtHeaders.from(bin, dosHeader.newHeaderAddress);\r\n}\r\nexport function getImageSectionHeadersByNtHeaders(bin, dosHeader, ntHeaders) {\r\n    return ImageSectionHeaderArray.from(bin, ntHeaders.fileHeader.numberOfSections, dosHeader.newHeaderAddress + ntHeaders.byteLength);\r\n}\r\nexport function findImageSectionBlockByDirectoryEntry(bin, dosHeader, ntHeaders, entryType) {\r\n    var arr = ImageSectionHeaderArray.from(bin, ntHeaders.fileHeader.numberOfSections, dosHeader.newHeaderAddress + ntHeaders.byteLength);\r\n    var len = arr.length;\r\n    var rva = ntHeaders.optionalHeaderDataDirectory.get(entryType).virtualAddress;\r\n    for (var i = 0; i < len; ++i) {\r\n        var sec = arr.get(i);\r\n        var vaEnd = sec.virtualAddress + sec.virtualSize;\r\n        if (rva >= sec.virtualAddress && rva < vaEnd) {\r\n            var ptr = sec.pointerToRawData;\r\n            if (!ptr) {\r\n                return null;\r\n            }\r\n            return bin.slice(ptr, ptr + sec.sizeOfRawData);\r\n        }\r\n        if (rva < sec.virtualAddress) {\r\n            return null;\r\n        }\r\n    }\r\n    return null;\r\n}\r\n","export default '2.0.3';\r\n","import IconFile from './IconFile.js';\r\nimport IconItem from './IconItem.js';\r\nimport RawIconItem from './RawIconItem.js';\r\nexport { IconFile, IconItem, RawIconItem };\r\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\r\n/// <reference lib='dom' />\r\nexport function cloneObject(object) {\r\n    var r = {};\r\n    Object.keys(object).forEach(function (key) {\r\n        r[key] = object[key];\r\n    });\r\n    return r;\r\n}\r\n/* eslint-enable @typescript-eslint/ban-types */\r\nexport function createDataView(bin, byteOffset, byteLength) {\r\n    if ('buffer' in bin) {\r\n        var newOffset = bin.byteOffset;\r\n        var newLength = bin.byteLength;\r\n        if (typeof byteOffset !== 'undefined') {\r\n            newOffset += byteOffset;\r\n            newLength -= byteOffset;\r\n        }\r\n        if (typeof byteLength !== 'undefined') {\r\n            newLength = byteLength;\r\n        }\r\n        return new DataView(bin.buffer, newOffset, newLength);\r\n    }\r\n    else {\r\n        return new DataView(bin, byteOffset, byteLength);\r\n    }\r\n}\r\nexport function roundUp(val, align) {\r\n    return Math.floor((val + align - 1) / align) * align;\r\n}\r\nexport function copyBuffer(dest, destOffset, src, srcOffset, length) {\r\n    var ua8Dest = 'buffer' in dest\r\n        ? new Uint8Array(dest.buffer, dest.byteOffset + (destOffset || 0), length)\r\n        : new Uint8Array(dest, destOffset, length);\r\n    var ua8Src = 'buffer' in src\r\n        ? new Uint8Array(src.buffer, src.byteOffset + (srcOffset || 0), length)\r\n        : new Uint8Array(src, srcOffset, length);\r\n    ua8Dest.set(ua8Src);\r\n}\r\nexport function allocatePartialBinary(binBase, offset, length) {\r\n    var b = new ArrayBuffer(length);\r\n    copyBuffer(b, 0, binBase, offset, length);\r\n    return b;\r\n}\r\nexport function cloneToArrayBuffer(binBase) {\r\n    if ('buffer' in binBase) {\r\n        var b = new ArrayBuffer(binBase.byteLength);\r\n        new Uint8Array(b).set(new Uint8Array(binBase.buffer, binBase.byteOffset, binBase.byteLength));\r\n        return b;\r\n    }\r\n    else {\r\n        var b = new ArrayBuffer(binBase.byteLength);\r\n        new Uint8Array(b).set(new Uint8Array(binBase));\r\n        return b;\r\n    }\r\n}\r\nexport function readInt32WithLastOffset(view, offset, last) {\r\n    return offset + 4 <= last ? view.getInt32(offset, true) : 0;\r\n}\r\nexport function readUint8WithLastOffset(view, offset, last) {\r\n    return offset < last ? view.getUint8(offset) : 0;\r\n}\r\nexport function readUint16WithLastOffset(view, offset, last) {\r\n    return offset + 2 <= last ? view.getUint16(offset, true) : 0;\r\n}\r\nexport function readUint32WithLastOffset(view, offset, last) {\r\n    return offset + 4 <= last ? view.getUint32(offset, true) : 0;\r\n}\r\nexport function binaryToString(bin) {\r\n    if (typeof TextDecoder !== 'undefined') {\r\n        var dec = new TextDecoder();\r\n        return dec.decode(bin);\r\n    }\r\n    else if (typeof Buffer !== 'undefined') {\r\n        var b = void 0;\r\n        if ('buffer' in bin) {\r\n            b = Buffer.from(bin.buffer, bin.byteOffset, bin.byteLength);\r\n        }\r\n        else {\r\n            b = Buffer.from(bin);\r\n        }\r\n        return b.toString('utf8');\r\n    }\r\n    else {\r\n        var view = void 0;\r\n        if ('buffer' in bin) {\r\n            view = new Uint8Array(bin.buffer, bin.byteOffset, bin.byteLength);\r\n        }\r\n        else {\r\n            view = new Uint8Array(bin);\r\n        }\r\n        if (typeof decodeURIComponent !== 'undefined') {\r\n            var s = '';\r\n            for (var i = 0; i < view.length; ++i) {\r\n                var c = view[i];\r\n                if (c < 16) {\r\n                    s += '%0' + c.toString(16);\r\n                }\r\n                else {\r\n                    s += '%' + c.toString(16);\r\n                }\r\n            }\r\n            return decodeURIComponent(s);\r\n        }\r\n        else {\r\n            var s = '';\r\n            for (var i = 0; i < view.length; ++i) {\r\n                var c = view[i];\r\n                s += String.fromCharCode(c);\r\n            }\r\n            return s;\r\n        }\r\n    }\r\n}\r\nexport function stringToBinary(string) {\r\n    if (typeof TextEncoder !== 'undefined') {\r\n        var enc = new TextEncoder();\r\n        return cloneToArrayBuffer(enc.encode(string));\r\n    }\r\n    else if (typeof Buffer !== 'undefined') {\r\n        return cloneToArrayBuffer(Buffer.from(string, 'utf8'));\r\n    }\r\n    else if (typeof encodeURIComponent !== 'undefined') {\r\n        var data = encodeURIComponent(string);\r\n        var len = 0;\r\n        for (var i = 0; i < data.length; ++len) {\r\n            var c = data.charCodeAt(i);\r\n            if (c === 37) {\r\n                i += 3;\r\n            }\r\n            else {\r\n                ++i;\r\n            }\r\n        }\r\n        var bin = new ArrayBuffer(len);\r\n        var view = new Uint8Array(bin);\r\n        for (var i = 0, j = 0; i < data.length; ++j) {\r\n            var c = data.charCodeAt(i);\r\n            if (c === 37) {\r\n                var n = parseInt(data.substring(i + 1, i + 3), 16);\r\n                view[j] = n;\r\n                i += 3;\r\n            }\r\n            else {\r\n                view[j] = c;\r\n                ++i;\r\n            }\r\n        }\r\n        return bin;\r\n    }\r\n    else {\r\n        var bin = new ArrayBuffer(string.length);\r\n        new Uint8Array(bin).set([].map.call(string, function (c) {\r\n            return c.charCodeAt(0);\r\n        }));\r\n        return bin;\r\n    }\r\n}\r\nexport function getFixedString(view, offset, length) {\r\n    var actualLen = 0;\r\n    for (var i = 0; i < length; ++i) {\r\n        if (view.getUint8(offset + i) === 0) {\r\n            break;\r\n        }\r\n        ++actualLen;\r\n    }\r\n    if (typeof Buffer !== 'undefined') {\r\n        return Buffer.from(view.buffer, view.byteOffset + offset, actualLen).toString('utf8');\r\n    }\r\n    else if (typeof decodeURIComponent !== 'undefined') {\r\n        var s = '';\r\n        for (var i = 0; i < actualLen; ++i) {\r\n            var c = view.getUint8(offset + i);\r\n            if (c < 16) {\r\n                s += '%0' + c.toString(16);\r\n            }\r\n            else {\r\n                s += '%' + c.toString(16);\r\n            }\r\n        }\r\n        return decodeURIComponent(s);\r\n    }\r\n    else {\r\n        var s = '';\r\n        for (var i = 0; i < actualLen; ++i) {\r\n            var c = view.getUint8(offset + i);\r\n            s += String.fromCharCode(c);\r\n        }\r\n        return s;\r\n    }\r\n}\r\nexport function setFixedString(view, offset, length, text) {\r\n    if (typeof Buffer !== 'undefined') {\r\n        var u = new Uint8Array(view.buffer, view.byteOffset + offset, length);\r\n        // fill by zero\r\n        u.set(new Uint8Array(length));\r\n        u.set(Buffer.from(text, 'utf8').subarray(0, length));\r\n    }\r\n    else if (typeof encodeURIComponent !== 'undefined') {\r\n        var s = encodeURIComponent(text);\r\n        for (var i = 0, j = 0; i < length; ++i) {\r\n            if (j >= s.length) {\r\n                view.setUint8(i + offset, 0);\r\n            }\r\n            else {\r\n                var c = s.charCodeAt(j);\r\n                if (c === 37) {\r\n                    // '%'\r\n                    var n = parseInt(s.substr(j + 1, 2), 16);\r\n                    if (typeof n === 'number' && !isNaN(n)) {\r\n                        view.setUint8(i + offset, n);\r\n                    }\r\n                    else {\r\n                        view.setUint8(i + offset, 0);\r\n                    }\r\n                    j += 3;\r\n                }\r\n                else {\r\n                    view.setUint8(i + offset, c);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    else {\r\n        for (var i = 0, j = 0; i < length; ++i) {\r\n            if (j >= text.length) {\r\n                view.setUint8(i + offset, 0);\r\n            }\r\n            else {\r\n                var c = text.charCodeAt(j);\r\n                view.setUint8(i + offset, c & 0xff);\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { allocatePartialBinary, copyBuffer, createDataView, readInt32WithLastOffset, readUint8WithLastOffset, readUint16WithLastOffset, readUint32WithLastOffset, roundUp, } from '../util/functions.js';\r\nfunction calcMaskSize(width, height) {\r\n    // round up to 4 bytes (32 bit)\r\n    // (mask pixels is 1-bit bitmap)\r\n    var actualWidthBytes = roundUp(Math.abs(width), 32) / 8;\r\n    return actualWidthBytes * Math.abs(height);\r\n}\r\nvar IconItem = /** @class */ (function () {\r\n    function IconItem(width, height, bin, byteOffset, byteLength) {\r\n        var view = createDataView(bin, byteOffset, byteLength);\r\n        var totalSize = view.byteLength;\r\n        var headerSize = view.getUint32(0, true);\r\n        if (headerSize > totalSize) {\r\n            headerSize = totalSize;\r\n        }\r\n        var sizeImage = readUint32WithLastOffset(view, 20, headerSize);\r\n        var bi = {\r\n            width: readInt32WithLastOffset(view, 4, headerSize),\r\n            height: readInt32WithLastOffset(view, 8, headerSize),\r\n            planes: readUint16WithLastOffset(view, 12, headerSize),\r\n            bitCount: readUint16WithLastOffset(view, 14, headerSize),\r\n            compression: readUint32WithLastOffset(view, 16, headerSize),\r\n            sizeImage: sizeImage,\r\n            xPelsPerMeter: readInt32WithLastOffset(view, 24, headerSize),\r\n            yPelsPerMeter: readInt32WithLastOffset(view, 28, headerSize),\r\n            colorUsed: readUint32WithLastOffset(view, 32, headerSize),\r\n            colorImportant: readUint32WithLastOffset(view, 36, headerSize),\r\n            colors: [],\r\n        };\r\n        var offset = 40;\r\n        var colors = bi.colorUsed;\r\n        if (!colors) {\r\n            switch (bi.bitCount) {\r\n                case 1:\r\n                    colors = 2;\r\n                    break;\r\n                case 4:\r\n                    colors = 16;\r\n                    break;\r\n                case 8:\r\n                    colors = 256;\r\n                    break;\r\n            }\r\n        }\r\n        for (var i = 0; i < colors; ++i) {\r\n            bi.colors.push({\r\n                b: readUint8WithLastOffset(view, offset, totalSize),\r\n                g: readUint8WithLastOffset(view, offset + 1, totalSize),\r\n                r: readUint8WithLastOffset(view, offset + 2, totalSize),\r\n            });\r\n            offset += 4;\r\n        }\r\n        this.width = width;\r\n        this.height = height;\r\n        this.bitmapInfo = bi;\r\n        // round up to 4 bytes (32 bit)\r\n        var widthBytes = roundUp(bi.bitCount * Math.abs(bi.width), 32) / 8;\r\n        var absActualHeight = Math.abs(bi.height) / 2;\r\n        // sizeImage may be weird if compression is 0 (BI_RGB), so\r\n        // we calculate actual bitmap size from width and height\r\n        var size = bi.compression !== 0 && sizeImage !== 0\r\n            ? sizeImage\r\n            : widthBytes * absActualHeight;\r\n        if (size + offset > totalSize) {\r\n            throw new Error(\"Unexpected bitmap data in icon: bitmap size \".concat(size, \" is larger than \").concat(totalSize, \" - \").concat(offset));\r\n        }\r\n        this._pixels = allocatePartialBinary(view, offset, size);\r\n        offset += size;\r\n        var maskSize = calcMaskSize(bi.width, absActualHeight);\r\n        if (maskSize + offset <= totalSize) {\r\n            this.masks = allocatePartialBinary(view, offset, maskSize);\r\n        }\r\n        else {\r\n            // create a zero buffer (no mask is not allowed)\r\n            this.masks = new ArrayBuffer(maskSize);\r\n        }\r\n    }\r\n    Object.defineProperty(IconItem.prototype, \"pixels\", {\r\n        /**\r\n         * Bitmap pixel data.\r\n         * @note\r\n         * On set, if `bitmapInfo.sizeImage` is non-zero, `bitmapInfo.sizeImage` will be updated.\r\n         */\r\n        get: function () {\r\n            return this._pixels;\r\n        },\r\n        /**\r\n         * Bitmap pixel data.\r\n         * @note\r\n         * On set, if `bitmapInfo.sizeImage` is non-zero, `bitmapInfo.sizeImage` will be updated.\r\n         */\r\n        set: function (newValue) {\r\n            this._pixels = newValue;\r\n            if (this.bitmapInfo.sizeImage !== 0) {\r\n                this.bitmapInfo.sizeImage = newValue.byteLength;\r\n            }\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    IconItem.from = function (arg1, arg2, arg3, byteOffset, byteLength) {\r\n        var width;\r\n        var height;\r\n        var bin;\r\n        if (typeof arg3 === 'object') {\r\n            // second overload\r\n            width = arg1;\r\n            height = arg2;\r\n            bin = arg3;\r\n        }\r\n        else {\r\n            // first overload\r\n            width = null;\r\n            height = null;\r\n            bin = arg1;\r\n            byteOffset = arg2;\r\n            byteLength = arg3;\r\n        }\r\n        return new IconItem(width, height, bin, byteOffset, byteLength);\r\n    };\r\n    IconItem.prototype.isIcon = function () {\r\n        return true;\r\n    };\r\n    IconItem.prototype.isRaw = function () {\r\n        return false;\r\n    };\r\n    IconItem.prototype.generate = function () {\r\n        var bi = this.bitmapInfo;\r\n        var absWidth = Math.abs(bi.width);\r\n        // round up to 4 bytes (32 bit)\r\n        var absWidthBytes = roundUp(bi.bitCount * absWidth, 32) / 8;\r\n        var absActualHeight = Math.abs(bi.height) / 2;\r\n        var actualSizeImage = absWidthBytes * absActualHeight;\r\n        var sizeMask = calcMaskSize(bi.width, absActualHeight);\r\n        var colorCount = bi.colors.length;\r\n        var totalSize = 40 + 4 * colorCount + actualSizeImage + sizeMask;\r\n        var bin = new ArrayBuffer(totalSize);\r\n        var view = new DataView(bin);\r\n        view.setUint32(0, 40, true);\r\n        view.setInt32(4, bi.width, true);\r\n        view.setInt32(8, bi.height, true);\r\n        view.setUint16(12, bi.planes, true);\r\n        view.setUint16(14, bi.bitCount, true);\r\n        view.setUint32(16, bi.compression, true);\r\n        // image size\r\n        view.setUint32(20, bi.sizeImage, true);\r\n        view.setInt32(24, bi.xPelsPerMeter, true);\r\n        view.setInt32(28, bi.yPelsPerMeter, true);\r\n        view.setUint32(32, bi.colorUsed, true);\r\n        view.setUint32(36, bi.colorImportant > colorCount ? colorCount : bi.colorImportant, true);\r\n        var offset = 40;\r\n        bi.colors.forEach(function (c) {\r\n            view.setUint8(offset, c.b);\r\n            view.setUint8(offset + 1, c.g);\r\n            view.setUint8(offset + 2, c.r);\r\n            offset += 4;\r\n        });\r\n        copyBuffer(bin, offset, this.pixels, 0, actualSizeImage);\r\n        copyBuffer(bin, offset + actualSizeImage, this.masks, 0, sizeMask);\r\n        return bin;\r\n    };\r\n    return IconItem;\r\n}());\r\nexport default IconItem;\r\n","import { allocatePartialBinary } from '../util/functions.js';\r\n/**\r\n * Represents the raw-graphic icon item, such as PNG data.\r\n */\r\nvar RawIconItem = /** @class */ (function () {\r\n    function RawIconItem(bin, width, height, bitCount, byteOffset, byteLength) {\r\n        this.width = width;\r\n        this.height = height;\r\n        this.bitCount = bitCount;\r\n        if (typeof byteOffset !== 'number') {\r\n            byteOffset = 0;\r\n            byteLength = bin.byteLength;\r\n        }\r\n        else if (typeof byteLength !== 'number') {\r\n            byteLength = bin.byteLength - byteOffset;\r\n        }\r\n        this.bin = allocatePartialBinary(bin, byteOffset, byteLength);\r\n    }\r\n    RawIconItem.from = function (bin, width, height, bitCount, byteOffset, byteLength) {\r\n        return new RawIconItem(bin, width, height, bitCount, byteOffset, byteLength);\r\n    };\r\n    RawIconItem.prototype.isIcon = function () {\r\n        return false;\r\n    };\r\n    RawIconItem.prototype.isRaw = function () {\r\n        return true;\r\n    };\r\n    return RawIconItem;\r\n}());\r\nexport default RawIconItem;\r\n","import IconItem from './IconItem.js';\r\nimport RawIconItem from './RawIconItem.js';\r\nimport { readUint8WithLastOffset, readUint16WithLastOffset, readUint32WithLastOffset, copyBuffer, createDataView, } from '../util/functions.js';\r\nfunction generateEntryBinary(icons) {\r\n    var count = icons.length;\r\n    /* istanbul ignore if */\r\n    if (count > 65535) {\r\n        count = 65535;\r\n    }\r\n    var tmpIcons = icons.map(function (item) {\r\n        if (item.data.isIcon()) {\r\n            return {\r\n                item: item,\r\n                bin: item.data.generate(),\r\n                offset: 0,\r\n            };\r\n        }\r\n        else {\r\n            return {\r\n                item: item,\r\n                bin: item.data.bin,\r\n                offset: 0,\r\n            };\r\n        }\r\n    });\r\n    var size = tmpIcons.reduce(function (p, icon) {\r\n        icon.offset = p;\r\n        return p + icon.bin.byteLength;\r\n    }, 6 + 16 * count);\r\n    var bin = new ArrayBuffer(size);\r\n    var view = new DataView(bin);\r\n    view.setUint16(0, 0, true); // reserved\r\n    view.setUint16(2, 1, true); // icon type\r\n    view.setUint16(4, count, true);\r\n    var offset = 6;\r\n    tmpIcons.forEach(function (icon) {\r\n        var item = icon.item;\r\n        var width;\r\n        var height;\r\n        var colors;\r\n        var planes;\r\n        var bitCount;\r\n        if (item.data.isIcon()) {\r\n            var bi = item.data.bitmapInfo;\r\n            width =\r\n                typeof item.width !== 'undefined'\r\n                    ? item.width\r\n                    : Math.abs(bi.width);\r\n            height =\r\n                typeof item.height !== 'undefined'\r\n                    ? item.height\r\n                    : Math.abs(bi.height / 2);\r\n            colors =\r\n                typeof item.colors !== 'undefined'\r\n                    ? item.colors\r\n                    : bi.colorUsed || bi.colors.length;\r\n            planes =\r\n                typeof item.planes !== 'undefined' ? item.planes : bi.planes;\r\n            bitCount =\r\n                typeof item.bitCount !== 'undefined'\r\n                    ? item.bitCount\r\n                    : bi.bitCount;\r\n        }\r\n        else {\r\n            width =\r\n                typeof item.width !== 'undefined'\r\n                    ? item.width\r\n                    : Math.abs(item.data.width);\r\n            height =\r\n                typeof item.height !== 'undefined'\r\n                    ? item.height\r\n                    : Math.abs(item.data.height);\r\n            colors = typeof item.colors !== 'undefined' ? item.colors : 0;\r\n            planes = typeof item.planes !== 'undefined' ? item.planes : 1;\r\n            bitCount =\r\n                typeof item.bitCount !== 'undefined'\r\n                    ? item.bitCount\r\n                    : item.data.bitCount;\r\n        }\r\n        var dataSize = icon.bin.byteLength;\r\n        view.setUint8(offset, width >= 256 ? 0 : width);\r\n        view.setUint8(offset + 1, height >= 256 ? 0 : height);\r\n        view.setUint8(offset + 2, colors >= 256 ? 0 : colors);\r\n        view.setUint8(offset + 3, 0);\r\n        view.setUint16(offset + 4, planes, true);\r\n        view.setUint16(offset + 6, bitCount, true);\r\n        view.setUint32(offset + 8, dataSize, true);\r\n        view.setUint32(offset + 12, icon.offset, true);\r\n        offset += 16;\r\n        copyBuffer(bin, icon.offset, icon.bin, 0, dataSize);\r\n    });\r\n    return bin;\r\n}\r\nvar IconFile = /** @class */ (function () {\r\n    function IconFile(bin) {\r\n        if (!bin) {\r\n            this.icons = [];\r\n            return;\r\n        }\r\n        var view = createDataView(bin);\r\n        var totalSize = view.byteLength;\r\n        var icons = [];\r\n        /* istanbul ignore else */\r\n        if (view.getUint16(2, true) === 1) {\r\n            var count = view.getUint16(4, true);\r\n            var offset = 6;\r\n            for (var i = 0; i < count; ++i) {\r\n                var dataSize = readUint32WithLastOffset(view, offset + 8, totalSize);\r\n                var dataOffset = readUint32WithLastOffset(view, offset + 12, totalSize);\r\n                var width = readUint8WithLastOffset(view, offset, totalSize);\r\n                var height = readUint8WithLastOffset(view, offset + 1, totalSize);\r\n                var bitCount = readUint8WithLastOffset(view, offset + 6, totalSize);\r\n                var data = void 0;\r\n                if (view.getUint32(dataOffset, true) === 0x28) {\r\n                    data = IconItem.from(width, height, bin, dataOffset, dataSize);\r\n                }\r\n                else {\r\n                    data = RawIconItem.from(bin, width || 256, height || 256, bitCount, dataOffset, dataSize);\r\n                }\r\n                icons.push({\r\n                    width: width,\r\n                    height: height,\r\n                    colors: readUint8WithLastOffset(view, offset + 2, totalSize),\r\n                    planes: readUint16WithLastOffset(view, offset + 4, totalSize),\r\n                    bitCount: bitCount,\r\n                    data: data,\r\n                });\r\n                offset += 16;\r\n            }\r\n        }\r\n        this.icons = icons;\r\n    }\r\n    IconFile.from = function (bin) {\r\n        return new IconFile(bin);\r\n    };\r\n    IconFile.prototype.generate = function () {\r\n        return generateEntryBinary(this.icons);\r\n    };\r\n    return IconFile;\r\n}());\r\nexport default IconFile;\r\n","import IconGroupEntry from './IconGroupEntry.js';\r\nimport StringTable from './StringTable.js';\r\nimport VersionFileFlags from './VersionFileFlags.js';\r\nimport VersionFileOS from './VersionFileOS.js';\r\nimport { VersionFileDriverSubtype, VersionFileFontSubtype, } from './VersionFileSubtypes.js';\r\nimport VersionFileType from './VersionFileType.js';\r\nimport VersionInfo from './VersionInfo.js';\r\nexport { IconGroupEntry, StringTable, VersionFileFlags, VersionFileOS, VersionFileDriverSubtype, VersionFileFontSubtype, VersionFileType, VersionInfo, };\r\n","import IconItem from '../data/IconItem.js';\r\nimport RawIconItem from '../data/RawIconItem.js';\r\nimport { readUint8WithLastOffset, readUint16WithLastOffset, readUint32WithLastOffset, } from '../util/functions.js';\r\nfunction generateEntryBinary(icons) {\r\n    var count = icons.length;\r\n    if (count > 65535) {\r\n        count = 65535;\r\n    }\r\n    var size = 6 + 14 * icons.length;\r\n    var bin = new ArrayBuffer(size);\r\n    var view = new DataView(bin);\r\n    view.setUint16(0, 0, true); // reserved\r\n    view.setUint16(2, 1, true); // icon type\r\n    view.setUint16(4, count, true);\r\n    var offset = 6;\r\n    icons.forEach(function (icon) {\r\n        view.setUint8(offset, icon.width >= 256 ? 0 : icon.width);\r\n        view.setUint8(offset + 1, icon.height >= 256 ? 0 : icon.height);\r\n        view.setUint8(offset + 2, icon.colors >= 256 ? 0 : icon.colors);\r\n        view.setUint8(offset + 3, 0);\r\n        view.setUint16(offset + 4, icon.planes, true);\r\n        view.setUint16(offset + 6, icon.bitCount, true);\r\n        view.setUint32(offset + 8, icon.dataSize, true);\r\n        view.setUint16(offset + 12, icon.iconID, true);\r\n        offset += 14;\r\n    });\r\n    return bin;\r\n}\r\nfunction findUnusedIconID(entries, lang, isCursor) {\r\n    var type = isCursor ? 1 : 3;\r\n    // (ignore string id)\r\n    var filteredIDs = entries\r\n        .filter(function (e) { return e.type === type && e.lang === lang && typeof e.id === 'number'; })\r\n        .map(function (e) { return e.id; })\r\n        .sort(function (a, b) { return a - b; });\r\n    var idCurrent = 1;\r\n    for (var _i = 0, filteredIDs_1 = filteredIDs; _i < filteredIDs_1.length; _i++) {\r\n        var id = filteredIDs_1[_i];\r\n        if (idCurrent < id) {\r\n            return {\r\n                id: idCurrent,\r\n                last: false,\r\n            };\r\n        }\r\n        else if (idCurrent === id) {\r\n            ++idCurrent;\r\n        }\r\n    }\r\n    return {\r\n        id: idCurrent,\r\n        last: true,\r\n    };\r\n}\r\n/**\r\n * A class that treats icon-group resource data (`RT_ICON_GROUP`).\r\n * Note that this class does not treat `RT_ICON` data.\r\n *\r\n * - To pick all icons, use `IconGroupEntry.fromEntries`\r\n *   and `IconGroupEntry.prototype.getIconItemsFromEntries`.\r\n * - The easiest way to add/replace icons is using `IconGroupEntry.replaceIconsForResource`,\r\n *   which treats both `RT_ICON_GROUP` and `RT_ICON` entries.\r\n */\r\nvar IconGroupEntry = /** @class */ (function () {\r\n    function IconGroupEntry(groupEntry) {\r\n        var view = new DataView(groupEntry.bin);\r\n        var totalSize = view.byteLength;\r\n        var icons = [];\r\n        if (view.getUint16(2, true) === 1) {\r\n            var count = view.getUint16(4, true);\r\n            var offset = 6;\r\n            for (var i = 0; i < count; ++i) {\r\n                icons.push({\r\n                    width: readUint8WithLastOffset(view, offset, totalSize),\r\n                    height: readUint8WithLastOffset(view, offset + 1, totalSize),\r\n                    colors: readUint8WithLastOffset(view, offset + 2, totalSize),\r\n                    planes: readUint16WithLastOffset(view, offset + 4, totalSize),\r\n                    bitCount: readUint16WithLastOffset(view, offset + 6, totalSize),\r\n                    dataSize: readUint32WithLastOffset(view, offset + 8, totalSize),\r\n                    iconID: readUint16WithLastOffset(view, offset + 12, totalSize),\r\n                });\r\n                offset += 14; // 16 for .ico file, but 14 for resource data\r\n            }\r\n        }\r\n        this.id = groupEntry.id;\r\n        this.lang = groupEntry.lang;\r\n        this.icons = icons;\r\n    }\r\n    IconGroupEntry.fromEntries = function (entries) {\r\n        return entries\r\n            .filter(function (e) { return e.type === 14; })\r\n            .map(function (e) { return new IconGroupEntry(e); });\r\n    };\r\n    IconGroupEntry.prototype.generateEntry = function () {\r\n        var bin = generateEntryBinary(this.icons);\r\n        return {\r\n            type: 14,\r\n            id: this.id,\r\n            lang: this.lang,\r\n            codepage: 0,\r\n            bin: bin,\r\n        };\r\n    };\r\n    /**\r\n     * Return an array of `IconItem` / `RawIconItem`, which are in the group of this `IconGroupEntry` instance,\r\n     * from specified resource entries.\r\n     */\r\n    IconGroupEntry.prototype.getIconItemsFromEntries = function (entries) {\r\n        var _this = this;\r\n        return entries\r\n            .map(function (e) {\r\n            if (e.type !== 3 || e.lang !== _this.lang) {\r\n                return null;\r\n            }\r\n            var c = _this.icons\r\n                .filter(function (icon) { return e.id === icon.iconID; })\r\n                .shift();\r\n            if (!c) {\r\n                return null;\r\n            }\r\n            return {\r\n                entry: e,\r\n                icon: c,\r\n            };\r\n        })\r\n            .filter(function (item) { return !!item; })\r\n            .map(function (item) {\r\n            var bin = item.entry.bin;\r\n            var view = new DataView(bin);\r\n            if (view.getUint32(0, true) === 0x28) {\r\n                return IconItem.from(bin);\r\n            }\r\n            else {\r\n                var c = item.icon;\r\n                return RawIconItem.from(bin, c.width, c.height, c.bitCount);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Add or replace icon resource entries with specified icon data.\r\n     * The IDs of individual icon resources (`RT_ICON`) are calculated automatically.\r\n     * @param destEntries base (destination) resource entries.\r\n     * @param iconGroupID the icon ID for the new resource data.\r\n     *     If the icon-group resource of the ID and 'lang' value already exists,\r\n     *     the resource data is replaced; otherwise the resource data is appended.\r\n     * @param lang the language for specified icons (0 for neutral, 0x409 for en-US)\r\n     * @param icons the icons to replace\r\n     */\r\n    IconGroupEntry.replaceIconsForResource = function (destEntries, iconGroupID, lang, icons) {\r\n        // find existing entry\r\n        var entry = destEntries\r\n            .filter(function (e) { return e.type === 14 && e.id === iconGroupID && e.lang === lang; })\r\n            .shift();\r\n        var tmpIconArray = icons.map(function (icon) {\r\n            if (icon.isIcon()) {\r\n                var width = icon.width, height = icon.height;\r\n                if (width === null) {\r\n                    width = icon.bitmapInfo.width;\r\n                }\r\n                if (height === null) {\r\n                    height = icon.bitmapInfo.height;\r\n                    // if mask is specified, the icon height must be the half of bitmap height\r\n                    if (icon.masks !== null) {\r\n                        height = Math.floor(height / 2);\r\n                    }\r\n                }\r\n                return {\r\n                    base: icon,\r\n                    bm: {\r\n                        width: width,\r\n                        height: height,\r\n                        planes: icon.bitmapInfo.planes,\r\n                        bitCount: icon.bitmapInfo.bitCount,\r\n                    },\r\n                    bin: icon.generate(),\r\n                    id: 0,\r\n                };\r\n            }\r\n            else {\r\n                return {\r\n                    base: icon,\r\n                    bm: {\r\n                        width: icon.width,\r\n                        height: icon.height,\r\n                        planes: 1,\r\n                        bitCount: icon.bitCount,\r\n                    },\r\n                    bin: icon.bin,\r\n                    id: 0,\r\n                };\r\n            }\r\n        });\r\n        if (entry) {\r\n            // remove unused icon data\r\n            for (var i = destEntries.length - 1; i >= 0; --i) {\r\n                var e = destEntries[i];\r\n                if (e != null && e.type === 3) {\r\n                    // RT_ICON\r\n                    if (!isIconUsed(e, destEntries, entry)) {\r\n                        destEntries.splice(i, 1);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            // create new entry\r\n            entry = {\r\n                type: 14,\r\n                id: iconGroupID,\r\n                lang: lang,\r\n                codepage: 0,\r\n                // set later\r\n                bin: null,\r\n            };\r\n            destEntries.push(entry);\r\n        }\r\n        // append icons\r\n        var idInfo;\r\n        tmpIconArray.forEach(function (icon) {\r\n            if (!(idInfo === null || idInfo === void 0 ? void 0 : idInfo.last)) {\r\n                idInfo = findUnusedIconID(destEntries, lang, false);\r\n            }\r\n            else {\r\n                ++idInfo.id;\r\n            }\r\n            destEntries.push({\r\n                type: 3,\r\n                id: idInfo.id,\r\n                lang: lang,\r\n                codepage: 0,\r\n                bin: icon.bin,\r\n            });\r\n            // set 'id' field to use in generateEntryBinary\r\n            icon.id = idInfo.id;\r\n        });\r\n        var binEntry = generateEntryBinary(tmpIconArray.map(function (icon) {\r\n            var width = Math.abs(icon.bm.width);\r\n            if (width >= 256) {\r\n                width = 0;\r\n            }\r\n            var height = Math.abs(icon.bm.height);\r\n            if (height >= 256) {\r\n                height = 0;\r\n            }\r\n            var colors = 0;\r\n            if (icon.base.isIcon()) {\r\n                var bmBase = icon.base.bitmapInfo;\r\n                colors = bmBase.colorUsed || bmBase.colors.length;\r\n                if (!colors) {\r\n                    switch (bmBase.bitCount) {\r\n                        case 1:\r\n                            colors = 2;\r\n                            break;\r\n                        case 4:\r\n                            colors = 16;\r\n                            break;\r\n                        // case 8:\r\n                        // \tcolors = 256;\r\n                        // \tbreak;\r\n                    }\r\n                }\r\n                if (colors >= 256) {\r\n                    colors = 0;\r\n                }\r\n            }\r\n            return {\r\n                width: width,\r\n                height: height,\r\n                colors: colors,\r\n                planes: icon.bm.planes,\r\n                bitCount: icon.bm.bitCount,\r\n                dataSize: icon.bin.byteLength,\r\n                iconID: icon.id,\r\n            };\r\n        }));\r\n        // rewrite entry\r\n        entry.bin = binEntry;\r\n        function isIconUsed(icon, allEntries, excludeGroup) {\r\n            return allEntries.some(function (e) {\r\n                if (e.type !== 14 ||\r\n                    (e.id === excludeGroup.id && e.lang === excludeGroup.lang)) {\r\n                    return false;\r\n                }\r\n                var g = new IconGroupEntry(e);\r\n                return g.icons.some(function (c) {\r\n                    return c.iconID === icon.id;\r\n                });\r\n            });\r\n        }\r\n    };\r\n    return IconGroupEntry;\r\n}());\r\nexport default IconGroupEntry;\r\n","// StringTable entry:\r\n//   16-times of {<WORD length> [<UTF-16 string>]}\r\nvar StringTableItem = /** @class */ (function () {\r\n    function StringTableItem() {\r\n        this.length = 16;\r\n        this._a = [];\r\n        this._a.length = 16;\r\n        for (var i = 0; i < 16; ++i) {\r\n            this._a[i] = '';\r\n        }\r\n    }\r\n    StringTableItem.fromEntry = function (bin, offset, byteLength) {\r\n        var view = new DataView(bin, offset, byteLength);\r\n        var ret = new StringTableItem();\r\n        var o = 0;\r\n        for (var i = 0; i < 16; ++i) {\r\n            var len = view.getUint16(o, true);\r\n            o += 2;\r\n            var s = '';\r\n            for (var j = 0; j < len; ++j) {\r\n                s += String.fromCharCode(view.getUint16(o, true));\r\n                o += 2;\r\n            }\r\n            ret._a[i] = s;\r\n        }\r\n        return ret;\r\n    };\r\n    StringTableItem.prototype.get = function (index) {\r\n        var value = this._a[index];\r\n        return value != null && value !== '' ? value : null;\r\n    };\r\n    StringTableItem.prototype.getAll = function () {\r\n        return this._a.map(function (s) { return s || null; });\r\n    };\r\n    StringTableItem.prototype.set = function (index, val) {\r\n        this._a[index] = \"\".concat(val !== null && val !== void 0 ? val : '').substr(0, 4097); // length must be no longer than 4097\r\n    };\r\n    StringTableItem.prototype.calcByteLength = function () {\r\n        var len = 0;\r\n        for (var i = 0; i < 16; ++i) {\r\n            var item = this._a[i];\r\n            len += 2;\r\n            if (item != null) {\r\n                len += 2 * item.length; // UTF-16 length\r\n            }\r\n        }\r\n        // 16 alignment\r\n        return Math.floor((len + 15) / 16) * 16;\r\n    };\r\n    StringTableItem.prototype.generate = function (bin, offset) {\r\n        var out = new DataView(bin, offset);\r\n        var len = 0;\r\n        for (var i = 0; i < 16; ++i) {\r\n            var s = this._a[i];\r\n            var l = s == null ? 0 : s.length > 4097 ? 4097 : s.length;\r\n            out.setUint16(len, l, true);\r\n            len += 2;\r\n            if (s != null) {\r\n                for (var j = 0; j < l; ++j) {\r\n                    // output as UTF-16\r\n                    out.setUint16(len, s.charCodeAt(j), true);\r\n                    len += 2;\r\n                }\r\n            }\r\n        }\r\n        // 16 alignment\r\n        return Math.floor((len + 15) / 16) * 16;\r\n    };\r\n    return StringTableItem;\r\n}());\r\nexport default StringTableItem;\r\n","import StringTableItem from './StringTableItem.js';\r\n/** Utility class to create / parse String Table resource */\r\nvar StringTable = /** @class */ (function () {\r\n    function StringTable() {\r\n        this.lang = 0;\r\n        this.items = [];\r\n    }\r\n    /** Create StringTable instance from resource entries, with specified language. */\r\n    StringTable.fromEntries = function (lang, entries) {\r\n        var r = new StringTable();\r\n        entries.forEach(function (e) {\r\n            // 6: RT_STRING\r\n            if (e.type !== 6 ||\r\n                e.lang !== lang ||\r\n                typeof e.id !== 'number' ||\r\n                e.id <= 0) {\r\n                return;\r\n            }\r\n            r.items[e.id - 1] = StringTableItem.fromEntry(e.bin, 0, e.bin.byteLength);\r\n        });\r\n        r.lang = lang;\r\n        return r;\r\n    };\r\n    /** Return all string entries. */\r\n    StringTable.prototype.getAllStrings = function () {\r\n        return this.items\r\n            .map(function (e, i) {\r\n            return e\r\n                .getAll()\r\n                .map(function (x, j) {\r\n                return x !== null && x !== ''\r\n                    ? { id: (i << 4) + j, text: x }\r\n                    : null;\r\n            })\r\n                .filter(function (x) { return !!x; });\r\n        })\r\n            .reduce(function (p, c) { return p.concat(c); }, []);\r\n    };\r\n    /** Return the string data for ID value, which can be used for Win32API LoadString. */\r\n    StringTable.prototype.getById = function (id) {\r\n        var _a;\r\n        if (id < 0) {\r\n            return null;\r\n        }\r\n        var entryIndex = id >> 4;\r\n        var entryPos = id & 15;\r\n        var e = this.items[entryIndex];\r\n        return (_a = e === null || e === void 0 ? void 0 : e.get(entryPos)) !== null && _a !== void 0 ? _a : null;\r\n    };\r\n    /**\r\n     * Set/overwide the string data for ID value, which can be used for Win32API LoadString.\r\n     * @param id data ID\r\n     * @param text string data (entry will be removed if null or empty string is specified)\r\n     */\r\n    StringTable.prototype.setById = function (id, text) {\r\n        if (id < 0) {\r\n            return;\r\n        }\r\n        var entryIndex = id >> 4;\r\n        var entryPos = id & 15;\r\n        var e = this.items[entryIndex];\r\n        if (!e) {\r\n            this.items[entryIndex] = e = new StringTableItem();\r\n        }\r\n        e.set(entryPos, text);\r\n    };\r\n    /** Generates an array of Entry for resource processings */\r\n    StringTable.prototype.generateEntries = function () {\r\n        var _this = this;\r\n        return this.items\r\n            .map(function (e, i) {\r\n            var len = e.calcByteLength();\r\n            var bin = new ArrayBuffer(len);\r\n            e.generate(bin, 0);\r\n            return {\r\n                type: 6,\r\n                id: i + 1,\r\n                lang: _this.lang,\r\n                codepage: 1200,\r\n                bin: bin,\r\n            };\r\n        })\r\n            .filter(function (e) { return !!e; });\r\n    };\r\n    /**\r\n     * Replace all string entries for NtExecutableResource with containing resource data.\r\n     * The only entries of same language are replaced.\r\n     */\r\n    StringTable.prototype.replaceStringEntriesForExecutable = function (res) {\r\n        var entries = this.generateEntries();\r\n        var dest = res.entries;\r\n        // first try -- replace same type and same language\r\n        for (var i = 0; i < dest.length; ++i) {\r\n            var e = dest[i];\r\n            if (e != null && e.type === 6 && e.lang === this.lang) {\r\n                for (var j = dest.length - 1; j >= i; --j) {\r\n                    var e2 = dest[j];\r\n                    if (e2 != null && e2.type === 6 && e2.lang === this.lang) {\r\n                        dest.splice(j, 1);\r\n                    }\r\n                }\r\n                var f = dest.splice.bind(dest, i, 0);\r\n                f.apply(void 0, entries);\r\n                return;\r\n            }\r\n        }\r\n        // second try -- add entries next to previous language\r\n        for (var i = 0; i < dest.length; ++i) {\r\n            var e = dest[i];\r\n            if (e != null && e.type === 6 && e.lang < this.lang) {\r\n                var f = dest.splice.bind(dest, i + 1, 0);\r\n                f.apply(void 0, entries);\r\n                return;\r\n            }\r\n        }\r\n        // third try -- add entries next to the last 'String' entry\r\n        for (var i = dest.length - 1; i >= 0; --i) {\r\n            var e = dest[i];\r\n            if (e != null && e.type === 6) {\r\n                var f = dest.splice.bind(dest, i + 1, 0);\r\n                f.apply(void 0, entries);\r\n                return;\r\n            }\r\n        }\r\n        // otherwise -- add entries to the last\r\n        dest.push.apply(dest, entries);\r\n    };\r\n    return StringTable;\r\n}());\r\nexport default StringTable;\r\n","/**\r\n * Flag values used by VersionEntry.fixedInfo field.\r\n * Zero or more enum values are stored (with OR operator).\r\n */\r\nvar VersionFileFlags;\r\n(function (VersionFileFlags) {\r\n    VersionFileFlags[VersionFileFlags[\"Debug\"] = 1] = \"Debug\";\r\n    VersionFileFlags[VersionFileFlags[\"Prerelease\"] = 2] = \"Prerelease\";\r\n    VersionFileFlags[VersionFileFlags[\"Patched\"] = 4] = \"Patched\";\r\n    VersionFileFlags[VersionFileFlags[\"PrivateBuild\"] = 8] = \"PrivateBuild\";\r\n    VersionFileFlags[VersionFileFlags[\"InfoInferred\"] = 16] = \"InfoInferred\";\r\n    VersionFileFlags[VersionFileFlags[\"SpecialBuild\"] = 32] = \"SpecialBuild\";\r\n})(VersionFileFlags || (VersionFileFlags = {}));\r\nexport default VersionFileFlags;\r\n","/**\r\n * OS values used by VersionEntry.fixedInfo field.\r\n */\r\nvar VersionFileOS;\r\n(function (VersionFileOS) {\r\n    VersionFileOS[VersionFileOS[\"Unknown\"] = 0] = \"Unknown\";\r\n    VersionFileOS[VersionFileOS[\"_Windows16\"] = 1] = \"_Windows16\";\r\n    VersionFileOS[VersionFileOS[\"_PM16\"] = 2] = \"_PM16\";\r\n    VersionFileOS[VersionFileOS[\"_PM32\"] = 3] = \"_PM32\";\r\n    VersionFileOS[VersionFileOS[\"_Windows32\"] = 4] = \"_Windows32\";\r\n    VersionFileOS[VersionFileOS[\"DOS\"] = 65536] = \"DOS\";\r\n    VersionFileOS[VersionFileOS[\"OS2_16\"] = 131072] = \"OS2_16\";\r\n    VersionFileOS[VersionFileOS[\"OS2_32\"] = 196608] = \"OS2_32\";\r\n    VersionFileOS[VersionFileOS[\"NT\"] = 262144] = \"NT\";\r\n    VersionFileOS[VersionFileOS[\"DOS_Windows16\"] = 65537] = \"DOS_Windows16\";\r\n    VersionFileOS[VersionFileOS[\"DOS_Windows32\"] = 65540] = \"DOS_Windows32\";\r\n    VersionFileOS[VersionFileOS[\"NT_Windows32\"] = 262148] = \"NT_Windows32\";\r\n    VersionFileOS[VersionFileOS[\"OS2_16_PM16\"] = 131074] = \"OS2_16_PM16\";\r\n    VersionFileOS[VersionFileOS[\"OS2_32_PM32\"] = 196611] = \"OS2_32_PM32\";\r\n})(VersionFileOS || (VersionFileOS = {}));\r\nexport default VersionFileOS;\r\n","export var VersionFileDriverSubtype;\r\n(function (VersionFileDriverSubtype) {\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"Unknown\"] = 0] = \"Unknown\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"Printer\"] = 1] = \"Printer\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"Keyboard\"] = 2] = \"Keyboard\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"Language\"] = 3] = \"Language\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"Display\"] = 4] = \"Display\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"Mouse\"] = 5] = \"Mouse\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"Network\"] = 6] = \"Network\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"System\"] = 7] = \"System\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"Installable\"] = 8] = \"Installable\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"Sound\"] = 9] = \"Sound\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"Comm\"] = 10] = \"Comm\";\r\n    VersionFileDriverSubtype[VersionFileDriverSubtype[\"VersionedPrinter\"] = 12] = \"VersionedPrinter\";\r\n})(VersionFileDriverSubtype || (VersionFileDriverSubtype = {}));\r\nexport var VersionFileFontSubtype;\r\n(function (VersionFileFontSubtype) {\r\n    VersionFileFontSubtype[VersionFileFontSubtype[\"Unknown\"] = 0] = \"Unknown\";\r\n    VersionFileFontSubtype[VersionFileFontSubtype[\"Raster\"] = 1] = \"Raster\";\r\n    VersionFileFontSubtype[VersionFileFontSubtype[\"Vector\"] = 2] = \"Vector\";\r\n    VersionFileFontSubtype[VersionFileFontSubtype[\"TrueType\"] = 3] = \"TrueType\";\r\n})(VersionFileFontSubtype || (VersionFileFontSubtype = {}));\r\n","/**\r\n * File type values used by VersionEntry.fixedInfo field.\r\n */\r\nvar VersionFileType;\r\n(function (VersionFileType) {\r\n    VersionFileType[VersionFileType[\"Unknown\"] = 0] = \"Unknown\";\r\n    VersionFileType[VersionFileType[\"App\"] = 1] = \"App\";\r\n    VersionFileType[VersionFileType[\"DLL\"] = 2] = \"DLL\";\r\n    VersionFileType[VersionFileType[\"Driver\"] = 3] = \"Driver\";\r\n    VersionFileType[VersionFileType[\"Font\"] = 4] = \"Font\";\r\n    VersionFileType[VersionFileType[\"VxD\"] = 5] = \"VxD\";\r\n    VersionFileType[VersionFileType[\"StaticLibrary\"] = 7] = \"StaticLibrary\";\r\n})(VersionFileType || (VersionFileType = {}));\r\nexport default VersionFileType;\r\n","import { allocatePartialBinary, cloneObject, copyBuffer, readUint32WithLastOffset, roundUp, } from '../util/functions.js';\r\nfunction readStringToNullChar(view, offset, last) {\r\n    var r = '';\r\n    while (offset + 2 <= last) {\r\n        var c = view.getUint16(offset, true);\r\n        if (!c) {\r\n            break;\r\n        }\r\n        r += String.fromCharCode(c);\r\n        offset += 2;\r\n    }\r\n    return r;\r\n}\r\nfunction writeStringWithNullChar(view, offset, value) {\r\n    for (var i = 0; i < value.length; ++i) {\r\n        view.setUint16(offset, value.charCodeAt(i), true);\r\n        offset += 2;\r\n    }\r\n    view.setUint16(offset, 0, true);\r\n    return offset + 2;\r\n}\r\nfunction createFixedInfo() {\r\n    return {\r\n        fileVersionMS: 0,\r\n        fileVersionLS: 0,\r\n        productVersionMS: 0,\r\n        productVersionLS: 0,\r\n        fileFlagsMask: 0,\r\n        fileFlags: 0,\r\n        fileOS: 0,\r\n        fileType: 0,\r\n        fileSubtype: 0,\r\n        fileDateMS: 0,\r\n        fileDateLS: 0,\r\n    };\r\n}\r\n////////////////////////////////////////////////////////////////////////////////\r\n// parsings\r\n// returns offset and structure\r\nfunction parseStringTable(view, offset, last) {\r\n    var tableLen = view.getUint16(offset, true);\r\n    var valueLen = view.getUint16(offset + 2, true);\r\n    if (offset + tableLen < last) {\r\n        last = offset + tableLen;\r\n    }\r\n    // value type check is not needed; because no value is needed\r\n    var tableName = readStringToNullChar(view, offset + 6, last);\r\n    offset += roundUp(6 + 2 * (tableName.length + 1), 4);\r\n    var langAndCp = parseInt(tableName, 16);\r\n    if (isNaN(langAndCp)) {\r\n        throw new Error('Invalid StringTable data format');\r\n    }\r\n    // this should be zero\r\n    offset += roundUp(valueLen, 4);\r\n    var r = {\r\n        lang: Math.floor(langAndCp / 0x10000),\r\n        codepage: langAndCp & 0xffff,\r\n        values: {},\r\n    };\r\n    while (offset < last) {\r\n        // String structure\r\n        var childDataLen = view.getUint16(offset, true);\r\n        var childValueLen = view.getUint16(offset + 2, true);\r\n        // value type must be string; if not, skip it\r\n        if (view.getUint16(offset + 4, true) !== 1) {\r\n            offset += childDataLen;\r\n            continue;\r\n        }\r\n        var childDataLast = offset + childDataLen;\r\n        if (childDataLast > last) {\r\n            childDataLast = last;\r\n        }\r\n        var name_1 = readStringToNullChar(view, offset + 6, childDataLast);\r\n        offset = roundUp(offset + 6 + 2 * (name_1.length + 1), 4);\r\n        var childValueLast = offset + childValueLen * 2;\r\n        if (childValueLast > childDataLast) {\r\n            childValueLast = childDataLast;\r\n        }\r\n        var value = readStringToNullChar(view, offset, childValueLast);\r\n        offset = roundUp(childValueLast, 4);\r\n        r.values[name_1] = value;\r\n    }\r\n    // return 'last' instead of 'offset'\r\n    return [last, r];\r\n}\r\nfunction parseStringFileInfo(view, offset, last) {\r\n    var valueLen = view.getUint16(offset + 2, true);\r\n    // value type check is not needed; because no value is needed\r\n    offset += 36; // roundUp(6 + ByteLenWithNull(L'StringFileInfo'), 4)\r\n    // this should be zero\r\n    offset += roundUp(valueLen, 4);\r\n    var r = [];\r\n    var _loop_1 = function () {\r\n        // StringTable structure\r\n        var childData = parseStringTable(view, offset, last);\r\n        var table = childData[1];\r\n        var a = r.filter(function (e) { return e.lang === table.lang && e.codepage === table.codepage; });\r\n        if (a.length === 0) {\r\n            r.push(table);\r\n        }\r\n        else {\r\n            // merge values\r\n            for (var key in table.values) {\r\n                var value = table.values[key];\r\n                if (value != null) {\r\n                    a[0].values[key] = value;\r\n                }\r\n            }\r\n        }\r\n        offset = roundUp(childData[0], 4);\r\n    };\r\n    while (offset < last) {\r\n        _loop_1();\r\n    }\r\n    return r;\r\n}\r\nfunction parseVarFileInfo(view, offset, last) {\r\n    var valueLen = view.getUint16(offset + 2, true);\r\n    // value type check is not needed; because no value is needed\r\n    offset += 32; // roundUp(6 + ByteLenWithNull(L'VarFileInfo'), 4)\r\n    // this should be zero\r\n    offset += roundUp(valueLen, 4);\r\n    var r = [];\r\n    while (offset < last) {\r\n        // Var structure\r\n        var childDataLen = view.getUint16(offset, true);\r\n        var childValueLen = view.getUint16(offset + 2, true);\r\n        // value type must be binary; if not, skip it\r\n        if (view.getUint16(offset + 4, true) !== 0) {\r\n            offset += roundUp(childDataLen, 4);\r\n            continue;\r\n        }\r\n        var childDataLast = offset + childDataLen;\r\n        if (childDataLast > last) {\r\n            childDataLast = last;\r\n        }\r\n        var name_2 = readStringToNullChar(view, offset + 6, childDataLast);\r\n        offset = roundUp(offset + 6 + 2 * (name_2.length + 1), 4);\r\n        if (name_2 !== 'Translation' || childValueLen % 4 !== 0) {\r\n            // unknown entry\r\n            offset = roundUp(childDataLast, 4);\r\n            continue;\r\n        }\r\n        var _loop_2 = function (child) {\r\n            if (offset + 4 > childDataLast) {\r\n                return \"break\";\r\n            }\r\n            var lang = view.getUint16(offset, true);\r\n            var codepage = view.getUint16(offset + 2, true);\r\n            offset += 4;\r\n            if (r.filter(function (e) { return e.lang === lang && e.codepage === codepage; })\r\n                .length === 0) {\r\n                r.push({ lang: lang, codepage: codepage });\r\n            }\r\n        };\r\n        for (var child = 0; child < childValueLen; child += 4) {\r\n            var state_1 = _loop_2(child);\r\n            if (state_1 === \"break\")\r\n                break;\r\n        }\r\n        offset = roundUp(childDataLast, 4);\r\n    }\r\n    return r;\r\n}\r\nfunction parseVersionEntry(view, entry) {\r\n    var totalLen = view.getUint16(0, true);\r\n    var dataLen = view.getUint16(2, true);\r\n    // value type must be binary\r\n    if (view.getUint16(4, true) !== 0) {\r\n        throw new Error('Invalid version data format');\r\n    }\r\n    // 40 === roundUp(6 + ByteLenWithNull(L'VS_VERSION_INFO'), 4)\r\n    if (totalLen < dataLen + 40) {\r\n        throw new Error('Invalid version data format');\r\n    }\r\n    if (readStringToNullChar(view, 6, totalLen) !== 'VS_VERSION_INFO') {\r\n        throw new Error('Invalid version data format');\r\n    }\r\n    var d = {\r\n        lang: entry.lang,\r\n        fixedInfo: createFixedInfo(),\r\n        strings: [],\r\n        translations: [],\r\n        unknowns: [],\r\n    };\r\n    var offset = 38; // without padding\r\n    if (dataLen) {\r\n        dataLen += 40; // with padding\r\n        var sig = readUint32WithLastOffset(view, 40, dataLen);\r\n        var sVer = readUint32WithLastOffset(view, 44, dataLen);\r\n        // check signature\r\n        if (sig === 0xfeef04bd && sVer <= 0x10000) {\r\n            d.fixedInfo = {\r\n                fileVersionMS: readUint32WithLastOffset(view, 48, dataLen),\r\n                fileVersionLS: readUint32WithLastOffset(view, 52, dataLen),\r\n                productVersionMS: readUint32WithLastOffset(view, 56, dataLen),\r\n                productVersionLS: readUint32WithLastOffset(view, 60, dataLen),\r\n                fileFlagsMask: readUint32WithLastOffset(view, 64, dataLen),\r\n                fileFlags: readUint32WithLastOffset(view, 68, dataLen),\r\n                fileOS: readUint32WithLastOffset(view, 72, dataLen),\r\n                fileType: readUint32WithLastOffset(view, 76, dataLen),\r\n                fileSubtype: readUint32WithLastOffset(view, 80, dataLen),\r\n                fileDateMS: readUint32WithLastOffset(view, 84, dataLen),\r\n                fileDateLS: readUint32WithLastOffset(view, 88, dataLen),\r\n            };\r\n        }\r\n        offset = dataLen;\r\n    }\r\n    offset = roundUp(offset, 4);\r\n    // parse children\r\n    while (offset < totalLen) {\r\n        var childLen = view.getUint16(offset, true);\r\n        var childLast = offset + childLen;\r\n        // failsafe\r\n        if (childLast > totalLen) {\r\n            childLast = totalLen;\r\n        }\r\n        var name_3 = readStringToNullChar(view, offset + 6, childLast);\r\n        switch (name_3) {\r\n            case 'StringFileInfo':\r\n                d.strings = d.strings.concat(parseStringFileInfo(view, offset, childLast));\r\n                break;\r\n            case 'VarFileInfo':\r\n                d.translations = d.translations.concat(parseVarFileInfo(view, offset, childLast));\r\n                break;\r\n            default:\r\n                // unknown or unsupported type\r\n                d.unknowns.push({\r\n                    name: name_3,\r\n                    entireBin: allocatePartialBinary(view, offset, childLen),\r\n                });\r\n                break;\r\n        }\r\n        offset += roundUp(childLen, 4);\r\n    }\r\n    return d;\r\n}\r\n////////////////////////////////////////////////////////////////////////////////\r\n// serializings\r\nfunction generateStringTable(table) {\r\n    // estimate size\r\n    var size = 24; // roundUp(6 + ByteLenWithNull(L'xxxxxxxx'), 4)\r\n    var keys = Object.keys(table.values);\r\n    size = keys.reduce(function (prev, key) {\r\n        var value = table.values[key];\r\n        if (value == null) {\r\n            return prev;\r\n        }\r\n        var childHeaderSize = roundUp(6 + 2 * (key.length + 1), 4);\r\n        var newSize = roundUp(prev + childHeaderSize + 2 * (value.length + 1), 4);\r\n        // limit to 65532 because the table size is restricted to 16-bit value\r\n        return newSize > 65532 ? prev : newSize;\r\n    }, size);\r\n    // generate binary\r\n    var bin = new ArrayBuffer(size);\r\n    var view = new DataView(bin);\r\n    view.setUint16(0, size, true);\r\n    view.setUint16(2, 0, true); // no value length\r\n    view.setUint16(4, 1, true);\r\n    var langAndCp = ((table.lang & 0xffff) * 0x10000 +\r\n        (table.codepage & 0xffff))\r\n        .toString(16)\r\n        .toLowerCase();\r\n    // fixed length\r\n    if (langAndCp.length < 8) {\r\n        var l = 8 - langAndCp.length;\r\n        langAndCp = '00000000'.substr(0, l) + langAndCp;\r\n    }\r\n    var offset = roundUp(writeStringWithNullChar(view, 6, langAndCp), 4);\r\n    keys.forEach(function (key) {\r\n        var value = table.values[key];\r\n        if (value == null) {\r\n            return;\r\n        }\r\n        var childHeaderSize = roundUp(6 + 2 * (key.length + 1), 4);\r\n        var newSize = roundUp(childHeaderSize + 2 * (value.length + 1), 4);\r\n        if (offset + newSize <= 65532) {\r\n            view.setUint16(offset, newSize, true);\r\n            view.setUint16(offset + 2, value.length + 1, true); // value length is in character count\r\n            view.setUint16(offset + 4, 1, true);\r\n            offset = roundUp(writeStringWithNullChar(view, offset + 6, key), 4);\r\n            offset = roundUp(writeStringWithNullChar(view, offset, value), 4);\r\n        }\r\n    });\r\n    return bin;\r\n}\r\nfunction generateStringTableInfo(tables) {\r\n    // estimate size\r\n    var size = 36; // roundUp(6 + ByteLenWithNull(L'StringFileInfo'), 4)\r\n    var tableBins = tables.map(function (table) { return generateStringTable(table); });\r\n    // (all table sizes are rounded up)\r\n    size += tableBins.reduce(function (p, c) { return p + c.byteLength; }, 0);\r\n    var bin = new ArrayBuffer(size);\r\n    var view = new DataView(bin);\r\n    view.setUint16(0, size, true);\r\n    view.setUint16(2, 0, true); // no value length\r\n    view.setUint16(4, 1, true);\r\n    var offset = roundUp(writeStringWithNullChar(view, 6, 'StringFileInfo'), 4);\r\n    tableBins.forEach(function (table) {\r\n        var len = table.byteLength;\r\n        copyBuffer(bin, offset, table, 0, len);\r\n        offset += len;\r\n    });\r\n    return bin;\r\n}\r\nfunction generateVarFileInfo(translations) {\r\n    // estimate size\r\n    var size = 32; // roundUp(6 + ByteLenWithNull(L'VarFileInfo'), 4)\r\n    // (translation data is fixed length)\r\n    var translationsValueSize = translations.length * 4;\r\n    size += 32 + translationsValueSize;\r\n    var bin = new ArrayBuffer(size);\r\n    var view = new DataView(bin);\r\n    view.setUint16(0, size, true);\r\n    view.setUint16(2, 0, true); // no value length\r\n    view.setUint16(4, 1, true);\r\n    var offset = roundUp(writeStringWithNullChar(view, 6, 'VarFileInfo'), 4);\r\n    view.setUint16(offset, 32 + translationsValueSize, true);\r\n    view.setUint16(offset + 2, translationsValueSize, true);\r\n    view.setUint16(offset + 4, 0, true);\r\n    offset = roundUp(writeStringWithNullChar(view, offset + 6, 'Translation'), 4);\r\n    translations.forEach(function (translation) {\r\n        view.setUint16(offset, translation.lang, true);\r\n        view.setUint16(offset + 2, translation.codepage, true);\r\n        offset += 4;\r\n    });\r\n    return bin;\r\n}\r\nfunction generateVersionEntryBinary(entry) {\r\n    var size = 92; // roundUp(6 + ByteLenWithNull(L'VS_VERSION_INFO'), 4) + 52 (sizeof VS_FIXEDFILEINFO)\r\n    var stringTableInfoBin = generateStringTableInfo(entry.strings);\r\n    var stringTableInfoLen = stringTableInfoBin.byteLength;\r\n    size += stringTableInfoLen;\r\n    var varFileInfoBin = generateVarFileInfo(entry.translations);\r\n    var varFileInfoLen = varFileInfoBin.byteLength;\r\n    size += varFileInfoLen;\r\n    size = entry.unknowns.reduce(function (p, data) { return p + roundUp(data.entireBin.byteLength, 4); }, size);\r\n    var bin = new ArrayBuffer(size);\r\n    var view = new DataView(bin);\r\n    view.setUint16(0, size, true);\r\n    view.setUint16(2, 52, true);\r\n    view.setUint16(4, 0, true); // value is binary\r\n    var offset = roundUp(writeStringWithNullChar(view, 6, 'VS_VERSION_INFO'), 4);\r\n    view.setUint32(offset, 0xfeef04bd, true); // signature\r\n    view.setUint32(offset + 4, 0x10000, true); // structure version\r\n    view.setUint32(offset + 8, entry.fixedInfo.fileVersionMS, true);\r\n    view.setUint32(offset + 12, entry.fixedInfo.fileVersionLS, true);\r\n    view.setUint32(offset + 16, entry.fixedInfo.productVersionMS, true);\r\n    view.setUint32(offset + 20, entry.fixedInfo.productVersionLS, true);\r\n    view.setUint32(offset + 24, entry.fixedInfo.fileFlagsMask, true);\r\n    view.setUint32(offset + 28, entry.fixedInfo.fileFlags, true);\r\n    view.setUint32(offset + 32, entry.fixedInfo.fileOS, true);\r\n    view.setUint32(offset + 36, entry.fixedInfo.fileType, true);\r\n    view.setUint32(offset + 40, entry.fixedInfo.fileSubtype, true);\r\n    view.setUint32(offset + 44, entry.fixedInfo.fileDateMS, true);\r\n    view.setUint32(offset + 48, entry.fixedInfo.fileDateLS, true);\r\n    offset += 52;\r\n    copyBuffer(bin, offset, stringTableInfoBin, 0, stringTableInfoLen);\r\n    offset += stringTableInfoLen;\r\n    copyBuffer(bin, offset, varFileInfoBin, 0, varFileInfoLen);\r\n    offset += varFileInfoLen;\r\n    entry.unknowns.forEach(function (e) {\r\n        var len = e.entireBin.byteLength;\r\n        copyBuffer(bin, offset, e.entireBin, 0, len);\r\n        offset += roundUp(len, 4);\r\n    });\r\n    return bin;\r\n}\r\n////////////////////////////////////////////////////////////////////////////////\r\nfunction clampInt(val, min, max) {\r\n    if (isNaN(val) || val < min) {\r\n        return min;\r\n    }\r\n    else if (val >= max) {\r\n        return max;\r\n    }\r\n    return Math.floor(val);\r\n}\r\nfunction parseVersionArguments(arg1, arg2, arg3, arg4, arg5) {\r\n    var _a;\r\n    var major;\r\n    var minor;\r\n    var micro;\r\n    var revision;\r\n    var lang;\r\n    if (typeof arg1 === 'string' &&\r\n        (typeof arg2 === 'undefined' || typeof arg2 === 'number') &&\r\n        typeof arg3 === 'undefined') {\r\n        _a = arg1\r\n            .split('.')\r\n            .map(function (token) { return clampInt(Number(token), 0, 65535); })\r\n            // add zeros for missing fields\r\n            .concat(0, 0, 0), major = _a[0], minor = _a[1], micro = _a[2], revision = _a[3];\r\n        lang = arg2;\r\n    }\r\n    else {\r\n        major = clampInt(Number(arg1), 0, 65535);\r\n        minor = clampInt(Number(arg2), 0, 65535);\r\n        micro = clampInt(typeof arg3 === 'undefined' ? 0 : Number(arg3), 0, 65535);\r\n        revision = clampInt(typeof arg4 === 'undefined' ? 0 : Number(arg4), 0, 65535);\r\n        lang = arg5;\r\n    }\r\n    return [major, minor, micro, revision, lang];\r\n}\r\n////////////////////////////////////////////////////////////////////////////////\r\n/**\r\n * Treats 'Version information' (`VS_VERSIONINFO`) resource data.\r\n */\r\nvar VersionInfo = /** @class */ (function () {\r\n    function VersionInfo(entry) {\r\n        if (!entry) {\r\n            this.data = {\r\n                lang: 0,\r\n                fixedInfo: createFixedInfo(),\r\n                strings: [],\r\n                translations: [],\r\n                unknowns: [],\r\n            };\r\n        }\r\n        else {\r\n            var view = new DataView(entry.bin);\r\n            this.data = parseVersionEntry(view, entry);\r\n        }\r\n    }\r\n    /** Returns new `VersionInfo` instance with empty data. */\r\n    VersionInfo.createEmpty = function () {\r\n        return new VersionInfo();\r\n    };\r\n    VersionInfo.create = function (arg1, fixedInfo, strings) {\r\n        var lang;\r\n        if (typeof arg1 === 'object') {\r\n            lang = arg1.lang;\r\n            fixedInfo = arg1.fixedInfo;\r\n            strings = arg1.strings;\r\n        }\r\n        else {\r\n            lang = arg1;\r\n        }\r\n        var vi = new VersionInfo();\r\n        vi.data.lang = lang;\r\n        // copy all specified values\r\n        // (if unspecified, use default value set by `createFixedInfo`)\r\n        for (var _fixedInfoKey in fixedInfo) {\r\n            var fixedInfoKey = _fixedInfoKey;\r\n            if (fixedInfoKey in fixedInfo) {\r\n                var value = fixedInfo[fixedInfoKey];\r\n                if (value != null) {\r\n                    vi.data.fixedInfo[fixedInfoKey] = value;\r\n                }\r\n            }\r\n        }\r\n        vi.data.strings = strings.map(function (_a) {\r\n            var lang = _a.lang, codepage = _a.codepage, values = _a.values;\r\n            return ({\r\n                lang: lang,\r\n                codepage: codepage,\r\n                values: cloneObject(values),\r\n            });\r\n        });\r\n        vi.data.translations = strings.map(function (_a) {\r\n            var lang = _a.lang, codepage = _a.codepage;\r\n            return ({ lang: lang, codepage: codepage });\r\n        });\r\n        return vi;\r\n    };\r\n    /** Pick up all version-info entries */\r\n    VersionInfo.fromEntries = function (entries) {\r\n        return entries\r\n            .filter(function (e) { return e.type === 16; })\r\n            .map(function (e) { return new VersionInfo(e); });\r\n    };\r\n    Object.defineProperty(VersionInfo.prototype, \"lang\", {\r\n        /** A language value for this resource entry. */\r\n        get: function () {\r\n            return this.data.lang;\r\n        },\r\n        set: function (value) {\r\n            this.data.lang = value;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(VersionInfo.prototype, \"fixedInfo\", {\r\n        /**\r\n         * The property of fixed version info, containing file version, product version, etc.\r\n         * (data: `VS_FIXEDFILEINFO`)\r\n         *\r\n         * Although this property is read-only, you can rewrite\r\n         * each child fields directly to apply data.\r\n         */\r\n        get: function () {\r\n            return this.data.fixedInfo;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    /**\r\n     * Returns all languages that the executable supports. (data: `VarFileInfo`)\r\n     *\r\n     * Usually the returned array is equal to the one returned by `getAllLanguagesForStringValues`,\r\n     * but some resource-generating tools doesn't generate same values.\r\n     */\r\n    VersionInfo.prototype.getAvailableLanguages = function () {\r\n        return this.data.translations.slice(0);\r\n    };\r\n    /**\r\n     * Replaces all languages that the executable supports.\r\n     */\r\n    VersionInfo.prototype.replaceAvailableLanguages = function (languages) {\r\n        this.data.translations = languages.slice(0);\r\n    };\r\n    /**\r\n     * Returns all string values for the specified language. (data: values in lang-charset block of `StringFileInfo`)\r\n     */\r\n    VersionInfo.prototype.getStringValues = function (language) {\r\n        var a = this.data.strings\r\n            .filter(function (e) {\r\n            return e.lang === language.lang && e.codepage === language.codepage;\r\n        })\r\n            .map(function (e) { return e.values; });\r\n        return a.length > 0 ? a[0] : {};\r\n    };\r\n    /**\r\n     * Returns all languages used by string values. (data: lang-charset name of `StringFileInfo`)\r\n     *\r\n     * Usually the returned array is equal to the one returned by `getAvailableLanguages`,\r\n     * but some resource-generating tools doesn't generate same values.\r\n     */\r\n    VersionInfo.prototype.getAllLanguagesForStringValues = function () {\r\n        return this.data.strings.map(function (_a) {\r\n            var codepage = _a.codepage, lang = _a.lang;\r\n            return ({ codepage: codepage, lang: lang });\r\n        });\r\n    };\r\n    /**\r\n     * Add or replace the string values.\r\n     * @param language language info\r\n     * @param values string values (key-value pairs)\r\n     * @param addToAvailableLanguage set `true` to add `language` into available languages\r\n     *     if not existing in `getAvailableLanguages()` (default: `true`)\r\n     */\r\n    VersionInfo.prototype.setStringValues = function (language, values, addToAvailableLanguage) {\r\n        if (addToAvailableLanguage === void 0) { addToAvailableLanguage = true; }\r\n        var a = this.data.strings.filter(function (e) { return e.lang === language.lang && e.codepage === language.codepage; });\r\n        var table;\r\n        if (a.length === 0) {\r\n            table = {\r\n                lang: language.lang,\r\n                codepage: language.codepage,\r\n                values: {},\r\n            };\r\n            this.data.strings.push(table);\r\n        }\r\n        else {\r\n            table = a[0];\r\n        }\r\n        for (var key in values) {\r\n            var value = values[key];\r\n            if (value != null) {\r\n                table.values[key] = value;\r\n            }\r\n        }\r\n        if (addToAvailableLanguage) {\r\n            // if no translation is available, then add it\r\n            var t = this.data.translations.filter(function (e) {\r\n                return e.lang === language.lang && e.codepage === language.codepage;\r\n            });\r\n            if (t.length === 0) {\r\n                this.data.translations.push({\r\n                    lang: language.lang,\r\n                    codepage: language.codepage,\r\n                });\r\n            }\r\n        }\r\n    };\r\n    /**\r\n     * Add or replace the string value.\r\n     * @param language language info\r\n     * @param key the key name of string value\r\n     * @param value the string value\r\n     * @param addToAvailableLanguage set `true` to add `language` into available languages\r\n     *     if not existing in `getAvailableLanguages()` (default: `true`)\r\n     */\r\n    VersionInfo.prototype.setStringValue = function (language, key, value, addToAvailableLanguage) {\r\n        var _a;\r\n        if (addToAvailableLanguage === void 0) { addToAvailableLanguage = true; }\r\n        this.setStringValues(language, (_a = {}, _a[key] = value, _a), addToAvailableLanguage);\r\n    };\r\n    /**\r\n     * Remove all string values for specified language.\r\n     * @param language language info\r\n     * @param removeFromAvailableLanguage set `true` to remove `language` from available languages\r\n     *     if existing in `getAvailableLanguages()` (default: `true`)\r\n     */\r\n    VersionInfo.prototype.removeAllStringValues = function (language, removeFromAvailableLanguage) {\r\n        if (removeFromAvailableLanguage === void 0) { removeFromAvailableLanguage = true; }\r\n        var strings = this.data.strings;\r\n        var len = strings.length;\r\n        for (var i = 0; i < len; ++i) {\r\n            var e = strings[i];\r\n            if (e != null &&\r\n                e.lang === language.lang &&\r\n                e.codepage === language.codepage) {\r\n                strings.splice(i, 1);\r\n                if (removeFromAvailableLanguage) {\r\n                    var translations = this.data.translations;\r\n                    for (var j = 0; j < translations.length; j++) {\r\n                        var t = translations[j];\r\n                        if (t != null &&\r\n                            t.lang === language.lang &&\r\n                            t.codepage === language.codepage) {\r\n                            translations.splice(j, 1);\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                break;\r\n            }\r\n        }\r\n    };\r\n    /**\r\n     * Remove specified string value for specified language.\r\n     * @param language language info\r\n     * @param key the key name of string value to be removed\r\n     * @param removeFromAvailableLanguage set `true` to remove `language` from available languages\r\n     *     if no more string values exist for `language` (default: `true`)\r\n     */\r\n    VersionInfo.prototype.removeStringValue = function (language, key, removeFromAvailableLanguage) {\r\n        if (removeFromAvailableLanguage === void 0) { removeFromAvailableLanguage = true; }\r\n        var strings = this.data.strings;\r\n        var len = strings.length;\r\n        for (var i = 0; i < len; ++i) {\r\n            var e = strings[i];\r\n            if (e != null &&\r\n                e.lang === language.lang &&\r\n                e.codepage === language.codepage) {\r\n                try {\r\n                    // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\r\n                    delete e.values[key];\r\n                }\r\n                catch (_ex) { }\r\n                if (removeFromAvailableLanguage &&\r\n                    Object.keys(e.values).length === 0) {\r\n                    // if no entries are left, remove table and translations\r\n                    strings.splice(i, 1);\r\n                    var translations = this.data.translations;\r\n                    for (var j = 0; j < translations.length; j++) {\r\n                        var t = translations[j];\r\n                        if (t != null &&\r\n                            t.lang === language.lang &&\r\n                            t.codepage === language.codepage) {\r\n                            translations.splice(j, 1);\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                break;\r\n            }\r\n        }\r\n    };\r\n    /**\r\n     * Creates `Type.ResourceEntry` object for this instance.\r\n     * Usually `outputToResourceEntries` is suitable for generating resource data\r\n     * into executables, but you can use this method if necessary.\r\n     */\r\n    VersionInfo.prototype.generateResource = function () {\r\n        var bin = generateVersionEntryBinary(this.data);\r\n        return {\r\n            type: 16,\r\n            id: 1,\r\n            lang: this.lang,\r\n            codepage: 1200,\r\n            bin: bin,\r\n        };\r\n    };\r\n    /**\r\n     * Generates version info resource data (using `generateResource()`) and emits into `entries` array.\r\n     * If version info resource already exists in `entries`, this method replaces it with the new one.\r\n     * @param entries resource entry array for output\r\n     */\r\n    VersionInfo.prototype.outputToResourceEntries = function (entries) {\r\n        var res = this.generateResource();\r\n        var len = entries.length;\r\n        for (var i = 0; i < len; ++i) {\r\n            var e = entries[i];\r\n            if (e != null &&\r\n                e.type === 16 &&\r\n                e.id === res.id &&\r\n                e.lang === res.lang) {\r\n                entries[i] = res;\r\n                return;\r\n            }\r\n        }\r\n        entries.push(res);\r\n    };\r\n    // utility methods\r\n    VersionInfo.prototype.getDefaultVersionLang = function (propName) {\r\n        // first, use `this.lang` if it is a numeric value\r\n        var num = Number(this.lang);\r\n        if (this.lang !== '' && !isNaN(num)) {\r\n            return num;\r\n        }\r\n        // second, use lang value for propName if there is only one language\r\n        var a = this.data.strings\r\n            .filter(function (e) { return propName in e.values && e.values[propName] != null; })\r\n            .map(function (e) { return e.lang; });\r\n        if (a.length === 1) {\r\n            return a[0];\r\n        }\r\n        // use English language\r\n        return 1033;\r\n    };\r\n    VersionInfo.prototype.setFileVersion = function (arg1, arg2, arg3, arg4, arg5) {\r\n        this.setFileVersionImpl.apply(this, parseVersionArguments(arg1, arg2, arg3, arg4, arg5));\r\n    };\r\n    VersionInfo.prototype.setFileVersionImpl = function (major, minor, micro, revision, lang) {\r\n        lang =\r\n            typeof lang !== 'undefined'\r\n                ? lang\r\n                : this.getDefaultVersionLang('FileVersion');\r\n        this.fixedInfo.fileVersionMS = (major << 16) | minor;\r\n        this.fixedInfo.fileVersionLS = (micro << 16) | revision;\r\n        this.setStringValue({ lang: lang, codepage: 1200 }, 'FileVersion', \"\".concat(major, \".\").concat(minor, \".\").concat(micro, \".\").concat(revision), true);\r\n    };\r\n    VersionInfo.prototype.setProductVersion = function (arg1, arg2, arg3, arg4, arg5) {\r\n        this.setProductVersionImpl.apply(this, parseVersionArguments(arg1, arg2, arg3, arg4, arg5));\r\n    };\r\n    VersionInfo.prototype.setProductVersionImpl = function (major, minor, micro, revision, lang) {\r\n        lang =\r\n            typeof lang !== 'undefined'\r\n                ? lang\r\n                : this.getDefaultVersionLang('ProductVersion');\r\n        this.fixedInfo.productVersionMS = (major << 16) | minor;\r\n        this.fixedInfo.productVersionLS = (micro << 16) | revision;\r\n        this.setStringValue({ lang: lang, codepage: 1200 }, 'ProductVersion', \"\".concat(major, \".\").concat(minor, \".\").concat(micro, \".\").concat(revision), true);\r\n    };\r\n    return VersionInfo;\r\n}());\r\nexport default VersionInfo;\r\n","var RawDERObject = /** @class */ (function () {\r\n    function RawDERObject(data) {\r\n        this.data = data;\r\n    }\r\n    RawDERObject.prototype.toDER = function () {\r\n        return [].slice.call(this.data);\r\n    };\r\n    return RawDERObject;\r\n}());\r\nexport { RawDERObject };\r\n","export function makeDERLength(length) {\r\n    if (length < 0x80) {\r\n        return [length];\r\n    }\r\n    var r = [];\r\n    while (true) {\r\n        r.push(length & 0xff);\r\n        if (length < 0x100) {\r\n            break;\r\n        }\r\n        length >>= 8;\r\n    }\r\n    r.push(0x80 + r.length);\r\n    return r.reverse();\r\n}\r\nexport function makeDERIA5String(text) {\r\n    // convert to char-code array and filter to [0-127]\r\n    var r = [].map\r\n        .call(text, function (c) { return c.charCodeAt(0); })\r\n        .filter(function (n) { return n < 128; });\r\n    return [0x16].concat(makeDERLength(r.length)).concat(r);\r\n}\r\nexport function makeDERBMPString(text) {\r\n    // convert to char-code array\r\n    // NOTE: In ECMAScript `charCodeAt` returns surrogate pair for >=0x10000 codes,\r\n    //   and surrogate pair is valid for BMPString data\r\n    var r = [].map.call(text, function (c) { return c.charCodeAt(0); });\r\n    var ua = new Uint8Array(r.length * 2);\r\n    var dv = new DataView(ua.buffer);\r\n    // store codes as big-endian\r\n    r.forEach(function (v, i) {\r\n        dv.setUint16(i * 2, v, false);\r\n    });\r\n    return [0x1e].concat(makeDERLength(ua.length)).concat(\r\n    // convert Uint8Array to number[] (not using spread operator)\r\n    [].slice.call(ua));\r\n}\r\nexport function makeDEROctetString(bin) {\r\n    if (!(bin instanceof Array)) {\r\n        // convert Uint8Array to number[] (not using spread operator)\r\n        bin = [].slice.call(bin);\r\n    }\r\n    return [0x04].concat(makeDERLength(bin.length)).concat(bin);\r\n}\r\nexport function makeDERTaggedData(tag, body) {\r\n    return [0xa0 + tag].concat(makeDERLength(body.length)).concat(body);\r\n}\r\nexport function makeDERSequence(body) {\r\n    return [0x30].concat(makeDERLength(body.length)).concat(body);\r\n}\r\nexport function arrayToDERSet(items) {\r\n    var r = items.reduce(function (prev, item) {\r\n        return prev.concat(item instanceof Array ? item : item.toDER());\r\n    }, []);\r\n    return [0x31].concat(makeDERLength(r.length)).concat(r);\r\n}\r\n","import { makeDERLength } from './derUtil.js';\r\nvar ObjectIdentifier = /** @class */ (function () {\r\n    function ObjectIdentifier(value) {\r\n        if (typeof value === 'string') {\r\n            this.value = value.split(/\\./g).map(function (s) { return Number(s); });\r\n        }\r\n        else {\r\n            this.value = value;\r\n        }\r\n    }\r\n    ObjectIdentifier.prototype.toDER = function () {\r\n        var id = this.value;\r\n        var r = [];\r\n        if (id.length < 2) {\r\n            throw new Error(\"Unexpected 'value' field\");\r\n        }\r\n        // first byte will be (x * 40 + y) for 'x.y.****'\r\n        r.push(id[0] * 40 + id[1]);\r\n        for (var i = 2; i < id.length; ++i) {\r\n            // store as variable-length value\r\n            var val = id[i];\r\n            var isFirst = true;\r\n            var insertPos = r.length;\r\n            while (true) {\r\n                var v = val & 0x7f;\r\n                if (!isFirst) {\r\n                    v += 0x80;\r\n                }\r\n                r.splice(insertPos, 0, v);\r\n                if (val < 0x80) {\r\n                    break;\r\n                }\r\n                isFirst = false;\r\n                val = Math.floor(val / 0x80);\r\n            }\r\n        }\r\n        return [0x06].concat(makeDERLength(r.length)).concat(r);\r\n    };\r\n    return ObjectIdentifier;\r\n}());\r\nexport default ObjectIdentifier;\r\n","import ObjectIdentifier from './ObjectIdentifier.js';\r\n// 1.3.14.3.2.26\r\n// prettier-ignore\r\nexport var OID_SHA1_NO_SIGN = new ObjectIdentifier([1, 3, 14, 3, 2, 26]);\r\n// 2.16.840.1.101.3.4.2.1\r\n// prettier-ignore\r\nexport var OID_SHA256_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 1]);\r\n// 2.16.840.1.101.3.4.2.2\r\n// prettier-ignore\r\nexport var OID_SHA384_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 2]);\r\n// 2.16.840.1.101.3.4.2.3\r\n// prettier-ignore\r\nexport var OID_SHA512_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 3]);\r\n// 2.16.840.1.101.3.4.2.4\r\n// prettier-ignore\r\nexport var OID_SHA224_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 4]);\r\n// 2.16.840.1.101.3.4.2.5\r\n// prettier-ignore\r\nexport var OID_SHA512_224_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 5]);\r\n// 2.16.840.1.101.3.4.2.6\r\n// prettier-ignore\r\nexport var OID_SHA512_256_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 6]);\r\n// 2.16.840.1.101.3.4.2.7\r\n// prettier-ignore\r\nexport var OID_SHA3_224_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 7]);\r\n// 2.16.840.1.101.3.4.2.8\r\n// prettier-ignore\r\nexport var OID_SHA3_256_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 8]);\r\n// 2.16.840.1.101.3.4.2.9\r\n// prettier-ignore\r\nexport var OID_SHA3_384_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 9]);\r\n// 2.16.840.1.101.3.4.2.10\r\n// prettier-ignore\r\nexport var OID_SHA3_512_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 10]);\r\n// 2.16.840.1.101.3.4.2.11\r\n// prettier-ignore\r\nexport var OID_SHAKE128_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 11]);\r\n// 2.16.840.1.101.3.4.2.12\r\n// prettier-ignore\r\nexport var OID_SHAKE256_NO_SIGN = new ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 12]);\r\n// 1.2.840.113549.1.1.1\r\n// prettier-ignore\r\nexport var OID_RSA = new ObjectIdentifier([1, 2, 840, 113549, 1, 1, 1]);\r\n// 1.2.840.10040.4.1\r\n// prettier-ignore\r\nexport var OID_DSA = new ObjectIdentifier([1, 2, 840, 10040, 4, 1]);\r\n// 1.2.840.113549.1.7.2\r\n// prettier-ignore\r\nexport var OID_SIGNED_DATA = new ObjectIdentifier([1, 2, 840, 113549, 1, 7, 2]);\r\n// 1.2.840.113549.1.9.3\r\n// prettier-ignore\r\nexport var OID_CONTENT_TYPE = new ObjectIdentifier([1, 2, 840, 113549, 1, 9, 3]);\r\n// 1.2.840.113549.1.9.4\r\n// prettier-ignore\r\nexport var OID_MESSAGE_DIGEST = new ObjectIdentifier([1, 2, 840, 113549, 1, 9, 4]);\r\n// 1.3.6.1.4.1.311.2.1.11\r\n// prettier-ignore\r\nexport var OID_SPC_STATEMENT_TYPE_OBJID = new ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 2, 1, 11]);\r\n// 1.3.6.1.4.1.311.2.1.12\r\n// prettier-ignore\r\nexport var OID_SPC_SP_OPUS_INFO_OBJID = new ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 2, 1, 12]);\r\n// 1.3.6.1.4.1.311.2.1.21\r\n// prettier-ignore\r\nexport var OID_SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID = new ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 2, 1, 21]);\r\n// 1.3.6.1.4.1.311.3.3.1\r\n// prettier-ignore\r\nexport var OID_RFC3161_COUNTER_SIGNATURE = new ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 3, 3, 1]);\r\n","import { RawDERObject } from './data/DERObject.js';\r\nimport { OID_SIGNED_DATA } from './data/KnownOids.js';\r\nexport function toUint8Array(bin) {\r\n    if ('buffer' in bin) {\r\n        return new Uint8Array(bin.buffer, bin.byteOffset, bin.byteLength);\r\n    }\r\n    else {\r\n        return new Uint8Array(bin);\r\n    }\r\n}\r\n/** @return [length, afterOffset] */\r\nexport function calculateDERLength(data, offset) {\r\n    var actualLength = 0;\r\n    var value = data[offset];\r\n    if (value == null) {\r\n        throw new Error('Invalid \"offset\" value');\r\n    }\r\n    else if (value < 0x80) {\r\n        actualLength = value;\r\n        ++offset;\r\n    }\r\n    else if (value === 0x80) {\r\n        throw new Error('Not supported certificate data (variable length)');\r\n    }\r\n    else {\r\n        var c = value & 0x7f;\r\n        ++offset;\r\n        while (c--) {\r\n            if (offset >= data.length) {\r\n                throw new Error('Invalid certificate data (invalid sequence length)');\r\n            }\r\n            actualLength <<= 8;\r\n            actualLength |= data[offset];\r\n            ++offset;\r\n        }\r\n    }\r\n    return [actualLength, offset];\r\n}\r\nfunction skipField(data, offsetOfDataHead) {\r\n    var _a = calculateDERLength(data, offsetOfDataHead + 1), len = _a[0], off = _a[1];\r\n    return off + len;\r\n}\r\nfunction pickCertificatesIfDERHasSignedData(ub, offset) {\r\n    var _a, _b, _c, _d, _e;\r\n    if (ub.length < offset + 2) {\r\n        return null;\r\n    }\r\n    if (ub[offset] !== 0x30) {\r\n        return null;\r\n    }\r\n    var tempLength;\r\n    _a = calculateDERLength(ub, offset + 1), tempLength = _a[0], offset = _a[1];\r\n    if (tempLength > ub.length - offset) {\r\n        throw new Error('Invalid certificate data (insufficient data length)');\r\n    }\r\n    // if the first item is not contentType, then return\r\n    if (ub[offset] !== 0x6) {\r\n        return null;\r\n    }\r\n    var signedDataOid = OID_SIGNED_DATA.toDER();\r\n    for (var i = 0; i < signedDataOid.length; ++i) {\r\n        if (ub[offset + i] !== signedDataOid[i]) {\r\n            return null;\r\n        }\r\n    }\r\n    // if contentType is OID_SIGNED_DATA, then check sequence format\r\n    // ContentInfo.content\r\n    offset += signedDataOid.length;\r\n    // [0] IMPLICIT\r\n    if (ub[offset] !== 0xa0) {\r\n        throw new Error('Invalid certificate data (no content in contentInfo)');\r\n    }\r\n    _b = calculateDERLength(ub, offset + 1), tempLength = _b[0], offset = _b[1];\r\n    if (offset + tempLength > ub.length) {\r\n        throw new Error('Invalid certificate data (invalid length for content)');\r\n    }\r\n    // sequence\r\n    if (ub[offset] !== 0x30) {\r\n        throw new Error('Invalid certificate data (unexpected signedData)');\r\n    }\r\n    _c = calculateDERLength(ub, offset + 1), tempLength = _c[0], offset = _c[1];\r\n    if (offset + tempLength > ub.length) {\r\n        throw new Error('Invalid certificate data (invalid length for signedData)');\r\n    }\r\n    // version\r\n    if (ub[offset] !== 0x2 ||\r\n        ub[offset + 1] !== 0x1 ||\r\n        ub[offset + 2] !== 0x1) {\r\n        throw new Error('Invalid certificate data (unexpected signedData.version)');\r\n    }\r\n    offset += 3;\r\n    // digestAlgorithms (skip)\r\n    if (ub[offset] !== 0x31) {\r\n        throw new Error('Invalid certificate data (no signedData.digestAlgorithms)');\r\n    }\r\n    _d = calculateDERLength(ub, offset + 1), tempLength = _d[0], offset = _d[1];\r\n    if (offset + tempLength > ub.length) {\r\n        throw new Error('Invalid certificate data (invalid length for signedData.digestAlgorithms)');\r\n    }\r\n    offset += tempLength;\r\n    // contentInfo (skip)\r\n    if (ub[offset] !== 0x30) {\r\n        throw new Error('Invalid certificate data (no signedData.contentInfo)');\r\n    }\r\n    _e = calculateDERLength(ub, offset + 1), tempLength = _e[0], offset = _e[1];\r\n    if (offset + tempLength > ub.length) {\r\n        throw new Error('Invalid certificate data (invalid length for signedData.contentInfo)');\r\n    }\r\n    offset += tempLength;\r\n    // certificates\r\n    if (ub[offset] !== 0xa0) {\r\n        throw new Error('Invalid certificate data (no signedData.certificates)');\r\n    }\r\n    var _f = calculateDERLength(ub, offset + 1), certsLength = _f[0], newOffset = _f[1];\r\n    if (newOffset + certsLength > ub.length) {\r\n        throw new Error('Invalid certificate data (invalid length for signedData.certificates)');\r\n    }\r\n    return ub.subarray(offset, newOffset + certsLength);\r\n}\r\n/** @return [issuer, serialNumber] */\r\nexport function pickIssuerAndSerialNumberDERFromCert(bin) {\r\n    var _a, _b;\r\n    if (Array.isArray(bin)) {\r\n        // use first one and call again\r\n        if (bin.length === 0) {\r\n            throw new Error('No data is specified.');\r\n        }\r\n        return pickIssuerAndSerialNumberDERFromCert(bin[0]);\r\n    }\r\n    var ub = toUint8Array(bin);\r\n    if (ub.length < 2) {\r\n        throw new Error('Invalid certificate data');\r\n    }\r\n    if (ub[0] !== 0x30) {\r\n        throw new Error('Not supported certificate data (non-`Certificate`-format data)');\r\n    }\r\n    var certsBin = pickCertificatesIfDERHasSignedData(ub, 0);\r\n    if (certsBin) {\r\n        // certificates\r\n        var _c = calculateDERLength(certsBin, 1), tempLength_1 = _c[0], eaten_1 = _c[1];\r\n        if (eaten_1 + tempLength_1 > certsBin.length) {\r\n            throw new Error('Invalid certificate data (invalid length for signedData.certificates)');\r\n        }\r\n        // pick first certificate and call again\r\n        if (certsBin[eaten_1] !== 0x30) {\r\n            throw new Error('Invalid certificate data (no signedData.certificates[0])');\r\n        }\r\n        var _d = calculateDERLength(certsBin, eaten_1 + 1), certLength = _d[0], tempOffset = _d[1];\r\n        if (tempOffset + certLength > certsBin.length) {\r\n            throw new Error('Invalid certificate data (invalid length for signedData.certificates[0])');\r\n        }\r\n        return pickIssuerAndSerialNumberDERFromCert(certsBin.subarray(eaten_1, tempOffset + certLength));\r\n    }\r\n    var tempLength;\r\n    var eaten;\r\n    _a = calculateDERLength(ub, 1), tempLength = _a[0], eaten = _a[1];\r\n    if (tempLength > ub.length - eaten) {\r\n        throw new Error('Invalid certificate data (insufficient data length)');\r\n    }\r\n    if (ub[eaten] !== 0x30) {\r\n        throw new Error('Invalid certificate data (missing tbsCertificate)');\r\n    }\r\n    // Certificate\r\n    var tbsCertificateLen;\r\n    _b = calculateDERLength(ub, eaten + 1), tbsCertificateLen = _b[0], eaten = _b[1];\r\n    if (tbsCertificateLen > ub.length - eaten) {\r\n        throw new Error('Invalid certificate data (invalid tbsCertificate length)');\r\n    }\r\n    var tbsOffsetLast = eaten + tbsCertificateLen;\r\n    // TBSCertificate\r\n    // :skip version\r\n    if (ub[eaten] === 0xa0) {\r\n        eaten = skipField(ub, eaten);\r\n        if (eaten >= tbsOffsetLast) {\r\n            throw new Error('Invalid certificate data (insufficient tbsCertificate data: after version)');\r\n        }\r\n    }\r\n    // pick serialNumber\r\n    if (ub[eaten] !== 2) {\r\n        throw new Error('Invalid certificate data (invalid serialNumber)');\r\n    }\r\n    var offsetAfterSerialNumber = skipField(ub, eaten);\r\n    if (eaten >= tbsOffsetLast) {\r\n        throw new Error('Invalid certificate data (insufficient tbsCertificate data: after serialNumber)');\r\n    }\r\n    var serialNumberDER = [].slice.call(ub, eaten, offsetAfterSerialNumber);\r\n    eaten = offsetAfterSerialNumber;\r\n    // :skip algorithmIdentifier\r\n    if (ub[eaten] !== 0x30) {\r\n        throw new Error('Invalid certificate data (invalid algorithmIdentifier)');\r\n    }\r\n    eaten = skipField(ub, eaten);\r\n    if (eaten >= tbsOffsetLast) {\r\n        throw new Error('Invalid certificate data (insufficient tbsCertificate data: after serialNumber)');\r\n    }\r\n    // pick issuer\r\n    // Name ::= CHOICE { RDNSequence }\r\n    // RDNSequence ::= SEQUENCE OF RelativeDistinguishedName\r\n    if (ub[eaten] !== 0x30) {\r\n        throw new Error('Invalid certificate data (invalid issuer)');\r\n    }\r\n    var offsetAfterIssuer = skipField(ub, eaten);\r\n    if (offsetAfterIssuer > tbsOffsetLast) {\r\n        throw new Error('Invalid certificate data (insufficient tbsCertificate data: issuer)');\r\n    }\r\n    return [\r\n        // return entire issuer sequence\r\n        [].slice.call(ub, eaten, offsetAfterIssuer),\r\n        serialNumberDER,\r\n    ];\r\n}\r\nexport function certBinToCertificatesDER(bin) {\r\n    if (Array.isArray(bin)) {\r\n        // use all items, map with `certBinToCertificatesDER`, and concat all\r\n        return bin\r\n            .map(certBinToCertificatesDER)\r\n            .reduce(function (prev, cur) { return prev.concat(cur); }, []);\r\n    }\r\n    var ub = toUint8Array(bin);\r\n    var certsBin = pickCertificatesIfDERHasSignedData(ub, 0);\r\n    if (certsBin) {\r\n        // certificates\r\n        var _a = calculateDERLength(certsBin, 1), tempLength = _a[0], eaten = _a[1];\r\n        if (eaten + tempLength > certsBin.length) {\r\n            throw new Error('Invalid certificate data (invalid length for signedData.certificates)');\r\n        }\r\n        var offsetLast = eaten + tempLength;\r\n        var rawData = [];\r\n        for (var offset = eaten; offset < offsetLast;) {\r\n            // pick certificates\r\n            if (certsBin[offset] !== 0x30) {\r\n                throw new Error('Invalid certificate data (no signedData.certificates[*])');\r\n            }\r\n            var _b = calculateDERLength(certsBin, offset + 1), certLength = _b[0], tempOffset = _b[1];\r\n            if (tempOffset + certLength > certsBin.length) {\r\n                throw new Error('Invalid certificate data (invalid length for signedData.certificates[*])');\r\n            }\r\n            rawData.push(new RawDERObject(certsBin.subarray(offset, tempOffset + certLength)));\r\n            offset = tempOffset + certLength;\r\n        }\r\n        return rawData;\r\n    }\r\n    else {\r\n        return [new RawDERObject(ub)];\r\n    }\r\n}\r\n","import { makeDERSequence } from './derUtil.js';\r\nvar AlgorithmIdentifier = /** @class */ (function () {\r\n    function AlgorithmIdentifier(algorithm) {\r\n        this.algorithm = algorithm;\r\n    }\r\n    AlgorithmIdentifier.prototype.toDER = function () {\r\n        var r = this.algorithm.toDER();\r\n        return makeDERSequence(r.concat(\r\n        // parameters is not used now\r\n        [0x05, 0x00]));\r\n    };\r\n    return AlgorithmIdentifier;\r\n}());\r\nexport default AlgorithmIdentifier;\r\n","import { makeDERSequence, makeDERTaggedData } from './derUtil.js';\r\n// abstract\r\nvar ContentInfo = /** @class */ (function () {\r\n    function ContentInfo(contentType, content) {\r\n        this.contentType = contentType;\r\n        this.content = content;\r\n    }\r\n    ContentInfo.prototype.toDER = function () {\r\n        return makeDERSequence(this.contentType\r\n            .toDER()\r\n            .concat(makeDERTaggedData(0, this.content.toDER())));\r\n    };\r\n    return ContentInfo;\r\n}());\r\nexport default ContentInfo;\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport ContentInfo from './ContentInfo.js';\r\nvar CertificateDataRoot = /** @class */ (function (_super) {\r\n    __extends(CertificateDataRoot, _super);\r\n    function CertificateDataRoot() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    return CertificateDataRoot;\r\n}(ContentInfo));\r\nexport default CertificateDataRoot;\r\n","import { makeDERSequence, makeDEROctetString } from './derUtil.js';\r\nvar DigestInfo = /** @class */ (function () {\r\n    function DigestInfo(digestAlgorithm, digest) {\r\n        this.digestAlgorithm = digestAlgorithm;\r\n        this.digest = digest;\r\n    }\r\n    DigestInfo.prototype.toDER = function () {\r\n        var digest = this.digest;\r\n        var digestArray;\r\n        if ('buffer' in digest) {\r\n            digestArray = new Uint8Array(digest.buffer, digest.byteOffset, digest.byteLength);\r\n        }\r\n        else {\r\n            digestArray = new Uint8Array(digest);\r\n        }\r\n        var derData = this.digestAlgorithm\r\n            .toDER()\r\n            .concat(makeDEROctetString(digestArray));\r\n        return makeDERSequence(derData);\r\n    };\r\n    return DigestInfo;\r\n}());\r\nexport default DigestInfo;\r\n","import { makeDERSequence } from './derUtil.js';\r\nvar IssuerAndSerialNumber = /** @class */ (function () {\r\n    function IssuerAndSerialNumber(issuer, serialNumber) {\r\n        this.issuer = issuer;\r\n        this.serialNumber = serialNumber;\r\n    }\r\n    IssuerAndSerialNumber.prototype.toDER = function () {\r\n        return makeDERSequence(this.issuer.toDER().concat(this.serialNumber.toDER()));\r\n    };\r\n    return IssuerAndSerialNumber;\r\n}());\r\nexport default IssuerAndSerialNumber;\r\n","import { arrayToDERSet, makeDERSequence, makeDERTaggedData, } from './derUtil.js';\r\nvar SignedData = /** @class */ (function () {\r\n    function SignedData(version, digestAlgorithms, contentInfo, signerInfos, certificates, crls) {\r\n        this.version = version;\r\n        this.digestAlgorithms = digestAlgorithms;\r\n        this.contentInfo = contentInfo;\r\n        this.signerInfos = signerInfos;\r\n        this.certificates = certificates;\r\n        this.crls = crls;\r\n    }\r\n    SignedData.prototype.toDER = function () {\r\n        var r = [0x02, 0x01, this.version & 0xff]\r\n            .concat(arrayToDERSet(this.digestAlgorithms))\r\n            .concat(this.contentInfo.toDER());\r\n        if (this.certificates && this.certificates.length > 0) {\r\n            var allCertsDER = arrayToDERSet(this.certificates);\r\n            // IMPLICIT SET\r\n            allCertsDER[0] = 0xa0;\r\n            r = r.concat(allCertsDER);\r\n        }\r\n        if (this.crls) {\r\n            r = r.concat(makeDERTaggedData(1, arrayToDERSet(this.crls)));\r\n        }\r\n        r = r.concat(arrayToDERSet(this.signerInfos));\r\n        return makeDERSequence(r);\r\n    };\r\n    return SignedData;\r\n}());\r\nexport default SignedData;\r\n","import { makeDERSequence, arrayToDERSet, makeDEROctetString, } from './derUtil.js';\r\nvar SignerInfo = /** @class */ (function () {\r\n    function SignerInfo(version, issuerAndSerialNumber, digestAlgorithm, digestEncryptionAlgorithm, encryptedDigest, authenticatedAttributes, unauthenticatedAttributes) {\r\n        this.version = version;\r\n        this.issuerAndSerialNumber = issuerAndSerialNumber;\r\n        this.digestAlgorithm = digestAlgorithm;\r\n        this.digestEncryptionAlgorithm = digestEncryptionAlgorithm;\r\n        this.encryptedDigest = encryptedDigest;\r\n        this.authenticatedAttributes = authenticatedAttributes;\r\n        this.unauthenticatedAttributes = unauthenticatedAttributes;\r\n    }\r\n    SignerInfo.prototype.toDER = function () {\r\n        var r = [0x02, 0x01, this.version & 0xff]\r\n            .concat(this.issuerAndSerialNumber.toDER())\r\n            .concat(this.digestAlgorithm.toDER());\r\n        if (this.authenticatedAttributes &&\r\n            this.authenticatedAttributes.length > 0) {\r\n            var a = arrayToDERSet(this.authenticatedAttributes);\r\n            // [0] IMPLICIT\r\n            a[0] = 0xa0;\r\n            r = r.concat(a);\r\n        }\r\n        r = r\r\n            .concat(this.digestEncryptionAlgorithm.toDER())\r\n            .concat(makeDEROctetString(this.encryptedDigest));\r\n        if (this.unauthenticatedAttributes &&\r\n            this.unauthenticatedAttributes.length > 0) {\r\n            var u = arrayToDERSet(this.unauthenticatedAttributes);\r\n            // [1] IMPLICIT\r\n            u[0] = 0xa1;\r\n            r = r.concat(u);\r\n        }\r\n        return makeDERSequence(r);\r\n    };\r\n    return SignerInfo;\r\n}());\r\nexport default SignerInfo;\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport ContentInfo from './ContentInfo.js';\r\nimport ObjectIdentifier from './ObjectIdentifier.js';\r\nimport { makeDERSequence } from './derUtil.js';\r\n// prettier-ignore\r\nexport var SPC_INDIRECT_DATA_OBJID = new ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 2, 1, 4]);\r\nvar SpcAttributeTypeAndOptionalValue = /** @class */ (function () {\r\n    function SpcAttributeTypeAndOptionalValue(type, value) {\r\n        this.type = type;\r\n        this.value = value;\r\n    }\r\n    SpcAttributeTypeAndOptionalValue.prototype.toDER = function () {\r\n        return makeDERSequence(this.type.toDER().concat(this.value.toDER()));\r\n    };\r\n    return SpcAttributeTypeAndOptionalValue;\r\n}());\r\nexport { SpcAttributeTypeAndOptionalValue };\r\nvar SpcIndirectDataContent = /** @class */ (function () {\r\n    function SpcIndirectDataContent(data, messageDigest) {\r\n        this.data = data;\r\n        this.messageDigest = messageDigest;\r\n    }\r\n    SpcIndirectDataContent.prototype.toDER = function () {\r\n        return makeDERSequence(this.toDERWithoutHeader());\r\n    };\r\n    // this is used for calculating 'messageDigest'\r\n    SpcIndirectDataContent.prototype.toDERWithoutHeader = function () {\r\n        return this.data.toDER().concat(this.messageDigest.toDER());\r\n    };\r\n    return SpcIndirectDataContent;\r\n}());\r\nexport default SpcIndirectDataContent;\r\nvar SpcIndirectDataContentInfo = /** @class */ (function (_super) {\r\n    __extends(SpcIndirectDataContentInfo, _super);\r\n    function SpcIndirectDataContentInfo(content) {\r\n        return _super.call(this, SPC_INDIRECT_DATA_OBJID, content) || this;\r\n    }\r\n    return SpcIndirectDataContentInfo;\r\n}(ContentInfo));\r\nexport { SpcIndirectDataContentInfo };\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport ObjectIdentifier from './ObjectIdentifier.js';\r\nimport { SpcAttributeTypeAndOptionalValue } from './SpcIndirectDataContent.js';\r\nimport { makeDERSequence, makeDERTaggedData } from './derUtil.js';\r\n// prettier-ignore\r\nexport var SPC_PE_IMAGE_DATA_OBJID = new ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 2, 1, 15]);\r\nvar SpcPeImageData = /** @class */ (function () {\r\n    function SpcPeImageData(flags, file) {\r\n        this.flags = flags;\r\n        this.file = file;\r\n    }\r\n    SpcPeImageData.prototype.toDER = function () {\r\n        return makeDERSequence([0x03, 0x01, this.flags & 0xff].concat(\r\n        // undocumented -- SpcLink must be tagged\r\n        makeDERTaggedData(0, this.file.toDER())));\r\n    };\r\n    return SpcPeImageData;\r\n}());\r\nexport default SpcPeImageData;\r\nvar SpcPeImageAttributeTypeAndOptionalValue = /** @class */ (function (_super) {\r\n    __extends(SpcPeImageAttributeTypeAndOptionalValue, _super);\r\n    function SpcPeImageAttributeTypeAndOptionalValue(value) {\r\n        return _super.call(this, SPC_PE_IMAGE_DATA_OBJID, value) || this;\r\n    }\r\n    return SpcPeImageAttributeTypeAndOptionalValue;\r\n}(SpcAttributeTypeAndOptionalValue));\r\nexport { SpcPeImageAttributeTypeAndOptionalValue };\r\n","var __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = function (d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n    return function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nimport { RawDERObject } from './DERObject.js';\r\nimport { makeDERTaggedData, makeDERIA5String, makeDERBMPString, } from './derUtil.js';\r\n/**\r\n * Abstract data SpcLink. Must use either `SpcLinkUrl` or `SpcLinkFile` instead.\r\n */\r\nvar SpcLink = /** @class */ (function () {\r\n    function SpcLink(tag, value) {\r\n        this.tag = tag;\r\n        this.value = value;\r\n    }\r\n    SpcLink.prototype.toDER = function () {\r\n        var v = this.value.toDER();\r\n        if (this.tag === 2) {\r\n            // EXPLICIT\r\n            return makeDERTaggedData(this.tag, v);\r\n        }\r\n        else {\r\n            // IMPLICIT\r\n            v[0] = 0x80 + this.tag;\r\n            return v;\r\n        }\r\n    };\r\n    return SpcLink;\r\n}());\r\nexport default SpcLink;\r\nvar SpcLinkUrl = /** @class */ (function (_super) {\r\n    __extends(SpcLinkUrl, _super);\r\n    function SpcLinkUrl(url) {\r\n        return _super.call(this, 0, new RawDERObject(makeDERIA5String(url))) || this;\r\n    }\r\n    return SpcLinkUrl;\r\n}(SpcLink));\r\nexport { SpcLinkUrl };\r\n// moniker is not supported now (currently unused)\r\nvar SpcLinkFile = /** @class */ (function (_super) {\r\n    __extends(SpcLinkFile, _super);\r\n    function SpcLinkFile(file) {\r\n        var v = makeDERBMPString(file);\r\n        // [0] IMPLICIT BMPSTRING\r\n        v[0] = 0x80;\r\n        return _super.call(this, 2, new RawDERObject(v)) || this;\r\n    }\r\n    return SpcLinkFile;\r\n}(SpcLink));\r\nexport { SpcLinkFile };\r\n","import { makeDERSequence, arrayToDERSet } from './derUtil.js';\r\nvar Attribute = /** @class */ (function () {\r\n    function Attribute(attrType, attrValues) {\r\n        this.attrType = attrType;\r\n        this.attrValues = attrValues;\r\n    }\r\n    Attribute.prototype.toDER = function () {\r\n        return makeDERSequence(this.attrType.toDER().concat(arrayToDERSet(this.attrValues)));\r\n    };\r\n    return Attribute;\r\n}());\r\nexport default Attribute;\r\n","import { allocatePartialBinary } from '../util/functions.js';\r\nimport { calculateDERLength, toUint8Array } from './certUtil.js';\r\nimport { makeDEROctetString, makeDERSequence } from './data/derUtil.js';\r\nimport { OID_SIGNED_DATA } from './data/KnownOids.js';\r\nexport function createTimestampRequest(data, algorithmIdentifier) {\r\n    return new Uint8Array(makeDERSequence(\r\n    // version\r\n    [0x2, 0x1, 0x1]\r\n        // messageImprint\r\n        .concat(makeDERSequence(algorithmIdentifier\r\n        .toDER()\r\n        .concat(makeDEROctetString(toUint8Array(data)))))\r\n        // certReq\r\n        .concat([0x01, 0x01, 0xff]))).buffer;\r\n}\r\nexport function pickSignedDataFromTimestampResponse(data) {\r\n    var _a, _b, _c, _d, _e, _f;\r\n    var ub = toUint8Array(data);\r\n    if (ub.length < 2 || ub[0] !== 0x30) {\r\n        throw new Error('Invalid or unexpected timestamp response');\r\n    }\r\n    var len;\r\n    var offset;\r\n    _a = calculateDERLength(ub, 1), len = _a[0], offset = _a[1];\r\n    if (len > ub.length - offset) {\r\n        throw new Error('Invalid or unexpected timestamp response (insufficient buffer)');\r\n    }\r\n    var dataLast = offset + len;\r\n    // status PKIStatusInfo\r\n    if (ub[offset] !== 0x30) {\r\n        throw new Error('Invalid or unexpected timestamp response (no PKIStatusInfo)');\r\n    }\r\n    _b = calculateDERLength(ub, offset + 1), len = _b[0], offset = _b[1];\r\n    if (offset >= dataLast) {\r\n        throw new Error('Invalid or unexpected timestamp response (invalid length for PKIStatusInfo)');\r\n    }\r\n    var timeStampTokenOffset = offset + len;\r\n    // PKIStatusInfo.status\r\n    if (ub[offset] !== 0x2 || ub[offset + 1] !== 0x1) {\r\n        throw new Error('Invalid or unexpected timestamp response (invalid PKIStatusInfo.status)');\r\n    }\r\n    var status = ub[offset + 2];\r\n    switch (status) {\r\n        case 0: // granted\r\n        case 1: // grantedWithMods\r\n            break;\r\n        case 2: // rejection\r\n        case 3: // waiting\r\n        case 4: // revocationWarning\r\n        case 5: /* revocationNotification */ {\r\n            var msg = \"Timestamp response has error status \".concat(status);\r\n            // PKIStatusInfo.statusString\r\n            if (offset + 3 < timeStampTokenOffset && ub[offset + 3] === 0x30) {\r\n                _c = calculateDERLength(ub, offset + 4), len = _c[0], offset = _c[1];\r\n                if (offset + len <= timeStampTokenOffset &&\r\n                    ub[offset] === 0xc) {\r\n                    _d = calculateDERLength(ub, offset + 1), len = _d[0], offset = _d[1];\r\n                    if (offset + len <= timeStampTokenOffset) {\r\n                        var statusString = \r\n                        // pick UTF8String body\r\n                        [].slice\r\n                            .call(ub, offset, offset + len)\r\n                            // map 0x20<=x<=0x7e values to chars, and other values to '%xx' to be parsed by decodeURIComponent\r\n                            .map(function (val) {\r\n                            if (val >= 0x20 && val <= 0x7e) {\r\n                                return String.fromCharCode(val);\r\n                            }\r\n                            else {\r\n                                var s = val.toString(16);\r\n                                if (s.length === 1) {\r\n                                    s = '0' + s;\r\n                                }\r\n                                return '%' + s;\r\n                            }\r\n                        })\r\n                            .join('');\r\n                        msg += ', text = ' + decodeURIComponent(statusString);\r\n                    }\r\n                }\r\n            }\r\n            throw new Error(msg);\r\n        }\r\n        default:\r\n            throw new Error(\"Unexpected PKIStatusInfo.status: \".concat(status !== null && status !== void 0 ? status : '(unknown)'));\r\n    }\r\n    // TimeStampToken ::= ContentInfo\r\n    if (timeStampTokenOffset + 1 >= dataLast ||\r\n        ub[timeStampTokenOffset] !== 0x30) {\r\n        throw new Error('Invalid or unexpected timestamp response (no TimeStampToken)');\r\n    }\r\n    _e = calculateDERLength(ub, timeStampTokenOffset + 1), len = _e[0], offset = _e[1];\r\n    if (offset + len > dataLast) {\r\n        throw new Error('Invalid or unexpected timestamp response (insufficient data for TimeStampToken)');\r\n    }\r\n    // ContentInfo.contentType\r\n    var signedDataOid = OID_SIGNED_DATA.toDER();\r\n    if (ub[offset] !== 0x6) {\r\n        throw new Error('Invalid or unexpected timestamp response (no contentType in TimeStampToken)');\r\n    }\r\n    for (var i = 0; i < signedDataOid.length; ++i) {\r\n        if (ub[offset + i] !== signedDataOid[i]) {\r\n            throw new Error('Invalid or unexpected timestamp response (unexpected TimeStampToken.contentType octet)');\r\n        }\r\n    }\r\n    // ContentInfo.content\r\n    offset += signedDataOid.length;\r\n    // [0] IMPLICIT\r\n    if (ub[offset] !== 0xa0) {\r\n        throw new Error('Invalid or unexpected timestamp response (no content in TimeStampToken)');\r\n    }\r\n    _f = calculateDERLength(ub, offset + 1), len = _f[0], offset = _f[1];\r\n    if (offset + len > dataLast) {\r\n        throw new Error('Invalid or unexpected timestamp response (invalid length for TimeStampToken.content)');\r\n    }\r\n    // return content data (=== SignedData)\r\n    return allocatePartialBinary(ub, offset, len);\r\n}\r\n","// refs.\r\n// - Windows Authenticode Portable Executable Signature Format\r\n//   https://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/authenticode_pe.docx\r\n// - RFC 2315 - PKCS #7: Cryptographic Message Syntax Version 1.5\r\n//   https://tools.ietf.org/html/rfc2315\r\n// - RFC 3280 - Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile\r\n//   https://tools.ietf.org/html/rfc3280\r\n// - Object IDs associated with Microsoft cryptography\r\n//   https://support.microsoft.com/en-us/help/287547/object-ids-associated-with-microsoft-cryptography\r\n// - OID repository\r\n//   http://oid-info.com/\r\n// - RFC 3161 - Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)\r\n//   https://tools.ietf.org/html/rfc3161\r\n// - mono/AuthenticodeDeformatter.cs\r\n//   https://github.com/mono/mono/blob/master/mcs/class/Mono.Security/Mono.Security.Authenticode/AuthenticodeDeformatter.cs\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nimport { Format, calculateCheckSumForPE } from 'pe-library';\r\nimport { allocatePartialBinary, cloneToArrayBuffer, copyBuffer, roundUp, } from '../util/functions.js';\r\nimport { certBinToCertificatesDER, pickIssuerAndSerialNumberDERFromCert, toUint8Array, } from './certUtil.js';\r\nimport AlgorithmIdentifier from './data/AlgorithmIdentifier.js';\r\nimport CertificateDataRoot from './data/CertificateDataRoot.js';\r\nimport { RawDERObject } from './data/DERObject.js';\r\nimport DigestInfo from './data/DigestInfo.js';\r\nimport IssuerAndSerialNumber from './data/IssuerAndSerialNumber.js';\r\nimport * as KnownOids from './data/KnownOids.js';\r\nimport SignedData from './data/SignedData.js';\r\nimport SignerInfo from './data/SignerInfo.js';\r\nimport SpcIndirectDataContent, { SpcIndirectDataContentInfo, SPC_INDIRECT_DATA_OBJID, } from './data/SpcIndirectDataContent.js';\r\nimport SpcPeImageData, { SpcPeImageAttributeTypeAndOptionalValue, } from './data/SpcPeImageData.js';\r\nimport { SpcLinkFile } from './data/SpcLink.js';\r\nimport Attribute from './data/Attribute.js';\r\nimport { arrayToDERSet, makeDEROctetString, makeDERSequence, } from './data/derUtil.js';\r\nimport ContentInfo from './data/ContentInfo.js';\r\nimport ObjectIdentifier from './data/ObjectIdentifier.js';\r\nimport { createTimestampRequest, pickSignedDataFromTimestampResponse, } from './timestamp.js';\r\nfunction makeSimpleIterator(data) {\r\n    var done = false;\r\n    return {\r\n        next: function () {\r\n            if (done) {\r\n                return {\r\n                    done: true,\r\n                    value: undefined,\r\n                };\r\n            }\r\n            else {\r\n                done = true;\r\n                return {\r\n                    done: false,\r\n                    value: data,\r\n                };\r\n            }\r\n        },\r\n    };\r\n}\r\nfunction validateSignerObject(signer) {\r\n    if (!signer.encryptData && !signer.signData) {\r\n        throw new Error('Signer object must implement either `encryptData` or `signData`.');\r\n    }\r\n}\r\nfunction calculateExecutableDigest(executable, signer, alignment) {\r\n    function inner() {\r\n        var checkSumOffset, certificateTableOffset, rawHeader, targetSections, sectionCount, sectionStartOffset, sectionEndOffset, sectionHeadersSize, secHeader, secArray_1, off, _i, targetSections_1, section, exData, alignedLength, diff;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    checkSumOffset = executable.dosHeader.newHeaderAddress + 88;\r\n                    certificateTableOffset = executable.dosHeader.newHeaderAddress +\r\n                        executable.newHeader.getDataDirectoryOffset() +\r\n                        Format.ImageDataDirectoryArray.itemSize *\r\n                            Format.ImageDirectoryEntry.Certificate;\r\n                    rawHeader = executable.getRawHeader();\r\n                    targetSections = executable.getAllSections();\r\n                    sectionCount = targetSections.length;\r\n                    sectionStartOffset = rawHeader.byteLength;\r\n                    sectionEndOffset = roundUp(sectionStartOffset +\r\n                        sectionCount * Format.ImageSectionHeaderArray.itemSize, executable.getFileAlignment());\r\n                    sectionHeadersSize = sectionEndOffset - sectionStartOffset;\r\n                    secHeader = new ArrayBuffer(sectionHeadersSize);\r\n                    {\r\n                        secArray_1 = Format.ImageSectionHeaderArray.from(secHeader, sectionCount);\r\n                        targetSections.forEach(function (sec, i) {\r\n                            secArray_1.set(i, sec.info);\r\n                        });\r\n                    }\r\n                    // pick from head to immediately before checksum\r\n                    return [4 /*yield*/, allocatePartialBinary(rawHeader, 0, checkSumOffset)];\r\n                case 1:\r\n                    // pick from head to immediately before checksum\r\n                    _a.sent();\r\n                    // pick from the end of checksum to immediately before 'Certificate Table' header\r\n                    return [4 /*yield*/, allocatePartialBinary(rawHeader, checkSumOffset + 4, certificateTableOffset - (checkSumOffset + 4))];\r\n                case 2:\r\n                    // pick from the end of checksum to immediately before 'Certificate Table' header\r\n                    _a.sent();\r\n                    off = certificateTableOffset +\r\n                        Format.ImageDataDirectoryArray.itemSize;\r\n                    return [4 /*yield*/, allocatePartialBinary(executable.getRawHeader(), off, executable.getTotalHeaderSize() - off)];\r\n                case 3:\r\n                    _a.sent();\r\n                    // pick section header\r\n                    return [4 /*yield*/, secHeader];\r\n                case 4:\r\n                    // pick section header\r\n                    _a.sent();\r\n                    _i = 0, targetSections_1 = targetSections;\r\n                    _a.label = 5;\r\n                case 5:\r\n                    if (!(_i < targetSections_1.length)) return [3 /*break*/, 8];\r\n                    section = targetSections_1[_i];\r\n                    if (!section.data) return [3 /*break*/, 7];\r\n                    return [4 /*yield*/, section.data];\r\n                case 6:\r\n                    _a.sent();\r\n                    _a.label = 7;\r\n                case 7:\r\n                    _i++;\r\n                    return [3 /*break*/, 5];\r\n                case 8:\r\n                    exData = executable.getExtraData();\r\n                    if (!(exData !== null)) return [3 /*break*/, 11];\r\n                    return [4 /*yield*/, exData];\r\n                case 9:\r\n                    _a.sent();\r\n                    alignedLength = roundUp(exData.byteLength, alignment);\r\n                    diff = alignedLength - exData.byteLength;\r\n                    if (!(diff !== 0)) return [3 /*break*/, 11];\r\n                    return [4 /*yield*/, new Uint8Array(diff).buffer];\r\n                case 10:\r\n                    _a.sent();\r\n                    _a.label = 11;\r\n                case 11: return [2 /*return*/];\r\n            }\r\n        });\r\n    }\r\n    return signer.digestData(inner());\r\n}\r\nfunction getAlgorithmIdentifierObject(type) {\r\n    if (typeof type !== 'string') {\r\n        return new AlgorithmIdentifier(new ObjectIdentifier(type));\r\n    }\r\n    switch (type) {\r\n        case 'sha1':\r\n        case 'SHA1':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA1_NO_SIGN);\r\n        case 'sha256':\r\n        case 'SHA256':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA256_NO_SIGN);\r\n        case 'sha384':\r\n        case 'SHA384':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA384_NO_SIGN);\r\n        case 'sha512':\r\n        case 'SHA512':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA512_NO_SIGN);\r\n        case 'sha224':\r\n        case 'SHA224':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA224_NO_SIGN);\r\n        case 'sha512-224':\r\n        case 'SHA512-224':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA512_224_NO_SIGN);\r\n        case 'sha512-256':\r\n        case 'SHA512-256':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA512_256_NO_SIGN);\r\n        case 'sha3-224':\r\n        case 'SHA3-224':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA3_224_NO_SIGN);\r\n        case 'sha3-256':\r\n        case 'SHA3-256':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA3_256_NO_SIGN);\r\n        case 'sha3-384':\r\n        case 'SHA3-384':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA3_384_NO_SIGN);\r\n        case 'sha3-512':\r\n        case 'SHA3-512':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHA3_512_NO_SIGN);\r\n        case 'shake128':\r\n        case 'SHAKE128':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHAKE128_NO_SIGN);\r\n        case 'shake256':\r\n        case 'SHAKE256':\r\n            return new AlgorithmIdentifier(KnownOids.OID_SHAKE256_NO_SIGN);\r\n        default:\r\n            throw new Error('Invalid or unsupported digest algorithm');\r\n    }\r\n}\r\nfunction doSign(signer, digestAlgorithm, dataIterator) {\r\n    if (signer.signData) {\r\n        return signer.signData(dataIterator);\r\n    }\r\n    else {\r\n        return signer.digestData(dataIterator).then(function (digestAttributes) {\r\n            // encrypting DigestInfo with digest of 'attributes' set\r\n            var digestInfoBin = new Uint8Array(new DigestInfo(digestAlgorithm, digestAttributes).toDER()).buffer;\r\n            // (eencryptData should be defined here)\r\n            return signer.encryptData(makeSimpleIterator(digestInfoBin));\r\n        });\r\n    }\r\n}\r\n/**\r\n * Generates the executable binary data with signed info.\r\n * This function is like an extension of `generate` method of `NtExecutable`.\r\n * @param executable a valid instance of `NtExecutable`\r\n * @param signer user-defined `SignerObject` instance for signing\r\n * @param alignment alignment value for placing certificate data\r\n *     (using `executable.getFileAlignment()` if omitted)\r\n * @return Promise-like (Thenable) object which will resolve with generated executable binary\r\n */\r\nexport function generateExecutableWithSign(executable, signer, alignment) {\r\n    validateSignerObject(signer);\r\n    var certAlignment;\r\n    if (typeof alignment === 'number') {\r\n        if (alignment <= 0) {\r\n            throw new Error('Invalid alignment value');\r\n        }\r\n        certAlignment = alignment;\r\n    }\r\n    else {\r\n        certAlignment = executable.getFileAlignment();\r\n    }\r\n    var digestAlgorithm = getAlgorithmIdentifierObject(signer.getDigestAlgorithm());\r\n    var digestEncryptionAlgorithm;\r\n    var a = signer.getEncryptionAlgorithm();\r\n    if (typeof a !== 'string') {\r\n        digestEncryptionAlgorithm = new AlgorithmIdentifier(new ObjectIdentifier(a));\r\n    }\r\n    else {\r\n        switch (a) {\r\n            case 'rsa':\r\n            case 'RSA':\r\n                digestEncryptionAlgorithm = new AlgorithmIdentifier(KnownOids.OID_RSA);\r\n                break;\r\n            case 'dsa':\r\n            case 'DSA':\r\n                digestEncryptionAlgorithm = new AlgorithmIdentifier(KnownOids.OID_DSA);\r\n                break;\r\n            default:\r\n                throw new Error('Invalid or unsupported digest encryption algorithm');\r\n        }\r\n    }\r\n    // (for compatibility)\r\n    // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\r\n    var cert = signer.getCertificateData\r\n        ? signer.getCertificateData()\r\n        : signer.getPublicKeyData();\r\n    var _a = pickIssuerAndSerialNumberDERFromCert(cert), issuer = _a[0], serialNumber = _a[1];\r\n    return (\r\n    // calculate digest\r\n    calculateExecutableDigest(executable, signer, certAlignment)\r\n        // make content, content's digest, and sign\r\n        .then(function (digest) {\r\n        var content = new SpcIndirectDataContent(new SpcPeImageAttributeTypeAndOptionalValue(new SpcPeImageData(0 /* SpcPeImageFlags.IncludeResources */, new SpcLinkFile(''))), new DigestInfo(digestAlgorithm, digest));\r\n        return (signer\r\n            .digestData(makeSimpleIterator(new Uint8Array(content.toDERWithoutHeader())\r\n            .buffer))\r\n            // make sign\r\n            .then(function (contentDigest) {\r\n            var attributes = [\r\n                new Attribute(KnownOids.OID_SPC_SP_OPUS_INFO_OBJID, \r\n                // (SpcSpOpusInfo) null sequence\r\n                [new RawDERObject([0x30, 0x00])]),\r\n                new Attribute(KnownOids.OID_CONTENT_TYPE, [\r\n                    SPC_INDIRECT_DATA_OBJID,\r\n                ]),\r\n                new Attribute(KnownOids.OID_SPC_STATEMENT_TYPE_OBJID, [\r\n                    new RawDERObject(makeDERSequence(KnownOids.OID_SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID.toDER())),\r\n                ]),\r\n                new Attribute(KnownOids.OID_MESSAGE_DIGEST, [\r\n                    new RawDERObject(makeDEROctetString(toUint8Array(contentDigest))),\r\n                ]),\r\n            ];\r\n            // get digest of 'attributes' set\r\n            var attrBin = new Uint8Array(arrayToDERSet(attributes)).buffer;\r\n            return doSign(signer, digestAlgorithm, makeSimpleIterator(attrBin)).then(function (signed) {\r\n                return [content, attributes, signed];\r\n            });\r\n        }));\r\n    })\r\n        // make cert bin\r\n        .then(function (_a) {\r\n        var content = _a[0], attributes = _a[1], signed = _a[2];\r\n        var signerInfo = new SignerInfo(\r\n        // version\r\n        1, \r\n        // issuerAndSerialNumber\r\n        new IssuerAndSerialNumber(new RawDERObject(issuer), new RawDERObject(serialNumber)), \r\n        // digestAlgorithm\r\n        digestAlgorithm, \r\n        // digestEncryptionAlgorithm\r\n        digestEncryptionAlgorithm, \r\n        // encryptedDigest\r\n        toUint8Array(signed), \r\n        // authenticatedAttributes\r\n        attributes);\r\n        if (!signer.timestampData) {\r\n            return [content, signerInfo];\r\n        }\r\n        // timestamp\r\n        return (signer\r\n            // make digest of encrypted data for make timestamp\r\n            .digestData(makeSimpleIterator(cloneToArrayBuffer(signed)))\r\n            .then(function (digestEncryptedBase) {\r\n            var digestEncrypted = createTimestampRequest(digestEncryptedBase, digestAlgorithm);\r\n            // request timestamp\r\n            return signer.timestampData(digestEncrypted).then(function (timestamp) {\r\n                // pick up signedData\r\n                var timestampSignedData = pickSignedDataFromTimestampResponse(timestamp);\r\n                // add timestamp to 'unauthenticatedAttributes'\r\n                signerInfo.unauthenticatedAttributes = [\r\n                    new Attribute(KnownOids.OID_RFC3161_COUNTER_SIGNATURE, [\r\n                        new ContentInfo(KnownOids.OID_SIGNED_DATA, new RawDERObject(toUint8Array(timestampSignedData))),\r\n                    ]),\r\n                ];\r\n                return [content, signerInfo];\r\n            });\r\n        }));\r\n    })\r\n        .then(function (_a) {\r\n        var content = _a[0], signerInfo = _a[1];\r\n        // make certificate data\r\n        var root = new CertificateDataRoot(KnownOids.OID_SIGNED_DATA, new SignedData(\r\n        // version\r\n        1, \r\n        // digestAlgorithms\r\n        [digestAlgorithm], \r\n        // contentInfo\r\n        new SpcIndirectDataContentInfo(content), \r\n        // signerInfos\r\n        [signerInfo], \r\n        // certificates\r\n        certBinToCertificatesDER(cert)));\r\n        var certBin = new Uint8Array(root.toDER());\r\n        var resultBin = new ArrayBuffer(8 + certBin.length);\r\n        // make WIN_CERTIFICATE\r\n        var resultView = new DataView(resultBin);\r\n        // dwLength\r\n        resultView.setUint32(0, certBin.length + 8, true);\r\n        // wRevision : 0x0200 (revision 2)\r\n        resultView.setUint16(4, 0x200, true);\r\n        // wCertificateType : 0x0002\r\n        resultView.setUint16(6, 0x2, true);\r\n        copyBuffer(resultBin, 8, certBin, 0, certBin.byteLength);\r\n        return resultBin;\r\n    })\r\n        .then(function (certBin) {\r\n        var alignedSize = roundUp(certBin.byteLength, certAlignment);\r\n        // NOTE: The certificate data must follow the extra data.\r\n        // To achieve this, the another size between them must be added to the padding size.\r\n        // (The extra data may not be aligned, but the certificate data should be aligned.)\r\n        var paddingSize = alignedSize;\r\n        var exData = executable.getExtraData();\r\n        if (exData !== null) {\r\n            var diffSize = roundUp(exData.byteLength, certAlignment) -\r\n                exData.byteLength;\r\n            paddingSize += diffSize;\r\n        }\r\n        var newBin = executable.generate(paddingSize);\r\n        var certOffset = newBin.byteLength - alignedSize;\r\n        var dirArray = Format.ImageDataDirectoryArray.from(newBin, executable.dosHeader.newHeaderAddress +\r\n            executable.newHeader.getDataDirectoryOffset());\r\n        dirArray.set(Format.ImageDirectoryEntry.Certificate, {\r\n            size: alignedSize,\r\n            virtualAddress: certOffset,\r\n        });\r\n        // recalculate checksum\r\n        calculateCheckSumForPE(newBin, true);\r\n        // write Certificate section data\r\n        copyBuffer(newBin, certOffset, certBin, 0, certBin.byteLength);\r\n        return newBin;\r\n    }));\r\n}\r\n","import { readFileSync, writeFileSync } from 'fs';\nimport { exec } from '@yao-pkg/pkg';\nimport * as ResEdit from 'resedit';\nimport type { Options } from './Options';\n\n// Language code for en-us and encoding codepage for UTF-16\nconst language = {\n  lang: 1033, // en-us\n  codepage: 1200, // UTF-16\n};\n\n/**\n * Build an executable\n * @param {Options} options\n * @returns An empty promise which is resolved when the executable is built\n */\nasync function pkgBuild(options: Options): Promise<void> {\n  const RE: typeof ResEdit = ResEdit;\n  const args = [\n    options.entry,\n    ...(options.pkg || []),\n    '-t',\n    options.target || 'latest-win-x64',\n    '-o',\n    options.out,\n  ];\n\n  // Build w/ PKG\n  await exec(args);\n\n  // Modify .exe w/ ResEdit\n  const data = readFileSync(options.out);\n  const executable = RE.NtExecutable.from(data);\n  const res = RE.NtExecutableResource.from(executable);\n  const vi = RE.Resource.VersionInfo.fromEntries(res.entries)[0];\n\n  // Remove original filename\n  vi.removeStringValue(language, 'OriginalFilename');\n  vi.removeStringValue(language, 'InternalName');\n\n  // Product version\n  if (options.version) {\n    // Convert version to tuple of 3 numbers\n    const version = options.version\n      .split('.')\n      .map(v => Number(v) || 0)\n      .slice(0, 3) as [number, number, number];\n\n    // Update versions\n    vi.setProductVersion(...version, 0, language.lang);\n    vi.setFileVersion(...version, 0, language.lang);\n  }\n\n  // Add additional user specified properties\n  if (options.properties) {\n    vi.setStringValues(language, options.properties);\n  }\n\n  vi.outputToResourceEntries(res.entries);\n\n  // Add icon\n  if (options.icon) {\n    const iconFile = RE.Data.IconFile.from(readFileSync(options.icon));\n    RE.Resource.IconGroupEntry.replaceIconsForResource(\n      res.entries,\n      1,\n      language.lang,\n      iconFile.icons.map(item => item.data)\n    );\n  }\n\n  // Execution level\n  const level = options.executionLevel || 'asInvoker';\n  const manifest = res.getResourceEntriesAsString(24, 1)[0][1];\n  res.replaceResourceEntryFromString(24, 1, language.lang, manifest.replace('asInvoker', level));\n\n  // Regenerate and write to .exe\n  res.outputResource(executable);\n  writeFileSync(options.out, Buffer.from(executable.generate()));\n}\n\nexport default pkgBuild;\n","{\n  \"name\": \"pkg-exe-build\",\n  \"version\": \"2.0.0\",\n  \"description\": \"Configure Windows PKG package generated exe file icon and detailed information\\nwindows 平台下 配置图标及详细信息 使用 pkg 打包 生成 exe 文件\",\n  \"main\": \"dist/index.js\",\n  \"type\": \"module\",\n  \"bin\": {\n    \"pkge\": \"./dist/cli.js\"\n  },\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    }\n  },\n  \"files\": [\n    \"dist/**/*\",\n    \"src/**/*\",\n    \"LICENSE\",\n    \"package.json\",\n    \"README_ZH.md\",\n    \"README.md\"\n  ],\n  \"scripts\": {\n    \"clean\": \"rimraf dist\",\n    \"build\": \"npm run clean && tsup\",\n    \"test\": \"node ./test/build.cjs\",\n    \"test:cli\": \"node ./test/cli.mjs\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/PromiseAll/pkg-exe-build.git\"\n  },\n  \"keywords\": [\n    \"pkg\",\n    \"exe\",\n    \"build\",\n    \"windows\",\n    \"setup\",\n    \"pack\",\n    \"packager\",\n    \"binary\"\n  ],\n  \"author\": \"PromiseAll\",\n  \"license\": \"LGPL-3.0-or-later\",\n  \"bugs\": {\n    \"url\": \"https://github.com/PromiseAll/pkg-exe-build/issues\"\n  },\n  \"homepage\": \"https://github.com/PromiseAll/pkg-exe-build#readme\",\n  \"devDependencies\": {\n    \"@types/node\": \"^24.2.1\",\n    \"resedit\": \"^2.0.3\",\n    \"rimraf\": \"^6.0.1\",\n    \"tsup\": \"^8.5.0\",\n    \"typescript\": \"^5.9.2\"\n  },\n  \"dependencies\": {\n    \"@yao-pkg/pkg\": \"^6.6.0\",\n    \"commander\": \"^14.0.0\"\n  }\n}","#!/usr/bin/env node\r\n\r\nimport { program } from 'commander';\r\nimport pkgBuild from './index.js';\r\nimport type { Options } from './Options.js';\r\nimport packageJson from '../package.json';\r\n\r\n// Define CLI program\r\nprogram\r\n  .name('pkge')\r\n  .description('Package Node.js applications into Windows executables with icons and detailed information')\r\n  .version(packageJson.version);\r\n\r\n// Define required parameters\r\nprogram\r\n  .requiredOption('-e, --entry <path>', 'Path to the application entry file')\r\n  .requiredOption('-o, --out <path>', 'Path for the output executable file');\r\n\r\n// Define optional parameters\r\nprogram\r\n  .option('-p, --pkg <args...>', 'Extra arguments for the pkg package', [])\r\n  .option('-t, --target <target>', 'Target Node version and architecture', 'latest-win-x64')\r\n  .option('--app-version <version>', 'Application version (format: major.minor.patch)')\r\n  .option('-i, --icon <path>', 'Path to the application icon in .ico format')\r\n  .option('-l, --execution-level <level>', 'Application execution level', 'asInvoker')\r\n  .option('--properties <properties>', 'Metadata for the executable file (JSON format)')\r\n  .option('--properties.FileDescription <description>', 'Description of the executable')\r\n  .option('--properties.ProductName <name>', 'Product name')\r\n  .option('--properties.LegalCopyright <copyright>', 'Copyright information')\r\n  .option('--properties.OriginalFilename <filename>', 'Original filename');\r\n\r\n// Parse command line arguments\r\nprogram.parse();\r\nconst options = program.opts();\r\n\r\n// Build configuration object\r\nconst buildConfig: Options = {\r\n  entry: options.entry,\r\n  out: options.out,\r\n  pkg: options.pkg,\r\n  target: options.target,\r\n  version: options.appVersion,\r\n  icon: options.icon,\r\n  executionLevel: options.executionLevel,\r\n};\r\n\r\n// Parse properties parameter\r\nlet propertiesObj: {\r\n  FileDescription?: string;\r\n  ProductName?: string;\r\n  LegalCopyright?: string;\r\n  OriginalFilename?: string;\r\n} = {};\r\n\r\n// First try to parse JSON format properties parameter\r\nif (options.properties) {\r\n  try {\r\n    propertiesObj = JSON.parse(options.properties);\r\n  } catch (error) {\r\n    console.error('Error: properties parameter must be valid JSON format');\r\n    console.error('Received properties value:', options.properties);\r\n    console.error('JSON parsing error details:', error instanceof Error ? error.message : String(error));\r\n    process.exit(1);\r\n  }\r\n}\r\n\r\n// Then process individual properties.attribute parameters (will override attributes with the same name in JSON)\r\nif (options.propertiesFileDescription) {\r\n  propertiesObj.FileDescription = options.propertiesFileDescription;\r\n}\r\nif (options.propertiesProductName) {\r\n  propertiesObj.ProductName = options.propertiesProductName;\r\n}\r\nif (options.propertiesLegalCopyright) {\r\n  propertiesObj.LegalCopyright = options.propertiesLegalCopyright;\r\n}\r\nif (options.propertiesOriginalFilename) {\r\n  propertiesObj.OriginalFilename = options.propertiesOriginalFilename;\r\n}\r\n\r\n// If any properties attributes are set, add them to buildConfig\r\nif (Object.keys(propertiesObj).length > 0) {\r\n  buildConfig.properties = propertiesObj as any;\r\n}\r\n\r\n// Validate execution level\r\nconst validExecutionLevels: Array<'asInvoker' | 'highestAvailable' | 'requireAdministrator'> = [\r\n  'asInvoker',\r\n  'highestAvailable',\r\n  'requireAdministrator',\r\n];\r\n\r\nif (buildConfig.executionLevel && !validExecutionLevels.includes(buildConfig.executionLevel as any)) {\r\n  console.error(`Error: Invalid execution level \"${buildConfig.executionLevel}\"`);\r\n  console.error(`Valid execution levels: ${validExecutionLevels.join(', ')}`);\r\n  process.exit(1);\r\n}\r\n\r\n// Validate version format\r\nif (buildConfig.version && !/^\\d+\\.\\d+\\.\\d+$/.test(buildConfig.version)) {\r\n  console.error('Error: Version format must be major.minor.patch (e.g.: 1.0.0)');\r\n  process.exit(1);\r\n}\r\n\r\n// Execute build\r\nconsole.log('Starting to build executable...');\r\nconsole.log(`Entry file: ${buildConfig.entry}`);\r\nconsole.log(`Output path: ${buildConfig.out}`);\r\n\r\npkgBuild(buildConfig)\r\n  .then(() => {\r\n    console.log('Build completed!');\r\n  })\r\n  .catch((error) => {\r\n    console.error('Build failed:', error.message);\r\n    process.exit(1);\r\n  });"]}