@bitgo-beta/sdk-coin-stx 1.1.1-beta.2160 → 1.1.1-beta.2162
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/src/lib/utils.js
CHANGED
|
@@ -325,7 +325,7 @@ function getSTXAddressFromPubKeys(pubKeys, addressVersion = transactions_1.Addre
|
|
|
325
325
|
function signMessage(keyPair, data) {
|
|
326
326
|
const prv = keyPair.getKeys().prv;
|
|
327
327
|
if (prv) {
|
|
328
|
-
return (0, transactions_1.signWithKey)((0, transactions_1.createStacksPrivateKey)(prv), data).data;
|
|
328
|
+
return (0, transactions_1.signWithKey)((0, transactions_1.createStacksPrivateKey)(prv), Buffer.from(data).toString('hex')).data;
|
|
329
329
|
}
|
|
330
330
|
else {
|
|
331
331
|
throw new sdk_core_1.SigningError('Missing private key');
|
|
@@ -354,7 +354,7 @@ function verifySignature(message, signature, publicKey) {
|
|
|
354
354
|
// provided publicKey can be compressed or uncompressed
|
|
355
355
|
const keyEncoding = publicKey.length === 66 ? transactions_1.PubKeyEncoding.Compressed : transactions_1.PubKeyEncoding.Uncompressed;
|
|
356
356
|
const messageSig = (0, transactions_1.createMessageSignature)(signature);
|
|
357
|
-
const foundKey = (0, transactions_1.publicKeyFromSignature)(message, messageSig, keyEncoding);
|
|
357
|
+
const foundKey = (0, transactions_1.publicKeyFromSignature)(Buffer.from(message).toString('hex'), messageSig, keyEncoding);
|
|
358
358
|
return foundKey === publicKey;
|
|
359
359
|
}
|
|
360
360
|
/**
|
|
@@ -608,4 +608,4 @@ function getMemoIdAndBaseAddressFromAddress(address) {
|
|
|
608
608
|
memoId: memoId ? memoId : undefined,
|
|
609
609
|
};
|
|
610
610
|
}
|
|
611
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNENBLDBEQUVDO0FBUUQsMENBRUM7QUE0QkQsZ0RBVUM7QUFRRCxzQ0FHQztBQVFELHdDQUVDO0FBWUQsb0RBTUM7QUFZRCw0Q0FzQkM7QUFhRCw4Q0FRQztBQWtCRCxzREFZQztBQVFELGtDQVFDO0FBU0Qsd0RBTUM7QUFRRCxrRUFFQztBQVVELDhCQUlDO0FBV0QsNERBb0JDO0FBU0Qsa0NBT0M7QUFhRCwwQ0FjQztBQVFELDhDQTZCQztBQVFELDRDQVlDO0FBUUQsa0VBT0M7QUFRRCxrQ0FvQkM7QUFRRCw0REFtQkM7QUFFRCw4RUFvQkM7QUFRRCw4Q0FHQztBQWdCRCxrREFXQztBQVFELDBDQUVDO0FBUUQsd0NBR0M7QUFTRCw4Q0FLQztBQVNELDBEQU9DO0FBU0QsZ0ZBT0M7QUFRRCxnRkFTQztBQTFtQkQseUNBQTJCO0FBQzNCLGdFQUFxQztBQUNyQyxxREFBOEQ7QUFDOUQsdURBMEI4QjtBQUM5Qix1REFBb0Q7QUFDcEQsMENBQTRCO0FBQzVCLG1EQUFtSDtBQUVuSCx3QkFBNEI7QUFDNUIsaURBQTZGO0FBQzdGLDJDQUE0RDtBQUU1RDs7Ozs7R0FLRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLElBQVk7SUFDbEQsT0FBTyxJQUFBLDZCQUFXLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLEdBQVc7SUFDekMsT0FBTyxJQUFBLGdDQUFjLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLDJCQUEyQixDQUNsQyxhQUFxQixFQUNyQixRQUF5QixFQUN6QixrQkFBc0M7SUFFdEMsSUFBSSxhQUFhLENBQUMs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QUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxvQkFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsZUFBZSxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUM7YUFDM0csR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFrQixDQUFDLENBQUM7UUFDckMsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGtDQUFrQyxDQUFDLE9BQWU7SUFDaEUsTUFBTSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEMsT0FBTztRQUNMLE9BQU8sRUFBRSxXQUFXO1FBQ3BCLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUztLQUNwQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHVybCBmcm9tICd1cmwnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgYnVmZmVyVG9IZXgsIHN0cmlwSGV4UHJlZml4IH0gZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7XG4gIGFkZHJlc3NGcm9tUHVibGljS2V5cyxcbiAgYWRkcmVzc0Zyb21WZXJzaW9uSGFzaCxcbiAgQWRkcmVzc0hhc2hNb2RlLFxuICBhZGRyZXNzSGFzaE1vZGVUb1ZlcnNpb24sXG4gIGFkZHJlc3NUb1N0cmluZyxcbiAgQWRkcmVzc1ZlcnNpb24sXG4gIEJ1ZmZlclJlYWRlcixcbiAgQ2xhcml0eVR5cGUsXG4gIENsYXJpdHlWYWx1ZSxcbiAgY3JlYXRlQWRkcmVzcyxcbiAgY3JlYXRlTWVtb1N0cmluZyxcbiAgY3JlYXRlTWVzc2FnZVNpZ25hdHVyZSxcbiAgY3JlYXRlU3RhY2tzUHJpdmF0ZUtleSxcbiAgY3JlYXRlU3RhY2tzUHVibGljS2V5LFxuICBjdlRvU3RyaW5nLFxuICBjdlRvVmFsdWUsXG4gIGRlc2VyaWFsaXplVHJhbnNhY3Rpb24sXG4gIFB1YktleUVuY29kaW5nLFxuICBwdWJsaWNLZXlGcm9tU2lnbmF0dXJlLFxuICBzZXJpYWxpemVDVixcbiAgc2lnbldpdGhLZXksXG4gIFN0YWNrc1RyYW5zYWN0aW9uLFxuICBzdGFuZGFyZFByaW5jaXBhbENWLFxuICBUcmFuc2FjdGlvblZlcnNpb24sXG4gIHZhbGlkYXRlU3RhY2tzQWRkcmVzcyxcbn0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgc2VjcDI1NmsxIH0gZnJvbSAnQG5vYmxlL2N1cnZlcy9zZWNwMjU2azEnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIGlzVmFsaWRYcHJ2LCBpc1ZhbGlkWHB1YiwgU2lnbmluZ0Vycm9yLCBVdGlsc0Vycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQWRkcmVzc0RldGFpbHMsIFNlbmRQYXJhbXMsIFRva2VuVHJhbnNmZXJQYXJhbXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7IGNvaW5zLCBTaXAxMFRva2VuLCBTdGFja3NOZXR3b3JrIGFzIEJpdGdvU3RhY2tzTmV0d29yayB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVkFMSURfQ09OVFJBQ1RfRlVOQ1RJT05fTkFNRVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICogRW5jb2RlcyBhIGJ1ZmZlciBhcyBhIFwiMHhcIiBwcmVmaXhlZCBsb3dlci1jYXNlIGhleCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmYgLSBhIGJ1ZmZlciB3aXRoIGEgaGV4YWRlY2ltYWwgc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBoZXhhZGVjaW1hbCBzdHJpbmcgcHJlZml4ZWQgd2l0aCBcIjB4XCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1ZmZlclRvSGV4UHJlZml4U3RyaW5nKGJ1ZmY6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIHJldHVybiBidWZmZXJUb0hleChidWZmKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIFwiMHhcIiBwcmVmaXggZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nLCBpZiBwcmVzZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoZXggLSBhIGhleGFkZWNpbWFsIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgaGV4YWRlY2ltYWwgc3RyaW5nIHdpdGhvdXQgYSBsZWFkaW5nIFwiMHhcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlSGV4UHJlZml4KGhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0cmlwSGV4UHJlZml4KGhleCk7XG59XG5cbi8qKlxuICogR2V0IHN0YWNrcyBhZGRyZXNzIGZyb20gcHVibGljIGtleSBoYXNoXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IHB1YmxpY0tleUhhc2ggLSBoYXNoIG9mIHB1YmxpYyBrZXlcbiAqIEBwYXJhbSB7QWRkcmVzc0hhc2hNb2RlfSBoYXNoTW9kZSAtIGhhc2ggbW9kZVxuICogQHBhcmFtIHtUcmFuc2FjdGlvblZlcnNpb259IHRyYW5zYWN0aW9uVmVyc2lvbiAtIHR4IHZlcnNpb25cbiAqIEByZXR1cm5zIHtzdHJpbmd9IHN0YWNrcyBhZGRyZXNzXG4gKi9cbmZ1bmN0aW9uIGdldEFkZHJlc3NGcm9tUHVibGljS2V5SGFzaChcbiAgcHVibGljS2V5SGFzaDogQnVmZmVyLFxuICBoYXNoTW9kZTogQWRkcmVzc0hhc2hNb2RlLFxuICB0cmFuc2FjdGlvblZlcnNpb246IFRyYW5zYWN0aW9uVmVyc2lvblxuKTogc3RyaW5nIHtcbiAgaWYgKHB1YmxpY0tleUhhc2gubGVuZ3RoICE9PSAyMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgMjAtYnl0ZSBwdWJrZXloYXNoJyk7XG4gIH1cblxuICBjb25zdCBhZGRyVmVyID0gYWRkcmVzc0hhc2hNb2RlVG9WZXJzaW9uKGhhc2hNb2RlLCB0cmFuc2FjdGlvblZlcnNpb24pO1xuICBjb25zdCBhZGRyID0gYWRkcmVzc0Zyb21WZXJzaW9uSGFzaChhZGRyVmVyLCBwdWJsaWNLZXlIYXNoLnRvU3RyaW5nKCdoZXgnKSk7XG4gIGNvbnN0IGFkZHJTdHJpbmcgPSBhZGRyZXNzVG9TdHJpbmcoYWRkcik7XG4gIHJldHVybiBhZGRyU3RyaW5nO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHhTZW5kZXJBZGRyZXNzKHR4OiBTdGFja3NUcmFuc2FjdGlvbik6IHN0cmluZyB7XG4gIGlmICh0eC5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uICE9PSBudWxsICYmIHR4LmF1dGguc3BlbmRpbmdDb25kaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHNwZW5kaW5nQ29uZGl0aW9uID0gdHguYXV0aC5zcGVuZGluZ0NvbmRpdGlvbjtcbiAgICBjb25zdCB0eFNlbmRlciA9IGdldEFkZHJlc3NGcm9tUHVibGljS2V5SGFzaChcbiAgICAgIEJ1ZmZlci5mcm9tKHNwZW5kaW5nQ29uZGl0aW9uLnNpZ25lciwgJ2hleCcpLFxuICAgICAgc3BlbmRpbmdDb25kaXRpb24uaGFzaE1vZGUgYXMgbnVtYmVyLFxuICAgICAgdHgudmVyc2lvblxuICAgICk7XG4gICAgcmV0dXJuIHR4U2VuZGVyO1xuICB9IGVsc2UgdGhyb3cgbmV3IEVycm9yKCdzcGVuZGluZ0NvbmRpdGlvbiBzaG91bGQgbm90IGJlIG51bGwnKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBhbW91bnQgbnVtYmVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIHRoZSBzdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFtb3VudChhbW91bnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBiaWdOdW1iZXJBbW91bnQgPSBuZXcgQmlnTnVtYmVyKGFtb3VudCk7XG4gIHJldHVybiBiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgJiYgYmlnTnVtYmVyQW1vdW50LmlzR3JlYXRlclRoYW5PckVxdWFsVG8oMCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgcHJvdG9jb2wgYWRkcmVzc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gdGhlIGFkZHJlc3MgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsaWRhdGVTdGFja3NBZGRyZXNzKGFkZHJlc3MpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHByb3RvY29sIHRyYW5zYWN0aW9uIGlkIG9yIG5vdC5cbiAqXG4gKiBBIHZhbGlkIHRyYW5zYWN0aW9uIGlkIGlzIGEgU0hBLTUxMi8yNTYgaGFzaCBvZiBhIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb247IHNlZVxuICogdGhlIHR4aWRGcm9tRGF0YSBmdW5jdGlvbiBpbiBAc3RhY2tzL3RyYW5zYWN0aW9uOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2Jsb2Nrc3RhY2svc3RhY2tzLmpzL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3RyYW5zYWN0aW9ucy9zcmMvdXRpbHMudHMjTDk3XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR4SWQgLSB0aGUgdHJhbnNhY3Rpb24gaWQgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodHhJZC5sZW5ndGggIT09IDY0ICYmIHR4SWQubGVuZ3RoICE9PSA2NikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBub1ByZWZpeCA9IHJlbW92ZUhleFByZWZpeCh0eElkKTtcbiAgaWYgKG5vUHJlZml4Lmxlbmd0aCAhPT0gNjQpIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gYWxsSGV4Q2hhcnMobm9QcmVmaXgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHByb3RvY29sIHB1YmxpYyBrZXkgb3JcbiAqIGV4dGVuZGVkIHB1YmxpYyBrZXkuXG4gKlxuICogVGhlIGtleSBmb3JtYXQgaXMgZG9jdW1lbnRlZCBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrc2dvdi9zaXBzL2Jsb2IvbWFpbi9zaXBzL3NpcC0wMDUvc2lwLTAwNS1ibG9ja3MtYW5kLXRyYW5zYWN0aW9ucy5tZCN0cmFuc2FjdGlvbi1hdXRob3JpemF0aW9uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHB1YiAtIHRoZSAgcHVibGljIGtleSB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YmxpY0tleShwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoaXNWYWxpZFhwdWIocHViKSkgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHB1Yi5sZW5ndGggIT09IDY2ICYmIHB1Yi5sZW5ndGggIT09IDEzMCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGZpcnN0Qnl0ZSA9IHB1Yi5zbGljZSgwLCAyKTtcblxuICAvLyB1bmNvbXByZXNzZWQgcHVibGljIGtleVxuICBpZiAocHViLmxlbmd0aCA9PT0gMTMwICYmIGZpcnN0Qnl0ZSAhPT0gJzA0JykgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIGNvbXByZXNzZWQgcHVibGljIGtleVxuICBpZiAocHViLmxlbmd0aCA9PT0gNjYgJiYgZmlyc3RCeXRlICE9PSAnMDInICYmIGZpcnN0Qnl0ZSAhPT0gJzAzJykgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICghYWxsSGV4Q2hhcnMocHViKSkgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIHZhbGlkYXRlIHRoZSBwdWJsaWMga2V5XG4gIHRyeSB7XG4gICAgc2VjcDI1NmsxLlByb2plY3RpdmVQb2ludC5mcm9tSGV4KHB1Yik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBwcm90b2NvbCBwcml2YXRlIGtleSwgb3IgZXh0ZW5kZWRcbiAqIHByaXZhdGUga2V5LlxuICpcbiAqIFRoZSBwcm90b2NvbCBrZXkgZm9ybWF0IGlzIGRlc2NyaWJlZCBpbiB0aGUgQHN0YWNrcy90cmFuc2FjdGlvbnMgbnBtIHBhY2thZ2UsIGluIHRoZVxuICogY3JlYXRlU3RhY2tzUHJpdmF0ZUtleSBmdW5jdGlvbjpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibG9ja3N0YWNrL3N0YWNrcy5qcy9ibG9iL21hc3Rlci9wYWNrYWdlcy90cmFuc2FjdGlvbnMvc3JjL2tleXMudHMjTDEyNVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgLSB0aGUgcHJpdmF0ZSBrZXkgKG9yIGV4dGVuZGVkIHByaXZhdGUga2V5KSB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzVmFsaWRYcHJ2KHBydikpIHJldHVybiB0cnVlO1xuXG4gIGlmIChwcnYubGVuZ3RoICE9PSA2NCAmJiBwcnYubGVuZ3RoICE9PSA2NikgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChwcnYubGVuZ3RoID09PSA2NiAmJiBwcnYuc2xpY2UoNjQpICE9PSAnMDEnKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIGFsbEhleENoYXJzKHBydik7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgY29tcG9zZWQgb2YgaGV4IGNoYXJzIG9ubHlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWF5YmUgLSB0aGUgIHN0cmluZyB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5mdW5jdGlvbiBhbGxIZXhDaGFycyhtYXliZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXihbMC05YS1mXSkrJC9pLnRlc3QobWF5YmUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiByYXcgdHJhbnNhY3Rpb24gY2FuIGJlIGRlc2VyaWFsaXplZFxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gcmF3VHJhbnNhY3Rpb24gLSB0cmFuc2FjdGlvbiBpbiByYXcgaGV4IGZvcm1hdFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHVua25vd24pOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgZGVzZXJpYWxpemVUcmFuc2FjdGlvbihCdWZmZXJSZWFkZXIuZnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShyZW1vdmVIZXhQcmVmaXgocmF3VHJhbnNhY3Rpb24pLCAnaGV4JykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIG1lbW8gc3RyaW5nIGlzIHZhbGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lbW8gLSB0aGUgc3RyaW5nIHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTWVtbyhtZW1vOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjcmVhdGVNZW1vU3RyaW5nKG1lbW8pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ2hlY2tzIGZvciB2YWxpZCBjb250cmFjdCBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHIgLSBjb250cmFjdCBkZXBsb3llciBhZGRyZXNzXG4gKiBAcGFyYW0ge0JpdGdvU3RhY2tzTmV0d29ya30gbmV0d29yayAtIG5ldHdvcmsgb2JqZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRDb250cmFjdEFkZHJlc3MoYWRkcjogc3RyaW5nLCBuZXR3b3JrOiBCaXRnb1N0YWNrc05ldHdvcmspOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBhZGRyID09PSBuZXR3b3JrLnN0YWtpbmdDb250cmFjdEFkZHJlc3MgfHxcbiAgICBhZGRyID09PSBuZXR3b3JrLnNlbmRtYW55bWVtb0NvbnRyYWN0QWRkcmVzcyB8fFxuICAgIGFkZHIgPT09IG5ldHdvcmsuc2J0Y1dpdGhkcmF3YWxDb250cmFjdEFkZHJlc3NcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgbmFtZSBpcyBvbmUgb2YgdmFsaWQgY29udHJhY3QgbmFtZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIGZ1bmN0aW9uIG5hbWVcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQ29udHJhY3RGdW5jdGlvbk5hbWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBWQUxJRF9DT05UUkFDVF9GVU5DVElPTl9OQU1FUy5pbmNsdWRlcyhuYW1lKTtcbn1cblxuLyoqXG4gKiBVbnBhZHMgYSBtZW1vIHN0cmluZywgc28gaXQgcmVtb3ZlcyBudWxscy5cbiAqXG4gKiBVc2VmdWwgd2hlbiBtZW1vIGlzIGZpbGwgdXAgdGhlIGxlbmd0aC4gUmVzdWx0IGlzIGJlY29tZXMgcmVhZGFibGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lbW8gLSB0aGUgc3RyaW5nIHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnBhZE1lbW8obWVtbzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZW5kID0gbWVtby5pbmRleE9mKCdcXHUwMDAwJyk7XG4gIGlmIChlbmQgPCAwKSByZXR1cm4gbWVtbztcbiAgcmV0dXJuIG1lbW8uc2xpY2UoMCwgZW5kKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIG11bHRpc2lnIGFkZHJlc3MgZnJvbSBtdWx0aXBsZSBTVFggcHVibGljIGtleXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwdWJLZXlzIC0gbGlzdCBvZiBwdWJsaWMga2V5cyBhcyBzdHJpbmdzXG4gKiBAcGFyYW0ge0FkZHJlc3NWZXJzaW9ufSBhZGRyZXNzVmVyc2lvbiAtIE1haW5uZXRNdWx0aVNpZywgVGVzdG5ldE11bHRpU2lnXG4gKiBAcGFyYW0ge0FkZHJlc3NIYXNoTW9kZX0gYWRkcmVzc0hhc2hNb2RlIC0gU2VyaWFsaXplUDJTSFxuICogQHBhcmFtIHtudW1iZXJ9IFtzaWduYXR1cmVzUmVxdWlyZWRdIC0gbnVtYmVyIG9mIHNpZ25hdHVyZXMgcmVxdWlyZWQsIGRlZmF1bHQgdmFsdWUgaXRzIDJcbiAqIEByZXR1cm5zIHthZGRyZXNzOiBzdHJpbmcsIGhhc2gxNjA6IHN0cmluZ30gLSBhIG11bHRpc2lnIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNUWEFkZHJlc3NGcm9tUHViS2V5cyhcbiAgcHViS2V5czogc3RyaW5nW10sXG4gIGFkZHJlc3NWZXJzaW9uOiBBZGRyZXNzVmVyc2lvbiA9IEFkZHJlc3NWZXJzaW9uLk1haW5uZXRNdWx0aVNpZyxcbiAgYWRkcmVzc0hhc2hNb2RlOiBBZGRyZXNzSGFzaE1vZGUgPSBBZGRyZXNzSGFzaE1vZGUuU2VyaWFsaXplUDJTSCxcbiAgc2lnbmF0dXJlc1JlcXVpcmVkID0gMlxuKTogeyBhZGRyZXNzOiBzdHJpbmc7IGhhc2gxNjA6IHN0cmluZyB9IHtcbiAgaWYgKHB1YktleXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG51bWJlciBvZiBwdWJsaWMga2V5cycpO1xuICB9XG4gIGlmICghcHViS2V5cy5ldmVyeShpc1ZhbGlkUHVibGljS2V5KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwdWJsaWMga2V5cycpO1xuICB9XG4gIGlmIChzaWduYXR1cmVzUmVxdWlyZWQgPiBwdWJLZXlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVyIG9mIHNpZ25hdHVyZXMgcmVxdWlyZWQgbXVzdCBiZSBsb3dlciBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIFB1YmxpYyBLZXlzJyk7XG4gIH1cblxuICBjb25zdCBzdHhQdWJLZXlzID0gcHViS2V5cy5tYXAoY3JlYXRlU3RhY2tzUHVibGljS2V5KTtcbiAgY29uc3QgYWRkcmVzcyA9IGFkZHJlc3NGcm9tUHVibGljS2V5cyhhZGRyZXNzVmVyc2lvbiwgYWRkcmVzc0hhc2hNb2RlLCBzaWduYXR1cmVzUmVxdWlyZWQsIHN0eFB1YktleXMpO1xuXG4gIHJldHVybiB7IGFkZHJlc3M6IGFkZHJlc3NUb1N0cmluZyhhZGRyZXNzKSwgaGFzaDE2MDogYWRkcmVzcy5oYXNoMTYwIH07XG59XG5cbi8qKlxuICogc2lnbnMgYSBzdHJpbmcgbWVzc2FnZVxuICpcbiAqIEBwYXJhbSBrZXlQYWlyXG4gKiBAcGFyYW0gZGF0YSAgLSBtZXNzYWdlIHRvIGJlIHNpZ25lZFxuICogQHJldHVybnMgc2lnbmVkIG1lc3NhZ2Ugc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduTWVzc2FnZShrZXlQYWlyOiBLZXlQYWlyLCBkYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwcnYgPSBrZXlQYWlyLmdldEtleXMoKS5wcnY7XG4gIGlmIChwcnYpIHtcbiAgICByZXR1cm4gc2lnbldpdGhLZXkoY3JlYXRlU3RhY2tzUHJpdmF0ZUtleShwcnYpLCBkYXRhKS5kYXRhO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgfVxufVxuXG4vKipcbiAqIFZlcmlmaWVzIGEgc2lnbmVkIG1lc3NhZ2VcbiAqXG4gKiBUaGUgc2lnbmF0dXJlIG11c3QgYmUgMTMwIGJ5dGVzIGxvbmcgLS0gc2VlIFJFQ09WRVJBQkxFX0VDRFNBX1NJR19MRU5HVEhfQllURVNcbiAqIGluIEBzdGFja3MvdHJhbnNhY3Rpb25zL3NyYy9jb25zdGFudHMudHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIG1lc3NhZ2UgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgLSBzaWduYXR1cmUgdG8gdmVyaWZ5XG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IC0gcHVibGljIGtleSBhcyBoZXggc3RyaW5nIHVzZWQgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmVcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHZlcmlmaWNhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVNpZ25hdHVyZShtZXNzYWdlOiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nLCBwdWJsaWNLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRQdWJsaWNLZXkocHVibGljS2V5KSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoc2lnbmF0dXJlLmxlbmd0aCAhPT0gMTMwKSByZXR1cm4gZmFsc2U7XG4gIGlmICghYWxsSGV4Q2hhcnMoc2lnbmF0dXJlKSkgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0ludmFsaWQgc2lnbmF0dXJlIGlucHV0IHRvIHZlcmlmeVNpZ25hdHVyZScpO1xuICBpZiAoXy5pc0VtcHR5KG1lc3NhZ2UpKSB0aHJvdyBuZXcgVXRpbHNFcnJvcignQ2Fubm90IHZlcmlmeSBlbXB0eSBtZXNzYWdlcycpO1xuXG4gIC8vIHByb3ZpZGVkIHB1YmxpY0tleSBjYW4gYmUgY29tcHJlc3NlZCBvciB1bmNvbXByZXNzZWRcbiAgY29uc3Qga2V5RW5jb2RpbmcgPSBwdWJsaWNLZXkubGVuZ3RoID09PSA2NiA/IFB1YktleUVuY29kaW5nLkNvbXByZXNzZWQgOiBQdWJLZXlFbmNvZGluZy5VbmNvbXByZXNzZWQ7XG5cbiAgY29uc3QgbWVzc2FnZVNpZyA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUoc2lnbmF0dXJlKTtcblxuICBjb25zdCBmb3VuZEtleSA9IHB1YmxpY0tleUZyb21TaWduYXR1cmUobWVzc2FnZSwgbWVzc2FnZVNpZywga2V5RW5jb2RpbmcpO1xuXG4gIHJldHVybiBmb3VuZEtleSA9PT0gcHVibGljS2V5O1xufVxuXG4vKipcbiAqIFByb2Nlc3MgYWRkcmVzcyBpbnRvIGFkZHJlc3MgYW5kIG1lbW8gaWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgYWRkcmVzcyB0byBwcm9jZXNzXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBvYmplY3QgY29udGFpbmluZyBhZGRyZXNzIGFuZCBtZW1vIGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRyZXNzRGV0YWlscyhhZGRyZXNzOiBzdHJpbmcpOiBBZGRyZXNzRGV0YWlscyB7XG4gIGNvbnN0IGFkZHJlc3NEZXRhaWxzID0gdXJsLnBhcnNlKGFkZHJlc3MpO1xuICBjb25zdCBxdWVyeURldGFpbHMgPSBhZGRyZXNzRGV0YWlscy5xdWVyeSA/IG5ldyBVUkxTZWFyY2hQYXJhbXMoYWRkcmVzc0RldGFpbHMucXVlcnkpIDogdW5kZWZpbmVkO1xuICBjb25zdCBiYXNlQWRkcmVzcyA9IGFkZHJlc3NEZXRhaWxzLnBhdGhuYW1lIGFzIHN0cmluZztcbiAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhiYXNlQWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gIH1cbiAgLy8gYWRkcmVzcyBkb2Vzbid0IGhhdmUgYSBtZW1vIGlkXG4gIGlmIChiYXNlQWRkcmVzcyA9PT0gYWRkcmVzcykge1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiBhZGRyZXNzLFxuICAgICAgbWVtb0lkOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGlmICghcXVlcnlEZXRhaWxzIHx8IF8uaXNOaWwocXVlcnlEZXRhaWxzLmdldCgnbWVtb0lkJykpKSB7XG4gICAgLy8gaWYgdGhlcmUgYXJlIG1vcmUgcHJvcGVydGllcywgdGhlIHF1ZXJ5IGRldGFpbHMgbmVlZCB0byBjb250YWluIHRoZSBtZW1vIGlkIHByb3BlcnR5XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYGludmFsaWQgYWRkcmVzcyB3aXRoIG1lbW8gaWQ6ICR7YWRkcmVzc31gKTtcbiAgfVxuICBjb25zdCBtZW1vSWQgPSBxdWVyeURldGFpbHMuZ2V0KCdtZW1vSWQnKSBhcyBzdHJpbmc7XG4gIGNvbnN0IGludE1lbW9JZCA9IHBhcnNlSW50KG1lbW9JZCwgMTApO1xuICBpZiAoaXNOYU4oaW50TWVtb0lkKSB8fCBpbnRNZW1vSWQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG1lbW8gaWQ6ICR7bWVtb0lkfWApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBiYXNlQWRkcmVzcyxcbiAgICBtZW1vSWQsXG4gIH07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW5kIHJldHVybiBhZGRyZXNzIHdpdGggYXBwZW5kZWQgbWVtbyBpZFxuICpcbiAqIEBwYXJhbSB7QWRkcmVzc0RldGFpbHN9IGFkZHJlc3NEZXRhaWxzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBhZGRyZXNzIHdpdGggbWVtbyBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQWRkcmVzcyh7IGFkZHJlc3MsIG1lbW9JZCB9OiBBZGRyZXNzRGV0YWlscyk6IHN0cmluZyB7XG4gIGlmICghaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gIH1cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKG1lbW9JZCkpIHtcbiAgICBjb25zdCBpbnRNZW1vSWQgPSBwYXJzZUludChtZW1vSWQsIDEwKTtcbiAgICBpZiAoaXNOYU4oaW50TWVtb0lkKSB8fCBpbnRNZW1vSWQgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbWVtbyBpZDogJHttZW1vSWR9YCk7XG4gICAgfVxuICAgIHJldHVybiBgJHthZGRyZXNzfT9tZW1vSWQ9JHttZW1vSWR9YDtcbiAgfVxuICByZXR1cm4gYWRkcmVzcztcbn1cblxuLyoqXG4gKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgYSB2YWxpZCBhZGRyZXNzIHdpdGggbWVtbyBpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIGFkZHJlc3MgaW4gdGhlIGZvcm0gPGFkZHJlc3M+P21lbW9JZD08bWVtb0lkPlxuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaXMgaW5wdXQgaXMgYSB2YWxpZCBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWRkcmVzc1dpdGhQYXltZW50SWQoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSBnZXRBZGRyZXNzRGV0YWlscyhhZGRyZXNzKTtcbiAgICByZXR1cm4gYWRkcmVzcyA9PT0gbm9ybWFsaXplQWRkcmVzcyhhZGRyZXNzRGV0YWlscyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNsYXJpdHkgdmFsdWUgaW5wdXRcbiAqXG4gKiBAcGFyYW0ge0NsYXJpdHlWYWx1ZX0gY3YgY2xhcml0eSB2YWx1ZSBmdW5jdGlvbiBhcmd1bWVudFxuICogQHJldHVybnMge1N0cmluZ30gc3RyaW5naWZpZWQgY2xhcml0eSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5Q3YoY3Y6IENsYXJpdHlWYWx1ZSk6IGFueSB7XG4gIHN3aXRjaCAoY3YudHlwZSkge1xuICAgIGNhc2UgQ2xhcml0eVR5cGUuSW50OlxuICAgIGNhc2UgQ2xhcml0eVR5cGUuVUludDpcbiAgICAgIHJldHVybiB7IHR5cGU6IGN2LnR5cGUsIHZhbHVlOiBjdi52YWx1ZS50b1N0cmluZygpIH07XG4gICAgY2FzZSBDbGFyaXR5VHlwZS5PcHRpb25hbFNvbWU6XG4gICAgICByZXR1cm4geyB0eXBlOiBjdi50eXBlLCB2YWx1ZTogc3RyaW5naWZ5Q3YoY3YudmFsdWUpIH07XG4gICAgY2FzZSBDbGFyaXR5VHlwZS5UdXBsZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IGN2LnR5cGUsXG4gICAgICAgIGRhdGE6IF8ubWFwVmFsdWVzKGN2LmRhdGEsICh2YWx1ZSkgPT4gc3RyaW5naWZ5Q3YodmFsdWUpKSxcbiAgICAgIH07XG4gICAgY2FzZSBDbGFyaXR5VHlwZS5MaXN0OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogY3YudHlwZSxcbiAgICAgICAgbGlzdDogY3YubGlzdC5tYXAoc3RyaW5naWZ5Q3YpLFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGN2O1xuICB9XG59XG5cbi8qKlxuICogUGFyc2UgZnVuY3Rpb25BcmdzIGludG8gc2VuZCBwYXJhbXMgZm9yIHNlbmQtbWFueS1tZW1vIGNvbnRyYWN0IGNhbGxzXG4gKlxuICogQHBhcmFtIHtDbGFyaXR5VmFsdWVbXX0gYXJncyBmdW5jdGlvbkFyZ3MgZnJvbSBhIGNvbnRyYWN0IGNhbGwgcGF5bG9hZFxuICogQHJldHVybnMge1NlbmRQYXJhbXNbXX0gQW4gYXJyYXkgb2Ygc2VuZFBhcmFtc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZnVuY3Rpb25BcmdzVG9TZW5kUGFyYW1zKGFyZ3M6IENsYXJpdHlWYWx1ZVtdKTogU2VuZFBhcmFtc1tdIHtcbiAgaWYgKGFyZ3MubGVuZ3RoICE9PSAxIHx8IGFyZ3NbMF0udHlwZSAhPT0gQ2xhcml0eVR5cGUuTGlzdCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcImZ1bmN0aW9uIGFyZ3MgZG9uJ3QgbWF0Y2ggc2VuZC1tYW55LW1lbW8gdHlwZSBkZWNsYXJhdGlvblwiKTtcbiAgfVxuICByZXR1cm4gYXJnc1swXS5saXN0Lm1hcCgodHVwbGUpID0+IHtcbiAgICBpZiAoXG4gICAgICB0dXBsZS50eXBlICE9PSBDbGFyaXR5VHlwZS5UdXBsZSB8fFxuICAgICAgdHVwbGUuZGF0YS50bz8udHlwZSAhPT0gQ2xhcml0eVR5cGUuUHJpbmNpcGFsU3RhbmRhcmQgfHxcbiAgICAgIHR1cGxlLmRhdGEudXN0eD8udHlwZSAhPT0gQ2xhcml0eVR5cGUuVUludCB8fFxuICAgICAgdHVwbGUuZGF0YS5tZW1vPy50eXBlICE9PSBDbGFyaXR5VHlwZS5CdWZmZXJcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcImZ1bmN0aW9uIGFyZ3MgZG9uJ3QgbWF0Y2ggc2VuZC1tYW55LW1lbW8gdHlwZSBkZWNsYXJhdGlvblwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IGN2VG9TdHJpbmcodHVwbGUuZGF0YS50byksXG4gICAgICBhbW91bnQ6IGN2VG9WYWx1ZSh0dXBsZS5kYXRhLnVzdHgsIHRydWUpLFxuICAgICAgbWVtbzogdHVwbGUuZGF0YS5tZW1vLmJ1ZmZlci50b1N0cmluZygnYXNjaWknKSxcbiAgICB9O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZ1bmN0aW9uQXJnc1RvVG9rZW5UcmFuc2ZlclBhcmFtcyhhcmdzOiBDbGFyaXR5VmFsdWVbXSk6IFRva2VuVHJhbnNmZXJQYXJhbXMge1xuICBpZiAoYXJncy5sZW5ndGggPCAzKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFwiZnVuY3Rpb24gYXJncyBkb24ndCBtYXRjaCB0b2tlbiB0cmFuc2ZlciBkZWNsYXJhdGlvblwiKTtcbiAgfVxuICBpZiAoXG4gICAgYXJnc1swXS50eXBlICE9PSBDbGFyaXR5VHlwZS5VSW50IHx8XG4gICAgYXJnc1sxXS50eXBlICE9PSBDbGFyaXR5VHlwZS5QcmluY2lwYWxTdGFuZGFyZCB8fFxuICAgIGFyZ3NbMl0udHlwZSAhPT0gQ2xhcml0eVR5cGUuUHJpbmNpcGFsU3RhbmRhcmRcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFwiZnVuY3Rpb24gYXJncyBkb24ndCBtYXRjaCB0b2tlbiB0cmFuc2ZlciBkZWNsYXJhdGlvblwiKTtcbiAgfVxuICBjb25zdCB0b2tlblRyYW5zZmVyUGFyYW1zID0ge1xuICAgIGFtb3VudDogY3ZUb1ZhbHVlKGFyZ3NbMF0sIHRydWUpLFxuICAgIHNlbmRlcjogY3ZUb1N0cmluZyhhcmdzWzFdKSxcbiAgICByZWNpcGllbnQ6IGN2VG9TdHJpbmcoYXJnc1syXSksXG4gIH07XG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gNCAmJiBhcmdzWzNdLnR5cGUgPT09IENsYXJpdHlUeXBlLkJ1ZmZlcikge1xuICAgIHRva2VuVHJhbnNmZXJQYXJhbXNbJ21lbW8nXSA9IGFyZ3NbM10uYnVmZmVyLnRvU3RyaW5nKCdhc2NpaScpO1xuICB9XG4gIHJldHVybiB0b2tlblRyYW5zZmVyUGFyYW1zO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZlcnNpb24gb2YgYW4gYWRkcmVzc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBhZGRyZXNzIHRoZSBhZGRyZXNzIHdpdGggb3Igd2l0aG91dCB0aGUgbWVtb0lkXG4gKiBAcmV0dXJucyB7QWRkcmVzc1ZlcnNpb259IEEgbnVtYmVyIHRoYXQgcmVwcmVzZW50IHRoZSBBZGRyZXNzIFZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3NWZXJzaW9uKGFkZHJlc3M6IHN0cmluZyk6IEFkZHJlc3NWZXJzaW9uIHtcbiAgY29uc3QgYmFzZUFkZHJlc3MgPSBnZXRBZGRyZXNzRGV0YWlscyhhZGRyZXNzKS5hZGRyZXNzO1xuICByZXR1cm4gY3JlYXRlQWRkcmVzcyhiYXNlQWRkcmVzcykudmVyc2lvbjtcbn1cblxuLyoqXG4gKiBFbmNvZGUgYSBTdGFja3MgKnN0YW5kYXJkKiBwcmluY2lwYWwgYXMgdGhlIENsYXJpdHkgU0lQLTAwNSBoZXggd2lyZSBmb3JtYXRcbiAqIOKAlCBhIDIyLWJ5dGUgYmxvYjpcbiAqXG4gKiAgICAgYDB4MDVgIHx8IHZlcnNpb24gKDEgYnl0ZSkgfHwgaGFzaDE2MCAoMjAgYnl0ZXMpXG4gKlxuICogQ29udHJhY3QgcHJpbmNpcGFscyAoYDxhZGRyZXNzPi48Y29udHJhY3QtbmFtZT5gKSBhbmQgYWRkcmVzc2VzIHdpdGggYVxuICogYD9tZW1vSWQ94oCmYCBzdWZmaXggYXJlIHJlamVjdGVkLiBUaGUgQ2xhcml0eSB0eXBlIGJ5dGUgKGAweDA1YCkgaXMgc2V0XG4gKiBieSBgc2VyaWFsaXplQ1ZgIGZyb20gYEBzdGFja3MvdHJhbnNhY3Rpb25zYCwgc28gdGhpcyBoZWxwZXIgZG9lcyBub3RcbiAqIGhhbmQtcm9sbCBhbnkgYnl0ZSBjb25jYXRlbmF0aW9uLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcmluY2lwYWwgYSBTdGFja3Mgc3RhbmRhcmQgcHJpbmNpcGFsIChlLmcuIGBTUOKApmAgLyBgU1TigKZgKVxuICogQHJldHVybnMge3N0cmluZ30gaGV4LWVuY29kZWQgMjItYnl0ZSBDbGFyaXR5IHN0YW5kYXJkIHByaW5jaXBhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5jb2RlZFByaW5jaXBhbChwcmluY2lwYWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwcmluY2lwYWwuaW5jbHVkZXMoJz8nKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBwcmluY2lwYWwgbXVzdCBub3QgaW5jbHVkZSBhIHF1ZXJ5IHN0cmluZzogJHtwcmluY2lwYWx9YCk7XG4gIH1cbiAgaWYgKHByaW5jaXBhbC5pbmNsdWRlcygnLicpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYGNvbnRyYWN0IHByaW5jaXBhbHMgYXJlIG5vdCBzdXBwb3J0ZWQsIGV4cGVjdGVkIGEgc3RhbmRhcmQgcHJpbmNpcGFsOiAke3ByaW5jaXBhbH1gKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRBZGRyZXNzKHByaW5jaXBhbCkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBTdGFja3MgYWRkcmVzcyBpbiBwcmluY2lwYWw6ICR7cHJpbmNpcGFsfWApO1xuICB9XG4gIHJldHVybiBzZXJpYWxpemVDVihzdGFuZGFyZFByaW5jaXBhbENWKHByaW5jaXBhbCkpLnRvU3RyaW5nKCdoZXgnKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgU1RYIHB1YiBrZXkgZnJvbSBhbiB4cHViXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHhwdWIgYW4geHB1YlxuICogQHJldHVybnMge1N0cmluZ30gYSBjb21wcmVzc2VkIFNUWCBwdWIga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4cHViVG9TVFhQdWJrZXkoeHB1Yjogc3RyaW5nLCBjb21wcmVzc2VkID0gdHJ1ZSk6IHN0cmluZyB7XG4gIHJldHVybiBuZXcgS2V5UGFpcih7IHB1YjogeHB1YiB9KS5nZXRLZXlzKGNvbXByZXNzZWQpLnB1Yjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIGFkZHJlc3MgcG9ydGlvbiBvZiBhbiBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFkZHJlc3MgLSBhbiBhZGRyZXNzXG4gKiBAcmV0dXJucyB7U3RyaW5nfSAtIHRoZSBiYXNlIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2VBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGFkZHJlc3NEZXRhaWxzID0gZ2V0QWRkcmVzc0RldGFpbHMoYWRkcmVzcyk7XG4gIHJldHVybiBhZGRyZXNzRGV0YWlscy5hZGRyZXNzO1xufVxuXG4vKipcbiAqIENvbXBhcmVzIGFuIGFkZHJlc3MgdG8gdGhlIGJhc2UgYWRkcmVzcyB0byBjaGVjayBpZiBtYXRjaHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFkZHJlc3MgLSBhbiBhZGRyZXNzXG4gKiBAcGFyYW0ge1N0cmluZ30gYmFzZUFkZHJlc3MgLSBhIGJhc2UgYWRkcmVzc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVCYXNlQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcsIGJhc2VBZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFpc1ZhbGlkQWRkcmVzc1dpdGhQYXltZW50SWQoYWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gIH1cbiAgcmV0dXJuIGdldEJhc2VBZGRyZXNzKGFkZHJlc3MpID09PSBnZXRCYXNlQWRkcmVzcyhiYXNlQWRkcmVzcyk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZ2V0IHRva2VuTmFtZSBmcm9tIGxpc3Qgb2Ygc2lwMTAgdG9rZW5zIHVzaW5nIGNvbnRyYWN0IGRldGFpbHNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gY29udHJhY3RBZGRyZXNzXG4gKiBAcGFyYW0ge1N0cmluZ30gY29udHJhY3ROYW1lXG4gKiBAcmV0dXJucyB7U3RyaW5nfFVuZGVmaW5lZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRUb2tlbk5hbWVCeUNvbnRyYWN0KGNvbnRyYWN0QWRkcmVzczogc3RyaW5nLCBjb250cmFjdE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHtcbiAgICBjb25zdCB0b2tlbk5hbWUgPSBjb2luc1xuICAgICAgLmZpbHRlcigoY29pbikgPT4gY29pbiBpbnN0YW5jZW9mIFNpcDEwVG9rZW4gJiYgY29pbi5hc3NldElkLmluY2x1ZGVzKGAke2NvbnRyYWN0QWRkcmVzc30uJHtjb250cmFjdE5hbWV9YCkpXG4gICAgICAubWFwKChjb2luKSA9PiBjb2luLm5hbWUpO1xuICAgIHJldHVybiB0b2tlbk5hbWUgPyB0b2tlbk5hbWVbMF0gOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0byBnZXQgY29udHJhY3RUb2tlbk5hbWUgZnJvbSBsaXN0IG9mIHNpcDEwIHRva2VucyB1c2luZyBjb250cmFjdCBkZXRhaWxzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGNvbnRyYWN0QWRkcmVzc1xuICogQHBhcmFtIHtTdHJpbmd9IGNvbnRyYWN0TmFtZVxuICogQHJldHVybnMge1N0cmluZ3xVbmRlZmluZWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ29udHJhY3RUb2tlbk5hbWVVc2luZ0NvbnRyYWN0KGNvbnRyYWN0QWRkcmVzczogc3RyaW5nLCBjb250cmFjdE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHtcbiAgICBjb25zdCBzaXAxMFRva2VuID0gY29pbnNcbiAgICAgIC5maWx0ZXIoKGNvaW4pID0+IGNvaW4gaW5zdGFuY2VvZiBTaXAxMFRva2VuICYmIGNvaW4uYXNzZXRJZC5pbmNsdWRlcyhgJHtjb250cmFjdEFkZHJlc3N9LiR7Y29udHJhY3ROYW1lfWApKVxuICAgICAgLm1hcCgoY29pbikgPT4gY29pbiBhcyBTaXAxMFRva2VuKTtcbiAgICByZXR1cm4gc2lwMTBUb2tlbiA/IHNpcDEwVG9rZW5bMF0uYXNzZXRJZC5zcGxpdCgnOjonKVsxXSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGdldCBhZGRyZXNzIGFuZCBtZW1vIGRldGFpbHMgZnJvbSBhZGRyZXNzIGlucHV0XG4gKlxuICogQHBhcmFtIGFkZHJlc3NcbiAqIEByZXR1cm5zIHtBZGRyZXNzRGV0YWlsc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbW9JZEFuZEJhc2VBZGRyZXNzRnJvbUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogQWRkcmVzc0RldGFpbHMge1xuICBjb25zdCBbYmFzZUFkZHJlc3MsIHF1ZXJ5U3RyaW5nXSA9IGFkZHJlc3Muc3BsaXQoJz8nKTtcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gIGNvbnN0IG1lbW9JZCA9IHBhcmFtcy5nZXQoJ21lbW9JZCcpO1xuXG4gIHJldHVybiB7XG4gICAgYWRkcmVzczogYmFzZUFkZHJlc3MsXG4gICAgbWVtb0lkOiBtZW1vSWQgPyBtZW1vSWQgOiB1bmRlZmluZWQsXG4gIH07XG59XG4iXX0=
|
|
611
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNENBLDBEQUVDO0FBUUQsMENBRUM7QUE0QkQsZ0RBVUM7QUFRRCxzQ0FHQztBQVFELHdDQUVDO0FBWUQsb0RBTUM7QUFZRCw0Q0FzQkM7QUFhRCw4Q0FRQztBQWtCRCxzREFZQztBQVFELGtDQVFDO0FBU0Qsd0RBTUM7QUFRRCxrRUFFQztBQVVELDhCQUlDO0FBV0QsNERBb0JDO0FBU0Qsa0NBT0M7QUFhRCwwQ0FjQztBQVFELDhDQTZCQztBQVFELDRDQVlDO0FBUUQsa0VBT0M7QUFRRCxrQ0FvQkM7QUFRRCw0REFtQkM7QUFFRCw4RUFvQkM7QUFRRCw4Q0FHQztBQWdCRCxrREFXQztBQVFELDBDQUVDO0FBUUQsd0NBR0M7QUFTRCw4Q0FLQztBQVNELDBEQU9DO0FBU0QsZ0ZBT0M7QUFRRCxnRkFTQztBQTFtQkQseUNBQTJCO0FBQzNCLGdFQUFxQztBQUNyQyxxREFBOEQ7QUFDOUQsdURBMEI4QjtBQUM5Qix1REFBb0Q7QUFDcEQsMENBQTRCO0FBQzVCLG1EQUFtSDtBQUVuSCx3QkFBNEI7QUFDNUIsaURBQTZGO0FBQzdGLDJDQUE0RDtBQUU1RDs7Ozs7R0FLRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLElBQVk7SUFDbEQsT0FBTyxJQUFBLDZCQUFXLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLEdBQVc7SUFDekMsT0FBTyxJQUFBLGdDQUFjLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLDJCQUEyQixDQUNsQyxhQUFxQixFQUNyQixRQUF5QixFQUN6QixrQkFBc0M7SUFFdEMsSUFBSSxhQUFhLENBQUMs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QztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGtDQUFrQyxDQUFDLGVBQXVCLEVBQUUsWUFBb0I7SUFDOUYsQ0FBQztRQUNDLE1BQU0sVUFBVSxHQUFHLGVBQUs7YUFDckIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksb0JBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLGVBQWUsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFDO2FBQzNHLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBa0IsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZFLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixrQ0FBa0MsQ0FBQyxPQUFlO0lBQ2hFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXBDLE9BQU87UUFDTCxPQUFPLEVBQUUsV0FBVztRQUNwQixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVM7S0FDcEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IGJ1ZmZlclRvSGV4LCBzdHJpcEhleFByZWZpeCB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5pbXBvcnQge1xuICBhZGRyZXNzRnJvbVB1YmxpY0tleXMsXG4gIGFkZHJlc3NGcm9tVmVyc2lvbkhhc2gsXG4gIEFkZHJlc3NIYXNoTW9kZSxcbiAgYWRkcmVzc0hhc2hNb2RlVG9WZXJzaW9uLFxuICBhZGRyZXNzVG9TdHJpbmcsXG4gIEFkZHJlc3NWZXJzaW9uLFxuICBCdWZmZXJSZWFkZXIsXG4gIENsYXJpdHlUeXBlLFxuICBDbGFyaXR5VmFsdWUsXG4gIGNyZWF0ZUFkZHJlc3MsXG4gIGNyZWF0ZU1lbW9TdHJpbmcsXG4gIGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUsXG4gIGNyZWF0ZVN0YWNrc1ByaXZhdGVLZXksXG4gIGNyZWF0ZVN0YWNrc1B1YmxpY0tleSxcbiAgY3ZUb1N0cmluZyxcbiAgY3ZUb1ZhbHVlLFxuICBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uLFxuICBQdWJLZXlFbmNvZGluZyxcbiAgcHVibGljS2V5RnJvbVNpZ25hdHVyZSxcbiAgc2VyaWFsaXplQ1YsXG4gIHNpZ25XaXRoS2V5LFxuICBTdGFja3NUcmFuc2FjdGlvbixcbiAgc3RhbmRhcmRQcmluY2lwYWxDVixcbiAgVHJhbnNhY3Rpb25WZXJzaW9uLFxuICB2YWxpZGF0ZVN0YWNrc0FkZHJlc3MsXG59IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHNlY3AyNTZrMSB9IGZyb20gJ0Bub2JsZS9jdXJ2ZXMvc2VjcDI1NmsxJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBpc1ZhbGlkWHBydiwgaXNWYWxpZFhwdWIsIFNpZ25pbmdFcnJvciwgVXRpbHNFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEFkZHJlc3NEZXRhaWxzLCBTZW5kUGFyYW1zLCBUb2tlblRyYW5zZmVyUGFyYW1zIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBjb2lucywgU2lwMTBUb2tlbiwgU3RhY2tzTmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmsgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFZBTElEX0NPTlRSQUNUX0ZVTkNUSU9OX05BTUVTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIEVuY29kZXMgYSBidWZmZXIgYXMgYSBcIjB4XCIgcHJlZml4ZWQgbG93ZXItY2FzZSBoZXggc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmIC0gYSBidWZmZXIgd2l0aCBhIGhleGFkZWNpbWFsIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgaGV4YWRlY2ltYWwgc3RyaW5nIHByZWZpeGVkIHdpdGggXCIweFwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb0hleFByZWZpeFN0cmluZyhidWZmOiBCdWZmZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYnVmZmVyVG9IZXgoYnVmZik7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBcIjB4XCIgcHJlZml4IGZyb20gdGhlIGdpdmVuIHN0cmluZywgaWYgcHJlc2VudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGV4IC0gYSBoZXhhZGVjaW1hbCBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleGFkZWNpbWFsIHN0cmluZyB3aXRob3V0IGEgbGVhZGluZyBcIjB4XCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUhleFByZWZpeChoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHJpcEhleFByZWZpeChoZXgpO1xufVxuXG4vKipcbiAqIEdldCBzdGFja3MgYWRkcmVzcyBmcm9tIHB1YmxpYyBrZXkgaGFzaFxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBwdWJsaWNLZXlIYXNoIC0gaGFzaCBvZiBwdWJsaWMga2V5XG4gKiBAcGFyYW0ge0FkZHJlc3NIYXNoTW9kZX0gaGFzaE1vZGUgLSBoYXNoIG1vZGVcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25WZXJzaW9ufSB0cmFuc2FjdGlvblZlcnNpb24gLSB0eCB2ZXJzaW9uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBzdGFja3MgYWRkcmVzc1xuICovXG5mdW5jdGlvbiBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleUhhc2goXG4gIHB1YmxpY0tleUhhc2g6IEJ1ZmZlcixcbiAgaGFzaE1vZGU6IEFkZHJlc3NIYXNoTW9kZSxcbiAgdHJhbnNhY3Rpb25WZXJzaW9uOiBUcmFuc2FjdGlvblZlcnNpb25cbik6IHN0cmluZyB7XG4gIGlmIChwdWJsaWNLZXlIYXNoLmxlbmd0aCAhPT0gMjApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIDIwLWJ5dGUgcHVia2V5aGFzaCcpO1xuICB9XG5cbiAgY29uc3QgYWRkclZlciA9IGFkZHJlc3NIYXNoTW9kZVRvVmVyc2lvbihoYXNoTW9kZSwgdHJhbnNhY3Rpb25WZXJzaW9uKTtcbiAgY29uc3QgYWRkciA9IGFkZHJlc3NGcm9tVmVyc2lvbkhhc2goYWRkclZlciwgcHVibGljS2V5SGFzaC50b1N0cmluZygnaGV4JykpO1xuICBjb25zdCBhZGRyU3RyaW5nID0gYWRkcmVzc1RvU3RyaW5nKGFkZHIpO1xuICByZXR1cm4gYWRkclN0cmluZztcbn1cblxuLyoqXG4gKiBAcGFyYW0gdHhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR4U2VuZGVyQWRkcmVzcyh0eDogU3RhY2tzVHJhbnNhY3Rpb24pOiBzdHJpbmcge1xuICBpZiAodHguYXV0aC5zcGVuZGluZ0NvbmRpdGlvbiAhPT0gbnVsbCAmJiB0eC5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBzcGVuZGluZ0NvbmRpdGlvbiA9IHR4LmF1dGguc3BlbmRpbmdDb25kaXRpb247XG4gICAgY29uc3QgdHhTZW5kZXIgPSBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleUhhc2goXG4gICAgICBCdWZmZXIuZnJvbShzcGVuZGluZ0NvbmRpdGlvbi5zaWduZXIsICdoZXgnKSxcbiAgICAgIHNwZW5kaW5nQ29uZGl0aW9uLmhhc2hNb2RlIGFzIG51bWJlcixcbiAgICAgIHR4LnZlcnNpb25cbiAgICApO1xuICAgIHJldHVybiB0eFNlbmRlcjtcbiAgfSBlbHNlIHRocm93IG5ldyBFcnJvcignc3BlbmRpbmdDb25kaXRpb24gc2hvdWxkIG5vdCBiZSBudWxsJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgYW1vdW50IG51bWJlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgLSB0aGUgc3RyaW5nIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBbW91bnQoYW1vdW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgYmlnTnVtYmVyQW1vdW50ID0gbmV3IEJpZ051bWJlcihhbW91bnQpO1xuICByZXR1cm4gYmlnTnVtYmVyQW1vdW50LmlzSW50ZWdlcigpICYmIGJpZ051bWJlckFtb3VudC5pc0dyZWF0ZXJUaGFuT3JFcXVhbFRvKDApO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHByb3RvY29sIGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIHRoZSBhZGRyZXNzIHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbGlkYXRlU3RhY2tzQWRkcmVzcyhhZGRyZXNzKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBwcm90b2NvbCB0cmFuc2FjdGlvbiBpZCBvciBub3QuXG4gKlxuICogQSB2YWxpZCB0cmFuc2FjdGlvbiBpZCBpcyBhIFNIQS01MTIvMjU2IGhhc2ggb2YgYSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uOyBzZWVcbiAqIHRoZSB0eGlkRnJvbURhdGEgZnVuY3Rpb24gaW4gQHN0YWNrcy90cmFuc2FjdGlvbjpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibG9ja3N0YWNrL3N0YWNrcy5qcy9ibG9iL21hc3Rlci9wYWNrYWdlcy90cmFuc2FjdGlvbnMvc3JjL3V0aWxzLnRzI0w5N1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eElkIC0gdGhlIHRyYW5zYWN0aW9uIGlkIHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHR4SWQubGVuZ3RoICE9PSA2NCAmJiB0eElkLmxlbmd0aCAhPT0gNjYpIHJldHVybiBmYWxzZTtcbiAgY29uc3Qgbm9QcmVmaXggPSByZW1vdmVIZXhQcmVmaXgodHhJZCk7XG4gIGlmIChub1ByZWZpeC5sZW5ndGggIT09IDY0KSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIGFsbEhleENoYXJzKG5vUHJlZml4KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBwcm90b2NvbCBwdWJsaWMga2V5IG9yXG4gKiBleHRlbmRlZCBwdWJsaWMga2V5LlxuICpcbiAqIFRoZSBrZXkgZm9ybWF0IGlzIGRvY3VtZW50ZWQgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja3Nnb3Yvc2lwcy9ibG9iL21haW4vc2lwcy9zaXAtMDA1L3NpcC0wMDUtYmxvY2tzLWFuZC10cmFuc2FjdGlvbnMubWQjdHJhbnNhY3Rpb24tYXV0aG9yaXphdGlvblxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgLSB0aGUgIHB1YmxpYyBrZXkgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzVmFsaWRYcHViKHB1YikpIHJldHVybiB0cnVlO1xuXG4gIGlmIChwdWIubGVuZ3RoICE9PSA2NiAmJiBwdWIubGVuZ3RoICE9PSAxMzApIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBmaXJzdEJ5dGUgPSBwdWIuc2xpY2UoMCwgMik7XG5cbiAgLy8gdW5jb21wcmVzc2VkIHB1YmxpYyBrZXlcbiAgaWYgKHB1Yi5sZW5ndGggPT09IDEzMCAmJiBmaXJzdEJ5dGUgIT09ICcwNCcpIHJldHVybiBmYWxzZTtcblxuICAvLyBjb21wcmVzc2VkIHB1YmxpYyBrZXlcbiAgaWYgKHB1Yi5sZW5ndGggPT09IDY2ICYmIGZpcnN0Qnl0ZSAhPT0gJzAyJyAmJiBmaXJzdEJ5dGUgIT09ICcwMycpIHJldHVybiBmYWxzZTtcblxuICBpZiAoIWFsbEhleENoYXJzKHB1YikpIHJldHVybiBmYWxzZTtcblxuICAvLyB2YWxpZGF0ZSB0aGUgcHVibGljIGtleVxuICB0cnkge1xuICAgIHNlY3AyNTZrMS5Qcm9qZWN0aXZlUG9pbnQuZnJvbUhleChwdWIpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgcHJvdG9jb2wgcHJpdmF0ZSBrZXksIG9yIGV4dGVuZGVkXG4gKiBwcml2YXRlIGtleS5cbiAqXG4gKiBUaGUgcHJvdG9jb2wga2V5IGZvcm1hdCBpcyBkZXNjcmliZWQgaW4gdGhlIEBzdGFja3MvdHJhbnNhY3Rpb25zIG5wbSBwYWNrYWdlLCBpbiB0aGVcbiAqIGNyZWF0ZVN0YWNrc1ByaXZhdGVLZXkgZnVuY3Rpb246XG4gKiBodHRwczovL2dpdGh1Yi5jb20vYmxvY2tzdGFjay9zdGFja3MuanMvYmxvYi9tYXN0ZXIvcGFja2FnZXMvdHJhbnNhY3Rpb25zL3NyYy9rZXlzLnRzI0wxMjVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJ2IC0gdGhlIHByaXZhdGUga2V5IChvciBleHRlbmRlZCBwcml2YXRlIGtleSkgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcml2YXRlS2V5KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChpc1ZhbGlkWHBydihwcnYpKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAocHJ2Lmxlbmd0aCAhPT0gNjQgJiYgcHJ2Lmxlbmd0aCAhPT0gNjYpIHJldHVybiBmYWxzZTtcblxuICBpZiAocHJ2Lmxlbmd0aCA9PT0gNjYgJiYgcHJ2LnNsaWNlKDY0KSAhPT0gJzAxJykgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBhbGxIZXhDaGFycyhwcnYpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIGNvbXBvc2VkIG9mIGhleCBjaGFycyBvbmx5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1heWJlIC0gdGhlICBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gYWxsSGV4Q2hhcnMobWF5YmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL14oWzAtOWEtZl0pKyQvaS50ZXN0KG1heWJlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgcmF3IHRyYW5zYWN0aW9uIGNhbiBiZSBkZXNlcmlhbGl6ZWRcbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHJhd1RyYW5zYWN0aW9uIC0gdHJhbnNhY3Rpb24gaW4gcmF3IGhleCBmb3JtYXRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgaWYgKHR5cGVvZiByYXdUcmFuc2FjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRlc2VyaWFsaXplVHJhbnNhY3Rpb24oQnVmZmVyUmVhZGVyLmZyb21CdWZmZXIoQnVmZmVyLmZyb20ocmVtb3ZlSGV4UHJlZml4KHJhd1RyYW5zYWN0aW9uKSwgJ2hleCcpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtZW1vIHN0cmluZyBpcyB2YWxpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZW1vIC0gdGhlIHN0cmluZyB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lbW8obWVtbzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY3JlYXRlTWVtb1N0cmluZyhtZW1vKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBmb3IgdmFsaWQgY29udHJhY3QgYWRkcmVzc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyIC0gY29udHJhY3QgZGVwbG95ZXIgYWRkcmVzc1xuICogQHBhcmFtIHtCaXRnb1N0YWNrc05ldHdvcmt9IG5ldHdvcmsgLSBuZXR3b3JrIG9iamVjdFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQ29udHJhY3RBZGRyZXNzKGFkZHI6IHN0cmluZywgbmV0d29yazogQml0Z29TdGFja3NOZXR3b3JrKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgYWRkciA9PT0gbmV0d29yay5zdGFraW5nQ29udHJhY3RBZGRyZXNzIHx8XG4gICAgYWRkciA9PT0gbmV0d29yay5zZW5kbWFueW1lbW9Db250cmFjdEFkZHJlc3MgfHxcbiAgICBhZGRyID09PSBuZXR3b3JrLnNidGNXaXRoZHJhd2FsQ29udHJhY3RBZGRyZXNzXG4gICk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIG5hbWUgaXMgb25lIG9mIHZhbGlkIGNvbnRyYWN0IG5hbWVzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBmdW5jdGlvbiBuYW1lXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZENvbnRyYWN0RnVuY3Rpb25OYW1lKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gVkFMSURfQ09OVFJBQ1RfRlVOQ1RJT05fTkFNRVMuaW5jbHVkZXMobmFtZSk7XG59XG5cbi8qKlxuICogVW5wYWRzIGEgbWVtbyBzdHJpbmcsIHNvIGl0IHJlbW92ZXMgbnVsbHMuXG4gKlxuICogVXNlZnVsIHdoZW4gbWVtbyBpcyBmaWxsIHVwIHRoZSBsZW5ndGguIFJlc3VsdCBpcyBiZWNvbWVzIHJlYWRhYmxlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZW1vIC0gdGhlIHN0cmluZyB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5wYWRNZW1vKG1lbW86IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGVuZCA9IG1lbW8uaW5kZXhPZignXFx1MDAwMCcpO1xuICBpZiAoZW5kIDwgMCkgcmV0dXJuIG1lbW87XG4gIHJldHVybiBtZW1vLnNsaWNlKDAsIGVuZCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBtdWx0aXNpZyBhZGRyZXNzIGZyb20gbXVsdGlwbGUgU1RYIHB1YmxpYyBrZXlzXG4gKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHViS2V5cyAtIGxpc3Qgb2YgcHVibGljIGtleXMgYXMgc3RyaW5nc1xuICogQHBhcmFtIHtBZGRyZXNzVmVyc2lvbn0gYWRkcmVzc1ZlcnNpb24gLSBNYWlubmV0TXVsdGlTaWcsIFRlc3RuZXRNdWx0aVNpZ1xuICogQHBhcmFtIHtBZGRyZXNzSGFzaE1vZGV9IGFkZHJlc3NIYXNoTW9kZSAtIFNlcmlhbGl6ZVAyU0hcbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2lnbmF0dXJlc1JlcXVpcmVkXSAtIG51bWJlciBvZiBzaWduYXR1cmVzIHJlcXVpcmVkLCBkZWZhdWx0IHZhbHVlIGl0cyAyXG4gKiBAcmV0dXJucyB7YWRkcmVzczogc3RyaW5nLCBoYXNoMTYwOiBzdHJpbmd9IC0gYSBtdWx0aXNpZyBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTVFhBZGRyZXNzRnJvbVB1YktleXMoXG4gIHB1YktleXM6IHN0cmluZ1tdLFxuICBhZGRyZXNzVmVyc2lvbjogQWRkcmVzc1ZlcnNpb24gPSBBZGRyZXNzVmVyc2lvbi5NYWlubmV0TXVsdGlTaWcsXG4gIGFkZHJlc3NIYXNoTW9kZTogQWRkcmVzc0hhc2hNb2RlID0gQWRkcmVzc0hhc2hNb2RlLlNlcmlhbGl6ZVAyU0gsXG4gIHNpZ25hdHVyZXNSZXF1aXJlZCA9IDJcbik6IHsgYWRkcmVzczogc3RyaW5nOyBoYXNoMTYwOiBzdHJpbmcgfSB7XG4gIGlmIChwdWJLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBudW1iZXIgb2YgcHVibGljIGtleXMnKTtcbiAgfVxuICBpZiAoIXB1YktleXMuZXZlcnkoaXNWYWxpZFB1YmxpY0tleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHVibGljIGtleXMnKTtcbiAgfVxuICBpZiAoc2lnbmF0dXJlc1JlcXVpcmVkID4gcHViS2V5cy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ051bWJlciBvZiBzaWduYXR1cmVzIHJlcXVpcmVkIG11c3QgYmUgbG93ZXIgb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBQdWJsaWMgS2V5cycpO1xuICB9XG5cbiAgY29uc3Qgc3R4UHViS2V5cyA9IHB1YktleXMubWFwKGNyZWF0ZVN0YWNrc1B1YmxpY0tleSk7XG4gIGNvbnN0IGFkZHJlc3MgPSBhZGRyZXNzRnJvbVB1YmxpY0tleXMoYWRkcmVzc1ZlcnNpb24sIGFkZHJlc3NIYXNoTW9kZSwgc2lnbmF0dXJlc1JlcXVpcmVkLCBzdHhQdWJLZXlzKTtcblxuICByZXR1cm4geyBhZGRyZXNzOiBhZGRyZXNzVG9TdHJpbmcoYWRkcmVzcyksIGhhc2gxNjA6IGFkZHJlc3MuaGFzaDE2MCB9O1xufVxuXG4vKipcbiAqIHNpZ25zIGEgc3RyaW5nIG1lc3NhZ2VcbiAqXG4gKiBAcGFyYW0ga2V5UGFpclxuICogQHBhcmFtIGRhdGEgIC0gbWVzc2FnZSB0byBiZSBzaWduZWRcbiAqIEByZXR1cm5zIHNpZ25lZCBtZXNzYWdlIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbk1lc3NhZ2Uoa2V5UGFpcjogS2V5UGFpciwgZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcHJ2ID0ga2V5UGFpci5nZXRLZXlzKCkucHJ2O1xuICBpZiAocHJ2KSB7XG4gICAgcmV0dXJuIHNpZ25XaXRoS2V5KGNyZWF0ZVN0YWNrc1ByaXZhdGVLZXkocHJ2KSwgQnVmZmVyLmZyb20oZGF0YSkudG9TdHJpbmcoJ2hleCcpKS5kYXRhO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgfVxufVxuXG4vKipcbiAqIFZlcmlmaWVzIGEgc2lnbmVkIG1lc3NhZ2VcbiAqXG4gKiBUaGUgc2lnbmF0dXJlIG11c3QgYmUgMTMwIGJ5dGVzIGxvbmcgLS0gc2VlIFJFQ09WRVJBQkxFX0VDRFNBX1NJR19MRU5HVEhfQllURVNcbiAqIGluIEBzdGFja3MvdHJhbnNhY3Rpb25zL3NyYy9jb25zdGFudHMudHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIG1lc3NhZ2UgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgLSBzaWduYXR1cmUgdG8gdmVyaWZ5XG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IC0gcHVibGljIGtleSBhcyBoZXggc3RyaW5nIHVzZWQgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmVcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHZlcmlmaWNhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVNpZ25hdHVyZShtZXNzYWdlOiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nLCBwdWJsaWNLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRQdWJsaWNLZXkocHVibGljS2V5KSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoc2lnbmF0dXJlLmxlbmd0aCAhPT0gMTMwKSByZXR1cm4gZmFsc2U7XG4gIGlmICghYWxsSGV4Q2hhcnMoc2lnbmF0dXJlKSkgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0ludmFsaWQgc2lnbmF0dXJlIGlucHV0IHRvIHZlcmlmeVNpZ25hdHVyZScpO1xuICBpZiAoXy5pc0VtcHR5KG1lc3NhZ2UpKSB0aHJvdyBuZXcgVXRpbHNFcnJvcignQ2Fubm90IHZlcmlmeSBlbXB0eSBtZXNzYWdlcycpO1xuXG4gIC8vIHByb3ZpZGVkIHB1YmxpY0tleSBjYW4gYmUgY29tcHJlc3NlZCBvciB1bmNvbXByZXNzZWRcbiAgY29uc3Qga2V5RW5jb2RpbmcgPSBwdWJsaWNLZXkubGVuZ3RoID09PSA2NiA/IFB1YktleUVuY29kaW5nLkNvbXByZXNzZWQgOiBQdWJLZXlFbmNvZGluZy5VbmNvbXByZXNzZWQ7XG5cbiAgY29uc3QgbWVzc2FnZVNpZyA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUoc2lnbmF0dXJlKTtcblxuICBjb25zdCBmb3VuZEtleSA9IHB1YmxpY0tleUZyb21TaWduYXR1cmUoQnVmZmVyLmZyb20obWVzc2FnZSkudG9TdHJpbmcoJ2hleCcpLCBtZXNzYWdlU2lnLCBrZXlFbmNvZGluZyk7XG5cbiAgcmV0dXJuIGZvdW5kS2V5ID09PSBwdWJsaWNLZXk7XG59XG5cbi8qKlxuICogUHJvY2VzcyBhZGRyZXNzIGludG8gYWRkcmVzcyBhbmQgbWVtbyBpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIHRoZSBhZGRyZXNzIHRvIHByb2Nlc3NcbiAqIEByZXR1cm5zIHtPYmplY3R9IG9iamVjdCBjb250YWluaW5nIGFkZHJlc3MgYW5kIG1lbW8gaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3M6IHN0cmluZyk6IEFkZHJlc3NEZXRhaWxzIHtcbiAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSB1cmwucGFyc2UoYWRkcmVzcyk7XG4gIGNvbnN0IHF1ZXJ5RGV0YWlscyA9IGFkZHJlc3NEZXRhaWxzLnF1ZXJ5ID8gbmV3IFVSTFNlYXJjaFBhcmFtcyhhZGRyZXNzRGV0YWlscy5xdWVyeSkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJhc2VBZGRyZXNzID0gYWRkcmVzc0RldGFpbHMucGF0aG5hbWUgYXMgc3RyaW5nO1xuICBpZiAoIWlzVmFsaWRBZGRyZXNzKGJhc2VBZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgfVxuICAvLyBhZGRyZXNzIGRvZXNuJ3QgaGF2ZSBhIG1lbW8gaWRcbiAgaWYgKGJhc2VBZGRyZXNzID09PSBhZGRyZXNzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IGFkZHJlc3MsXG4gICAgICBtZW1vSWQ6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFxdWVyeURldGFpbHMgfHwgXy5pc05pbChxdWVyeURldGFpbHMuZ2V0KCdtZW1vSWQnKSkpIHtcbiAgICAvLyBpZiB0aGVyZSBhcmUgbW9yZSBwcm9wZXJ0aWVzLCB0aGUgcXVlcnkgZGV0YWlscyBuZWVkIHRvIGNvbnRhaW4gdGhlIG1lbW8gaWQgcHJvcGVydHlcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzIHdpdGggbWVtbyBpZDogJHthZGRyZXNzfWApO1xuICB9XG4gIGNvbnN0IG1lbW9JZCA9IHF1ZXJ5RGV0YWlscy5nZXQoJ21lbW9JZCcpIGFzIHN0cmluZztcbiAgY29uc3QgaW50TWVtb0lkID0gcGFyc2VJbnQobWVtb0lkLCAxMCk7XG4gIGlmIChpc05hTihpbnRNZW1vSWQpIHx8IGludE1lbW9JZCA8IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbWVtbyBpZDogJHttZW1vSWR9YCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFkZHJlc3M6IGJhc2VBZGRyZXNzLFxuICAgIG1lbW9JZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbmQgcmV0dXJuIGFkZHJlc3Mgd2l0aCBhcHBlbmRlZCBtZW1vIGlkXG4gKlxuICogQHBhcmFtIHtBZGRyZXNzRGV0YWlsc30gYWRkcmVzc0RldGFpbHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IGFkZHJlc3Mgd2l0aCBtZW1vIGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBZGRyZXNzKHsgYWRkcmVzcywgbWVtb0lkIH06IEFkZHJlc3NEZXRhaWxzKTogc3RyaW5nIHtcbiAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgfVxuICBpZiAoIV8uaXNVbmRlZmluZWQobWVtb0lkKSkge1xuICAgIGNvbnN0IGludE1lbW9JZCA9IHBhcnNlSW50KG1lbW9JZCwgMTApO1xuICAgIGlmIChpc05hTihpbnRNZW1vSWQpIHx8IGludE1lbW9JZCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBtZW1vIGlkOiAke21lbW9JZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke2FkZHJlc3N9P21lbW9JZD0ke21lbW9JZH1gO1xuICB9XG4gIHJldHVybiBhZGRyZXNzO1xufVxuXG4vKipcbiAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyBhIHZhbGlkIGFkZHJlc3Mgd2l0aCBtZW1vIGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgYWRkcmVzcyBpbiB0aGUgZm9ybSA8YWRkcmVzcz4/bWVtb0lkPTxtZW1vSWQ+XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpcyBpbnB1dCBpcyBhIHZhbGlkIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzV2l0aFBheW1lbnRJZChhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3MpO1xuICAgIHJldHVybiBhZGRyZXNzID09PSBub3JtYWxpemVBZGRyZXNzKGFkZHJlc3NEZXRhaWxzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY2xhcml0eSB2YWx1ZSBpbnB1dFxuICpcbiAqIEBwYXJhbSB7Q2xhcml0eVZhbHVlfSBjdiBjbGFyaXR5IHZhbHVlIGZ1bmN0aW9uIGFyZ3VtZW50XG4gKiBAcmV0dXJucyB7U3RyaW5nfSBzdHJpbmdpZmllZCBjbGFyaXR5IHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlDdihjdjogQ2xhcml0eVZhbHVlKTogYW55IHtcbiAgc3dpdGNoIChjdi50eXBlKSB7XG4gICAgY2FzZSBDbGFyaXR5VHlwZS5JbnQ6XG4gICAgY2FzZSBDbGFyaXR5VHlwZS5VSW50OlxuICAgICAgcmV0dXJuIHsgdHlwZTogY3YudHlwZSwgdmFsdWU6IGN2LnZhbHVlLnRvU3RyaW5nKCkgfTtcbiAgICBjYXNlIENsYXJpdHlUeXBlLk9wdGlvbmFsU29tZTpcbiAgICAgIHJldHVybiB7IHR5cGU6IGN2LnR5cGUsIHZhbHVlOiBzdHJpbmdpZnlDdihjdi52YWx1ZSkgfTtcbiAgICBjYXNlIENsYXJpdHlUeXBlLlR1cGxlOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogY3YudHlwZSxcbiAgICAgICAgZGF0YTogXy5tYXBWYWx1ZXMoY3YuZGF0YSwgKHZhbHVlKSA9PiBzdHJpbmdpZnlDdih2YWx1ZSkpLFxuICAgICAgfTtcbiAgICBjYXNlIENsYXJpdHlUeXBlLkxpc3Q6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBjdi50eXBlLFxuICAgICAgICBsaXN0OiBjdi5saXN0Lm1hcChzdHJpbmdpZnlDdiksXG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY3Y7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBmdW5jdGlvbkFyZ3MgaW50byBzZW5kIHBhcmFtcyBmb3Igc2VuZC1tYW55LW1lbW8gY29udHJhY3QgY2FsbHNcbiAqXG4gKiBAcGFyYW0ge0NsYXJpdHlWYWx1ZVtdfSBhcmdzIGZ1bmN0aW9uQXJncyBmcm9tIGEgY29udHJhY3QgY2FsbCBwYXlsb2FkXG4gKiBAcmV0dXJucyB7U2VuZFBhcmFtc1tdfSBBbiBhcnJheSBvZiBzZW5kUGFyYW1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmdW5jdGlvbkFyZ3NUb1NlbmRQYXJhbXMoYXJnczogQ2xhcml0eVZhbHVlW10pOiBTZW5kUGFyYW1zW10ge1xuICBpZiAoYXJncy5sZW5ndGggIT09IDEgfHwgYXJnc1swXS50eXBlICE9PSBDbGFyaXR5VHlwZS5MaXN0KSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFwiZnVuY3Rpb24gYXJncyBkb24ndCBtYXRjaCBzZW5kLW1hbnktbWVtbyB0eXBlIGRlY2xhcmF0aW9uXCIpO1xuICB9XG4gIHJldHVybiBhcmdzWzBdLmxpc3QubWFwKCh0dXBsZSkgPT4ge1xuICAgIGlmIChcbiAgICAgIHR1cGxlLnR5cGUgIT09IENsYXJpdHlUeXBlLlR1cGxlIHx8XG4gICAgICB0dXBsZS5kYXRhLnRvPy50eXBlICE9PSBDbGFyaXR5VHlwZS5QcmluY2lwYWxTdGFuZGFyZCB8fFxuICAgICAgdHVwbGUuZGF0YS51c3R4Py50eXBlICE9PSBDbGFyaXR5VHlwZS5VSW50IHx8XG4gICAgICB0dXBsZS5kYXRhLm1lbW8/LnR5cGUgIT09IENsYXJpdHlUeXBlLkJ1ZmZlclxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFwiZnVuY3Rpb24gYXJncyBkb24ndCBtYXRjaCBzZW5kLW1hbnktbWVtbyB0eXBlIGRlY2xhcmF0aW9uXCIpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgYWRkcmVzczogY3ZUb1N0cmluZyh0dXBsZS5kYXRhLnRvKSxcbiAgICAgIGFtb3VudDogY3ZUb1ZhbHVlKHR1cGxlLmRhdGEudXN0eCwgdHJ1ZSksXG4gICAgICBtZW1vOiB0dXBsZS5kYXRhLm1lbW8uYnVmZmVyLnRvU3RyaW5nKCdhc2NpaScpLFxuICAgIH07XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnVuY3Rpb25BcmdzVG9Ub2tlblRyYW5zZmVyUGFyYW1zKGFyZ3M6IENsYXJpdHlWYWx1ZVtdKTogVG9rZW5UcmFuc2ZlclBhcmFtcyB7XG4gIGlmIChhcmdzLmxlbmd0aCA8IDMpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXCJmdW5jdGlvbiBhcmdzIGRvbid0IG1hdGNoIHRva2VuIHRyYW5zZmVyIGRlY2xhcmF0aW9uXCIpO1xuICB9XG4gIGlmIChcbiAgICBhcmdzWzBdLnR5cGUgIT09IENsYXJpdHlUeXBlLlVJbnQgfHxcbiAgICBhcmdzWzFdLnR5cGUgIT09IENsYXJpdHlUeXBlLlByaW5jaXBhbFN0YW5kYXJkIHx8XG4gICAgYXJnc1syXS50eXBlICE9PSBDbGFyaXR5VHlwZS5QcmluY2lwYWxTdGFuZGFyZFxuICApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXCJmdW5jdGlvbiBhcmdzIGRvbid0IG1hdGNoIHRva2VuIHRyYW5zZmVyIGRlY2xhcmF0aW9uXCIpO1xuICB9XG4gIGNvbnN0IHRva2VuVHJhbnNmZXJQYXJhbXMgPSB7XG4gICAgYW1vdW50OiBjdlRvVmFsdWUoYXJnc1swXSwgdHJ1ZSksXG4gICAgc2VuZGVyOiBjdlRvU3RyaW5nKGFyZ3NbMV0pLFxuICAgIHJlY2lwaWVudDogY3ZUb1N0cmluZyhhcmdzWzJdKSxcbiAgfTtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSA0ICYmIGFyZ3NbM10udHlwZSA9PT0gQ2xhcml0eVR5cGUuQnVmZmVyKSB7XG4gICAgdG9rZW5UcmFuc2ZlclBhcmFtc1snbWVtbyddID0gYXJnc1szXS5idWZmZXIudG9TdHJpbmcoJ2FzY2lpJyk7XG4gIH1cbiAgcmV0dXJuIHRva2VuVHJhbnNmZXJQYXJhbXM7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmVyc2lvbiBvZiBhbiBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFkZHJlc3MgdGhlIGFkZHJlc3Mgd2l0aCBvciB3aXRob3V0IHRoZSBtZW1vSWRcbiAqIEByZXR1cm5zIHtBZGRyZXNzVmVyc2lvbn0gQSBudW1iZXIgdGhhdCByZXByZXNlbnQgdGhlIEFkZHJlc3MgVmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkcmVzc1ZlcnNpb24oYWRkcmVzczogc3RyaW5nKTogQWRkcmVzc1ZlcnNpb24ge1xuICBjb25zdCBiYXNlQWRkcmVzcyA9IGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3MpLmFkZHJlc3M7XG4gIHJldHVybiBjcmVhdGVBZGRyZXNzKGJhc2VBZGRyZXNzKS52ZXJzaW9uO1xufVxuXG4vKipcbiAqIEVuY29kZSBhIFN0YWNrcyAqc3RhbmRhcmQqIHByaW5jaXBhbCBhcyB0aGUgQ2xhcml0eSBTSVAtMDA1IGhleCB3aXJlIGZvcm1hdFxuICog4oCUIGEgMjItYnl0ZSBibG9iOlxuICpcbiAqICAgICBgMHgwNWAgfHwgdmVyc2lvbiAoMSBieXRlKSB8fCBoYXNoMTYwICgyMCBieXRlcylcbiAqXG4gKiBDb250cmFjdCBwcmluY2lwYWxzIChgPGFkZHJlc3M+Ljxjb250cmFjdC1uYW1lPmApIGFuZCBhZGRyZXNzZXMgd2l0aCBhXG4gKiBgP21lbW9JZD3igKZgIHN1ZmZpeCBhcmUgcmVqZWN0ZWQuIFRoZSBDbGFyaXR5IHR5cGUgYnl0ZSAoYDB4MDVgKSBpcyBzZXRcbiAqIGJ5IGBzZXJpYWxpemVDVmAgZnJvbSBgQHN0YWNrcy90cmFuc2FjdGlvbnNgLCBzbyB0aGlzIGhlbHBlciBkb2VzIG5vdFxuICogaGFuZC1yb2xsIGFueSBieXRlIGNvbmNhdGVuYXRpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHByaW5jaXBhbCBhIFN0YWNrcyBzdGFuZGFyZCBwcmluY2lwYWwgKGUuZy4gYFNQ4oCmYCAvIGBTVOKApmApXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBoZXgtZW5jb2RlZCAyMi1ieXRlIENsYXJpdHkgc3RhbmRhcmQgcHJpbmNpcGFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmNvZGVkUHJpbmNpcGFsKHByaW5jaXBhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHByaW5jaXBhbC5pbmNsdWRlcygnPycpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYHByaW5jaXBhbCBtdXN0IG5vdCBpbmNsdWRlIGEgcXVlcnkgc3RyaW5nOiAke3ByaW5jaXBhbH1gKTtcbiAgfVxuICBpZiAocHJpbmNpcGFsLmluY2x1ZGVzKCcuJykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgY29udHJhY3QgcHJpbmNpcGFscyBhcmUgbm90IHN1cHBvcnRlZCwgZXhwZWN0ZWQgYSBzdGFuZGFyZCBwcmluY2lwYWw6ICR7cHJpbmNpcGFsfWApO1xuICB9XG4gIGlmICghaXNWYWxpZEFkZHJlc3MocHJpbmNpcGFsKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIFN0YWNrcyBhZGRyZXNzIGluIHByaW5jaXBhbDogJHtwcmluY2lwYWx9YCk7XG4gIH1cbiAgcmV0dXJuIHNlcmlhbGl6ZUNWKHN0YW5kYXJkUHJpbmNpcGFsQ1YocHJpbmNpcGFsKSkudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBTVFggcHViIGtleSBmcm9tIGFuIHhwdWJcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30geHB1YiBhbiB4cHViXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBhIGNvbXByZXNzZWQgU1RYIHB1YiBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHhwdWJUb1NUWFB1YmtleSh4cHViOiBzdHJpbmcsIGNvbXByZXNzZWQgPSB0cnVlKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKHsgcHViOiB4cHViIH0pLmdldEtleXMoY29tcHJlc3NlZCkucHViO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGJhc2UgYWRkcmVzcyBwb3J0aW9uIG9mIGFuIGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyAtIGFuIGFkZHJlc3NcbiAqIEByZXR1cm5zIHtTdHJpbmd9IC0gdGhlIGJhc2UgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSBnZXRBZGRyZXNzRGV0YWlscyhhZGRyZXNzKTtcbiAgcmV0dXJuIGFkZHJlc3NEZXRhaWxzLmFkZHJlc3M7XG59XG5cbi8qKlxuICogQ29tcGFyZXMgYW4gYWRkcmVzcyB0byB0aGUgYmFzZSBhZGRyZXNzIHRvIGNoZWNrIGlmIG1hdGNocy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyAtIGFuIGFkZHJlc3NcbiAqIEBwYXJhbSB7U3RyaW5nfSBiYXNlQWRkcmVzcyAtIGEgYmFzZSBhZGRyZXNzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZUJhc2VBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgYmFzZUFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRBZGRyZXNzV2l0aFBheW1lbnRJZChhZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgfVxuICByZXR1cm4gZ2V0QmFzZUFkZHJlc3MoYWRkcmVzcykgPT09IGdldEJhc2VBZGRyZXNzKGJhc2VBZGRyZXNzKTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0byBnZXQgdG9rZW5OYW1lIGZyb20gbGlzdCBvZiBzaXAxMCB0b2tlbnMgdXNpbmcgY29udHJhY3QgZGV0YWlsc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb250cmFjdEFkZHJlc3NcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb250cmFjdE5hbWVcbiAqIEByZXR1cm5zIHtTdHJpbmd8VW5kZWZpbmVkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFRva2VuTmFtZUJ5Q29udHJhY3QoY29udHJhY3RBZGRyZXNzOiBzdHJpbmcsIGNvbnRyYWN0TmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAge1xuICAgIGNvbnN0IHRva2VuTmFtZSA9IGNvaW5zXG4gICAgICAuZmlsdGVyKChjb2luKSA9PiBjb2luIGluc3RhbmNlb2YgU2lwMTBUb2tlbiAmJiBjb2luLmFzc2V0SWQuaW5jbHVkZXMoYCR7Y29udHJhY3RBZGRyZXNzfS4ke2NvbnRyYWN0TmFtZX1gKSlcbiAgICAgIC5tYXAoKGNvaW4pID0+IGNvaW4ubmFtZSk7XG4gICAgcmV0dXJuIHRva2VuTmFtZSA/IHRva2VuTmFtZVswXSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGdldCBjb250cmFjdFRva2VuTmFtZSBmcm9tIGxpc3Qgb2Ygc2lwMTAgdG9rZW5zIHVzaW5nIGNvbnRyYWN0IGRldGFpbHNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gY29udHJhY3RBZGRyZXNzXG4gKiBAcGFyYW0ge1N0cmluZ30gY29udHJhY3ROYW1lXG4gKiBAcmV0dXJucyB7U3RyaW5nfFVuZGVmaW5lZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDb250cmFjdFRva2VuTmFtZVVzaW5nQ29udHJhY3QoY29udHJhY3RBZGRyZXNzOiBzdHJpbmcsIGNvbnRyYWN0TmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAge1xuICAgIGNvbnN0IHNpcDEwVG9rZW4gPSBjb2luc1xuICAgICAgLmZpbHRlcigoY29pbikgPT4gY29pbiBpbnN0YW5jZW9mIFNpcDEwVG9rZW4gJiYgY29pbi5hc3NldElkLmluY2x1ZGVzKGAke2NvbnRyYWN0QWRkcmVzc30uJHtjb250cmFjdE5hbWV9YCkpXG4gICAgICAubWFwKChjb2luKSA9PiBjb2luIGFzIFNpcDEwVG9rZW4pO1xuICAgIHJldHVybiBzaXAxMFRva2VuID8gc2lwMTBUb2tlblswXS5hc3NldElkLnNwbGl0KCc6OicpWzFdIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZ2V0IGFkZHJlc3MgYW5kIG1lbW8gZGV0YWlscyBmcm9tIGFkZHJlc3MgaW5wdXRcbiAqXG4gKiBAcGFyYW0gYWRkcmVzc1xuICogQHJldHVybnMge0FkZHJlc3NEZXRhaWxzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVtb0lkQW5kQmFzZUFkZHJlc3NGcm9tQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBBZGRyZXNzRGV0YWlscyB7XG4gIGNvbnN0IFtiYXNlQWRkcmVzcywgcXVlcnlTdHJpbmddID0gYWRkcmVzcy5zcGxpdCgnPycpO1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgY29uc3QgbWVtb0lkID0gcGFyYW1zLmdldCgnbWVtb0lkJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBiYXNlQWRkcmVzcyxcbiAgICBtZW1vSWQ6IG1lbW9JZCA/IG1lbW9JZCA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -30,9 +30,9 @@ export declare const RECIPIENT_1: {
|
|
|
30
30
|
export declare const defaultKeyPairFromPrv: StxLib.KeyPair;
|
|
31
31
|
export declare const defaultKeyPairFromPub: StxLib.KeyPair;
|
|
32
32
|
export declare const message1 = "abc";
|
|
33
|
-
export declare const expectedSignature1 = "
|
|
33
|
+
export declare const expectedSignature1 = "00e047c0a5146df934522795a9ec08fea37e1450287ec2ab697ee50e0b39502d695372444acf47d117bec621bb38dd8f3b92a47972a209c302049d9555d912afa9";
|
|
34
34
|
export declare const message2 = "hello";
|
|
35
|
-
export declare const expectedSignature2 = "
|
|
35
|
+
export declare const expectedSignature2 = "010c755303af74860b752972a69651fe740ad8f09fbf85dc2fc06fc63e012c1ca532baf20d1c9cb81d9303216efc6f6cc6bd7753fe2e8eaa7a06d77bdd3ceda853";
|
|
36
36
|
export declare const defaultSeedSecretKey = "eafd15702fca3f80beb565e66f19e20bbad0a34b46bb12075cbf1c5d94bb27d2";
|
|
37
37
|
export declare const defaultSeedPubKey = "04669261fe20452fe6a03e625944c6a0523e6350b3ea8cbd37c9ca1ff97e3ac8bf3dd2d51a09d6d4831cb2bc9828c5af14ce4c3384c973d75aad423626a2a6d18d";
|
|
38
38
|
export declare const defaultSeedAddressUncompressedMainnet = "SP21X8PMH8T4MVX8Z75JZPYEVA6Q8FDR7PJ13MV4Q";
|
|
@@ -52,10 +52,10 @@ exports.defaultKeyPairFromPub = new src_1.StxLib.KeyPair({
|
|
|
52
52
|
// verify signatures
|
|
53
53
|
exports.message1 = 'abc';
|
|
54
54
|
// when signed with secretKey1
|
|
55
|
-
exports.expectedSignature1 = '
|
|
55
|
+
exports.expectedSignature1 = '00e047c0a5146df934522795a9ec08fea37e1450287ec2ab697ee50e0b39502d695372444acf47d117bec621bb38dd8f3b92a47972a209c302049d9555d912afa9';
|
|
56
56
|
exports.message2 = 'hello';
|
|
57
57
|
// when signed with secretKey2
|
|
58
|
-
exports.expectedSignature2 = '
|
|
58
|
+
exports.expectedSignature2 = '010c755303af74860b752972a69651fe740ad8f09fbf85dc2fc06fc63e012c1ca532baf20d1c9cb81d9303216efc6f6cc6bd7753fe2e8eaa7a06d77bdd3ceda853';
|
|
59
59
|
// seed is Buffer.alloc(64) -- all zero bytes
|
|
60
60
|
exports.defaultSeedSecretKey = 'eafd15702fca3f80beb565e66f19e20bbad0a34b46bb12075cbf1c5d94bb27d2';
|
|
61
61
|
exports.defaultSeedPubKey = '04669261fe20452fe6a03e625944c6a0523e6350b3ea8cbd37c9ca1ff97e3ac8bf3dd2d51a09d6d4831cb2bc9828c5af14ce4c3384c973d75aad423626a2a6d18d';
|
|
@@ -141,4 +141,4 @@ exports.FUNGIBLE_TOKEN_TRANSFER_CONSTANTS = {
|
|
|
141
141
|
SIGNED_MULTI_SIG_TX: '808000000004012fe507c09dbb23c3b7e5d166c81fc4b87692510b000000000000000000000000000000b4000000030201e4c98d7687eab5f11d03febc96951301eede336088b06c5a676cc6093f70e16b3f3533ccd8e6f92390a17dcc917f4e828657f17605574a5fcbb3da59f25483dc02019095c2f5217e0f168f27b605b47e9eac2da3c5ea309c42a2677addfb67c1fd471ef20187ce6b85b5b541d4b4f00d2f8ea8f7d42be84327968cb9411730b5217a00038e3c4529395611be9abf6fa3b6987e81d402385e3d605a073f42f407565a4a3d00020302000000010102152fe507c09dbb23c3b7e5d166c81fc4b87692510b1a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e0d747369703664702d746f6b656e010000000000002710021a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e087472616e73666572000000040100000000000000000000000000002710051a1500a1c42f0c11bfe3893f479af18904677685be0515ab50cac953ac55edc14e2b236854b1ead863fece0a020000000131',
|
|
142
142
|
SIGNED_MULTI_SIG_TX_WITHOUT_MEMO: '808000000004012fe507c09dbb23c3b7e5d166c81fc4b87692510b000000000000000000000000000000b4000000030200d12a80f67cdac72ad116075e86846986a015a60bf541855ea17ddc79620b679b0d75e523cbc7638969addeb047e73ed11b398a894b2fd4459623afb2fc10461b02007e01f28f9ac5b9bc32f3de826f69aabcc6b357faa50d98087ff12714eb3d351e515482aff784b54ab572ce6f86c1f40c71b21fd197e846fb388718f55f17d4d300038e3c4529395611be9abf6fa3b6987e81d402385e3d605a073f42f407565a4a3d00020302000000010102152fe507c09dbb23c3b7e5d166c81fc4b87692510b1a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e0d747369703664702d746f6b656e010000000000002710021a1500a1c42f0c11bfe3893f479af18904677685be0d747369703664702d746f6b656e087472616e73666572000000040100000000000000000000000000002710051a1500a1c42f0c11bfe3893f479af18904677685be0515ab50cac953ac55edc14e2b236854b1ead863fece09',
|
|
143
143
|
};
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3Jlc291cmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQW1DO0FBRW5DOzs7Ozs7Ozs7R0FTRztBQUVVLFFBQUEsVUFBVSxHQUFHLGtFQUFrRSxDQUFDO0FBQ2hGLFFBQUEsT0FBTyxHQUNsQixvSUFBb0ksQ0FBQztBQUMxSCxRQUFBLFFBQVEsR0FBRywyQ0FBMkMsQ0FBQztBQUV2RCxRQUFBLFVBQVUsR0FBRyxrRUFBa0UsQ0FBQztBQUNoRixRQUFBLE9BQU8sR0FDbEIsb0lBQW9JLENBQUM7QUFDMUgsUUFBQSxpQkFBaUIsR0FBRyxvRUFBb0UsQ0FBQztBQUN6RixRQUFBLFFBQVEsR0FBRywwQ0FBMEMsQ0FBQztBQUVuRSwrQkFBK0I7QUFDL0Isd0JBQXdCO0FBQ1gsUUFBQSxLQUFLLEdBQ2hCLGlIQUFpSCxDQUFDO0FBQ3ZHLFFBQUEsS0FBSyxHQUNoQixpSEFBaUgsQ0FBQztBQUN2RyxRQUFBLGFBQWEsR0FBRyxrRUFBa0UsQ0FBQztBQUNuRixRQUFBLGFBQWEsR0FDeEIsb0lBQW9JLENBQUM7QUFDMUgsUUFBQSx1QkFBdUIsR0FBRyxvRUFBb0UsQ0FBQztBQUUvRixRQUFBLFNBQVMsR0FBRztJQUN2QixHQUFHLEVBQUUsa0JBQVU7SUFDZixHQUFHLEVBQUUsZUFBTztJQUNaLE9BQU8sRUFBRSxnQkFBUTtDQUNsQixDQUFDO0FBRVcsUUFBQSxTQUFTLEdBQUc7SUFDdkIsR0FBRyxFQUFFLGtCQUFVO0lBQ2YsR0FBRyxFQUFFLGVBQU87SUFDWixPQUFPLEVBQUUsZ0JBQVE7Q0FDbEIsQ0FBQztBQUVXLFFBQUEsUUFBUSxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxvRUFBb0U7Q0FDMUUsQ0FBQztBQUVXLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLE9BQU8sRUFBRSwyQ0FBMkM7Q0FDckQsQ0FBQztBQUVXLFFBQUEscUJBQXFCLEdB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QUM7QUFFMS9CLFFBQUEsYUFBYSxHQUFHO0lBQzNCLG9FQUFvRTtJQUNwRSxvRUFBb0U7SUFDcEUsb0VBQW9FO0NBQ3JFLENBQUM7QUFFVyxRQUFBLGtCQUFrQixHQUFHO0lBQ2hDO1FBQ0UsT0FBTyxFQUFFLDJDQUEyQztRQUNwRCxNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsUUFBUTtLQUNmO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsMkNBQTJDO1FBQ3BELE1BQU0sRUFBRSxTQUFTO1FBQ2pCLElBQUksRUFBRSxRQUFRO0tBQ2Y7SUFDRDtRQUNFLE9BQU8sRUFBRSwwQ0FBMEM7UUFDbkQsTUFBTSxFQUFFLFNBQVM7UUFDakIsSUFBSSxFQUFFLFFBQVE7S0FDZjtDQUNGLENBQUM7QUFFVyxRQUFBLElBQUksR0FBRyxRQUFRLENBQUM7QUFFaEIsUUFBQSxpQ0FBaUMsR0FBRztJQUMvQyxnQkFBZ0IsRUFBRSwwQ0FBMEM7SUFDNUQsYUFBYSxFQUFFLGVBQWU7SUFDOUIsYUFBYSxFQUFFLFVBQVU7SUFDekIsY0FBYyxFQUFFLDBDQUEwQztJQUMxRCxnQkFBZ0IsRUFBRSwyQ0FBMkM7SUFDN0QsVUFBVSxFQUFFLGVBQWU7SUFDM0Isc0JBQXNCLEVBQ3BCLG9uQkFBb25CO0lBQ3RuQixtQ0FBbUMsRUFDakMsc21CQUFzbUI7SUFDeG1CLG1CQUFtQixFQUNqQix3MEJBQXcwQjtJQUMxMEIsZ0NBQWdDLEVBQzlCLDR6QkFBNHpCO0NBQy96QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3R4TGliIH0gZnJvbSAnLi4vLi4vc3JjJztcblxuLypcbiAqIGtleXMgYW5kIGFkZHJlc3NlcyBhcmUgZnJvbTpcbiAqXG4gKiBpbXBvcnQgKiBhcyBzdCBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG4gKlxuICogY29uc3Qgc2VjcmV0S2V5MSA9IHN0LnByaXZhdGVLZXlUb1N0cmluZyhzdC5tYWtlUmFuZG9tUHJpdktleSgpKTtcbiAqIGNvbnN0IHB1YmxpY0tleTEgPSBzdC5wdWJsaWNLZXlUb1N0cmluZyhzdC5wdWJLZXlmcm9tUHJpdktleShzZWNyZXRLZXkxLmRhdGEpO1xuICogY29uc3QgYWRkcmVzczEgPSBzdC5nZXRBZGRyZXNzRnJvbVByaXZhdGVLZXkoc2VjcmV0S2V5MSk7XG4gKiBldGMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IHNlY3JldEtleTEgPSAnNjZjODg2NDgxMTZiNzIxYmIyZjM5NGUwMDA3ZjlkMzQ4ZWEwODAxN2I2ZTYwNGRlNTFhM2E3ZDk1N2Q1ODUyNCc7XG5leHBvcnQgY29uc3QgcHViS2V5MSA9XG4gICcwNGE2OGMyZDZmZGIzNzA2YjM5ZjMyZDZmNDIyNTI3NWNlMDYyNTYxOTA4ZmQ3Y2E1NDBhNDRjOTJlYjg1OTRlYTZkYjlmY2ZlMGIzOTBjMGVhZDNmNDVjMzZhZmQ2ODJlYWI2MmViMTI0YTYzYjQ2MDk0NWZlMWY3YzdmOGEwOWUyJztcbmV4cG9ydCBjb25zdCBhZGRyZXNzMSA9ICdTUDEwRkRIUVE0RjJGMEtITU42WjI0Uk1BTUdYNTkzM1NRSkNXS0FBUic7XG5cbmV4cG9ydCBjb25zdCBzZWNyZXRLZXkyID0gJzM1Nzk0YWRmMGRkMmEzMTNjMThiYzExOGI0MjI3NDBiYjk0Zjg1MTE0MTM0YmUzNDcwM2ZmNzA2NjU4MDg3ZTQnO1xuZXhwb3J0IGNvbnN0IHB1YktleTIgPVxuICAnMDQyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDhhOWM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhOTRhOWE3YzI0YTFjY2Q4Mzc5MjE3M2Y0NzVmZGI1OTBjYzgyZjk0ZmY2MTVkZjM5MTQyNzY2ZTc1OWNlNjM4Nyc7XG5leHBvcnQgY29uc3QgcHViS2V5MkNvbXByZXNzZWQgPSAnMDMyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDhhOWM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhJztcbmV4cG9ydCBjb25zdCBhZGRyZXNzMiA9ICdTUFM0SFNYQUQxV1NEMzk0M1daNTJNUFNZOVdQSzU2U0RHNTRIVEFSJztcblxuLy8gZXh0ZW5kZWQgcHJpdmF0ZS9wdWJsaWMga2V5c1xuLy8gU1RYIGRvZXMgbm90IHVzZSB0aGVtXG5leHBvcnQgY29uc3QgeHBydjEgPVxuICAneHBydjlzMjFaclFIMTQzSzM0YmRoQ1dNdWl1SGZkalFCMjFndTk1TndwZUdFRWZHTVdzN3RBNXMzUE1CQlBlSm1YbjVEUTN2djhIcDhrcTFLcnNhSkpuY3pXM0JNenRMMlZHVG54VlBnVmpncTFIJztcbmV4cG9ydCBjb25zdCB4cHViMSA9XG4gICd4cHViNjYxTXlNd0FxUmJjRllnNm9FM05HcnIyRGZadGFVallHTXp5a0Qzc25hQ0ZFS0NHUmhRN2JCZmYyZzNDWXZ5WVBRTUdTd1NlMURIOEdYdlA2dUIzaWlXc1BHR01iWFZaR2tyazFVeFFWazYnO1xuZXhwb3J0IGNvbnN0IHhwcnYxUHJvdG9jb2wgPSAnNzNlYTE5YWVhMjVlODdjNGVlOGVhZWUyMTQxNzQ0MmFjOWViNjg5OGY0NTM4YWRlOGYyMDkxZDFkMmM1OTQ2ZCc7XG5leHBvcnQgY29uc3QgeHB1YjFQcm90b2NvbCA9XG4gICcwNDI3OTRiYzQzZDc1ZGIwZTg1ODk5ODc4MTg3NTRhYTJmODIwYTM1MGE1NzQyZWZhZjBkNTA1MThmY2JjNmE4MGM1OTdhYTUxYWE4ZTc1NWZkMTBiNzUzZjdlMzY0MTA4NDkxNzFhOTlkODUzM2Y2ZWE4NGEwYzRkZmJlNmUyNDE5JztcbmV4cG9ydCBjb25zdCB4cHViMVByb3RvY29sQ29tcHJlc3NlZCA9ICcwMzI3OTRiYzQzZDc1ZGIwZTg1ODk5ODc4MTg3NTRhYTJmODIwYTM1MGE1NzQyZWZhZjBkNTA1MThmY2JjNmE4MGMnO1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF8xID0ge1xuICBwcnY6IHNlY3JldEtleTEsXG4gIHB1YjogcHViS2V5MSxcbiAgYWRkcmVzczogYWRkcmVzczEsXG59O1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF8yID0ge1xuICBwcnY6IHNlY3JldEtleTIsXG4gIHB1YjogcHViS2V5MixcbiAgYWRkcmVzczogYWRkcmVzczIsXG59O1xuXG5leHBvcnQgY29uc3QgU0VOREVSXzEgPSB7XG4gIHBydjogJ2VkZjlhZWU4NGQ5YjdhYmMxNDU1MDRkZGU2NzI2YzY0ZjM2OWQzN2VlMzRkZWQ4NjhmYWJkODc2YzI2NTcwYmMwMScsXG59O1xuXG5leHBvcnQgY29uc3QgUkVDSVBJRU5UXzEgPSB7XG4gIGFkZHJlc3M6ICdTUDNGR1E4WjdKWTlCV1laNVdNNTNFME05Tks3V0hKRjA2OTFOWjE1OScsXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEtleVBhaXJGcm9tUHJ2ID0gbmV3IFN0eExpYi5LZXlQYWlyKHtcbiAgcHJ2OiBzZWNyZXRLZXkxLFxufSk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0S2V5UGFpckZyb21QdWIgPSBuZXcgU3R4TGliLktleVBhaXIoe1xuICBwdWI6IHB1YktleTIsXG59KTtcblxuLy8gdmVyaWZ5IHNpZ25hdHVyZXNcbmV4cG9ydCBjb25zdCBtZXNzYWdlMSA9ICdhYmMnO1xuLy8gd2hlbiBzaWduZWQgd2l0aCBzZWNyZXRLZXkxXG5leHBvcnQgY29uc3QgZXhwZWN0ZWRTaWduYXR1cmUxID1cbiAgJzAxNTdhMTcwZmFlNGEzMTBjNGI1OWI4ZDE3MzI4OWI0YWRhY2I3OWIwYTE4N2E2ZTEzMmNkZjAyMzc0YzIyYjU5NTE5Yjg2MmQ5NTI0MGFmNDY0ODA4ZmFhZWQzNDFmZTQyZDc0MGM5Yjg5ODUwYjUyZjVmN2Y5MDZkZWJhNjcwNjQnO1xuXG5leHBvcnQgY29uc3QgbWVzc2FnZTIgPSAnaGVsbG8nO1xuLy8gd2hlbiBzaWduZWQgd2l0aCBzZWNyZXRLZXkyXG5leHBvcnQgY29uc3QgZXhwZWN0ZWRTaWduYXR1cmUyID1cbiAgJzAwN2E4NmIwYTU0ODY5ODc2MDVmNzI3NDI3MmNiNGVhZWZhMzdhZjIxNmJkZjBjODhjNWI5ODVhNzA5MjNkNTUwMDMyYjNjZjIyNmE4Mzg0YWQyYjk2ZDBiMzc5NGI5YTZmOGU2ZWQxOTE1ODJmYjBjYzRmODMwYjJlZjE0ZDA1ZmUnO1xuXG4vLyBzZWVkIGlzIEJ1ZmZlci5hbGxvYyg2NCkgLS0gYWxsIHplcm8gYnl0ZXNcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZFNlY3JldEtleSA9ICdlYWZkMTU3MDJmY2EzZjgwYmViNTY1ZTY2ZjE5ZTIwYmJhZDBhMzRiNDZiYjEyMDc1Y2JmMWM1ZDk0YmIyN2QyJztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZFB1YktleSA9XG4gICcwNDY2OTI2MWZlMjA0NTJmZTZhMDNlNjI1OTQ0YzZhMDUyM2U2MzUwYjNlYThjYmQzN2M5Y2ExZmY5N2UzYWM4YmYzZGQyZDUxYTA5ZDZkNDgzMWNiMmJjOTgyOGM1YWYxNGNlNGMzMzg0Yzk3M2Q3NWFhZDQyMzYyNmEyYTZkMThkJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc1VuY29tcHJlc3NlZE1haW5uZXQgPSAnU1AyMVg4UE1IOFQ0TVZYOFo3NUpaUFlFVkE2UThGRFI3UEoxM01WNFEnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc1VuY29tcHJlc3NlZFRlc3RuZXQgPSAnU1QyMVg4UE1IOFQ0TVZYOFo3NUpaUFlFVkE2UThGRFI3UEc4OFdUVkYnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc0NvbXByZXNzZWRNYWlubmV0ID0gJ1NQMzFNQlJGOUo4VzIyVzMwNDRNRUFaRFhGTU04NTY5OTY1M1pLUjdRJztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZEFkZHJlc3NDb21wcmVzc2VkVGVzdG5ldCA9ICdTVDMxTUJSRjlKOFcyMlczMDQ0TUVBWkRYRk1NODU2OTk2N1RGMVI0MSc7XG5cbmV4cG9ydCBjb25zdCBJTlZBTElEX0tFWVBBSVJfUFJWID0gbmV3IFN0eExpYi5LZXlQYWlyKHtcbiAgcHJ2OiAnOENBQTAwQUU2MzYzOEIwNTQyQTMwNDgyM0Q2NkQ5NkZGMzE3QTU3NkY2OTI2NjNEQjJGODVFNjBGQUIyNTkwQycsXG59KTtcblxuZXhwb3J0IGNvbnN0IFRYX1NFTkRFUiA9IHtcbiAgcHJ2OiAnY2IzZGYzODA1M2QxMzI4OTUyMjBiOWNlNDcxZjZiNjc2ZGI1YjliZjBiNGFkZWZiNTVmMjExOGVjZTI0NzhkZjAxJyxcbiAgcHViOiAnMDM3OTdkZDY1MzA0MGQzNDRmZDA0OGMxYWQwNWQ0Y2JjYjIxNzhiMzBjNmEwYzQyNzY5OTQ3OTVmM2U4MzNkYTQxJyxcbiAgYWRkcmVzczogJ1NUQjQ0SFlQWUFUMkJCMlFFNTEzTlNQODFIVE1ZV0JKUDAySFBHSzYnLFxufTtcblxuZXhwb3J0IGNvbnN0IFRYX1JFQ0lFVkVSID0ge1xuICBhZGRyZXNzOiAnU1RERTdZOEhWM1JYOFZCTTJUWlZXSlRTN1pBMVhCMFNTQzNORVZIMCcsXG59O1xuXG5leHBvcnQgY29uc3QgUkFXX1RYX1VOU0lHTkVEID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDAwNTFhMWFlM2Y5MTFkOGYxZDQ2ZDc0MTZiZmJlNGI1OTNmZDQxZWFjMTljYjAwMDAwMDAwMDAwMDAzZTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG5cbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT04gPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxMWFlMDZjMTRjOTY3Zjk5OTE4NGVhOGE3OTEzMTI1ZjA5YWI2NDAwNDQ0NmZjYTg5OTQwZjA5MjUwOTEyNGI5ZTc3M2FlZjQ4M2U5MjU0NzZjNzhlYzU4MTY2ZGNlY2FiMzg3NWI4ZmFiOGU5YWE0MjEzMTc5ZDE2NDQ2Mzk2MjgwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuLy8gVHJhbnNhY3Rpb25zIHNpZ24gd2l0aCAyIG9mIDMga2V5cy5cbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT05fUEtfMV8zID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAwOTQ3M2EzN2I5MTRmNzAzYzgxZjMzMTQxZDEwZWFiZTQ1NTBjNGQ2MWYxMTM2NjJjYzExY2RjMDQ2M2ZjMzc3MzU4NDA4YzczZDNkMzI3M2NkYmNjMzUxMWRiYmQyMDMxYjVlYWNhNGNiMmIxMzkyNWRhOWY5YjBjN2U2NGQxYTYwMDAyNGFiZGRkNjNiNTZjNTVjZDFlZDA4MDNjMjZjNDczZjVmMGI5ZDg0NzNiMzdiNjViZDgxMmYwMzUzNjVmMTU0YjAyMDE2YWFjMDM0N2I4NTIwZDg5MDVjYmQxM2M2MDFmNDVhMGNjYmJiMjQ4MzEzMjBjNTRkOWVlMmMxZTM2NTZiNzZkNzVlMWM1Mjc5MzIyNjdkODBiZWI5MDI1N2JiZTJkYzcxODRkOWIxNjg5OTNhYjNhNDBmYTczYmU2OTczYzVmNTAwMDIwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODc0NjU3Mzc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT05fUEtfMl8zID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMDAyYjA4N2NhNTJmNDBmZGZkZjRiMTZhMGJiZjdlOTFlNGRiMmUxODNhYzVjNjQ5MWE1ZjYwYTU0NTBlMjVkZTdkMDAyMDAwNDM2ZjkwNmQwNDAzODhlMzEyM2ViOWMzNzYxNGQ3ZjM5ZGEyZjI4MzM4NWNkYTQwOTk3MjEyYWNmYTViMjRkMDMyZmFjODI5OWFlOTU5MGZiZDI0ZDYzOThhYzFjNDg5YjUyM2M0MThkOGMwNmIzNTQ2N2U2ODUxOTk4Nzc4NjAyMDFkYmExNmQwNDBmMGFmMmZhOGQ0YmYzODhjYmM3ZjBjZDc0NjNhYTcwNThjNDlmN2U1ZGIyZDcyZDg2OGQ3MTY3NTI4Y2Q4MzkzMzY5Yjk0NDgwZjliN2Y4YTJjOTA4N2NiZDU3ZDRkMWE3ODJlNTUzZjljZWRlNjY2NDJkMTJjOTAwMDIwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODc0NjU3Mzc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuLy8gcmlnaHQgbGVuZ3RoIGFuZCBmb3JtYXQsIGJ1dCBpbnZhbGlkXG5leHBvcnQgY29uc3QgaW52YWxpZFB1YktleTEgPSAnMDMyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDgwMGM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhJztcbmV4cG9ydCBjb25zdCBpbnZhbGlkUHViS2V5MiA9XG4gICcwNGE2OGMyZDZmZGIzNzA2YjM5ZjMyZDZmNDIyNTI3NWNlMDYyNTYxOTA4ZmQ3Y2E1NDBhNDRjOTJlYjg1OTRlYTZkYjlmY2ZlMGIzOTBjMGVhZDNmNDVjMzZhZmQ2ODJlYWI2MmViMTI0YTYzYjQ2MDk0NWZlMWY3YzdmOGEwOWUxJztcblxuLy8gbXVsdGkgc2lnXG5leHBvcnQgY29uc3QgcHJ2MSA9ICcyMWQ0M2QyYWUwZGExZDlkMDRjZmNhYWM3ZDM5N2EzMzczMzg4MTA4MWYwYjJjZDAzODA2MmNmMGNjYmI3NTI2MDEnO1xuZXhwb3J0IGNvbnN0IHBydjIgPSAnYzcxNzAwYjA3ZDUyMGE4Yzk3MzFlNGQwZjA5NWFhNmVmYjkxZTE2ZTI1ZmIyN2NlMmI3MmU3YjY5OGY4MTI3YTAxJztcbmV4cG9ydCBjb25zdCBwcnYzID0gJ2U3NWRjYjY2Zjg0Mjg3ZWFmMzQ3OTU1ZTk0ZmEwNDMzNzI5OGRiZDk1YWEwZGJiOTg1NzcxMTA0ZWYxOTEzZGIwMSc7XG5leHBvcnQgY29uc3QgcHViMSA9ICcwMmIwODdjYTUyZjQwZmRmZGY0YjE2YTBiYmY3ZTkxZTRkYjJlMTgzYWM1YzY0OTFhNWY2MGE1NDUwZTI1ZGU3ZDAnO1xuZXhwb3J0IGNvbnN0IHB1YjIgPSAnMDI0YWJkZGQ2M2I1NmM1NWNkMWVkMDgwM2MyNmM0NzNmNWYwYjlkODQ3M2IzN2I2NWJkODEyZjAzNTM2NWYxNTRiJztcbmV4cG9ydCBjb25zdCBwdWIzID0gJzAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZCc7XG5leHBvcnQgY29uc3QgTVVMVElfU0lHX1NJR05FRF9UUkFOU0FDVElPTiA9XG4gICc4MDgwMDAwMDAwMDQwMTJmZTUwN2MwOWRiYjIzYzNiN2U1ZDE2NmM4MWZjNGI4NzY5MjUxMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAzMDIwMTIzZDZkM2QyMmQyY2ExYjczMTBmNWM0NTMxNGQxZTc4M2MwMzE5M2UxYmI1ZTA4Njg1ZmMxYTQ4ZjhiZGFjN2MwZDkzYTQ2M2VmZWUxOGI5YjQxZmZmZTM4ZDRiNGM3NDc1ODA5YTM3YzBmZDUzZjUyY2VmNDU2YThkOTI4MGRiMDIwMDEwYjMxMWY4MmIxYjExMWViNWVmYTE2YzQ3OTA2ODdiMTZkYzkyYjdiNGQwN2ExZjBmMWZlNjViYWVlNDNlYjAyZWRlMjI2ZjgwN2EwOTcyMzdlN2QwZWUzYWE0ZmRmOWI2Mjg3ZGQyM2Q4MTllYzU2MGRmMTgwODc1ZjQwMTlhMDAwMzhlM2M0NTI5Mzk1NjExYmU5YWJmNmZhM2I2OTg3ZTgxZDQwMjM4NWUzZDYwNWEwNzNmNDJmNDA3NTY1YTRhM2QwMDAyMDMwMjAwMDAwMDAwMDAwNTFhMWFlM2Y5MTFkOGYxZDQ2ZDc0MTZiZmJlNGI1OTNmZDQxZWFjMTljYjAwMDAwMDAwMDAwMDAzZTg3NDY1NzM3NDIwNmQ2NTZkNmYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG5cbi8vIGNvbnRyYWN0IGNhbGxcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9BRERSRVNTID0gJ1NUMDAwMDAwMDAwMDAwMDAwMDAwMDAyQU1XNDJIJztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9OQU1FID0gJ3BveC00JztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9GVU5DVElPTl9OQU1FID0gJ3N0YWNrLXN0eCc7XG5leHBvcnQgY29uc3QgVU5TSUdORURfU0VMRl9TVEFDS19DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDIxYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTcwNmY3ODJkMzQwOTczNzQ2MTYzNmIyZDczNzQ3ODAwMDAwMDA4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxN2Q3ODQwMDBjMDAwMDAwMDIwOTY4NjE3MzY4NjI3OTc0NjU3MzAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwNzc2NjU3MjczNjk2ZjZlMDIwMDAwMDAwMTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwY2U0MDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwYTAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDFmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWUyNDAnO1xuZXhwb3J0IGNvbnN0IFNJR05FRF9TRUxGX1NUQUNLX0NPTlRSQUNUX0NBTEwgPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxODMzZGI3OWNkOWMzOWM3MjYyYjgwOGI2ZWE4MGEwMDFhOWJkMjkwNjQ4Y2YzYTE5ZGE5NWYxMGQxODE0ZDY5NDM3YTAwMDc1ZTgzMjVlZjU2NGVkOWQ2NjkwYzU3NTU4M2JjYmIyOWM0ZTMzYzhjZTgwYzM0ZTdlZmQxZjU0NTcwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE3ZDc4NDAwMGMwMDAwMDAwMjA5Njg2MTczNjg2Mjc5NzQ2NTczMDIwMDAwMDAwOTczNmY2ZDY1MmQ2ODYxNzM2ODA3NzY2NTcyNzM2OTZmNmUwMjAwMDAwMDAxMDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjZTQwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjBhMDIwMDAwMDAwOTczNmY2ZDY1MmQ2ODYxNzM2ODAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwMWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxZTI0MCc7XG5cbmV4cG9ydCBjb25zdCBVTlNJR05FRF9DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDIxYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTcwNmY3ODJkMzQwOTczNzQ2MTYzNmIyZDczNzQ3ODAwMDAwMDA0MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxN2Q3ODQwMDA1MTYzMjQ4ZTdhYTY4Nzk5NjhkMjQxZjNlNTE1MmQ5ZjI3OTY5OTRkOTZjMGEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGM4MGEwYzAwMDAwMDAyMDk2ODYxNzM2ODYyNzk3NDY1NzMwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDc3NjY1NzI3MzY5NmY2ZTAyMDAwMDAwMDEwMSc7XG5leHBvcnQgY29uc3QgU0lHTkVEX0NPTlRSQUNUX1dJVEhfQVJHUyA9XG4gICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDBkYmE0ZDc3NWQ2ODk0NzQ2ZjBiOGZmM2NiYzFiMGYyNjk2ODkwZDA2NjlmZmJiOGViOGRmNTEwOTg3NDExMTVlMjhhZjQ0OGE1OTU4M2UzZDM0ZTM0NGMzNDg3OWM1YzdhODJkMjIzODMzYzEyMTRkMTNjZDk4MTMxNjVkOGUxZTAzMDIwMDAwMDAwMDAyMWEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU3MDZmNzgyZDM0MDk3Mzc0NjE2MzZiMmQ3Mzc0NzgwMDAwMDAwNDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTdkNzg0MDAwNTE2MzI0OGU3YWE2ODc5OTY4ZDI0MWYzZTUxNTJkOWYyNzk2OTk0ZDk2YzA5MGEwYzAwMDAwMDAyMDk2ODYxNzM2ODYyNzk3NDY1NzMwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDc3NjY1NzI3MzY5NmY2ZTAyMDAwMDAwMDEwMSc7XG5leHBvcnQgY29uc3QgU0lHTkVEX0NPTlRSQUNUX0NBTEwgPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxYjY5M2JkZjAxNGMxYWM3OGUzMDdmZWQ0OWJjMWRmOGZlZDJhNWU0MmQ0Yjc5OTkzZjVkZjYyNmQ3YjFiMjUxNjc0MTQ5NTE5OGEzZGJmMDc5ZGVlYmM0NmVjZGQ1MzVmZTY2ZjUxOGMwYTY5NWM1MzNmMTY2NzQ1NWEwNTAzNmEwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDEwYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN2InO1xuZXhwb3J0IGNvbnN0IE1VTFRJX1NJR19DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAxNjlhMDMyMTEyMzczYjQ4MWM0OGVjYjEyYjg4NDc1MTlmODk3MjBkNDI5N2E3YmY1Y2FjNDNiOWRhYThkNGFkMjNkZDUzNjU3MDg5ZGFkNTVjOTRlOGJlNTc2MmU5NzA1MjY4M2Y0OWUxZjQ1N2IyZTkyNTJmMjdlOTc1NjAzMjMwMjAwMTI4ZDBiYTJiOTU4NDMzOTM1OWZmNDJjMWQ2ZjM1Y2U3OWE3MDczMTUyYjNjOTA4NzliYzUxNjJlYjhkZjczYjAyZWFkYTNlZTMyMjg3M2E1ZmE3MzY0NzllNmM1MzYxMDk2ODE0ODJkOWYyMmYxZTFhODk2MDgwOTBiODY2NjgwMDAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZDAwMDIwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDEwYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN2InO1xuXG4vLyBjb250cmFjdCBjYWxsIHdpdGggbWVtbyBub25jZSA0NW4sXG5leHBvcnQgY29uc3QgU0VORF9NQU5ZX0NPTlRSQUNUX0FERFJFU1NfV0lUSF9NRU1PID0gJ1NUM0YxWDRRR1YyU004WEQ5Nlg0NU02UlRRWEtBMVBaSlpaQ1FBQjRCJztcbmV4cG9ydCBjb25zdCBTRU5EX01BTllfQ09OVFJBQ1RfTkFNRV9XSVRIX01FTU8gPSAnc2VuZC1tYW55LW1lbW8nO1xuZXhwb3J0IGNvbnN0IFNFTkRfTUFOWV9DT05UUkFDVF9GVU5DVElPTl9OQU1FX1dJVEhfTUVNTyA9ICdzZW5kLW1hbnknO1xuZXhwb3J0IGNvbnN0IFVOU0lHTkVEX1NFTkRfTUFOWV9XSVRIX01FTU8gPVxuICAnODA4MDAwMDAwMDA0MDFlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDAwMDAwMDAwMDAwMDAyZDAwMDAwMDAwMDAwMDAyMTQwMDAwMDAwMzAwMDI0YjVkOTI0ZWNjMDUyZjk1MTUzMzQwMDU0Y2FlNTI2ZDE2ZTkwNDI4OGUxOWUxOTQ2ZTE5NzczODdmNjgyOGM5MDAwMjk0ZWFiOTk1ODQ0YTMzNGY0YjdkOTQ2NTAwYTRlNzk0ZjVmNWY2ZTg3ZjliMjY3MTc1NDA4YzAzZTI4MDY0MGQwMDAyYjdiYTNlMTdlMzE0OTZiYmYxNTU1OTZkYzNmMmEwMmRlNDU3Y2ZmZWFkMDE3ZjY3MWY2NWQ5ZDM0YWIyNjFlYTAwMDIwMzAyMDAwMDAwMDEwMDAyMTVlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDEwMDAwMDAwMDAwNWI4ZDgwMDIxYWRlMWU5MmYwZDhiMzQ0NzVhOTM3NDg1YTFiMWFiZjY2YTBkYmYyZmYwZTczNjU2ZTY0MmQ2ZDYxNmU3OTJkNmQ2NTZkNmYwOTczNjU2ZTY0MmQ2ZDYxNmU3OTAwMDAwMDAxMGIwMDAwMDAwMzBjMDAwMDAwMDMwNDZkNjU2ZDZmMDIwMDAwMDAwNjZkNjU2ZDZmMjAzMTAyNzQ2ZjA1MTVhNGIwODIzYTk5ZmM1ZTg3YjhiZDJlN2U3YzE4OTkxNTM1NWUxYzBhMDQ3NTczNzQ3ODAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZjQyNDAwYzAwMDAwMDAzMDQ2ZDY1NmQ2ZjAyMDAwMDAwMDY2ZDY1NmQ2ZjIwMzIwMjc0NmYwNTE1OWZjYWUzYWViZGQ5MTc3Y2EwYzIyMTRjZjBjNWM2YTk2Mzk4YTliODA0NzU3Mzc0NzgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWU4NDgwMGMwMDAwMDAwMzA0NmQ2NTZkNmYwMjAwMDAwMDA2NmQ2NTZkNmYyMDMzMDI3NDZmMDUxNTE4MmQ1YzNiNmQ2NzM3NjYyNjU5N2VlODNmYmE2MmIzOTJhMTViZWIwNDc1NzM3NDc4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDJkYzZjMCc7XG5leHBvcnQgY29uc3QgU0lHTkVEX1NFTkRfTUFOWV9XSVRIX01FTU8gPVxuICAnODA4MDAwMDAwMDA0MDFlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDAwMDAwMDAwMDAwMDAyZDAwMDAwMDAwMDAwMDAyMTQwMDAwMDAwMzAyMDBlNjkyY2IyMTNiY2UwMzVlMzhkNWZhMzFkZjU0YTMwMzliM2QyNGFmMDVmNjZjMDQ2OTY0NjE1YWNiNzM5NjcwMzY4ZjQyNGFmMWM2MGMwOTYxYWY1Zjk3NmI0NmM2YWQxNTkzYjY4NTRmM2Q5M2IwN2MzNjFhN2VmMzQ4NDU2NTAyMDE3YjljZGVkZWIzZmQ5MmZlNDkwMTlmNGUzMTAwNTJlODVhNGMzYmI0NmMwZWU4OWRiNjVmN2M3ZTczNTkyZTdiNjBhOWMxMjdmYmJiMTI1YTEyNGJhYTNlZmIwZGQ2Nzk4NzljNzBjNGE2Y2E1NWYzYWZhY2VkYjE1NjVkZGU2YzAwMDJiN2JhM2UxN2UzMTQ5NmJiZjE1NTU5NmRjM2YyYTAyZGU0NTdjZmZlYWQwMTdmNjcxZjY1ZDlkMzRhYjI2MWVhMDAwMjAzMDIwMDAwMDAwMTAwMDIxNWU3YTRiNzc0NGU5OWE1NDc2MGNhNzZlNTRmNGQ4MWU0YjYwMjYyMzcwMTAwMDAwMDAwMDA1YjhkODAwMjFhZGUxZTkyZjBkOGIzNDQ3NWE5Mzc0ODVhMWIxYWJmNjZhMGRiZjJmZjBlNzM2NTZlNjQyZDZkNjE2ZTc5MmQ2ZDY1NmQ2ZjA5NzM2NTZlNjQyZDZkNjE2ZTc5MDAwMDAwMDEwYjAwMDAwMDAzMGMwMDAwMDAwMzA0NmQ2NTZkNmYwMjAwMDAwMDA2NmQ2NTZkNmYyMDMxMDI3NDZmMDUxNWE0YjA4MjNhOTlmYzVlODdiOGJkMmU3ZTdjMTg5OTE1MzU1ZTFjMGEwNDc1NzM3NDc4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDBjMDAwMDAwMDMwNDZkNjU2ZDZmMDIwMDAwMDAwNjZkNjU2ZDZmMjAzMjAyNzQ2ZjA1MTU5ZmNhZTNhZWJkZDkxNzdjYTBjMjIxNGNmMGM1YzZhOTYzOThhOWI4MDQ3NTczNzQ3ODAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxZTg0ODAwYzAwMDAwMDAzMDQ2ZDY1NmQ2ZjAyMDAwMDAwMDY2ZDY1NmQ2ZjIwMzMwMjc0NmYwNTE1MTgyZDVjM2I2ZDY3Mzc2NjI2NTk3ZWU4M2ZiYTYyYjM5MmExNWJlYjA0NzU3Mzc0NzgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMmRjNmMwJztcblxuZXhwb3J0IGNvbnN0IHBydktleXNTdHJpbmcgPSBbXG4gICdlNTU4ODNkNTMzMzVjZGYwZmU0YzUwNTA1MTM4MmIyZjdjYjk1MjE2NjYzZTQwODBlYmJjYWE3NGJjY2E5NzUwMDEnLFxuICAnMDk3MWIyYmExOTNmZDM5M2E0YzM5ZWZjY2MzZDYzYmFmZjVkNDk4NTAwYWNmYzk3Yzg3NjU1MzE2NTIyNzQyNDAxJyxcbiAgJzA0MWM4YjRiYTgyNTA4NTVhNGEzY2Q0ZDliMjhlNDU2MmM5ZjRhZWU5N2Y3OTQ0MmJiOWZmMmNmZjY4NDUyMjAwMScsXG5dO1xuXG5leHBvcnQgY29uc3Qgc2VuZE1hbnlSZWNpcGllbnRzID0gW1xuICB7XG4gICAgYWRkcmVzczogJ1NOMkpCMTBIVEs3WTVYMVhSUU1RN1daMFJLNEFLQVFHVzFBNzU1WVlUJyxcbiAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICBtZW1vOiAnbWVtbyAxJyxcbiAgfSxcbiAge1xuICAgIGFkZHJlc3M6ICdTTjJGV05SWEVRUUNIRVo1MFI4R01TVzY1UlRNUDc2NTlRMk1ZWTlQNCcsXG4gICAgYW1vdW50OiAnMjAwMDAwMCcsXG4gICAgbWVtbzogJ21lbW8gMicsXG4gIH0sXG4gIHtcbiAgICBhZGRyZXNzOiAnU05DMlRRMVZETktLRVNINkI1WkVHRlhUQ0FTUzU4QVZYREFDOUg3VycsXG4gICAgYW1vdW50OiAnMzAwMDAwMCcsXG4gICAgbWVtbzogJ21lbW8gMycsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgTUVNTyA9ICdtZW1vIDEnO1xuXG5leHBvcnQgY29uc3QgRlVOR0lCTEVfVE9LRU5fVFJBTlNGRVJfQ09OU1RBTlRTID0ge1xuICBDT05UUkFDVF9BRERSRVNTOiAnU1RBRzE4RTQ1VzYxM0ZaM0g0Wk1GNlFISDQyNkVYTTVRVFNBVldZSCcsXG4gIENPTlRSQUNUX05BTUU6ICd0c2lwNmRwLXRva2VuJyxcbiAgRlVOQ1RJT05fTkFNRTogJ3RyYW5zZmVyJyxcbiAgU0VOREVSX0FERFJFU1M6ICdTVEFHMThFNDVXNjEzRlozSDRaTUY2UUhINDI2RVhNNVFUU0FWV1lIJyxcbiAgUkVDRUlWRVJfQUREUkVTUzogJ1NOMk5OMUpQOUFFUDVCVkUxOVJOSjZUMk1QN05ER1JaWVNUMVZERjNNJyxcbiAgVE9LRU5fTkFNRTogJ3RzaXA2ZHAtdG9rZW4nLFxuICBVTlNJR05FRF9TSU5HTEVfU0lHX1RYOlxuICAgICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDIwMDAwMDAwMTAxMDIxNTE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTAxMDAwMDAwMDAwMDAwMjcxMDAyMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTA4NzQ3MjYxNmU3MzY2NjU3MjAwMDAwMDA0MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjcxMDA1MWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMDUxNWFiNTBjYWM5NTNhYzU1ZWRjMTRlMmIyMzY4NTRiMWVhZDg2M2ZlY2UwYTAyMDAwMDAwMDEzMScsXG4gIFVOU0lHTkVEX1NJTkdMRV9TSUdfVFhfV0lUSE9VVF9NRU1POlxuICAgICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDIwMDAwMDAwMTAxMDIxNTE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTAxMDAwMDAwMDAwMDAwMjcxMDAyMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTA4NzQ3MjYxNmU3MzY2NjU3MjAwMDAwMDAzMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjcxMDA1MWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMDUxNWFiNTBjYWM5NTNhYzU1ZWRjMTRlMmIyMzY4NTRiMWVhZDg2M2ZlY2UnLFxuICBTSUdORURfTVVMVElfU0lHX1RYOlxuICAgICc4MDgwMDAwMDAwMDQwMTJmZTUwN2MwOWRiYjIzYzNiN2U1ZDE2NmM4MWZjNGI4NzY5MjUxMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAzMDIwMWU0Yzk4ZDc2ODdlYWI1ZjExZDAzZmViYzk2OTUxMzAxZWVkZTMzNjA4OGIwNmM1YTY3NmNjNjA5M2Y3MGUxNmIzZjM1MzNjY2Q4ZTZmOTIzOTBhMTdkY2M5MTdmNGU4Mjg2NTdmMTc2MDU1NzRhNWZjYmIzZGE1OWYyNTQ4M2RjMDIwMTkwOTVjMmY1MjE3ZTBmMTY4ZjI3YjYwNWI0N2U5ZWFjMmRhM2M1ZWEzMDljNDJhMjY3N2FkZGZiNjdjMWZkNDcxZWYyMDE4N2NlNmI4NWI1YjU0MWQ0YjRmMDBkMmY4ZWE4ZjdkNDJiZTg0MzI3OTY4Y2I5NDExNzMwYjUyMTdhMDAwMzhlM2M0NTI5Mzk1NjExYmU5YWJmNmZhM2I2OTg3ZTgxZDQwMjM4NWUzZDYwNWEwNzNmNDJmNDA3NTY1YTRhM2QwMDAyMDMwMjAwMDAwMDAxMDEwMjE1MmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMDEwMDAwMDAwMDAwMDAyNzEwMDIxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMDg3NDcyNjE2ZTczNjY2NTcyMDAwMDAwMDQwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwMDUxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwNTE1YWI1MGNhYzk1M2FjNTVlZGMxNGUyYjIzNjg1NGIxZWFkODYzZmVjZTBhMDIwMDAwMDAwMTMxJyxcbiAgU0lHTkVEX01VTFRJX1NJR19UWF9XSVRIT1VUX01FTU86XG4gICAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAwZDEyYTgwZjY3Y2RhYzcyYWQxMTYwNzVlODY4NDY5ODZhMDE1YTYwYmY1NDE4NTVlYTE3ZGRjNzk2MjBiNjc5YjBkNzVlNTIzY2JjNzYzODk2OWFkZGViMDQ3ZTczZWQxMWIzOThhODk0YjJmZDQ0NTk2MjNhZmIyZmMxMDQ2MWIwMjAwN2UwMWYyOGY5YWM1YjliYzMyZjNkZTgyNmY2OWFhYmNjNmIzNTdmYWE1MGQ5ODA4N2ZmMTI3MTRlYjNkMzUxZTUxNTQ4MmFmZjc4NGI1NGFiNTcyY2U2Zjg2YzFmNDBjNzFiMjFmZDE5N2U4NDZmYjM4ODcxOGY1NWYxN2Q0ZDMwMDAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZDAwMDIwMzAyMDAwMDAwMDEwMTAyMTUyZmU1MDdjMDlkYmIyM2MzYjdlNWQxNjZjODFmYzRiODc2OTI1MTBiMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwMTAwMDAwMDAwMDAwMDI3MTAwMjFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwODc0NzI2MTZlNzM2NjY1NzIwMDAwMDAwNDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI3MTAwNTFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTA1MTVhYjUwY2FjOTUzYWM1NWVkYzE0ZTJiMjM2ODU0YjFlYWQ4NjNmZWNlMDknLFxufTtcbiJdfQ==
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3Jlc291cmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQW1DO0FBRW5DOzs7Ozs7Ozs7R0FTRztBQUVVLFFBQUEsVUFBVSxHQUFHLGtFQUFrRSxDQUFDO0FBQ2hGLFFBQUEsT0FBTyxHQUNsQixvSUFBb0ksQ0FBQztBQUMxSCxRQUFBLFFBQVEsR0FBRywyQ0FBMkMsQ0FBQztBQUV2RCxRQUFBLFVBQVUsR0FBRyxrRUFBa0UsQ0FBQztBQUNoRixRQUFBLE9BQU8sR0FDbEIsb0lBQW9JLENBQUM7QUFDMUgsUUFBQSxpQkFBaUIsR0FBRyxvRUFBb0UsQ0FBQztBQUN6RixRQUFBLFFBQVEsR0FBRywwQ0FBMEMsQ0FBQztBQUVuRSwrQkFBK0I7QUFDL0Isd0JBQXdCO0FBQ1gsUUFBQSxLQUFLLEdBQ2hCLGlIQUFpSCxDQUFDO0FBQ3ZHLFFBQUEsS0FBSyxHQUNoQixpSEFBaUgsQ0FBQztBQUN2RyxRQUFBLGFBQWEsR0FBRyxrRUFBa0UsQ0FBQztBQUNuRixRQUFBLGFBQWEsR0FDeEIsb0lBQW9JLENBQUM7QUFDMUgsUUFBQSx1QkFBdUIsR0FBRyxvRUFBb0UsQ0FBQztBQUUvRixRQUFBLFNBQVMsR0FBRztJQUN2QixHQUFHLEVBQUUsa0JBQVU7SUFDZixHQUFHLEVBQUUsZUFBTztJQUNaLE9BQU8sRUFBRSxnQkFBUTtDQUNsQixDQUFDO0FBRVcsUUFBQSxTQUFTLEdBQUc7SUFDdkIsR0FBRyxFQUFFLGtCQUFVO0lBQ2YsR0FBRyxFQUFFLGVBQU87SUFDWixPQUFPLEVBQUUsZ0JBQVE7Q0FDbEIsQ0FBQztBQUVXLFFBQUEsUUFBUSxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxvRUFBb0U7Q0FDMUUsQ0FBQztBQUVXLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLE9BQU8sRUFBRSwyQ0FBMkM7Q0FDckQsQ0FBQztBQUVXLFFBQUEscUJBQXFCLEdB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QUM7QUFFMS9CLFFBQUEsYUFBYSxHQUFHO0lBQzNCLG9FQUFvRTtJQUNwRSxvRUFBb0U7SUFDcEUsb0VBQW9FO0NBQ3JFLENBQUM7QUFFVyxRQUFBLGtCQUFrQixHQUFHO0lBQ2hDO1FBQ0UsT0FBTyxFQUFFLDJDQUEyQztRQUNwRCxNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsUUFBUTtLQUNmO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsMkNBQTJDO1FBQ3BELE1BQU0sRUFBRSxTQUFTO1FBQ2pCLElBQUksRUFBRSxRQUFRO0tBQ2Y7SUFDRDtRQUNFLE9BQU8sRUFBRSwwQ0FBMEM7UUFDbkQsTUFBTSxFQUFFLFNBQVM7UUFDakIsSUFBSSxFQUFFLFFBQVE7S0FDZjtDQUNGLENBQUM7QUFFVyxRQUFBLElBQUksR0FBRyxRQUFRLENBQUM7QUFFaEIsUUFBQSxpQ0FBaUMsR0FBRztJQUMvQyxnQkFBZ0IsRUFBRSwwQ0FBMEM7SUFDNUQsYUFBYSxFQUFFLGVBQWU7SUFDOUIsYUFBYSxFQUFFLFVBQVU7SUFDekIsY0FBYyxFQUFFLDBDQUEwQztJQUMxRCxnQkFBZ0IsRUFBRSwyQ0FBMkM7SUFDN0QsVUFBVSxFQUFFLGVBQWU7SUFDM0Isc0JBQXNCLEVBQ3BCLG9uQkFBb25CO0lBQ3RuQixtQ0FBbUMsRUFDakMsc21CQUFzbUI7SUFDeG1CLG1CQUFtQixFQUNqQix3MEJBQXcwQjtJQUMxMEIsZ0NBQWdDLEVBQzlCLDR6QkFBNHpCO0NBQy96QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3R4TGliIH0gZnJvbSAnLi4vLi4vc3JjJztcblxuLypcbiAqIGtleXMgYW5kIGFkZHJlc3NlcyBhcmUgZnJvbTpcbiAqXG4gKiBpbXBvcnQgKiBhcyBzdCBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG4gKlxuICogY29uc3Qgc2VjcmV0S2V5MSA9IHN0LnByaXZhdGVLZXlUb1N0cmluZyhzdC5tYWtlUmFuZG9tUHJpdktleSgpKTtcbiAqIGNvbnN0IHB1YmxpY0tleTEgPSBzdC5wdWJsaWNLZXlUb1N0cmluZyhzdC5wdWJLZXlmcm9tUHJpdktleShzZWNyZXRLZXkxLmRhdGEpO1xuICogY29uc3QgYWRkcmVzczEgPSBzdC5nZXRBZGRyZXNzRnJvbVByaXZhdGVLZXkoc2VjcmV0S2V5MSk7XG4gKiBldGMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IHNlY3JldEtleTEgPSAnNjZjODg2NDgxMTZiNzIxYmIyZjM5NGUwMDA3ZjlkMzQ4ZWEwODAxN2I2ZTYwNGRlNTFhM2E3ZDk1N2Q1ODUyNCc7XG5leHBvcnQgY29uc3QgcHViS2V5MSA9XG4gICcwNGE2OGMyZDZmZGIzNzA2YjM5ZjMyZDZmNDIyNTI3NWNlMDYyNTYxOTA4ZmQ3Y2E1NDBhNDRjOTJlYjg1OTRlYTZkYjlmY2ZlMGIzOTBjMGVhZDNmNDVjMzZhZmQ2ODJlYWI2MmViMTI0YTYzYjQ2MDk0NWZlMWY3YzdmOGEwOWUyJztcbmV4cG9ydCBjb25zdCBhZGRyZXNzMSA9ICdTUDEwRkRIUVE0RjJGMEtITU42WjI0Uk1BTUdYNTkzM1NRSkNXS0FBUic7XG5cbmV4cG9ydCBjb25zdCBzZWNyZXRLZXkyID0gJzM1Nzk0YWRmMGRkMmEzMTNjMThiYzExOGI0MjI3NDBiYjk0Zjg1MTE0MTM0YmUzNDcwM2ZmNzA2NjU4MDg3ZTQnO1xuZXhwb3J0IGNvbnN0IHB1YktleTIgPVxuICAnMDQyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDhhOWM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhOTRhOWE3YzI0YTFjY2Q4Mzc5MjE3M2Y0NzVmZGI1OTBjYzgyZjk0ZmY2MTVkZjM5MTQyNzY2ZTc1OWNlNjM4Nyc7XG5leHBvcnQgY29uc3QgcHViS2V5MkNvbXByZXNzZWQgPSAnMDMyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDhhOWM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhJztcbmV4cG9ydCBjb25zdCBhZGRyZXNzMiA9ICdTUFM0SFNYQUQxV1NEMzk0M1daNTJNUFNZOVdQSzU2U0RHNTRIVEFSJztcblxuLy8gZXh0ZW5kZWQgcHJpdmF0ZS9wdWJsaWMga2V5c1xuLy8gU1RYIGRvZXMgbm90IHVzZSB0aGVtXG5leHBvcnQgY29uc3QgeHBydjEgPVxuICAneHBydjlzMjFaclFIMTQzSzM0YmRoQ1dNdWl1SGZkalFCMjFndTk1TndwZUdFRWZHTVdzN3RBNXMzUE1CQlBlSm1YbjVEUTN2djhIcDhrcTFLcnNhSkpuY3pXM0JNenRMMlZHVG54VlBnVmpncTFIJztcbmV4cG9ydCBjb25zdCB4cHViMSA9XG4gICd4cHViNjYxTXlNd0FxUmJjRllnNm9FM05HcnIyRGZadGFVallHTXp5a0Qzc25hQ0ZFS0NHUmhRN2JCZmYyZzNDWXZ5WVBRTUdTd1NlMURIOEdYdlA2dUIzaWlXc1BHR01iWFZaR2tyazFVeFFWazYnO1xuZXhwb3J0IGNvbnN0IHhwcnYxUHJvdG9jb2wgPSAnNzNlYTE5YWVhMjVlODdjNGVlOGVhZWUyMTQxNzQ0MmFjOWViNjg5OGY0NTM4YWRlOGYyMDkxZDFkMmM1OTQ2ZCc7XG5leHBvcnQgY29uc3QgeHB1YjFQcm90b2NvbCA9XG4gICcwNDI3OTRiYzQzZDc1ZGIwZTg1ODk5ODc4MTg3NTRhYTJmODIwYTM1MGE1NzQyZWZhZjBkNTA1MThmY2JjNmE4MGM1OTdhYTUxYWE4ZTc1NWZkMTBiNzUzZjdlMzY0MTA4NDkxNzFhOTlkODUzM2Y2ZWE4NGEwYzRkZmJlNmUyNDE5JztcbmV4cG9ydCBjb25zdCB4cHViMVByb3RvY29sQ29tcHJlc3NlZCA9ICcwMzI3OTRiYzQzZDc1ZGIwZTg1ODk5ODc4MTg3NTRhYTJmODIwYTM1MGE1NzQyZWZhZjBkNTA1MThmY2JjNmE4MGMnO1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF8xID0ge1xuICBwcnY6IHNlY3JldEtleTEsXG4gIHB1YjogcHViS2V5MSxcbiAgYWRkcmVzczogYWRkcmVzczEsXG59O1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF8yID0ge1xuICBwcnY6IHNlY3JldEtleTIsXG4gIHB1YjogcHViS2V5MixcbiAgYWRkcmVzczogYWRkcmVzczIsXG59O1xuXG5leHBvcnQgY29uc3QgU0VOREVSXzEgPSB7XG4gIHBydjogJ2VkZjlhZWU4NGQ5YjdhYmMxNDU1MDRkZGU2NzI2YzY0ZjM2OWQzN2VlMzRkZWQ4NjhmYWJkODc2YzI2NTcwYmMwMScsXG59O1xuXG5leHBvcnQgY29uc3QgUkVDSVBJRU5UXzEgPSB7XG4gIGFkZHJlc3M6ICdTUDNGR1E4WjdKWTlCV1laNVdNNTNFME05Tks3V0hKRjA2OTFOWjE1OScsXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEtleVBhaXJGcm9tUHJ2ID0gbmV3IFN0eExpYi5LZXlQYWlyKHtcbiAgcHJ2OiBzZWNyZXRLZXkxLFxufSk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0S2V5UGFpckZyb21QdWIgPSBuZXcgU3R4TGliLktleVBhaXIoe1xuICBwdWI6IHB1YktleTIsXG59KTtcblxuLy8gdmVyaWZ5IHNpZ25hdHVyZXNcbmV4cG9ydCBjb25zdCBtZXNzYWdlMSA9ICdhYmMnO1xuLy8gd2hlbiBzaWduZWQgd2l0aCBzZWNyZXRLZXkxXG5leHBvcnQgY29uc3QgZXhwZWN0ZWRTaWduYXR1cmUxID1cbiAgJzAwZTA0N2MwYTUxNDZkZjkzNDUyMjc5NWE5ZWMwOGZlYTM3ZTE0NTAyODdlYzJhYjY5N2VlNTBlMGIzOTUwMmQ2OTUzNzI0NDRhY2Y0N2QxMTdiZWM2MjFiYjM4ZGQ4ZjNiOTJhNDc5NzJhMjA5YzMwMjA0OWQ5NTU1ZDkxMmFmYTknO1xuXG5leHBvcnQgY29uc3QgbWVzc2FnZTIgPSAnaGVsbG8nO1xuLy8gd2hlbiBzaWduZWQgd2l0aCBzZWNyZXRLZXkyXG5leHBvcnQgY29uc3QgZXhwZWN0ZWRTaWduYXR1cmUyID1cbiAgJzAxMGM3NTUzMDNhZjc0ODYwYjc1Mjk3MmE2OTY1MWZlNzQwYWQ4ZjA5ZmJmODVkYzJmYzA2ZmM2M2UwMTJjMWNhNTMyYmFmMjBkMWM5Y2I4MWQ5MzAzMjE2ZWZjNmY2Y2M2YmQ3NzUzZmUyZThlYWE3YTA2ZDc3YmRkM2NlZGE4NTMnO1xuXG4vLyBzZWVkIGlzIEJ1ZmZlci5hbGxvYyg2NCkgLS0gYWxsIHplcm8gYnl0ZXNcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZFNlY3JldEtleSA9ICdlYWZkMTU3MDJmY2EzZjgwYmViNTY1ZTY2ZjE5ZTIwYmJhZDBhMzRiNDZiYjEyMDc1Y2JmMWM1ZDk0YmIyN2QyJztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZFB1YktleSA9XG4gICcwNDY2OTI2MWZlMjA0NTJmZTZhMDNlNjI1OTQ0YzZhMDUyM2U2MzUwYjNlYThjYmQzN2M5Y2ExZmY5N2UzYWM4YmYzZGQyZDUxYTA5ZDZkNDgzMWNiMmJjOTgyOGM1YWYxNGNlNGMzMzg0Yzk3M2Q3NWFhZDQyMzYyNmEyYTZkMThkJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc1VuY29tcHJlc3NlZE1haW5uZXQgPSAnU1AyMVg4UE1IOFQ0TVZYOFo3NUpaUFlFVkE2UThGRFI3UEoxM01WNFEnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc1VuY29tcHJlc3NlZFRlc3RuZXQgPSAnU1QyMVg4UE1IOFQ0TVZYOFo3NUpaUFlFVkE2UThGRFI3UEc4OFdUVkYnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc0NvbXByZXNzZWRNYWlubmV0ID0gJ1NQMzFNQlJGOUo4VzIyVzMwNDRNRUFaRFhGTU04NTY5OTY1M1pLUjdRJztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZEFkZHJlc3NDb21wcmVzc2VkVGVzdG5ldCA9ICdTVDMxTUJSRjlKOFcyMlczMDQ0TUVBWkRYRk1NODU2OTk2N1RGMVI0MSc7XG5cbmV4cG9ydCBjb25zdCBJTlZBTElEX0tFWVBBSVJfUFJWID0gbmV3IFN0eExpYi5LZXlQYWlyKHtcbiAgcHJ2OiAnOENBQTAwQUU2MzYzOEIwNTQyQTMwNDgyM0Q2NkQ5NkZGMzE3QTU3NkY2OTI2NjNEQjJGODVFNjBGQUIyNTkwQycsXG59KTtcblxuZXhwb3J0IGNvbnN0IFRYX1NFTkRFUiA9IHtcbiAgcHJ2OiAnY2IzZGYzODA1M2QxMzI4OTUyMjBiOWNlNDcxZjZiNjc2ZGI1YjliZjBiNGFkZWZiNTVmMjExOGVjZTI0NzhkZjAxJyxcbiAgcHViOiAnMDM3OTdkZDY1MzA0MGQzNDRmZDA0OGMxYWQwNWQ0Y2JjYjIxNzhiMzBjNmEwYzQyNzY5OTQ3OTVmM2U4MzNkYTQxJyxcbiAgYWRkcmVzczogJ1NUQjQ0SFlQWUFUMkJCMlFFNTEzTlNQODFIVE1ZV0JKUDAySFBHSzYnLFxufTtcblxuZXhwb3J0IGNvbnN0IFRYX1JFQ0lFVkVSID0ge1xuICBhZGRyZXNzOiAnU1RERTdZOEhWM1JYOFZCTTJUWlZXSlRTN1pBMVhCMFNTQzNORVZIMCcsXG59O1xuXG5leHBvcnQgY29uc3QgUkFXX1RYX1VOU0lHTkVEID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDAwNTFhMWFlM2Y5MTFkOGYxZDQ2ZDc0MTZiZmJlNGI1OTNmZDQxZWFjMTljYjAwMDAwMDAwMDAwMDAzZTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG5cbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT04gPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxMWFlMDZjMTRjOTY3Zjk5OTE4NGVhOGE3OTEzMTI1ZjA5YWI2NDAwNDQ0NmZjYTg5OTQwZjA5MjUwOTEyNGI5ZTc3M2FlZjQ4M2U5MjU0NzZjNzhlYzU4MTY2ZGNlY2FiMzg3NWI4ZmFiOGU5YWE0MjEzMTc5ZDE2NDQ2Mzk2MjgwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuLy8gVHJhbnNhY3Rpb25zIHNpZ24gd2l0aCAyIG9mIDMga2V5cy5cbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT05fUEtfMV8zID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAwOTQ3M2EzN2I5MTRmNzAzYzgxZjMzMTQxZDEwZWFiZTQ1NTBjNGQ2MWYxMTM2NjJjYzExY2RjMDQ2M2ZjMzc3MzU4NDA4YzczZDNkMzI3M2NkYmNjMzUxMWRiYmQyMDMxYjVlYWNhNGNiMmIxMzkyNWRhOWY5YjBjN2U2NGQxYTYwMDAyNGFiZGRkNjNiNTZjNTVjZDFlZDA4MDNjMjZjNDczZjVmMGI5ZDg0NzNiMzdiNjViZDgxMmYwMzUzNjVmMTU0YjAyMDE2YWFjMDM0N2I4NTIwZDg5MDVjYmQxM2M2MDFmNDVhMGNjYmJiMjQ4MzEzMjBjNTRkOWVlMmMxZTM2NTZiNzZkNzVlMWM1Mjc5MzIyNjdkODBiZWI5MDI1N2JiZTJkYzcxODRkOWIxNjg5OTNhYjNhNDBmYTczYmU2OTczYzVmNTAwMDIwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODc0NjU3Mzc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT05fUEtfMl8zID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMDAyYjA4N2NhNTJmNDBmZGZkZjRiMTZhMGJiZjdlOTFlNGRiMmUxODNhYzVjNjQ5MWE1ZjYwYTU0NTBlMjVkZTdkMDAyMDAwNDM2ZjkwNmQwNDAzODhlMzEyM2ViOWMzNzYxNGQ3ZjM5ZGEyZjI4MzM4NWNkYTQwOTk3MjEyYWNmYTViMjRkMDMyZmFjODI5OWFlOTU5MGZiZDI0ZDYzOThhYzFjNDg5YjUyM2M0MThkOGMwNmIzNTQ2N2U2ODUxOTk4Nzc4NjAyMDFkYmExNmQwNDBmMGFmMmZhOGQ0YmYzODhjYmM3ZjBjZDc0NjNhYTcwNThjNDlmN2U1ZGIyZDcyZDg2OGQ3MTY3NTI4Y2Q4MzkzMzY5Yjk0NDgwZjliN2Y4YTJjOTA4N2NiZDU3ZDRkMWE3ODJlNTUzZjljZWRlNjY2NDJkMTJjOTAwMDIwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODc0NjU3Mzc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuLy8gcmlnaHQgbGVuZ3RoIGFuZCBmb3JtYXQsIGJ1dCBpbnZhbGlkXG5leHBvcnQgY29uc3QgaW52YWxpZFB1YktleTEgPSAnMDMyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDgwMGM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhJztcbmV4cG9ydCBjb25zdCBpbnZhbGlkUHViS2V5MiA9XG4gICcwNGE2OGMyZDZmZGIzNzA2YjM5ZjMyZDZmNDIyNTI3NWNlMDYyNTYxOTA4ZmQ3Y2E1NDBhNDRjOTJlYjg1OTRlYTZkYjlmY2ZlMGIzOTBjMGVhZDNmNDVjMzZhZmQ2ODJlYWI2MmViMTI0YTYzYjQ2MDk0NWZlMWY3YzdmOGEwOWUxJztcblxuLy8gbXVsdGkgc2lnXG5leHBvcnQgY29uc3QgcHJ2MSA9ICcyMWQ0M2QyYWUwZGExZDlkMDRjZmNhYWM3ZDM5N2EzMzczMzg4MTA4MWYwYjJjZDAzODA2MmNmMGNjYmI3NTI2MDEnO1xuZXhwb3J0IGNvbnN0IHBydjIgPSAnYzcxNzAwYjA3ZDUyMGE4Yzk3MzFlNGQwZjA5NWFhNmVmYjkxZTE2ZTI1ZmIyN2NlMmI3MmU3YjY5OGY4MTI3YTAxJztcbmV4cG9ydCBjb25zdCBwcnYzID0gJ2U3NWRjYjY2Zjg0Mjg3ZWFmMzQ3OTU1ZTk0ZmEwNDMzNzI5OGRiZDk1YWEwZGJiOTg1NzcxMTA0ZWYxOTEzZGIwMSc7XG5leHBvcnQgY29uc3QgcHViMSA9ICcwMmIwODdjYTUyZjQwZmRmZGY0YjE2YTBiYmY3ZTkxZTRkYjJlMTgzYWM1YzY0OTFhNWY2MGE1NDUwZTI1ZGU3ZDAnO1xuZXhwb3J0IGNvbnN0IHB1YjIgPSAnMDI0YWJkZGQ2M2I1NmM1NWNkMWVkMDgwM2MyNmM0NzNmNWYwYjlkODQ3M2IzN2I2NWJkODEyZjAzNTM2NWYxNTRiJztcbmV4cG9ydCBjb25zdCBwdWIzID0gJzAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZCc7XG5leHBvcnQgY29uc3QgTVVMVElfU0lHX1NJR05FRF9UUkFOU0FDVElPTiA9XG4gICc4MDgwMDAwMDAwMDQwMTJmZTUwN2MwOWRiYjIzYzNiN2U1ZDE2NmM4MWZjNGI4NzY5MjUxMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAzMDIwMTIzZDZkM2QyMmQyY2ExYjczMTBmNWM0NTMxNGQxZTc4M2MwMzE5M2UxYmI1ZTA4Njg1ZmMxYTQ4ZjhiZGFjN2MwZDkzYTQ2M2VmZWUxOGI5YjQxZmZmZTM4ZDRiNGM3NDc1ODA5YTM3YzBmZDUzZjUyY2VmNDU2YThkOTI4MGRiMDIwMDEwYjMxMWY4MmIxYjExMWViNWVmYTE2YzQ3OTA2ODdiMTZkYzkyYjdiNGQwN2ExZjBmMWZlNjViYWVlNDNlYjAyZWRlMjI2ZjgwN2EwOTcyMzdlN2QwZWUzYWE0ZmRmOWI2Mjg3ZGQyM2Q4MTllYzU2MGRmMTgwODc1ZjQwMTlhMDAwMzhlM2M0NTI5Mzk1NjExYmU5YWJmNmZhM2I2OTg3ZTgxZDQwMjM4NWUzZDYwNWEwNzNmNDJmNDA3NTY1YTRhM2QwMDAyMDMwMjAwMDAwMDAwMDAwNTFhMWFlM2Y5MTFkOGYxZDQ2ZDc0MTZiZmJlNGI1OTNmZDQxZWFjMTljYjAwMDAwMDAwMDAwMDAzZTg3NDY1NzM3NDIwNmQ2NTZkNmYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG5cbi8vIGNvbnRyYWN0IGNhbGxcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9BRERSRVNTID0gJ1NUMDAwMDAwMDAwMDAwMDAwMDAwMDAyQU1XNDJIJztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9OQU1FID0gJ3BveC00JztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9GVU5DVElPTl9OQU1FID0gJ3N0YWNrLXN0eCc7XG5leHBvcnQgY29uc3QgVU5TSUdORURfU0VMRl9TVEFDS19DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDIxYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTcwNmY3ODJkMzQwOTczNzQ2MTYzNmIyZDczNzQ3ODAwMDAwMDA4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxN2Q3ODQwMDBjMDAwMDAwMDIwOTY4NjE3MzY4NjI3OTc0NjU3MzAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwNzc2NjU3MjczNjk2ZjZlMDIwMDAwMDAwMTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwY2U0MDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwYTAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDFmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWUyNDAnO1xuZXhwb3J0IGNvbnN0IFNJR05FRF9TRUxGX1NUQUNLX0NPTlRSQUNUX0NBTEwgPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxODMzZGI3OWNkOWMzOWM3MjYyYjgwOGI2ZWE4MGEwMDFhOWJkMjkwNjQ4Y2YzYTE5ZGE5NWYxMGQxODE0ZDY5NDM3YTAwMDc1ZTgzMjVlZjU2NGVkOWQ2NjkwYzU3NTU4M2JjYmIyOWM0ZTMzYzhjZTgwYzM0ZTdlZmQxZjU0NTcwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE3ZDc4NDAwMGMwMDAwMDAwMjA5Njg2MTczNjg2Mjc5NzQ2NTczMDIwMDAwMDAwOTczNmY2ZDY1MmQ2ODYxNzM2ODA3NzY2NTcyNzM2OTZmNmUwMjAwMDAwMDAxMDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjZTQwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjBhMDIwMDAwMDAwOTczNmY2ZDY1MmQ2ODYxNzM2ODAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwMWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxZTI0MCc7XG5cbmV4cG9ydCBjb25zdCBVTlNJR05FRF9DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDIxYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTcwNmY3ODJkMzQwOTczNzQ2MTYzNmIyZDczNzQ3ODAwMDAwMDA0MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxN2Q3ODQwMDA1MTYzMjQ4ZTdhYTY4Nzk5NjhkMjQxZjNlNTE1MmQ5ZjI3OTY5OTRkOTZjMGEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGM4MGEwYzAwMDAwMDAyMDk2ODYxNzM2ODYyNzk3NDY1NzMwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDc3NjY1NzI3MzY5NmY2ZTAyMDAwMDAwMDEwMSc7XG5leHBvcnQgY29uc3QgU0lHTkVEX0NPTlRSQUNUX1dJVEhfQVJHUyA9XG4gICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDBkYmE0ZDc3NWQ2ODk0NzQ2ZjBiOGZmM2NiYzFiMGYyNjk2ODkwZDA2NjlmZmJiOGViOGRmNTEwOTg3NDExMTVlMjhhZjQ0OGE1OTU4M2UzZDM0ZTM0NGMzNDg3OWM1YzdhODJkMjIzODMzYzEyMTRkMTNjZDk4MTMxNjVkOGUxZTAzMDIwMDAwMDAwMDAyMWEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU3MDZmNzgyZDM0MDk3Mzc0NjE2MzZiMmQ3Mzc0NzgwMDAwMDAwNDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTdkNzg0MDAwNTE2MzI0OGU3YWE2ODc5OTY4ZDI0MWYzZTUxNTJkOWYyNzk2OTk0ZDk2YzA5MGEwYzAwMDAwMDAyMDk2ODYxNzM2ODYyNzk3NDY1NzMwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDc3NjY1NzI3MzY5NmY2ZTAyMDAwMDAwMDEwMSc7XG5leHBvcnQgY29uc3QgU0lHTkVEX0NPTlRSQUNUX0NBTEwgPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxYjY5M2JkZjAxNGMxYWM3OGUzMDdmZWQ0OWJjMWRmOGZlZDJhNWU0MmQ0Yjc5OTkzZjVkZjYyNmQ3YjFiMjUxNjc0MTQ5NTE5OGEzZGJmMDc5ZGVlYmM0NmVjZGQ1MzVmZTY2ZjUxOGMwYTY5NWM1MzNmMTY2NzQ1NWEwNTAzNmEwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDEwYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN2InO1xuZXhwb3J0IGNvbnN0IE1VTFRJX1NJR19DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAxNjlhMDMyMTEyMzczYjQ4MWM0OGVjYjEyYjg4NDc1MTlmODk3MjBkNDI5N2E3YmY1Y2FjNDNiOWRhYThkNGFkMjNkZDUzNjU3MDg5ZGFkNTVjOTRlOGJlNTc2MmU5NzA1MjY4M2Y0OWUxZjQ1N2IyZTkyNTJmMjdlOTc1NjAzMjMwMjAwMTI4ZDBiYTJiOTU4NDMzOTM1OWZmNDJjMWQ2ZjM1Y2U3OWE3MDczMTUyYjNjOTA4NzliYzUxNjJlYjhkZjczYjAyZWFkYTNlZTMyMjg3M2E1ZmE3MzY0NzllNmM1MzYxMDk2ODE0ODJkOWYyMmYxZTFhODk2MDgwOTBiODY2NjgwMDAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZDAwMDIwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDEwYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN2InO1xuXG4vLyBjb250cmFjdCBjYWxsIHdpdGggbWVtbyBub25jZSA0NW4sXG5leHBvcnQgY29uc3QgU0VORF9NQU5ZX0NPTlRSQUNUX0FERFJFU1NfV0lUSF9NRU1PID0gJ1NUM0YxWDRRR1YyU004WEQ5Nlg0NU02UlRRWEtBMVBaSlpaQ1FBQjRCJztcbmV4cG9ydCBjb25zdCBTRU5EX01BTllfQ09OVFJBQ1RfTkFNRV9XSVRIX01FTU8gPSAnc2VuZC1tYW55LW1lbW8nO1xuZXhwb3J0IGNvbnN0IFNFTkRfTUFOWV9DT05UUkFDVF9GVU5DVElPTl9OQU1FX1dJVEhfTUVNTyA9ICdzZW5kLW1hbnknO1xuZXhwb3J0IGNvbnN0IFVOU0lHTkVEX1NFTkRfTUFOWV9XSVRIX01FTU8gPVxuICAnODA4MDAwMDAwMDA0MDFlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDAwMDAwMDAwMDAwMDAyZDAwMDAwMDAwMDAwMDAyMTQwMDAwMDAwMzAwMDI0YjVkOTI0ZWNjMDUyZjk1MTUzMzQwMDU0Y2FlNTI2ZDE2ZTkwNDI4OGUxOWUxOTQ2ZTE5NzczODdmNjgyOGM5MDAwMjk0ZWFiOTk1ODQ0YTMzNGY0YjdkOTQ2NTAwYTRlNzk0ZjVmNWY2ZTg3ZjliMjY3MTc1NDA4YzAzZTI4MDY0MGQwMDAyYjdiYTNlMTdlMzE0OTZiYmYxNTU1OTZkYzNmMmEwMmRlNDU3Y2ZmZWFkMDE3ZjY3MWY2NWQ5ZDM0YWIyNjFlYTAwMDIwMzAyMDAwMDAwMDEwMDAyMTVlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDEwMDAwMDAwMDAwNWI4ZDgwMDIxYWRlMWU5MmYwZDhiMzQ0NzVhOTM3NDg1YTFiMWFiZjY2YTBkYmYyZmYwZTczNjU2ZTY0MmQ2ZDYxNmU3OTJkNmQ2NTZkNmYwOTczNjU2ZTY0MmQ2ZDYxNmU3OTAwMDAwMDAxMGIwMDAwMDAwMzBjMDAwMDAwMDMwNDZkNjU2ZDZmMDIwMDAwMDAwNjZkNjU2ZDZmMjAzMTAyNzQ2ZjA1MTVhNGIwODIzYTk5ZmM1ZTg3YjhiZDJlN2U3YzE4OTkxNTM1NWUxYzBhMDQ3NTczNzQ3ODAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZjQyNDAwYzAwMDAwMDAzMDQ2ZDY1NmQ2ZjAyMDAwMDAwMDY2ZDY1NmQ2ZjIwMzIwMjc0NmYwNTE1OWZjYWUzYWViZGQ5MTc3Y2EwYzIyMTRjZjBjNWM2YTk2Mzk4YTliODA0NzU3Mzc0NzgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWU4NDgwMGMwMDAwMDAwMzA0NmQ2NTZkNmYwMjAwMDAwMDA2NmQ2NTZkNmYyMDMzMDI3NDZmMDUxNTE4MmQ1YzNiNmQ2NzM3NjYyNjU5N2VlODNmYmE2MmIzOTJhMTViZWIwNDc1NzM3NDc4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDJkYzZjMCc7XG5leHBvcnQgY29uc3QgU0lHTkVEX1NFTkRfTUFOWV9XSVRIX01FTU8gPVxuICAnODA4MDAwMDAwMDA0MDFlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDAwMDAwMDAwMDAwMDAyZDAwMDAwMDAwMDAwMDAyMTQwMDAwMDAwMzAyMDBlNjkyY2IyMTNiY2UwMzVlMzhkNWZhMzFkZjU0YTMwMzliM2QyNGFmMDVmNjZjMDQ2OTY0NjE1YWNiNzM5NjcwMzY4ZjQyNGFmMWM2MGMwOTYxYWY1Zjk3NmI0NmM2YWQxNTkzYjY4NTRmM2Q5M2IwN2MzNjFhN2VmMzQ4NDU2NTAyMDE3YjljZGVkZWIzZmQ5MmZlNDkwMTlmNGUzMTAwNTJlODVhNGMzYmI0NmMwZWU4OWRiNjVmN2M3ZTczNTkyZTdiNjBhOWMxMjdmYmJiMTI1YTEyNGJhYTNlZmIwZGQ2Nzk4NzljNzBjNGE2Y2E1NWYzYWZhY2VkYjE1NjVkZGU2YzAwMDJiN2JhM2UxN2UzMTQ5NmJiZjE1NTU5NmRjM2YyYTAyZGU0NTdjZmZlYWQwMTdmNjcxZjY1ZDlkMzRhYjI2MWVhMDAwMjAzMDIwMDAwMDAwMTAwMDIxNWU3YTRiNzc0NGU5OWE1NDc2MGNhNzZlNTRmNGQ4MWU0YjYwMjYyMzcwMTAwMDAwMDAwMDA1YjhkODAwMjFhZGUxZTkyZjBkOGIzNDQ3NWE5Mzc0ODVhMWIxYWJmNjZhMGRiZjJmZjBlNzM2NTZlNjQyZDZkNjE2ZTc5MmQ2ZDY1NmQ2ZjA5NzM2NTZlNjQyZDZkNjE2ZTc5MDAwMDAwMDEwYjAwMDAwMDAzMGMwMDAwMDAwMzA0NmQ2NTZkNmYwMjAwMDAwMDA2NmQ2NTZkNmYyMDMxMDI3NDZmMDUxNWE0YjA4MjNhOTlmYzVlODdiOGJkMmU3ZTdjMTg5OTE1MzU1ZTFjMGEwNDc1NzM3NDc4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDBjMDAwMDAwMDMwNDZkNjU2ZDZmMDIwMDAwMDAwNjZkNjU2ZDZmMjAzMjAyNzQ2ZjA1MTU5ZmNhZTNhZWJkZDkxNzdjYTBjMjIxNGNmMGM1YzZhOTYzOThhOWI4MDQ3NTczNzQ3ODAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxZTg0ODAwYzAwMDAwMDAzMDQ2ZDY1NmQ2ZjAyMDAwMDAwMDY2ZDY1NmQ2ZjIwMzMwMjc0NmYwNTE1MTgyZDVjM2I2ZDY3Mzc2NjI2NTk3ZWU4M2ZiYTYyYjM5MmExNWJlYjA0NzU3Mzc0NzgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMmRjNmMwJztcblxuZXhwb3J0IGNvbnN0IHBydktleXNTdHJpbmcgPSBbXG4gICdlNTU4ODNkNTMzMzVjZGYwZmU0YzUwNTA1MTM4MmIyZjdjYjk1MjE2NjYzZTQwODBlYmJjYWE3NGJjY2E5NzUwMDEnLFxuICAnMDk3MWIyYmExOTNmZDM5M2E0YzM5ZWZjY2MzZDYzYmFmZjVkNDk4NTAwYWNmYzk3Yzg3NjU1MzE2NTIyNzQyNDAxJyxcbiAgJzA0MWM4YjRiYTgyNTA4NTVhNGEzY2Q0ZDliMjhlNDU2MmM5ZjRhZWU5N2Y3OTQ0MmJiOWZmMmNmZjY4NDUyMjAwMScsXG5dO1xuXG5leHBvcnQgY29uc3Qgc2VuZE1hbnlSZWNpcGllbnRzID0gW1xuICB7XG4gICAgYWRkcmVzczogJ1NOMkpCMTBIVEs3WTVYMVhSUU1RN1daMFJLNEFLQVFHVzFBNzU1WVlUJyxcbiAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICBtZW1vOiAnbWVtbyAxJyxcbiAgfSxcbiAge1xuICAgIGFkZHJlc3M6ICdTTjJGV05SWEVRUUNIRVo1MFI4R01TVzY1UlRNUDc2NTlRMk1ZWTlQNCcsXG4gICAgYW1vdW50OiAnMjAwMDAwMCcsXG4gICAgbWVtbzogJ21lbW8gMicsXG4gIH0sXG4gIHtcbiAgICBhZGRyZXNzOiAnU05DMlRRMVZETktLRVNINkI1WkVHRlhUQ0FTUzU4QVZYREFDOUg3VycsXG4gICAgYW1vdW50OiAnMzAwMDAwMCcsXG4gICAgbWVtbzogJ21lbW8gMycsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgTUVNTyA9ICdtZW1vIDEnO1xuXG5leHBvcnQgY29uc3QgRlVOR0lCTEVfVE9LRU5fVFJBTlNGRVJfQ09OU1RBTlRTID0ge1xuICBDT05UUkFDVF9BRERSRVNTOiAnU1RBRzE4RTQ1VzYxM0ZaM0g0Wk1GNlFISDQyNkVYTTVRVFNBVldZSCcsXG4gIENPTlRSQUNUX05BTUU6ICd0c2lwNmRwLXRva2VuJyxcbiAgRlVOQ1RJT05fTkFNRTogJ3RyYW5zZmVyJyxcbiAgU0VOREVSX0FERFJFU1M6ICdTVEFHMThFNDVXNjEzRlozSDRaTUY2UUhINDI2RVhNNVFUU0FWV1lIJyxcbiAgUkVDRUlWRVJfQUREUkVTUzogJ1NOMk5OMUpQOUFFUDVCVkUxOVJOSjZUMk1QN05ER1JaWVNUMVZERjNNJyxcbiAgVE9LRU5fTkFNRTogJ3RzaXA2ZHAtdG9rZW4nLFxuICBVTlNJR05FRF9TSU5HTEVfU0lHX1RYOlxuICAgICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDIwMDAwMDAwMTAxMDIxNTE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTAxMDAwMDAwMDAwMDAwMjcxMDAyMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTA4NzQ3MjYxNmU3MzY2NjU3MjAwMDAwMDA0MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjcxMDA1MWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMDUxNWFiNTBjYWM5NTNhYzU1ZWRjMTRlMmIyMzY4NTRiMWVhZDg2M2ZlY2UwYTAyMDAwMDAwMDEzMScsXG4gIFVOU0lHTkVEX1NJTkdMRV9TSUdfVFhfV0lUSE9VVF9NRU1POlxuICAgICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDIwMDAwMDAwMTAxMDIxNTE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTAxMDAwMDAwMDAwMDAwMjcxMDAyMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTA4NzQ3MjYxNmU3MzY2NjU3MjAwMDAwMDAzMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjcxMDA1MWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMDUxNWFiNTBjYWM5NTNhYzU1ZWRjMTRlMmIyMzY4NTRiMWVhZDg2M2ZlY2UnLFxuICBTSUdORURfTVVMVElfU0lHX1RYOlxuICAgICc4MDgwMDAwMDAwMDQwMTJmZTUwN2MwOWRiYjIzYzNiN2U1ZDE2NmM4MWZjNGI4NzY5MjUxMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAzMDIwMWU0Yzk4ZDc2ODdlYWI1ZjExZDAzZmViYzk2OTUxMzAxZWVkZTMzNjA4OGIwNmM1YTY3NmNjNjA5M2Y3MGUxNmIzZjM1MzNjY2Q4ZTZmOTIzOTBhMTdkY2M5MTdmNGU4Mjg2NTdmMTc2MDU1NzRhNWZjYmIzZGE1OWYyNTQ4M2RjMDIwMTkwOTVjMmY1MjE3ZTBmMTY4ZjI3YjYwNWI0N2U5ZWFjMmRhM2M1ZWEzMDljNDJhMjY3N2FkZGZiNjdjMWZkNDcxZWYyMDE4N2NlNmI4NWI1YjU0MWQ0YjRmMDBkMmY4ZWE4ZjdkNDJiZTg0MzI3OTY4Y2I5NDExNzMwYjUyMTdhMDAwMzhlM2M0NTI5Mzk1NjExYmU5YWJmNmZhM2I2OTg3ZTgxZDQwMjM4NWUzZDYwNWEwNzNmNDJmNDA3NTY1YTRhM2QwMDAyMDMwMjAwMDAwMDAxMDEwMjE1MmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMDEwMDAwMDAwMDAwMDAyNzEwMDIxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMDg3NDcyNjE2ZTczNjY2NTcyMDAwMDAwMDQwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwMDUxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwNTE1YWI1MGNhYzk1M2FjNTVlZGMxNGUyYjIzNjg1NGIxZWFkODYzZmVjZTBhMDIwMDAwMDAwMTMxJyxcbiAgU0lHTkVEX01VTFRJX1NJR19UWF9XSVRIT1VUX01FTU86XG4gICAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAwZDEyYTgwZjY3Y2RhYzcyYWQxMTYwNzVlODY4NDY5ODZhMDE1YTYwYmY1NDE4NTVlYTE3ZGRjNzk2MjBiNjc5YjBkNzVlNTIzY2JjNzYzODk2OWFkZGViMDQ3ZTczZWQxMWIzOThhODk0YjJmZDQ0NTk2MjNhZmIyZmMxMDQ2MWIwMjAwN2UwMWYyOGY5YWM1YjliYzMyZjNkZTgyNmY2OWFhYmNjNmIzNTdmYWE1MGQ5ODA4N2ZmMTI3MTRlYjNkMzUxZTUxNTQ4MmFmZjc4NGI1NGFiNTcyY2U2Zjg2YzFmNDBjNzFiMjFmZDE5N2U4NDZmYjM4ODcxOGY1NWYxN2Q0ZDMwMDAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZDAwMDIwMzAyMDAwMDAwMDEwMTAyMTUyZmU1MDdjMDlkYmIyM2MzYjdlNWQxNjZjODFmYzRiODc2OTI1MTBiMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwMTAwMDAwMDAwMDAwMDI3MTAwMjFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwODc0NzI2MTZlNzM2NjY1NzIwMDAwMDAwNDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI3MTAwNTFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTA1MTVhYjUwY2FjOTUzYWM1NWVkYzE0ZTJiMjM2ODU0YjFlYWQ4NjNmZWNlMDknLFxufTtcbiJdfQ==
|