Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

@neo-one/client-common

Package Overview
Dependencies
Maintainers
2
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@neo-one/client-common - npm Package Compare versions

Comparing version 1.1.0 to 1.1.1

12

CHANGELOG.md

@@ -6,2 +6,14 @@ # Change Log

## [1.1.1](https://github.com/neo-one-suite/neo-one/compare/@neo-one/client-common@1.1.0...@neo-one/client-common@1.1.1) (2019-03-27)
### Bug Fixes
* **deps:** update dependency bignumber.js to v8.1.1 ([2d6f93a](https://github.com/neo-one-suite/neo-one/commit/2d6f93a))
* **jest:** fix a flaky crypto test - createKeyPair ([cd1e029](https://github.com/neo-one-suite/neo-one/commit/cd1e029))
# [1.1.0](https://github.com/neo-one-suite/neo-one/compare/@neo-one/client-common@1.0.2...@neo-one/client-common@1.1.0) (2019-02-21)

@@ -8,0 +20,0 @@

7

crypto.js

@@ -22,3 +22,2 @@ "use strict";

if (ecCache === undefined) {
// tslint:disable-next-line no-any
ecCache = new elliptic_1.ec(precomputed_1.p256);

@@ -134,2 +133,6 @@ }

const key = ec().genKeyPair();
const validation = key.validate();
if (!validation.result) {
return createKeyPair();
}
return {

@@ -435,2 +438,2 @@ privateKey: common_1.common.bufferToPrivateKey(key.getPrivate().toArrayLike(Buffer, 'be')),

//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUM7QUFDRixnQkFBZ0I7QUFFaEIsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssV0FBRSxDQUFDLFFBQVEsQ0FBQztBQUV2SCxNQUFNLGtCQUFrQixHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUU1RixRQUFBLE1BQU0sR0FBRztJQUNwQixZQUFZO0lBQ1osSUFBSTtJQUNKLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztJQUNQLElBQUk7SUFDSixNQUFNO0lBQ04scUJBQXFCO0lBQ3JCLFlBQVk7SUFDWixTQUFTO0lBQ1QsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsc0JBQXNCO0lBQ3RCLHdCQUF3QjtJQUN4QixhQUFhO0lBQ2IseUJBQXlCO0lBQ3pCLHlCQUF5QjtJQUN6QixvQ0FBb0M7SUFDcEMsc0NBQXNDO0lBQ3RDLDJCQUEyQjtJQUMzQixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLGVBQWU7SUFDZixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLG1CQUFtQjtJQUNuQixNQUFNO0lBQ04sV0FBVztJQUNYLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixrQkFBa0I7Q0FDbkIsQ0FBQyIsImZpbGUiOiJuZW8tb25lLWNsaWVudC1jb21tb24vc3JjL2NyeXB0by5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlIG5vLWFueSBuby1hcnJheS1tdXRhdGlvblxuaW1wb3J0IEVDS2V5IGZyb20gJ0BuZW8tb25lL2VjLWtleSc7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJ0BuZW8tb25lL3V0aWxzJztcbmltcG9ydCBiYXNlNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgeG9yIGZyb20gJ2J1ZmZlci14b3InO1xuaW1wb3J0IHsgY3JlYXRlQ2lwaGVyaXYsIGNyZWF0ZURlY2lwaGVyaXYsIGNyZWF0ZUhhc2gsIHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGVjIGFzIEVDIH0gZnJvbSAnZWxsaXB0aWMnO1xuaW1wb3J0IHNjcnlwdCBmcm9tICdzY3J5cHQtanMnO1xuaW1wb3J0IFdJRiBmcm9tICd3aWYnO1xuaW1wb3J0IHsgY29tbW9uLCBFQ1BvaW50LCBJbnZhbGlkRm9ybWF0RXJyb3IsIFByaXZhdGVLZXksIFVJbnQxNjAsIFVJbnQyNTYgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQge1xuICBCYXNlNThDaGVja0Vycm9yLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBJbnZhbGlkTnVtYmVyT2ZLZXlzRXJyb3IsXG4gIEludmFsaWRQcml2YXRlS2V5RXJyb3IsXG4gIEludmFsaWRTaWduYXR1cmVFcnJvcixcbiAgSW52YWxpZFNpZ25hdHVyZXNFcnJvcixcbiAgVG9vTWFueVB1YmxpY0tleXNFcnJvcixcbn0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgT3AsIHNoYTI1NiBhcyBzaGEyNTZJbiwgV2l0bmVzc01vZGVsIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgcDI1NiB9IGZyb20gJy4vcHJlY29tcHV0ZWQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4vU2NyaXB0QnVpbGRlcic7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1sZXRcbmxldCBlY0NhY2hlOiBhbnk7XG5jb25zdCBlYyA9ICgpID0+IHtcbiAgaWYgKGVjQ2FjaGUgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgICBlY0NhY2hlID0gbmV3IEVDKHAyNTYpIGFzIGFueTtcbiAgfVxuXG4gIHJldHVybiBlY0NhY2hlO1xufTtcblxuY29uc3Qgc2hhMSA9ICh2YWx1ZTogQnVmZmVyKTogQnVmZmVyID0+XG4gIGNyZWF0ZUhhc2goJ3NoYTEnKVxuICAgIC51cGRhdGUodmFsdWUpXG4gICAgLmRpZ2VzdCgpO1xuXG5jb25zdCBzaGEyNTYgPSBzaGEyNTZJbjtcblxuY29uc3Qgcm1kMTYwID0gKHZhbHVlOiBCdWZmZXIpOiBCdWZmZXIgPT5cbiAgY3JlYXRlSGFzaCgncm1kMTYwJylcbiAgICAudXBkYXRlKHZhbHVlKVxuICAgIC5kaWdlc3QoKTtcblxuY29uc3QgaGFzaDE2MCA9ICh2YWx1ZTogQnVmZmVyKTogVUludDE2MCA9PiBjb21tb24uYnVmZmVyVG9VSW50MTYwKHJtZDE2MChzaGEyNTYodmFsdWUpKSk7XG5cbmNvbnN0IGhhc2gyNTYgPSAodmFsdWU6IEJ1ZmZlcik6IFVJbnQyNTYgPT4gY29tbW9uLmJ1ZmZlclRvVUludDI1NihzaGEyNTYoc2hhMjU2KHZhbHVlKSkpO1xuXG5jb25zdCBzaWduID0gKHsgbWVzc2FnZSwgcHJpdmF0ZUtleSB9OiB7IHJlYWRvbmx5IG1lc3NhZ2U6IEJ1ZmZlcjsgcmVhZG9ubHkgcHJpdmF0ZUtleTogUHJpdmF0ZUtleSB9KTogQnVmZmVyID0+IHtcbiAgY29uc3Qgc2lnID0gZWMoKS5zaWduKHNoYTI1NihtZXNzYWdlKSwgY29tbW9uLnByaXZhdGVLZXlUb0J1ZmZlcihwcml2YXRlS2V5KSk7XG5cbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3NpZy5yLnRvQXJyYXlMaWtlKEJ1ZmZlciwgJ2JlJywgMzIpLCBzaWcucy50b0FycmF5TGlrZShCdWZmZXIsICdiZScsIDMyKV0pO1xufTtcblxuLy8gdHNsaW50OmRpc2FibGUgcmVhZG9ubHktYXJyYXlcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBybVBhZGRpbmcgPSAoYnVmOiBudW1iZXJbXSk6IG51bWJlcltdID0+IHtcbiAgbGV0IGkgPSAwO1xuICBjb25zdCBsZW4gPSBidWYubGVuZ3RoIC0gMTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHdoaWxlICghYnVmW2ldICYmICEoYnVmW2kgKyAxXSAmIDB4ODApICYmIGkgPCBsZW4pIHtcbiAgICBpICs9IDE7XG4gIH1cbiAgaWYgKGkgPT09IDApIHtcbiAgICByZXR1cm4gYnVmO1xuICB9XG5cbiAgcmV0dXJuIGJ1Zi5zbGljZShpKTtcbn07XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgY29uc3RydWN0TGVuZ3RoID0gKGFycjogbnVtYmVyW10sIGxlbjogbnVtYmVyKTogdm9pZCA9PiB7XG4gIGlmIChsZW4gPCAweDgwKSB7XG4gICAgYXJyLnB1c2gobGVuKTtcblxuICAgIHJldHVybjtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgbGV0IG9jdGV0cyA9IDEgKyAoKE1hdGgubG9nKGxlbikgLyBNYXRoLkxOMikgPj4+IDMpO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgYXJyLnB1c2gob2N0ZXRzIHwgMHg4MCk7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICB3aGlsZSAoLS1vY3RldHMpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBhcnIucHVzaCgobGVuID4+PiAob2N0ZXRzIDw8IDMpKSAmIDB4ZmYpO1xuICB9XG4gIGFyci5wdXNoKGxlbik7XG59O1xuXG5jb25zdCB2ZXJpZnkgPSAoe1xuICBtZXNzYWdlLFxuICBzaWduYXR1cmU6IHNpZ25hdHVyZUluLFxuICBwdWJsaWNLZXksXG59OiB7XG4gIHJlYWRvbmx5IG1lc3NhZ2U6IEJ1ZmZlcjtcbiAgcmVhZG9ubHkgc2lnbmF0dXJlOiBCdWZmZXI7XG4gIHJlYWRvbmx5IHB1YmxpY0tleTogRUNQb2ludDtcbn0pID0+IHtcbiAgaWYgKHNpZ25hdHVyZUluLmxlbmd0aCAhPT0gNjQpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZFNpZ25hdHVyZUVycm9yKHNpZ25hdHVyZUluLmxlbmd0aCk7XG4gIH1cbiAgbGV0IHIgPSBbLi4uc2lnbmF0dXJlSW4uc2xpY2UoMCwgMzIpXTtcbiAgbGV0IHMgPSBbLi4uc2lnbmF0dXJlSW4uc2xpY2UoMzIpXTtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgaWYgKHJbMF0gJiAweDgwKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByID0gWzBdLmNvbmNhdChyKTtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgaWYgKHNbMF0gJiAweDgwKSB7XG4gICAgcyA9IFswXS5jb25jYXQocyk7XG4gIH1cblxuICByID0gcm1QYWRkaW5nKHIpO1xuICBzID0gcm1QYWRkaW5nKHMpO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICB3aGlsZSAocy5sZW5ndGggPiAwICYmICFzWzBdICYmICEoc1sxXSAmIDB4ODApKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBzID0gcy5zbGljZSgxKTtcbiAgfVxuICBsZXQgYXJyID0gWzB4MDJdO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCByLmxlbmd0aCk7XG4gIGFyciA9IGFyci5jb25jYXQocik7XG4gIGFyci5wdXNoKDB4MDIpO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCBzLmxlbmd0aCk7XG4gIGNvbnN0IGJhY2tIYWxmID0gYXJyLmNvbmNhdChzKTtcbiAgY29uc3QgcmVzID0gWzB4MzBdO1xuICBjb25zdHJ1Y3RMZW5ndGgocmVzLCBiYWNrSGFsZi5sZW5ndGgpO1xuICBjb25zdCBzaWduYXR1cmUgPSBCdWZmZXIuZnJvbShyZXMuY29uY2F0KGJhY2tIYWxmKSk7XG5cbiAgY29uc3Qga2V5ID0gbmV3IEVDS2V5KHtcbiAgICBjcnY6ICdQLTI1NicsXG4gICAgcHVibGljS2V5OiBCdWZmZXIuZnJvbShcbiAgICAgIGVjKClcbiAgICAgICAgLmtleUZyb21QdWJsaWMocHVibGljS2V5KVxuICAgICAgICAuZ2V0UHVibGljKGZhbHNlLCAnaGV4JyksXG4gICAgICAnaGV4JyxcbiAgICApLFxuICB9KTtcblxuICByZXR1cm4gKGtleS5jcmVhdGVWZXJpZnkoJ1NIQTI1NicpLnVwZGF0ZShtZXNzYWdlKSBhcyBhbnkpLnZlcmlmeShzaWduYXR1cmUpO1xufTtcbi8vIHRzbGludDplbmFibGUgcmVhZG9ubHktYXJyYXlcblxuY29uc3QgdG9FQ1BvaW50RnJvbUtleVBhaXIgPSAocGFpcjogRUMuS2V5UGFpcik6IEVDUG9pbnQgPT5cbiAgY29tbW9uLmJ1ZmZlclRvRUNQb2ludChCdWZmZXIuZnJvbShwYWlyLmdldFB1YmxpYyh0cnVlLCAnaGV4JyksICdoZXgnKSk7XG5cbmNvbnN0IG11dGFibGVQdWJsaWNLZXlDYWNoZTogeyBbSyBpbiBzdHJpbmddPzogRUNQb2ludCB9ID0ge307XG5jb25zdCBhZGRQdWJsaWNLZXkgPSAocHJpdmF0ZUtleTogUHJpdmF0ZUtleSwgcHVibGljS2V5OiBFQ1BvaW50KSA9PiB7XG4gIG11dGFibGVQdWJsaWNLZXlDYWNoZVtjb21tb24ucHJpdmF0ZUtleVRvU3RyaW5nKHByaXZhdGVLZXkpXSA9IHB1YmxpY0tleTtcbn07XG5jb25zdCBwcml2YXRlS2V5VG9QdWJsaWNLZXkgPSAocHJpdmF0ZUtleTogUHJpdmF0ZUtleSk6IEVDUG9pbnQgPT4ge1xuICBjb25zdCBwcml2YXRlS2V5SGV4ID0gY29tbW9uLnByaXZhdGVLZXlUb1N0cmluZyhwcml2YXRlS2V5KTtcbiAgbGV0IHB1YmxpY0tleSA9IG11dGFibGVQdWJsaWNLZXlDYWNoZVtwcml2YXRlS2V5SGV4XTtcbiAgaWYgKHB1YmxpY0tleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3Qga2V5ID0gZWMoKS5rZXlGcm9tUHJpdmF0ZShjb21tb24ucHJpdmF0ZUtleVRvQnVmZmVyKHByaXZhdGVLZXkpKTtcbiAgICBrZXkuZ2V0UHVibGljKHRydWUsICdoZXgnKTtcbiAgICBjb25zdCB7IHJlc3VsdCB9ID0ga2V5LnZhbGlkYXRlKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQcml2YXRlS2V5RXJyb3IocHJpdmF0ZUtleSk7XG4gICAgfVxuXG4gICAgbXV0YWJsZVB1YmxpY0tleUNhY2hlW3ByaXZhdGVLZXlIZXhdID0gcHVibGljS2V5ID0gdG9FQ1BvaW50RnJvbUtleVBhaXIoa2V5KTtcbiAgfVxuXG4gIHJldHVybiBwdWJsaWNLZXk7XG59O1xuXG5jb25zdCBjcmVhdGVLZXlQYWlyID0gKCk6IHsgcmVhZG9ubHkgcHJpdmF0ZUtleTogUHJpdmF0ZUtleTsgcmVhZG9ubHkgcHVibGljS2V5OiBFQ1BvaW50IH0gPT4ge1xuICBjb25zdCBrZXkgPSBlYygpLmdlbktleVBhaXIoKTtcblxuICByZXR1cm4ge1xuICAgIHByaXZhdGVLZXk6IGNvbW1vbi5idWZmZXJUb1ByaXZhdGVLZXkoa2V5LmdldFByaXZhdGUoKS50b0FycmF5TGlrZShCdWZmZXIsICdiZScpKSxcbiAgICBwdWJsaWNLZXk6IHRvRUNQb2ludEZyb21LZXlQYWlyKGtleSksXG4gIH07XG59O1xuXG5jb25zdCBjcmVhdGVQcml2YXRlS2V5ID0gKCk6IFByaXZhdGVLZXkgPT4gY29tbW9uLmJ1ZmZlclRvUHJpdmF0ZUtleShyYW5kb21CeXRlcygzMikpO1xuXG5jb25zdCB0b1NjcmlwdEhhc2ggPSBoYXNoMTYwO1xuXG4vLyBUYWtlcyB2YXJpb3VzIGZvcm1hdHMgYW5kIGNvbnZlcnRzIHRvIHN0YW5kYXJkIEVDUG9pbnRcbmNvbnN0IHRvRUNQb2ludCA9IChwdWJsaWNLZXk6IEJ1ZmZlcik6IEVDUG9pbnQgPT4gdG9FQ1BvaW50RnJvbUtleVBhaXIoZWMoKS5rZXlGcm9tUHVibGljKHB1YmxpY0tleSkpO1xuXG5jb25zdCBiYXNlNThDaGVja3N1bSA9IChidWZmZXI6IEJ1ZmZlcik6IEJ1ZmZlciA9PiBjb21tb24udUludDI1NlRvQnVmZmVyKGhhc2gyNTYoYnVmZmVyKSkuc2xpY2UoMCwgNCk7XG5cbmNvbnN0IGJhc2U1OENoZWNrRW5jb2RlID0gKGJ1ZmZlcjogQnVmZmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3QgY2hlY2tzdW0gPSBiYXNlNThDaGVja3N1bShidWZmZXIpO1xuXG4gIHJldHVybiBiYXNlNTguZW5jb2RlKEJ1ZmZlci5jb25jYXQoW2J1ZmZlciwgY2hlY2tzdW1dKSk7XG59O1xuXG5jb25zdCBiYXNlNThDaGVja0RlY29kZSA9ICh2YWx1ZTogc3RyaW5nKTogQnVmZmVyID0+IHtcbiAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYmFzZTU4LmRlY29kZSh2YWx1ZSkpO1xuICBjb25zdCBwYXlsb2FkID0gYnVmZmVyLnNsaWNlKDAsIC00KTtcbiAgY29uc3QgY2hlY2tzdW0gPSBidWZmZXIuc2xpY2UoLTQpO1xuICBjb25zdCBwYXlsb2FkQ2hlY2tzdW0gPSBiYXNlNThDaGVja3N1bShwYXlsb2FkKTtcbiAgaWYgKCFjaGVja3N1bS5lcXVhbHMocGF5bG9hZENoZWNrc3VtKSkge1xuICAgIHRocm93IG5ldyBCYXNlNThDaGVja0Vycm9yKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBwYXlsb2FkO1xufTtcblxuY29uc3Qgc2NyaXB0SGFzaFRvQWRkcmVzcyA9ICh7XG4gIGFkZHJlc3NWZXJzaW9uLFxuICBzY3JpcHRIYXNoLFxufToge1xuICByZWFkb25seSBhZGRyZXNzVmVyc2lvbjogbnVtYmVyO1xuICByZWFkb25seSBzY3JpcHRIYXNoOiBVSW50MTYwO1xufSk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG11dGFibGVCdWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjEpO1xuICBtdXRhYmxlQnVmZmVyWzBdID0gYWRkcmVzc1ZlcnNpb247XG4gIGNvbW1vbi51SW50MTYwVG9CdWZmZXIoc2NyaXB0SGFzaCkuY29weShtdXRhYmxlQnVmZmVyLCAxKTtcblxuICByZXR1cm4gYmFzZTU4Q2hlY2tFbmNvZGUobXV0YWJsZUJ1ZmZlcik7XG59O1xuXG5jb25zdCBhZGRyZXNzVG9TY3JpcHRIYXNoID0gKHtcbiAgYWRkcmVzc1ZlcnNpb24sXG4gIGFkZHJlc3MsXG59OiB7XG4gIHJlYWRvbmx5IGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGFkZHJlc3M6IHN0cmluZztcbn0pOiBVSW50MTYwID0+IHtcbiAgY29uc3QgZGVjb2RlZEFkZHJlc3MgPSBiYXNlNThDaGVja0RlY29kZShhZGRyZXNzKTtcbiAgaWYgKGRlY29kZWRBZGRyZXNzLmxlbmd0aCAhPT0gMjEgfHwgZGVjb2RlZEFkZHJlc3NbMF0gIT09IGFkZHJlc3NWZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYWRkcmVzcyk7XG4gIH1cblxuICByZXR1cm4gY29tbW9uLmJ1ZmZlclRvVUludDE2MChkZWNvZGVkQWRkcmVzcy5zbGljZSgxKSk7XG59O1xuXG5jb25zdCBjcmVhdGVJbnZvY2F0aW9uU2NyaXB0Rm9yU2lnbmF0dXJlID0gKHNpZ25hdHVyZTogQnVmZmVyKTogQnVmZmVyID0+IHtcbiAgY29uc3QgYnVpbGRlciA9IG5ldyBTY3JpcHRCdWlsZGVyKCk7XG4gIGJ1aWxkZXIuZW1pdFB1c2goc2lnbmF0dXJlKTtcblxuICByZXR1cm4gYnVpbGRlci5idWlsZCgpO1xufTtcblxuY29uc3QgY3JlYXRlSW52b2NhdGlvblNjcmlwdCA9IChtZXNzYWdlOiBCdWZmZXIsIHByaXZhdGVLZXk6IFByaXZhdGVLZXkpOiBCdWZmZXIgPT5cbiAgY3JlYXRlSW52b2NhdGlvblNjcmlwdEZvclNpZ25hdHVyZShzaWduKHsgbWVzc2FnZSwgcHJpdmF0ZUtleSB9KSk7XG5cbmNvbnN0IGNyZWF0ZVZlcmlmaWNhdGlvblNjcmlwdCA9IChwdWJsaWNLZXk6IEVDUG9pbnQpOiBCdWZmZXIgPT4ge1xuICBjb25zdCBidWlsZGVyID0gbmV3IFNjcmlwdEJ1aWxkZXIoKTtcbiAgYnVpbGRlci5lbWl0UHVzaEVDUG9pbnQocHVibGljS2V5KTtcbiAgYnVpbGRlci5lbWl0T3AoJ0NIRUNLU0lHJyk7XG5cbiAgcmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZVdpdG5lc3NGb3JTaWduYXR1cmUgPSA8VFdpdG5lc3MgZXh0ZW5kcyBXaXRuZXNzTW9kZWw+KFxuICBzaWduYXR1cmU6IEJ1ZmZlcixcbiAgcHVibGljS2V5OiBFQ1BvaW50LFxuICBXaXRuZXNzOiBDb25zdHJ1Y3RvcjxUV2l0bmVzcz4sXG4pOiBUV2l0bmVzcyA9PiB7XG4gIGNvbnN0IHZlcmlmaWNhdGlvbiA9IGNyZWF0ZVZlcmlmaWNhdGlvblNjcmlwdChwdWJsaWNLZXkpO1xuICBjb25zdCBpbnZvY2F0aW9uID0gY3JlYXRlSW52b2NhdGlvblNjcmlwdEZvclNpZ25hdHVyZShzaWduYXR1cmUpO1xuXG4gIHJldHVybiBuZXcgV2l0bmVzcyh7IHZlcmlmaWNhdGlvbiwgaW52b2NhdGlvbiB9KTtcbn07XG5cbmNvbnN0IGNyZWF0ZVdpdG5lc3MgPSA8VFdpdG5lc3MgZXh0ZW5kcyBXaXRuZXNzTW9kZWw+KFxuICBtZXNzYWdlOiBCdWZmZXIsXG4gIHByaXZhdGVLZXk6IFByaXZhdGVLZXksXG4gIFdpdG5lc3M6IENvbnN0cnVjdG9yPFRXaXRuZXNzPixcbik6IFRXaXRuZXNzID0+IGNyZWF0ZVdpdG5lc3NGb3JTaWduYXR1cmUoc2lnbih7IG1lc3NhZ2UsIHByaXZhdGVLZXkgfSksIHByaXZhdGVLZXlUb1B1YmxpY0tleShwcml2YXRlS2V5KSwgV2l0bmVzcyk7XG5cbmNvbnN0IGdldFZlcmlmaWNhdGlvblNjcmlwdEhhc2ggPSAocHVibGljS2V5OiBFQ1BvaW50KTogVUludDE2MCA9PiB0b1NjcmlwdEhhc2goY3JlYXRlVmVyaWZpY2F0aW9uU2NyaXB0KHB1YmxpY0tleSkpO1xuXG5jb25zdCBjb21wYXJlS2V5cyA9IChhOiBFQy5LZXlQYWlyLCBiOiBFQy5LZXlQYWlyKTogbnVtYmVyID0+IHtcbiAgY29uc3QgYVB1YmxpYyA9IGEuZ2V0UHVibGljKCk7XG4gIGNvbnN0IGJQdWJsaWMgPSBiLmdldFB1YmxpYygpO1xuICBjb25zdCByZXN1bHQgPSBhUHVibGljLmdldFgoKS5jbXAoYlB1YmxpYy5nZXRYKCkpO1xuICBpZiAocmVzdWx0ICE9PSAwKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBhUHVibGljLmdldFkoKS5jbXAoYlB1YmxpYy5nZXRZKCkpO1xufTtcblxuY29uc3Qgc29ydEtleXMgPSAocHVibGljS2V5czogUmVhZG9ubHlBcnJheTxFQ1BvaW50Pik6IFJlYWRvbmx5QXJyYXk8RUNQb2ludD4gPT5cbiAgcHVibGljS2V5c1xuICAgIC5tYXAoKHB1YmxpY0tleSkgPT4gZWMoKS5rZXlGcm9tUHVibGljKHB1YmxpY0tleSkpXG4gICAgLnNvcnQoY29tcGFyZUtleXMpXG4gICAgLm1hcCh0b0VDUG9pbnRGcm9tS2V5UGFpcik7XG5cbmNvbnN0IGNyZWF0ZU11bHRpU2lnbmF0dXJlVmVyaWZpY2F0aW9uU2NyaXB0ID0gKG1JbjogbnVtYmVyLCBwdWJsaWNLZXlzOiBSZWFkb25seUFycmF5PEVDUG9pbnQ+KSA9PiB7XG4gIGNvbnN0IG0gPSBNYXRoLmZsb29yKG1Jbik7XG4gIGlmIChtIDwgMSB8fCBtID4gcHVibGljS2V5cy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZE51bWJlck9mS2V5c0Vycm9yKG0sIHB1YmxpY0tleXMubGVuZ3RoKTtcbiAgfVxuXG4gIGlmIChwdWJsaWNLZXlzLmxlbmd0aCA+IDEwMjQpIHtcbiAgICB0aHJvdyBuZXcgVG9vTWFueVB1YmxpY0tleXNFcnJvcihwdWJsaWNLZXlzLmxlbmd0aCk7XG4gIH1cblxuICBjb25zdCBidWlsZGVyID0gbmV3IFNjcmlwdEJ1aWxkZXIoKTtcbiAgYnVpbGRlci5lbWl0UHVzaEludChtKTtcbiAgY29uc3QgcHVibGljS2V5c1NvcnRlZCA9IHB1YmxpY0tleXMubGVuZ3RoID09PSAxID8gcHVibGljS2V5cyA6IHNvcnRLZXlzKHB1YmxpY0tleXMpO1xuICBwdWJsaWNLZXlzU29ydGVkLmZvckVhY2goKGVjUG9pbnQpID0+IHtcbiAgICBidWlsZGVyLmVtaXRQdXNoRUNQb2ludChlY1BvaW50KTtcbiAgfSk7XG4gIGJ1aWxkZXIuZW1pdFB1c2hJbnQocHVibGljS2V5c1NvcnRlZC5sZW5ndGgpO1xuICBidWlsZGVyLmVtaXRPcCgnQ0hFQ0tNVUxUSVNJRycpO1xuXG4gIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7XG59O1xuXG5jb25zdCBjcmVhdGVNdWx0aVNpZ25hdHVyZUludm9jYXRpb25TY3JpcHQgPSAoc2lnbmF0dXJlczogUmVhZG9ubHlBcnJheTxCdWZmZXI+KTogQnVmZmVyID0+IHtcbiAgY29uc3QgYnVpbGRlciA9IG5ldyBTY3JpcHRCdWlsZGVyKCk7XG4gIHNpZ25hdHVyZXMuZm9yRWFjaCgoc2lnbmF0dXJlKSA9PiB7XG4gICAgYnVpbGRlci5lbWl0UHVzaChzaWduYXR1cmUpO1xuICB9KTtcblxuICByZXR1cm4gYnVpbGRlci5idWlsZCgpO1xufTtcblxuY29uc3QgY3JlYXRlTXVsdGlTaWduYXR1cmVXaXRuZXNzID0gPFRXaXRuZXNzIGV4dGVuZHMgV2l0bmVzc01vZGVsPihcbiAgbUluOiBudW1iZXIsXG4gIHB1YmxpY0tleXM6IFJlYWRvbmx5QXJyYXk8RUNQb2ludD4sXG4gIHB1YmxpY0tleVRvU2lnbmF0dXJlOiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEJ1ZmZlciB9LFxuICBXaXRuZXNzOiBDb25zdHJ1Y3RvcjxUV2l0bmVzcz4sXG4pOiBUV2l0bmVzcyA9PiB7XG4gIGNvbnN0IG0gPSBNYXRoLmZsb29yKG1Jbik7XG4gIGNvbnN0IHB1YmxpY0tleXNTb3J0ZWQgPSBwdWJsaWNLZXlzLmxlbmd0aCA9PT0gMSA/IHB1YmxpY0tleXMgOiBzb3J0S2V5cyhwdWJsaWNLZXlzKTtcbiAgY29uc3Qgc2lnbmF0dXJlcyA9IHB1YmxpY0tleXNTb3J0ZWRcbiAgICAubWFwKChwdWJsaWNLZXkpID0+IHB1YmxpY0tleVRvU2lnbmF0dXJlW2NvbW1vbi5lY1BvaW50VG9IZXgocHVibGljS2V5KV0pXG4gICAgLmZpbHRlcih1dGlscy5ub3ROdWxsKTtcbiAgaWYgKHNpZ25hdHVyZXMubGVuZ3RoICE9PSBtKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRTaWduYXR1cmVzRXJyb3IobSwgc2lnbmF0dXJlcy5sZW5ndGgpO1xuICB9XG5cbiAgY29uc3QgdmVyaWZpY2F0aW9uID0gY3JlYXRlTXVsdGlTaWduYXR1cmVWZXJpZmljYXRpb25TY3JpcHQobSwgcHVibGljS2V5c1NvcnRlZCk7XG4gIGNvbnN0IGludm9jYXRpb24gPSBjcmVhdGVNdWx0aVNpZ25hdHVyZUludm9jYXRpb25TY3JpcHQoc2lnbmF0dXJlcyk7XG5cbiAgcmV0dXJuIG5ldyBXaXRuZXNzKHsgdmVyaWZpY2F0aW9uLCBpbnZvY2F0aW9uIH0pO1xufTtcblxuY29uc3QgZ2V0Q29uc2Vuc3VzQWRkcmVzcyA9ICh2YWxpZGF0b3JzOiBSZWFkb25seUFycmF5PEVDUG9pbnQ+KTogVUludDE2MCA9PlxuICB0b1NjcmlwdEhhc2goXG4gICAgY3JlYXRlTXVsdGlTaWduYXR1cmVWZXJpZmljYXRpb25TY3JpcHQoTWF0aC5mbG9vcih2YWxpZGF0b3JzLmxlbmd0aCAtICh2YWxpZGF0b3JzLmxlbmd0aCAtIDEpIC8gMyksIHZhbGlkYXRvcnMpLFxuICApO1xuXG5jb25zdCB3aWZUb1ByaXZhdGVLZXkgPSAod2lmOiBzdHJpbmcsIHByaXZhdGVLZXlWZXJzaW9uOiBudW1iZXIpOiBQcml2YXRlS2V5ID0+IHtcbiAgY29uc3QgcHJpdmF0ZUtleURlY29kZWQgPSBiYXNlNThDaGVja0RlY29kZSh3aWYpO1xuXG4gIGlmIChwcml2YXRlS2V5RGVjb2RlZC5sZW5ndGggIT09IDM0IHx8IHByaXZhdGVLZXlEZWNvZGVkWzBdICE9PSBwcml2YXRlS2V5VmVyc2lvbiB8fCBwcml2YXRlS2V5RGVjb2RlZFszM10gIT09IDB4MDEpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRocm93IG5ldyBJbnZhbGlkRm9ybWF0RXJyb3IoJ1ByaXZhdGUgS2V5IHdhcyBpbnZhbGlkIHdoZW4gZGVjb2RlZCBmcm9tIFdJRi4nKTtcbiAgfVxuXG4gIHJldHVybiBjb21tb24uYnVmZmVyVG9Qcml2YXRlS2V5KHByaXZhdGVLZXlEZWNvZGVkLnNsaWNlKDEsIDMzKSk7XG59O1xuXG5jb25zdCBwcml2YXRlS2V5VG9XSUYgPSAocHJpdmF0ZUtleTogUHJpdmF0ZUtleSwgcHJpdmF0ZUtleVZlcnNpb246IG51bWJlcik6IHN0cmluZyA9PlxuICBXSUYuZW5jb2RlKHByaXZhdGVLZXlWZXJzaW9uLCBjb21tb24ucHJpdmF0ZUtleVRvQnVmZmVyKHByaXZhdGVLZXkpLCB0cnVlKTtcblxuY29uc3QgcHVibGljS2V5VG9TY3JpcHRIYXNoID0gZ2V0VmVyaWZpY2F0aW9uU2NyaXB0SGFzaDtcblxuY29uc3QgcHJpdmF0ZUtleVRvU2NyaXB0SGFzaCA9IChwcml2YXRlS2V5OiBQcml2YXRlS2V5KTogVUludDE2MCA9PlxuICBwdWJsaWNLZXlUb1NjcmlwdEhhc2gocHJpdmF0ZUtleVRvUHVibGljS2V5KHByaXZhdGVLZXkpKTtcblxuY29uc3QgcHJpdmF0ZUtleVRvQWRkcmVzcyA9ICh7XG4gIGFkZHJlc3NWZXJzaW9uLFxuICBwcml2YXRlS2V5LFxufToge1xuICByZWFkb25seSBhZGRyZXNzVmVyc2lvbjogbnVtYmVyO1xuICByZWFkb25seSBwcml2YXRlS2V5OiBQcml2YXRlS2V5O1xufSk6IHN0cmluZyA9PlxuICBzY3JpcHRIYXNoVG9BZGRyZXNzKHtcbiAgICBhZGRyZXNzVmVyc2lvbixcbiAgICBzY3JpcHRIYXNoOiBwcml2YXRlS2V5VG9TY3JpcHRIYXNoKHByaXZhdGVLZXkpLFxuICB9KTtcblxuY29uc3QgTkVQMl9LREZQQVJBTVMgPSB7XG4gIE46IDE2Mzg0LFxuICByOiA4LFxuICBwOiA4LFxuICBka2xlbjogNjQsXG59O1xuXG5jb25zdCBORVAyX1pFUk8gPSAweDAxO1xuY29uc3QgTkVQMl9PTkUgPSAweDQyO1xuY29uc3QgTkVQMl9UV08gPSAweGUwO1xuY29uc3QgTkVQMl9DSVBIRVIgPSAnYWVzLTI1Ni1lY2InO1xuXG5jb25zdCBnZXRORVAyRGVyaXZlZCA9IGFzeW5jICh7XG4gIHBhc3N3b3JkLFxuICBzYWx0LFxufToge1xuICByZWFkb25seSBwYXNzd29yZDogc3RyaW5nO1xuICByZWFkb25seSBzYWx0OiBCdWZmZXI7XG59KTogUHJvbWlzZTxCdWZmZXI+ID0+XG4gIG5ldyBQcm9taXNlPEJ1ZmZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICBzY3J5cHQoXG4gICAgICBCdWZmZXIuZnJvbShwYXNzd29yZC5ub3JtYWxpemUoJ05GS0MnKSwgJ3V0ZjgnKSxcbiAgICAgIHNhbHQsXG4gICAgICBORVAyX0tERlBBUkFNUy5OLFxuICAgICAgTkVQMl9LREZQQVJBTVMucixcbiAgICAgIE5FUDJfS0RGUEFSQU1TLnAsXG4gICAgICBORVAyX0tERlBBUkFNUy5ka2xlbixcbiAgICAgIChlcnJvciwgX3Byb2dyZXNzLCBrZXkpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKGVycm9yICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5KSB7XG4gICAgICAgICAgcmVzb2x2ZShCdWZmZXIuZnJvbShbLi4ua2V5XSkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICksXG4gICk7XG5cbmNvbnN0IGdldE5FUDJTYWx0ID0gKHtcbiAgYWRkcmVzc1ZlcnNpb24sXG4gIHByaXZhdGVLZXksXG59OiB7XG4gIHJlYWRvbmx5IGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IHByaXZhdGVLZXk6IFByaXZhdGVLZXk7XG59KSA9PiB7XG4gIGNvbnN0IGFkZHJlc3MgPSBwcml2YXRlS2V5VG9BZGRyZXNzKHtcbiAgICBhZGRyZXNzVmVyc2lvbixcbiAgICBwcml2YXRlS2V5LFxuICB9KTtcblxuICByZXR1cm4gY29tbW9uLnVJbnQyNTZUb0J1ZmZlcihoYXNoMjU2KEJ1ZmZlci5mcm9tKGFkZHJlc3MsICdsYXRpbjEnKSkpLnNsaWNlKDAsIDQpO1xufTtcblxuY29uc3QgZW5jcnlwdE5FUDIgPSBhc3luYyAoe1xuICBhZGRyZXNzVmVyc2lvbixcbiAgcGFzc3dvcmQsXG4gIHByaXZhdGVLZXksXG59OiB7XG4gIHJlYWRvbmx5IGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IHBhc3N3b3JkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaXZhdGVLZXk6IFByaXZhdGVLZXk7XG59KTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3Qgc2FsdCA9IGdldE5FUDJTYWx0KHsgYWRkcmVzc1ZlcnNpb24sIHByaXZhdGVLZXkgfSk7XG5cbiAgY29uc3QgZGVyaXZlZCA9IGF3YWl0IGdldE5FUDJEZXJpdmVkKHsgcGFzc3dvcmQsIHNhbHQgfSk7XG4gIGNvbnN0IGRlcml2ZWQxID0gZGVyaXZlZC5zbGljZSgwLCAzMik7XG4gIGNvbnN0IGRlcml2ZWQyID0gZGVyaXZlZC5zbGljZSgzMiwgNjQpO1xuXG4gIGNvbnN0IGNpcGhlciA9IGNyZWF0ZUNpcGhlcml2KE5FUDJfQ0lQSEVSLCBkZXJpdmVkMiwgQnVmZmVyLmFsbG9jKDAsIDApKTtcblxuICBjaXBoZXIuc2V0QXV0b1BhZGRpbmcoZmFsc2UpO1xuICBjaXBoZXIuZW5kKHhvcihwcml2YXRlS2V5LCBkZXJpdmVkMSkpO1xuICBjb25zdCBjaXBoZXJ0ZXh0ID0gY2lwaGVyLnJlYWQoKSBhcyBCdWZmZXI7XG5cbiAgY29uc3QgcmVzdWx0ID0gQnVmZmVyLmFsbG9jKDcgKyAzMiwgMCk7XG4gIHJlc3VsdC53cml0ZVVJbnQ4KE5FUDJfWkVSTywgMCk7XG4gIHJlc3VsdC53cml0ZVVJbnQ4KE5FUDJfT05FLCAxKTtcbiAgcmVzdWx0LndyaXRlVUludDgoTkVQMl9UV08sIDIpO1xuICBzYWx0LmNvcHkocmVzdWx0LCAzKTtcbiAgY2lwaGVydGV4dC5jb3B5KHJlc3VsdCwgNyk7XG5cbiAgcmV0dXJuIGJhc2U1OENoZWNrRW5jb2RlKHJlc3VsdCk7XG59O1xuXG5jb25zdCBpc05FUDIgPSAoZW5jcnlwdGVkS2V5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZWNvZGVkID0gYmFzZTU4Q2hlY2tEZWNvZGUoZW5jcnlwdGVkS2V5KTtcblxuICAgIHJldHVybiAoXG4gICAgICBkZWNvZGVkLmxlbmd0aCA9PT0gMzkgJiZcbiAgICAgIGRlY29kZWQucmVhZFVJbnQ4KDApID09PSBORVAyX1pFUk8gJiZcbiAgICAgIGRlY29kZWQucmVhZFVJbnQ4KDEpID09PSBORVAyX09ORSAmJlxuICAgICAgZGVjb2RlZC5yZWFkVUludDgoMikgPT09IE5FUDJfVFdPXG4gICAgKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5jb25zdCBkZWNyeXB0TkVQMiA9IGFzeW5jICh7XG4gIGFkZHJlc3NWZXJzaW9uLFxuICBlbmNyeXB0ZWRLZXksXG4gIHBhc3N3b3JkLFxufToge1xuICByZWFkb25seSBhZGRyZXNzVmVyc2lvbjogbnVtYmVyO1xuICByZWFkb25seSBlbmNyeXB0ZWRLZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbn0pOiBQcm9taXNlPFByaXZhdGVLZXk+ID0+IHtcbiAgY29uc3QgZGVjb2RlZCA9IGJhc2U1OENoZWNrRGVjb2RlKGVuY3J5cHRlZEtleSk7XG5cbiAgaWYgKFxuICAgIGRlY29kZWQubGVuZ3RoICE9PSAzOSB8fFxuICAgIGRlY29kZWQucmVhZFVJbnQ4KDApICE9PSBORVAyX1pFUk8gfHxcbiAgICBkZWNvZGVkLnJlYWRVSW50OCgxKSAhPT0gTkVQMl9PTkUgfHxcbiAgICBkZWNvZGVkLnJlYWRVSW50OCgyKSAhPT0gTkVQMl9UV09cbiAgKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aHJvdyBuZXcgSW52YWxpZEZvcm1hdEVycm9yKCdJbnZhbGlkIE5FUDIgZm9ybWF0IHdoZW4gZGVjb2RlZCBmcm9tIGVuY3J5cHRlZEtleS4nKTtcbiAgfVxuXG4gIGNvbnN0IHNhbHQgPSBkZWNvZGVkLnNsaWNlKDMsIDcpO1xuICBjb25zdCBkZXJpdmVkID0gYXdhaXQgZ2V0TkVQMkRlcml2ZWQoeyBwYXNzd29yZCwgc2FsdCB9KTtcbiAgY29uc3QgZGVyaXZlZDEgPSBkZXJpdmVkLnNsaWNlKDAsIDMyKTtcbiAgY29uc3QgZGVyaXZlZDIgPSBkZXJpdmVkLnNsaWNlKDMyLCA2NCk7XG5cbiAgY29uc3QgZGVjaXBoZXIgPSBjcmVhdGVEZWNpcGhlcml2KE5FUDJfQ0lQSEVSLCBkZXJpdmVkMiwgQnVmZmVyLmFsbG9jKDAsIDApKTtcblxuICBkZWNpcGhlci5zZXRBdXRvUGFkZGluZyhmYWxzZSk7XG4gIGRlY2lwaGVyLmVuZChkZWNvZGVkLnNsaWNlKDcsIDcgKyAzMikpO1xuICBjb25zdCBwbGFpblRleHQgPSBkZWNpcGhlci5yZWFkKCkgYXMgQnVmZmVyO1xuXG4gIGNvbnN0IHByaXZhdGVLZXkgPSBjb21tb24uYXNQcml2YXRlS2V5KHhvcihwbGFpblRleHQsIGRlcml2ZWQxKSk7XG5cbiAgY29uc3QgYWRkcmVzc1NhbHQgPSBnZXRORVAyU2FsdCh7IGFkZHJlc3NWZXJzaW9uLCBwcml2YXRlS2V5IH0pO1xuICBpZiAoIXNhbHQuZXF1YWxzKGFkZHJlc3NTYWx0KSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBwYXNzcGhyYXNlLicpO1xuICB9XG5cbiAgcmV0dXJuIGNvbW1vbi5idWZmZXJUb1ByaXZhdGVLZXkocHJpdmF0ZUtleSk7XG59O1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZVxuY29uc3QgaXNNdWx0aVNpZ0NvbnRyYWN0ID0gKHNjcmlwdDogQnVmZmVyKSA9PiB7XG4gIGxldCBtID0gMDtcbiAgbGV0IG4gPSAwO1xuICBsZXQgaSA9IDA7XG4gIGlmIChzY3JpcHQubGVuZ3RoIDwgMzcpIHJldHVybiBmYWxzZTtcbiAgaWYgKHNjcmlwdFtpXSA+IE9wLlBVU0gxNikgcmV0dXJuIGZhbHNlO1xuICBpZiAoc2NyaXB0W2ldIDwgT3AuUFVTSDEgJiYgc2NyaXB0W2ldICE9PSAxICYmIHNjcmlwdFtpXSAhPT0gMikgcmV0dXJuIGZhbHNlO1xuICBzd2l0Y2ggKHNjcmlwdFtpXSkge1xuICAgIGNhc2UgMTpcbiAgICAgIG0gPSBzY3JpcHRbKytpXTtcbiAgICAgICsraTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIG0gPSBzY3JpcHQucmVhZFVJbnQxNkxFKCsraSk7XG4gICAgICBpICs9IDI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbSA9IHNjcmlwdFtpKytdIC0gODA7XG4gICAgICBicmVhaztcbiAgfVxuICBpZiAobSA8IDEgfHwgbSA+IDEwMjQpIHJldHVybiBmYWxzZTtcbiAgd2hpbGUgKHNjcmlwdFtpXSA9PSAzMykge1xuICAgIGkgKz0gMzQ7XG4gICAgaWYgKHNjcmlwdC5sZW5ndGggPD0gaSkgcmV0dXJuIGZhbHNlO1xuICAgICsrbjtcbiAgfVxuICBpZiAobiA8IG0gfHwgbiA+IDEwMjQpIHJldHVybiBmYWxzZTtcbiAgc3dpdGNoIChzY3JpcHRbaV0pIHtcbiAgICBjYXNlIDE6XG4gICAgICBpZiAobiAhPSBzY3JpcHRbKytpXSkgcmV0dXJuIGZhbHNlO1xuICAgICAgKytpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgaWYgKHNjcmlwdC5sZW5ndGggPCBpICsgMyB8fCBuICE9IHNjcmlwdC5yZWFkVUludDE2TEUoKytpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaSArPSAyO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChuICE9IHNjcmlwdFtpKytdIC0gODApIHJldHVybiBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmIChzY3JpcHRbaSsrXSAhPSBPcC5DSEVDS01VTFRJU0lHKSByZXR1cm4gZmFsc2U7XG4gIGlmIChzY3JpcHQubGVuZ3RoICE9IGkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHRydWU7XG59O1xuLy8gdHNsaW50OmVuYWJsZVxuXG5jb25zdCBpc1NpZ25hdHVyZUNvbnRyYWN0ID0gKHNjcmlwdDogQnVmZmVyKSA9PiBzY3JpcHQubGVuZ3RoID09PSAzNSAmJiBzY3JpcHRbMF0gPT09IDMzICYmIHNjcmlwdFszNF0gPT09IE9wLkNIRUNLU0lHO1xuXG5jb25zdCBpc1N0YW5kYXJkQ29udHJhY3QgPSAoc2NyaXB0OiBCdWZmZXIpID0+IGlzU2lnbmF0dXJlQ29udHJhY3Qoc2NyaXB0KSB8fCBpc011bHRpU2lnQ29udHJhY3Qoc2NyaXB0KTtcblxuZXhwb3J0IGNvbnN0IGNyeXB0byA9IHtcbiAgYWRkUHVibGljS2V5LFxuICBzaGExLFxuICBzaGEyNTYsXG4gIGhhc2gxNjAsXG4gIGhhc2gyNTYsXG4gIHNpZ24sXG4gIHZlcmlmeSxcbiAgcHJpdmF0ZUtleVRvUHVibGljS2V5LFxuICB0b1NjcmlwdEhhc2gsXG4gIHRvRUNQb2ludCxcbiAgY3JlYXRlS2V5UGFpcixcbiAgc2NyaXB0SGFzaFRvQWRkcmVzcyxcbiAgYWRkcmVzc1RvU2NyaXB0SGFzaCxcbiAgY3JlYXRlSW52b2NhdGlvblNjcmlwdCxcbiAgY3JlYXRlVmVyaWZpY2F0aW9uU2NyaXB0LFxuICBjcmVhdGVXaXRuZXNzLFxuICBjcmVhdGVXaXRuZXNzRm9yU2lnbmF0dXJlLFxuICBnZXRWZXJpZmljYXRpb25TY3JpcHRIYXNoLFxuICBjcmVhdGVNdWx0aVNpZ25hdHVyZUludm9jYXRpb25TY3JpcHQsXG4gIGNyZWF0ZU11bHRpU2lnbmF0dXJlVmVyaWZpY2F0aW9uU2NyaXB0LFxuICBjcmVhdGVNdWx0aVNpZ25hdHVyZVdpdG5lc3MsXG4gIGdldENvbnNlbnN1c0FkZHJlc3MsXG4gIHByaXZhdGVLZXlUb1dJRixcbiAgd2lmVG9Qcml2YXRlS2V5LFxuICBwdWJsaWNLZXlUb1NjcmlwdEhhc2gsXG4gIHByaXZhdGVLZXlUb1NjcmlwdEhhc2gsXG4gIHByaXZhdGVLZXlUb0FkZHJlc3MsXG4gIGlzTkVQMixcbiAgZW5jcnlwdE5FUDIsXG4gIGRlY3J5cHRORVAyLFxuICBjcmVhdGVQcml2YXRlS2V5LFxuICBpc011bHRpU2lnQ29udHJhY3QsXG4gIGlzU2lnbmF0dXJlQ29udHJhY3QsXG4gIGlzU3RhbmRhcmRDb250cmFjdCxcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,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T0FBTyxLQUFLLENBQUM7SUFDbEQsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNyQyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGLGdCQUFnQjtBQUVoQixNQUFNLG1CQUFtQixHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxXQUFFLENBQUMsUUFBUSxDQUFDO0FBRXZILE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTVGLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLFlBQVk7SUFDWixJQUFJO0lBQ0osTUFBTTtJQUNOLE9BQU87SUFDUCxPQUFPO0lBQ1AsSUFBSTtJQUNKLE1BQU07SUFDTixxQkFBcUI7SUFDckIsWUFBWTtJQUNaLFNBQVM7SUFDVCxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixzQkFBc0I7SUFDdEIsd0JBQXdCO0lBQ3hCLGFBQWE7SUFDYix5QkFBeUI7SUFDekIseUJBQXlCO0lBQ3pCLG9DQUFvQztJQUNwQyxzQ0FBc0M7SUFDdEMsMkJBQTJCO0lBQzNCLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsZUFBZTtJQUNmLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLE1BQU07SUFDTixXQUFXO0lBQ1gsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGtCQUFrQjtDQUNuQixDQUFDIiwiZmlsZSI6Im5lby1vbmUtY2xpZW50LWNvbW1vbi9zcmMvY3J5cHRvLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUgbm8tYW55IG5vLWFycmF5LW11dGF0aW9uXG5pbXBvcnQgRUNLZXkgZnJvbSAnQG5lby1vbmUvZWMta2V5JztcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnQG5lby1vbmUvdXRpbHMnO1xuaW1wb3J0IGJhc2U1OCBmcm9tICdiczU4JztcbmltcG9ydCB4b3IgZnJvbSAnYnVmZmVyLXhvcic7XG5pbXBvcnQgeyBjcmVhdGVDaXBoZXJpdiwgY3JlYXRlRGVjaXBoZXJpdiwgY3JlYXRlSGFzaCwgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgZWMgYXMgRUMgfSBmcm9tICdlbGxpcHRpYyc7XG5pbXBvcnQgc2NyeXB0IGZyb20gJ3NjcnlwdC1qcyc7XG5pbXBvcnQgV0lGIGZyb20gJ3dpZic7XG5pbXBvcnQgeyBjb21tb24sIEVDUG9pbnQsIEludmFsaWRGb3JtYXRFcnJvciwgUHJpdmF0ZUtleSwgVUludDE2MCwgVUludDI1NiB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7XG4gIEJhc2U1OENoZWNrRXJyb3IsXG4gIEludmFsaWRBZGRyZXNzRXJyb3IsXG4gIEludmFsaWROdW1iZXJPZktleXNFcnJvcixcbiAgSW52YWxpZFByaXZhdGVLZXlFcnJvcixcbiAgSW52YWxpZFNpZ25hdHVyZUVycm9yLFxuICBJbnZhbGlkU2lnbmF0dXJlc0Vycm9yLFxuICBUb29NYW55UHVibGljS2V5c0Vycm9yLFxufSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBPcCwgc2hhMjU2IGFzIHNoYTI1NkluLCBXaXRuZXNzTW9kZWwgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBwMjU2IH0gZnJvbSAnLi9wcmVjb21wdXRlZCc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi9TY3JpcHRCdWlsZGVyJztcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWxldFxubGV0IGVjQ2FjaGU6IEVDIHwgdW5kZWZpbmVkO1xuY29uc3QgZWMgPSAoKSA9PiB7XG4gIGlmIChlY0NhY2hlID09PSB1bmRlZmluZWQpIHtcbiAgICBlY0NhY2hlID0gbmV3IEVDKHAyNTYpO1xuICB9XG5cbiAgcmV0dXJuIGVjQ2FjaGU7XG59O1xuXG5jb25zdCBzaGExID0gKHZhbHVlOiBCdWZmZXIpOiBCdWZmZXIgPT5cbiAgY3JlYXRlSGFzaCgnc2hhMScpXG4gICAgLnVwZGF0ZSh2YWx1ZSlcbiAgICAuZGlnZXN0KCk7XG5cbmNvbnN0IHNoYTI1NiA9IHNoYTI1NkluO1xuXG5jb25zdCBybWQxNjAgPSAodmFsdWU6IEJ1ZmZlcik6IEJ1ZmZlciA9PlxuICBjcmVhdGVIYXNoKCdybWQxNjAnKVxuICAgIC51cGRhdGUodmFsdWUpXG4gICAgLmRpZ2VzdCgpO1xuXG5jb25zdCBoYXNoMTYwID0gKHZhbHVlOiBCdWZmZXIpOiBVSW50MTYwID0+IGNvbW1vbi5idWZmZXJUb1VJbnQxNjAocm1kMTYwKHNoYTI1Nih2YWx1ZSkpKTtcblxuY29uc3QgaGFzaDI1NiA9ICh2YWx1ZTogQnVmZmVyKTogVUludDI1NiA9PiBjb21tb24uYnVmZmVyVG9VSW50MjU2KHNoYTI1NihzaGEyNTYodmFsdWUpKSk7XG5cbmNvbnN0IHNpZ24gPSAoeyBtZXNzYWdlLCBwcml2YXRlS2V5IH06IHsgcmVhZG9ubHkgbWVzc2FnZTogQnVmZmVyOyByZWFkb25seSBwcml2YXRlS2V5OiBQcml2YXRlS2V5IH0pOiBCdWZmZXIgPT4ge1xuICBjb25zdCBzaWcgPSBlYygpLnNpZ24oc2hhMjU2KG1lc3NhZ2UpLCBjb21tb24ucHJpdmF0ZUtleVRvQnVmZmVyKHByaXZhdGVLZXkpKTtcblxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbc2lnLnIudG9BcnJheUxpa2UoQnVmZmVyLCAnYmUnLCAzMiksIHNpZy5zLnRvQXJyYXlMaWtlKEJ1ZmZlciwgJ2JlJywgMzIpXSk7XG59O1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZSByZWFkb25seS1hcnJheVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNvbnN0IHJtUGFkZGluZyA9IChidWY6IG51bWJlcltdKTogbnVtYmVyW10gPT4ge1xuICBsZXQgaSA9IDA7XG4gIGNvbnN0IGxlbiA9IGJ1Zi5sZW5ndGggLSAxO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgd2hpbGUgKCFidWZbaV0gJiYgIShidWZbaSArIDFdICYgMHg4MCkgJiYgaSA8IGxlbikge1xuICAgIGkgKz0gMTtcbiAgfVxuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBidWY7XG4gIH1cblxuICByZXR1cm4gYnVmLnNsaWNlKGkpO1xufTtcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBjb25zdHJ1Y3RMZW5ndGggPSAoYXJyOiBudW1iZXJbXSwgbGVuOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgaWYgKGxlbiA8IDB4ODApIHtcbiAgICBhcnIucHVzaChsZW4pO1xuXG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBsZXQgb2N0ZXRzID0gMSArICgoTWF0aC5sb2cobGVuKSAvIE1hdGguTE4yKSA+Pj4gMyk7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBhcnIucHVzaChvY3RldHMgfCAweDgwKTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHdoaWxlICgtLW9jdGV0cykge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIGFyci5wdXNoKChsZW4gPj4+IChvY3RldHMgPDwgMykpICYgMHhmZik7XG4gIH1cbiAgYXJyLnB1c2gobGVuKTtcbn07XG5cbmNvbnN0IHZlcmlmeSA9ICh7XG4gIG1lc3NhZ2UsXG4gIHNpZ25hdHVyZTogc2lnbmF0dXJlSW4sXG4gIHB1YmxpY0tleSxcbn06IHtcbiAgcmVhZG9ubHkgbWVzc2FnZTogQnVmZmVyO1xuICByZWFkb25seSBzaWduYXR1cmU6IEJ1ZmZlcjtcbiAgcmVhZG9ubHkgcHVibGljS2V5OiBFQ1BvaW50O1xufSkgPT4ge1xuICBpZiAoc2lnbmF0dXJlSW4ubGVuZ3RoICE9PSA2NCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkU2lnbmF0dXJlRXJyb3Ioc2lnbmF0dXJlSW4ubGVuZ3RoKTtcbiAgfVxuICBsZXQgciA9IFsuLi5zaWduYXR1cmVJbi5zbGljZSgwLCAzMildO1xuICBsZXQgcyA9IFsuLi5zaWduYXR1cmVJbi5zbGljZSgzMildO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBpZiAoclswXSAmIDB4ODApIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHIgPSBbMF0uY29uY2F0KHIpO1xuICB9XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBpZiAoc1swXSAmIDB4ODApIHtcbiAgICBzID0gWzBdLmNvbmNhdChzKTtcbiAgfVxuXG4gIHIgPSBybVBhZGRpbmcocik7XG4gIHMgPSBybVBhZGRpbmcocyk7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHdoaWxlIChzLmxlbmd0aCA+IDAgJiYgIXNbMF0gJiYgIShzWzFdICYgMHg4MCkpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHMgPSBzLnNsaWNlKDEpO1xuICB9XG4gIGxldCBhcnIgPSBbMHgwMl07XG4gIGNvbnN0cnVjdExlbmd0aChhcnIsIHIubGVuZ3RoKTtcbiAgYXJyID0gYXJyLmNvbmNhdChyKTtcbiAgYXJyLnB1c2goMHgwMik7XG4gIGNvbnN0cnVjdExlbmd0aChhcnIsIHMubGVuZ3RoKTtcbiAgY29uc3QgYmFja0hhbGYgPSBhcnIuY29uY2F0KHMpO1xuICBjb25zdCByZXMgPSBbMHgzMF07XG4gIGNvbnN0cnVjdExlbmd0aChyZXMsIGJhY2tIYWxmLmxlbmd0aCk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKHJlcy5jb25jYXQoYmFja0hhbGYpKTtcblxuICBjb25zdCBrZXkgPSBuZXcgRUNLZXkoe1xuICAgIGNydjogJ1AtMjU2JyxcbiAgICBwdWJsaWNLZXk6IEJ1ZmZlci5mcm9tKFxuICAgICAgZWMoKVxuICAgICAgICAua2V5RnJvbVB1YmxpYyhwdWJsaWNLZXkpXG4gICAgICAgIC5nZXRQdWJsaWMoZmFsc2UsICdoZXgnKSxcbiAgICAgICdoZXgnLFxuICAgICksXG4gIH0pO1xuXG4gIHJldHVybiAoa2V5LmNyZWF0ZVZlcmlmeSgnU0hBMjU2JykudXBkYXRlKG1lc3NhZ2UpIGFzIGFueSkudmVyaWZ5KHNpZ25hdHVyZSk7XG59O1xuLy8gdHNsaW50OmVuYWJsZSByZWFkb25seS1hcnJheVxuXG5jb25zdCB0b0VDUG9pbnRGcm9tS2V5UGFpciA9IChwYWlyOiBFQy5LZXlQYWlyKTogRUNQb2ludCA9PlxuICBjb21tb24uYnVmZmVyVG9FQ1BvaW50KEJ1ZmZlci5mcm9tKHBhaXIuZ2V0UHVibGljKHRydWUsICdoZXgnKSwgJ2hleCcpKTtcblxuY29uc3QgbXV0YWJsZVB1YmxpY0tleUNhY2hlOiB7IFtLIGluIHN0cmluZ10/OiBFQ1BvaW50IH0gPSB7fTtcbmNvbnN0IGFkZFB1YmxpY0tleSA9IChwcml2YXRlS2V5OiBQcml2YXRlS2V5LCBwdWJsaWNLZXk6IEVDUG9pbnQpID0+IHtcbiAgbXV0YWJsZVB1YmxpY0tleUNhY2hlW2NvbW1vbi5wcml2YXRlS2V5VG9TdHJpbmcocHJpdmF0ZUtleSldID0gcHVibGljS2V5O1xufTtcbmNvbnN0IHByaXZhdGVLZXlUb1B1YmxpY0tleSA9IChwcml2YXRlS2V5OiBQcml2YXRlS2V5KTogRUNQb2ludCA9PiB7XG4gIGNvbnN0IHByaXZhdGVLZXlIZXggPSBjb21tb24ucHJpdmF0ZUtleVRvU3RyaW5nKHByaXZhdGVLZXkpO1xuICBsZXQgcHVibGljS2V5ID0gbXV0YWJsZVB1YmxpY0tleUNhY2hlW3ByaXZhdGVLZXlIZXhdO1xuICBpZiAocHVibGljS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBrZXkgPSBlYygpLmtleUZyb21Qcml2YXRlKGNvbW1vbi5wcml2YXRlS2V5VG9CdWZmZXIocHJpdmF0ZUtleSkpO1xuICAgIGtleS5nZXRQdWJsaWModHJ1ZSwgJ2hleCcpO1xuICAgIGNvbnN0IHsgcmVzdWx0IH0gPSBrZXkudmFsaWRhdGUoKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFByaXZhdGVLZXlFcnJvcihwcml2YXRlS2V5KTtcbiAgICB9XG5cbiAgICBtdXRhYmxlUHVibGljS2V5Q2FjaGVbcHJpdmF0ZUtleUhleF0gPSBwdWJsaWNLZXkgPSB0b0VDUG9pbnRGcm9tS2V5UGFpcihrZXkpO1xuICB9XG5cbiAgcmV0dXJuIHB1YmxpY0tleTtcbn07XG5cbmNvbnN0IGNyZWF0ZUtleVBhaXIgPSAoKTogeyByZWFkb25seSBwcml2YXRlS2V5OiBQcml2YXRlS2V5OyByZWFkb25seSBwdWJsaWNLZXk6IEVDUG9pbnQgfSA9PiB7XG4gIGNvbnN0IGtleSA9IGVjKCkuZ2VuS2V5UGFpcigpO1xuICBjb25zdCB2YWxpZGF0aW9uID0ga2V5LnZhbGlkYXRlKCk7XG5cbiAgaWYgKCF2YWxpZGF0aW9uLnJlc3VsdCkge1xuICAgIHJldHVybiBjcmVhdGVLZXlQYWlyKCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHByaXZhdGVLZXk6IGNvbW1vbi5idWZmZXJUb1ByaXZhdGVLZXkoa2V5LmdldFByaXZhdGUoKS50b0FycmF5TGlrZShCdWZmZXIsICdiZScpKSxcbiAgICBwdWJsaWNLZXk6IHRvRUNQb2ludEZyb21LZXlQYWlyKGtleSksXG4gIH07XG59O1xuXG5jb25zdCBjcmVhdGVQcml2YXRlS2V5ID0gKCk6IFByaXZhdGVLZXkgPT4gY29tbW9uLmJ1ZmZlclRvUHJpdmF0ZUtleShyYW5kb21CeXRlcygzMikpO1xuXG5jb25zdCB0b1NjcmlwdEhhc2ggPSBoYXNoMTYwO1xuXG4vLyBUYWtlcyB2YXJpb3VzIGZvcm1hdHMgYW5kIGNvbnZlcnRzIHRvIHN0YW5kYXJkIEVDUG9pbnRcbmNvbnN0IHRvRUNQb2ludCA9IChwdWJsaWNLZXk6IEJ1ZmZlcik6IEVDUG9pbnQgPT4gdG9FQ1BvaW50RnJvbUtleVBhaXIoZWMoKS5rZXlGcm9tUHVibGljKHB1YmxpY0tleSkpO1xuXG5jb25zdCBiYXNlNThDaGVja3N1bSA9IChidWZmZXI6IEJ1ZmZlcik6IEJ1ZmZlciA9PiBjb21tb24udUludDI1NlRvQnVmZmVyKGhhc2gyNTYoYnVmZmVyKSkuc2xpY2UoMCwgNCk7XG5cbmNvbnN0IGJhc2U1OENoZWNrRW5jb2RlID0gKGJ1ZmZlcjogQnVmZmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3QgY2hlY2tzdW0gPSBiYXNlNThDaGVja3N1bShidWZmZXIpO1xuXG4gIHJldHVybiBiYXNlNTguZW5jb2RlKEJ1ZmZlci5jb25jYXQoW2J1ZmZlciwgY2hlY2tzdW1dKSk7XG59O1xuXG5jb25zdCBiYXNlNThDaGVja0RlY29kZSA9ICh2YWx1ZTogc3RyaW5nKTogQnVmZmVyID0+IHtcbiAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYmFzZTU4LmRlY29kZSh2YWx1ZSkpO1xuICBjb25zdCBwYXlsb2FkID0gYnVmZmVyLnNsaWNlKDAsIC00KTtcbiAgY29uc3QgY2hlY2tzdW0gPSBidWZmZXIuc2xpY2UoLTQpO1xuICBjb25zdCBwYXlsb2FkQ2hlY2tzdW0gPSBiYXNlNThDaGVja3N1bShwYXlsb2FkKTtcbiAgaWYgKCFjaGVja3N1bS5lcXVhbHMocGF5bG9hZENoZWNrc3VtKSkge1xuICAgIHRocm93IG5ldyBCYXNlNThDaGVja0Vycm9yKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBwYXlsb2FkO1xufTtcblxuY29uc3Qgc2NyaXB0SGFzaFRvQWRkcmVzcyA9ICh7XG4gIGFkZHJlc3NWZXJzaW9uLFxuICBzY3JpcHRIYXNoLFxufToge1xuICByZWFkb25seSBhZGRyZXNzVmVyc2lvbjogbnVtYmVyO1xuICByZWFkb25seSBzY3JpcHRIYXNoOiBVSW50MTYwO1xufSk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG11dGFibGVCdWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjEpO1xuICBtdXRhYmxlQnVmZmVyWzBdID0gYWRkcmVzc1ZlcnNpb247XG4gIGNvbW1vbi51SW50MTYwVG9CdWZmZXIoc2NyaXB0SGFzaCkuY29weShtdXRhYmxlQnVmZmVyLCAxKTtcblxuICByZXR1cm4gYmFzZTU4Q2hlY2tFbmNvZGUobXV0YWJsZUJ1ZmZlcik7XG59O1xuXG5jb25zdCBhZGRyZXNzVG9TY3JpcHRIYXNoID0gKHtcbiAgYWRkcmVzc1ZlcnNpb24sXG4gIGFkZHJlc3MsXG59OiB7XG4gIHJlYWRvbmx5IGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGFkZHJlc3M6IHN0cmluZztcbn0pOiBVSW50MTYwID0+IHtcbiAgY29uc3QgZGVjb2RlZEFkZHJlc3MgPSBiYXNlNThDaGVja0RlY29kZShhZGRyZXNzKTtcbiAgaWYgKGRlY29kZWRBZGRyZXNzLmxlbmd0aCAhPT0gMjEgfHwgZGVjb2RlZEFkZHJlc3NbMF0gIT09IGFkZHJlc3NWZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYWRkcmVzcyk7XG4gIH1cblxuICByZXR1cm4gY29tbW9uLmJ1ZmZlclRvVUludDE2MChkZWNvZGVkQWRkcmVzcy5zbGljZSgxKSk7XG59O1xuXG5jb25zdCBjcmVhdGVJbnZvY2F0aW9uU2NyaXB0Rm9yU2lnbmF0dXJlID0gKHNpZ25hdHVyZTogQnVmZmVyKTogQnVmZmVyID0+IHtcbiAgY29uc3QgYnVpbGRlciA9IG5ldyBTY3JpcHRCdWlsZGVyKCk7XG4gIGJ1aWxkZXIuZW1pdFB1c2goc2lnbmF0dXJlKTtcblxuICByZXR1cm4gYnVpbGRlci5idWlsZCgpO1xufTtcblxuY29uc3QgY3JlYXRlSW52b2NhdGlvblNjcmlwdCA9IChtZXNzYWdlOiBCdWZmZXIsIHByaXZhdGVLZXk6IFByaXZhdGVLZXkpOiBCdWZmZXIgPT5cbiAgY3JlYXRlSW52b2NhdGlvblNjcmlwdEZvclNpZ25hdHVyZShzaWduKHsgbWVzc2FnZSwgcHJpdmF0ZUtleSB9KSk7XG5cbmNvbnN0IGNyZWF0ZVZlcmlmaWNhdGlvblNjcmlwdCA9IChwdWJsaWNLZXk6IEVDUG9pbnQpOiBCdWZmZXIgPT4ge1xuICBjb25zdCBidWlsZGVyID0gbmV3IFNjcmlwdEJ1aWxkZXIoKTtcbiAgYnVpbGRlci5lbWl0UHVzaEVDUG9pbnQocHVibGljS2V5KTtcbiAgYnVpbGRlci5lbWl0T3AoJ0NIRUNLU0lHJyk7XG5cbiAgcmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTtcbn07XG5cbmNvbnN0IGNyZWF0ZVdpdG5lc3NGb3JTaWduYXR1cmUgPSA8VFdpdG5lc3MgZXh0ZW5kcyBXaXRuZXNzTW9kZWw+KFxuICBzaWduYXR1cmU6IEJ1ZmZlcixcbiAgcHVibGljS2V5OiBFQ1BvaW50LFxuICBXaXRuZXNzOiBDb25zdHJ1Y3RvcjxUV2l0bmVzcz4sXG4pOiBUV2l0bmVzcyA9PiB7XG4gIGNvbnN0IHZlcmlmaWNhdGlvbiA9IGNyZWF0ZVZlcmlmaWNhdGlvblNjcmlwdChwdWJsaWNLZXkpO1xuICBjb25zdCBpbnZvY2F0aW9uID0gY3JlYXRlSW52b2NhdGlvblNjcmlwdEZvclNpZ25hdHVyZShzaWduYXR1cmUpO1xuXG4gIHJldHVybiBuZXcgV2l0bmVzcyh7IHZlcmlmaWNhdGlvbiwgaW52b2NhdGlvbiB9KTtcbn07XG5cbmNvbnN0IGNyZWF0ZVdpdG5lc3MgPSA8VFdpdG5lc3MgZXh0ZW5kcyBXaXRuZXNzTW9kZWw+KFxuICBtZXNzYWdlOiBCdWZmZXIsXG4gIHByaXZhdGVLZXk6IFByaXZhdGVLZXksXG4gIFdpdG5lc3M6IENvbnN0cnVjdG9yPFRXaXRuZXNzPixcbik6IFRXaXRuZXNzID0+IGNyZWF0ZVdpdG5lc3NGb3JTaWduYXR1cmUoc2lnbih7IG1lc3NhZ2UsIHByaXZhdGVLZXkgfSksIHByaXZhdGVLZXlUb1B1YmxpY0tleShwcml2YXRlS2V5KSwgV2l0bmVzcyk7XG5cbmNvbnN0IGdldFZlcmlmaWNhdGlvblNjcmlwdEhhc2ggPSAocHVibGljS2V5OiBFQ1BvaW50KTogVUludDE2MCA9PiB0b1NjcmlwdEhhc2goY3JlYXRlVmVyaWZpY2F0aW9uU2NyaXB0KHB1YmxpY0tleSkpO1xuXG5jb25zdCBjb21wYXJlS2V5cyA9IChhOiBFQy5LZXlQYWlyLCBiOiBFQy5LZXlQYWlyKTogbnVtYmVyID0+IHtcbiAgY29uc3QgYVB1YmxpYyA9IGEuZ2V0UHVibGljKCk7XG4gIGNvbnN0IGJQdWJsaWMgPSBiLmdldFB1YmxpYygpO1xuICBjb25zdCByZXN1bHQgPSBhUHVibGljLmdldFgoKS5jbXAoYlB1YmxpYy5nZXRYKCkpO1xuICBpZiAocmVzdWx0ICE9PSAwKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBhUHVibGljLmdldFkoKS5jbXAoYlB1YmxpYy5nZXRZKCkpO1xufTtcblxuY29uc3Qgc29ydEtleXMgPSAocHVibGljS2V5czogUmVhZG9ubHlBcnJheTxFQ1BvaW50Pik6IFJlYWRvbmx5QXJyYXk8RUNQb2ludD4gPT5cbiAgcHVibGljS2V5c1xuICAgIC5tYXAoKHB1YmxpY0tleSkgPT4gZWMoKS5rZXlGcm9tUHVibGljKHB1YmxpY0tleSkpXG4gICAgLnNvcnQoY29tcGFyZUtleXMpXG4gICAgLm1hcCh0b0VDUG9pbnRGcm9tS2V5UGFpcik7XG5cbmNvbnN0IGNyZWF0ZU11bHRpU2lnbmF0dXJlVmVyaWZpY2F0aW9uU2NyaXB0ID0gKG1JbjogbnVtYmVyLCBwdWJsaWNLZXlzOiBSZWFkb25seUFycmF5PEVDUG9pbnQ+KSA9PiB7XG4gIGNvbnN0IG0gPSBNYXRoLmZsb29yKG1Jbik7XG4gIGlmIChtIDwgMSB8fCBtID4gcHVibGljS2V5cy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZE51bWJlck9mS2V5c0Vycm9yKG0sIHB1YmxpY0tleXMubGVuZ3RoKTtcbiAgfVxuXG4gIGlmIChwdWJsaWNLZXlzLmxlbmd0aCA+IDEwMjQpIHtcbiAgICB0aHJvdyBuZXcgVG9vTWFueVB1YmxpY0tleXNFcnJvcihwdWJsaWNLZXlzLmxlbmd0aCk7XG4gIH1cblxuICBjb25zdCBidWlsZGVyID0gbmV3IFNjcmlwdEJ1aWxkZXIoKTtcbiAgYnVpbGRlci5lbWl0UHVzaEludChtKTtcbiAgY29uc3QgcHVibGljS2V5c1NvcnRlZCA9IHB1YmxpY0tleXMubGVuZ3RoID09PSAxID8gcHVibGljS2V5cyA6IHNvcnRLZXlzKHB1YmxpY0tleXMpO1xuICBwdWJsaWNLZXlzU29ydGVkLmZvckVhY2goKGVjUG9pbnQpID0+IHtcbiAgICBidWlsZGVyLmVtaXRQdXNoRUNQb2ludChlY1BvaW50KTtcbiAgfSk7XG4gIGJ1aWxkZXIuZW1pdFB1c2hJbnQocHVibGljS2V5c1NvcnRlZC5sZW5ndGgpO1xuICBidWlsZGVyLmVtaXRPcCgnQ0hFQ0tNVUxUSVNJRycpO1xuXG4gIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7XG59O1xuXG5jb25zdCBjcmVhdGVNdWx0aVNpZ25hdHVyZUludm9jYXRpb25TY3JpcHQgPSAoc2lnbmF0dXJlczogUmVhZG9ubHlBcnJheTxCdWZmZXI+KTogQnVmZmVyID0+IHtcbiAgY29uc3QgYnVpbGRlciA9IG5ldyBTY3JpcHRCdWlsZGVyKCk7XG4gIHNpZ25hdHVyZXMuZm9yRWFjaCgoc2lnbmF0dXJlKSA9PiB7XG4gICAgYnVpbGRlci5lbWl0UHVzaChzaWduYXR1cmUpO1xuICB9KTtcblxuICByZXR1cm4gYnVpbGRlci5idWlsZCgpO1xufTtcblxuY29uc3QgY3JlYXRlTXVsdGlTaWduYXR1cmVXaXRuZXNzID0gPFRXaXRuZXNzIGV4dGVuZHMgV2l0bmVzc01vZGVsPihcbiAgbUluOiBudW1iZXIsXG4gIHB1YmxpY0tleXM6IFJlYWRvbmx5QXJyYXk8RUNQb2ludD4sXG4gIHB1YmxpY0tleVRvU2lnbmF0dXJlOiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEJ1ZmZlciB9LFxuICBXaXRuZXNzOiBDb25zdHJ1Y3RvcjxUV2l0bmVzcz4sXG4pOiBUV2l0bmVzcyA9PiB7XG4gIGNvbnN0IG0gPSBNYXRoLmZsb29yKG1Jbik7XG4gIGNvbnN0IHB1YmxpY0tleXNTb3J0ZWQgPSBwdWJsaWNLZXlzLmxlbmd0aCA9PT0gMSA/IHB1YmxpY0tleXMgOiBzb3J0S2V5cyhwdWJsaWNLZXlzKTtcbiAgY29uc3Qgc2lnbmF0dXJlcyA9IHB1YmxpY0tleXNTb3J0ZWRcbiAgICAubWFwKChwdWJsaWNLZXkpID0+IHB1YmxpY0tleVRvU2lnbmF0dXJlW2NvbW1vbi5lY1BvaW50VG9IZXgocHVibGljS2V5KV0pXG4gICAgLmZpbHRlcih1dGlscy5ub3ROdWxsKTtcbiAgaWYgKHNpZ25hdHVyZXMubGVuZ3RoICE9PSBtKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRTaWduYXR1cmVzRXJyb3IobSwgc2lnbmF0dXJlcy5sZW5ndGgpO1xuICB9XG5cbiAgY29uc3QgdmVyaWZpY2F0aW9uID0gY3JlYXRlTXVsdGlTaWduYXR1cmVWZXJpZmljYXRpb25TY3JpcHQobSwgcHVibGljS2V5c1NvcnRlZCk7XG4gIGNvbnN0IGludm9jYXRpb24gPSBjcmVhdGVNdWx0aVNpZ25hdHVyZUludm9jYXRpb25TY3JpcHQoc2lnbmF0dXJlcyk7XG5cbiAgcmV0dXJuIG5ldyBXaXRuZXNzKHsgdmVyaWZpY2F0aW9uLCBpbnZvY2F0aW9uIH0pO1xufTtcblxuY29uc3QgZ2V0Q29uc2Vuc3VzQWRkcmVzcyA9ICh2YWxpZGF0b3JzOiBSZWFkb25seUFycmF5PEVDUG9pbnQ+KTogVUludDE2MCA9PlxuICB0b1NjcmlwdEhhc2goXG4gICAgY3JlYXRlTXVsdGlTaWduYXR1cmVWZXJpZmljYXRpb25TY3JpcHQoTWF0aC5mbG9vcih2YWxpZGF0b3JzLmxlbmd0aCAtICh2YWxpZGF0b3JzLmxlbmd0aCAtIDEpIC8gMyksIHZhbGlkYXRvcnMpLFxuICApO1xuXG5jb25zdCB3aWZUb1ByaXZhdGVLZXkgPSAod2lmOiBzdHJpbmcsIHByaXZhdGVLZXlWZXJzaW9uOiBudW1iZXIpOiBQcml2YXRlS2V5ID0+IHtcbiAgY29uc3QgcHJpdmF0ZUtleURlY29kZWQgPSBiYXNlNThDaGVja0RlY29kZSh3aWYpO1xuXG4gIGlmIChwcml2YXRlS2V5RGVjb2RlZC5sZW5ndGggIT09IDM0IHx8IHByaXZhdGVLZXlEZWNvZGVkWzBdICE9PSBwcml2YXRlS2V5VmVyc2lvbiB8fCBwcml2YXRlS2V5RGVjb2RlZFszM10gIT09IDB4MDEpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRocm93IG5ldyBJbnZhbGlkRm9ybWF0RXJyb3IoJ1ByaXZhdGUgS2V5IHdhcyBpbnZhbGlkIHdoZW4gZGVjb2RlZCBmcm9tIFdJRi4nKTtcbiAgfVxuXG4gIHJldHVybiBjb21tb24uYnVmZmVyVG9Qcml2YXRlS2V5KHByaXZhdGVLZXlEZWNvZGVkLnNsaWNlKDEsIDMzKSk7XG59O1xuXG5jb25zdCBwcml2YXRlS2V5VG9XSUYgPSAocHJpdmF0ZUtleTogUHJpdmF0ZUtleSwgcHJpdmF0ZUtleVZlcnNpb246IG51bWJlcik6IHN0cmluZyA9PlxuICBXSUYuZW5jb2RlKHByaXZhdGVLZXlWZXJzaW9uLCBjb21tb24ucHJpdmF0ZUtleVRvQnVmZmVyKHByaXZhdGVLZXkpLCB0cnVlKTtcblxuY29uc3QgcHVibGljS2V5VG9TY3JpcHRIYXNoID0gZ2V0VmVyaWZpY2F0aW9uU2NyaXB0SGFzaDtcblxuY29uc3QgcHJpdmF0ZUtleVRvU2NyaXB0SGFzaCA9IChwcml2YXRlS2V5OiBQcml2YXRlS2V5KTogVUludDE2MCA9PlxuICBwdWJsaWNLZXlUb1NjcmlwdEhhc2gocHJpdmF0ZUtleVRvUHVibGljS2V5KHByaXZhdGVLZXkpKTtcblxuY29uc3QgcHJpdmF0ZUtleVRvQWRkcmVzcyA9ICh7XG4gIGFkZHJlc3NWZXJzaW9uLFxuICBwcml2YXRlS2V5LFxufToge1xuICByZWFkb25seSBhZGRyZXNzVmVyc2lvbjogbnVtYmVyO1xuICByZWFkb25seSBwcml2YXRlS2V5OiBQcml2YXRlS2V5O1xufSk6IHN0cmluZyA9PlxuICBzY3JpcHRIYXNoVG9BZGRyZXNzKHtcbiAgICBhZGRyZXNzVmVyc2lvbixcbiAgICBzY3JpcHRIYXNoOiBwcml2YXRlS2V5VG9TY3JpcHRIYXNoKHByaXZhdGVLZXkpLFxuICB9KTtcblxuY29uc3QgTkVQMl9LREZQQVJBTVMgPSB7XG4gIE46IDE2Mzg0LFxuICByOiA4LFxuICBwOiA4LFxuICBka2xlbjogNjQsXG59O1xuXG5jb25zdCBORVAyX1pFUk8gPSAweDAxO1xuY29uc3QgTkVQMl9PTkUgPSAweDQyO1xuY29uc3QgTkVQMl9UV08gPSAweGUwO1xuY29uc3QgTkVQMl9DSVBIRVIgPSAnYWVzLTI1Ni1lY2InO1xuXG5jb25zdCBnZXRORVAyRGVyaXZlZCA9IGFzeW5jICh7XG4gIHBhc3N3b3JkLFxuICBzYWx0LFxufToge1xuICByZWFkb25seSBwYXNzd29yZDogc3RyaW5nO1xuICByZWFkb25seSBzYWx0OiBCdWZmZXI7XG59KTogUHJvbWlzZTxCdWZmZXI+ID0+XG4gIG5ldyBQcm9taXNlPEJ1ZmZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICBzY3J5cHQoXG4gICAgICBCdWZmZXIuZnJvbShwYXNzd29yZC5ub3JtYWxpemUoJ05GS0MnKSwgJ3V0ZjgnKSxcbiAgICAgIHNhbHQsXG4gICAgICBORVAyX0tERlBBUkFNUy5OLFxuICAgICAgTkVQMl9LREZQQVJBTVMucixcbiAgICAgIE5FUDJfS0RGUEFSQU1TLnAsXG4gICAgICBORVAyX0tERlBBUkFNUy5ka2xlbixcbiAgICAgIChlcnJvciwgX3Byb2dyZXNzLCBrZXkpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKGVycm9yICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5KSB7XG4gICAgICAgICAgcmVzb2x2ZShCdWZmZXIuZnJvbShbLi4ua2V5XSkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICksXG4gICk7XG5cbmNvbnN0IGdldE5FUDJTYWx0ID0gKHtcbiAgYWRkcmVzc1ZlcnNpb24sXG4gIHByaXZhdGVLZXksXG59OiB7XG4gIHJlYWRvbmx5IGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IHByaXZhdGVLZXk6IFByaXZhdGVLZXk7XG59KSA9PiB7XG4gIGNvbnN0IGFkZHJlc3MgPSBwcml2YXRlS2V5VG9BZGRyZXNzKHtcbiAgICBhZGRyZXNzVmVyc2lvbixcbiAgICBwcml2YXRlS2V5LFxuICB9KTtcblxuICByZXR1cm4gY29tbW9uLnVJbnQyNTZUb0J1ZmZlcihoYXNoMjU2KEJ1ZmZlci5mcm9tKGFkZHJlc3MsICdsYXRpbjEnKSkpLnNsaWNlKDAsIDQpO1xufTtcblxuY29uc3QgZW5jcnlwdE5FUDIgPSBhc3luYyAoe1xuICBhZGRyZXNzVmVyc2lvbixcbiAgcGFzc3dvcmQsXG4gIHByaXZhdGVLZXksXG59OiB7XG4gIHJlYWRvbmx5IGFkZHJlc3NWZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IHBhc3N3b3JkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaXZhdGVLZXk6IFByaXZhdGVLZXk7XG59KTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3Qgc2FsdCA9IGdldE5FUDJTYWx0KHsgYWRkcmVzc1ZlcnNpb24sIHByaXZhdGVLZXkgfSk7XG5cbiAgY29uc3QgZGVyaXZlZCA9IGF3YWl0IGdldE5FUDJEZXJpdmVkKHsgcGFzc3dvcmQsIHNhbHQgfSk7XG4gIGNvbnN0IGRlcml2ZWQxID0gZGVyaXZlZC5zbGljZSgwLCAzMik7XG4gIGNvbnN0IGRlcml2ZWQyID0gZGVyaXZlZC5zbGljZSgzMiwgNjQpO1xuXG4gIGNvbnN0IGNpcGhlciA9IGNyZWF0ZUNpcGhlcml2KE5FUDJfQ0lQSEVSLCBkZXJpdmVkMiwgQnVmZmVyLmFsbG9jKDAsIDApKTtcblxuICBjaXBoZXIuc2V0QXV0b1BhZGRpbmcoZmFsc2UpO1xuICBjaXBoZXIuZW5kKHhvcihwcml2YXRlS2V5LCBkZXJpdmVkMSkpO1xuICBjb25zdCBjaXBoZXJ0ZXh0ID0gY2lwaGVyLnJlYWQoKSBhcyBCdWZmZXI7XG5cbiAgY29uc3QgcmVzdWx0ID0gQnVmZmVyLmFsbG9jKDcgKyAzMiwgMCk7XG4gIHJlc3VsdC53cml0ZVVJbnQ4KE5FUDJfWkVSTywgMCk7XG4gIHJlc3VsdC53cml0ZVVJbnQ4KE5FUDJfT05FLCAxKTtcbiAgcmVzdWx0LndyaXRlVUludDgoTkVQMl9UV08sIDIpO1xuICBzYWx0LmNvcHkocmVzdWx0LCAzKTtcbiAgY2lwaGVydGV4dC5jb3B5KHJlc3VsdCwgNyk7XG5cbiAgcmV0dXJuIGJhc2U1OENoZWNrRW5jb2RlKHJlc3VsdCk7XG59O1xuXG5jb25zdCBpc05FUDIgPSAoZW5jcnlwdGVkS2V5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZWNvZGVkID0gYmFzZTU4Q2hlY2tEZWNvZGUoZW5jcnlwdGVkS2V5KTtcblxuICAgIHJldHVybiAoXG4gICAgICBkZWNvZGVkLmxlbmd0aCA9PT0gMzkgJiZcbiAgICAgIGRlY29kZWQucmVhZFVJbnQ4KDApID09PSBORVAyX1pFUk8gJiZcbiAgICAgIGRlY29kZWQucmVhZFVJbnQ4KDEpID09PSBORVAyX09ORSAmJlxuICAgICAgZGVjb2RlZC5yZWFkVUludDgoMikgPT09IE5FUDJfVFdPXG4gICAgKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5jb25zdCBkZWNyeXB0TkVQMiA9IGFzeW5jICh7XG4gIGFkZHJlc3NWZXJzaW9uLFxuICBlbmNyeXB0ZWRLZXksXG4gIHBhc3N3b3JkLFxufToge1xuICByZWFkb25seSBhZGRyZXNzVmVyc2lvbjogbnVtYmVyO1xuICByZWFkb25seSBlbmNyeXB0ZWRLZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbn0pOiBQcm9taXNlPFByaXZhdGVLZXk+ID0+IHtcbiAgY29uc3QgZGVjb2RlZCA9IGJhc2U1OENoZWNrRGVjb2RlKGVuY3J5cHRlZEtleSk7XG5cbiAgaWYgKFxuICAgIGRlY29kZWQubGVuZ3RoICE9PSAzOSB8fFxuICAgIGRlY29kZWQucmVhZFVJbnQ4KDApICE9PSBORVAyX1pFUk8gfHxcbiAgICBkZWNvZGVkLnJlYWRVSW50OCgxKSAhPT0gTkVQMl9PTkUgfHxcbiAgICBkZWNvZGVkLnJlYWRVSW50OCgyKSAhPT0gTkVQMl9UV09cbiAgKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aHJvdyBuZXcgSW52YWxpZEZvcm1hdEVycm9yKCdJbnZhbGlkIE5FUDIgZm9ybWF0IHdoZW4gZGVjb2RlZCBmcm9tIGVuY3J5cHRlZEtleS4nKTtcbiAgfVxuXG4gIGNvbnN0IHNhbHQgPSBkZWNvZGVkLnNsaWNlKDMsIDcpO1xuICBjb25zdCBkZXJpdmVkID0gYXdhaXQgZ2V0TkVQMkRlcml2ZWQoeyBwYXNzd29yZCwgc2FsdCB9KTtcbiAgY29uc3QgZGVyaXZlZDEgPSBkZXJpdmVkLnNsaWNlKDAsIDMyKTtcbiAgY29uc3QgZGVyaXZlZDIgPSBkZXJpdmVkLnNsaWNlKDMyLCA2NCk7XG5cbiAgY29uc3QgZGVjaXBoZXIgPSBjcmVhdGVEZWNpcGhlcml2KE5FUDJfQ0lQSEVSLCBkZXJpdmVkMiwgQnVmZmVyLmFsbG9jKDAsIDApKTtcblxuICBkZWNpcGhlci5zZXRBdXRvUGFkZGluZyhmYWxzZSk7XG4gIGRlY2lwaGVyLmVuZChkZWNvZGVkLnNsaWNlKDcsIDcgKyAzMikpO1xuICBjb25zdCBwbGFpblRleHQgPSBkZWNpcGhlci5yZWFkKCkgYXMgQnVmZmVyO1xuXG4gIGNvbnN0IHByaXZhdGVLZXkgPSBjb21tb24uYXNQcml2YXRlS2V5KHhvcihwbGFpblRleHQsIGRlcml2ZWQxKSk7XG5cbiAgY29uc3QgYWRkcmVzc1NhbHQgPSBnZXRORVAyU2FsdCh7IGFkZHJlc3NWZXJzaW9uLCBwcml2YXRlS2V5IH0pO1xuICBpZiAoIXNhbHQuZXF1YWxzKGFkZHJlc3NTYWx0KSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBwYXNzcGhyYXNlLicpO1xuICB9XG5cbiAgcmV0dXJuIGNvbW1vbi5idWZmZXJUb1ByaXZhdGVLZXkocHJpdmF0ZUtleSk7XG59O1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZVxuY29uc3QgaXNNdWx0aVNpZ0NvbnRyYWN0ID0gKHNjcmlwdDogQnVmZmVyKSA9PiB7XG4gIGxldCBtID0gMDtcbiAgbGV0IG4gPSAwO1xuICBsZXQgaSA9IDA7XG4gIGlmIChzY3JpcHQubGVuZ3RoIDwgMzcpIHJldHVybiBmYWxzZTtcbiAgaWYgKHNjcmlwdFtpXSA+IE9wLlBVU0gxNikgcmV0dXJuIGZhbHNlO1xuICBpZiAoc2NyaXB0W2ldIDwgT3AuUFVTSDEgJiYgc2NyaXB0W2ldICE9PSAxICYmIHNjcmlwdFtpXSAhPT0gMikgcmV0dXJuIGZhbHNlO1xuICBzd2l0Y2ggKHNjcmlwdFtpXSkge1xuICAgIGNhc2UgMTpcbiAgICAgIG0gPSBzY3JpcHRbKytpXTtcbiAgICAgICsraTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIG0gPSBzY3JpcHQucmVhZFVJbnQxNkxFKCsraSk7XG4gICAgICBpICs9IDI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbSA9IHNjcmlwdFtpKytdIC0gODA7XG4gICAgICBicmVhaztcbiAgfVxuICBpZiAobSA8IDEgfHwgbSA+IDEwMjQpIHJldHVybiBmYWxzZTtcbiAgd2hpbGUgKHNjcmlwdFtpXSA9PSAzMykge1xuICAgIGkgKz0gMzQ7XG4gICAgaWYgKHNjcmlwdC5sZW5ndGggPD0gaSkgcmV0dXJuIGZhbHNlO1xuICAgICsrbjtcbiAgfVxuICBpZiAobiA8IG0gfHwgbiA+IDEwMjQpIHJldHVybiBmYWxzZTtcbiAgc3dpdGNoIChzY3JpcHRbaV0pIHtcbiAgICBjYXNlIDE6XG4gICAgICBpZiAobiAhPSBzY3JpcHRbKytpXSkgcmV0dXJuIGZhbHNlO1xuICAgICAgKytpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgaWYgKHNjcmlwdC5sZW5ndGggPCBpICsgMyB8fCBuICE9IHNjcmlwdC5yZWFkVUludDE2TEUoKytpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaSArPSAyO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChuICE9IHNjcmlwdFtpKytdIC0gODApIHJldHVybiBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmIChzY3JpcHRbaSsrXSAhPSBPcC5DSEVDS01VTFRJU0lHKSByZXR1cm4gZmFsc2U7XG4gIGlmIChzY3JpcHQubGVuZ3RoICE9IGkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHRydWU7XG59O1xuLy8gdHNsaW50OmVuYWJsZVxuXG5jb25zdCBpc1NpZ25hdHVyZUNvbnRyYWN0ID0gKHNjcmlwdDogQnVmZmVyKSA9PiBzY3JpcHQubGVuZ3RoID09PSAzNSAmJiBzY3JpcHRbMF0gPT09IDMzICYmIHNjcmlwdFszNF0gPT09IE9wLkNIRUNLU0lHO1xuXG5jb25zdCBpc1N0YW5kYXJkQ29udHJhY3QgPSAoc2NyaXB0OiBCdWZmZXIpID0+IGlzU2lnbmF0dXJlQ29udHJhY3Qoc2NyaXB0KSB8fCBpc011bHRpU2lnQ29udHJhY3Qoc2NyaXB0KTtcblxuZXhwb3J0IGNvbnN0IGNyeXB0byA9IHtcbiAgYWRkUHVibGljS2V5LFxuICBzaGExLFxuICBzaGEyNTYsXG4gIGhhc2gxNjAsXG4gIGhhc2gyNTYsXG4gIHNpZ24sXG4gIHZlcmlmeSxcbiAgcHJpdmF0ZUtleVRvUHVibGljS2V5LFxuICB0b1NjcmlwdEhhc2gsXG4gIHRvRUNQb2ludCxcbiAgY3JlYXRlS2V5UGFpcixcbiAgc2NyaXB0SGFzaFRvQWRkcmVzcyxcbiAgYWRkcmVzc1RvU2NyaXB0SGFzaCxcbiAgY3JlYXRlSW52b2NhdGlvblNjcmlwdCxcbiAgY3JlYXRlVmVyaWZpY2F0aW9uU2NyaXB0LFxuICBjcmVhdGVXaXRuZXNzLFxuICBjcmVhdGVXaXRuZXNzRm9yU2lnbmF0dXJlLFxuICBnZXRWZXJpZmljYXRpb25TY3JpcHRIYXNoLFxuICBjcmVhdGVNdWx0aVNpZ25hdHVyZUludm9jYXRpb25TY3JpcHQsXG4gIGNyZWF0ZU11bHRpU2lnbmF0dXJlVmVyaWZpY2F0aW9uU2NyaXB0LFxuICBjcmVhdGVNdWx0aVNpZ25hdHVyZVdpdG5lc3MsXG4gIGdldENvbnNlbnN1c0FkZHJlc3MsXG4gIHByaXZhdGVLZXlUb1dJRixcbiAgd2lmVG9Qcml2YXRlS2V5LFxuICBwdWJsaWNLZXlUb1NjcmlwdEhhc2gsXG4gIHByaXZhdGVLZXlUb1NjcmlwdEhhc2gsXG4gIHByaXZhdGVLZXlUb0FkZHJlc3MsXG4gIGlzTkVQMixcbiAgZW5jcnlwdE5FUDIsXG4gIGRlY3J5cHRORVAyLFxuICBjcmVhdGVQcml2YXRlS2V5LFxuICBpc011bHRpU2lnQ29udHJhY3QsXG4gIGlzU2lnbmF0dXJlQ29udHJhY3QsXG4gIGlzU3RhbmRhcmRDb250cmFjdCxcbn07XG4iXX0=
{
"name": "@neo-one/client-common",
"version": "1.1.0",
"version": "1.1.1",
"author": "Alex DiCarlo <alexdicarlo@gmail.com>",

@@ -32,3 +32,3 @@ "description": "NEO•ONE client common code.",

"@types/wif": "^2.0.1",
"bignumber.js": "^8.0.2",
"bignumber.js": "^8.1.1",
"bn.js": "^4.11.8",

@@ -35,0 +35,0 @@ "bs58": "^4.0.1",

@@ -22,3 +22,3 @@ # NEO•ONE

<!-- prettier-ignore -->
| [<img src="https://avatars0.githubusercontent.com/u/1311014?v=4" width="100px;"/><br /><sub><b>Alex DiCarlo</b></sub>](https://github.com/dicarlo2)<br />[💻](https://github.com/neo-one-suite/neo-one/commits?author=dicarlo2 "Code") [🐛](https://github.com/neo-one-suite/neo-one/issues?q=author%3Adicarlo2 "Bug reports") [📖](https://github.com/neo-one-suite/neo-one/commits?author=dicarlo2 "Documentation") [🔍](#fundingFinding-dicarlo2 "Funding Finding") [👀](#review-dicarlo2 "Reviewed Pull Requests") [📢](#talk-dicarlo2 "Talks") | [<img src="https://avatars0.githubusercontent.com/u/34611820?v=4" width="100px;"/><br /><sub><b>Alex Fragapane</b></sub>](https://github.com/afragapane)<br />[💻](https://github.com/neo-one-suite/neo-one/commits?author=afragapane "Code") | [<img src="https://avatars3.githubusercontent.com/u/39564353?v=4" width="100px;"/><br /><sub><b>davemneo</b></sub>](https://github.com/davemneo)<br />[💻](https://github.com/neo-one-suite/neo-one/commits?author=davemneo "Code") | [<img src="https://avatars1.githubusercontent.com/u/9561608?v=4" width="100px;"/><br /><sub><b>Daniel Byrne</b></sub>](https://github.com/danwbyrne)<br />[💻](https://github.com/neo-one-suite/neo-one/commits?author=danwbyrne "Code") | [<img src="https://avatars1.githubusercontent.com/u/29364457?v=4" width="100px;"/><br /><sub><b>Spencer Corwin</b></sub>](http://spencercorwin.com/developer)<br />[💻](https://github.com/neo-one-suite/neo-one/commits?author=speenzor "Code") |
| [<img src="https://avatars0.githubusercontent.com/u/1311014?v=4" width="100px;"/><br /><sub><b>Alex DiCarlo</b></sub>](https://github.com/dicarlo2)<br />[💻](https://github.com/neo-one-suite/neo-one/commits?author=dicarlo2 "Code") [🐛](https://github.com/neo-one-suite/neo-one/issues?q=author%3Adicarlo2 "Bug reports") [📖](https://github.com/neo-one-suite/neo-one/commits?author=dicarlo2 "Documentation") [🔍](#fundingFinding-dicarlo2 "Funding Finding") [👀](#review-dicarlo2 "Reviewed Pull Requests") [📢](#talk-dicarlo2 "Talks") | [<img src="https://avatars0.githubusercontent.com/u/34611820?v=4" width="100px;"/><br /><sub><b>Alex Fragapane</b></sub>](https://github.com/afragapane)<br />[💻](https://github.com/neo-one-suite/neo-one/commits?author=afragapane "Code") | [<img src="https://avatars3.githubusercontent.com/u/39564353?v=4" width="100px;"/><br /><sub><b>davemneo</b></sub>](https://github.com/davemneo)<br />[💻](https://github.com/neo-one-suite/neo-one/commits?author=davemneo "Code") | [<img src="https://avatars1.githubusercontent.com/u/9561608?v=4" width="100px;"/><br /><sub><b>Daniel Byrne</b></sub>](https://github.com/danwbyrne)<br />[💻](https://github.com/neo-one-suite/neo-one/commits?author=danwbyrne "Code") | [<img src="https://avatars1.githubusercontent.com/u/29364457?v=4" width="100px;"/><br /><sub><b>Spencer Corwin</b></sub>](http://spencercorwin.com)<br />[💻](https://github.com/neo-one-suite/neo-one/commits?author=spencercorwin "Code") |
| :---: | :---: | :---: | :---: | :---: |

@@ -25,0 +25,0 @@ <!-- ALL-CONTRIBUTORS-LIST:END -->

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc