@bitgo/sdk-coin-stx 4.0.5 → 4.0.7

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.
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNENBLDBEQUVDO0FBUUQsMENBRUM7QUE0QkQsZ0RBVUM7QUFRRCxzQ0FHQztBQVFELHdDQUVDO0FBWUQsb0RBTUM7QUFZRCw0Q0FzQkM7QUFhRCw4Q0FRQztBQWtCRCxzREFZQztBQVFELGtDQVFDO0FBU0Qsd0RBTUM7QUFRRCxrRUFFQztBQVVELDhCQUlDO0FBV0QsNERBb0JDO0FBU0Qsa0NBT0M7QUFhRCwwQ0FjQztBQVFELDhDQTZCQztBQVFELDRDQVlDO0FBUUQsa0VBT0M7QUFRRCxrQ0FvQkM7QUFRRCw0REFtQkM7QUFFRCw4RUFvQkM7QUFRRCw4Q0FHQztBQWdCRCxrREFXQztBQVFELDBDQUVDO0FBUUQsd0NBR0M7QUFTRCw4Q0FLQztBQVNELDBEQU9DO0FBU0QsZ0ZBT0M7QUFRRCxnRkFTQztBQTFtQkQseUNBQTJCO0FBQzNCLGdFQUFxQztBQUNyQyxxREFBOEQ7QUFDOUQsdURBMEI4QjtBQUM5Qix1REFBb0Q7QUFDcEQsMENBQTRCO0FBQzVCLDhDQUE4RztBQUU5Ryx3QkFBNEI7QUFDNUIsNENBQXdGO0FBQ3hGLDJDQUE0RDtBQUU1RDs7Ozs7R0FLRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLElBQVk7SUFDbEQsT0FBTyxJQUFBLDZCQUFXLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLEdBQVc7SUFDekMsT0FBTyxJQUFBLGdDQUFjLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLDJCQUEyQixDQUNsQyxhQUFxQixFQUNyQixRQUF5QixFQUN6QixrQkFBc0M7SUFFdEMsSUFBSSxhQUFhLENBQUMs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QUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxvQkFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsZUFBZSxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUM7YUFDM0csR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFrQixDQUFDLENBQUM7UUFDckMsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGtDQUFrQyxDQUFDLE9BQWU7SUFDaEUsTUFBTSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEMsT0FBTztRQUNMLE9BQU8sRUFBRSxXQUFXO1FBQ3BCLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUztLQUNwQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHVybCBmcm9tICd1cmwnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgYnVmZmVyVG9IZXgsIHN0cmlwSGV4UHJlZml4IH0gZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7XG4gIGFkZHJlc3NGcm9tUHVibGljS2V5cyxcbiAgYWRkcmVzc0Zyb21WZXJzaW9uSGFzaCxcbiAgQWRkcmVzc0hhc2hNb2RlLFxuICBhZGRyZXNzSGFzaE1vZGVUb1ZlcnNpb24sXG4gIGFkZHJlc3NUb1N0cmluZyxcbiAgQWRkcmVzc1ZlcnNpb24sXG4gIEJ1ZmZlclJlYWRlcixcbiAgQ2xhcml0eVR5cGUsXG4gIENsYXJpdHlWYWx1ZSxcbiAgY3JlYXRlQWRkcmVzcyxcbiAgY3JlYXRlTWVtb1N0cmluZyxcbiAgY3JlYXRlTWVzc2FnZVNpZ25hdHVyZSxcbiAgY3JlYXRlU3RhY2tzUHJpdmF0ZUtleSxcbiAgY3JlYXRlU3RhY2tzUHVibGljS2V5LFxuICBjdlRvU3RyaW5nLFxuICBjdlRvVmFsdWUsXG4gIGRlc2VyaWFsaXplVHJhbnNhY3Rpb24sXG4gIFB1YktleUVuY29kaW5nLFxuICBwdWJsaWNLZXlGcm9tU2lnbmF0dXJlLFxuICBzZXJpYWxpemVDVixcbiAgc2lnbldpdGhLZXksXG4gIFN0YWNrc1RyYW5zYWN0aW9uLFxuICBzdGFuZGFyZFByaW5jaXBhbENWLFxuICBUcmFuc2FjdGlvblZlcnNpb24sXG4gIHZhbGlkYXRlU3RhY2tzQWRkcmVzcyxcbn0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgc2VjcDI1NmsxIH0gZnJvbSAnQG5vYmxlL2N1cnZlcy9zZWNwMjU2azEnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIGlzVmFsaWRYcHJ2LCBpc1ZhbGlkWHB1YiwgU2lnbmluZ0Vycm9yLCBVdGlsc0Vycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEFkZHJlc3NEZXRhaWxzLCBTZW5kUGFyYW1zLCBUb2tlblRyYW5zZmVyUGFyYW1zIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBjb2lucywgU2lwMTBUb2tlbiwgU3RhY2tzTmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmsgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBWQUxJRF9DT05UUkFDVF9GVU5DVElPTl9OQU1FUyB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBFbmNvZGVzIGEgYnVmZmVyIGFzIGEgXCIweFwiIHByZWZpeGVkIGxvd2VyLWNhc2UgaGV4IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZiAtIGEgYnVmZmVyIHdpdGggYSBoZXhhZGVjaW1hbCBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleGFkZWNpbWFsIHN0cmluZyBwcmVmaXhlZCB3aXRoIFwiMHhcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVmZmVyVG9IZXhQcmVmaXhTdHJpbmcoYnVmZjogQnVmZmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGJ1ZmZlclRvSGV4KGJ1ZmYpO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgXCIweFwiIHByZWZpeCBmcm9tIHRoZSBnaXZlbiBzdHJpbmcsIGlmIHByZXNlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGhleCAtIGEgaGV4YWRlY2ltYWwgc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBoZXhhZGVjaW1hbCBzdHJpbmcgd2l0aG91dCBhIGxlYWRpbmcgXCIweFwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVIZXhQcmVmaXgoaGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaXBIZXhQcmVmaXgoaGV4KTtcbn1cblxuLyoqXG4gKiBHZXQgc3RhY2tzIGFkZHJlc3MgZnJvbSBwdWJsaWMga2V5IGhhc2hcbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcn0gcHVibGljS2V5SGFzaCAtIGhhc2ggb2YgcHVibGljIGtleVxuICogQHBhcmFtIHtBZGRyZXNzSGFzaE1vZGV9IGhhc2hNb2RlIC0gaGFzaCBtb2RlXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uVmVyc2lvbn0gdHJhbnNhY3Rpb25WZXJzaW9uIC0gdHggdmVyc2lvblxuICogQHJldHVybnMge3N0cmluZ30gc3RhY2tzIGFkZHJlc3NcbiAqL1xuZnVuY3Rpb24gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlIYXNoKFxuICBwdWJsaWNLZXlIYXNoOiBCdWZmZXIsXG4gIGhhc2hNb2RlOiBBZGRyZXNzSGFzaE1vZGUsXG4gIHRyYW5zYWN0aW9uVmVyc2lvbjogVHJhbnNhY3Rpb25WZXJzaW9uXG4pOiBzdHJpbmcge1xuICBpZiAocHVibGljS2V5SGFzaC5sZW5ndGggIT09IDIwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCAyMC1ieXRlIHB1YmtleWhhc2gnKTtcbiAgfVxuXG4gIGNvbnN0IGFkZHJWZXIgPSBhZGRyZXNzSGFzaE1vZGVUb1ZlcnNpb24oaGFzaE1vZGUsIHRyYW5zYWN0aW9uVmVyc2lvbik7XG4gIGNvbnN0IGFkZHIgPSBhZGRyZXNzRnJvbVZlcnNpb25IYXNoKGFkZHJWZXIsIHB1YmxpY0tleUhhc2gudG9TdHJpbmcoJ2hleCcpKTtcbiAgY29uc3QgYWRkclN0cmluZyA9IGFkZHJlc3NUb1N0cmluZyhhZGRyKTtcbiAgcmV0dXJuIGFkZHJTdHJpbmc7XG59XG5cbi8qKlxuICogQHBhcmFtIHR4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeFNlbmRlckFkZHJlc3ModHg6IFN0YWNrc1RyYW5zYWN0aW9uKTogc3RyaW5nIHtcbiAgaWYgKHR4LmF1dGguc3BlbmRpbmdDb25kaXRpb24gIT09IG51bGwgJiYgdHguYXV0aC5zcGVuZGluZ0NvbmRpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3Qgc3BlbmRpbmdDb25kaXRpb24gPSB0eC5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uO1xuICAgIGNvbnN0IHR4U2VuZGVyID0gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXlIYXNoKFxuICAgICAgQnVmZmVyLmZyb20oc3BlbmRpbmdDb25kaXRpb24uc2lnbmVyLCAnaGV4JyksXG4gICAgICBzcGVuZGluZ0NvbmRpdGlvbi5oYXNoTW9kZSBhcyBudW1iZXIsXG4gICAgICB0eC52ZXJzaW9uXG4gICAgKTtcbiAgICByZXR1cm4gdHhTZW5kZXI7XG4gIH0gZWxzZSB0aHJvdyBuZXcgRXJyb3IoJ3NwZW5kaW5nQ29uZGl0aW9uIHNob3VsZCBub3QgYmUgbnVsbCcpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGFtb3VudCBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IC0gdGhlIHN0cmluZyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQW1vdW50KGFtb3VudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGJpZ051bWJlckFtb3VudCA9IG5ldyBCaWdOdW1iZXIoYW1vdW50KTtcbiAgcmV0dXJuIGJpZ051bWJlckFtb3VudC5pc0ludGVnZXIoKSAmJiBiaWdOdW1iZXJBbW91bnQuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbygwKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBwcm90b2NvbCBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSB0aGUgYWRkcmVzcyB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWxpZGF0ZVN0YWNrc0FkZHJlc3MoYWRkcmVzcyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgcHJvdG9jb2wgdHJhbnNhY3Rpb24gaWQgb3Igbm90LlxuICpcbiAqIEEgdmFsaWQgdHJhbnNhY3Rpb24gaWQgaXMgYSBTSEEtNTEyLzI1NiBoYXNoIG9mIGEgc2VyaWFsaXplZCB0cmFuc2FjdGlvbjsgc2VlXG4gKiB0aGUgdHhpZEZyb21EYXRhIGZ1bmN0aW9uIGluIEBzdGFja3MvdHJhbnNhY3Rpb246XG4gKiBodHRwczovL2dpdGh1Yi5jb20vYmxvY2tzdGFjay9zdGFja3MuanMvYmxvYi9tYXN0ZXIvcGFja2FnZXMvdHJhbnNhY3Rpb25zL3NyYy91dGlscy50cyNMOTdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHhJZCAtIHRoZSB0cmFuc2FjdGlvbiBpZCB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh0eElkLmxlbmd0aCAhPT0gNjQgJiYgdHhJZC5sZW5ndGggIT09IDY2KSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IG5vUHJlZml4ID0gcmVtb3ZlSGV4UHJlZml4KHR4SWQpO1xuICBpZiAobm9QcmVmaXgubGVuZ3RoICE9PSA2NCkgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBhbGxIZXhDaGFycyhub1ByZWZpeCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgcHJvdG9jb2wgcHVibGljIGtleSBvclxuICogZXh0ZW5kZWQgcHVibGljIGtleS5cbiAqXG4gKiBUaGUga2V5IGZvcm1hdCBpcyBkb2N1bWVudGVkIGF0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vc3RhY2tzZ292L3NpcHMvYmxvYi9tYWluL3NpcHMvc2lwLTAwNS9zaXAtMDA1LWJsb2Nrcy1hbmQtdHJhbnNhY3Rpb25zLm1kI3RyYW5zYWN0aW9uLWF1dGhvcml6YXRpb25cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHViIC0gdGhlICBwdWJsaWMga2V5IHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChpc1ZhbGlkWHB1YihwdWIpKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAocHViLmxlbmd0aCAhPT0gNjYgJiYgcHViLmxlbmd0aCAhPT0gMTMwKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3QgZmlyc3RCeXRlID0gcHViLnNsaWNlKDAsIDIpO1xuXG4gIC8vIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5XG4gIGlmIChwdWIubGVuZ3RoID09PSAxMzAgJiYgZmlyc3RCeXRlICE9PSAnMDQnKSByZXR1cm4gZmFsc2U7XG5cbiAgLy8gY29tcHJlc3NlZCBwdWJsaWMga2V5XG4gIGlmIChwdWIubGVuZ3RoID09PSA2NiAmJiBmaXJzdEJ5dGUgIT09ICcwMicgJiYgZmlyc3RCeXRlICE9PSAnMDMnKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKCFhbGxIZXhDaGFycyhwdWIpKSByZXR1cm4gZmFsc2U7XG5cbiAgLy8gdmFsaWRhdGUgdGhlIHB1YmxpYyBrZXlcbiAgdHJ5IHtcbiAgICBzZWNwMjU2azEuUHJvamVjdGl2ZVBvaW50LmZyb21IZXgocHViKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHByb3RvY29sIHByaXZhdGUga2V5LCBvciBleHRlbmRlZFxuICogcHJpdmF0ZSBrZXkuXG4gKlxuICogVGhlIHByb3RvY29sIGtleSBmb3JtYXQgaXMgZGVzY3JpYmVkIGluIHRoZSBAc3RhY2tzL3RyYW5zYWN0aW9ucyBucG0gcGFja2FnZSwgaW4gdGhlXG4gKiBjcmVhdGVTdGFja3NQcml2YXRlS2V5IGZ1bmN0aW9uOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2Jsb2Nrc3RhY2svc3RhY2tzLmpzL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3RyYW5zYWN0aW9ucy9zcmMva2V5cy50cyNMMTI1XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBydiAtIHRoZSBwcml2YXRlIGtleSAob3IgZXh0ZW5kZWQgcHJpdmF0ZSBrZXkpIHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoaXNWYWxpZFhwcnYocHJ2KSkgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHBydi5sZW5ndGggIT09IDY0ICYmIHBydi5sZW5ndGggIT09IDY2KSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHBydi5sZW5ndGggPT09IDY2ICYmIHBydi5zbGljZSg2NCkgIT09ICcwMScpIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gYWxsSGV4Q2hhcnMocHJ2KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSBjb21wb3NlZCBvZiBoZXggY2hhcnMgb25seVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXliZSAtIHRoZSAgc3RyaW5nIHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGFsbEhleENoYXJzKG1heWJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eKFswLTlhLWZdKSskL2kudGVzdChtYXliZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHJhdyB0cmFuc2FjdGlvbiBjYW4gYmUgZGVzZXJpYWxpemVkXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSByYXdUcmFuc2FjdGlvbiAtIHRyYW5zYWN0aW9uIGluIHJhdyBoZXggZm9ybWF0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogdW5rbm93bik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGlmICh0eXBlb2YgcmF3VHJhbnNhY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uKEJ1ZmZlclJlYWRlci5mcm9tQnVmZmVyKEJ1ZmZlci5mcm9tKHJlbW92ZUhleFByZWZpeChyYXdUcmFuc2FjdGlvbiksICdoZXgnKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgbWVtbyBzdHJpbmcgaXMgdmFsaWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVtbyAtIHRoZSBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRNZW1vKG1lbW86IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNyZWF0ZU1lbW9TdHJpbmcobWVtbyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgZm9yIHZhbGlkIGNvbnRyYWN0IGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkciAtIGNvbnRyYWN0IGRlcGxveWVyIGFkZHJlc3NcbiAqIEBwYXJhbSB7Qml0Z29TdGFja3NOZXR3b3JrfSBuZXR3b3JrIC0gbmV0d29yayBvYmplY3RcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZENvbnRyYWN0QWRkcmVzcyhhZGRyOiBzdHJpbmcsIG5ldHdvcms6IEJpdGdvU3RhY2tzTmV0d29yayk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGFkZHIgPT09IG5ldHdvcmsuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyB8fFxuICAgIGFkZHIgPT09IG5ldHdvcmsuc2VuZG1hbnltZW1vQ29udHJhY3RBZGRyZXNzIHx8XG4gICAgYWRkciA9PT0gbmV0d29yay5zYnRjV2l0aGRyYXdhbENvbnRyYWN0QWRkcmVzc1xuICApO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBuYW1lIGlzIG9uZSBvZiB2YWxpZCBjb250cmFjdCBuYW1lc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gZnVuY3Rpb24gbmFtZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRDb250cmFjdEZ1bmN0aW9uTmFtZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIFZBTElEX0NPTlRSQUNUX0ZVTkNUSU9OX05BTUVTLmluY2x1ZGVzKG5hbWUpO1xufVxuXG4vKipcbiAqIFVucGFkcyBhIG1lbW8gc3RyaW5nLCBzbyBpdCByZW1vdmVzIG51bGxzLlxuICpcbiAqIFVzZWZ1bCB3aGVuIG1lbW8gaXMgZmlsbCB1cCB0aGUgbGVuZ3RoLiBSZXN1bHQgaXMgYmVjb21lcyByZWFkYWJsZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVtbyAtIHRoZSBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVucGFkTWVtbyhtZW1vOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBlbmQgPSBtZW1vLmluZGV4T2YoJ1xcdTAwMDAnKTtcbiAgaWYgKGVuZCA8IDApIHJldHVybiBtZW1vO1xuICByZXR1cm4gbWVtby5zbGljZSgwLCBlbmQpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgbXVsdGlzaWcgYWRkcmVzcyBmcm9tIG11bHRpcGxlIFNUWCBwdWJsaWMga2V5c1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nW119IHB1YktleXMgLSBsaXN0IG9mIHB1YmxpYyBrZXlzIGFzIHN0cmluZ3NcbiAqIEBwYXJhbSB7QWRkcmVzc1ZlcnNpb259IGFkZHJlc3NWZXJzaW9uIC0gTWFpbm5ldE11bHRpU2lnLCBUZXN0bmV0TXVsdGlTaWdcbiAqIEBwYXJhbSB7QWRkcmVzc0hhc2hNb2RlfSBhZGRyZXNzSGFzaE1vZGUgLSBTZXJpYWxpemVQMlNIXG4gKiBAcGFyYW0ge251bWJlcn0gW3NpZ25hdHVyZXNSZXF1aXJlZF0gLSBudW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZCwgZGVmYXVsdCB2YWx1ZSBpdHMgMlxuICogQHJldHVybnMge2FkZHJlc3M6IHN0cmluZywgaGFzaDE2MDogc3RyaW5nfSAtIGEgbXVsdGlzaWcgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U1RYQWRkcmVzc0Zyb21QdWJLZXlzKFxuICBwdWJLZXlzOiBzdHJpbmdbXSxcbiAgYWRkcmVzc1ZlcnNpb246IEFkZHJlc3NWZXJzaW9uID0gQWRkcmVzc1ZlcnNpb24uTWFpbm5ldE11bHRpU2lnLFxuICBhZGRyZXNzSGFzaE1vZGU6IEFkZHJlc3NIYXNoTW9kZSA9IEFkZHJlc3NIYXNoTW9kZS5TZXJpYWxpemVQMlNILFxuICBzaWduYXR1cmVzUmVxdWlyZWQgPSAyXG4pOiB7IGFkZHJlc3M6IHN0cmluZzsgaGFzaDE2MDogc3RyaW5nIH0ge1xuICBpZiAocHViS2V5cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbnVtYmVyIG9mIHB1YmxpYyBrZXlzJyk7XG4gIH1cbiAgaWYgKCFwdWJLZXlzLmV2ZXJ5KGlzVmFsaWRQdWJsaWNLZXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHB1YmxpYyBrZXlzJyk7XG4gIH1cbiAgaWYgKHNpZ25hdHVyZXNSZXF1aXJlZCA+IHB1YktleXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOdW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZCBtdXN0IGJlIGxvd2VyIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgUHVibGljIEtleXMnKTtcbiAgfVxuXG4gIGNvbnN0IHN0eFB1YktleXMgPSBwdWJLZXlzLm1hcChjcmVhdGVTdGFja3NQdWJsaWNLZXkpO1xuICBjb25zdCBhZGRyZXNzID0gYWRkcmVzc0Zyb21QdWJsaWNLZXlzKGFkZHJlc3NWZXJzaW9uLCBhZGRyZXNzSGFzaE1vZGUsIHNpZ25hdHVyZXNSZXF1aXJlZCwgc3R4UHViS2V5cyk7XG5cbiAgcmV0dXJuIHsgYWRkcmVzczogYWRkcmVzc1RvU3RyaW5nKGFkZHJlc3MpLCBoYXNoMTYwOiBhZGRyZXNzLmhhc2gxNjAgfTtcbn1cblxuLyoqXG4gKiBzaWducyBhIHN0cmluZyBtZXNzYWdlXG4gKlxuICogQHBhcmFtIGtleVBhaXJcbiAqIEBwYXJhbSBkYXRhICAtIG1lc3NhZ2UgdG8gYmUgc2lnbmVkXG4gKiBAcmV0dXJucyBzaWduZWQgbWVzc2FnZSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25NZXNzYWdlKGtleVBhaXI6IEtleVBhaXIsIGRhdGE6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBydiA9IGtleVBhaXIuZ2V0S2V5cygpLnBydjtcbiAgaWYgKHBydikge1xuICAgIHJldHVybiBzaWduV2l0aEtleShjcmVhdGVTdGFja3NQcml2YXRlS2V5KHBydiksIGRhdGEpLmRhdGE7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICB9XG59XG5cbi8qKlxuICogVmVyaWZpZXMgYSBzaWduZWQgbWVzc2FnZVxuICpcbiAqIFRoZSBzaWduYXR1cmUgbXVzdCBiZSAxMzAgYnl0ZXMgbG9uZyAtLSBzZWUgUkVDT1ZFUkFCTEVfRUNEU0FfU0lHX0xFTkdUSF9CWVRFU1xuICogaW4gQHN0YWNrcy90cmFuc2FjdGlvbnMvc3JjL2NvbnN0YW50cy50c1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gbWVzc2FnZSB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSAtIHNpZ25hdHVyZSB0byB2ZXJpZnlcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaWNLZXkgLSBwdWJsaWMga2V5IGFzIGhleCBzdHJpbmcgdXNlZCB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdmVyaWZpY2F0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKG1lc3NhZ2U6IHN0cmluZywgc2lnbmF0dXJlOiBzdHJpbmcsIHB1YmxpY0tleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghaXNWYWxpZFB1YmxpY0tleShwdWJsaWNLZXkpKSByZXR1cm4gZmFsc2U7XG4gIGlmIChzaWduYXR1cmUubGVuZ3RoICE9PSAxMzApIHJldHVybiBmYWxzZTtcbiAgaWYgKCFhbGxIZXhDaGFycyhzaWduYXR1cmUpKSB0aHJvdyBuZXcgVXRpbHNFcnJvcignSW52YWxpZCBzaWduYXR1cmUgaW5wdXQgdG8gdmVyaWZ5U2lnbmF0dXJlJyk7XG4gIGlmIChfLmlzRW1wdHkobWVzc2FnZSkpIHRocm93IG5ldyBVdGlsc0Vycm9yKCdDYW5ub3QgdmVyaWZ5IGVtcHR5IG1lc3NhZ2VzJyk7XG5cbiAgLy8gcHJvdmlkZWQgcHVibGljS2V5IGNhbiBiZSBjb21wcmVzc2VkIG9yIHVuY29tcHJlc3NlZFxuICBjb25zdCBrZXlFbmNvZGluZyA9IHB1YmxpY0tleS5sZW5ndGggPT09IDY2ID8gUHViS2V5RW5jb2RpbmcuQ29tcHJlc3NlZCA6IFB1YktleUVuY29kaW5nLlVuY29tcHJlc3NlZDtcblxuICBjb25zdCBtZXNzYWdlU2lnID0gY3JlYXRlTWVzc2FnZVNpZ25hdHVyZShzaWduYXR1cmUpO1xuXG4gIGNvbnN0IGZvdW5kS2V5ID0gcHVibGljS2V5RnJvbVNpZ25hdHVyZShtZXNzYWdlLCBtZXNzYWdlU2lnLCBrZXlFbmNvZGluZyk7XG5cbiAgcmV0dXJuIGZvdW5kS2V5ID09PSBwdWJsaWNLZXk7XG59XG5cbi8qKlxuICogUHJvY2VzcyBhZGRyZXNzIGludG8gYWRkcmVzcyBhbmQgbWVtbyBpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIHRoZSBhZGRyZXNzIHRvIHByb2Nlc3NcbiAqIEByZXR1cm5zIHtPYmplY3R9IG9iamVjdCBjb250YWluaW5nIGFkZHJlc3MgYW5kIG1lbW8gaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3M6IHN0cmluZyk6IEFkZHJlc3NEZXRhaWxzIHtcbiAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSB1cmwucGFyc2UoYWRkcmVzcyk7XG4gIGNvbnN0IHF1ZXJ5RGV0YWlscyA9IGFkZHJlc3NEZXRhaWxzLnF1ZXJ5ID8gbmV3IFVSTFNlYXJjaFBhcmFtcyhhZGRyZXNzRGV0YWlscy5xdWVyeSkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJhc2VBZGRyZXNzID0gYWRkcmVzc0RldGFpbHMucGF0aG5hbWUgYXMgc3RyaW5nO1xuICBpZiAoIWlzVmFsaWRBZGRyZXNzKGJhc2VBZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgfVxuICAvLyBhZGRyZXNzIGRvZXNuJ3QgaGF2ZSBhIG1lbW8gaWRcbiAgaWYgKGJhc2VBZGRyZXNzID09PSBhZGRyZXNzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IGFkZHJlc3MsXG4gICAgICBtZW1vSWQ6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFxdWVyeURldGFpbHMgfHwgXy5pc05pbChxdWVyeURldGFpbHMuZ2V0KCdtZW1vSWQnKSkpIHtcbiAgICAvLyBpZiB0aGVyZSBhcmUgbW9yZSBwcm9wZXJ0aWVzLCB0aGUgcXVlcnkgZGV0YWlscyBuZWVkIHRvIGNvbnRhaW4gdGhlIG1lbW8gaWQgcHJvcGVydHlcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgaW52YWxpZCBhZGRyZXNzIHdpdGggbWVtbyBpZDogJHthZGRyZXNzfWApO1xuICB9XG4gIGNvbnN0IG1lbW9JZCA9IHF1ZXJ5RGV0YWlscy5nZXQoJ21lbW9JZCcpIGFzIHN0cmluZztcbiAgY29uc3QgaW50TWVtb0lkID0gcGFyc2VJbnQobWVtb0lkLCAxMCk7XG4gIGlmIChpc05hTihpbnRNZW1vSWQpIHx8IGludE1lbW9JZCA8IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbWVtbyBpZDogJHttZW1vSWR9YCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFkZHJlc3M6IGJhc2VBZGRyZXNzLFxuICAgIG1lbW9JZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbmQgcmV0dXJuIGFkZHJlc3Mgd2l0aCBhcHBlbmRlZCBtZW1vIGlkXG4gKlxuICogQHBhcmFtIHtBZGRyZXNzRGV0YWlsc30gYWRkcmVzc0RldGFpbHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IGFkZHJlc3Mgd2l0aCBtZW1vIGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBZGRyZXNzKHsgYWRkcmVzcywgbWVtb0lkIH06IEFkZHJlc3NEZXRhaWxzKTogc3RyaW5nIHtcbiAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgfVxuICBpZiAoIV8uaXNVbmRlZmluZWQobWVtb0lkKSkge1xuICAgIGNvbnN0IGludE1lbW9JZCA9IHBhcnNlSW50KG1lbW9JZCwgMTApO1xuICAgIGlmIChpc05hTihpbnRNZW1vSWQpIHx8IGludE1lbW9JZCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBtZW1vIGlkOiAke21lbW9JZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke2FkZHJlc3N9P21lbW9JZD0ke21lbW9JZH1gO1xuICB9XG4gIHJldHVybiBhZGRyZXNzO1xufVxuXG4vKipcbiAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyBhIHZhbGlkIGFkZHJlc3Mgd2l0aCBtZW1vIGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgYWRkcmVzcyBpbiB0aGUgZm9ybSA8YWRkcmVzcz4/bWVtb0lkPTxtZW1vSWQ+XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpcyBpbnB1dCBpcyBhIHZhbGlkIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzV2l0aFBheW1lbnRJZChhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3MpO1xuICAgIHJldHVybiBhZGRyZXNzID09PSBub3JtYWxpemVBZGRyZXNzKGFkZHJlc3NEZXRhaWxzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY2xhcml0eSB2YWx1ZSBpbnB1dFxuICpcbiAqIEBwYXJhbSB7Q2xhcml0eVZhbHVlfSBjdiBjbGFyaXR5IHZhbHVlIGZ1bmN0aW9uIGFyZ3VtZW50XG4gKiBAcmV0dXJucyB7U3RyaW5nfSBzdHJpbmdpZmllZCBjbGFyaXR5IHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlDdihjdjogQ2xhcml0eVZhbHVlKTogYW55IHtcbiAgc3dpdGNoIChjdi50eXBlKSB7XG4gICAgY2FzZSBDbGFyaXR5VHlwZS5JbnQ6XG4gICAgY2FzZSBDbGFyaXR5VHlwZS5VSW50OlxuICAgICAgcmV0dXJuIHsgdHlwZTogY3YudHlwZSwgdmFsdWU6IGN2LnZhbHVlLnRvU3RyaW5nKCkgfTtcbiAgICBjYXNlIENsYXJpdHlUeXBlLk9wdGlvbmFsU29tZTpcbiAgICAgIHJldHVybiB7IHR5cGU6IGN2LnR5cGUsIHZhbHVlOiBzdHJpbmdpZnlDdihjdi52YWx1ZSkgfTtcbiAgICBjYXNlIENsYXJpdHlUeXBlLlR1cGxlOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogY3YudHlwZSxcbiAgICAgICAgZGF0YTogXy5tYXBWYWx1ZXMoY3YuZGF0YSwgKHZhbHVlKSA9PiBzdHJpbmdpZnlDdih2YWx1ZSkpLFxuICAgICAgfTtcbiAgICBjYXNlIENsYXJpdHlUeXBlLkxpc3Q6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBjdi50eXBlLFxuICAgICAgICBsaXN0OiBjdi5saXN0Lm1hcChzdHJpbmdpZnlDdiksXG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY3Y7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBmdW5jdGlvbkFyZ3MgaW50byBzZW5kIHBhcmFtcyBmb3Igc2VuZC1tYW55LW1lbW8gY29udHJhY3QgY2FsbHNcbiAqXG4gKiBAcGFyYW0ge0NsYXJpdHlWYWx1ZVtdfSBhcmdzIGZ1bmN0aW9uQXJncyBmcm9tIGEgY29udHJhY3QgY2FsbCBwYXlsb2FkXG4gKiBAcmV0dXJucyB7U2VuZFBhcmFtc1tdfSBBbiBhcnJheSBvZiBzZW5kUGFyYW1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmdW5jdGlvbkFyZ3NUb1NlbmRQYXJhbXMoYXJnczogQ2xhcml0eVZhbHVlW10pOiBTZW5kUGFyYW1zW10ge1xuICBpZiAoYXJncy5sZW5ndGggIT09IDEgfHwgYXJnc1swXS50eXBlICE9PSBDbGFyaXR5VHlwZS5MaXN0KSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFwiZnVuY3Rpb24gYXJncyBkb24ndCBtYXRjaCBzZW5kLW1hbnktbWVtbyB0eXBlIGRlY2xhcmF0aW9uXCIpO1xuICB9XG4gIHJldHVybiBhcmdzWzBdLmxpc3QubWFwKCh0dXBsZSkgPT4ge1xuICAgIGlmIChcbiAgICAgIHR1cGxlLnR5cGUgIT09IENsYXJpdHlUeXBlLlR1cGxlIHx8XG4gICAgICB0dXBsZS5kYXRhLnRvPy50eXBlICE9PSBDbGFyaXR5VHlwZS5QcmluY2lwYWxTdGFuZGFyZCB8fFxuICAgICAgdHVwbGUuZGF0YS51c3R4Py50eXBlICE9PSBDbGFyaXR5VHlwZS5VSW50IHx8XG4gICAgICB0dXBsZS5kYXRhLm1lbW8/LnR5cGUgIT09IENsYXJpdHlUeXBlLkJ1ZmZlclxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFwiZnVuY3Rpb24gYXJncyBkb24ndCBtYXRjaCBzZW5kLW1hbnktbWVtbyB0eXBlIGRlY2xhcmF0aW9uXCIpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgYWRkcmVzczogY3ZUb1N0cmluZyh0dXBsZS5kYXRhLnRvKSxcbiAgICAgIGFtb3VudDogY3ZUb1ZhbHVlKHR1cGxlLmRhdGEudXN0eCwgdHJ1ZSksXG4gICAgICBtZW1vOiB0dXBsZS5kYXRhLm1lbW8uYnVmZmVyLnRvU3RyaW5nKCdhc2NpaScpLFxuICAgIH07XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnVuY3Rpb25BcmdzVG9Ub2tlblRyYW5zZmVyUGFyYW1zKGFyZ3M6IENsYXJpdHlWYWx1ZVtdKTogVG9rZW5UcmFuc2ZlclBhcmFtcyB7XG4gIGlmIChhcmdzLmxlbmd0aCA8IDMpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXCJmdW5jdGlvbiBhcmdzIGRvbid0IG1hdGNoIHRva2VuIHRyYW5zZmVyIGRlY2xhcmF0aW9uXCIpO1xuICB9XG4gIGlmIChcbiAgICBhcmdzWzBdLnR5cGUgIT09IENsYXJpdHlUeXBlLlVJbnQgfHxcbiAgICBhcmdzWzFdLnR5cGUgIT09IENsYXJpdHlUeXBlLlByaW5jaXBhbFN0YW5kYXJkIHx8XG4gICAgYXJnc1syXS50eXBlICE9PSBDbGFyaXR5VHlwZS5QcmluY2lwYWxTdGFuZGFyZFxuICApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXCJmdW5jdGlvbiBhcmdzIGRvbid0IG1hdGNoIHRva2VuIHRyYW5zZmVyIGRlY2xhcmF0aW9uXCIpO1xuICB9XG4gIGNvbnN0IHRva2VuVHJhbnNmZXJQYXJhbXMgPSB7XG4gICAgYW1vdW50OiBjdlRvVmFsdWUoYXJnc1swXSwgdHJ1ZSksXG4gICAgc2VuZGVyOiBjdlRvU3RyaW5nKGFyZ3NbMV0pLFxuICAgIHJlY2lwaWVudDogY3ZUb1N0cmluZyhhcmdzWzJdKSxcbiAgfTtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSA0ICYmIGFyZ3NbM10udHlwZSA9PT0gQ2xhcml0eVR5cGUuQnVmZmVyKSB7XG4gICAgdG9rZW5UcmFuc2ZlclBhcmFtc1snbWVtbyddID0gYXJnc1szXS5idWZmZXIudG9TdHJpbmcoJ2FzY2lpJyk7XG4gIH1cbiAgcmV0dXJuIHRva2VuVHJhbnNmZXJQYXJhbXM7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmVyc2lvbiBvZiBhbiBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFkZHJlc3MgdGhlIGFkZHJlc3Mgd2l0aCBvciB3aXRob3V0IHRoZSBtZW1vSWRcbiAqIEByZXR1cm5zIHtBZGRyZXNzVmVyc2lvbn0gQSBudW1iZXIgdGhhdCByZXByZXNlbnQgdGhlIEFkZHJlc3MgVmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkcmVzc1ZlcnNpb24oYWRkcmVzczogc3RyaW5nKTogQWRkcmVzc1ZlcnNpb24ge1xuICBjb25zdCBiYXNlQWRkcmVzcyA9IGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3MpLmFkZHJlc3M7XG4gIHJldHVybiBjcmVhdGVBZGRyZXNzKGJhc2VBZGRyZXNzKS52ZXJzaW9uO1xufVxuXG4vKipcbiAqIEVuY29kZSBhIFN0YWNrcyAqc3RhbmRhcmQqIHByaW5jaXBhbCBhcyB0aGUgQ2xhcml0eSBTSVAtMDA1IGhleCB3aXJlIGZvcm1hdFxuICog4oCUIGEgMjItYnl0ZSBibG9iOlxuICpcbiAqICAgICBgMHgwNWAgfHwgdmVyc2lvbiAoMSBieXRlKSB8fCBoYXNoMTYwICgyMCBieXRlcylcbiAqXG4gKiBDb250cmFjdCBwcmluY2lwYWxzIChgPGFkZHJlc3M+Ljxjb250cmFjdC1uYW1lPmApIGFuZCBhZGRyZXNzZXMgd2l0aCBhXG4gKiBgP21lbW9JZD3igKZgIHN1ZmZpeCBhcmUgcmVqZWN0ZWQuIFRoZSBDbGFyaXR5IHR5cGUgYnl0ZSAoYDB4MDVgKSBpcyBzZXRcbiAqIGJ5IGBzZXJpYWxpemVDVmAgZnJvbSBgQHN0YWNrcy90cmFuc2FjdGlvbnNgLCBzbyB0aGlzIGhlbHBlciBkb2VzIG5vdFxuICogaGFuZC1yb2xsIGFueSBieXRlIGNvbmNhdGVuYXRpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHByaW5jaXBhbCBhIFN0YWNrcyBzdGFuZGFyZCBwcmluY2lwYWwgKGUuZy4gYFNQ4oCmYCAvIGBTVOKApmApXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBoZXgtZW5jb2RlZCAyMi1ieXRlIENsYXJpdHkgc3RhbmRhcmQgcHJpbmNpcGFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmNvZGVkUHJpbmNpcGFsKHByaW5jaXBhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHByaW5jaXBhbC5pbmNsdWRlcygnPycpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYHByaW5jaXBhbCBtdXN0IG5vdCBpbmNsdWRlIGEgcXVlcnkgc3RyaW5nOiAke3ByaW5jaXBhbH1gKTtcbiAgfVxuICBpZiAocHJpbmNpcGFsLmluY2x1ZGVzKCcuJykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgY29udHJhY3QgcHJpbmNpcGFscyBhcmUgbm90IHN1cHBvcnRlZCwgZXhwZWN0ZWQgYSBzdGFuZGFyZCBwcmluY2lwYWw6ICR7cHJpbmNpcGFsfWApO1xuICB9XG4gIGlmICghaXNWYWxpZEFkZHJlc3MocHJpbmNpcGFsKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIFN0YWNrcyBhZGRyZXNzIGluIHByaW5jaXBhbDogJHtwcmluY2lwYWx9YCk7XG4gIH1cbiAgcmV0dXJuIHNlcmlhbGl6ZUNWKHN0YW5kYXJkUHJpbmNpcGFsQ1YocHJpbmNpcGFsKSkudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBTVFggcHViIGtleSBmcm9tIGFuIHhwdWJcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30geHB1YiBhbiB4cHViXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBhIGNvbXByZXNzZWQgU1RYIHB1YiBrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHhwdWJUb1NUWFB1YmtleSh4cHViOiBzdHJpbmcsIGNvbXByZXNzZWQgPSB0cnVlKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKHsgcHViOiB4cHViIH0pLmdldEtleXMoY29tcHJlc3NlZCkucHViO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGJhc2UgYWRkcmVzcyBwb3J0aW9uIG9mIGFuIGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyAtIGFuIGFkZHJlc3NcbiAqIEByZXR1cm5zIHtTdHJpbmd9IC0gdGhlIGJhc2UgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSBnZXRBZGRyZXNzRGV0YWlscyhhZGRyZXNzKTtcbiAgcmV0dXJuIGFkZHJlc3NEZXRhaWxzLmFkZHJlc3M7XG59XG5cbi8qKlxuICogQ29tcGFyZXMgYW4gYWRkcmVzcyB0byB0aGUgYmFzZSBhZGRyZXNzIHRvIGNoZWNrIGlmIG1hdGNocy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyAtIGFuIGFkZHJlc3NcbiAqIEBwYXJhbSB7U3RyaW5nfSBiYXNlQWRkcmVzcyAtIGEgYmFzZSBhZGRyZXNzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZUJhc2VBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgYmFzZUFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRBZGRyZXNzV2l0aFBheW1lbnRJZChhZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgfVxuICByZXR1cm4gZ2V0QmFzZUFkZHJlc3MoYWRkcmVzcykgPT09IGdldEJhc2VBZGRyZXNzKGJhc2VBZGRyZXNzKTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0byBnZXQgdG9rZW5OYW1lIGZyb20gbGlzdCBvZiBzaXAxMCB0b2tlbnMgdXNpbmcgY29udHJhY3QgZGV0YWlsc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb250cmFjdEFkZHJlc3NcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb250cmFjdE5hbWVcbiAqIEByZXR1cm5zIHtTdHJpbmd8VW5kZWZpbmVkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFRva2VuTmFtZUJ5Q29udHJhY3QoY29udHJhY3RBZGRyZXNzOiBzdHJpbmcsIGNvbnRyYWN0TmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAge1xuICAgIGNvbnN0IHRva2VuTmFtZSA9IGNvaW5zXG4gICAgICAuZmlsdGVyKChjb2luKSA9PiBjb2luIGluc3RhbmNlb2YgU2lwMTBUb2tlbiAmJiBjb2luLmFzc2V0SWQuaW5jbHVkZXMoYCR7Y29udHJhY3RBZGRyZXNzfS4ke2NvbnRyYWN0TmFtZX1gKSlcbiAgICAgIC5tYXAoKGNvaW4pID0+IGNvaW4ubmFtZSk7XG4gICAgcmV0dXJuIHRva2VuTmFtZSA/IHRva2VuTmFtZVswXSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGdldCBjb250cmFjdFRva2VuTmFtZSBmcm9tIGxpc3Qgb2Ygc2lwMTAgdG9rZW5zIHVzaW5nIGNvbnRyYWN0IGRldGFpbHNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gY29udHJhY3RBZGRyZXNzXG4gKiBAcGFyYW0ge1N0cmluZ30gY29udHJhY3ROYW1lXG4gKiBAcmV0dXJucyB7U3RyaW5nfFVuZGVmaW5lZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDb250cmFjdFRva2VuTmFtZVVzaW5nQ29udHJhY3QoY29udHJhY3RBZGRyZXNzOiBzdHJpbmcsIGNvbnRyYWN0TmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAge1xuICAgIGNvbnN0IHNpcDEwVG9rZW4gPSBjb2luc1xuICAgICAgLmZpbHRlcigoY29pbikgPT4gY29pbiBpbnN0YW5jZW9mIFNpcDEwVG9rZW4gJiYgY29pbi5hc3NldElkLmluY2x1ZGVzKGAke2NvbnRyYWN0QWRkcmVzc30uJHtjb250cmFjdE5hbWV9YCkpXG4gICAgICAubWFwKChjb2luKSA9PiBjb2luIGFzIFNpcDEwVG9rZW4pO1xuICAgIHJldHVybiBzaXAxMFRva2VuID8gc2lwMTBUb2tlblswXS5hc3NldElkLnNwbGl0KCc6OicpWzFdIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZ2V0IGFkZHJlc3MgYW5kIG1lbW8gZGV0YWlscyBmcm9tIGFkZHJlc3MgaW5wdXRcbiAqXG4gKiBAcGFyYW0gYWRkcmVzc1xuICogQHJldHVybnMge0FkZHJlc3NEZXRhaWxzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVtb0lkQW5kQmFzZUFkZHJlc3NGcm9tQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBBZGRyZXNzRGV0YWlscyB7XG4gIGNvbnN0IFtiYXNlQWRkcmVzcywgcXVlcnlTdHJpbmddID0gYWRkcmVzcy5zcGxpdCgnPycpO1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgY29uc3QgbWVtb0lkID0gcGFyYW1zLmdldCgnbWVtb0lkJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBiYXNlQWRkcmVzcyxcbiAgICBtZW1vSWQ6IG1lbW9JZCA/IG1lbW9JZCA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cbiJdfQ==
611
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNENBLDBEQUVDO0FBUUQsMENBRUM7QUE0QkQsZ0RBVUM7QUFRRCxzQ0FHQztBQVFELHdDQUVDO0FBWUQsb0RBTUM7QUFZRCw0Q0FzQkM7QUFhRCw4Q0FRQztBQWtCRCxzREFZQztBQVFELGtDQVFDO0FBU0Qsd0RBTUM7QUFRRCxrRUFFQztBQVVELDhCQUlDO0FBV0QsNERBb0JDO0FBU0Qsa0NBT0M7QUFhRCwwQ0FjQztBQVFELDhDQTZCQztBQVFELDRDQVlDO0FBUUQsa0VBT0M7QUFRRCxrQ0FvQkM7QUFRRCw0REFtQkM7QUFFRCw4RUFvQkM7QUFRRCw4Q0FHQztBQWdCRCxrREFXQztBQVFELDBDQUVDO0FBUUQsd0NBR0M7QUFTRCw4Q0FLQztBQVNELDBEQU9DO0FBU0QsZ0ZBT0M7QUFRRCxnRkFTQztBQTFtQkQseUNBQTJCO0FBQzNCLGdFQUFxQztBQUNyQyxxREFBOEQ7QUFDOUQsdURBMEI4QjtBQUM5Qix1REFBb0Q7QUFDcEQsMENBQTRCO0FBQzVCLDhDQUE4RztBQUU5Ryx3QkFBNEI7QUFDNUIsNENBQXdGO0FBQ3hGLDJDQUE0RDtBQUU1RDs7Ozs7R0FLRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLElBQVk7SUFDbEQsT0FBTyxJQUFBLDZCQUFXLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLEdBQVc7SUFDekMsT0FBTyxJQUFBLGdDQUFjLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLDJCQUEyQixDQUNsQyxhQUFxQixFQUNyQixRQUF5QixFQUN6QixrQkFBc0M7SUFFdEMsSUFBSSxhQUFhLENBQUMs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QztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGtDQUFrQyxDQUFDLGVBQXVCLEVBQUUsWUFBb0I7SUFDOUYsQ0FBQztRQUNDLE1BQU0sVUFBVSxHQUFHLGVBQUs7YUFDckIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksb0JBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLGVBQWUsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFDO2FBQzNHLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBa0IsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZFLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixrQ0FBa0MsQ0FBQyxPQUFlO0lBQ2hFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXBDLE9BQU87UUFDTCxPQUFPLEVBQUUsV0FBVztRQUNwQixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVM7S0FDcEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1cmwgZnJvbSAndXJsJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IGJ1ZmZlclRvSGV4LCBzdHJpcEhleFByZWZpeCB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5pbXBvcnQge1xuICBhZGRyZXNzRnJvbVB1YmxpY0tleXMsXG4gIGFkZHJlc3NGcm9tVmVyc2lvbkhhc2gsXG4gIEFkZHJlc3NIYXNoTW9kZSxcbiAgYWRkcmVzc0hhc2hNb2RlVG9WZXJzaW9uLFxuICBhZGRyZXNzVG9TdHJpbmcsXG4gIEFkZHJlc3NWZXJzaW9uLFxuICBCdWZmZXJSZWFkZXIsXG4gIENsYXJpdHlUeXBlLFxuICBDbGFyaXR5VmFsdWUsXG4gIGNyZWF0ZUFkZHJlc3MsXG4gIGNyZWF0ZU1lbW9TdHJpbmcsXG4gIGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUsXG4gIGNyZWF0ZVN0YWNrc1ByaXZhdGVLZXksXG4gIGNyZWF0ZVN0YWNrc1B1YmxpY0tleSxcbiAgY3ZUb1N0cmluZyxcbiAgY3ZUb1ZhbHVlLFxuICBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uLFxuICBQdWJLZXlFbmNvZGluZyxcbiAgcHVibGljS2V5RnJvbVNpZ25hdHVyZSxcbiAgc2VyaWFsaXplQ1YsXG4gIHNpZ25XaXRoS2V5LFxuICBTdGFja3NUcmFuc2FjdGlvbixcbiAgc3RhbmRhcmRQcmluY2lwYWxDVixcbiAgVHJhbnNhY3Rpb25WZXJzaW9uLFxuICB2YWxpZGF0ZVN0YWNrc0FkZHJlc3MsXG59IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHNlY3AyNTZrMSB9IGZyb20gJ0Bub2JsZS9jdXJ2ZXMvc2VjcDI1NmsxJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBpc1ZhbGlkWHBydiwgaXNWYWxpZFhwdWIsIFNpZ25pbmdFcnJvciwgVXRpbHNFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBBZGRyZXNzRGV0YWlscywgU2VuZFBhcmFtcywgVG9rZW5UcmFuc2ZlclBhcmFtcyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4nO1xuaW1wb3J0IHsgY29pbnMsIFNpcDEwVG9rZW4sIFN0YWNrc05ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVkFMSURfQ09OVFJBQ1RfRlVOQ1RJT05fTkFNRVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICogRW5jb2RlcyBhIGJ1ZmZlciBhcyBhIFwiMHhcIiBwcmVmaXhlZCBsb3dlci1jYXNlIGhleCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmYgLSBhIGJ1ZmZlciB3aXRoIGEgaGV4YWRlY2ltYWwgc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBoZXhhZGVjaW1hbCBzdHJpbmcgcHJlZml4ZWQgd2l0aCBcIjB4XCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1ZmZlclRvSGV4UHJlZml4U3RyaW5nKGJ1ZmY6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIHJldHVybiBidWZmZXJUb0hleChidWZmKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIFwiMHhcIiBwcmVmaXggZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nLCBpZiBwcmVzZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoZXggLSBhIGhleGFkZWNpbWFsIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgaGV4YWRlY2ltYWwgc3RyaW5nIHdpdGhvdXQgYSBsZWFkaW5nIFwiMHhcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlSGV4UHJlZml4KGhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0cmlwSGV4UHJlZml4KGhleCk7XG59XG5cbi8qKlxuICogR2V0IHN0YWNrcyBhZGRyZXNzIGZyb20gcHVibGljIGtleSBoYXNoXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IHB1YmxpY0tleUhhc2ggLSBoYXNoIG9mIHB1YmxpYyBrZXlcbiAqIEBwYXJhbSB7QWRkcmVzc0hhc2hNb2RlfSBoYXNoTW9kZSAtIGhhc2ggbW9kZVxuICogQHBhcmFtIHtUcmFuc2FjdGlvblZlcnNpb259IHRyYW5zYWN0aW9uVmVyc2lvbiAtIHR4IHZlcnNpb25cbiAqIEByZXR1cm5zIHtzdHJpbmd9IHN0YWNrcyBhZGRyZXNzXG4gKi9cbmZ1bmN0aW9uIGdldEFkZHJlc3NGcm9tUHVibGljS2V5SGFzaChcbiAgcHVibGljS2V5SGFzaDogQnVmZmVyLFxuICBoYXNoTW9kZTogQWRkcmVzc0hhc2hNb2RlLFxuICB0cmFuc2FjdGlvblZlcnNpb246IFRyYW5zYWN0aW9uVmVyc2lvblxuKTogc3RyaW5nIHtcbiAgaWYgKHB1YmxpY0tleUhhc2gubGVuZ3RoICE9PSAyMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgMjAtYnl0ZSBwdWJrZXloYXNoJyk7XG4gIH1cblxuICBjb25zdCBhZGRyVmVyID0gYWRkcmVzc0hhc2hNb2RlVG9WZXJzaW9uKGhhc2hNb2RlLCB0cmFuc2FjdGlvblZlcnNpb24pO1xuICBjb25zdCBhZGRyID0gYWRkcmVzc0Zyb21WZXJzaW9uSGFzaChhZGRyVmVyLCBwdWJsaWNLZXlIYXNoLnRvU3RyaW5nKCdoZXgnKSk7XG4gIGNvbnN0IGFkZHJTdHJpbmcgPSBhZGRyZXNzVG9TdHJpbmcoYWRkcik7XG4gIHJldHVybiBhZGRyU3RyaW5nO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHhTZW5kZXJBZGRyZXNzKHR4OiBTdGFja3NUcmFuc2FjdGlvbik6IHN0cmluZyB7XG4gIGlmICh0eC5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uICE9PSBudWxsICYmIHR4LmF1dGguc3BlbmRpbmdDb25kaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHNwZW5kaW5nQ29uZGl0aW9uID0gdHguYXV0aC5zcGVuZGluZ0NvbmRpdGlvbjtcbiAgICBjb25zdCB0eFNlbmRlciA9IGdldEFkZHJlc3NGcm9tUHVibGljS2V5SGFzaChcbiAgICAgIEJ1ZmZlci5mcm9tKHNwZW5kaW5nQ29uZGl0aW9uLnNpZ25lciwgJ2hleCcpLFxuICAgICAgc3BlbmRpbmdDb25kaXRpb24uaGFzaE1vZGUgYXMgbnVtYmVyLFxuICAgICAgdHgudmVyc2lvblxuICAgICk7XG4gICAgcmV0dXJuIHR4U2VuZGVyO1xuICB9IGVsc2UgdGhyb3cgbmV3IEVycm9yKCdzcGVuZGluZ0NvbmRpdGlvbiBzaG91bGQgbm90IGJlIG51bGwnKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBhbW91bnQgbnVtYmVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIHRoZSBzdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFtb3VudChhbW91bnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBiaWdOdW1iZXJBbW91bnQgPSBuZXcgQmlnTnVtYmVyKGFtb3VudCk7XG4gIHJldHVybiBiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgJiYgYmlnTnVtYmVyQW1vdW50LmlzR3JlYXRlclRoYW5PckVxdWFsVG8oMCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgcHJvdG9jb2wgYWRkcmVzc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gdGhlIGFkZHJlc3MgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsaWRhdGVTdGFja3NBZGRyZXNzKGFkZHJlc3MpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHByb3RvY29sIHRyYW5zYWN0aW9uIGlkIG9yIG5vdC5cbiAqXG4gKiBBIHZhbGlkIHRyYW5zYWN0aW9uIGlkIGlzIGEgU0hBLTUxMi8yNTYgaGFzaCBvZiBhIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb247IHNlZVxuICogdGhlIHR4aWRGcm9tRGF0YSBmdW5jdGlvbiBpbiBAc3RhY2tzL3RyYW5zYWN0aW9uOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2Jsb2Nrc3RhY2svc3RhY2tzLmpzL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3RyYW5zYWN0aW9ucy9zcmMvdXRpbHMudHMjTDk3XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR4SWQgLSB0aGUgdHJhbnNhY3Rpb24gaWQgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodHhJZC5sZW5ndGggIT09IDY0ICYmIHR4SWQubGVuZ3RoICE9PSA2NikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBub1ByZWZpeCA9IHJlbW92ZUhleFByZWZpeCh0eElkKTtcbiAgaWYgKG5vUHJlZml4Lmxlbmd0aCAhPT0gNjQpIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gYWxsSGV4Q2hhcnMobm9QcmVmaXgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHByb3RvY29sIHB1YmxpYyBrZXkgb3JcbiAqIGV4dGVuZGVkIHB1YmxpYyBrZXkuXG4gKlxuICogVGhlIGtleSBmb3JtYXQgaXMgZG9jdW1lbnRlZCBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrc2dvdi9zaXBzL2Jsb2IvbWFpbi9zaXBzL3NpcC0wMDUvc2lwLTAwNS1ibG9ja3MtYW5kLXRyYW5zYWN0aW9ucy5tZCN0cmFuc2FjdGlvbi1hdXRob3JpemF0aW9uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHB1YiAtIHRoZSAgcHVibGljIGtleSB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YmxpY0tleShwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoaXNWYWxpZFhwdWIocHViKSkgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHB1Yi5sZW5ndGggIT09IDY2ICYmIHB1Yi5sZW5ndGggIT09IDEzMCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGZpcnN0Qnl0ZSA9IHB1Yi5zbGljZSgwLCAyKTtcblxuICAvLyB1bmNvbXByZXNzZWQgcHVibGljIGtleVxuICBpZiAocHViLmxlbmd0aCA9PT0gMTMwICYmIGZpcnN0Qnl0ZSAhPT0gJzA0JykgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIGNvbXByZXNzZWQgcHVibGljIGtleVxuICBpZiAocHViLmxlbmd0aCA9PT0gNjYgJiYgZmlyc3RCeXRlICE9PSAnMDInICYmIGZpcnN0Qnl0ZSAhPT0gJzAzJykgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICghYWxsSGV4Q2hhcnMocHViKSkgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIHZhbGlkYXRlIHRoZSBwdWJsaWMga2V5XG4gIHRyeSB7XG4gICAgc2VjcDI1NmsxLlByb2plY3RpdmVQb2ludC5mcm9tSGV4KHB1Yik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBwcm90b2NvbCBwcml2YXRlIGtleSwgb3IgZXh0ZW5kZWRcbiAqIHByaXZhdGUga2V5LlxuICpcbiAqIFRoZSBwcm90b2NvbCBrZXkgZm9ybWF0IGlzIGRlc2NyaWJlZCBpbiB0aGUgQHN0YWNrcy90cmFuc2FjdGlvbnMgbnBtIHBhY2thZ2UsIGluIHRoZVxuICogY3JlYXRlU3RhY2tzUHJpdmF0ZUtleSBmdW5jdGlvbjpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibG9ja3N0YWNrL3N0YWNrcy5qcy9ibG9iL21hc3Rlci9wYWNrYWdlcy90cmFuc2FjdGlvbnMvc3JjL2tleXMudHMjTDEyNVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgLSB0aGUgcHJpdmF0ZSBrZXkgKG9yIGV4dGVuZGVkIHByaXZhdGUga2V5KSB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzVmFsaWRYcHJ2KHBydikpIHJldHVybiB0cnVlO1xuXG4gIGlmIChwcnYubGVuZ3RoICE9PSA2NCAmJiBwcnYubGVuZ3RoICE9PSA2NikgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChwcnYubGVuZ3RoID09PSA2NiAmJiBwcnYuc2xpY2UoNjQpICE9PSAnMDEnKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIGFsbEhleENoYXJzKHBydik7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgY29tcG9zZWQgb2YgaGV4IGNoYXJzIG9ubHlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWF5YmUgLSB0aGUgIHN0cmluZyB0byBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5mdW5jdGlvbiBhbGxIZXhDaGFycyhtYXliZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXihbMC05YS1mXSkrJC9pLnRlc3QobWF5YmUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiByYXcgdHJhbnNhY3Rpb24gY2FuIGJlIGRlc2VyaWFsaXplZFxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gcmF3VHJhbnNhY3Rpb24gLSB0cmFuc2FjdGlvbiBpbiByYXcgaGV4IGZvcm1hdFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHVua25vd24pOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgZGVzZXJpYWxpemVUcmFuc2FjdGlvbihCdWZmZXJSZWFkZXIuZnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShyZW1vdmVIZXhQcmVmaXgocmF3VHJhbnNhY3Rpb24pLCAnaGV4JykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIG1lbW8gc3RyaW5nIGlzIHZhbGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lbW8gLSB0aGUgc3RyaW5nIHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTWVtbyhtZW1vOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjcmVhdGVNZW1vU3RyaW5nKG1lbW8pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ2hlY2tzIGZvciB2YWxpZCBjb250cmFjdCBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHIgLSBjb250cmFjdCBkZXBsb3llciBhZGRyZXNzXG4gKiBAcGFyYW0ge0JpdGdvU3RhY2tzTmV0d29ya30gbmV0d29yayAtIG5ldHdvcmsgb2JqZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRDb250cmFjdEFkZHJlc3MoYWRkcjogc3RyaW5nLCBuZXR3b3JrOiBCaXRnb1N0YWNrc05ldHdvcmspOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBhZGRyID09PSBuZXR3b3JrLnN0YWtpbmdDb250cmFjdEFkZHJlc3MgfHxcbiAgICBhZGRyID09PSBuZXR3b3JrLnNlbmRtYW55bWVtb0NvbnRyYWN0QWRkcmVzcyB8fFxuICAgIGFkZHIgPT09IG5ldHdvcmsuc2J0Y1dpdGhkcmF3YWxDb250cmFjdEFkZHJlc3NcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgbmFtZSBpcyBvbmUgb2YgdmFsaWQgY29udHJhY3QgbmFtZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIGZ1bmN0aW9uIG5hbWVcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQ29udHJhY3RGdW5jdGlvbk5hbWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBWQUxJRF9DT05UUkFDVF9GVU5DVElPTl9OQU1FUy5pbmNsdWRlcyhuYW1lKTtcbn1cblxuLyoqXG4gKiBVbnBhZHMgYSBtZW1vIHN0cmluZywgc28gaXQgcmVtb3ZlcyBudWxscy5cbiAqXG4gKiBVc2VmdWwgd2hlbiBtZW1vIGlzIGZpbGwgdXAgdGhlIGxlbmd0aC4gUmVzdWx0IGlzIGJlY29tZXMgcmVhZGFibGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lbW8gLSB0aGUgc3RyaW5nIHRvIGJlIHZhbGlkYXRlZFxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnBhZE1lbW8obWVtbzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZW5kID0gbWVtby5pbmRleE9mKCdcXHUwMDAwJyk7XG4gIGlmIChlbmQgPCAwKSByZXR1cm4gbWVtbztcbiAgcmV0dXJuIG1lbW8uc2xpY2UoMCwgZW5kKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIG11bHRpc2lnIGFkZHJlc3MgZnJvbSBtdWx0aXBsZSBTVFggcHVibGljIGtleXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwdWJLZXlzIC0gbGlzdCBvZiBwdWJsaWMga2V5cyBhcyBzdHJpbmdzXG4gKiBAcGFyYW0ge0FkZHJlc3NWZXJzaW9ufSBhZGRyZXNzVmVyc2lvbiAtIE1haW5uZXRNdWx0aVNpZywgVGVzdG5ldE11bHRpU2lnXG4gKiBAcGFyYW0ge0FkZHJlc3NIYXNoTW9kZX0gYWRkcmVzc0hhc2hNb2RlIC0gU2VyaWFsaXplUDJTSFxuICogQHBhcmFtIHtudW1iZXJ9IFtzaWduYXR1cmVzUmVxdWlyZWRdIC0gbnVtYmVyIG9mIHNpZ25hdHVyZXMgcmVxdWlyZWQsIGRlZmF1bHQgdmFsdWUgaXRzIDJcbiAqIEByZXR1cm5zIHthZGRyZXNzOiBzdHJpbmcsIGhhc2gxNjA6IHN0cmluZ30gLSBhIG11bHRpc2lnIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNUWEFkZHJlc3NGcm9tUHViS2V5cyhcbiAgcHViS2V5czogc3RyaW5nW10sXG4gIGFkZHJlc3NWZXJzaW9uOiBBZGRyZXNzVmVyc2lvbiA9IEFkZHJlc3NWZXJzaW9uLk1haW5uZXRNdWx0aVNpZyxcbiAgYWRkcmVzc0hhc2hNb2RlOiBBZGRyZXNzSGFzaE1vZGUgPSBBZGRyZXNzSGFzaE1vZGUuU2VyaWFsaXplUDJTSCxcbiAgc2lnbmF0dXJlc1JlcXVpcmVkID0gMlxuKTogeyBhZGRyZXNzOiBzdHJpbmc7IGhhc2gxNjA6IHN0cmluZyB9IHtcbiAgaWYgKHB1YktleXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG51bWJlciBvZiBwdWJsaWMga2V5cycpO1xuICB9XG4gIGlmICghcHViS2V5cy5ldmVyeShpc1ZhbGlkUHVibGljS2V5KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwdWJsaWMga2V5cycpO1xuICB9XG4gIGlmIChzaWduYXR1cmVzUmVxdWlyZWQgPiBwdWJLZXlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVyIG9mIHNpZ25hdHVyZXMgcmVxdWlyZWQgbXVzdCBiZSBsb3dlciBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIFB1YmxpYyBLZXlzJyk7XG4gIH1cblxuICBjb25zdCBzdHhQdWJLZXlzID0gcHViS2V5cy5tYXAoY3JlYXRlU3RhY2tzUHVibGljS2V5KTtcbiAgY29uc3QgYWRkcmVzcyA9IGFkZHJlc3NGcm9tUHVibGljS2V5cyhhZGRyZXNzVmVyc2lvbiwgYWRkcmVzc0hhc2hNb2RlLCBzaWduYXR1cmVzUmVxdWlyZWQsIHN0eFB1YktleXMpO1xuXG4gIHJldHVybiB7IGFkZHJlc3M6IGFkZHJlc3NUb1N0cmluZyhhZGRyZXNzKSwgaGFzaDE2MDogYWRkcmVzcy5oYXNoMTYwIH07XG59XG5cbi8qKlxuICogc2lnbnMgYSBzdHJpbmcgbWVzc2FnZVxuICpcbiAqIEBwYXJhbSBrZXlQYWlyXG4gKiBAcGFyYW0gZGF0YSAgLSBtZXNzYWdlIHRvIGJlIHNpZ25lZFxuICogQHJldHVybnMgc2lnbmVkIG1lc3NhZ2Ugc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduTWVzc2FnZShrZXlQYWlyOiBLZXlQYWlyLCBkYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwcnYgPSBrZXlQYWlyLmdldEtleXMoKS5wcnY7XG4gIGlmIChwcnYpIHtcbiAgICByZXR1cm4gc2lnbldpdGhLZXkoY3JlYXRlU3RhY2tzUHJpdmF0ZUtleShwcnYpLCBCdWZmZXIuZnJvbShkYXRhKS50b1N0cmluZygnaGV4JykpLmRhdGE7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICB9XG59XG5cbi8qKlxuICogVmVyaWZpZXMgYSBzaWduZWQgbWVzc2FnZVxuICpcbiAqIFRoZSBzaWduYXR1cmUgbXVzdCBiZSAxMzAgYnl0ZXMgbG9uZyAtLSBzZWUgUkVDT1ZFUkFCTEVfRUNEU0FfU0lHX0xFTkdUSF9CWVRFU1xuICogaW4gQHN0YWNrcy90cmFuc2FjdGlvbnMvc3JjL2NvbnN0YW50cy50c1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gbWVzc2FnZSB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSAtIHNpZ25hdHVyZSB0byB2ZXJpZnlcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaWNLZXkgLSBwdWJsaWMga2V5IGFzIGhleCBzdHJpbmcgdXNlZCB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gdmVyaWZpY2F0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKG1lc3NhZ2U6IHN0cmluZywgc2lnbmF0dXJlOiBzdHJpbmcsIHB1YmxpY0tleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghaXNWYWxpZFB1YmxpY0tleShwdWJsaWNLZXkpKSByZXR1cm4gZmFsc2U7XG4gIGlmIChzaWduYXR1cmUubGVuZ3RoICE9PSAxMzApIHJldHVybiBmYWxzZTtcbiAgaWYgKCFhbGxIZXhDaGFycyhzaWduYXR1cmUpKSB0aHJvdyBuZXcgVXRpbHNFcnJvcignSW52YWxpZCBzaWduYXR1cmUgaW5wdXQgdG8gdmVyaWZ5U2lnbmF0dXJlJyk7XG4gIGlmIChfLmlzRW1wdHkobWVzc2FnZSkpIHRocm93IG5ldyBVdGlsc0Vycm9yKCdDYW5ub3QgdmVyaWZ5IGVtcHR5IG1lc3NhZ2VzJyk7XG5cbiAgLy8gcHJvdmlkZWQgcHVibGljS2V5IGNhbiBiZSBjb21wcmVzc2VkIG9yIHVuY29tcHJlc3NlZFxuICBjb25zdCBrZXlFbmNvZGluZyA9IHB1YmxpY0tleS5sZW5ndGggPT09IDY2ID8gUHViS2V5RW5jb2RpbmcuQ29tcHJlc3NlZCA6IFB1YktleUVuY29kaW5nLlVuY29tcHJlc3NlZDtcblxuICBjb25zdCBtZXNzYWdlU2lnID0gY3JlYXRlTWVzc2FnZVNpZ25hdHVyZShzaWduYXR1cmUpO1xuXG4gIGNvbnN0IGZvdW5kS2V5ID0gcHVibGljS2V5RnJvbVNpZ25hdHVyZShCdWZmZXIuZnJvbShtZXNzYWdlKS50b1N0cmluZygnaGV4JyksIG1lc3NhZ2VTaWcsIGtleUVuY29kaW5nKTtcblxuICByZXR1cm4gZm91bmRLZXkgPT09IHB1YmxpY0tleTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzIGFkZHJlc3MgaW50byBhZGRyZXNzIGFuZCBtZW1vIGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgdGhlIGFkZHJlc3MgdG8gcHJvY2Vzc1xuICogQHJldHVybnMge09iamVjdH0gb2JqZWN0IGNvbnRhaW5pbmcgYWRkcmVzcyBhbmQgbWVtbyBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkcmVzc0RldGFpbHMoYWRkcmVzczogc3RyaW5nKTogQWRkcmVzc0RldGFpbHMge1xuICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IHVybC5wYXJzZShhZGRyZXNzKTtcbiAgY29uc3QgcXVlcnlEZXRhaWxzID0gYWRkcmVzc0RldGFpbHMucXVlcnkgPyBuZXcgVVJMU2VhcmNoUGFyYW1zKGFkZHJlc3NEZXRhaWxzLnF1ZXJ5KSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYmFzZUFkZHJlc3MgPSBhZGRyZXNzRGV0YWlscy5wYXRobmFtZSBhcyBzdHJpbmc7XG4gIGlmICghaXNWYWxpZEFkZHJlc3MoYmFzZUFkZHJlc3MpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICB9XG4gIC8vIGFkZHJlc3MgZG9lc24ndCBoYXZlIGEgbWVtbyBpZFxuICBpZiAoYmFzZUFkZHJlc3MgPT09IGFkZHJlc3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWRkcmVzczogYWRkcmVzcyxcbiAgICAgIG1lbW9JZDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBpZiAoIXF1ZXJ5RGV0YWlscyB8fCBfLmlzTmlsKHF1ZXJ5RGV0YWlscy5nZXQoJ21lbW9JZCcpKSkge1xuICAgIC8vIGlmIHRoZXJlIGFyZSBtb3JlIHByb3BlcnRpZXMsIHRoZSBxdWVyeSBkZXRhaWxzIG5lZWQgdG8gY29udGFpbiB0aGUgbWVtbyBpZCBwcm9wZXJ0eVxuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3Mgd2l0aCBtZW1vIGlkOiAke2FkZHJlc3N9YCk7XG4gIH1cbiAgY29uc3QgbWVtb0lkID0gcXVlcnlEZXRhaWxzLmdldCgnbWVtb0lkJykgYXMgc3RyaW5nO1xuICBjb25zdCBpbnRNZW1vSWQgPSBwYXJzZUludChtZW1vSWQsIDEwKTtcbiAgaWYgKGlzTmFOKGludE1lbW9JZCkgfHwgaW50TWVtb0lkIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBtZW1vIGlkOiAke21lbW9JZH1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWRkcmVzczogYmFzZUFkZHJlc3MsXG4gICAgbWVtb0lkLFxuICB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGFuZCByZXR1cm4gYWRkcmVzcyB3aXRoIGFwcGVuZGVkIG1lbW8gaWRcbiAqXG4gKiBAcGFyYW0ge0FkZHJlc3NEZXRhaWxzfSBhZGRyZXNzRGV0YWlsc1xuICogQHJldHVybnMge3N0cmluZ30gYWRkcmVzcyB3aXRoIG1lbW8gaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFkZHJlc3MoeyBhZGRyZXNzLCBtZW1vSWQgfTogQWRkcmVzc0RldGFpbHMpOiBzdHJpbmcge1xuICBpZiAoIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICB9XG4gIGlmICghXy5pc1VuZGVmaW5lZChtZW1vSWQpKSB7XG4gICAgY29uc3QgaW50TWVtb0lkID0gcGFyc2VJbnQobWVtb0lkLCAxMCk7XG4gICAgaWYgKGlzTmFOKGludE1lbW9JZCkgfHwgaW50TWVtb0lkIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG1lbW8gaWQ6ICR7bWVtb0lkfWApO1xuICAgIH1cbiAgICByZXR1cm4gYCR7YWRkcmVzc30/bWVtb0lkPSR7bWVtb0lkfWA7XG4gIH1cbiAgcmV0dXJuIGFkZHJlc3M7XG59XG5cbi8qKlxuICogUmV0dXJuIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGlucHV0IGlzIGEgdmFsaWQgYWRkcmVzcyB3aXRoIG1lbW8gaWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyBhZGRyZXNzIGluIHRoZSBmb3JtIDxhZGRyZXNzPj9tZW1vSWQ9PG1lbW9JZD5cbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlzIGlucHV0IGlzIGEgdmFsaWQgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3NXaXRoUGF5bWVudElkKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGFkZHJlc3NEZXRhaWxzID0gZ2V0QWRkcmVzc0RldGFpbHMoYWRkcmVzcyk7XG4gICAgcmV0dXJuIGFkZHJlc3MgPT09IG5vcm1hbGl6ZUFkZHJlc3MoYWRkcmVzc0RldGFpbHMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBjbGFyaXR5IHZhbHVlIGlucHV0XG4gKlxuICogQHBhcmFtIHtDbGFyaXR5VmFsdWV9IGN2IGNsYXJpdHkgdmFsdWUgZnVuY3Rpb24gYXJndW1lbnRcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHN0cmluZ2lmaWVkIGNsYXJpdHkgdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeUN2KGN2OiBDbGFyaXR5VmFsdWUpOiBhbnkge1xuICBzd2l0Y2ggKGN2LnR5cGUpIHtcbiAgICBjYXNlIENsYXJpdHlUeXBlLkludDpcbiAgICBjYXNlIENsYXJpdHlUeXBlLlVJbnQ6XG4gICAgICByZXR1cm4geyB0eXBlOiBjdi50eXBlLCB2YWx1ZTogY3YudmFsdWUudG9TdHJpbmcoKSB9O1xuICAgIGNhc2UgQ2xhcml0eVR5cGUuT3B0aW9uYWxTb21lOlxuICAgICAgcmV0dXJuIHsgdHlwZTogY3YudHlwZSwgdmFsdWU6IHN0cmluZ2lmeUN2KGN2LnZhbHVlKSB9O1xuICAgIGNhc2UgQ2xhcml0eVR5cGUuVHVwbGU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBjdi50eXBlLFxuICAgICAgICBkYXRhOiBfLm1hcFZhbHVlcyhjdi5kYXRhLCAodmFsdWUpID0+IHN0cmluZ2lmeUN2KHZhbHVlKSksXG4gICAgICB9O1xuICAgIGNhc2UgQ2xhcml0eVR5cGUuTGlzdDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IGN2LnR5cGUsXG4gICAgICAgIGxpc3Q6IGN2Lmxpc3QubWFwKHN0cmluZ2lmeUN2KSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjdjtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIGZ1bmN0aW9uQXJncyBpbnRvIHNlbmQgcGFyYW1zIGZvciBzZW5kLW1hbnktbWVtbyBjb250cmFjdCBjYWxsc1xuICpcbiAqIEBwYXJhbSB7Q2xhcml0eVZhbHVlW119IGFyZ3MgZnVuY3Rpb25BcmdzIGZyb20gYSBjb250cmFjdCBjYWxsIHBheWxvYWRcbiAqIEByZXR1cm5zIHtTZW5kUGFyYW1zW119IEFuIGFycmF5IG9mIHNlbmRQYXJhbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZ1bmN0aW9uQXJnc1RvU2VuZFBhcmFtcyhhcmdzOiBDbGFyaXR5VmFsdWVbXSk6IFNlbmRQYXJhbXNbXSB7XG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMSB8fCBhcmdzWzBdLnR5cGUgIT09IENsYXJpdHlUeXBlLkxpc3QpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXCJmdW5jdGlvbiBhcmdzIGRvbid0IG1hdGNoIHNlbmQtbWFueS1tZW1vIHR5cGUgZGVjbGFyYXRpb25cIik7XG4gIH1cbiAgcmV0dXJuIGFyZ3NbMF0ubGlzdC5tYXAoKHR1cGxlKSA9PiB7XG4gICAgaWYgKFxuICAgICAgdHVwbGUudHlwZSAhPT0gQ2xhcml0eVR5cGUuVHVwbGUgfHxcbiAgICAgIHR1cGxlLmRhdGEudG8/LnR5cGUgIT09IENsYXJpdHlUeXBlLlByaW5jaXBhbFN0YW5kYXJkIHx8XG4gICAgICB0dXBsZS5kYXRhLnVzdHg/LnR5cGUgIT09IENsYXJpdHlUeXBlLlVJbnQgfHxcbiAgICAgIHR1cGxlLmRhdGEubWVtbz8udHlwZSAhPT0gQ2xhcml0eVR5cGUuQnVmZmVyXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXCJmdW5jdGlvbiBhcmdzIGRvbid0IG1hdGNoIHNlbmQtbWFueS1tZW1vIHR5cGUgZGVjbGFyYXRpb25cIik7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiBjdlRvU3RyaW5nKHR1cGxlLmRhdGEudG8pLFxuICAgICAgYW1vdW50OiBjdlRvVmFsdWUodHVwbGUuZGF0YS51c3R4LCB0cnVlKSxcbiAgICAgIG1lbW86IHR1cGxlLmRhdGEubWVtby5idWZmZXIudG9TdHJpbmcoJ2FzY2lpJyksXG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmdW5jdGlvbkFyZ3NUb1Rva2VuVHJhbnNmZXJQYXJhbXMoYXJnczogQ2xhcml0eVZhbHVlW10pOiBUb2tlblRyYW5zZmVyUGFyYW1zIHtcbiAgaWYgKGFyZ3MubGVuZ3RoIDwgMykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcImZ1bmN0aW9uIGFyZ3MgZG9uJ3QgbWF0Y2ggdG9rZW4gdHJhbnNmZXIgZGVjbGFyYXRpb25cIik7XG4gIH1cbiAgaWYgKFxuICAgIGFyZ3NbMF0udHlwZSAhPT0gQ2xhcml0eVR5cGUuVUludCB8fFxuICAgIGFyZ3NbMV0udHlwZSAhPT0gQ2xhcml0eVR5cGUuUHJpbmNpcGFsU3RhbmRhcmQgfHxcbiAgICBhcmdzWzJdLnR5cGUgIT09IENsYXJpdHlUeXBlLlByaW5jaXBhbFN0YW5kYXJkXG4gICkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcImZ1bmN0aW9uIGFyZ3MgZG9uJ3QgbWF0Y2ggdG9rZW4gdHJhbnNmZXIgZGVjbGFyYXRpb25cIik7XG4gIH1cbiAgY29uc3QgdG9rZW5UcmFuc2ZlclBhcmFtcyA9IHtcbiAgICBhbW91bnQ6IGN2VG9WYWx1ZShhcmdzWzBdLCB0cnVlKSxcbiAgICBzZW5kZXI6IGN2VG9TdHJpbmcoYXJnc1sxXSksXG4gICAgcmVjaXBpZW50OiBjdlRvU3RyaW5nKGFyZ3NbMl0pLFxuICB9O1xuICBpZiAoYXJncy5sZW5ndGggPT09IDQgJiYgYXJnc1szXS50eXBlID09PSBDbGFyaXR5VHlwZS5CdWZmZXIpIHtcbiAgICB0b2tlblRyYW5zZmVyUGFyYW1zWydtZW1vJ10gPSBhcmdzWzNdLmJ1ZmZlci50b1N0cmluZygnYXNjaWknKTtcbiAgfVxuICByZXR1cm4gdG9rZW5UcmFuc2ZlclBhcmFtcztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2ZXJzaW9uIG9mIGFuIGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyB0aGUgYWRkcmVzcyB3aXRoIG9yIHdpdGhvdXQgdGhlIG1lbW9JZFxuICogQHJldHVybnMge0FkZHJlc3NWZXJzaW9ufSBBIG51bWJlciB0aGF0IHJlcHJlc2VudCB0aGUgQWRkcmVzcyBWZXJzaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRyZXNzVmVyc2lvbihhZGRyZXNzOiBzdHJpbmcpOiBBZGRyZXNzVmVyc2lvbiB7XG4gIGNvbnN0IGJhc2VBZGRyZXNzID0gZ2V0QWRkcmVzc0RldGFpbHMoYWRkcmVzcykuYWRkcmVzcztcbiAgcmV0dXJuIGNyZWF0ZUFkZHJlc3MoYmFzZUFkZHJlc3MpLnZlcnNpb247XG59XG5cbi8qKlxuICogRW5jb2RlIGEgU3RhY2tzICpzdGFuZGFyZCogcHJpbmNpcGFsIGFzIHRoZSBDbGFyaXR5IFNJUC0wMDUgaGV4IHdpcmUgZm9ybWF0XG4gKiDigJQgYSAyMi1ieXRlIGJsb2I6XG4gKlxuICogICAgIGAweDA1YCB8fCB2ZXJzaW9uICgxIGJ5dGUpIHx8IGhhc2gxNjAgKDIwIGJ5dGVzKVxuICpcbiAqIENvbnRyYWN0IHByaW5jaXBhbHMgKGA8YWRkcmVzcz4uPGNvbnRyYWN0LW5hbWU+YCkgYW5kIGFkZHJlc3NlcyB3aXRoIGFcbiAqIGA/bWVtb0lkPeKApmAgc3VmZml4IGFyZSByZWplY3RlZC4gVGhlIENsYXJpdHkgdHlwZSBieXRlIChgMHgwNWApIGlzIHNldFxuICogYnkgYHNlcmlhbGl6ZUNWYCBmcm9tIGBAc3RhY2tzL3RyYW5zYWN0aW9uc2AsIHNvIHRoaXMgaGVscGVyIGRvZXMgbm90XG4gKiBoYW5kLXJvbGwgYW55IGJ5dGUgY29uY2F0ZW5hdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJpbmNpcGFsIGEgU3RhY2tzIHN0YW5kYXJkIHByaW5jaXBhbCAoZS5nLiBgU1DigKZgIC8gYFNU4oCmYClcbiAqIEByZXR1cm5zIHtzdHJpbmd9IGhleC1lbmNvZGVkIDIyLWJ5dGUgQ2xhcml0eSBzdGFuZGFyZCBwcmluY2lwYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVuY29kZWRQcmluY2lwYWwocHJpbmNpcGFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAocHJpbmNpcGFsLmluY2x1ZGVzKCc/JykpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcihgcHJpbmNpcGFsIG11c3Qgbm90IGluY2x1ZGUgYSBxdWVyeSBzdHJpbmc6ICR7cHJpbmNpcGFsfWApO1xuICB9XG4gIGlmIChwcmluY2lwYWwuaW5jbHVkZXMoJy4nKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKGBjb250cmFjdCBwcmluY2lwYWxzIGFyZSBub3Qgc3VwcG9ydGVkLCBleHBlY3RlZCBhIHN0YW5kYXJkIHByaW5jaXBhbDogJHtwcmluY2lwYWx9YCk7XG4gIH1cbiAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhwcmluY2lwYWwpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYGludmFsaWQgU3RhY2tzIGFkZHJlc3MgaW4gcHJpbmNpcGFsOiAke3ByaW5jaXBhbH1gKTtcbiAgfVxuICByZXR1cm4gc2VyaWFsaXplQ1Yoc3RhbmRhcmRQcmluY2lwYWxDVihwcmluY2lwYWwpKS50b1N0cmluZygnaGV4Jyk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIFNUWCBwdWIga2V5IGZyb20gYW4geHB1YlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB4cHViIGFuIHhwdWJcbiAqIEByZXR1cm5zIHtTdHJpbmd9IGEgY29tcHJlc3NlZCBTVFggcHViIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24geHB1YlRvU1RYUHVia2V5KHhwdWI6IHN0cmluZywgY29tcHJlc3NlZCA9IHRydWUpOiBzdHJpbmcge1xuICByZXR1cm4gbmV3IEtleVBhaXIoeyBwdWI6IHhwdWIgfSkuZ2V0S2V5cyhjb21wcmVzc2VkKS5wdWI7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmFzZSBhZGRyZXNzIHBvcnRpb24gb2YgYW4gYWRkcmVzc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBhZGRyZXNzIC0gYW4gYWRkcmVzc1xuICogQHJldHVybnMge1N0cmluZ30gLSB0aGUgYmFzZSBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3MpO1xuICByZXR1cm4gYWRkcmVzc0RldGFpbHMuYWRkcmVzcztcbn1cblxuLyoqXG4gKiBDb21wYXJlcyBhbiBhZGRyZXNzIHRvIHRoZSBiYXNlIGFkZHJlc3MgdG8gY2hlY2sgaWYgbWF0Y2hzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBhZGRyZXNzIC0gYW4gYWRkcmVzc1xuICogQHBhcmFtIHtTdHJpbmd9IGJhc2VBZGRyZXNzIC0gYSBiYXNlIGFkZHJlc3NcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTYW1lQmFzZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBiYXNlQWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghaXNWYWxpZEFkZHJlc3NXaXRoUGF5bWVudElkKGFkZHJlc3MpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICB9XG4gIHJldHVybiBnZXRCYXNlQWRkcmVzcyhhZGRyZXNzKSA9PT0gZ2V0QmFzZUFkZHJlc3MoYmFzZUFkZHJlc3MpO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGdldCB0b2tlbk5hbWUgZnJvbSBsaXN0IG9mIHNpcDEwIHRva2VucyB1c2luZyBjb250cmFjdCBkZXRhaWxzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGNvbnRyYWN0QWRkcmVzc1xuICogQHBhcmFtIHtTdHJpbmd9IGNvbnRyYWN0TmFtZVxuICogQHJldHVybnMge1N0cmluZ3xVbmRlZmluZWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kVG9rZW5OYW1lQnlDb250cmFjdChjb250cmFjdEFkZHJlc3M6IHN0cmluZywgY29udHJhY3ROYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB7XG4gICAgY29uc3QgdG9rZW5OYW1lID0gY29pbnNcbiAgICAgIC5maWx0ZXIoKGNvaW4pID0+IGNvaW4gaW5zdGFuY2VvZiBTaXAxMFRva2VuICYmIGNvaW4uYXNzZXRJZC5pbmNsdWRlcyhgJHtjb250cmFjdEFkZHJlc3N9LiR7Y29udHJhY3ROYW1lfWApKVxuICAgICAgLm1hcCgoY29pbikgPT4gY29pbi5uYW1lKTtcbiAgICByZXR1cm4gdG9rZW5OYW1lID8gdG9rZW5OYW1lWzBdIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZ2V0IGNvbnRyYWN0VG9rZW5OYW1lIGZyb20gbGlzdCBvZiBzaXAxMCB0b2tlbnMgdXNpbmcgY29udHJhY3QgZGV0YWlsc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb250cmFjdEFkZHJlc3NcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb250cmFjdE5hbWVcbiAqIEByZXR1cm5zIHtTdHJpbmd8VW5kZWZpbmVkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZENvbnRyYWN0VG9rZW5OYW1lVXNpbmdDb250cmFjdChjb250cmFjdEFkZHJlc3M6IHN0cmluZywgY29udHJhY3ROYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB7XG4gICAgY29uc3Qgc2lwMTBUb2tlbiA9IGNvaW5zXG4gICAgICAuZmlsdGVyKChjb2luKSA9PiBjb2luIGluc3RhbmNlb2YgU2lwMTBUb2tlbiAmJiBjb2luLmFzc2V0SWQuaW5jbHVkZXMoYCR7Y29udHJhY3RBZGRyZXNzfS4ke2NvbnRyYWN0TmFtZX1gKSlcbiAgICAgIC5tYXAoKGNvaW4pID0+IGNvaW4gYXMgU2lwMTBUb2tlbik7XG4gICAgcmV0dXJuIHNpcDEwVG9rZW4gPyBzaXAxMFRva2VuWzBdLmFzc2V0SWQuc3BsaXQoJzo6JylbMV0gOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0byBnZXQgYWRkcmVzcyBhbmQgbWVtbyBkZXRhaWxzIGZyb20gYWRkcmVzcyBpbnB1dFxuICpcbiAqIEBwYXJhbSBhZGRyZXNzXG4gKiBAcmV0dXJucyB7QWRkcmVzc0RldGFpbHN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW1vSWRBbmRCYXNlQWRkcmVzc0Zyb21BZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IEFkZHJlc3NEZXRhaWxzIHtcbiAgY29uc3QgW2Jhc2VBZGRyZXNzLCBxdWVyeVN0cmluZ10gPSBhZGRyZXNzLnNwbGl0KCc/Jyk7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICBjb25zdCBtZW1vSWQgPSBwYXJhbXMuZ2V0KCdtZW1vSWQnKTtcblxuICByZXR1cm4ge1xuICAgIGFkZHJlc3M6IGJhc2VBZGRyZXNzLFxuICAgIG1lbW9JZDogbWVtb0lkID8gbWVtb0lkIDogdW5kZWZpbmVkLFxuICB9O1xufVxuIl19
@@ -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 = "0157a170fae4a310c4b59b8d173289b4adacb79b0a187a6e132cdf02374c22b59519b862d95240af464808faaed341fe42d740c9b89850b52f5f7f906deba67064";
33
+ export declare const expectedSignature1 = "00e047c0a5146df934522795a9ec08fea37e1450287ec2ab697ee50e0b39502d695372444acf47d117bec621bb38dd8f3b92a47972a209c302049d9555d912afa9";
34
34
  export declare const message2 = "hello";
35
- export declare const expectedSignature2 = "007a86b0a5486987605f7274272cb4eaefa37af216bdf0c88c5b985a70923d550032b3cf226a8384ad2b96d0b3794b9a6f8e6ed191582fb0cc4f830b2ef14d05fe";
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 = '0157a170fae4a310c4b59b8d173289b4adacb79b0a187a6e132cdf02374c22b59519b862d95240af464808faaed341fe42d740c9b89850b52f5f7f906deba67064';
55
+ exports.expectedSignature1 = '00e047c0a5146df934522795a9ec08fea37e1450287ec2ab697ee50e0b39502d695372444acf47d117bec621bb38dd8f3b92a47972a209c302049d9555d912afa9';
56
56
  exports.message2 = 'hello';
57
57
  // when signed with secretKey2
58
- exports.expectedSignature2 = '007a86b0a5486987605f7274272cb4eaefa37af216bdf0c88c5b985a70923d550032b3cf226a8384ad2b96d0b3794b9a6f8e6ed191582fb0cc4f830b2ef14d05fe';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3Jlc291cmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQW1DO0FBRW5DOzs7Ozs7Ozs7R0FTRztBQUVVLFFBQUEsVUFBVSxHQUFHLGtFQUFrRSxDQUFDO0FBQ2hGLFFBQUEsT0FBTyxHQUNsQixvSUFBb0ksQ0FBQztBQUMxSCxRQUFBLFFBQVEsR0FBRywyQ0FBMkMsQ0FBQztBQUV2RCxRQUFBLFVBQVUsR0FBRyxrRUFBa0UsQ0FBQztBQUNoRixRQUFBLE9BQU8sR0FDbEIsb0lBQW9JLENBQUM7QUFDMUgsUUFBQSxpQkFBaUIsR0FBRyxvRUFBb0UsQ0FBQztBQUN6RixRQUFBLFFBQVEsR0FBRywwQ0FBMEMsQ0FBQztBQUVuRSwrQkFBK0I7QUFDL0Isd0JBQXdCO0FBQ1gsUUFBQSxLQUFLLEdBQ2hCLGlIQUFpSCxDQUFDO0FBQ3ZHLFFBQUEsS0FBSyxHQUNoQixpSEFBaUgsQ0FBQztBQUN2RyxRQUFBLGFBQWEsR0FBRyxrRUFBa0UsQ0FBQztBQUNuRixRQUFBLGFBQWEsR0FDeEIsb0lBQW9JLENBQUM7QUFDMUgsUUFBQSx1QkFBdUIsR0FBRyxvRUFBb0UsQ0FBQztBQUUvRixRQUFBLFNBQVMsR0FBRztJQUN2QixHQUFHLEVBQUUsa0JBQVU7SUFDZixHQUFHLEVBQUUsZUFBTztJQUNaLE9BQU8sRUFBRSxnQkFBUTtDQUNsQixDQUFDO0FBRVcsUUFBQSxTQUFTLEdBQUc7SUFDdkIsR0FBRyxFQUFFLGtCQUFVO0lBQ2YsR0FBRyxFQUFFLGVBQU87SUFDWixPQUFPLEVBQUUsZ0JBQVE7Q0FDbEIsQ0FBQztBQUVXLFFBQUEsUUFBUSxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxvRUFBb0U7Q0FDMUUsQ0FBQztBQUVXLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLE9BQU8sRUFBRSwyQ0FBMkM7Q0FDckQsQ0FBQztBQUVXLFFBQUEscUJBQXFCLEdBQUcsSUFBSSxZQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3RELEdBQUcsRUFBRSxrQkFBVTtDQUNoQixDQUFDLENBQUM7QUFFVSxRQUFBLHFCQUFxQixHQUFHLElBQUksWUFBTSxDQUFDLE9BQU8sQ0FBQztJQUN0RCxHQUFHLEVBQUUsZUFBTztDQUNiLENBQUMsQ0FBQztBQUVILG9CQUFvQjtBQUNQLFFBQUEsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUM5Qiw4QkFBOEI7QUFDakIsUUFBQSxrQkFBa0IsR0FDN0Isb0lBQW9JLENBQUM7QUFFMUgsUUFBQSxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ2hDLDhCQUE4QjtBQUNqQixRQUFBLGtCQUFrQixHQUM3QixvSUFBb0ksQ0FBQztBQUV2SSw2Q0FBNkM7QUFDaEMsUUFBQSxvQkFBb0IsR0FBRyxrRUFBa0UsQ0FBQztBQUMxRixRQUFBLGlCQUFpQixHQUM1QixvSUFBb0ksQ0FBQztBQUUxSCxRQUFBLHFDQUFxQyxHQUFHLDJDQUEyQyxDQUFDO0FBQ3BGLFFBQUEscUNBQXFDLEdBQUcsMkNBQTJDLENBQUM7QUFDcEYsUUFBQSxtQ0FBbUMsR0FBRywyQ0FBMkMsQ0FBQztBQUNsRixRQUFBLG1DQUFtQyxHQUFHLDJDQUEyQyxDQUFDO0FBRWxGLFFBQUEsbUJBQW1CLEdBQUcsSUFBSSxZQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3BELEdBQUcsRUFBRSxrRUFBa0U7Q0FDeEUsQ0FBQyxDQUFDO0FBRVUsUUFBQSxTQUFTLEdBQUc7SUFDdkIsR0FBRyxFQUFFLG9FQUFvRTtJQUN6RSxHQUFHLEVBQUUsb0VBQW9FO0lBQ3pFLE9BQU8sRUFBRSwwQ0FBMEM7Q0FDcEQsQ0FBQztBQUVXLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLE9BQU8sRUFBRSwwQ0FBMEM7Q0FDcEQsQ0FBQztBQUVXLFFBQUEsZUFBZSxHQUMxQiwwV0FBMFcsQ0FBQztBQUVoVyxRQUFBLGtCQUFrQixHQUM3QiwwV0FBMFcsQ0FBQztBQUU3VyxzQ0FBc0M7QUFDekIsUUFBQSx5QkFBeUIsR0FDcEMsOGpCQUE4akIsQ0FBQztBQUNwakIsUUFBQSx5QkFBeUIsR0FDcEMsOGpCQUE4akIsQ0FBQztBQUVqa0IsdUNBQXVDO0FBQzFCLFFBQUEsY0FBYyxHQUFHLG9FQUFvRSxDQUFDO0FBQ3RGLFFBQUEsY0FBYyxHQUN6QixvSUFBb0ksQ0FBQztBQUV2SSxZQUFZO0FBQ0MsUUFBQSxJQUFJLEdBQUcsb0VBQW9FLENBQUM7QUFDNUUsUUFBQSxJQUFJLEdBQUcsb0VBQW9FLENBQUM7QUFDNUUsUUFBQSxJQUFJLEdBQUcsb0VBQW9FLENBQUM7QUFDNUUsUUFBQSxJQUFJLEdBQUcsb0VBQW9FLENBQUM7QUFDNUUsUUFBQSxJQUFJLEdBQUcsb0VBQW9FLENBQUM7QUFDNUUsUUFBQSxJQUFJLEdBQUcsb0VBQW9FLENBQUM7QUFDNUUsUUFBQSw0QkFBNEIsR0FDdkMsOGpCQUE4akIsQ0FBQztBQUVqa0IsZ0JBQWdCO0FBQ0gsUUFBQSxnQkFBZ0IsR0FBRywrQkFBK0IsQ0FBQztBQUNuRCxRQUFBLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDeEIsUUFBQSxzQkFBc0IsR0FBRyxXQUFXLENBQUM7QUFDckMsUUFBQSxpQ0FBaUMsR0FDNUMsc25CQUFzbkIsQ0FBQztBQUM1bUIsUUFBQSwrQkFBK0IsR0FDMUMsc25CQUFzbkIsQ0FBQztBQUU1bUIsUUFBQSxzQkFBc0IsR0FDakMsc2dCQUFzZ0IsQ0FBQztBQUM1ZixRQUFBLHlCQUF5QixHQUNwQyxvZUFBb2UsQ0FBQztBQUMxZCxRQUFBLG9CQUFvQixHQUMvQixnV0FBZ1csQ0FBQztBQUN0VixRQUFBLHVCQUF1QixHQUNsQyxvakJBQW9qQixDQUFDO0FBRXZqQixxQ0FBcUM7QUFDeEIsUUFBQSxvQ0FBb0MsR0FBRywyQ0FBMkMsQ0FBQztBQUNuRixRQUFBLGlDQUFpQyxHQUFHLGdCQUFnQixDQUFDO0FBQ3JELFFBQUEsMENBQTBDLEdBQUcsV0FBVyxDQUFDO0FBQ3pELFFBQUEsNEJBQTRCLEdBQ3ZDLG80QkFBbzRCLENBQUM7QUFDMTNCLFFBQUEsMEJBQTBCLEdBQ3JDLG9nQ0FBb2dDLENBQUM7QUFFMS9CLFFBQUEsYUFBYSxHQUFHO0lBQzNCLG9FQUFvRTtJQUNwRSxvRUFBb0U7SUFDcEUsb0VBQW9FO0NBQ3JFLENBQUM7QUFFVyxRQUFBLGtCQUFrQixHQUFHO0lBQ2hDO1FBQ0UsT0FBTyxFQUFFLDJDQUEyQztRQUNwRCxNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsUUFBUTtLQUNmO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsMkNBQTJDO1FBQ3BELE1BQU0sRUFBRSxTQUFTO1FBQ2pCLElBQUksRUFBRSxRQUFRO0tBQ2Y7SUFDRDtRQUNFLE9BQU8sRUFBRSwwQ0FBMEM7UUFDbkQsTUFBTSxFQUFFLFNBQVM7UUFDakIsSUFBSSxFQUFFLFFBQVE7S0FDZjtDQUNGLENBQUM7QUFFVyxRQUFBLElBQUksR0FBRyxRQUFRLENBQUM7QUFFaEIsUUFBQSxpQ0FBaUMsR0FBRztJQUMvQyxnQkFBZ0IsRUFBRSwwQ0FBMEM7SUFDNUQsYUFBYSxFQUFFLGVBQWU7SUFDOUIsYUFBYSxFQUFFLFVBQVU7SUFDekIsY0FBYyxFQUFFLDBDQUEwQztJQUMxRCxnQkFBZ0IsRUFBRSwyQ0FBMkM7SUFDN0QsVUFBVSxFQUFFLGVBQWU7SUFDM0Isc0JBQXNCLEVBQ3BCLG9uQkFBb25CO0lBQ3RuQixtQ0FBbUMsRUFDakMsc21CQUFzbUI7SUFDeG1CLG1CQUFtQixFQUNqQix3MEJBQXcwQjtJQUMxMEIsZ0NBQWdDLEVBQzlCLDR6QkFBNHpCO0NBQy96QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3R4TGliIH0gZnJvbSAnLi4vLi4vc3JjJztcblxuLypcbiAqIGtleXMgYW5kIGFkZHJlc3NlcyBhcmUgZnJvbTpcbiAqXG4gKiBpbXBvcnQgKiBhcyBzdCBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG4gKlxuICogY29uc3Qgc2VjcmV0S2V5MSA9IHN0LnByaXZhdGVLZXlUb1N0cmluZyhzdC5tYWtlUmFuZG9tUHJpdktleSgpKTtcbiAqIGNvbnN0IHB1YmxpY0tleTEgPSBzdC5wdWJsaWNLZXlUb1N0cmluZyhzdC5wdWJLZXlmcm9tUHJpdktleShzZWNyZXRLZXkxLmRhdGEpO1xuICogY29uc3QgYWRkcmVzczEgPSBzdC5nZXRBZGRyZXNzRnJvbVByaXZhdGVLZXkoc2VjcmV0S2V5MSk7XG4gKiBldGMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IHNlY3JldEtleTEgPSAnNjZjODg2NDgxMTZiNzIxYmIyZjM5NGUwMDA3ZjlkMzQ4ZWEwODAxN2I2ZTYwNGRlNTFhM2E3ZDk1N2Q1ODUyNCc7XG5leHBvcnQgY29uc3QgcHViS2V5MSA9XG4gICcwNGE2OGMyZDZmZGIzNzA2YjM5ZjMyZDZmNDIyNTI3NWNlMDYyNTYxOTA4ZmQ3Y2E1NDBhNDRjOTJlYjg1OTRlYTZkYjlmY2ZlMGIzOTBjMGVhZDNmNDVjMzZhZmQ2ODJlYWI2MmViMTI0YTYzYjQ2MDk0NWZlMWY3YzdmOGEwOWUyJztcbmV4cG9ydCBjb25zdCBhZGRyZXNzMSA9ICdTUDEwRkRIUVE0RjJGMEtITU42WjI0Uk1BTUdYNTkzM1NRSkNXS0FBUic7XG5cbmV4cG9ydCBjb25zdCBzZWNyZXRLZXkyID0gJzM1Nzk0YWRmMGRkMmEzMTNjMThiYzExOGI0MjI3NDBiYjk0Zjg1MTE0MTM0YmUzNDcwM2ZmNzA2NjU4MDg3ZTQnO1xuZXhwb3J0IGNvbnN0IHB1YktleTIgPVxuICAnMDQyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDhhOWM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhOTRhOWE3YzI0YTFjY2Q4Mzc5MjE3M2Y0NzVmZGI1OTBjYzgyZjk0ZmY2MTVkZjM5MTQyNzY2ZTc1OWNlNjM4Nyc7XG5leHBvcnQgY29uc3QgcHViS2V5MkNvbXByZXNzZWQgPSAnMDMyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDhhOWM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhJztcbmV4cG9ydCBjb25zdCBhZGRyZXNzMiA9ICdTUFM0SFNYQUQxV1NEMzk0M1daNTJNUFNZOVdQSzU2U0RHNTRIVEFSJztcblxuLy8gZXh0ZW5kZWQgcHJpdmF0ZS9wdWJsaWMga2V5c1xuLy8gU1RYIGRvZXMgbm90IHVzZSB0aGVtXG5leHBvcnQgY29uc3QgeHBydjEgPVxuICAneHBydjlzMjFaclFIMTQzSzM0YmRoQ1dNdWl1SGZkalFCMjFndTk1TndwZUdFRWZHTVdzN3RBNXMzUE1CQlBlSm1YbjVEUTN2djhIcDhrcTFLcnNhSkpuY3pXM0JNenRMMlZHVG54VlBnVmpncTFIJztcbmV4cG9ydCBjb25zdCB4cHViMSA9XG4gICd4cHViNjYxTXlNd0FxUmJjRllnNm9FM05HcnIyRGZadGFVallHTXp5a0Qzc25hQ0ZFS0NHUmhRN2JCZmYyZzNDWXZ5WVBRTUdTd1NlMURIOEdYdlA2dUIzaWlXc1BHR01iWFZaR2tyazFVeFFWazYnO1xuZXhwb3J0IGNvbnN0IHhwcnYxUHJvdG9jb2wgPSAnNzNlYTE5YWVhMjVlODdjNGVlOGVhZWUyMTQxNzQ0MmFjOWViNjg5OGY0NTM4YWRlOGYyMDkxZDFkMmM1OTQ2ZCc7XG5leHBvcnQgY29uc3QgeHB1YjFQcm90b2NvbCA9XG4gICcwNDI3OTRiYzQzZDc1ZGIwZTg1ODk5ODc4MTg3NTRhYTJmODIwYTM1MGE1NzQyZWZhZjBkNTA1MThmY2JjNmE4MGM1OTdhYTUxYWE4ZTc1NWZkMTBiNzUzZjdlMzY0MTA4NDkxNzFhOTlkODUzM2Y2ZWE4NGEwYzRkZmJlNmUyNDE5JztcbmV4cG9ydCBjb25zdCB4cHViMVByb3RvY29sQ29tcHJlc3NlZCA9ICcwMzI3OTRiYzQzZDc1ZGIwZTg1ODk5ODc4MTg3NTRhYTJmODIwYTM1MGE1NzQyZWZhZjBkNTA1MThmY2JjNmE4MGMnO1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF8xID0ge1xuICBwcnY6IHNlY3JldEtleTEsXG4gIHB1YjogcHViS2V5MSxcbiAgYWRkcmVzczogYWRkcmVzczEsXG59O1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF8yID0ge1xuICBwcnY6IHNlY3JldEtleTIsXG4gIHB1YjogcHViS2V5MixcbiAgYWRkcmVzczogYWRkcmVzczIsXG59O1xuXG5leHBvcnQgY29uc3QgU0VOREVSXzEgPSB7XG4gIHBydjogJ2VkZjlhZWU4NGQ5YjdhYmMxNDU1MDRkZGU2NzI2YzY0ZjM2OWQzN2VlMzRkZWQ4NjhmYWJkODc2YzI2NTcwYmMwMScsXG59O1xuXG5leHBvcnQgY29uc3QgUkVDSVBJRU5UXzEgPSB7XG4gIGFkZHJlc3M6ICdTUDNGR1E4WjdKWTlCV1laNVdNNTNFME05Tks3V0hKRjA2OTFOWjE1OScsXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEtleVBhaXJGcm9tUHJ2ID0gbmV3IFN0eExpYi5LZXlQYWlyKHtcbiAgcHJ2OiBzZWNyZXRLZXkxLFxufSk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0S2V5UGFpckZyb21QdWIgPSBuZXcgU3R4TGliLktleVBhaXIoe1xuICBwdWI6IHB1YktleTIsXG59KTtcblxuLy8gdmVyaWZ5IHNpZ25hdHVyZXNcbmV4cG9ydCBjb25zdCBtZXNzYWdlMSA9ICdhYmMnO1xuLy8gd2hlbiBzaWduZWQgd2l0aCBzZWNyZXRLZXkxXG5leHBvcnQgY29uc3QgZXhwZWN0ZWRTaWduYXR1cmUxID1cbiAgJzAxNTdhMTcwZmFlNGEzMTBjNGI1OWI4ZDE3MzI4OWI0YWRhY2I3OWIwYTE4N2E2ZTEzMmNkZjAyMzc0YzIyYjU5NTE5Yjg2MmQ5NTI0MGFmNDY0ODA4ZmFhZWQzNDFmZTQyZDc0MGM5Yjg5ODUwYjUyZjVmN2Y5MDZkZWJhNjcwNjQnO1xuXG5leHBvcnQgY29uc3QgbWVzc2FnZTIgPSAnaGVsbG8nO1xuLy8gd2hlbiBzaWduZWQgd2l0aCBzZWNyZXRLZXkyXG5leHBvcnQgY29uc3QgZXhwZWN0ZWRTaWduYXR1cmUyID1cbiAgJzAwN2E4NmIwYTU0ODY5ODc2MDVmNzI3NDI3MmNiNGVhZWZhMzdhZjIxNmJkZjBjODhjNWI5ODVhNzA5MjNkNTUwMDMyYjNjZjIyNmE4Mzg0YWQyYjk2ZDBiMzc5NGI5YTZmOGU2ZWQxOTE1ODJmYjBjYzRmODMwYjJlZjE0ZDA1ZmUnO1xuXG4vLyBzZWVkIGlzIEJ1ZmZlci5hbGxvYyg2NCkgLS0gYWxsIHplcm8gYnl0ZXNcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZFNlY3JldEtleSA9ICdlYWZkMTU3MDJmY2EzZjgwYmViNTY1ZTY2ZjE5ZTIwYmJhZDBhMzRiNDZiYjEyMDc1Y2JmMWM1ZDk0YmIyN2QyJztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZFB1YktleSA9XG4gICcwNDY2OTI2MWZlMjA0NTJmZTZhMDNlNjI1OTQ0YzZhMDUyM2U2MzUwYjNlYThjYmQzN2M5Y2ExZmY5N2UzYWM4YmYzZGQyZDUxYTA5ZDZkNDgzMWNiMmJjOTgyOGM1YWYxNGNlNGMzMzg0Yzk3M2Q3NWFhZDQyMzYyNmEyYTZkMThkJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc1VuY29tcHJlc3NlZE1haW5uZXQgPSAnU1AyMVg4UE1IOFQ0TVZYOFo3NUpaUFlFVkE2UThGRFI3UEoxM01WNFEnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc1VuY29tcHJlc3NlZFRlc3RuZXQgPSAnU1QyMVg4UE1IOFQ0TVZYOFo3NUpaUFlFVkE2UThGRFI3UEc4OFdUVkYnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc0NvbXByZXNzZWRNYWlubmV0ID0gJ1NQMzFNQlJGOUo4VzIyVzMwNDRNRUFaRFhGTU04NTY5OTY1M1pLUjdRJztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZEFkZHJlc3NDb21wcmVzc2VkVGVzdG5ldCA9ICdTVDMxTUJSRjlKOFcyMlczMDQ0TUVBWkRYRk1NODU2OTk2N1RGMVI0MSc7XG5cbmV4cG9ydCBjb25zdCBJTlZBTElEX0tFWVBBSVJfUFJWID0gbmV3IFN0eExpYi5LZXlQYWlyKHtcbiAgcHJ2OiAnOENBQTAwQUU2MzYzOEIwNTQyQTMwNDgyM0Q2NkQ5NkZGMzE3QTU3NkY2OTI2NjNEQjJGODVFNjBGQUIyNTkwQycsXG59KTtcblxuZXhwb3J0IGNvbnN0IFRYX1NFTkRFUiA9IHtcbiAgcHJ2OiAnY2IzZGYzODA1M2QxMzI4OTUyMjBiOWNlNDcxZjZiNjc2ZGI1YjliZjBiNGFkZWZiNTVmMjExOGVjZTI0NzhkZjAxJyxcbiAgcHViOiAnMDM3OTdkZDY1MzA0MGQzNDRmZDA0OGMxYWQwNWQ0Y2JjYjIxNzhiMzBjNmEwYzQyNzY5OTQ3OTVmM2U4MzNkYTQxJyxcbiAgYWRkcmVzczogJ1NUQjQ0SFlQWUFUMkJCMlFFNTEzTlNQODFIVE1ZV0JKUDAySFBHSzYnLFxufTtcblxuZXhwb3J0IGNvbnN0IFRYX1JFQ0lFVkVSID0ge1xuICBhZGRyZXNzOiAnU1RERTdZOEhWM1JYOFZCTTJUWlZXSlRTN1pBMVhCMFNTQzNORVZIMCcsXG59O1xuXG5leHBvcnQgY29uc3QgUkFXX1RYX1VOU0lHTkVEID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDAwNTFhMWFlM2Y5MTFkOGYxZDQ2ZDc0MTZiZmJlNGI1OTNmZDQxZWFjMTljYjAwMDAwMDAwMDAwMDAzZTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG5cbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT04gPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxMWFlMDZjMTRjOTY3Zjk5OTE4NGVhOGE3OTEzMTI1ZjA5YWI2NDAwNDQ0NmZjYTg5OTQwZjA5MjUwOTEyNGI5ZTc3M2FlZjQ4M2U5MjU0NzZjNzhlYzU4MTY2ZGNlY2FiMzg3NWI4ZmFiOGU5YWE0MjEzMTc5ZDE2NDQ2Mzk2MjgwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuLy8gVHJhbnNhY3Rpb25zIHNpZ24gd2l0aCAyIG9mIDMga2V5cy5cbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT05fUEtfMV8zID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAwOTQ3M2EzN2I5MTRmNzAzYzgxZjMzMTQxZDEwZWFiZTQ1NTBjNGQ2MWYxMTM2NjJjYzExY2RjMDQ2M2ZjMzc3MzU4NDA4YzczZDNkMzI3M2NkYmNjMzUxMWRiYmQyMDMxYjVlYWNhNGNiMmIxMzkyNWRhOWY5YjBjN2U2NGQxYTYwMDAyNGFiZGRkNjNiNTZjNTVjZDFlZDA4MDNjMjZjNDczZjVmMGI5ZDg0NzNiMzdiNjViZDgxMmYwMzUzNjVmMTU0YjAyMDE2YWFjMDM0N2I4NTIwZDg5MDVjYmQxM2M2MDFmNDVhMGNjYmJiMjQ4MzEzMjBjNTRkOWVlMmMxZTM2NTZiNzZkNzVlMWM1Mjc5MzIyNjdkODBiZWI5MDI1N2JiZTJkYzcxODRkOWIxNjg5OTNhYjNhNDBmYTczYmU2OTczYzVmNTAwMDIwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODc0NjU3Mzc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT05fUEtfMl8zID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMDAyYjA4N2NhNTJmNDBmZGZkZjRiMTZhMGJiZjdlOTFlNGRiMmUxODNhYzVjNjQ5MWE1ZjYwYTU0NTBlMjVkZTdkMDAyMDAwNDM2ZjkwNmQwNDAzODhlMzEyM2ViOWMzNzYxNGQ3ZjM5ZGEyZjI4MzM4NWNkYTQwOTk3MjEyYWNmYTViMjRkMDMyZmFjODI5OWFlOTU5MGZiZDI0ZDYzOThhYzFjNDg5YjUyM2M0MThkOGMwNmIzNTQ2N2U2ODUxOTk4Nzc4NjAyMDFkYmExNmQwNDBmMGFmMmZhOGQ0YmYzODhjYmM3ZjBjZDc0NjNhYTcwNThjNDlmN2U1ZGIyZDcyZDg2OGQ3MTY3NTI4Y2Q4MzkzMzY5Yjk0NDgwZjliN2Y4YTJjOTA4N2NiZDU3ZDRkMWE3ODJlNTUzZjljZWRlNjY2NDJkMTJjOTAwMDIwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODc0NjU3Mzc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuLy8gcmlnaHQgbGVuZ3RoIGFuZCBmb3JtYXQsIGJ1dCBpbnZhbGlkXG5leHBvcnQgY29uc3QgaW52YWxpZFB1YktleTEgPSAnMDMyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDgwMGM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhJztcbmV4cG9ydCBjb25zdCBpbnZhbGlkUHViS2V5MiA9XG4gICcwNGE2OGMyZDZmZGIzNzA2YjM5ZjMyZDZmNDIyNTI3NWNlMDYyNTYxOTA4ZmQ3Y2E1NDBhNDRjOTJlYjg1OTRlYTZkYjlmY2ZlMGIzOTBjMGVhZDNmNDVjMzZhZmQ2ODJlYWI2MmViMTI0YTYzYjQ2MDk0NWZlMWY3YzdmOGEwOWUxJztcblxuLy8gbXVsdGkgc2lnXG5leHBvcnQgY29uc3QgcHJ2MSA9ICcyMWQ0M2QyYWUwZGExZDlkMDRjZmNhYWM3ZDM5N2EzMzczMzg4MTA4MWYwYjJjZDAzODA2MmNmMGNjYmI3NTI2MDEnO1xuZXhwb3J0IGNvbnN0IHBydjIgPSAnYzcxNzAwYjA3ZDUyMGE4Yzk3MzFlNGQwZjA5NWFhNmVmYjkxZTE2ZTI1ZmIyN2NlMmI3MmU3YjY5OGY4MTI3YTAxJztcbmV4cG9ydCBjb25zdCBwcnYzID0gJ2U3NWRjYjY2Zjg0Mjg3ZWFmMzQ3OTU1ZTk0ZmEwNDMzNzI5OGRiZDk1YWEwZGJiOTg1NzcxMTA0ZWYxOTEzZGIwMSc7XG5leHBvcnQgY29uc3QgcHViMSA9ICcwMmIwODdjYTUyZjQwZmRmZGY0YjE2YTBiYmY3ZTkxZTRkYjJlMTgzYWM1YzY0OTFhNWY2MGE1NDUwZTI1ZGU3ZDAnO1xuZXhwb3J0IGNvbnN0IHB1YjIgPSAnMDI0YWJkZGQ2M2I1NmM1NWNkMWVkMDgwM2MyNmM0NzNmNWYwYjlkODQ3M2IzN2I2NWJkODEyZjAzNTM2NWYxNTRiJztcbmV4cG9ydCBjb25zdCBwdWIzID0gJzAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZCc7XG5leHBvcnQgY29uc3QgTVVMVElfU0lHX1NJR05FRF9UUkFOU0FDVElPTiA9XG4gICc4MDgwMDAwMDAwMDQwMTJmZTUwN2MwOWRiYjIzYzNiN2U1ZDE2NmM4MWZjNGI4NzY5MjUxMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAzMDIwMTIzZDZkM2QyMmQyY2ExYjczMTBmNWM0NTMxNGQxZTc4M2MwMzE5M2UxYmI1ZTA4Njg1ZmMxYTQ4ZjhiZGFjN2MwZDkzYTQ2M2VmZWUxOGI5YjQxZmZmZTM4ZDRiNGM3NDc1ODA5YTM3YzBmZDUzZjUyY2VmNDU2YThkOTI4MGRiMDIwMDEwYjMxMWY4MmIxYjExMWViNWVmYTE2YzQ3OTA2ODdiMTZkYzkyYjdiNGQwN2ExZjBmMWZlNjViYWVlNDNlYjAyZWRlMjI2ZjgwN2EwOTcyMzdlN2QwZWUzYWE0ZmRmOWI2Mjg3ZGQyM2Q4MTllYzU2MGRmMTgwODc1ZjQwMTlhMDAwMzhlM2M0NTI5Mzk1NjExYmU5YWJmNmZhM2I2OTg3ZTgxZDQwMjM4NWUzZDYwNWEwNzNmNDJmNDA3NTY1YTRhM2QwMDAyMDMwMjAwMDAwMDAwMDAwNTFhMWFlM2Y5MTFkOGYxZDQ2ZDc0MTZiZmJlNGI1OTNmZDQxZWFjMTljYjAwMDAwMDAwMDAwMDAzZTg3NDY1NzM3NDIwNmQ2NTZkNmYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG5cbi8vIGNvbnRyYWN0IGNhbGxcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9BRERSRVNTID0gJ1NUMDAwMDAwMDAwMDAwMDAwMDAwMDAyQU1XNDJIJztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9OQU1FID0gJ3BveC00JztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9GVU5DVElPTl9OQU1FID0gJ3N0YWNrLXN0eCc7XG5leHBvcnQgY29uc3QgVU5TSUdORURfU0VMRl9TVEFDS19DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDIxYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTcwNmY3ODJkMzQwOTczNzQ2MTYzNmIyZDczNzQ3ODAwMDAwMDA4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxN2Q3ODQwMDBjMDAwMDAwMDIwOTY4NjE3MzY4NjI3OTc0NjU3MzAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwNzc2NjU3MjczNjk2ZjZlMDIwMDAwMDAwMTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwY2U0MDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwYTAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDFmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWUyNDAnO1xuZXhwb3J0IGNvbnN0IFNJR05FRF9TRUxGX1NUQUNLX0NPTlRSQUNUX0NBTEwgPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxODMzZGI3OWNkOWMzOWM3MjYyYjgwOGI2ZWE4MGEwMDFhOWJkMjkwNjQ4Y2YzYTE5ZGE5NWYxMGQxODE0ZDY5NDM3YTAwMDc1ZTgzMjVlZjU2NGVkOWQ2NjkwYzU3NTU4M2JjYmIyOWM0ZTMzYzhjZTgwYzM0ZTdlZmQxZjU0NTcwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE3ZDc4NDAwMGMwMDAwMDAwMjA5Njg2MTczNjg2Mjc5NzQ2NTczMDIwMDAwMDAwOTczNmY2ZDY1MmQ2ODYxNzM2ODA3NzY2NTcyNzM2OTZmNmUwMjAwMDAwMDAxMDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjZTQwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjBhMDIwMDAwMDAwOTczNmY2ZDY1MmQ2ODYxNzM2ODAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwMWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxZTI0MCc7XG5cbmV4cG9ydCBjb25zdCBVTlNJR05FRF9DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDIxYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTcwNmY3ODJkMzQwOTczNzQ2MTYzNmIyZDczNzQ3ODAwMDAwMDA0MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxN2Q3ODQwMDA1MTYzMjQ4ZTdhYTY4Nzk5NjhkMjQxZjNlNTE1MmQ5ZjI3OTY5OTRkOTZjMGEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGM4MGEwYzAwMDAwMDAyMDk2ODYxNzM2ODYyNzk3NDY1NzMwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDc3NjY1NzI3MzY5NmY2ZTAyMDAwMDAwMDEwMSc7XG5leHBvcnQgY29uc3QgU0lHTkVEX0NPTlRSQUNUX1dJVEhfQVJHUyA9XG4gICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDBkYmE0ZDc3NWQ2ODk0NzQ2ZjBiOGZmM2NiYzFiMGYyNjk2ODkwZDA2NjlmZmJiOGViOGRmNTEwOTg3NDExMTVlMjhhZjQ0OGE1OTU4M2UzZDM0ZTM0NGMzNDg3OWM1YzdhODJkMjIzODMzYzEyMTRkMTNjZDk4MTMxNjVkOGUxZTAzMDIwMDAwMDAwMDAyMWEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU3MDZmNzgyZDM0MDk3Mzc0NjE2MzZiMmQ3Mzc0NzgwMDAwMDAwNDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTdkNzg0MDAwNTE2MzI0OGU3YWE2ODc5OTY4ZDI0MWYzZTUxNTJkOWYyNzk2OTk0ZDk2YzA5MGEwYzAwMDAwMDAyMDk2ODYxNzM2ODYyNzk3NDY1NzMwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDc3NjY1NzI3MzY5NmY2ZTAyMDAwMDAwMDEwMSc7XG5leHBvcnQgY29uc3QgU0lHTkVEX0NPTlRSQUNUX0NBTEwgPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxYjY5M2JkZjAxNGMxYWM3OGUzMDdmZWQ0OWJjMWRmOGZlZDJhNWU0MmQ0Yjc5OTkzZjVkZjYyNmQ3YjFiMjUxNjc0MTQ5NTE5OGEzZGJmMDc5ZGVlYmM0NmVjZGQ1MzVmZTY2ZjUxOGMwYTY5NWM1MzNmMTY2NzQ1NWEwNTAzNmEwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDEwYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN2InO1xuZXhwb3J0IGNvbnN0IE1VTFRJX1NJR19DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAxNjlhMDMyMTEyMzczYjQ4MWM0OGVjYjEyYjg4NDc1MTlmODk3MjBkNDI5N2E3YmY1Y2FjNDNiOWRhYThkNGFkMjNkZDUzNjU3MDg5ZGFkNTVjOTRlOGJlNTc2MmU5NzA1MjY4M2Y0OWUxZjQ1N2IyZTkyNTJmMjdlOTc1NjAzMjMwMjAwMTI4ZDBiYTJiOTU4NDMzOTM1OWZmNDJjMWQ2ZjM1Y2U3OWE3MDczMTUyYjNjOTA4NzliYzUxNjJlYjhkZjczYjAyZWFkYTNlZTMyMjg3M2E1ZmE3MzY0NzllNmM1MzYxMDk2ODE0ODJkOWYyMmYxZTFhODk2MDgwOTBiODY2NjgwMDAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZDAwMDIwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDEwYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN2InO1xuXG4vLyBjb250cmFjdCBjYWxsIHdpdGggbWVtbyBub25jZSA0NW4sXG5leHBvcnQgY29uc3QgU0VORF9NQU5ZX0NPTlRSQUNUX0FERFJFU1NfV0lUSF9NRU1PID0gJ1NUM0YxWDRRR1YyU004WEQ5Nlg0NU02UlRRWEtBMVBaSlpaQ1FBQjRCJztcbmV4cG9ydCBjb25zdCBTRU5EX01BTllfQ09OVFJBQ1RfTkFNRV9XSVRIX01FTU8gPSAnc2VuZC1tYW55LW1lbW8nO1xuZXhwb3J0IGNvbnN0IFNFTkRfTUFOWV9DT05UUkFDVF9GVU5DVElPTl9OQU1FX1dJVEhfTUVNTyA9ICdzZW5kLW1hbnknO1xuZXhwb3J0IGNvbnN0IFVOU0lHTkVEX1NFTkRfTUFOWV9XSVRIX01FTU8gPVxuICAnODA4MDAwMDAwMDA0MDFlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDAwMDAwMDAwMDAwMDAyZDAwMDAwMDAwMDAwMDAyMTQwMDAwMDAwMzAwMDI0YjVkOTI0ZWNjMDUyZjk1MTUzMzQwMDU0Y2FlNTI2ZDE2ZTkwNDI4OGUxOWUxOTQ2ZTE5NzczODdmNjgyOGM5MDAwMjk0ZWFiOTk1ODQ0YTMzNGY0YjdkOTQ2NTAwYTRlNzk0ZjVmNWY2ZTg3ZjliMjY3MTc1NDA4YzAzZTI4MDY0MGQwMDAyYjdiYTNlMTdlMzE0OTZiYmYxNTU1OTZkYzNmMmEwMmRlNDU3Y2ZmZWFkMDE3ZjY3MWY2NWQ5ZDM0YWIyNjFlYTAwMDIwMzAyMDAwMDAwMDEwMDAyMTVlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDEwMDAwMDAwMDAwNWI4ZDgwMDIxYWRlMWU5MmYwZDhiMzQ0NzVhOTM3NDg1YTFiMWFiZjY2YTBkYmYyZmYwZTczNjU2ZTY0MmQ2ZDYxNmU3OTJkNmQ2NTZkNmYwOTczNjU2ZTY0MmQ2ZDYxNmU3OTAwMDAwMDAxMGIwMDAwMDAwMzBjMDAwMDAwMDMwNDZkNjU2ZDZmMDIwMDAwMDAwNjZkNjU2ZDZmMjAzMTAyNzQ2ZjA1MTVhNGIwODIzYTk5ZmM1ZTg3YjhiZDJlN2U3YzE4OTkxNTM1NWUxYzBhMDQ3NTczNzQ3ODAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZjQyNDAwYzAwMDAwMDAzMDQ2ZDY1NmQ2ZjAyMDAwMDAwMDY2ZDY1NmQ2ZjIwMzIwMjc0NmYwNTE1OWZjYWUzYWViZGQ5MTc3Y2EwYzIyMTRjZjBjNWM2YTk2Mzk4YTliODA0NzU3Mzc0NzgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWU4NDgwMGMwMDAwMDAwMzA0NmQ2NTZkNmYwMjAwMDAwMDA2NmQ2NTZkNmYyMDMzMDI3NDZmMDUxNTE4MmQ1YzNiNmQ2NzM3NjYyNjU5N2VlODNmYmE2MmIzOTJhMTViZWIwNDc1NzM3NDc4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDJkYzZjMCc7XG5leHBvcnQgY29uc3QgU0lHTkVEX1NFTkRfTUFOWV9XSVRIX01FTU8gPVxuICAnODA4MDAwMDAwMDA0MDFlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDAwMDAwMDAwMDAwMDAyZDAwMDAwMDAwMDAwMDAyMTQwMDAwMDAwMzAyMDBlNjkyY2IyMTNiY2UwMzVlMzhkNWZhMzFkZjU0YTMwMzliM2QyNGFmMDVmNjZjMDQ2OTY0NjE1YWNiNzM5NjcwMzY4ZjQyNGFmMWM2MGMwOTYxYWY1Zjk3NmI0NmM2YWQxNTkzYjY4NTRmM2Q5M2IwN2MzNjFhN2VmMzQ4NDU2NTAyMDE3YjljZGVkZWIzZmQ5MmZlNDkwMTlmNGUzMTAwNTJlODVhNGMzYmI0NmMwZWU4OWRiNjVmN2M3ZTczNTkyZTdiNjBhOWMxMjdmYmJiMTI1YTEyNGJhYTNlZmIwZGQ2Nzk4NzljNzBjNGE2Y2E1NWYzYWZhY2VkYjE1NjVkZGU2YzAwMDJiN2JhM2UxN2UzMTQ5NmJiZjE1NTU5NmRjM2YyYTAyZGU0NTdjZmZlYWQwMTdmNjcxZjY1ZDlkMzRhYjI2MWVhMDAwMjAzMDIwMDAwMDAwMTAwMDIxNWU3YTRiNzc0NGU5OWE1NDc2MGNhNzZlNTRmNGQ4MWU0YjYwMjYyMzcwMTAwMDAwMDAwMDA1YjhkODAwMjFhZGUxZTkyZjBkOGIzNDQ3NWE5Mzc0ODVhMWIxYWJmNjZhMGRiZjJmZjBlNzM2NTZlNjQyZDZkNjE2ZTc5MmQ2ZDY1NmQ2ZjA5NzM2NTZlNjQyZDZkNjE2ZTc5MDAwMDAwMDEwYjAwMDAwMDAzMGMwMDAwMDAwMzA0NmQ2NTZkNmYwMjAwMDAwMDA2NmQ2NTZkNmYyMDMxMDI3NDZmMDUxNWE0YjA4MjNhOTlmYzVlODdiOGJkMmU3ZTdjMTg5OTE1MzU1ZTFjMGEwNDc1NzM3NDc4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDBjMDAwMDAwMDMwNDZkNjU2ZDZmMDIwMDAwMDAwNjZkNjU2ZDZmMjAzMjAyNzQ2ZjA1MTU5ZmNhZTNhZWJkZDkxNzdjYTBjMjIxNGNmMGM1YzZhOTYzOThhOWI4MDQ3NTczNzQ3ODAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxZTg0ODAwYzAwMDAwMDAzMDQ2ZDY1NmQ2ZjAyMDAwMDAwMDY2ZDY1NmQ2ZjIwMzMwMjc0NmYwNTE1MTgyZDVjM2I2ZDY3Mzc2NjI2NTk3ZWU4M2ZiYTYyYjM5MmExNWJlYjA0NzU3Mzc0NzgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMmRjNmMwJztcblxuZXhwb3J0IGNvbnN0IHBydktleXNTdHJpbmcgPSBbXG4gICdlNTU4ODNkNTMzMzVjZGYwZmU0YzUwNTA1MTM4MmIyZjdjYjk1MjE2NjYzZTQwODBlYmJjYWE3NGJjY2E5NzUwMDEnLFxuICAnMDk3MWIyYmExOTNmZDM5M2E0YzM5ZWZjY2MzZDYzYmFmZjVkNDk4NTAwYWNmYzk3Yzg3NjU1MzE2NTIyNzQyNDAxJyxcbiAgJzA0MWM4YjRiYTgyNTA4NTVhNGEzY2Q0ZDliMjhlNDU2MmM5ZjRhZWU5N2Y3OTQ0MmJiOWZmMmNmZjY4NDUyMjAwMScsXG5dO1xuXG5leHBvcnQgY29uc3Qgc2VuZE1hbnlSZWNpcGllbnRzID0gW1xuICB7XG4gICAgYWRkcmVzczogJ1NOMkpCMTBIVEs3WTVYMVhSUU1RN1daMFJLNEFLQVFHVzFBNzU1WVlUJyxcbiAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICBtZW1vOiAnbWVtbyAxJyxcbiAgfSxcbiAge1xuICAgIGFkZHJlc3M6ICdTTjJGV05SWEVRUUNIRVo1MFI4R01TVzY1UlRNUDc2NTlRMk1ZWTlQNCcsXG4gICAgYW1vdW50OiAnMjAwMDAwMCcsXG4gICAgbWVtbzogJ21lbW8gMicsXG4gIH0sXG4gIHtcbiAgICBhZGRyZXNzOiAnU05DMlRRMVZETktLRVNINkI1WkVHRlhUQ0FTUzU4QVZYREFDOUg3VycsXG4gICAgYW1vdW50OiAnMzAwMDAwMCcsXG4gICAgbWVtbzogJ21lbW8gMycsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgTUVNTyA9ICdtZW1vIDEnO1xuXG5leHBvcnQgY29uc3QgRlVOR0lCTEVfVE9LRU5fVFJBTlNGRVJfQ09OU1RBTlRTID0ge1xuICBDT05UUkFDVF9BRERSRVNTOiAnU1RBRzE4RTQ1VzYxM0ZaM0g0Wk1GNlFISDQyNkVYTTVRVFNBVldZSCcsXG4gIENPTlRSQUNUX05BTUU6ICd0c2lwNmRwLXRva2VuJyxcbiAgRlVOQ1RJT05fTkFNRTogJ3RyYW5zZmVyJyxcbiAgU0VOREVSX0FERFJFU1M6ICdTVEFHMThFNDVXNjEzRlozSDRaTUY2UUhINDI2RVhNNVFUU0FWV1lIJyxcbiAgUkVDRUlWRVJfQUREUkVTUzogJ1NOMk5OMUpQOUFFUDVCVkUxOVJOSjZUMk1QN05ER1JaWVNUMVZERjNNJyxcbiAgVE9LRU5fTkFNRTogJ3RzaXA2ZHAtdG9rZW4nLFxuICBVTlNJR05FRF9TSU5HTEVfU0lHX1RYOlxuICAgICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDIwMDAwMDAwMTAxMDIxNTE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTAxMDAwMDAwMDAwMDAwMjcxMDAyMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTA4NzQ3MjYxNmU3MzY2NjU3MjAwMDAwMDA0MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjcxMDA1MWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMDUxNWFiNTBjYWM5NTNhYzU1ZWRjMTRlMmIyMzY4NTRiMWVhZDg2M2ZlY2UwYTAyMDAwMDAwMDEzMScsXG4gIFVOU0lHTkVEX1NJTkdMRV9TSUdfVFhfV0lUSE9VVF9NRU1POlxuICAgICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDIwMDAwMDAwMTAxMDIxNTE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTAxMDAwMDAwMDAwMDAwMjcxMDAyMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTA4NzQ3MjYxNmU3MzY2NjU3MjAwMDAwMDAzMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjcxMDA1MWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMDUxNWFiNTBjYWM5NTNhYzU1ZWRjMTRlMmIyMzY4NTRiMWVhZDg2M2ZlY2UnLFxuICBTSUdORURfTVVMVElfU0lHX1RYOlxuICAgICc4MDgwMDAwMDAwMDQwMTJmZTUwN2MwOWRiYjIzYzNiN2U1ZDE2NmM4MWZjNGI4NzY5MjUxMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAzMDIwMWU0Yzk4ZDc2ODdlYWI1ZjExZDAzZmViYzk2OTUxMzAxZWVkZTMzNjA4OGIwNmM1YTY3NmNjNjA5M2Y3MGUxNmIzZjM1MzNjY2Q4ZTZmOTIzOTBhMTdkY2M5MTdmNGU4Mjg2NTdmMTc2MDU1NzRhNWZjYmIzZGE1OWYyNTQ4M2RjMDIwMTkwOTVjMmY1MjE3ZTBmMTY4ZjI3YjYwNWI0N2U5ZWFjMmRhM2M1ZWEzMDljNDJhMjY3N2FkZGZiNjdjMWZkNDcxZWYyMDE4N2NlNmI4NWI1YjU0MWQ0YjRmMDBkMmY4ZWE4ZjdkNDJiZTg0MzI3OTY4Y2I5NDExNzMwYjUyMTdhMDAwMzhlM2M0NTI5Mzk1NjExYmU5YWJmNmZhM2I2OTg3ZTgxZDQwMjM4NWUzZDYwNWEwNzNmNDJmNDA3NTY1YTRhM2QwMDAyMDMwMjAwMDAwMDAxMDEwMjE1MmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMDEwMDAwMDAwMDAwMDAyNzEwMDIxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMDg3NDcyNjE2ZTczNjY2NTcyMDAwMDAwMDQwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwMDUxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwNTE1YWI1MGNhYzk1M2FjNTVlZGMxNGUyYjIzNjg1NGIxZWFkODYzZmVjZTBhMDIwMDAwMDAwMTMxJyxcbiAgU0lHTkVEX01VTFRJX1NJR19UWF9XSVRIT1VUX01FTU86XG4gICAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAwZDEyYTgwZjY3Y2RhYzcyYWQxMTYwNzVlODY4NDY5ODZhMDE1YTYwYmY1NDE4NTVlYTE3ZGRjNzk2MjBiNjc5YjBkNzVlNTIzY2JjNzYzODk2OWFkZGViMDQ3ZTczZWQxMWIzOThhODk0YjJmZDQ0NTk2MjNhZmIyZmMxMDQ2MWIwMjAwN2UwMWYyOGY5YWM1YjliYzMyZjNkZTgyNmY2OWFhYmNjNmIzNTdmYWE1MGQ5ODA4N2ZmMTI3MTRlYjNkMzUxZTUxNTQ4MmFmZjc4NGI1NGFiNTcyY2U2Zjg2YzFmNDBjNzFiMjFmZDE5N2U4NDZmYjM4ODcxOGY1NWYxN2Q0ZDMwMDAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZDAwMDIwMzAyMDAwMDAwMDEwMTAyMTUyZmU1MDdjMDlkYmIyM2MzYjdlNWQxNjZjODFmYzRiODc2OTI1MTBiMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwMTAwMDAwMDAwMDAwMDI3MTAwMjFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwODc0NzI2MTZlNzM2NjY1NzIwMDAwMDAwNDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI3MTAwNTFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTA1MTVhYjUwY2FjOTUzYWM1NWVkYzE0ZTJiMjM2ODU0YjFlYWQ4NjNmZWNlMDknLFxufTtcbiJdfQ==
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3Jlc291cmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQW1DO0FBRW5DOzs7Ozs7Ozs7R0FTRztBQUVVLFFBQUEsVUFBVSxHQUFHLGtFQUFrRSxDQUFDO0FBQ2hGLFFBQUEsT0FBTyxHQUNsQixvSUFBb0ksQ0FBQztBQUMxSCxRQUFBLFFBQVEsR0FBRywyQ0FBMkMsQ0FBQztBQUV2RCxRQUFBLFVBQVUsR0FBRyxrRUFBa0UsQ0FBQztBQUNoRixRQUFBLE9BQU8sR0FDbEIsb0lBQW9JLENBQUM7QUFDMUgsUUFBQSxpQkFBaUIsR0FBRyxvRUFBb0UsQ0FBQztBQUN6RixRQUFBLFFBQVEsR0FBRywwQ0FBMEMsQ0FBQztBQUVuRSwrQkFBK0I7QUFDL0Isd0JBQXdCO0FBQ1gsUUFBQSxLQUFLLEdBQ2hCLGlIQUFpSCxDQUFDO0FBQ3ZHLFFBQUEsS0FBSyxHQUNoQixpSEFBaUgsQ0FBQztBQUN2RyxRQUFBLGFBQWEsR0FBRyxrRUFBa0UsQ0FBQztBQUNuRixRQUFBLGFBQWEsR0FDeEIsb0lBQW9JLENBQUM7QUFDMUgsUUFBQSx1QkFBdUIsR0FBRyxvRUFBb0UsQ0FBQztBQUUvRixRQUFBLFNBQVMsR0FBRztJQUN2QixHQUFHLEVBQUUsa0JBQVU7SUFDZixHQUFHLEVBQUUsZUFBTztJQUNaLE9BQU8sRUFBRSxnQkFBUTtDQUNsQixDQUFDO0FBRVcsUUFBQSxTQUFTLEdBQUc7SUFDdkIsR0FBRyxFQUFFLGtCQUFVO0lBQ2YsR0FBRyxFQUFFLGVBQU87SUFDWixPQUFPLEVBQUUsZ0JBQVE7Q0FDbEIsQ0FBQztBQUVXLFFBQUEsUUFBUSxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxvRUFBb0U7Q0FDMUUsQ0FBQztBQUVXLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLE9BQU8sRUFBRSwyQ0FBMkM7Q0FDckQsQ0FBQztBQUVXLFFBQUEscUJBQXFCLEdB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QUM7QUFFMS9CLFFBQUEsYUFBYSxHQUFHO0lBQzNCLG9FQUFvRTtJQUNwRSxvRUFBb0U7SUFDcEUsb0VBQW9FO0NBQ3JFLENBQUM7QUFFVyxRQUFBLGtCQUFrQixHQUFHO0lBQ2hDO1FBQ0UsT0FBTyxFQUFFLDJDQUEyQztRQUNwRCxNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsUUFBUTtLQUNmO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsMkNBQTJDO1FBQ3BELE1BQU0sRUFBRSxTQUFTO1FBQ2pCLElBQUksRUFBRSxRQUFRO0tBQ2Y7SUFDRDtRQUNFLE9BQU8sRUFBRSwwQ0FBMEM7UUFDbkQsTUFBTSxFQUFFLFNBQVM7UUFDakIsSUFBSSxFQUFFLFFBQVE7S0FDZjtDQUNGLENBQUM7QUFFVyxRQUFBLElBQUksR0FBRyxRQUFRLENBQUM7QUFFaEIsUUFBQSxpQ0FBaUMsR0FBRztJQUMvQyxnQkFBZ0IsRUFBRSwwQ0FBMEM7SUFDNUQsYUFBYSxFQUFFLGVBQWU7SUFDOUIsYUFBYSxFQUFFLFVBQVU7SUFDekIsY0FBYyxFQUFFLDBDQUEwQztJQUMxRCxnQkFBZ0IsRUFBRSwyQ0FBMkM7SUFDN0QsVUFBVSxFQUFFLGVBQWU7SUFDM0Isc0JBQXNCLEVBQ3BCLG9uQkFBb25CO0lBQ3RuQixtQ0FBbUMsRUFDakMsc21CQUFzbUI7SUFDeG1CLG1CQUFtQixFQUNqQix3MEJBQXcwQjtJQUMxMEIsZ0NBQWdDLEVBQzlCLDR6QkFBNHpCO0NBQy96QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3R4TGliIH0gZnJvbSAnLi4vLi4vc3JjJztcblxuLypcbiAqIGtleXMgYW5kIGFkZHJlc3NlcyBhcmUgZnJvbTpcbiAqXG4gKiBpbXBvcnQgKiBhcyBzdCBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG4gKlxuICogY29uc3Qgc2VjcmV0S2V5MSA9IHN0LnByaXZhdGVLZXlUb1N0cmluZyhzdC5tYWtlUmFuZG9tUHJpdktleSgpKTtcbiAqIGNvbnN0IHB1YmxpY0tleTEgPSBzdC5wdWJsaWNLZXlUb1N0cmluZyhzdC5wdWJLZXlmcm9tUHJpdktleShzZWNyZXRLZXkxLmRhdGEpO1xuICogY29uc3QgYWRkcmVzczEgPSBzdC5nZXRBZGRyZXNzRnJvbVByaXZhdGVLZXkoc2VjcmV0S2V5MSk7XG4gKiBldGMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IHNlY3JldEtleTEgPSAnNjZjODg2NDgxMTZiNzIxYmIyZjM5NGUwMDA3ZjlkMzQ4ZWEwODAxN2I2ZTYwNGRlNTFhM2E3ZDk1N2Q1ODUyNCc7XG5leHBvcnQgY29uc3QgcHViS2V5MSA9XG4gICcwNGE2OGMyZDZmZGIzNzA2YjM5ZjMyZDZmNDIyNTI3NWNlMDYyNTYxOTA4ZmQ3Y2E1NDBhNDRjOTJlYjg1OTRlYTZkYjlmY2ZlMGIzOTBjMGVhZDNmNDVjMzZhZmQ2ODJlYWI2MmViMTI0YTYzYjQ2MDk0NWZlMWY3YzdmOGEwOWUyJztcbmV4cG9ydCBjb25zdCBhZGRyZXNzMSA9ICdTUDEwRkRIUVE0RjJGMEtITU42WjI0Uk1BTUdYNTkzM1NRSkNXS0FBUic7XG5cbmV4cG9ydCBjb25zdCBzZWNyZXRLZXkyID0gJzM1Nzk0YWRmMGRkMmEzMTNjMThiYzExOGI0MjI3NDBiYjk0Zjg1MTE0MTM0YmUzNDcwM2ZmNzA2NjU4MDg3ZTQnO1xuZXhwb3J0IGNvbnN0IHB1YktleTIgPVxuICAnMDQyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDhhOWM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhOTRhOWE3YzI0YTFjY2Q4Mzc5MjE3M2Y0NzVmZGI1OTBjYzgyZjk0ZmY2MTVkZjM5MTQyNzY2ZTc1OWNlNjM4Nyc7XG5leHBvcnQgY29uc3QgcHViS2V5MkNvbXByZXNzZWQgPSAnMDMyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDhhOWM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhJztcbmV4cG9ydCBjb25zdCBhZGRyZXNzMiA9ICdTUFM0SFNYQUQxV1NEMzk0M1daNTJNUFNZOVdQSzU2U0RHNTRIVEFSJztcblxuLy8gZXh0ZW5kZWQgcHJpdmF0ZS9wdWJsaWMga2V5c1xuLy8gU1RYIGRvZXMgbm90IHVzZSB0aGVtXG5leHBvcnQgY29uc3QgeHBydjEgPVxuICAneHBydjlzMjFaclFIMTQzSzM0YmRoQ1dNdWl1SGZkalFCMjFndTk1TndwZUdFRWZHTVdzN3RBNXMzUE1CQlBlSm1YbjVEUTN2djhIcDhrcTFLcnNhSkpuY3pXM0JNenRMMlZHVG54VlBnVmpncTFIJztcbmV4cG9ydCBjb25zdCB4cHViMSA9XG4gICd4cHViNjYxTXlNd0FxUmJjRllnNm9FM05HcnIyRGZadGFVallHTXp5a0Qzc25hQ0ZFS0NHUmhRN2JCZmYyZzNDWXZ5WVBRTUdTd1NlMURIOEdYdlA2dUIzaWlXc1BHR01iWFZaR2tyazFVeFFWazYnO1xuZXhwb3J0IGNvbnN0IHhwcnYxUHJvdG9jb2wgPSAnNzNlYTE5YWVhMjVlODdjNGVlOGVhZWUyMTQxNzQ0MmFjOWViNjg5OGY0NTM4YWRlOGYyMDkxZDFkMmM1OTQ2ZCc7XG5leHBvcnQgY29uc3QgeHB1YjFQcm90b2NvbCA9XG4gICcwNDI3OTRiYzQzZDc1ZGIwZTg1ODk5ODc4MTg3NTRhYTJmODIwYTM1MGE1NzQyZWZhZjBkNTA1MThmY2JjNmE4MGM1OTdhYTUxYWE4ZTc1NWZkMTBiNzUzZjdlMzY0MTA4NDkxNzFhOTlkODUzM2Y2ZWE4NGEwYzRkZmJlNmUyNDE5JztcbmV4cG9ydCBjb25zdCB4cHViMVByb3RvY29sQ29tcHJlc3NlZCA9ICcwMzI3OTRiYzQzZDc1ZGIwZTg1ODk5ODc4MTg3NTRhYTJmODIwYTM1MGE1NzQyZWZhZjBkNTA1MThmY2JjNmE4MGMnO1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF8xID0ge1xuICBwcnY6IHNlY3JldEtleTEsXG4gIHB1YjogcHViS2V5MSxcbiAgYWRkcmVzczogYWRkcmVzczEsXG59O1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF8yID0ge1xuICBwcnY6IHNlY3JldEtleTIsXG4gIHB1YjogcHViS2V5MixcbiAgYWRkcmVzczogYWRkcmVzczIsXG59O1xuXG5leHBvcnQgY29uc3QgU0VOREVSXzEgPSB7XG4gIHBydjogJ2VkZjlhZWU4NGQ5YjdhYmMxNDU1MDRkZGU2NzI2YzY0ZjM2OWQzN2VlMzRkZWQ4NjhmYWJkODc2YzI2NTcwYmMwMScsXG59O1xuXG5leHBvcnQgY29uc3QgUkVDSVBJRU5UXzEgPSB7XG4gIGFkZHJlc3M6ICdTUDNGR1E4WjdKWTlCV1laNVdNNTNFME05Tks3V0hKRjA2OTFOWjE1OScsXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEtleVBhaXJGcm9tUHJ2ID0gbmV3IFN0eExpYi5LZXlQYWlyKHtcbiAgcHJ2OiBzZWNyZXRLZXkxLFxufSk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0S2V5UGFpckZyb21QdWIgPSBuZXcgU3R4TGliLktleVBhaXIoe1xuICBwdWI6IHB1YktleTIsXG59KTtcblxuLy8gdmVyaWZ5IHNpZ25hdHVyZXNcbmV4cG9ydCBjb25zdCBtZXNzYWdlMSA9ICdhYmMnO1xuLy8gd2hlbiBzaWduZWQgd2l0aCBzZWNyZXRLZXkxXG5leHBvcnQgY29uc3QgZXhwZWN0ZWRTaWduYXR1cmUxID1cbiAgJzAwZTA0N2MwYTUxNDZkZjkzNDUyMjc5NWE5ZWMwOGZlYTM3ZTE0NTAyODdlYzJhYjY5N2VlNTBlMGIzOTUwMmQ2OTUzNzI0NDRhY2Y0N2QxMTdiZWM2MjFiYjM4ZGQ4ZjNiOTJhNDc5NzJhMjA5YzMwMjA0OWQ5NTU1ZDkxMmFmYTknO1xuXG5leHBvcnQgY29uc3QgbWVzc2FnZTIgPSAnaGVsbG8nO1xuLy8gd2hlbiBzaWduZWQgd2l0aCBzZWNyZXRLZXkyXG5leHBvcnQgY29uc3QgZXhwZWN0ZWRTaWduYXR1cmUyID1cbiAgJzAxMGM3NTUzMDNhZjc0ODYwYjc1Mjk3MmE2OTY1MWZlNzQwYWQ4ZjA5ZmJmODVkYzJmYzA2ZmM2M2UwMTJjMWNhNTMyYmFmMjBkMWM5Y2I4MWQ5MzAzMjE2ZWZjNmY2Y2M2YmQ3NzUzZmUyZThlYWE3YTA2ZDc3YmRkM2NlZGE4NTMnO1xuXG4vLyBzZWVkIGlzIEJ1ZmZlci5hbGxvYyg2NCkgLS0gYWxsIHplcm8gYnl0ZXNcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZFNlY3JldEtleSA9ICdlYWZkMTU3MDJmY2EzZjgwYmViNTY1ZTY2ZjE5ZTIwYmJhZDBhMzRiNDZiYjEyMDc1Y2JmMWM1ZDk0YmIyN2QyJztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZFB1YktleSA9XG4gICcwNDY2OTI2MWZlMjA0NTJmZTZhMDNlNjI1OTQ0YzZhMDUyM2U2MzUwYjNlYThjYmQzN2M5Y2ExZmY5N2UzYWM4YmYzZGQyZDUxYTA5ZDZkNDgzMWNiMmJjOTgyOGM1YWYxNGNlNGMzMzg0Yzk3M2Q3NWFhZDQyMzYyNmEyYTZkMThkJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc1VuY29tcHJlc3NlZE1haW5uZXQgPSAnU1AyMVg4UE1IOFQ0TVZYOFo3NUpaUFlFVkE2UThGRFI3UEoxM01WNFEnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc1VuY29tcHJlc3NlZFRlc3RuZXQgPSAnU1QyMVg4UE1IOFQ0TVZYOFo3NUpaUFlFVkE2UThGRFI3UEc4OFdUVkYnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZWVkQWRkcmVzc0NvbXByZXNzZWRNYWlubmV0ID0gJ1NQMzFNQlJGOUo4VzIyVzMwNDRNRUFaRFhGTU04NTY5OTY1M1pLUjdRJztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VlZEFkZHJlc3NDb21wcmVzc2VkVGVzdG5ldCA9ICdTVDMxTUJSRjlKOFcyMlczMDQ0TUVBWkRYRk1NODU2OTk2N1RGMVI0MSc7XG5cbmV4cG9ydCBjb25zdCBJTlZBTElEX0tFWVBBSVJfUFJWID0gbmV3IFN0eExpYi5LZXlQYWlyKHtcbiAgcHJ2OiAnOENBQTAwQUU2MzYzOEIwNTQyQTMwNDgyM0Q2NkQ5NkZGMzE3QTU3NkY2OTI2NjNEQjJGODVFNjBGQUIyNTkwQycsXG59KTtcblxuZXhwb3J0IGNvbnN0IFRYX1NFTkRFUiA9IHtcbiAgcHJ2OiAnY2IzZGYzODA1M2QxMzI4OTUyMjBiOWNlNDcxZjZiNjc2ZGI1YjliZjBiNGFkZWZiNTVmMjExOGVjZTI0NzhkZjAxJyxcbiAgcHViOiAnMDM3OTdkZDY1MzA0MGQzNDRmZDA0OGMxYWQwNWQ0Y2JjYjIxNzhiMzBjNmEwYzQyNzY5OTQ3OTVmM2U4MzNkYTQxJyxcbiAgYWRkcmVzczogJ1NUQjQ0SFlQWUFUMkJCMlFFNTEzTlNQODFIVE1ZV0JKUDAySFBHSzYnLFxufTtcblxuZXhwb3J0IGNvbnN0IFRYX1JFQ0lFVkVSID0ge1xuICBhZGRyZXNzOiAnU1RERTdZOEhWM1JYOFZCTTJUWlZXSlRTN1pBMVhCMFNTQzNORVZIMCcsXG59O1xuXG5leHBvcnQgY29uc3QgUkFXX1RYX1VOU0lHTkVEID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDAwNTFhMWFlM2Y5MTFkOGYxZDQ2ZDc0MTZiZmJlNGI1OTNmZDQxZWFjMTljYjAwMDAwMDAwMDAwMDAzZTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG5cbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT04gPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxMWFlMDZjMTRjOTY3Zjk5OTE4NGVhOGE3OTEzMTI1ZjA5YWI2NDAwNDQ0NmZjYTg5OTQwZjA5MjUwOTEyNGI5ZTc3M2FlZjQ4M2U5MjU0NzZjNzhlYzU4MTY2ZGNlY2FiMzg3NWI4ZmFiOGU5YWE0MjEzMTc5ZDE2NDQ2Mzk2MjgwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuLy8gVHJhbnNhY3Rpb25zIHNpZ24gd2l0aCAyIG9mIDMga2V5cy5cbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT05fUEtfMV8zID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAwOTQ3M2EzN2I5MTRmNzAzYzgxZjMzMTQxZDEwZWFiZTQ1NTBjNGQ2MWYxMTM2NjJjYzExY2RjMDQ2M2ZjMzc3MzU4NDA4YzczZDNkMzI3M2NkYmNjMzUxMWRiYmQyMDMxYjVlYWNhNGNiMmIxMzkyNWRhOWY5YjBjN2U2NGQxYTYwMDAyNGFiZGRkNjNiNTZjNTVjZDFlZDA4MDNjMjZjNDczZjVmMGI5ZDg0NzNiMzdiNjViZDgxMmYwMzUzNjVmMTU0YjAyMDE2YWFjMDM0N2I4NTIwZDg5MDVjYmQxM2M2MDFmNDVhMGNjYmJiMjQ4MzEzMjBjNTRkOWVlMmMxZTM2NTZiNzZkNzVlMWM1Mjc5MzIyNjdkODBiZWI5MDI1N2JiZTJkYzcxODRkOWIxNjg5OTNhYjNhNDBmYTczYmU2OTczYzVmNTAwMDIwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODc0NjU3Mzc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbmV4cG9ydCBjb25zdCBTSUdORURfVFJBTlNBQ1RJT05fUEtfMl8zID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMDAyYjA4N2NhNTJmNDBmZGZkZjRiMTZhMGJiZjdlOTFlNGRiMmUxODNhYzVjNjQ5MWE1ZjYwYTU0NTBlMjVkZTdkMDAyMDAwNDM2ZjkwNmQwNDAzODhlMzEyM2ViOWMzNzYxNGQ3ZjM5ZGEyZjI4MzM4NWNkYTQwOTk3MjEyYWNmYTViMjRkMDMyZmFjODI5OWFlOTU5MGZiZDI0ZDYzOThhYzFjNDg5YjUyM2M0MThkOGMwNmIzNTQ2N2U2ODUxOTk4Nzc4NjAyMDFkYmExNmQwNDBmMGFmMmZhOGQ0YmYzODhjYmM3ZjBjZDc0NjNhYTcwNThjNDlmN2U1ZGIyZDcyZDg2OGQ3MTY3NTI4Y2Q4MzkzMzY5Yjk0NDgwZjliN2Y4YTJjOTA4N2NiZDU3ZDRkMWE3ODJlNTUzZjljZWRlNjY2NDJkMTJjOTAwMDIwMzAyMDAwMDAwMDAwMDA1MWExYWUzZjkxMWQ4ZjFkNDZkNzQxNmJmYmU0YjU5M2ZkNDFlYWMxOWNiMDAwMDAwMDAwMDAwMDNlODc0NjU3Mzc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcblxuLy8gcmlnaHQgbGVuZ3RoIGFuZCBmb3JtYXQsIGJ1dCBpbnZhbGlkXG5leHBvcnQgY29uc3QgaW52YWxpZFB1YktleTEgPSAnMDMyMWQ2ZjQyYzk5ZjdkMjNlYzJjMGRjMjEyMDgwMGM1ZWRmY2U0ZTViYzdiNjM5NzJlNjhlODZlM2NlYTZmNDFhJztcbmV4cG9ydCBjb25zdCBpbnZhbGlkUHViS2V5MiA9XG4gICcwNGE2OGMyZDZmZGIzNzA2YjM5ZjMyZDZmNDIyNTI3NWNlMDYyNTYxOTA4ZmQ3Y2E1NDBhNDRjOTJlYjg1OTRlYTZkYjlmY2ZlMGIzOTBjMGVhZDNmNDVjMzZhZmQ2ODJlYWI2MmViMTI0YTYzYjQ2MDk0NWZlMWY3YzdmOGEwOWUxJztcblxuLy8gbXVsdGkgc2lnXG5leHBvcnQgY29uc3QgcHJ2MSA9ICcyMWQ0M2QyYWUwZGExZDlkMDRjZmNhYWM3ZDM5N2EzMzczMzg4MTA4MWYwYjJjZDAzODA2MmNmMGNjYmI3NTI2MDEnO1xuZXhwb3J0IGNvbnN0IHBydjIgPSAnYzcxNzAwYjA3ZDUyMGE4Yzk3MzFlNGQwZjA5NWFhNmVmYjkxZTE2ZTI1ZmIyN2NlMmI3MmU3YjY5OGY4MTI3YTAxJztcbmV4cG9ydCBjb25zdCBwcnYzID0gJ2U3NWRjYjY2Zjg0Mjg3ZWFmMzQ3OTU1ZTk0ZmEwNDMzNzI5OGRiZDk1YWEwZGJiOTg1NzcxMTA0ZWYxOTEzZGIwMSc7XG5leHBvcnQgY29uc3QgcHViMSA9ICcwMmIwODdjYTUyZjQwZmRmZGY0YjE2YTBiYmY3ZTkxZTRkYjJlMTgzYWM1YzY0OTFhNWY2MGE1NDUwZTI1ZGU3ZDAnO1xuZXhwb3J0IGNvbnN0IHB1YjIgPSAnMDI0YWJkZGQ2M2I1NmM1NWNkMWVkMDgwM2MyNmM0NzNmNWYwYjlkODQ3M2IzN2I2NWJkODEyZjAzNTM2NWYxNTRiJztcbmV4cG9ydCBjb25zdCBwdWIzID0gJzAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZCc7XG5leHBvcnQgY29uc3QgTVVMVElfU0lHX1NJR05FRF9UUkFOU0FDVElPTiA9XG4gICc4MDgwMDAwMDAwMDQwMTJmZTUwN2MwOWRiYjIzYzNiN2U1ZDE2NmM4MWZjNGI4NzY5MjUxMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAzMDIwMTIzZDZkM2QyMmQyY2ExYjczMTBmNWM0NTMxNGQxZTc4M2MwMzE5M2UxYmI1ZTA4Njg1ZmMxYTQ4ZjhiZGFjN2MwZDkzYTQ2M2VmZWUxOGI5YjQxZmZmZTM4ZDRiNGM3NDc1ODA5YTM3YzBmZDUzZjUyY2VmNDU2YThkOTI4MGRiMDIwMDEwYjMxMWY4MmIxYjExMWViNWVmYTE2YzQ3OTA2ODdiMTZkYzkyYjdiNGQwN2ExZjBmMWZlNjViYWVlNDNlYjAyZWRlMjI2ZjgwN2EwOTcyMzdlN2QwZWUzYWE0ZmRmOWI2Mjg3ZGQyM2Q4MTllYzU2MGRmMTgwODc1ZjQwMTlhMDAwMzhlM2M0NTI5Mzk1NjExYmU5YWJmNmZhM2I2OTg3ZTgxZDQwMjM4NWUzZDYwNWEwNzNmNDJmNDA3NTY1YTRhM2QwMDAyMDMwMjAwMDAwMDAwMDAwNTFhMWFlM2Y5MTFkOGYxZDQ2ZDc0MTZiZmJlNGI1OTNmZDQxZWFjMTljYjAwMDAwMDAwMDAwMDAzZTg3NDY1NzM3NDIwNmQ2NTZkNmYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG5cbi8vIGNvbnRyYWN0IGNhbGxcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9BRERSRVNTID0gJ1NUMDAwMDAwMDAwMDAwMDAwMDAwMDAyQU1XNDJIJztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9OQU1FID0gJ3BveC00JztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9GVU5DVElPTl9OQU1FID0gJ3N0YWNrLXN0eCc7XG5leHBvcnQgY29uc3QgVU5TSUdORURfU0VMRl9TVEFDS19DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDIxYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTcwNmY3ODJkMzQwOTczNzQ2MTYzNmIyZDczNzQ3ODAwMDAwMDA4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxN2Q3ODQwMDBjMDAwMDAwMDIwOTY4NjE3MzY4NjI3OTc0NjU3MzAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwNzc2NjU3MjczNjk2ZjZlMDIwMDAwMDAwMTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwY2U0MDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwYTAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDFmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWUyNDAnO1xuZXhwb3J0IGNvbnN0IFNJR05FRF9TRUxGX1NUQUNLX0NPTlRSQUNUX0NBTEwgPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxODMzZGI3OWNkOWMzOWM3MjYyYjgwOGI2ZWE4MGEwMDFhOWJkMjkwNjQ4Y2YzYTE5ZGE5NWYxMGQxODE0ZDY5NDM3YTAwMDc1ZTgzMjVlZjU2NGVkOWQ2NjkwYzU3NTU4M2JjYmIyOWM0ZTMzYzhjZTgwYzM0ZTdlZmQxZjU0NTcwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE3ZDc4NDAwMGMwMDAwMDAwMjA5Njg2MTczNjg2Mjc5NzQ2NTczMDIwMDAwMDAwOTczNmY2ZDY1MmQ2ODYxNzM2ODA3NzY2NTcyNzM2OTZmNmUwMjAwMDAwMDAxMDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjZTQwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjBhMDIwMDAwMDAwOTczNmY2ZDY1MmQ2ODYxNzM2ODAyMDAwMDAwMDk3MzZmNmQ2NTJkNjg2MTczNjgwMWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxZTI0MCc7XG5cbmV4cG9ydCBjb25zdCBVTlNJR05FRF9DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAwMTY0MjQ3ZDZmMmI0MjVhYzU3NzE0MjNhZTZjODBjNzU0ZjcxNzJiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMjAwMDAwMDAwMDIxYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTcwNmY3ODJkMzQwOTczNzQ2MTYzNmIyZDczNzQ3ODAwMDAwMDA0MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxN2Q3ODQwMDA1MTYzMjQ4ZTdhYTY4Nzk5NjhkMjQxZjNlNTE1MmQ5ZjI3OTY5OTRkOTZjMGEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGM4MGEwYzAwMDAwMDAyMDk2ODYxNzM2ODYyNzk3NDY1NzMwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDc3NjY1NzI3MzY5NmY2ZTAyMDAwMDAwMDEwMSc7XG5leHBvcnQgY29uc3QgU0lHTkVEX0NPTlRSQUNUX1dJVEhfQVJHUyA9XG4gICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDBkYmE0ZDc3NWQ2ODk0NzQ2ZjBiOGZmM2NiYzFiMGYyNjk2ODkwZDA2NjlmZmJiOGViOGRmNTEwOTg3NDExMTVlMjhhZjQ0OGE1OTU4M2UzZDM0ZTM0NGMzNDg3OWM1YzdhODJkMjIzODMzYzEyMTRkMTNjZDk4MTMxNjVkOGUxZTAzMDIwMDAwMDAwMDAyMWEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU3MDZmNzgyZDM0MDk3Mzc0NjE2MzZiMmQ3Mzc0NzgwMDAwMDAwNDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTdkNzg0MDAwNTE2MzI0OGU3YWE2ODc5OTY4ZDI0MWYzZTUxNTJkOWYyNzk2OTk0ZDk2YzA5MGEwYzAwMDAwMDAyMDk2ODYxNzM2ODYyNzk3NDY1NzMwMjAwMDAwMDA5NzM2ZjZkNjUyZDY4NjE3MzY4MDc3NjY1NzI3MzY5NmY2ZTAyMDAwMDAwMDEwMSc7XG5leHBvcnQgY29uc3QgU0lHTkVEX0NPTlRSQUNUX0NBTEwgPVxuICAnODA4MDAwMDAwMDA0MDAxNjQyNDdkNmYyYjQyNWFjNTc3MTQyM2FlNmM4MGM3NTRmNzE3MmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYjQwMDAxYjY5M2JkZjAxNGMxYWM3OGUzMDdmZWQ0OWJjMWRmOGZlZDJhNWU0MmQ0Yjc5OTkzZjVkZjYyNmQ3YjFiMjUxNjc0MTQ5NTE5OGEzZGJmMDc5ZGVlYmM0NmVjZGQ1MzVmZTY2ZjUxOGMwYTY5NWM1MzNmMTY2NzQ1NWEwNTAzNmEwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDEwYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN2InO1xuZXhwb3J0IGNvbnN0IE1VTFRJX1NJR19DT05UUkFDVF9DQUxMID1cbiAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAxNjlhMDMyMTEyMzczYjQ4MWM0OGVjYjEyYjg4NDc1MTlmODk3MjBkNDI5N2E3YmY1Y2FjNDNiOWRhYThkNGFkMjNkZDUzNjU3MDg5ZGFkNTVjOTRlOGJlNTc2MmU5NzA1MjY4M2Y0OWUxZjQ1N2IyZTkyNTJmMjdlOTc1NjAzMjMwMjAwMTI4ZDBiYTJiOTU4NDMzOTM1OWZmNDJjMWQ2ZjM1Y2U3OWE3MDczMTUyYjNjOTA4NzliYzUxNjJlYjhkZjczYjAyZWFkYTNlZTMyMjg3M2E1ZmE3MzY0NzllNmM1MzYxMDk2ODE0ODJkOWYyMmYxZTFhODk2MDgwOTBiODY2NjgwMDAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZDAwMDIwMzAyMDAwMDAwMDAwMjFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NzA2Zjc4MmQzNDA5NzM3NDYxNjM2YjJkNzM3NDc4MDAwMDAwMDEwYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN2InO1xuXG4vLyBjb250cmFjdCBjYWxsIHdpdGggbWVtbyBub25jZSA0NW4sXG5leHBvcnQgY29uc3QgU0VORF9NQU5ZX0NPTlRSQUNUX0FERFJFU1NfV0lUSF9NRU1PID0gJ1NUM0YxWDRRR1YyU004WEQ5Nlg0NU02UlRRWEtBMVBaSlpaQ1FBQjRCJztcbmV4cG9ydCBjb25zdCBTRU5EX01BTllfQ09OVFJBQ1RfTkFNRV9XSVRIX01FTU8gPSAnc2VuZC1tYW55LW1lbW8nO1xuZXhwb3J0IGNvbnN0IFNFTkRfTUFOWV9DT05UUkFDVF9GVU5DVElPTl9OQU1FX1dJVEhfTUVNTyA9ICdzZW5kLW1hbnknO1xuZXhwb3J0IGNvbnN0IFVOU0lHTkVEX1NFTkRfTUFOWV9XSVRIX01FTU8gPVxuICAnODA4MDAwMDAwMDA0MDFlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDAwMDAwMDAwMDAwMDAyZDAwMDAwMDAwMDAwMDAyMTQwMDAwMDAwMzAwMDI0YjVkOTI0ZWNjMDUyZjk1MTUzMzQwMDU0Y2FlNTI2ZDE2ZTkwNDI4OGUxOWUxOTQ2ZTE5NzczODdmNjgyOGM5MDAwMjk0ZWFiOTk1ODQ0YTMzNGY0YjdkOTQ2NTAwYTRlNzk0ZjVmNWY2ZTg3ZjliMjY3MTc1NDA4YzAzZTI4MDY0MGQwMDAyYjdiYTNlMTdlMzE0OTZiYmYxNTU1OTZkYzNmMmEwMmRlNDU3Y2ZmZWFkMDE3ZjY3MWY2NWQ5ZDM0YWIyNjFlYTAwMDIwMzAyMDAwMDAwMDEwMDAyMTVlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDEwMDAwMDAwMDAwNWI4ZDgwMDIxYWRlMWU5MmYwZDhiMzQ0NzVhOTM3NDg1YTFiMWFiZjY2YTBkYmYyZmYwZTczNjU2ZTY0MmQ2ZDYxNmU3OTJkNmQ2NTZkNmYwOTczNjU2ZTY0MmQ2ZDYxNmU3OTAwMDAwMDAxMGIwMDAwMDAwMzBjMDAwMDAwMDMwNDZkNjU2ZDZmMDIwMDAwMDAwNjZkNjU2ZDZmMjAzMTAyNzQ2ZjA1MTVhNGIwODIzYTk5ZmM1ZTg3YjhiZDJlN2U3YzE4OTkxNTM1NWUxYzBhMDQ3NTczNzQ3ODAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZjQyNDAwYzAwMDAwMDAzMDQ2ZDY1NmQ2ZjAyMDAwMDAwMDY2ZDY1NmQ2ZjIwMzIwMjc0NmYwNTE1OWZjYWUzYWViZGQ5MTc3Y2EwYzIyMTRjZjBjNWM2YTk2Mzk4YTliODA0NzU3Mzc0NzgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWU4NDgwMGMwMDAwMDAwMzA0NmQ2NTZkNmYwMjAwMDAwMDA2NmQ2NTZkNmYyMDMzMDI3NDZmMDUxNTE4MmQ1YzNiNmQ2NzM3NjYyNjU5N2VlODNmYmE2MmIzOTJhMTViZWIwNDc1NzM3NDc4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDJkYzZjMCc7XG5leHBvcnQgY29uc3QgU0lHTkVEX1NFTkRfTUFOWV9XSVRIX01FTU8gPVxuICAnODA4MDAwMDAwMDA0MDFlN2E0Yjc3NDRlOTlhNTQ3NjBjYTc2ZTU0ZjRkODFlNGI2MDI2MjM3MDAwMDAwMDAwMDAwMDAyZDAwMDAwMDAwMDAwMDAyMTQwMDAwMDAwMzAyMDBlNjkyY2IyMTNiY2UwMzVlMzhkNWZhMzFkZjU0YTMwMzliM2QyNGFmMDVmNjZjMDQ2OTY0NjE1YWNiNzM5NjcwMzY4ZjQyNGFmMWM2MGMwOTYxYWY1Zjk3NmI0NmM2YWQxNTkzYjY4NTRmM2Q5M2IwN2MzNjFhN2VmMzQ4NDU2NTAyMDE3YjljZGVkZWIzZmQ5MmZlNDkwMTlmNGUzMTAwNTJlODVhNGMzYmI0NmMwZWU4OWRiNjVmN2M3ZTczNTkyZTdiNjBhOWMxMjdmYmJiMTI1YTEyNGJhYTNlZmIwZGQ2Nzk4NzljNzBjNGE2Y2E1NWYzYWZhY2VkYjE1NjVkZGU2YzAwMDJiN2JhM2UxN2UzMTQ5NmJiZjE1NTU5NmRjM2YyYTAyZGU0NTdjZmZlYWQwMTdmNjcxZjY1ZDlkMzRhYjI2MWVhMDAwMjAzMDIwMDAwMDAwMTAwMDIxNWU3YTRiNzc0NGU5OWE1NDc2MGNhNzZlNTRmNGQ4MWU0YjYwMjYyMzcwMTAwMDAwMDAwMDA1YjhkODAwMjFhZGUxZTkyZjBkOGIzNDQ3NWE5Mzc0ODVhMWIxYWJmNjZhMGRiZjJmZjBlNzM2NTZlNjQyZDZkNjE2ZTc5MmQ2ZDY1NmQ2ZjA5NzM2NTZlNjQyZDZkNjE2ZTc5MDAwMDAwMDEwYjAwMDAwMDAzMGMwMDAwMDAwMzA0NmQ2NTZkNmYwMjAwMDAwMDA2NmQ2NTZkNmYyMDMxMDI3NDZmMDUxNWE0YjA4MjNhOTlmYzVlODdiOGJkMmU3ZTdjMTg5OTE1MzU1ZTFjMGEwNDc1NzM3NDc4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDBjMDAwMDAwMDMwNDZkNjU2ZDZmMDIwMDAwMDAwNjZkNjU2ZDZmMjAzMjAyNzQ2ZjA1MTU5ZmNhZTNhZWJkZDkxNzdjYTBjMjIxNGNmMGM1YzZhOTYzOThhOWI4MDQ3NTczNzQ3ODAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxZTg0ODAwYzAwMDAwMDAzMDQ2ZDY1NmQ2ZjAyMDAwMDAwMDY2ZDY1NmQ2ZjIwMzMwMjc0NmYwNTE1MTgyZDVjM2I2ZDY3Mzc2NjI2NTk3ZWU4M2ZiYTYyYjM5MmExNWJlYjA0NzU3Mzc0NzgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMmRjNmMwJztcblxuZXhwb3J0IGNvbnN0IHBydktleXNTdHJpbmcgPSBbXG4gICdlNTU4ODNkNTMzMzVjZGYwZmU0YzUwNTA1MTM4MmIyZjdjYjk1MjE2NjYzZTQwODBlYmJjYWE3NGJjY2E5NzUwMDEnLFxuICAnMDk3MWIyYmExOTNmZDM5M2E0YzM5ZWZjY2MzZDYzYmFmZjVkNDk4NTAwYWNmYzk3Yzg3NjU1MzE2NTIyNzQyNDAxJyxcbiAgJzA0MWM4YjRiYTgyNTA4NTVhNGEzY2Q0ZDliMjhlNDU2MmM5ZjRhZWU5N2Y3OTQ0MmJiOWZmMmNmZjY4NDUyMjAwMScsXG5dO1xuXG5leHBvcnQgY29uc3Qgc2VuZE1hbnlSZWNpcGllbnRzID0gW1xuICB7XG4gICAgYWRkcmVzczogJ1NOMkpCMTBIVEs3WTVYMVhSUU1RN1daMFJLNEFLQVFHVzFBNzU1WVlUJyxcbiAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICBtZW1vOiAnbWVtbyAxJyxcbiAgfSxcbiAge1xuICAgIGFkZHJlc3M6ICdTTjJGV05SWEVRUUNIRVo1MFI4R01TVzY1UlRNUDc2NTlRMk1ZWTlQNCcsXG4gICAgYW1vdW50OiAnMjAwMDAwMCcsXG4gICAgbWVtbzogJ21lbW8gMicsXG4gIH0sXG4gIHtcbiAgICBhZGRyZXNzOiAnU05DMlRRMVZETktLRVNINkI1WkVHRlhUQ0FTUzU4QVZYREFDOUg3VycsXG4gICAgYW1vdW50OiAnMzAwMDAwMCcsXG4gICAgbWVtbzogJ21lbW8gMycsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgTUVNTyA9ICdtZW1vIDEnO1xuXG5leHBvcnQgY29uc3QgRlVOR0lCTEVfVE9LRU5fVFJBTlNGRVJfQ09OU1RBTlRTID0ge1xuICBDT05UUkFDVF9BRERSRVNTOiAnU1RBRzE4RTQ1VzYxM0ZaM0g0Wk1GNlFISDQyNkVYTTVRVFNBVldZSCcsXG4gIENPTlRSQUNUX05BTUU6ICd0c2lwNmRwLXRva2VuJyxcbiAgRlVOQ1RJT05fTkFNRTogJ3RyYW5zZmVyJyxcbiAgU0VOREVSX0FERFJFU1M6ICdTVEFHMThFNDVXNjEzRlozSDRaTUY2UUhINDI2RVhNNVFUU0FWV1lIJyxcbiAgUkVDRUlWRVJfQUREUkVTUzogJ1NOMk5OMUpQOUFFUDVCVkUxOVJOSjZUMk1QN05ER1JaWVNUMVZERjNNJyxcbiAgVE9LRU5fTkFNRTogJ3RzaXA2ZHAtdG9rZW4nLFxuICBVTlNJR05FRF9TSU5HTEVfU0lHX1RYOlxuICAgICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDIwMDAwMDAwMTAxMDIxNTE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTAxMDAwMDAwMDAwMDAwMjcxMDAyMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTA4NzQ3MjYxNmU3MzY2NjU3MjAwMDAwMDA0MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjcxMDA1MWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMDUxNWFiNTBjYWM5NTNhYzU1ZWRjMTRlMmIyMzY4NTRiMWVhZDg2M2ZlY2UwYTAyMDAwMDAwMDEzMScsXG4gIFVOU0lHTkVEX1NJTkdMRV9TSUdfVFhfV0lUSE9VVF9NRU1POlxuICAgICc4MDgwMDAwMDAwMDQwMDE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDIwMDAwMDAwMTAxMDIxNTE2NDI0N2Q2ZjJiNDI1YWM1NzcxNDIzYWU2YzgwYzc1NGY3MTcyYjAxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTAxMDAwMDAwMDAwMDAwMjcxMDAyMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTA4NzQ3MjYxNmU3MzY2NjU3MjAwMDAwMDAzMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjcxMDA1MWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMDUxNWFiNTBjYWM5NTNhYzU1ZWRjMTRlMmIyMzY4NTRiMWVhZDg2M2ZlY2UnLFxuICBTSUdORURfTVVMVElfU0lHX1RYOlxuICAgICc4MDgwMDAwMDAwMDQwMTJmZTUwN2MwOWRiYjIzYzNiN2U1ZDE2NmM4MWZjNGI4NzY5MjUxMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBiNDAwMDAwMDAzMDIwMWU0Yzk4ZDc2ODdlYWI1ZjExZDAzZmViYzk2OTUxMzAxZWVkZTMzNjA4OGIwNmM1YTY3NmNjNjA5M2Y3MGUxNmIzZjM1MzNjY2Q4ZTZmOTIzOTBhMTdkY2M5MTdmNGU4Mjg2NTdmMTc2MDU1NzRhNWZjYmIzZGE1OWYyNTQ4M2RjMDIwMTkwOTVjMmY1MjE3ZTBmMTY4ZjI3YjYwNWI0N2U5ZWFjMmRhM2M1ZWEzMDljNDJhMjY3N2FkZGZiNjdjMWZkNDcxZWYyMDE4N2NlNmI4NWI1YjU0MWQ0YjRmMDBkMmY4ZWE4ZjdkNDJiZTg0MzI3OTY4Y2I5NDExNzMwYjUyMTdhMDAwMzhlM2M0NTI5Mzk1NjExYmU5YWJmNmZhM2I2OTg3ZTgxZDQwMjM4NWUzZDYwNWEwNzNmNDJmNDA3NTY1YTRhM2QwMDAyMDMwMjAwMDAwMDAxMDEwMjE1MmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMDEwMDAwMDAwMDAwMDAyNzEwMDIxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwZDc0NzM2OTcwMzY2NDcwMmQ3NDZmNmI2NTZlMDg3NDcyNjE2ZTczNjY2NTcyMDAwMDAwMDQwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwMDUxYTE1MDBhMWM0MmYwYzExYmZlMzg5M2Y0NzlhZjE4OTA0Njc3Njg1YmUwNTE1YWI1MGNhYzk1M2FjNTVlZGMxNGUyYjIzNjg1NGIxZWFkODYzZmVjZTBhMDIwMDAwMDAwMTMxJyxcbiAgU0lHTkVEX01VTFRJX1NJR19UWF9XSVRIT1VUX01FTU86XG4gICAgJzgwODAwMDAwMDAwNDAxMmZlNTA3YzA5ZGJiMjNjM2I3ZTVkMTY2YzgxZmM0Yjg3NjkyNTEwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGI0MDAwMDAwMDMwMjAwZDEyYTgwZjY3Y2RhYzcyYWQxMTYwNzVlODY4NDY5ODZhMDE1YTYwYmY1NDE4NTVlYTE3ZGRjNzk2MjBiNjc5YjBkNzVlNTIzY2JjNzYzODk2OWFkZGViMDQ3ZTczZWQxMWIzOThhODk0YjJmZDQ0NTk2MjNhZmIyZmMxMDQ2MWIwMjAwN2UwMWYyOGY5YWM1YjliYzMyZjNkZTgyNmY2OWFhYmNjNmIzNTdmYWE1MGQ5ODA4N2ZmMTI3MTRlYjNkMzUxZTUxNTQ4MmFmZjc4NGI1NGFiNTcyY2U2Zjg2YzFmNDBjNzFiMjFmZDE5N2U4NDZmYjM4ODcxOGY1NWYxN2Q0ZDMwMDAzOGUzYzQ1MjkzOTU2MTFiZTlhYmY2ZmEzYjY5ODdlODFkNDAyMzg1ZTNkNjA1YTA3M2Y0MmY0MDc1NjVhNGEzZDAwMDIwMzAyMDAwMDAwMDEwMTAyMTUyZmU1MDdjMDlkYmIyM2MzYjdlNWQxNjZjODFmYzRiODc2OTI1MTBiMWExNTAwYTFjNDJmMGMxMWJmZTM4OTNmNDc5YWYxODkwNDY3NzY4NWJlMGQ3NDczNjk3MDM2NjQ3MDJkNzQ2ZjZiNjU2ZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwMTAwMDAwMDAwMDAwMDI3MTAwMjFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTBkNzQ3MzY5NzAzNjY0NzAyZDc0NmY2YjY1NmUwODc0NzI2MTZlNzM2NjY1NzIwMDAwMDAwNDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI3MTAwNTFhMTUwMGExYzQyZjBjMTFiZmUzODkzZjQ3OWFmMTg5MDQ2Nzc2ODViZTA1MTVhYjUwY2FjOTUzYWM1NWVkYzE0ZTJiMjM2ODU0YjFlYWQ4NjNmZWNlMDknLFxufTtcbiJdfQ==