@bitgo-beta/sdk-coin-polyx 1.0.1-beta.1113 → 1.0.1-beta.1114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -167,6 +167,17 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
167
167
|
}
|
|
168
168
|
else if (methodName === iface_1.MethodNames.AddAndAffirmWithMediators) {
|
|
169
169
|
const args = decodedTxn.method.args;
|
|
170
|
+
// v8 wraps leg sender/receiver in an AssetHolder enum (`{ portfolio: { did, kind } }`)
|
|
171
|
+
// instead of the bare v7 `{ did, kind }`. The call index is unchanged between v7/v8, so
|
|
172
|
+
// decoding a v8-encoded payload with v7 metadata does not throw — it just silently drops
|
|
173
|
+
// `sender.did`. Detect that here and retry with v8 material instead of proceeding with a
|
|
174
|
+
// builder that will fail schema validation on the missing field.
|
|
175
|
+
if (!args.legs?.[0]?.fungible?.sender?.did) {
|
|
176
|
+
const v8Builder = this.tryGetV8Builder(rawTxn);
|
|
177
|
+
if (v8Builder) {
|
|
178
|
+
return v8Builder;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
170
181
|
if (utils_1.default.isNewMemoEncoding(args.instructionMemo)) {
|
|
171
182
|
return this.getHexTokenTransferBuilder();
|
|
172
183
|
}
|
|
@@ -304,4 +315,4 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
304
315
|
}
|
|
305
316
|
}
|
|
306
317
|
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBMEY7QUFFMUYsc0VBQXVEO0FBQ3ZELHVEQUFvRDtBQUNwRCw2REFBMEQ7QUFDMUQsMkVBQXdFO0FBQ3hFLHlEQUFzRDtBQUN0RCwrREFBNEQ7QUFDNUQsbUVBQWdFO0FBQ2hFLG1EQUFnRDtBQUNoRCx1RUFBb0U7QUFDcEUsb0RBQTRCO0FBQzVCLHlCQUFzRTtBQUN0RSxtQ0FNaUI7QUFHakIscUVBQWtFO0FBQ2xFLGlFQUE4RDtBQUM5RCx1RUFBb0U7QUFDcEUseUVBQXNFO0FBQ3RFLHVEQUFvRDtBQUNwRCwyREFBd0Q7QUFDeEQsaUVBQThEO0FBQzlELCtFQUE0RTtBQUM1RSxpRUFBOEQ7QUFDOUQscUVBQWtFO0FBQ2xFLDJFQUF3RTtBQUN4RSx5RUFBc0U7QUFDdEUsbUVBQWdFO0FBQ2hFLDZEQUEwRDtBQUMxRCx1REFBb0Q7QUFDcEQsdUVBQW9FO0FBQ3BFLDJFQUF3RTtBQUN4RSwyREFBd0Q7QUFJeEQsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFHMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENB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QUksZUFBZSxLQUFLLE1BQU0sSUFBSSxnQkFBZ0IsS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDbEUsT0FBTyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztnQkFDekMsQ0FBQztnQkFDRCw2Q0FBNkM7Z0JBQzdDLElBQUksZUFBZSxLQUFLLE9BQU8sSUFBSSxnQkFBZ0IsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDakUsT0FBTyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztnQkFDM0MsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3pDLENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3RDLENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25DLENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdDLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDN0MsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQTlSRCw4REE4UkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IEhleFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vaGV4VHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIgfSBmcm9tICcuL3JlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXInO1xuaW1wb3J0IHsgQm9uZEV4dHJhQnVpbGRlciB9IGZyb20gJy4vYm9uZEV4dHJhQnVpbGRlcic7XG5pbXBvcnQgeyBCYXRjaFN0YWtpbmdCdWlsZGVyIH0gZnJvbSAnLi9iYXRjaFN0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7IEJhdGNoVW5zdGFraW5nQnVpbGRlciB9IGZyb20gJy4vYmF0Y2hVbnN0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7IFVuYm9uZEJ1aWxkZXIgfSBmcm9tICcuL3VuYm9uZEJ1aWxkZXInO1xuaW1wb3J0IHsgV2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIgfSBmcm9tICcuL3dpdGhkcmF3VW5ib25kZWRCdWlsZGVyJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEludGVyZmFjZSwgU2luZ2xldG9uUmVnaXN0cnksIFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vJztcbmltcG9ydCB7XG4gIFR4TWV0aG9kLFxuICBCYXRjaENhbGxPYmplY3QsXG4gIE1ldGhvZE5hbWVzLFxuICBBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncyxcbiAgVjhBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncyxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb24gfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1zdWJzdHJhdGUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgUG9seXhUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgUHJlQXBwcm92ZUFzc2V0QnVpbGRlciB9IGZyb20gJy4vcHJlQXBwcm92ZUFzc2V0QnVpbGRlcic7XG5pbXBvcnQgeyBUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgSGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL2hleFRva2VuVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFJlamVjdEluc3RydWN0aW9uQnVpbGRlciB9IGZyb20gJy4vcmVqZWN0SW5zdHJ1Y3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IE5vbWluYXRlQnVpbGRlciB9IGZyb20gJy4vbm9taW5hdGVCdWlsZGVyJztcbmltcG9ydCB7IFY4VHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi92OFRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBWOEhleFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdjhIZXhUcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVjhSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyIH0gZnJvbSAnLi92OFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXInO1xuaW1wb3J0IHsgVjhSZWdpc3RlckRpZEJ1aWxkZXIgfSBmcm9tICcuL3Y4UmVnaXN0ZXJEaWRCdWlsZGVyJztcbmltcG9ydCB7IFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3Y4VG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBWOFByZUFwcHJvdmVBc3NldEJ1aWxkZXIgfSBmcm9tICcuL3Y4UHJlQXBwcm92ZUFzc2V0QnVpbGRlcic7XG5pbXBvcnQgeyBWOEJhdGNoU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3Y4QmF0Y2hTdGFraW5nQnVpbGRlcic7XG5pbXBvcnQgeyBWOEJvbmRFeHRyYUJ1aWxkZXIgfSBmcm9tICcuL3Y4Qm9uZEV4dHJhQnVpbGRlcic7XG5pbXBvcnQgeyBWOFVuYm9uZEJ1aWxkZXIgfSBmcm9tICcuL3Y4VW5ib25kQnVpbGRlcic7XG5pbXBvcnQgeyBWOEJhdGNoVW5zdGFraW5nQnVpbGRlciB9IGZyb20gJy4vdjhCYXRjaFVuc3Rha2luZ0J1aWxkZXInO1xuaW1wb3J0IHsgVjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlciB9IGZyb20gJy4vdjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcic7XG5pbXBvcnQgeyBWOE5vbWluYXRlQnVpbGRlciB9IGZyb20gJy4vdjhOb21pbmF0ZUJ1aWxkZXInO1xuXG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRUcmFuc2FjdGlvbiA9IEJhc2VUcmFuc2FjdGlvbiB8IFBvbHl4VHJhbnNhY3Rpb247XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgX21hdGVyaWFsOiBJbnRlcmZhY2UuTWF0ZXJpYWw7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX21hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgfVxuXG4gIGdldFRyYW5zZmVyQnVpbGRlcigpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldEhleFRyYW5zZmVyQnVpbGRlcigpOiBIZXhUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgSGV4VHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIoKTogUmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFByZUFwcHJvdmVBc3NldEJ1aWxkZXIoKTogUHJlQXBwcm92ZUFzc2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBQcmVBcHByb3ZlQXNzZXRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFRva2VuVHJhbnNmZXJCdWlsZGVyKCk6IFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRva2VuVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKCk6IEhleFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFJlamVjdEluc3RydWN0aW9uQnVpbGRlcigpOiBSZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgUmVqZWN0SW5zdHJ1Y3Rpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldEJvbmRFeHRyYUJ1aWxkZXIoKTogQm9uZEV4dHJhQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBCb25kRXh0cmFCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldEJhdGNoQnVpbGRlcigpOiBCYXRjaFN0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEJhdGNoU3Rha2luZ0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk6IEJhdGNoVW5zdGFraW5nQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBCYXRjaFVuc3Rha2luZ0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0VW5ib25kQnVpbGRlcigpOiBVbmJvbmRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFVuYm9uZEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIoKTogV2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgV2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0Tm9taW5hdGVCdWlsZGVyKCk6IE5vbWluYXRlQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBOb21pbmF0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0VjhUcmFuc2ZlckJ1aWxkZXIoKTogVjhUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOEhleFRyYW5zZmVyQnVpbGRlcigpOiBWOEhleFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOEhleFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcigpOiBWOFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhSZWdpc3RlckRpZEJ1aWxkZXIoKTogVjhSZWdpc3RlckRpZEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhSZWdpc3RlckRpZEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOFRva2VuVHJhbnNmZXJCdWlsZGVyKCk6IFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhUb2tlblRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTogVjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyKCk6IFY4UHJlQXBwcm92ZUFzc2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOFByZUFwcHJvdmVBc3NldEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKTogVjhCYXRjaFN0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4QmF0Y2hTdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4Qm9uZEV4dHJhQnVpbGRlcigpOiBWOEJvbmRFeHRyYUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhCb25kRXh0cmFCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhVbmJvbmRCdWlsZGVyKCk6IFY4VW5ib25kQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOFVuYm9uZEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOEJhdGNoVW5zdGFraW5nQnVpbGRlcigpOiBWOEJhdGNoVW5zdGFraW5nQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOEJhdGNoVW5zdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIoKTogVjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhOb21pbmF0ZUJ1aWxkZXIoKTogVjhOb21pbmF0ZUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhOb21pbmF0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoYHdhbGxldEluaXRpYWxpemF0aW9uIGZvciAke3RoaXMuX2NvaW5Db25maWcubmFtZX0gbm90IGltcGxlbWVudGVkYCk7XG4gIH1cblxuICBmcm9tKHJhd1R4bjogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyPFR4TWV0aG9kLCBTdXBwb3J0ZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIocmF3VHhuKTtcbiAgICBidWlsZGVyLmZyb20ocmF3VHhuKTtcbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIG1hdGVyaWFsKG1hdGVyaWFsOiBJbnRlcmZhY2UuTWF0ZXJpYWwpOiB0aGlzIHtcbiAgICB0aGlzLl9tYXRlcmlhbCA9IG1hdGVyaWFsO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKHJhd1R4bjogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyPFR4TWV0aG9kLCBTdXBwb3J0ZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHJlZ2lzdHJ5ID0gU2luZ2xldG9uUmVnaXN0cnkuZ2V0SW5zdGFuY2UodGhpcy5fbWF0ZXJpYWwpO1xuICAgIGxldCBkZWNvZGVkVHhuO1xuICAgIHRyeSB7XG4gICAgICBkZWNvZGVkVHhuID0gZGVjb2RlKHJhd1R4biwge1xuICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHJlZ2lzdHJ5OiByZWdpc3RyeSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gdjgtZW5jb2RlZCB0cmFuc2FjdGlvbnMgdXNlIGRpZmZlcmVudCBjaGFpbiBtZXRhZGF0YSBhbmQgc2lnbmVkIGV4dGVuc2lvbnMsIHNvIHRoZXlcbiAgICAgIC8vIGNhbm5vdCBiZSBkZWNvZGVkIHdpdGggdjcgbWF0ZXJpYWwuIFJldHJ5IGFnYWluc3QgdjggbWF0ZXJpYWwgYW5kIHJvdXRlIHRvIHRoZSBtYXRjaGluZ1xuICAgICAgLy8gdjggc3Rha2luZyBidWlsZGVyIChlLmcuIGJhdGNoQWxsKFtib25kLCBub21pbmF0ZV0pIHdpdGggdGhlIDItYXJnIHY4IGJvbmQg4oaSIG5vXG4gICAgICAvLyBjb250cm9sbGVyKS4gRmFsbHMgYmFjayB0byByZS10aHJvd2luZyB0aGUgb3JpZ2luYWwgdjcgZGVjb2RlIGVycm9yIGlmIHRoZSB0cmFuc2FjdGlvbiBpc1xuICAgICAgLy8gbm90IGEgcmVjb2duaXplZCB2OCBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAgY29uc3QgdjhCdWlsZGVyID0gdGhpcy50cnlHZXRWOEJ1aWxkZXIocmF3VHhuKTtcbiAgICAgIGlmICh2OEJ1aWxkZXIpIHtcbiAgICAgICAgcmV0dXJuIHY4QnVpbGRlcjtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRob2ROYW1lID0gZGVjb2RlZFR4bi5tZXRob2Q/Lm5hbWU7XG4gICAgaWYgKG1ldGhvZE5hbWUgPT09IEludGVyZmFjZS5NZXRob2ROYW1lcy5UcmFuc2ZlcldpdGhNZW1vKSB7XG4gICAgICBjb25zdCBhcmdzID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyBJbnRlcmZhY2UuVHJhbnNmZXJXaXRoTWVtb0FyZ3M7XG4gICAgICBpZiAodXRpbHMuaXNOZXdNZW1vRW5jb2RpbmcoYXJncy5tZW1vKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIZXhUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gTWV0aG9kTmFtZXMuUmVnaXN0ZXJEaWRXaXRoQ0REKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5QcmVBcHByb3ZlQXNzZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFByZUFwcHJvdmVBc3NldEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09IE1ldGhvZE5hbWVzLkFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnMpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNBcmdzO1xuICAgICAgaWYgKHV0aWxzLmlzTmV3TWVtb0VuY29kaW5nKGFyZ3MuaW5zdHJ1Y3Rpb25NZW1vKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIZXhUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09IE1ldGhvZE5hbWVzLlJlamVjdEluc3RydWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRSZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdib25kRXh0cmEnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRCb25kRXh0cmFCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnYmF0Y2hBbGwnKSB7XG4gICAgICBjb25zdCBhcmdzID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyB7IGNhbGxzPzogQmF0Y2hDYWxsT2JqZWN0W10gfTtcblxuICAgICAgaWYgKGFyZ3MuY2FsbHMgJiYgYXJncy5jYWxscy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgLy8gRGVjb2RlIG1ldGhvZCBuYW1lcyBmcm9tIHRoZSBjYWxscyB1c2luZyB1dGlscy5kZWNvZGVNZXRob2ROYW1lXG4gICAgICAgIGNvbnN0IGZpcnN0Q2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoYXJncy5jYWxsc1swXSwgcmVnaXN0cnkpO1xuICAgICAgICBjb25zdCBzZWNvbmRDYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShhcmdzLmNhbGxzWzFdLCByZWdpc3RyeSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIGJhdGNoIHN0YWtpbmcgcGF0dGVybjogYm9uZCArIG5vbWluYXRlXG4gICAgICAgIGlmIChmaXJzdENhbGxNZXRob2QgPT09ICdib25kJyAmJiBzZWNvbmRDYWxsTWV0aG9kID09PSAnbm9taW5hdGUnKSB7XG4gICAgICAgICAgLy8gdjggZHJvcHBlZCB0aGUgY29udHJvbGxlciBsZWcgb2YgYHN0YWtpbmcuYm9uZGAgKGJvbmQoY29udHJvbGxlciwgdmFsdWUsIHBheWVlKSDihpJcbiAgICAgICAgICAvLyBib25kKHZhbHVlLCBwYXllZSkpLiBXaGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMgZGVjb2RlZCBhZ2FpbnN0IHY4IG1hdGVyaWFsIHRoZSBib25kIGNhbGxcbiAgICAgICAgICAvLyBjYXJyaWVzIG5vIGBjb250cm9sbGVyYCwgc28gcm91dGUgaXQgdG8gdGhlIHY4IGJhdGNoIHN0YWtpbmcgYnVpbGRlciDigJQgdGhlIHY3XG4gICAgICAgICAgLy8gQmF0Y2hTdGFraW5nQnVpbGRlciB3b3VsZCBvdGhlcndpc2UgY3Jhc2ggcmVhZGluZyBgYXJncy5jb250cm9sbGVyLmlkYC4gVGhpcyBydW5zIG9uIHRoZVxuICAgICAgICAgIC8vIGRlY29kZS1zdWNjZXNzIHBhdGggYmVjYXVzZSwgdW5saWtlIHY4IHRyYW5zZmVycywgdjggc3Rha2luZyBiYXRjaEFsbCBjYW4gZGVjb2RlIHdpdGhvdXRcbiAgICAgICAgICAvLyB0aHJvd2luZywgc28gdHJ5R2V0VjhCdWlsZGVyIG5ldmVyIGZpcmVzLiBTZWUgU0ktOTgxLlxuICAgICAgICAgIGNvbnN0IGJvbmRBcmdzID0gYXJncy5jYWxsc1swXS5hcmdzIGFzIHsgY29udHJvbGxlcj86IHVua25vd24gfTtcbiAgICAgICAgICBpZiAoYm9uZEFyZ3MuY29udHJvbGxlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBGb3J3YXJkIHRoZSBmYWN0b3J5J3MgbWF0ZXJpYWwgKHNldCBieSB0aGUgY2FsbGVyLCBlLmcuIHdhbGxldC1wbGF0Zm9ybSdzXG4gICAgICAgICAgICAvLyBnZXRTaWduZWRUeCB2aWEgYC5tYXRlcmlhbChsaXZlTWF0ZXJpYWwpLmZyb20oLi4uKWApLiBVbmxpa2UgdGhlIHY3IGdldHRlcnMsXG4gICAgICAgICAgICAvLyBnZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKSBkb2VzIE5PVCBmb3J3YXJkIHRoaXMuX21hdGVyaWFsIGFuZCB3b3VsZCBvdGhlcndpc2VcbiAgICAgICAgICAgIC8vIGtlZXAgdGhlIGJ1aWxkZXIncyBzdGF0aWMgZ2V0VjhNYXRlcmlhbCgpLiBPbiB0aGUgZGVjb2RlLXN1Y2Nlc3MgcGF0aCB0aGlzLl9tYXRlcmlhbFxuICAgICAgICAgICAgLy8gaXMgdGhlIG1hdGVyaWFsIHRoYXQganVzdCBkZWNvZGVkIHRoZSB0eCwgc28gaXQgaXMgdGhlIGNvcnJlY3Qgb25lIHRvIHJlYnVpbGQgd2l0aCDigJRcbiAgICAgICAgICAgIC8vIHdpdGhvdXQgdGhpcywgYSByZWJ1aWxkIHVzZXMgc3RhbGUgc3RhdGljIHNwZWNWZXJzaW9uIGFuZCB0aGUgc2lnbmFibGUgbm8gbG9uZ2VyXG4gICAgICAgICAgICAvLyBtYXRjaGVzIHRoZSBIU00tc2lnbmVkIGJ5dGVzIChJbnZhbGlkU2lnbmF0dXJlIG9uIGNvbWJpbmUpLiBTZWUgU0ktMTAzNC5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgZm9yIGJhdGNoIHVuc3Rha2luZyBwYXR0ZXJuOiBjaGlsbCArIHVuYm9uZFxuICAgICAgICBpZiAoZmlyc3RDYWxsTWV0aG9kID09PSAnY2hpbGwnICYmIHNlY29uZENhbGxNZXRob2QgPT09ICd1bmJvbmQnKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgYmFjayB0byBnZW5lcmFsIGJhdGNoIGJ1aWxkZXIgZm9yIG90aGVyIGJhdGNoQWxsIGNhc2VzXG4gICAgICByZXR1cm4gdGhpcy5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdiYXRjaCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEJhdGNoQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ2JvbmQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdub21pbmF0ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ3VuYm9uZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVuYm9uZEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICd3aXRoZHJhd1VuYm9uZGVkJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIoKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyYW5zYWN0aW9uIGNhbm5vdCBiZSBwYXJzZWQgb3IgaGFzIGFuIHVuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIGRlY29kZSBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdjggY2hhaW4gbWV0YWRhdGEgYW5kIHJldHVybiB0aGUgbWF0Y2hpbmcgdjggc3Rha2luZ1xuICAgKiBidWlsZGVyLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIHRoZSB0cmFuc2FjdGlvbiBjYW5ub3QgYmUgZGVjb2RlZCB3aXRoIHY4IG1hdGVyaWFsIG9yIGlzIG5vdCBhXG4gICAqIHJlY29nbml6ZWQgdjggc3Rha2luZyB0cmFuc2FjdGlvbiwgc28gdGhlIGNhbGxlciBjYW4gc3VyZmFjZSB0aGUgb3JpZ2luYWwgdjcgZGVjb2RlIGVycm9yLlxuICAgKi9cbiAgcHJpdmF0ZSB0cnlHZXRWOEJ1aWxkZXIocmF3VHhuOiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXI8VHhNZXRob2QsIFN1cHBvcnRlZFRyYW5zYWN0aW9uPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdjhNYXRlcmlhbCA9IHV0aWxzLmdldFY4TWF0ZXJpYWwodGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHJlZ2lzdHJ5ID0gU2luZ2xldG9uUmVnaXN0cnkuZ2V0SW5zdGFuY2UodjhNYXRlcmlhbCk7XG4gICAgbGV0IGRlY29kZWRUeG47XG4gICAgdHJ5IHtcbiAgICAgIGRlY29kZWRUeG4gPSBkZWNvZGUocmF3VHhuLCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiB2OE1hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBkZWNvZGVkVHhuLm1ldGhvZD8ubmFtZTtcbiAgICBpZiAobWV0aG9kTmFtZSA9PT0gSW50ZXJmYWNlLk1ldGhvZE5hbWVzLlRyYW5zZmVyV2l0aE1lbW8pIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIEludGVyZmFjZS5UcmFuc2ZlcldpdGhNZW1vQXJncztcbiAgICAgIGlmICh1dGlscy5pc05ld01lbW9FbmNvZGluZyhhcmdzLm1lbW8pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFY4SGV4VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gTWV0aG9kTmFtZXMuQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9ycykge1xuICAgICAgY29uc3QgYXJncyA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3MgfCBWOEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNBcmdzO1xuICAgICAgaWYgKHV0aWxzLmlzTmV3TWVtb0VuY29kaW5nKGFyZ3MuaW5zdHJ1Y3Rpb25NZW1vKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOFRva2VuVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5SZWdpc3RlckRpZFdpdGhDREQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gTWV0aG9kTmFtZXMuUmVnaXN0ZXJEaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4UmVnaXN0ZXJEaWRCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5QcmVBcHByb3ZlQXNzZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4UHJlQXBwcm92ZUFzc2V0QnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ2JhdGNoQWxsJykge1xuICAgICAgY29uc3QgYXJncyA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgeyBjYWxscz86IEJhdGNoQ2FsbE9iamVjdFtdIH07XG5cbiAgICAgIGlmIChhcmdzLmNhbGxzICYmIGFyZ3MuY2FsbHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0Q2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoYXJncy5jYWxsc1swXSwgcmVnaXN0cnkpO1xuICAgICAgICBjb25zdCBzZWNvbmRDYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShhcmdzLmNhbGxzWzFdLCByZWdpc3RyeSk7XG5cbiAgICAgICAgLy8gdjggYmF0Y2ggc3Rha2luZyBwYXR0ZXJuOiBib25kICgyLWFyZywgbm8gY29udHJvbGxlcikgKyBub21pbmF0ZVxuICAgICAgICBpZiAoZmlyc3RDYWxsTWV0aG9kID09PSAnYm9uZCcgJiYgc2Vjb25kQ2FsbE1ldGhvZCA9PT0gJ25vbWluYXRlJykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHY4IGJhdGNoIHVuc3Rha2luZyBwYXR0ZXJuOiBjaGlsbCArIHVuYm9uZFxuICAgICAgICBpZiAoZmlyc3RDYWxsTWV0aG9kID09PSAnY2hpbGwnICYmIHNlY29uZENhbGxNZXRob2QgPT09ICd1bmJvbmQnKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhCYXRjaFVuc3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhCYXRjaFN0YWtpbmdCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnYm9uZEV4dHJhJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhCb25kRXh0cmFCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnbm9taW5hdGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOE5vbWluYXRlQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ3VuYm9uZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4VW5ib25kQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ3dpdGhkcmF3VW5ib25kZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBMEY7QUFFMUYsc0VBQXVEO0FBQ3ZELHVEQUFvRDtBQUNwRCw2REFBMEQ7QUFDMUQsMkVBQXdFO0FBQ3hFLHlEQUFzRDtBQUN0RCwrREFBNEQ7QUFDNUQsbUVBQWdFO0FBQ2hFLG1EQUFnRDtBQUNoRCx1RUFBb0U7QUFDcEUsb0RBQTRCO0FBQzVCLHlCQUFzRTtBQUN0RSxtQ0FNaUI7QUFHakIscUVBQWtFO0FBQ2xFLGlFQUE4RDtBQUM5RCx1RUFBb0U7QUFDcEUseUVBQXNFO0FBQ3RFLHVEQUFvRDtBQUNwRCwyREFBd0Q7QUFDeEQsaUVBQThEO0FBQzlELCtFQUE0RTtBQUM1RSxpRUFBOEQ7QUFDOUQscUVBQWtFO0FBQ2xFLDJFQUF3RTtBQUN4RSx5RUFBc0U7QUFDdEUsbUVBQWdFO0FBQ2hFLDZEQUEwRDtBQUMxRCx1REFBb0Q7QUFDcEQsdUVBQW9FO0FBQ3BFLDJFQUF3RTtBQUN4RSwyREFBd0Q7QUFJeEQsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFHMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENB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QztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQXpTRCw4REF5U0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IEhleFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vaGV4VHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIgfSBmcm9tICcuL3JlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXInO1xuaW1wb3J0IHsgQm9uZEV4dHJhQnVpbGRlciB9IGZyb20gJy4vYm9uZEV4dHJhQnVpbGRlcic7XG5pbXBvcnQgeyBCYXRjaFN0YWtpbmdCdWlsZGVyIH0gZnJvbSAnLi9iYXRjaFN0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7IEJhdGNoVW5zdGFraW5nQnVpbGRlciB9IGZyb20gJy4vYmF0Y2hVbnN0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7IFVuYm9uZEJ1aWxkZXIgfSBmcm9tICcuL3VuYm9uZEJ1aWxkZXInO1xuaW1wb3J0IHsgV2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIgfSBmcm9tICcuL3dpdGhkcmF3VW5ib25kZWRCdWlsZGVyJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEludGVyZmFjZSwgU2luZ2xldG9uUmVnaXN0cnksIFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vJztcbmltcG9ydCB7XG4gIFR4TWV0aG9kLFxuICBCYXRjaENhbGxPYmplY3QsXG4gIE1ldGhvZE5hbWVzLFxuICBBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncyxcbiAgVjhBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncyxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb24gfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1zdWJzdHJhdGUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgUG9seXhUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgUHJlQXBwcm92ZUFzc2V0QnVpbGRlciB9IGZyb20gJy4vcHJlQXBwcm92ZUFzc2V0QnVpbGRlcic7XG5pbXBvcnQgeyBUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgSGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL2hleFRva2VuVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFJlamVjdEluc3RydWN0aW9uQnVpbGRlciB9IGZyb20gJy4vcmVqZWN0SW5zdHJ1Y3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IE5vbWluYXRlQnVpbGRlciB9IGZyb20gJy4vbm9taW5hdGVCdWlsZGVyJztcbmltcG9ydCB7IFY4VHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi92OFRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBWOEhleFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdjhIZXhUcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVjhSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyIH0gZnJvbSAnLi92OFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXInO1xuaW1wb3J0IHsgVjhSZWdpc3RlckRpZEJ1aWxkZXIgfSBmcm9tICcuL3Y4UmVnaXN0ZXJEaWRCdWlsZGVyJztcbmltcG9ydCB7IFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3Y4VG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBWOFByZUFwcHJvdmVBc3NldEJ1aWxkZXIgfSBmcm9tICcuL3Y4UHJlQXBwcm92ZUFzc2V0QnVpbGRlcic7XG5pbXBvcnQgeyBWOEJhdGNoU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3Y4QmF0Y2hTdGFraW5nQnVpbGRlcic7XG5pbXBvcnQgeyBWOEJvbmRFeHRyYUJ1aWxkZXIgfSBmcm9tICcuL3Y4Qm9uZEV4dHJhQnVpbGRlcic7XG5pbXBvcnQgeyBWOFVuYm9uZEJ1aWxkZXIgfSBmcm9tICcuL3Y4VW5ib25kQnVpbGRlcic7XG5pbXBvcnQgeyBWOEJhdGNoVW5zdGFraW5nQnVpbGRlciB9IGZyb20gJy4vdjhCYXRjaFVuc3Rha2luZ0J1aWxkZXInO1xuaW1wb3J0IHsgVjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlciB9IGZyb20gJy4vdjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcic7XG5pbXBvcnQgeyBWOE5vbWluYXRlQnVpbGRlciB9IGZyb20gJy4vdjhOb21pbmF0ZUJ1aWxkZXInO1xuXG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRUcmFuc2FjdGlvbiA9IEJhc2VUcmFuc2FjdGlvbiB8IFBvbHl4VHJhbnNhY3Rpb247XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgX21hdGVyaWFsOiBJbnRlcmZhY2UuTWF0ZXJpYWw7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX21hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgfVxuXG4gIGdldFRyYW5zZmVyQnVpbGRlcigpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldEhleFRyYW5zZmVyQnVpbGRlcigpOiBIZXhUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgSGV4VHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIoKTogUmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFByZUFwcHJvdmVBc3NldEJ1aWxkZXIoKTogUHJlQXBwcm92ZUFzc2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBQcmVBcHByb3ZlQXNzZXRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFRva2VuVHJhbnNmZXJCdWlsZGVyKCk6IFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRva2VuVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKCk6IEhleFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldFJlamVjdEluc3RydWN0aW9uQnVpbGRlcigpOiBSZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgUmVqZWN0SW5zdHJ1Y3Rpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldEJvbmRFeHRyYUJ1aWxkZXIoKTogQm9uZEV4dHJhQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBCb25kRXh0cmFCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgfVxuXG4gIGdldEJhdGNoQnVpbGRlcigpOiBCYXRjaFN0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEJhdGNoU3Rha2luZ0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk6IEJhdGNoVW5zdGFraW5nQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBCYXRjaFVuc3Rha2luZ0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0VW5ib25kQnVpbGRlcigpOiBVbmJvbmRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFVuYm9uZEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIoKTogV2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgV2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0Tm9taW5hdGVCdWlsZGVyKCk6IE5vbWluYXRlQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBOb21pbmF0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpO1xuICB9XG5cbiAgZ2V0VjhUcmFuc2ZlckJ1aWxkZXIoKTogVjhUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOEhleFRyYW5zZmVyQnVpbGRlcigpOiBWOEhleFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOEhleFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcigpOiBWOFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhSZWdpc3RlckRpZEJ1aWxkZXIoKTogVjhSZWdpc3RlckRpZEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhSZWdpc3RlckRpZEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOFRva2VuVHJhbnNmZXJCdWlsZGVyKCk6IFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhUb2tlblRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTogVjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyKCk6IFY4UHJlQXBwcm92ZUFzc2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOFByZUFwcHJvdmVBc3NldEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKTogVjhCYXRjaFN0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFY4QmF0Y2hTdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4Qm9uZEV4dHJhQnVpbGRlcigpOiBWOEJvbmRFeHRyYUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhCb25kRXh0cmFCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhVbmJvbmRCdWlsZGVyKCk6IFY4VW5ib25kQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOFVuYm9uZEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRWOEJhdGNoVW5zdGFraW5nQnVpbGRlcigpOiBWOEJhdGNoVW5zdGFraW5nQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOEJhdGNoVW5zdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFY4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIoKTogVjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBWOFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VjhOb21pbmF0ZUJ1aWxkZXIoKTogVjhOb21pbmF0ZUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVjhOb21pbmF0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoYHdhbGxldEluaXRpYWxpemF0aW9uIGZvciAke3RoaXMuX2NvaW5Db25maWcubmFtZX0gbm90IGltcGxlbWVudGVkYCk7XG4gIH1cblxuICBmcm9tKHJhd1R4bjogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyPFR4TWV0aG9kLCBTdXBwb3J0ZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIocmF3VHhuKTtcbiAgICBidWlsZGVyLmZyb20ocmF3VHhuKTtcbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIG1hdGVyaWFsKG1hdGVyaWFsOiBJbnRlcmZhY2UuTWF0ZXJpYWwpOiB0aGlzIHtcbiAgICB0aGlzLl9tYXRlcmlhbCA9IG1hdGVyaWFsO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKHJhd1R4bjogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyPFR4TWV0aG9kLCBTdXBwb3J0ZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHJlZ2lzdHJ5ID0gU2luZ2xldG9uUmVnaXN0cnkuZ2V0SW5zdGFuY2UodGhpcy5fbWF0ZXJpYWwpO1xuICAgIGxldCBkZWNvZGVkVHhuO1xuICAgIHRyeSB7XG4gICAgICBkZWNvZGVkVHhuID0gZGVjb2RlKHJhd1R4biwge1xuICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHJlZ2lzdHJ5OiByZWdpc3RyeSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gdjgtZW5jb2RlZCB0cmFuc2FjdGlvbnMgdXNlIGRpZmZlcmVudCBjaGFpbiBtZXRhZGF0YSBhbmQgc2lnbmVkIGV4dGVuc2lvbnMsIHNvIHRoZXlcbiAgICAgIC8vIGNhbm5vdCBiZSBkZWNvZGVkIHdpdGggdjcgbWF0ZXJpYWwuIFJldHJ5IGFnYWluc3QgdjggbWF0ZXJpYWwgYW5kIHJvdXRlIHRvIHRoZSBtYXRjaGluZ1xuICAgICAgLy8gdjggc3Rha2luZyBidWlsZGVyIChlLmcuIGJhdGNoQWxsKFtib25kLCBub21pbmF0ZV0pIHdpdGggdGhlIDItYXJnIHY4IGJvbmQg4oaSIG5vXG4gICAgICAvLyBjb250cm9sbGVyKS4gRmFsbHMgYmFjayB0byByZS10aHJvd2luZyB0aGUgb3JpZ2luYWwgdjcgZGVjb2RlIGVycm9yIGlmIHRoZSB0cmFuc2FjdGlvbiBpc1xuICAgICAgLy8gbm90IGEgcmVjb2duaXplZCB2OCBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAgY29uc3QgdjhCdWlsZGVyID0gdGhpcy50cnlHZXRWOEJ1aWxkZXIocmF3VHhuKTtcbiAgICAgIGlmICh2OEJ1aWxkZXIpIHtcbiAgICAgICAgcmV0dXJuIHY4QnVpbGRlcjtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRob2ROYW1lID0gZGVjb2RlZFR4bi5tZXRob2Q/Lm5hbWU7XG4gICAgaWYgKG1ldGhvZE5hbWUgPT09IEludGVyZmFjZS5NZXRob2ROYW1lcy5UcmFuc2ZlcldpdGhNZW1vKSB7XG4gICAgICBjb25zdCBhcmdzID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyBJbnRlcmZhY2UuVHJhbnNmZXJXaXRoTWVtb0FyZ3M7XG4gICAgICBpZiAodXRpbHMuaXNOZXdNZW1vRW5jb2RpbmcoYXJncy5tZW1vKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIZXhUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gTWV0aG9kTmFtZXMuUmVnaXN0ZXJEaWRXaXRoQ0REKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5QcmVBcHByb3ZlQXNzZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFByZUFwcHJvdmVBc3NldEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09IE1ldGhvZE5hbWVzLkFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnMpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNBcmdzO1xuICAgICAgLy8gdjggd3JhcHMgbGVnIHNlbmRlci9yZWNlaXZlciBpbiBhbiBBc3NldEhvbGRlciBlbnVtIChgeyBwb3J0Zm9saW86IHsgZGlkLCBraW5kIH0gfWApXG4gICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBiYXJlIHY3IGB7IGRpZCwga2luZCB9YC4gVGhlIGNhbGwgaW5kZXggaXMgdW5jaGFuZ2VkIGJldHdlZW4gdjcvdjgsIHNvXG4gICAgICAvLyBkZWNvZGluZyBhIHY4LWVuY29kZWQgcGF5bG9hZCB3aXRoIHY3IG1ldGFkYXRhIGRvZXMgbm90IHRocm93IOKAlCBpdCBqdXN0IHNpbGVudGx5IGRyb3BzXG4gICAgICAvLyBgc2VuZGVyLmRpZGAuIERldGVjdCB0aGF0IGhlcmUgYW5kIHJldHJ5IHdpdGggdjggbWF0ZXJpYWwgaW5zdGVhZCBvZiBwcm9jZWVkaW5nIHdpdGggYVxuICAgICAgLy8gYnVpbGRlciB0aGF0IHdpbGwgZmFpbCBzY2hlbWEgdmFsaWRhdGlvbiBvbiB0aGUgbWlzc2luZyBmaWVsZC5cbiAgICAgIGlmICghYXJncy5sZWdzPy5bMF0/LmZ1bmdpYmxlPy5zZW5kZXI/LmRpZCkge1xuICAgICAgICBjb25zdCB2OEJ1aWxkZXIgPSB0aGlzLnRyeUdldFY4QnVpbGRlcihyYXdUeG4pO1xuICAgICAgICBpZiAodjhCdWlsZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIHY4QnVpbGRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHV0aWxzLmlzTmV3TWVtb0VuY29kaW5nKGFyZ3MuaW5zdHJ1Y3Rpb25NZW1vKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIZXhUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09IE1ldGhvZE5hbWVzLlJlamVjdEluc3RydWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRSZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdib25kRXh0cmEnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRCb25kRXh0cmFCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnYmF0Y2hBbGwnKSB7XG4gICAgICBjb25zdCBhcmdzID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyB7IGNhbGxzPzogQmF0Y2hDYWxsT2JqZWN0W10gfTtcblxuICAgICAgaWYgKGFyZ3MuY2FsbHMgJiYgYXJncy5jYWxscy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgLy8gRGVjb2RlIG1ldGhvZCBuYW1lcyBmcm9tIHRoZSBjYWxscyB1c2luZyB1dGlscy5kZWNvZGVNZXRob2ROYW1lXG4gICAgICAgIGNvbnN0IGZpcnN0Q2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoYXJncy5jYWxsc1swXSwgcmVnaXN0cnkpO1xuICAgICAgICBjb25zdCBzZWNvbmRDYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShhcmdzLmNhbGxzWzFdLCByZWdpc3RyeSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIGJhdGNoIHN0YWtpbmcgcGF0dGVybjogYm9uZCArIG5vbWluYXRlXG4gICAgICAgIGlmIChmaXJzdENhbGxNZXRob2QgPT09ICdib25kJyAmJiBzZWNvbmRDYWxsTWV0aG9kID09PSAnbm9taW5hdGUnKSB7XG4gICAgICAgICAgLy8gdjggZHJvcHBlZCB0aGUgY29udHJvbGxlciBsZWcgb2YgYHN0YWtpbmcuYm9uZGAgKGJvbmQoY29udHJvbGxlciwgdmFsdWUsIHBheWVlKSDihpJcbiAgICAgICAgICAvLyBib25kKHZhbHVlLCBwYXllZSkpLiBXaGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMgZGVjb2RlZCBhZ2FpbnN0IHY4IG1hdGVyaWFsIHRoZSBib25kIGNhbGxcbiAgICAgICAgICAvLyBjYXJyaWVzIG5vIGBjb250cm9sbGVyYCwgc28gcm91dGUgaXQgdG8gdGhlIHY4IGJhdGNoIHN0YWtpbmcgYnVpbGRlciDigJQgdGhlIHY3XG4gICAgICAgICAgLy8gQmF0Y2hTdGFraW5nQnVpbGRlciB3b3VsZCBvdGhlcndpc2UgY3Jhc2ggcmVhZGluZyBgYXJncy5jb250cm9sbGVyLmlkYC4gVGhpcyBydW5zIG9uIHRoZVxuICAgICAgICAgIC8vIGRlY29kZS1zdWNjZXNzIHBhdGggYmVjYXVzZSwgdW5saWtlIHY4IHRyYW5zZmVycywgdjggc3Rha2luZyBiYXRjaEFsbCBjYW4gZGVjb2RlIHdpdGhvdXRcbiAgICAgICAgICAvLyB0aHJvd2luZywgc28gdHJ5R2V0VjhCdWlsZGVyIG5ldmVyIGZpcmVzLiBTZWUgU0ktOTgxLlxuICAgICAgICAgIGNvbnN0IGJvbmRBcmdzID0gYXJncy5jYWxsc1swXS5hcmdzIGFzIHsgY29udHJvbGxlcj86IHVua25vd24gfTtcbiAgICAgICAgICBpZiAoYm9uZEFyZ3MuY29udHJvbGxlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBGb3J3YXJkIHRoZSBmYWN0b3J5J3MgbWF0ZXJpYWwgKHNldCBieSB0aGUgY2FsbGVyLCBlLmcuIHdhbGxldC1wbGF0Zm9ybSdzXG4gICAgICAgICAgICAvLyBnZXRTaWduZWRUeCB2aWEgYC5tYXRlcmlhbChsaXZlTWF0ZXJpYWwpLmZyb20oLi4uKWApLiBVbmxpa2UgdGhlIHY3IGdldHRlcnMsXG4gICAgICAgICAgICAvLyBnZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKSBkb2VzIE5PVCBmb3J3YXJkIHRoaXMuX21hdGVyaWFsIGFuZCB3b3VsZCBvdGhlcndpc2VcbiAgICAgICAgICAgIC8vIGtlZXAgdGhlIGJ1aWxkZXIncyBzdGF0aWMgZ2V0VjhNYXRlcmlhbCgpLiBPbiB0aGUgZGVjb2RlLXN1Y2Nlc3MgcGF0aCB0aGlzLl9tYXRlcmlhbFxuICAgICAgICAgICAgLy8gaXMgdGhlIG1hdGVyaWFsIHRoYXQganVzdCBkZWNvZGVkIHRoZSB0eCwgc28gaXQgaXMgdGhlIGNvcnJlY3Qgb25lIHRvIHJlYnVpbGQgd2l0aCDigJRcbiAgICAgICAgICAgIC8vIHdpdGhvdXQgdGhpcywgYSByZWJ1aWxkIHVzZXMgc3RhbGUgc3RhdGljIHNwZWNWZXJzaW9uIGFuZCB0aGUgc2lnbmFibGUgbm8gbG9uZ2VyXG4gICAgICAgICAgICAvLyBtYXRjaGVzIHRoZSBIU00tc2lnbmVkIGJ5dGVzIChJbnZhbGlkU2lnbmF0dXJlIG9uIGNvbWJpbmUpLiBTZWUgU0ktMTAzNC5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpLm1hdGVyaWFsKHRoaXMuX21hdGVyaWFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgZm9yIGJhdGNoIHVuc3Rha2luZyBwYXR0ZXJuOiBjaGlsbCArIHVuYm9uZFxuICAgICAgICBpZiAoZmlyc3RDYWxsTWV0aG9kID09PSAnY2hpbGwnICYmIHNlY29uZENhbGxNZXRob2QgPT09ICd1bmJvbmQnKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgYmFjayB0byBnZW5lcmFsIGJhdGNoIGJ1aWxkZXIgZm9yIG90aGVyIGJhdGNoQWxsIGNhc2VzXG4gICAgICByZXR1cm4gdGhpcy5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdiYXRjaCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEJhdGNoQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ2JvbmQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdub21pbmF0ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ3VuYm9uZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVuYm9uZEJ1aWxkZXIoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICd3aXRoZHJhd1VuYm9uZGVkJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIoKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyYW5zYWN0aW9uIGNhbm5vdCBiZSBwYXJzZWQgb3IgaGFzIGFuIHVuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIGRlY29kZSBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdjggY2hhaW4gbWV0YWRhdGEgYW5kIHJldHVybiB0aGUgbWF0Y2hpbmcgdjggc3Rha2luZ1xuICAgKiBidWlsZGVyLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIHRoZSB0cmFuc2FjdGlvbiBjYW5ub3QgYmUgZGVjb2RlZCB3aXRoIHY4IG1hdGVyaWFsIG9yIGlzIG5vdCBhXG4gICAqIHJlY29nbml6ZWQgdjggc3Rha2luZyB0cmFuc2FjdGlvbiwgc28gdGhlIGNhbGxlciBjYW4gc3VyZmFjZSB0aGUgb3JpZ2luYWwgdjcgZGVjb2RlIGVycm9yLlxuICAgKi9cbiAgcHJpdmF0ZSB0cnlHZXRWOEJ1aWxkZXIocmF3VHhuOiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXI8VHhNZXRob2QsIFN1cHBvcnRlZFRyYW5zYWN0aW9uPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdjhNYXRlcmlhbCA9IHV0aWxzLmdldFY4TWF0ZXJpYWwodGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHJlZ2lzdHJ5ID0gU2luZ2xldG9uUmVnaXN0cnkuZ2V0SW5zdGFuY2UodjhNYXRlcmlhbCk7XG4gICAgbGV0IGRlY29kZWRUeG47XG4gICAgdHJ5IHtcbiAgICAgIGRlY29kZWRUeG4gPSBkZWNvZGUocmF3VHhuLCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiB2OE1hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBkZWNvZGVkVHhuLm1ldGhvZD8ubmFtZTtcbiAgICBpZiAobWV0aG9kTmFtZSA9PT0gSW50ZXJmYWNlLk1ldGhvZE5hbWVzLlRyYW5zZmVyV2l0aE1lbW8pIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIEludGVyZmFjZS5UcmFuc2ZlcldpdGhNZW1vQXJncztcbiAgICAgIGlmICh1dGlscy5pc05ld01lbW9FbmNvZGluZyhhcmdzLm1lbW8pKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFY4SGV4VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOFRyYW5zZmVyQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gTWV0aG9kTmFtZXMuQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9ycykge1xuICAgICAgY29uc3QgYXJncyA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3MgfCBWOEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNBcmdzO1xuICAgICAgaWYgKHV0aWxzLmlzTmV3TWVtb0VuY29kaW5nKGFyZ3MuaW5zdHJ1Y3Rpb25NZW1vKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOFRva2VuVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5SZWdpc3RlckRpZFdpdGhDREQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gTWV0aG9kTmFtZXMuUmVnaXN0ZXJEaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4UmVnaXN0ZXJEaWRCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSBNZXRob2ROYW1lcy5QcmVBcHByb3ZlQXNzZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4UHJlQXBwcm92ZUFzc2V0QnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ2JhdGNoQWxsJykge1xuICAgICAgY29uc3QgYXJncyA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgeyBjYWxscz86IEJhdGNoQ2FsbE9iamVjdFtdIH07XG5cbiAgICAgIGlmIChhcmdzLmNhbGxzICYmIGFyZ3MuY2FsbHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0Q2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoYXJncy5jYWxsc1swXSwgcmVnaXN0cnkpO1xuICAgICAgICBjb25zdCBzZWNvbmRDYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShhcmdzLmNhbGxzWzFdLCByZWdpc3RyeSk7XG5cbiAgICAgICAgLy8gdjggYmF0Y2ggc3Rha2luZyBwYXR0ZXJuOiBib25kICgyLWFyZywgbm8gY29udHJvbGxlcikgKyBub21pbmF0ZVxuICAgICAgICBpZiAoZmlyc3RDYWxsTWV0aG9kID09PSAnYm9uZCcgJiYgc2Vjb25kQ2FsbE1ldGhvZCA9PT0gJ25vbWluYXRlJykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHY4IGJhdGNoIHVuc3Rha2luZyBwYXR0ZXJuOiBjaGlsbCArIHVuYm9uZFxuICAgICAgICBpZiAoZmlyc3RDYWxsTWV0aG9kID09PSAnY2hpbGwnICYmIHNlY29uZENhbGxNZXRob2QgPT09ICd1bmJvbmQnKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhCYXRjaFVuc3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhCYXRjaFN0YWtpbmdCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnYm9uZEV4dHJhJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VjhCb25kRXh0cmFCdWlsZGVyKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2ROYW1lID09PSAnbm9taW5hdGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOE5vbWluYXRlQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ3VuYm9uZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFY4VW5ib25kQnVpbGRlcigpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ3dpdGhkcmF3VW5ib25kZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWOFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
|
|
@@ -121,5 +121,86 @@ describe('Tao Transaction Builder Factory', function () {
|
|
|
121
121
|
should_1.default.ok(builder instanceof lib_1.TransferBuilder, 'expected TransferBuilder for v7 txHex');
|
|
122
122
|
});
|
|
123
123
|
});
|
|
124
|
+
// Regression test for the bug where getBuilder() decoded a v8 addAndAffirmWithMediators
|
|
125
|
+
// payload with v7 metadata (same call index, so no throw), silently lost sender.did, then
|
|
126
|
+
// routed to the v7 TokenTransferBuilder — causing Joi to throw
|
|
127
|
+
// 'legs[0].fungible.sender.did is required'.
|
|
128
|
+
describe('v8 token transfer routing regression', function () {
|
|
129
|
+
const FROM_DID = '0x1208d7851e6698249aea40742701ee1ef6cdcced260a7c49c1cca1a9db836342';
|
|
130
|
+
const TO_DID = '0xbc6f7ec808f361c1353ab9dc88c3cc54b98d9eb60fed9c063e67a40925b8ef61';
|
|
131
|
+
const ASSET_ID = '0x780602887b358cf48989d0d9aa6c8d28';
|
|
132
|
+
const VALIDITY = { firstValid: 3933, maxDuration: 64 };
|
|
133
|
+
const REF_BLOCK = '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d';
|
|
134
|
+
let unsignedHex;
|
|
135
|
+
let signedHex;
|
|
136
|
+
before(async function () {
|
|
137
|
+
const config = (0, base_1.buildTestConfig)();
|
|
138
|
+
// unsigned (no signature attached)
|
|
139
|
+
const unsignedTx = await new lib_1.V8TokenTransferBuilder(config)
|
|
140
|
+
.assetId(ASSET_ID)
|
|
141
|
+
.amount('1000000')
|
|
142
|
+
.fromDID(FROM_DID)
|
|
143
|
+
.toDID(TO_DID)
|
|
144
|
+
.memo('0')
|
|
145
|
+
.sender({ address: sender.address })
|
|
146
|
+
.validity(VALIDITY)
|
|
147
|
+
.referenceBlock(REF_BLOCK)
|
|
148
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
149
|
+
.fee({ amount: 0, type: 'tip' })
|
|
150
|
+
.build();
|
|
151
|
+
unsignedHex = unsignedTx.toBroadcastFormat();
|
|
152
|
+
// signed
|
|
153
|
+
const signedBuilder = new lib_1.V8TokenTransferBuilder(config)
|
|
154
|
+
.assetId(ASSET_ID)
|
|
155
|
+
.amount('1000000')
|
|
156
|
+
.fromDID(FROM_DID)
|
|
157
|
+
.toDID(TO_DID)
|
|
158
|
+
.memo('0')
|
|
159
|
+
.sender({ address: sender.address })
|
|
160
|
+
.validity(VALIDITY)
|
|
161
|
+
.referenceBlock(REF_BLOCK)
|
|
162
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
163
|
+
.fee({ amount: 0, type: 'tip' });
|
|
164
|
+
signedBuilder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
165
|
+
const signedTx = await signedBuilder.build();
|
|
166
|
+
signedHex = signedTx.toBroadcastFormat();
|
|
167
|
+
});
|
|
168
|
+
it('routes a v8 token transfer tx to V8TokenTransferBuilder (not TokenTransferBuilder)', function () {
|
|
169
|
+
// The call index for addAndAffirmWithMediators is identical in v7 and v8, so the v7 decode
|
|
170
|
+
// path "succeeds" but drops sender.did. The fix in getBuilder() detects the missing field
|
|
171
|
+
// and redirects to tryGetV8Builder() before Joi validation fires.
|
|
172
|
+
const factoryInst = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
|
|
173
|
+
const builder = factoryInst.from(signedHex);
|
|
174
|
+
should_1.default.ok(builder instanceof lib_1.V8TokenTransferBuilder, 'expected V8TokenTransferBuilder — v8 payload must not be silently mis-routed to v7 TokenTransferBuilder');
|
|
175
|
+
// V8TokenTransferBuilder extends TokenTransferBuilder; verify it is the v8 subclass
|
|
176
|
+
// specifically (constructor name) so a future refactor that breaks the class hierarchy
|
|
177
|
+
// is caught here rather than silently allowing a plain TokenTransferBuilder through.
|
|
178
|
+
should_1.default.equal(builder.constructor.name, 'V8TokenTransferBuilder', 'constructor must be V8TokenTransferBuilder, not plain TokenTransferBuilder');
|
|
179
|
+
});
|
|
180
|
+
it('rebuilds from unsigned v8 token transfer hex with correct fields and matching raw output', async function () {
|
|
181
|
+
const factoryInst = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
|
|
182
|
+
const builder = factoryInst.from(unsignedHex);
|
|
183
|
+
builder.validity(VALIDITY).referenceBlock(REF_BLOCK).sender({ address: sender.address });
|
|
184
|
+
const rebuilt = await builder.build();
|
|
185
|
+
const json = rebuilt.toJson();
|
|
186
|
+
should_1.default.equal(json.assetId, ASSET_ID);
|
|
187
|
+
should_1.default.equal(json.amount, '1000000');
|
|
188
|
+
should_1.default.equal(json.fromDID, FROM_DID);
|
|
189
|
+
should_1.default.equal(json.toDID, TO_DID);
|
|
190
|
+
should_1.default.equal(rebuilt.toBroadcastFormat(), unsignedHex, 'unsigned round-trip hex must match original');
|
|
191
|
+
});
|
|
192
|
+
it('rebuilds from signed v8 token transfer hex with correct fields and matching raw output', async function () {
|
|
193
|
+
const factoryInst = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
|
|
194
|
+
const builder = factoryInst.from(signedHex);
|
|
195
|
+
builder.validity(VALIDITY).referenceBlock(REF_BLOCK);
|
|
196
|
+
const rebuilt = await builder.build();
|
|
197
|
+
const json = rebuilt.toJson();
|
|
198
|
+
should_1.default.equal(json.assetId, ASSET_ID);
|
|
199
|
+
should_1.default.equal(json.amount, '1000000');
|
|
200
|
+
should_1.default.equal(json.fromDID, FROM_DID);
|
|
201
|
+
should_1.default.equal(json.toDID, TO_DID);
|
|
202
|
+
should_1.default.equal(rebuilt.toBroadcastFormat(), signedHex, 'signed round-trip hex must match original');
|
|
203
|
+
});
|
|
204
|
+
});
|
|
124
205
|
});
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUE0QztBQUM1QyxvREFBNEI7QUFDNUIsMENBQXVIO0FBRXZILCtDQUFrRDtBQUNsRCxnRkFBa0U7QUFDbEUsaUNBQXlDO0FBRXpDLFFBQVEsQ0FBQyxpQ0FBaUMsRUFBRTtJQUMxQyxNQUFNLE1BQU0sR0FBRyxvQkFBUSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxJQUFJLE9BQWtDLENBQUM7SUFFdkMsU0FBUyxDQUFDLHdCQUF3QixFQUFFO1FBQ2xDLE1BQU0sQ0FBQztZQUNMLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxxQkFBZSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMvRCxFQUFFLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxJQUFJLHFCQUFxQixHQUFHLENBQUMsSUFBSSxVQUFVLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQWtDLENBQUMsQ0FBQztnQkFFcEcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFMUMsT0FB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LENBQUM7UUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUU7WUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBSSwrQkFBeUIsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEQsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxZQUFZLHFCQUFlLEVBQUUsdUNBQXVDLENBQUMsQ0FBQztRQUN6RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgVHJhbnNmZXJCdWlsZGVyLCBWOFRyYW5zZmVyQnVpbGRlciwgVjhIZXhUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IEludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyByYXdUeCwgYWNjb3VudHMgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgbWF0ZXJpYWxEYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9tYXRlcmlhbERhdGEuanNvbic7XG5pbXBvcnQgeyBidWlsZFRlc3RDb25maWcgfSBmcm9tICcuL2Jhc2UnO1xuXG5kZXNjcmliZSgnVGFvIFRyYW5zYWN0aW9uIEJ1aWxkZXIgRmFjdG9yeScsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc2VuZGVyID0gYWNjb3VudHMuYWNjb3VudDE7XG4gIGxldCBmYWN0b3J5OiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5O1xuXG4gIHhkZXNjcmliZSgncGFyc2UgZ2VuZXJpYyBidWlsZGVycycsIGZ1bmN0aW9uICgpIHtcbiAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHBvbHl4JykpO1xuICAgIH0pO1xuXG4gICAgW3sgdHlwZTogJ3RyYW5zZmVyJywgYnVpbGRlcjogVHJhbnNmZXJCdWlsZGVyIH1dLmZvckVhY2goKHR4bikgPT4ge1xuICAgICAgaXQoYHNob3VsZCBwYXJzZSBhbiB1bnNpZ25lZCAke3R4bi50eXBlfSB0eG4gYW5kIHJldHVybiBhICR7dHhuLnR5cGV9IGJ1aWxkZXJgLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocmF3VHhbdHhuLnR5cGVdLnVuc2lnbmVkKS5tYXRlcmlhbChtYXRlcmlhbERhdGEgYXMgSW50ZXJmYWNlLk1hdGVyaWFsKTtcblxuICAgICAgICBidWlsZGVyLnNob3VsZC5iZS5pbnN0YW5jZU9mKHR4bi5idWlsZGVyKTtcblxuICAgICAgICBidWlsZGVyXG4gICAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMyB9KVxuICAgICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgcmF3VHhbdHhuLnR5cGVdLnVuc2lnbmVkKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgc2hvdWxkIHBhcnNlIGEgc2lnbmVkICR7dHhuLnR5cGV9IHR4biBhbmQgcmV0dXJuIGEgJHt0eG4udHlwZX0gYnVpbGRlcmAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZnJvbShyYXdUeFt0eG4udHlwZV0uc2lnbmVkKS5tYXRlcmlhbChtYXRlcmlhbERhdGEgYXMgSW50ZXJmYWNlLk1hdGVyaWFsKTtcblxuICAgICAgICBidWlsZGVyLnNob3VsZC5iZS5pbnN0YW5jZU9mKHR4bi5idWlsZGVyKTtcblxuICAgICAgICBidWlsZGVyXG4gICAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMyB9KVxuICAgICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgcmF3VHhbdHhuLnR5cGVdLnNpZ25lZCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3RyeUdldFY4QnVpbGRlciByb3V0aW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlY2VpdmVyID0gYWNjb3VudHMuYWNjb3VudDI7XG5cbiAgICBsZXQgdjhUcmFuc2ZlclR4SGV4OiBzdHJpbmc7XG4gICAgbGV0IHY4SGV4VHJhbnNmZXJUeEhleDogc3RyaW5nO1xuXG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGJ1aWxkVGVzdENvbmZpZygpO1xuXG4gICAgICAvLyBCdWlsZCBhbiB1bnNpZ25lZCB2OCB0cmFuc2ZlcldpdGhNZW1vIHR4IChwbGFpbi1zdHJpbmcgbWVtbywgbm90IDB4LXByZWZpeGVkKVxuICAgICAgY29uc3QgdjhUeCA9IGF3YWl0IG5ldyBWOFRyYW5zZmVyQnVpbGRlcihjb25maWcpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAnKVxuICAgICAgICAudG8oeyBhZGRyZXNzOiByZWNlaXZlci5hZGRyZXNzIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAubWVtbygnMCcpXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICB2OFRyYW5zZmVyVHhIZXggPSB2OFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIC8vIEJ1aWxkIGFuIHVuc2lnbmVkIHY4IGhleC1tZW1vIHRyYW5zZmVyV2l0aE1lbW8gdHhcbiAgICAgIGNvbnN0IHY4SGV4VHggPSBhd2FpdCBuZXcgVjhIZXhUcmFuc2ZlckJ1aWxkZXIoY29uZmlnKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwJylcbiAgICAgICAgLnRvKHsgYWRkcmVzczogcmVjZWl2ZXIuYWRkcmVzcyB9KVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLm1lbW8oJzU2NTk0JylcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIHY4SGV4VHJhbnNmZXJUeEhleCA9IHY4SGV4VHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyb3V0ZXMgYSB2OCB0cmFuc2ZlcldpdGhNZW1vIHR4IHRvIFY4VHJhbnNmZXJCdWlsZGVyIHZpYSBmYWxsYmFjaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEEgdjggdHhIZXggZW5jb2RlcyB0cmFuc2ZlcldpdGhNZW1vIGF0IGNhbGwgaW5kZXggMHgyOCAoQmFsYW5jZXMgcGFsbGV0LCBjYWxsIDQwKSxcbiAgICAgIC8vIHdoaWNoIGRvZXMgbm90IGV4aXN0IGluIHRoZSB2NyBTREsgbWV0YWRhdGEuIFRoZSBmYWN0b3J5IGZhbGxzIGJhY2sgdG8gdHJ5R2V0VjhCdWlsZGVyLFxuICAgICAgLy8gZGVjb2RlcyBhZ2FpbnN0IHY4IG1ldGFkYXRhLCBhbmQgcmV0dXJucyB0aGUgY29ycmVjdCBidWlsZGVyLlxuICAgICAgY29uc3QgZmFjdG9yeUluc3QgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeUluc3QuZnJvbSh2OFRyYW5zZmVyVHhIZXgpO1xuICAgICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBWOFRyYW5zZmVyQnVpbGRlciwgJ2V4cGVjdGVkIFY4VHJhbnNmZXJCdWlsZGVyIGZyb20gdHJ5R2V0VjhCdWlsZGVyIGZhbGxiYWNrJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncm91dGVzIGEgdjggaGV4LW1lbW8gdHJhbnNmZXJXaXRoTWVtbyB0eCB0byBWOEhleFRyYW5zZmVyQnVpbGRlciB2aWEgZmFsbGJhY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmYWN0b3J5SW5zdCA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5SW5zdC5mcm9tKHY4SGV4VHJhbnNmZXJUeEhleCk7XG4gICAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFY4SGV4VHJhbnNmZXJCdWlsZGVyLCAnZXhwZWN0ZWQgVjhIZXhUcmFuc2ZlckJ1aWxkZXIgZnJvbSB0cnlHZXRWOEJ1aWxkZXIgZmFsbGJhY2snKTtcbiAgICB9KTtcblxuICAgIGl0KCdyb3V0ZXMgYSB2NyB0cmFuc2ZlcldpdGhNZW1vIHR4IHRvIFRyYW5zZmVyQnVpbGRlciBkaXJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZhY3RvcnlJbnN0ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnlJbnN0LmZyb20ocmF3VHgudHJhbnNmZXIuc2lnbmVkKTtcbiAgICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVHJhbnNmZXJCdWlsZGVyLCAnZXhwZWN0ZWQgVHJhbnNmZXJCdWlsZGVyIGZvciB2NyB0eEhleCcpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUE0QztBQUM1QyxvREFBNEI7QUFDNUIsMENBTTBCO0FBRTFCLCtDQUFvRTtBQUNwRSxnRkFBa0U7QUFDbEUsaUNBQXlDO0FBRXpDLFFBQVEsQ0FBQyxpQ0FBaUMsRUFBRTtJQUMxQyxNQUFNLE1BQU0sR0FBRyxvQkFBUSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxJQUFJLE9BQWtDLENBQUM7SUFFdkMsU0FBUyxDQUFDLHdCQUF3QixFQUFFO1FBQ2xDLE1BQU0sQ0FBQztZQUNMLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxxQkFBZSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMvRCxFQUFFLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxJQUFJLHFCQUFxQixHQUFHLENBQUMsSUFBSSxVQUFVLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQWtDLENBQUMsQ0FBQztnQkFFcEcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFMUMsT0FB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LE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFNBQVMsRUFBRSwyQ0FBMkMsQ0FBQyxDQUFDO1FBQ3BHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBUcmFuc2ZlckJ1aWxkZXIsXG4gIFY4VHJhbnNmZXJCdWlsZGVyLFxuICBWOEhleFRyYW5zZmVyQnVpbGRlcixcbiAgVjhUb2tlblRyYW5zZmVyQnVpbGRlcixcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgcmF3VHgsIGFjY291bnRzLCBtb2NrVHNzU2lnbmF0dXJlIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcbmltcG9ydCAqIGFzIG1hdGVyaWFsRGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvbWF0ZXJpYWxEYXRhLmpzb24nO1xuaW1wb3J0IHsgYnVpbGRUZXN0Q29uZmlnIH0gZnJvbSAnLi9iYXNlJztcblxuZGVzY3JpYmUoJ1RhbyBUcmFuc2FjdGlvbiBCdWlsZGVyIEZhY3RvcnknLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNlbmRlciA9IGFjY291bnRzLmFjY291bnQxO1xuICBsZXQgZmFjdG9yeTogVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeTtcblxuICB4ZGVzY3JpYmUoJ3BhcnNlIGdlbmVyaWMgYnVpbGRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgIGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3Rwb2x5eCcpKTtcbiAgICB9KTtcblxuICAgIFt7IHR5cGU6ICd0cmFuc2ZlcicsIGJ1aWxkZXI6IFRyYW5zZmVyQnVpbGRlciB9XS5mb3JFYWNoKCh0eG4pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgcGFyc2UgYW4gdW5zaWduZWQgJHt0eG4udHlwZX0gdHhuIGFuZCByZXR1cm4gYSAke3R4bi50eXBlfSBidWlsZGVyYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tKHJhd1R4W3R4bi50eXBlXS51bnNpZ25lZCkubWF0ZXJpYWwobWF0ZXJpYWxEYXRhIGFzIEludGVyZmFjZS5NYXRlcmlhbCk7XG5cbiAgICAgICAgYnVpbGRlci5zaG91bGQuYmUuaW5zdGFuY2VPZih0eG4uYnVpbGRlcik7XG5cbiAgICAgICAgYnVpbGRlclxuICAgICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMgfSlcbiAgICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHJhd1R4W3R4bi50eXBlXS51bnNpZ25lZCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYHNob3VsZCBwYXJzZSBhIHNpZ25lZCAke3R4bi50eXBlfSB0eG4gYW5kIHJldHVybiBhICR7dHhuLnR5cGV9IGJ1aWxkZXJgLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocmF3VHhbdHhuLnR5cGVdLnNpZ25lZCkubWF0ZXJpYWwobWF0ZXJpYWxEYXRhIGFzIEludGVyZmFjZS5NYXRlcmlhbCk7XG5cbiAgICAgICAgYnVpbGRlci5zaG91bGQuYmUuaW5zdGFuY2VPZih0eG4uYnVpbGRlcik7XG5cbiAgICAgICAgYnVpbGRlclxuICAgICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMgfSlcbiAgICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHJhd1R4W3R4bi50eXBlXS5zaWduZWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0cnlHZXRWOEJ1aWxkZXIgcm91dGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZWNlaXZlciA9IGFjY291bnRzLmFjY291bnQyO1xuXG4gICAgbGV0IHY4VHJhbnNmZXJUeEhleDogc3RyaW5nO1xuICAgIGxldCB2OEhleFRyYW5zZmVyVHhIZXg6IHN0cmluZztcblxuICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb25maWcgPSBidWlsZFRlc3RDb25maWcoKTtcblxuICAgICAgLy8gQnVpbGQgYW4gdW5zaWduZWQgdjggdHJhbnNmZXJXaXRoTWVtbyB0eCAocGxhaW4tc3RyaW5nIG1lbW8sIG5vdCAweC1wcmVmaXhlZClcbiAgICAgIGNvbnN0IHY4VHggPSBhd2FpdCBuZXcgVjhUcmFuc2ZlckJ1aWxkZXIoY29uZmlnKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwJylcbiAgICAgICAgLnRvKHsgYWRkcmVzczogcmVjZWl2ZXIuYWRkcmVzcyB9KVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLm1lbW8oJzAnKVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgdjhUcmFuc2ZlclR4SGV4ID0gdjhUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAvLyBCdWlsZCBhbiB1bnNpZ25lZCB2OCBoZXgtbWVtbyB0cmFuc2ZlcldpdGhNZW1vIHR4XG4gICAgICBjb25zdCB2OEhleFR4ID0gYXdhaXQgbmV3IFY4SGV4VHJhbnNmZXJCdWlsZGVyKGNvbmZpZylcbiAgICAgICAgLmFtb3VudCgnMTAwMDAwMCcpXG4gICAgICAgIC50byh7IGFkZHJlc3M6IHJlY2VpdmVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC5tZW1vKCc1NjU5NCcpXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICB2OEhleFRyYW5zZmVyVHhIZXggPSB2OEhleFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncm91dGVzIGEgdjggdHJhbnNmZXJXaXRoTWVtbyB0eCB0byBWOFRyYW5zZmVyQnVpbGRlciB2aWEgZmFsbGJhY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBBIHY4IHR4SGV4IGVuY29kZXMgdHJhbnNmZXJXaXRoTWVtbyBhdCBjYWxsIGluZGV4IDB4MjggKEJhbGFuY2VzIHBhbGxldCwgY2FsbCA0MCksXG4gICAgICAvLyB3aGljaCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgdjcgU0RLIG1ldGFkYXRhLiBUaGUgZmFjdG9yeSBmYWxscyBiYWNrIHRvIHRyeUdldFY4QnVpbGRlcixcbiAgICAgIC8vIGRlY29kZXMgYWdhaW5zdCB2OCBtZXRhZGF0YSwgYW5kIHJldHVybnMgdGhlIGNvcnJlY3QgYnVpbGRlci5cbiAgICAgIGNvbnN0IGZhY3RvcnlJbnN0ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnlJbnN0LmZyb20odjhUcmFuc2ZlclR4SGV4KTtcbiAgICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVjhUcmFuc2ZlckJ1aWxkZXIsICdleHBlY3RlZCBWOFRyYW5zZmVyQnVpbGRlciBmcm9tIHRyeUdldFY4QnVpbGRlciBmYWxsYmFjaycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JvdXRlcyBhIHY4IGhleC1tZW1vIHRyYW5zZmVyV2l0aE1lbW8gdHggdG8gVjhIZXhUcmFuc2ZlckJ1aWxkZXIgdmlhIGZhbGxiYWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmFjdG9yeUluc3QgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeUluc3QuZnJvbSh2OEhleFRyYW5zZmVyVHhIZXgpO1xuICAgICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBWOEhleFRyYW5zZmVyQnVpbGRlciwgJ2V4cGVjdGVkIFY4SGV4VHJhbnNmZXJCdWlsZGVyIGZyb20gdHJ5R2V0VjhCdWlsZGVyIGZhbGxiYWNrJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncm91dGVzIGEgdjcgdHJhbnNmZXJXaXRoTWVtbyB0eCB0byBUcmFuc2ZlckJ1aWxkZXIgZGlyZWN0bHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmYWN0b3J5SW5zdCA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5SW5zdC5mcm9tKHJhd1R4LnRyYW5zZmVyLnNpZ25lZCk7XG4gICAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFRyYW5zZmVyQnVpbGRlciwgJ2V4cGVjdGVkIFRyYW5zZmVyQnVpbGRlciBmb3IgdjcgdHhIZXgnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gUmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgYnVnIHdoZXJlIGdldEJ1aWxkZXIoKSBkZWNvZGVkIGEgdjggYWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc1xuICAvLyBwYXlsb2FkIHdpdGggdjcgbWV0YWRhdGEgKHNhbWUgY2FsbCBpbmRleCwgc28gbm8gdGhyb3cpLCBzaWxlbnRseSBsb3N0IHNlbmRlci5kaWQsIHRoZW5cbiAgLy8gcm91dGVkIHRvIHRoZSB2NyBUb2tlblRyYW5zZmVyQnVpbGRlciDigJQgY2F1c2luZyBKb2kgdG8gdGhyb3dcbiAgLy8gJ2xlZ3NbMF0uZnVuZ2libGUuc2VuZGVyLmRpZCBpcyByZXF1aXJlZCcuXG4gIGRlc2NyaWJlKCd2OCB0b2tlbiB0cmFuc2ZlciByb3V0aW5nIHJlZ3Jlc3Npb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgRlJPTV9ESUQgPSAnMHgxMjA4ZDc4NTFlNjY5ODI0OWFlYTQwNzQyNzAxZWUxZWY2Y2RjY2VkMjYwYTdjNDljMWNjYTFhOWRiODM2MzQyJztcbiAgICBjb25zdCBUT19ESUQgPSAnMHhiYzZmN2VjODA4ZjM2MWMxMzUzYWI5ZGM4OGMzY2M1NGI5OGQ5ZWI2MGZlZDljMDYzZTY3YTQwOTI1YjhlZjYxJztcbiAgICBjb25zdCBBU1NFVF9JRCA9ICcweDc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4JztcbiAgICBjb25zdCBWQUxJRElUWSA9IHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH07XG4gICAgY29uc3QgUkVGX0JMT0NLID0gJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCc7XG5cbiAgICBsZXQgdW5zaWduZWRIZXg6IHN0cmluZztcbiAgICBsZXQgc2lnbmVkSGV4OiBzdHJpbmc7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY29uZmlnID0gYnVpbGRUZXN0Q29uZmlnKCk7XG5cbiAgICAgIC8vIHVuc2lnbmVkIChubyBzaWduYXR1cmUgYXR0YWNoZWQpXG4gICAgICBjb25zdCB1bnNpZ25lZFR4ID0gYXdhaXQgbmV3IFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoY29uZmlnKVxuICAgICAgICAuYXNzZXRJZChBU1NFVF9JRClcbiAgICAgICAgLmFtb3VudCgnMTAwMDAwMCcpXG4gICAgICAgIC5mcm9tRElEKEZST01fRElEKVxuICAgICAgICAudG9ESUQoVE9fRElEKVxuICAgICAgICAubWVtbygnMCcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoVkFMSURJVFkpXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jayhSRUZfQkxPQ0spXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG4gICAgICB1bnNpZ25lZEhleCA9IHVuc2lnbmVkVHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gc2lnbmVkXG4gICAgICBjb25zdCBzaWduZWRCdWlsZGVyID0gbmV3IFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoY29uZmlnKVxuICAgICAgICAuYXNzZXRJZChBU1NFVF9JRClcbiAgICAgICAgLmFtb3VudCgnMTAwMDAwMCcpXG4gICAgICAgIC5mcm9tRElEKEZST01fRElEKVxuICAgICAgICAudG9ESUQoVE9fRElEKVxuICAgICAgICAubWVtbygnMCcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoVkFMSURJVFkpXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jayhSRUZfQkxPQ0spXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBzaWduZWRCdWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogc2VuZGVyLnB1YmxpY0tleSB9LCBCdWZmZXIuZnJvbShtb2NrVHNzU2lnbmF0dXJlLCAnaGV4JykpO1xuICAgICAgY29uc3Qgc2lnbmVkVHggPSBhd2FpdCBzaWduZWRCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaWduZWRIZXggPSBzaWduZWRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JvdXRlcyBhIHY4IHRva2VuIHRyYW5zZmVyIHR4IHRvIFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIgKG5vdCBUb2tlblRyYW5zZmVyQnVpbGRlciknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUaGUgY2FsbCBpbmRleCBmb3IgYWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9ycyBpcyBpZGVudGljYWwgaW4gdjcgYW5kIHY4LCBzbyB0aGUgdjcgZGVjb2RlXG4gICAgICAvLyBwYXRoIFwic3VjY2VlZHNcIiBidXQgZHJvcHMgc2VuZGVyLmRpZC4gVGhlIGZpeCBpbiBnZXRCdWlsZGVyKCkgZGV0ZWN0cyB0aGUgbWlzc2luZyBmaWVsZFxuICAgICAgLy8gYW5kIHJlZGlyZWN0cyB0byB0cnlHZXRWOEJ1aWxkZXIoKSBiZWZvcmUgSm9pIHZhbGlkYXRpb24gZmlyZXMuXG4gICAgICBjb25zdCBmYWN0b3J5SW5zdCA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5SW5zdC5mcm9tKHNpZ25lZEhleCk7XG4gICAgICBzaG91bGQub2soXG4gICAgICAgIGJ1aWxkZXIgaW5zdGFuY2VvZiBWOFRva2VuVHJhbnNmZXJCdWlsZGVyLFxuICAgICAgICAnZXhwZWN0ZWQgVjhUb2tlblRyYW5zZmVyQnVpbGRlciDigJQgdjggcGF5bG9hZCBtdXN0IG5vdCBiZSBzaWxlbnRseSBtaXMtcm91dGVkIHRvIHY3IFRva2VuVHJhbnNmZXJCdWlsZGVyJ1xuICAgICAgKTtcbiAgICAgIC8vIFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUb2tlblRyYW5zZmVyQnVpbGRlcjsgdmVyaWZ5IGl0IGlzIHRoZSB2OCBzdWJjbGFzc1xuICAgICAgLy8gc3BlY2lmaWNhbGx5IChjb25zdHJ1Y3RvciBuYW1lKSBzbyBhIGZ1dHVyZSByZWZhY3RvciB0aGF0IGJyZWFrcyB0aGUgY2xhc3MgaGllcmFyY2h5XG4gICAgICAvLyBpcyBjYXVnaHQgaGVyZSByYXRoZXIgdGhhbiBzaWxlbnRseSBhbGxvd2luZyBhIHBsYWluIFRva2VuVHJhbnNmZXJCdWlsZGVyIHRocm91Z2guXG4gICAgICBzaG91bGQuZXF1YWwoXG4gICAgICAgIGJ1aWxkZXIuY29uc3RydWN0b3IubmFtZSxcbiAgICAgICAgJ1Y4VG9rZW5UcmFuc2ZlckJ1aWxkZXInLFxuICAgICAgICAnY29uc3RydWN0b3IgbXVzdCBiZSBWOFRva2VuVHJhbnNmZXJCdWlsZGVyLCBub3QgcGxhaW4gVG9rZW5UcmFuc2ZlckJ1aWxkZXInXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlYnVpbGRzIGZyb20gdW5zaWduZWQgdjggdG9rZW4gdHJhbnNmZXIgaGV4IHdpdGggY29ycmVjdCBmaWVsZHMgYW5kIG1hdGNoaW5nIHJhdyBvdXRwdXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmYWN0b3J5SW5zdCA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5SW5zdC5mcm9tKHVuc2lnbmVkSGV4KTtcbiAgICAgIGJ1aWxkZXIudmFsaWRpdHkoVkFMSURJVFkpLnJlZmVyZW5jZUJsb2NrKFJFRl9CTE9DSykuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSk7XG4gICAgICBjb25zdCByZWJ1aWx0ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCBqc29uID0gcmVidWlsdC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5lcXVhbChqc29uLmFzc2V0SWQsIEFTU0VUX0lEKTtcbiAgICAgIHNob3VsZC5lcXVhbChqc29uLmFtb3VudCwgJzEwMDAwMDAnKTtcbiAgICAgIHNob3VsZC5lcXVhbChqc29uLmZyb21ESUQsIEZST01fRElEKTtcbiAgICAgIHNob3VsZC5lcXVhbChqc29uLnRvRElELCBUT19ESUQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHQudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdW5zaWduZWRIZXgsICd1bnNpZ25lZCByb3VuZC10cmlwIGhleCBtdXN0IG1hdGNoIG9yaWdpbmFsJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVidWlsZHMgZnJvbSBzaWduZWQgdjggdG9rZW4gdHJhbnNmZXIgaGV4IHdpdGggY29ycmVjdCBmaWVsZHMgYW5kIG1hdGNoaW5nIHJhdyBvdXRwdXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmYWN0b3J5SW5zdCA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5SW5zdC5mcm9tKHNpZ25lZEhleCk7XG4gICAgICBidWlsZGVyLnZhbGlkaXR5KFZBTElESVRZKS5yZWZlcmVuY2VCbG9jayhSRUZfQkxPQ0spO1xuICAgICAgY29uc3QgcmVidWlsdCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QganNvbiA9IHJlYnVpbHQudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXF1YWwoanNvbi5hc3NldElkLCBBU1NFVF9JRCk7XG4gICAgICBzaG91bGQuZXF1YWwoanNvbi5hbW91bnQsICcxMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZXF1YWwoanNvbi5mcm9tRElELCBGUk9NX0RJRCk7XG4gICAgICBzaG91bGQuZXF1YWwoanNvbi50b0RJRCwgVE9fRElEKTtcbiAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHNpZ25lZEhleCwgJ3NpZ25lZCByb3VuZC10cmlwIGhleCBtdXN0IG1hdGNoIG9yaWdpbmFsJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|