@secrecy/lib 1.0.0-dev.55 → 1.0.0-dev.58

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.
@@ -6,15 +6,15 @@ import type { Document } from "bson";
6
6
  export declare class SecrecyDbClient {
7
7
  #private;
8
8
  constructor(_client: SecrecyClient, _keys: KeyPair, thunder: ReturnType<typeof Thunder>);
9
- dbGet<U>({ field, userId }: {
9
+ get<U>({ field, userId }: {
10
10
  field: string;
11
11
  userId?: string | null | undefined;
12
12
  }): Promise<SuccessResponse<U> | ErrorAccessDenied | ErrorNotExist | ErrorNotFound | null>;
13
- dbSet<T extends UserData, U extends Document>({ value, userId }: {
13
+ set<T extends UserData, U extends Document>({ value, userId }: {
14
14
  value: U;
15
15
  userId?: string | null | undefined;
16
16
  }): Promise<SuccessResponse<T> | ErrorAccessDenied | ErrorNotFound | null>;
17
- dbSearch<T>({ search, field }: {
17
+ search<T>({ search, field }: {
18
18
  field: string;
19
19
  search: string;
20
20
  }): Promise<SuccessResponse<T[]> | ErrorAccessDenied | ErrorBasic | ErrorNotExist | null>;
@@ -19,7 +19,7 @@ export class SecrecyDbClient {
19
19
  _classPrivateFieldLooseBase(this, _thunder)[_thunder] = thunder;
20
20
  }
21
21
 
22
- async dbGet(_ref) {
22
+ async get(_ref) {
23
23
  let {
24
24
  field,
25
25
  userId
@@ -72,14 +72,14 @@ export class SecrecyDbClient {
72
72
  };
73
73
  }
74
74
 
75
- async dbSet(_ref2) {
75
+ async set(_ref2) {
76
76
  let {
77
77
  value,
78
78
  userId
79
79
  } = _ref2;
80
80
 
81
81
  if (typeof value !== "object") {
82
- throw new Error("value should be an object including fields you want to update.");
82
+ throw new Error(`value should be an object including fields you want to update.`);
83
83
  }
84
84
 
85
85
  const {
@@ -126,7 +126,7 @@ export class SecrecyDbClient {
126
126
  };
127
127
  }
128
128
 
129
- async dbSearch(_ref3) {
129
+ async search(_ref3) {
130
130
  let {
131
131
  search,
132
132
  field
@@ -195,4 +195,4 @@ export class SecrecyDbClient {
195
195
  }
196
196
 
197
197
  }
198
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXJpYWxpemUiLCJTZWNyZWN5RGJDbGllbnQiLCJjb25zdHJ1Y3RvciIsIl9jbGllbnQiLCJfa2V5cyIsInRodW5kZXIiLCJkYkdldCIsImZpZWxkIiwidXNlcklkIiwiX190eXBlbmFtZSIsIm1lc3NhZ2UiLCJqc29uIiwiZGF0YSIsInJlcyIsImRiU2V0IiwidmFsdWUiLCJFcnJvciIsInRvU3RyaW5nIiwiZGJTZWFyY2giLCJzZWFyY2giLCJzY2FsYXJzIiwiSnNvbiIsImVuY29kZSIsImUiLCJKU09OIiwic3RyaW5naWZ5IiwiZGVjb2RlIiwicGFyc2UiLCJEYXRlVGltZSIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsIkJpZ0ludCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvU2VjcmVjeURiQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHR5cGUgeyBTZWNyZWN5Q2xpZW50LCBTdWNjZXNzUmVzcG9uc2UsIFVzZXJEYXRhIH0gZnJvbSBcIi4uL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleVBhaXIgfSBmcm9tIFwiLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEVycm9yQWNjZXNzRGVuaWVkLFxuICBFcnJvckJhc2ljLFxuICBFcnJvck5vdEV4aXN0LFxuICBFcnJvck5vdEZvdW5kXG59IGZyb20gXCIuLi9lcnJvci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBUaHVuZGVyIH0gZnJvbSBcIi4uL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgRG9jdW1lbnQgfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IHsgc2VyaWFsaXplIH0gZnJvbSBcImJzb25cIjtcblxuZXhwb3J0IGNsYXNzIFNlY3JlY3lEYkNsaWVudCB7XG4gIC8vICNjbGllbnQ6IFNlY3JlY3lDbGllbnQ7XG5cbiAgLy8gI2tleXM6IEtleVBhaXI7XG5cbiAgI3RodW5kZXI6IFJldHVyblR5cGU8dHlwZW9mIFRodW5kZXI+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIF9jbGllbnQ6IFNlY3JlY3lDbGllbnQsXG4gICAgX2tleXM6IEtleVBhaXIsXG4gICAgdGh1bmRlcjogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj5cbiAgKSB7XG4gICAgLy8gdGhpcy4jY2xpZW50ID0gY2xpZW50O1xuICAgIC8vIHRoaXMuI2tleXMgPSBrZXlzO1xuICAgIHRoaXMuI3RodW5kZXIgPSB0aHVuZGVyO1xuICB9XG5cbiAgYXN5bmMgZGJHZXQ8VT4oe1xuICAgIGZpZWxkLFxuICAgIHVzZXJJZFxuICB9OiB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxcbiAgICB8IFN1Y2Nlc3NSZXNwb25zZTxVPlxuICAgIHwgRXJyb3JBY2Nlc3NEZW5pZWRcbiAgICB8IEVycm9yTm90RXhpc3RcbiAgICB8IEVycm9yTm90Rm91bmRcbiAgICB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyBkYkdldCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIpKHtcbiAgICAgIGRiR2V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICB1c2VySWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RFeGlzdFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiR2V0UmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGpzb246IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJHZXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYkdldC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYkdldDtcbiAgICB9XG5cbiAgICBpZiAoZGJHZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEV4aXN0XCIpIHtcbiAgICAgIHJldHVybiBkYkdldDtcbiAgICB9XG5cbiAgICBpZiAoZGJHZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiBkYkdldDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IChkYkdldC5qc29uIGFzIHsgcmVzOiBVIH0pLnJlc1xuICAgIH07XG4gIH1cblxuICBhc3luYyBkYlNldDxUIGV4dGVuZHMgVXNlckRhdGEsIFUgZXh0ZW5kcyBEb2N1bWVudD4oe1xuICAgIHZhbHVlLFxuICAgIHVzZXJJZFxuICB9OiB7XG4gICAgdmFsdWU6IFU7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPFQ+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBFcnJvck5vdEZvdW5kIHwgbnVsbD4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHZhbHVlIHNob3VsZCBiZSBhbiBvYmplY3QgaW5jbHVkaW5nIGZpZWxkcyB5b3Ugd2FudCB0byB1cGRhdGUuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGRiU2V0IH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIikoe1xuICAgICAgZGJTZXQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICB2YWx1ZTogc2VyaWFsaXplKHZhbHVlKS50b1N0cmluZyhcImJhc2U2NFwiKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiU2V0UmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGRiU2V0OiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRiU2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZGJTZXQ7XG4gICAgfVxuXG4gICAgaWYgKGRiU2V0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gZGJTZXQ7XG4gICAgfVxuXG4gICAgaWYgKCFkYlNldC5kYlNldCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiAoZGJTZXQuZGJTZXQgYXMgeyByZXM6IFQgfSkucmVzXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGRiU2VhcmNoPFQ+KHtcbiAgICBzZWFyY2gsXG4gICAgZmllbGRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFxuICAgIFN1Y2Nlc3NSZXNwb25zZTxUW10+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBFcnJvckJhc2ljIHwgRXJyb3JOb3RFeGlzdCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyBkYlNlYXJjaCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgSnNvbjoge1xuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IEpTT04uc3RyaW5naWZ5KGUpLFxuICAgICAgICAgIGRlY29kZTogKGU6IHVua25vd24pID0+IEpTT04ucGFyc2UoZSBhcyBzdHJpbmcpXG4gICAgICAgIH0sXG4gICAgICAgIERhdGVUaW1lOiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gbmV3IERhdGUoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIERhdGUpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfSxcbiAgICAgICAgQmlnSW50OiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gQmlnSW50KGUgYXMgc3RyaW5nKSxcbiAgICAgICAgICBlbmNvZGU6IChlOiB1bmtub3duKSA9PiAoZSBhcyBiaWdpbnQpLnRvU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIGRiU2VhcmNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgZmllbGRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JCYXNpY1wiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiU2VhcmNoUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGpzb246IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJTZWFyY2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYlNlYXJjaC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYlNlYXJjaDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZWFyY2guX190eXBlbmFtZSA9PT0gXCJFcnJvckJhc2ljXCIpIHtcbiAgICAgIHJldHVybiBkYlNlYXJjaDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZWFyY2guX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEV4aXN0XCIpIHtcbiAgICAgIHJldHVybiBkYlNlYXJjaDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRiU2VhcmNoLmpzb24gYXMgdW5rbm93biBhcyBUW11cbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBV0EsU0FBU0EsU0FBVCxRQUEwQixNQUExQjs7OztBQUVBLE9BQU8sTUFBTUMsZUFBTixDQUFzQjtFQUMzQjtFQUVBO0VBSUFDLFdBQVcsQ0FDVEMsT0FEUyxFQUVUQyxLQUZTLEVBR1RDLE9BSFMsRUFJVDtJQUFBO01BQUE7TUFBQTtJQUFBO0lBQ0E7SUFDQTtJQUNBLHdEQUFnQkEsT0FBaEI7RUFDRDs7RUFFVSxNQUFMQyxLQUFLLE9BWVQ7SUFBQSxJQVphO01BQ2JDLEtBRGE7TUFFYkM7SUFGYSxDQVliO0lBQ0EsTUFBTTtNQUFFRjtJQUFGLElBQVksTUFBTSxzREFBYyxPQUFkLEVBQXVCO01BQzdDQSxLQUFLLEVBQUUsQ0FDTDtRQUNFQyxLQURGO1FBRUVDO01BRkYsQ0FESyxFQUtMO1FBQ0UsMkJBQTJCO1VBQ3pCQyxVQUFVLEVBQUUsSUFEYTtVQUV6QkMsT0FBTyxFQUFFO1FBRmdCLENBRDdCO1FBS0UsdUJBQXVCO1VBQ3JCRCxVQUFVLEVBQUUsSUFEUztVQUVyQkMsT0FBTyxFQUFFO1FBRlksQ0FMekI7UUFTRSx1QkFBdUI7VUFDckJELFVBQVUsRUFBRSxJQURTO1VBRXJCQyxPQUFPLEVBQUU7UUFGWSxDQVR6QjtRQWFFLHVCQUF1QjtVQUNyQkQsVUFBVSxFQUFFLElBRFM7VUFFckJFLElBQUksRUFBRTtRQUZlO01BYnpCLENBTEs7SUFEc0MsQ0FBdkIsQ0FBeEI7O0lBMkJBLElBQUksQ0FBQ0wsS0FBTCxFQUFZO01BQ1YsT0FBTyxJQUFQO0lBQ0Q7O0lBRUQsSUFBSUEsS0FBSyxDQUFDRyxVQUFOLEtBQXFCLG1CQUF6QixFQUE4QztNQUM1QyxPQUFPSCxLQUFQO0lBQ0Q7O0lBRUQsSUFBSUEsS0FBSyxDQUFDRyxVQUFOLEtBQXFCLGVBQXpCLEVBQTBDO01BQ3hDLE9BQU9ILEtBQVA7SUFDRDs7SUFFRCxJQUFJQSxLQUFLLENBQUNHLFVBQU4sS0FBcUIsZUFBekIsRUFBMEM7TUFDeEMsT0FBT0gsS0FBUDtJQUNEOztJQUVELE9BQU87TUFDTEcsVUFBVSxFQUFFLGlCQURQO01BRUxHLElBQUksRUFBR04sS0FBSyxDQUFDSyxJQUFQLENBQTJCRTtJQUY1QixDQUFQO0VBSUQ7O0VBRVUsTUFBTEMsS0FBSyxRQU1nRTtJQUFBLElBTnZCO01BQ2xEQyxLQURrRDtNQUVsRFA7SUFGa0QsQ0FNdUI7O0lBQ3pFLElBQUksT0FBT08sS0FBUCxLQUFpQixRQUFyQixFQUErQjtNQUM3QixNQUFNLElBQUlDLEtBQUosa0VBQU47SUFHRDs7SUFFRCxNQUFNO01BQUVGO0lBQUYsSUFBWSxNQUFNLHNEQUFjLFVBQWQsRUFBMEI7TUFDaERBLEtBQUssRUFBRSxDQUNMO1FBQ0VOLE1BREY7UUFFRU8sS0FBSyxFQUFFZixTQUFTLENBQUNlLEtBQUQsQ0FBVCxDQUFpQkUsUUFBakIsQ0FBMEIsUUFBMUI7TUFGVCxDQURLLEVBS0w7UUFDRSwyQkFBMkI7VUFDekJSLFVBQVUsRUFBRSxJQURhO1VBRXpCQyxPQUFPLEVBQUU7UUFGZ0IsQ0FEN0I7UUFLRSx1QkFBdUI7VUFDckJELFVBQVUsRUFBRSxJQURTO1VBRXJCQyxPQUFPLEVBQUU7UUFGWSxDQUx6QjtRQVNFLHVCQUF1QjtVQUNyQkQsVUFBVSxFQUFFLElBRFM7VUFFckJLLEtBQUssRUFBRTtRQUZjO01BVHpCLENBTEs7SUFEeUMsQ0FBMUIsQ0FBeEI7O0lBdUJBLElBQUksQ0FBQ0EsS0FBTCxFQUFZO01BQ1YsT0FBTyxJQUFQO0lBQ0Q7O0lBRUQsSUFBSUEsS0FBSyxDQUFDTCxVQUFOLEtBQXFCLG1CQUF6QixFQUE4QztNQUM1QyxPQUFPSyxLQUFQO0lBQ0Q7O0lBRUQsSUFBSUEsS0FBSyxDQUFDTCxVQUFOLEtBQXFCLGVBQXpCLEVBQTBDO01BQ3hDLE9BQU9LLEtBQVA7SUFDRDs7SUFFRCxJQUFJLENBQUNBLEtBQUssQ0FBQ0EsS0FBWCxFQUFrQjtNQUNoQixPQUFPLElBQVA7SUFDRDs7SUFFRCxPQUFPO01BQ0xMLFVBQVUsRUFBRSxpQkFEUDtNQUVMRyxJQUFJLEVBQUdFLEtBQUssQ0FBQ0EsS0FBUCxDQUE0QkQ7SUFGN0IsQ0FBUDtFQUlEOztFQUVhLE1BQVJLLFFBQVEsUUFRWjtJQUFBLElBUmdCO01BQ2hCQyxNQURnQjtNQUVoQlo7SUFGZ0IsQ0FRaEI7SUFDQSxNQUFNO01BQUVXO0lBQUYsSUFBZSxNQUFNLHNEQUFjLE9BQWQsRUFBdUI7TUFDaERFLE9BQU8sRUFBRTtRQUNQQyxJQUFJLEVBQUU7VUFDSkMsTUFBTSxFQUFHQyxDQUFELElBQWdCQyxJQUFJLENBQUNDLFNBQUwsQ0FBZUYsQ0FBZixDQURwQjtVQUVKRyxNQUFNLEVBQUdILENBQUQsSUFBZ0JDLElBQUksQ0FBQ0csS0FBTCxDQUFXSixDQUFYO1FBRnBCLENBREM7UUFLUEssUUFBUSxFQUFFO1VBQ1JGLE1BQU0sRUFBR0gsQ0FBRCxJQUFnQixJQUFJTSxJQUFKLENBQVNOLENBQVQsQ0FEaEI7VUFFUkQsTUFBTSxFQUFHQyxDQUFELElBQWlCQSxDQUFELENBQVlPLFdBQVo7UUFGaEIsQ0FMSDtRQVNQQyxNQUFNLEVBQUU7VUFDTkwsTUFBTSxFQUFHSCxDQUFELElBQWdCUSxNQUFNLENBQUNSLENBQUQsQ0FEeEI7VUFFTkQsTUFBTSxFQUFHQyxDQUFELElBQWlCQSxDQUFELENBQWNOLFFBQWQ7UUFGbEI7TUFURDtJQUR1QyxDQUF2QixFQWV4QjtNQUNEQyxRQUFRLEVBQUUsQ0FDUjtRQUNFQyxNQURGO1FBRUVaO01BRkYsQ0FEUSxFQUtSO1FBQ0UsMkJBQTJCO1VBQ3pCRSxVQUFVLEVBQUUsSUFEYTtVQUV6QkMsT0FBTyxFQUFFO1FBRmdCLENBRDdCO1FBS0Usb0JBQW9CO1VBQ2xCRCxVQUFVLEVBQUUsSUFETTtVQUVsQkMsT0FBTyxFQUFFO1FBRlMsQ0FMdEI7UUFTRSx1QkFBdUI7VUFDckJELFVBQVUsRUFBRSxJQURTO1VBRXJCQyxPQUFPLEVBQUU7UUFGWSxDQVR6QjtRQWFFLDBCQUEwQjtVQUN4QkQsVUFBVSxFQUFFLElBRFk7VUFFeEJFLElBQUksRUFBRTtRQUZrQjtNQWI1QixDQUxRO0lBRFQsQ0Fmd0IsQ0FBM0I7O0lBMENBLElBQUksQ0FBQ08sUUFBTCxFQUFlO01BQ2IsT0FBTyxJQUFQO0lBQ0Q7O0lBRUQsSUFBSUEsUUFBUSxDQUFDVCxVQUFULEtBQXdCLG1CQUE1QixFQUFpRDtNQUMvQyxPQUFPUyxRQUFQO0lBQ0Q7O0lBRUQsSUFBSUEsUUFBUSxDQUFDVCxVQUFULEtBQXdCLFlBQTVCLEVBQTBDO01BQ3hDLE9BQU9TLFFBQVA7SUFDRDs7SUFFRCxJQUFJQSxRQUFRLENBQUNULFVBQVQsS0FBd0IsZUFBNUIsRUFBNkM7TUFDM0MsT0FBT1MsUUFBUDtJQUNEOztJQUVELE9BQU87TUFDTFQsVUFBVSxFQUFFLGlCQURQO01BRUxHLElBQUksRUFBRU0sUUFBUSxDQUFDUDtJQUZWLENBQVA7RUFJRDs7QUFoTjBCIn0=
198
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXJpYWxpemUiLCJTZWNyZWN5RGJDbGllbnQiLCJjb25zdHJ1Y3RvciIsIl9jbGllbnQiLCJfa2V5cyIsInRodW5kZXIiLCJnZXQiLCJmaWVsZCIsInVzZXJJZCIsImRiR2V0IiwiX190eXBlbmFtZSIsIm1lc3NhZ2UiLCJqc29uIiwiZGF0YSIsInJlcyIsInNldCIsInZhbHVlIiwiRXJyb3IiLCJkYlNldCIsInRvU3RyaW5nIiwic2VhcmNoIiwiZGJTZWFyY2giLCJzY2FsYXJzIiwiSnNvbiIsImVuY29kZSIsImUiLCJKU09OIiwic3RyaW5naWZ5IiwiZGVjb2RlIiwicGFyc2UiLCJEYXRlVGltZSIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsIkJpZ0ludCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvU2VjcmVjeURiQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHR5cGUgeyBTZWNyZWN5Q2xpZW50LCBTdWNjZXNzUmVzcG9uc2UsIFVzZXJEYXRhIH0gZnJvbSBcIi4uL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleVBhaXIgfSBmcm9tIFwiLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEVycm9yQWNjZXNzRGVuaWVkLFxuICBFcnJvckJhc2ljLFxuICBFcnJvck5vdEV4aXN0LFxuICBFcnJvck5vdEZvdW5kXG59IGZyb20gXCIuLi9lcnJvci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBUaHVuZGVyIH0gZnJvbSBcIi4uL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgRG9jdW1lbnQgfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IHsgc2VyaWFsaXplIH0gZnJvbSBcImJzb25cIjtcblxuZXhwb3J0IGNsYXNzIFNlY3JlY3lEYkNsaWVudCB7XG4gIC8vICNjbGllbnQ6IFNlY3JlY3lDbGllbnQ7XG5cbiAgLy8gI2tleXM6IEtleVBhaXI7XG5cbiAgI3RodW5kZXI6IFJldHVyblR5cGU8dHlwZW9mIFRodW5kZXI+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIF9jbGllbnQ6IFNlY3JlY3lDbGllbnQsXG4gICAgX2tleXM6IEtleVBhaXIsXG4gICAgdGh1bmRlcjogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj5cbiAgKSB7XG4gICAgLy8gdGhpcy4jY2xpZW50ID0gY2xpZW50O1xuICAgIC8vIHRoaXMuI2tleXMgPSBrZXlzO1xuICAgIHRoaXMuI3RodW5kZXIgPSB0aHVuZGVyO1xuICB9XG5cbiAgYXN5bmMgZ2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8XG4gICAgfCBTdWNjZXNzUmVzcG9uc2U8VT5cbiAgICB8IEVycm9yQWNjZXNzRGVuaWVkXG4gICAgfCBFcnJvck5vdEV4aXN0XG4gICAgfCBFcnJvck5vdEZvdW5kXG4gICAgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGJHZXQgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiKSh7XG4gICAgICBkYkdldDogW1xuICAgICAgICB7XG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgdXNlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90RXhpc3RcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBEYkdldFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBqc29uOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRiR2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGJHZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZGJHZXQ7XG4gICAgfVxuXG4gICAgaWYgKGRiR2V0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RFeGlzdFwiKSB7XG4gICAgICByZXR1cm4gZGJHZXQ7XG4gICAgfVxuXG4gICAgaWYgKGRiR2V0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gZGJHZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiAoZGJHZXQuanNvbiBhcyB7IHJlczogVSB9KS5yZXNcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc2V0PFQgZXh0ZW5kcyBVc2VyRGF0YSwgVSBleHRlbmRzIERvY3VtZW50Pih7XG4gICAgdmFsdWUsXG4gICAgdXNlcklkXG4gIH06IHtcbiAgICB2YWx1ZTogVTtcbiAgICB1c2VySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8VD4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IEVycm9yTm90Rm91bmQgfCBudWxsPiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgdmFsdWUgc2hvdWxkIGJlIGFuIG9iamVjdCBpbmNsdWRpbmcgZmllbGRzIHlvdSB3YW50IHRvIHVwZGF0ZS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGJTZXQgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkYlNldDogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemUodmFsdWUpLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJTZXRSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGJTZXQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJTZXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYlNldC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYlNldDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiBkYlNldDtcbiAgICB9XG5cbiAgICBpZiAoIWRiU2V0LmRiU2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IChkYlNldC5kYlNldCBhcyB7IHJlczogVCB9KS5yZXNcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc2VhcmNoPFQ+KHtcbiAgICBzZWFyY2gsXG4gICAgZmllbGRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFxuICAgIFN1Y2Nlc3NSZXNwb25zZTxUW10+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBFcnJvckJhc2ljIHwgRXJyb3JOb3RFeGlzdCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyBkYlNlYXJjaCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgSnNvbjoge1xuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IEpTT04uc3RyaW5naWZ5KGUpLFxuICAgICAgICAgIGRlY29kZTogKGU6IHVua25vd24pID0+IEpTT04ucGFyc2UoZSBhcyBzdHJpbmcpXG4gICAgICAgIH0sXG4gICAgICAgIERhdGVUaW1lOiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gbmV3IERhdGUoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIERhdGUpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfSxcbiAgICAgICAgQmlnSW50OiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gQmlnSW50KGUgYXMgc3RyaW5nKSxcbiAgICAgICAgICBlbmNvZGU6IChlOiB1bmtub3duKSA9PiAoZSBhcyBiaWdpbnQpLnRvU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIGRiU2VhcmNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgZmllbGRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JCYXNpY1wiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiU2VhcmNoUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGpzb246IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJTZWFyY2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYlNlYXJjaC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYlNlYXJjaDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZWFyY2guX190eXBlbmFtZSA9PT0gXCJFcnJvckJhc2ljXCIpIHtcbiAgICAgIHJldHVybiBkYlNlYXJjaDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZWFyY2guX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEV4aXN0XCIpIHtcbiAgICAgIHJldHVybiBkYlNlYXJjaDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRiU2VhcmNoLmpzb24gYXMgdW5rbm93biBhcyBUW11cbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBV0EsU0FBU0EsU0FBVCxRQUEwQixNQUExQjs7OztBQUVBLE9BQU8sTUFBTUMsZUFBTixDQUFzQjtFQUMzQjtFQUVBO0VBSUFDLFdBQVcsQ0FDVEMsT0FEUyxFQUVUQyxLQUZTLEVBR1RDLE9BSFMsRUFJVDtJQUFBO01BQUE7TUFBQTtJQUFBO0lBQ0E7SUFDQTtJQUNBLHdEQUFnQkEsT0FBaEI7RUFDRDs7RUFFUSxNQUFIQyxHQUFHLE9BWVA7SUFBQSxJQVpXO01BQ1hDLEtBRFc7TUFFWEM7SUFGVyxDQVlYO0lBQ0EsTUFBTTtNQUFFQztJQUFGLElBQVksTUFBTSxzREFBYyxPQUFkLEVBQXVCO01BQzdDQSxLQUFLLEVBQUUsQ0FDTDtRQUNFRixLQURGO1FBRUVDO01BRkYsQ0FESyxFQUtMO1FBQ0UsMkJBQTJCO1VBQ3pCRSxVQUFVLEVBQUUsSUFEYTtVQUV6QkMsT0FBTyxFQUFFO1FBRmdCLENBRDdCO1FBS0UsdUJBQXVCO1VBQ3JCRCxVQUFVLEVBQUUsSUFEUztVQUVyQkMsT0FBTyxFQUFFO1FBRlksQ0FMekI7UUFTRSx1QkFBdUI7VUFDckJELFVBQVUsRUFBRSxJQURTO1VBRXJCQyxPQUFPLEVBQUU7UUFGWSxDQVR6QjtRQWFFLHVCQUF1QjtVQUNyQkQsVUFBVSxFQUFFLElBRFM7VUFFckJFLElBQUksRUFBRTtRQUZlO01BYnpCLENBTEs7SUFEc0MsQ0FBdkIsQ0FBeEI7O0lBMkJBLElBQUksQ0FBQ0gsS0FBTCxFQUFZO01BQ1YsT0FBTyxJQUFQO0lBQ0Q7O0lBRUQsSUFBSUEsS0FBSyxDQUFDQyxVQUFOLEtBQXFCLG1CQUF6QixFQUE4QztNQUM1QyxPQUFPRCxLQUFQO0lBQ0Q7O0lBRUQsSUFBSUEsS0FBSyxDQUFDQyxVQUFOLEtBQXFCLGVBQXpCLEVBQTBDO01BQ3hDLE9BQU9ELEtBQVA7SUFDRDs7SUFFRCxJQUFJQSxL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
@@ -63,7 +63,7 @@ export class SecrecyMailClient {
63
63
  }
64
64
 
65
65
  if (!("publicKey" in u)) {
66
- throw new Error("User " + idOrMail + " have no public key");
66
+ throw new Error(`User ${idOrMail} have no public key`);
67
67
  }
68
68
 
69
69
  const recipientsFiles = new Array();
@@ -78,7 +78,7 @@ export class SecrecyMailClient {
78
78
  fileInHistory = filesCache.get(f.id);
79
79
 
80
80
  if (!fileInHistory) {
81
- throw new Error("File " + f.name + " (" + f.id + ") does not exists");
81
+ throw new Error(`File ${f.name} (${f.id}) does not exists`);
82
82
  }
83
83
  }
84
84
 
@@ -370,7 +370,7 @@ export class SecrecyMailClient {
370
370
  const draft = drafts.data.find(d => d.mailIntegrityId === draftId);
371
371
 
372
372
  if (!draft) {
373
- throw new Error("Invalid draft " + draftId);
373
+ throw new Error(`Invalid draft ${draftId}`);
374
374
  }
375
375
 
376
376
  let hashKey = null;
@@ -397,7 +397,7 @@ export class SecrecyMailClient {
397
397
  file = filesCache.get(f.id);
398
398
 
399
399
  if (!file) {
400
- throw new Error("File " + f.name + " (" + f.id + ") does not exists");
400
+ throw new Error(`File ${f.name} (${f.id}) does not exists`);
401
401
  }
402
402
  }
403
403
 
@@ -476,8 +476,6 @@ export class SecrecyMailClient {
476
476
  }
477
477
 
478
478
  async deleteDraft(draftId) {
479
- var _deleteDraftMail$dele;
480
-
481
479
  const {
482
480
  deleteDraftMail
483
481
  } = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("mutation")({
@@ -509,7 +507,7 @@ export class SecrecyMailClient {
509
507
 
510
508
  return {
511
509
  __typename: "SuccessResponse",
512
- data: (_deleteDraftMail$dele = deleteDraftMail.deleteDraftMail) != null ? _deleteDraftMail$dele : false
510
+ data: deleteDraftMail.deleteDraftMail ?? false
513
511
  };
514
512
  }
515
513
 
@@ -815,7 +813,7 @@ export class SecrecyMailClient {
815
813
  file = filesCache.get(f.id);
816
814
 
817
815
  if (!file) {
818
- throw new Error("File " + f.name + " (" + f.id + ") does not exists");
816
+ throw new Error(`File ${f.name} (${f.id}) does not exists`);
819
817
  }
820
818
  }
821
819
 
@@ -1186,4 +1184,4 @@ export class SecrecyMailClient {
1186
1184
  }
1187
1185
 
1188
1186
  }
1189
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZW5lcmF0ZSIsImZpbGVzQ2FjaGUiLCJ1c2Vyc0NhY2hlIiwiZW5jcnlwdENyeXB0b0JveCIsInNvZGl1bSIsImNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsIiwibWFpbFNlbGVjdG9yIiwiU2VjcmVjeU1haWxDbGllbnQiLCJjb25zdHJ1Y3RvciIsImNsaWVudCIsImtleXMiLCJ0aHVuZGVyIiwiX2VhY2hVc2VyIiwiZmlsZXMiLCJzdWJqZWN0IiwiYm9keSIsImlkT3JNYWlsIiwidSIsImdldCIsInJlcSIsInVzZXIiLCJ1c2VySWQiLCJ3aXRoUHVibGljS2V5IiwiX190eXBlbmFtZSIsImRhdGEiLCJFcnJvciIsInJlY2lwaWVudHNGaWxlcyIsIkFycmF5IiwiZiIsImZpbGVJbkhpc3RvcnkiLCJpZCIsImNsb3VkIiwiZmlsZSIsIm5hbWUiLCJrZXkiLCJwdXNoIiwidG9faGV4IiwiZnJvbV9zdHJpbmciLCJwdWJsaWNLZXkiLCJwcml2YXRlS2V5IiwiZmlsZUtleSIsImZyb21faGV4IiwicmVjaXBpZW50SWQiLCJtYWlsIiwic2NhbGFycyIsIkRhdGVUaW1lIiwiZGVjb2RlIiwiZSIsIkRhdGUiLCJlbmNvZGUiLCJ0b0lTT1N0cmluZyIsIm1lc3NhZ2UiLCJyZXN1bHQiLCJyZWNvdmVyIiwibWFpbElkIiwicmVjb3Zlck1haWwiLCJkZWxldGVkTWFpbHMiLCJtYWlsVHlwZSIsIm1haWxzIiwibSIsImNyZWF0ZSIsImN1c3RvbU1lc3NhZ2UiLCJjcmVhdGVEcmFmdCIsInNlbmREcmFmdCIsIm1haWxJbnRlZ3JpdHlJZCIsIndhaXRpbmdSZWNlaXZlZE1haWxzIiwiZGF0ZSIsImF0dGFjaG1lbnRzQ291bnQiLCJzZW5kZXIiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsImVtYWlsIiwicmVjaXBpZW50cyIsInRlbXBvcmFyeVJlY2lwaWVudHMiLCJtYXAiLCJ1cGRhdGVEcmFmdCIsImRyYWZ0SWQiLCJyZWNpcGllbnRzSWRzIiwicmVwbHlUbyIsImRyYWZ0cyIsImRyYWZ0TWFpbHMiLCJkcmFmdCIsImZpbmQiLCJkIiwiaGFzaEtleSIsImhhc2giLCJyYW5kb21ieXRlc19idWYiLCJjcnlwdG9fZ2VuZXJpY2hhc2hfS0VZQllURVMiLCJjcnlwdG9fZ2VuZXJpY2hhc2giLCJjcnlwdG9fZ2VuZXJpY2hhc2hfQllURVMiLCJKU09OIiwic3RyaW5naWZ5Iiwic2VuZGVyRmlsZXMiLCJ1cGRhdGVEcmFmdE1haWwiLCJKc29uIiwicGFyc2UiLCJCaWdJbnQiLCJ0b1N0cmluZyIsImRlbGV0ZURyYWZ0IiwiZGVsZXRlRHJhZnRNYWlsIiwiZGVsZXRlVHJhc2giLCJpZHMiLCJkZWxldGVNYWlsVHJhc2giLCJlbXB0eVRyYXNoIiwiZW1wdHlNYWlsVHJhc2giLCJkZWxldGUiLCJkZWxldGVNYWlsIiwiaW5wdXQiLCJzZW5kRHJhZnRNYWlsIiwiZHJhZnRNYWlsSWQiLCJzZW5kV2FpdGluZ0VtYWlscyIsInNlbnRNYWlscyIsImZpbHRlcmVkIiwiZmlsdGVyIiwibGVuZ3RoIiwic2VuZE9uZU1haWwiLCJyZWNpcGllbnQiLCJyZWNvdmVyTm9kZSIsImNyZWF0ZURyYWZ0TWFpbCIsInJlYWQiLCJyZWFkTWFpbCIsInVucmVhZCIsInVucmVhZE1haWwiLCJyZWNlaXZlZE1haWxzIiwidW5yZWFkUmVjZWl2ZWRNYWlsc0NvdW50IiwiY291bnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L1NlY3JlY3lNYWlsQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2hvcnRpZFwiO1xuaW1wb3J0IHsgZmlsZXNDYWNoZSwgdXNlcnNDYWNoZSB9IGZyb20gXCIuLi9jYWNoZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBFcnJvckFjY2Vzc0RlbmllZCwgRXJyb3JCYXNpYywgRXJyb3JOb3RGb3VuZCB9IGZyb20gXCIuLi9lcnJvci5qc1wiO1xuaW1wb3J0IHR5cGUge1xuICBTdWNjZXNzUmVzcG9uc2UsXG4gIEtleVBhaXIsXG4gIE5ld01haWwsXG4gIFNlY3JlY3lDbGllbnRcbn0gZnJvbSBcIi4uL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBlbmNyeXB0Q3J5cHRvQm94LCBzb2RpdW0gfSBmcm9tIFwiLi4vaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgTWFpbFR5cGUsIFRodW5kZXIgfSBmcm9tIFwiLi4vemV1cy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwgfSBmcm9tIFwiLi9jb252ZXJ0L21haWwuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRHJhZnRNYWlsLFxuICBNYWlsLFxuICBNYWlsRmlsZUlucHV0LFxuICBNYWlsUmVjaXBpZW50SW5wdXQsXG4gIFJlY2VpdmVkTWFpbCxcbiAgU2VudE1haWwsXG4gIFdhaXRpbmdSZWNlaXZlZE1haWxcbn0gZnJvbSBcIi4vdHlwZXMvaW5kZXguanNcIjtcbmltcG9ydCB7IG1haWxTZWxlY3RvciB9IGZyb20gXCIuL3R5cGVzL3NlbGVjdG9ycy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgU2VjcmVjeU1haWxDbGllbnQge1xuICAjY2xpZW50OiBTZWNyZWN5Q2xpZW50O1xuXG4gICNrZXlzOiBLZXlQYWlyO1xuXG4gICN0aHVuZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjbGllbnQ6IFNlY3JlY3lDbGllbnQsXG4gICAga2V5czogS2V5UGFpcixcbiAgICB0aHVuZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPlxuICApIHtcbiAgICB0aGlzLiNjbGllbnQgPSBjbGllbnQ7XG4gICAgdGhpcy4ja2V5cyA9IGtleXM7XG4gICAgdGhpcy4jdGh1bmRlciA9IHRodW5kZXI7XG4gIH1cblxuICBhc3luYyBnZXQoe1xuICAgIGlkXG4gIH06IHtcbiAgICBpZDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8TWFpbD4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IG1haWwgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiLCB7XG4gICAgICBzY2FsYXJzOiB7XG4gICAgICAgIERhdGVUaW1lOiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gbmV3IERhdGUoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIERhdGUpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIG1haWw6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFF1ZXJ5TWFpbFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtYWlsOiBtYWlsU2VsZWN0b3JcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghbWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gbWFpbDtcbiAgICB9XG5cbiAgICBpZiAoIW1haWwubWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobWFpbC5tYWlsLCB0aGlzLiNrZXlzKTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZWNvdmVyKHtcbiAgICBtYWlsSWRcbiAgfToge1xuICAgIG1haWxJZDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IEVycm9yQmFzaWMgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgcmVjb3Zlck1haWwgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiKSh7XG4gICAgICByZWNvdmVyTWFpbDogW1xuICAgICAgICB7IG1haWxJZCB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFJlY292ZXJNYWlsUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHJlY292ZXJNYWlsOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlY292ZXJNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocmVjb3Zlck1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gcmVjb3Zlck1haWw7XG4gICAgfVxuXG4gICAgaWYgKHJlY292ZXJNYWlsLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JCYXNpY1wiKSB7XG4gICAgICByZXR1cm4gcmVjb3Zlck1haWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiByZWNvdmVyTWFpbC5yZWNvdmVyTWFpbFxuICAgIH07XG4gIH1cblxuICBhc3luYyBkZWxldGVkTWFpbHMoe1xuICAgIG1haWxUeXBlXG4gIH06IHtcbiAgICBtYWlsVHlwZTogTWFpbFR5cGU7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxNYWlsW10+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsPiB7XG4gICAgY29uc3QgeyBkZWxldGVkTWFpbHMgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiLCB7XG4gICAgICBzY2FsYXJzOiB7XG4gICAgICAgIERhdGVUaW1lOiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gbmV3IERhdGUoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIERhdGUpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIGRlbGV0ZWRNYWlsczogW1xuICAgICAgICB7IG1haWxUeXBlIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERlbGV0ZWRNYWlsc1Jlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBkZWxldGVkTWFpbHM6IG1haWxTZWxlY3RvclxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkZWxldGVkTWFpbHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkZWxldGVkTWFpbHMuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZGVsZXRlZE1haWxzO1xuICAgIH1cblxuICAgIGNvbnN0IG1haWxzID0gbmV3IEFycmF5PE1haWw+KCk7XG5cbiAgICBmb3IgKGNvbnN0IG0gb2YgZGVsZXRlZE1haWxzLmRlbGV0ZWRNYWlscykge1xuICAgICAgY29uc3QgbWFpbCA9IGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKG0sIHRoaXMuI2tleXMpO1xuICAgICAgaWYgKG1haWwpIHtcbiAgICAgICAgbWFpbHMucHVzaChtYWlsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IG1haWxzXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZShcbiAgICBkYXRhOiBOZXdNYWlsLFxuICAgIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPGJvb2xlYW4+IHwgRXJyb3JCYXNpYyB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IG1haWwgPSBhd2FpdCB0aGlzLmNyZWF0ZURyYWZ0KGRhdGEpO1xuICAgIGlmICghbWFpbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgICAgZGF0YTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKG1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckJhc2ljXCIpIHtcbiAgICAgIHJldHVybiBtYWlsO1xuICAgIH1cblxuICAgIGlmIChtYWlsLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIG1haWw7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZW5kRHJhZnQoXG4gICAgICBtYWlsLmRhdGEubWFpbEludGVncml0eUlkLFxuICAgICAgY3VzdG9tTWVzc2FnZVxuICAgICk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdC5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHJlc3VsdC5kYXRhXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHdhaXRpbmdSZWNlaXZlZE1haWxzKCk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPFdhaXRpbmdSZWNlaXZlZE1haWxbXT4gfCBFcnJvck5vdEZvdW5kIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiKSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFVzZXJSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgICB3YWl0aW5nUmVjZWl2ZWRNYWlsczoge1xuICAgICAgICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgYXR0YWNobWVudHNDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZW5kZXI6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHB1YmxpY0tleTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVjaXBpZW50czoge1xuICAgICAgICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgcHVibGljS2V5OiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0ZW1wb3JhcnlSZWNpcGllbnRzOiB7XG4gICAgICAgICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodXNlci5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfVxuXG4gICAgaWYgKCF1c2VyLnVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHVzZXIudXNlci53YWl0aW5nUmVjZWl2ZWRNYWlscy5tYXAobSA9PiAoe1xuICAgICAgaWQ6IGdlbmVyYXRlKCksXG4gICAgICAuLi5tLFxuICAgICAgZGF0ZTogbmV3IERhdGUobS5kYXRlIGFzIHN0cmluZylcbiAgICB9KSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH07XG4gIH1cblxuICBhc3luYyB1cGRhdGVEcmFmdChcbiAgICBkcmFmdElkOiBzdHJpbmcsXG4gICAgeyBib2R5LCBzdWJqZWN0LCBmaWxlcywgcmVjaXBpZW50c0lkcywgcmVwbHlUbyB9OiBQYXJ0aWFsPE5ld01haWw+XG4gICk6IFByb21pc2U8XG4gICAgfCBTdWNjZXNzUmVzcG9uc2U8RHJhZnRNYWlsPlxuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgRXJyb3JBY2Nlc3NEZW5pZWRcbiAgICB8IEVycm9yQmFzaWNcbiAgICB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgZHJhZnRzID0gYXdhaXQgdGhpcy5kcmFmdE1haWxzKCk7XG4gICAgaWYgKCFkcmFmdHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkcmFmdHMuX190eXBlbmFtZSAhPT0gXCJTdWNjZXNzUmVzcG9uc2VcIikge1xuICAgICAgcmV0dXJuIGRyYWZ0cztcbiAgICB9XG4gICAgY29uc3QgZHJhZnQgPSBkcmFmdHMuZGF0YS5maW5kKGQgPT4gZC5tYWlsSW50ZWdyaXR5SWQgPT09IGRyYWZ0SWQpO1xuICAgIGlmICghZHJhZnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkcmFmdCAke2RyYWZ0SWR9YCk7XG4gICAgfVxuICAgIGxldCBoYXNoS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgaGFzaDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKGJvZHkgfHwgc3ViamVjdCkge1xuICAgICAgaGFzaEtleSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoXG4gICAgICAgIHNvZGl1bS5jcnlwdG9fZ2VuZXJpY2hhc2hfS0VZQllURVMsXG4gICAgICAgIFwiaGV4XCJcbiAgICAgICk7XG4gICAgICBoYXNoID0gc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaChcbiAgICAgICAgc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaF9CWVRFUyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBib2R5LCBzdWJqZWN0IH0pLFxuICAgICAgICBoYXNoS2V5LFxuICAgICAgICBcImhleFwiXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBzZW5kZXJGaWxlcyA9IG5ldyBBcnJheTxNYWlsRmlsZUlucHV0PigpO1xuICAgIGlmIChmaWxlcykge1xuICAgICAgZm9yIChjb25zdCBmIG9mIGZpbGVzKSB7XG4gICAgICAgIGxldCBmaWxlID0gZmlsZXNDYWNoZS5nZXQoZi5pZCk7XG4gICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuI2NsaWVudC5jbG91ZC5maWxlKHsgaWQ6IGYuaWQgfSk7XG4gICAgICAgICAgZmlsZSA9IGZpbGVzQ2FjaGUuZ2V0KGYuaWQpO1xuICAgICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlICR7Zi5uYW1lfSAoJHtmLmlkfSkgZG9lcyBub3QgZXhpc3RzYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNlbmRlckZpbGVzLnB1c2goe1xuICAgICAgICAgIGlkOiBmaWxlLmlkLFxuICAgICAgICAgIGZpbGVLZXk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoZmlsZS5rZXkpLFxuICAgICAgICAgICAgICB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuYW1lOiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKGYubmFtZSksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgdXBkYXRlRHJhZnRNYWlsIH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIiwge1xuICAgICAgc2NhbGFyczoge1xuICAgICAgICBKc29uOiB7XG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gSlNPTi5zdHJpbmdpZnkoZSksXG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gSlNPTi5wYXJzZShlIGFzIHN0cmluZylcbiAgICAgICAgfSxcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9LFxuICAgICAgICBCaWdJbnQ6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBCaWdJbnQoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIGJpZ2ludCkudG9TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgdXBkYXRlRHJhZnRNYWlsOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBkcmFmdElkLFxuICAgICAgICAgIHJlY2lwaWVudHM6IHJlY2lwaWVudHNJZHMsXG4gICAgICAgICAgcmVwbHlUbyxcbiAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICA/IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhib2R5KSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgc3ViamVjdDogc3ViamVjdFxuICAgICAgICAgICAgPyBzb2RpdW0udG9faGV4KFxuICAgICAgICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoc3ViamVjdCksXG4gICAgICAgICAgICAgICAgICB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIHNlbmRlckZpbGVzLFxuICAgICAgICAgIGhhc2gsXG4gICAgICAgICAgaGFzaEtleVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFVwZGF0ZURyYWZ0TWFpbFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICB1cGRhdGVEcmFmdE1haWw6IG1haWxTZWxlY3RvclxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1cGRhdGVEcmFmdE1haWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1cGRhdGVEcmFmdE1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gdXBkYXRlRHJhZnRNYWlsO1xuICAgIH1cblxuICAgIGlmICh1cGRhdGVEcmFmdE1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckJhc2ljXCIpIHtcbiAgICAgIHJldHVybiB1cGRhdGVEcmFmdE1haWw7XG4gICAgfVxuXG4gICAgaWYgKCF1cGRhdGVEcmFmdE1haWwudXBkYXRlRHJhZnRNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0SW50ZXJuYWxNYWlsVG9FeHRlcm5hbChcbiAgICAgIHVwZGF0ZURyYWZ0TWFpbC51cGRhdGVEcmFmdE1haWwsXG4gICAgICB0aGlzLiNrZXlzXG4gICAgKSBhcyBEcmFmdE1haWw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH07XG4gIH1cblxuICBhc3luYyBkZWxldGVEcmFmdChcbiAgICBkcmFmdElkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGRlbGV0ZURyYWZ0TWFpbCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZURyYWZ0TWFpbDogW1xuICAgICAgICB7XG4gICAgICAgICAgZHJhZnRJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBEZWxldGVEcmFmdE1haWxSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlRHJhZnRNYWlsOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRlbGV0ZURyYWZ0TWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRlbGV0ZURyYWZ0TWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkZWxldGVEcmFmdE1haWw7XG4gICAgfVxuXG4gICAgaWYgKCFkZWxldGVEcmFmdE1haWwuZGVsZXRlRHJhZnRNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRlbGV0ZURyYWZ0TWFpbC5kZWxldGVEcmFmdE1haWwgPz8gZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlVHJhc2goe1xuICAgIGlkc1xuICB9OiB7XG4gICAgaWRzOiBBcnJheTxzdHJpbmc+O1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGRlbGV0ZU1haWxUcmFzaCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZU1haWxUcmFzaDogW1xuICAgICAgICB7XG4gICAgICAgICAgaWRzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERlbGV0ZU1haWxUcmFzaFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBkZWxldGVNYWlsVHJhc2g6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGVsZXRlTWFpbFRyYXNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGVsZXRlTWFpbFRyYXNoLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRlbGV0ZU1haWxUcmFzaDtcbiAgICB9XG5cbiAgICBpZiAoIWRlbGV0ZU1haWxUcmFzaC5kZWxldGVNYWlsVHJhc2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGVsZXRlTWFpbFRyYXNoLmRlbGV0ZU1haWxUcmFzaFxuICAgIH07XG4gIH1cblxuICBhc3luYyBlbXB0eVRyYXNoKCk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPGJvb2xlYW4+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZW1wdHlNYWlsVHJhc2ggfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiKSh7XG4gICAgICBlbXB0eU1haWxUcmFzaDoge1xuICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCIuLi5vbiBFbXB0eU1haWxUcmFzaFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIGVtcHR5TWFpbFRyYXNoOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghZW1wdHlNYWlsVHJhc2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChlbXB0eU1haWxUcmFzaC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBlbXB0eU1haWxUcmFzaDtcbiAgICB9XG5cbiAgICBpZiAoIWVtcHR5TWFpbFRyYXNoLmVtcHR5TWFpbFRyYXNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGVtcHR5TWFpbFRyYXNoLmVtcHR5TWFpbFRyYXNoXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZSh7XG4gICAgbWFpbElkXG4gIH06IHtcbiAgICBtYWlsSWQ6IHN0cmluZztcbiAgfSk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPGJvb2xlYW4+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsPiB7XG4gICAgY29uc3QgeyBkZWxldGVNYWlsIH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIikoe1xuICAgICAgZGVsZXRlTWFpbDogW1xuICAgICAgICB7XG4gICAgICAgICAgbWFpbElkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERlbGV0ZU1haWxSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlTWFpbDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkZWxldGVNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGVsZXRlTWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkZWxldGVNYWlsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGVsZXRlTWFpbC5kZWxldGVNYWlsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHNlbmREcmFmdChcbiAgICBkcmFmdElkOiBzdHJpbmcsXG4gICAgY3VzdG9tTWVzc2FnZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IEVycm9yQmFzaWMgfCBudWxsPiB7XG4gICAgY29uc3QgZHJhZnRzID0gYXdhaXQgdGhpcy5kcmFmdE1haWxzKCk7XG5cbiAgICBpZiAoIWRyYWZ0cykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgICAgZGF0YTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChkcmFmdHMuX190eXBlbmFtZSAhPT0gXCJTdWNjZXNzUmVzcG9uc2VcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgICAgZGF0YTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZHJhZnQgPSBkcmFmdHMuZGF0YS5maW5kKGQgPT4gZC5tYWlsSW50ZWdyaXR5SWQgPT09IGRyYWZ0SWQpO1xuICAgIGlmICghZHJhZnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICAgIGRhdGE6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCByZWNpcGllbnRzID0gbmV3IEFycmF5PE1haWxSZWNpcGllbnRJbnB1dD4oKTtcblxuICAgIGNvbnN0IHRlbXBvcmFyeVJlY2lwaWVudHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgZm9yIChjb25zdCB7IGVtYWlsIH0gb2YgZHJhZnQudGVtcG9yYXJ5UmVjaXBpZW50cykge1xuICAgICAgaWYgKCFlbWFpbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5fZWFjaFVzZXIoXG4gICAgICAgIGRyYWZ0LmZpbGVzLFxuICAgICAgICBkcmFmdC5zdWJqZWN0LFxuICAgICAgICBkcmFmdC5ib2R5LFxuICAgICAgICBlbWFpbFxuICAgICAgKTtcblxuICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICB0ZW1wb3JhcnlSZWNpcGllbnRzLnB1c2goZW1haWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVjaXBpZW50cy5wdXNoKGlucHV0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHsgaWQgfSBvZiBkcmFmdC5yZWNpcGllbnRzKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuX2VhY2hVc2VyKFxuICAgICAgICBkcmFmdC5maWxlcyxcbiAgICAgICAgZHJhZnQuc3ViamVjdCxcbiAgICAgICAgZHJhZnQuYm9keSxcbiAgICAgICAgaWRcbiAgICAgICk7XG5cbiAgICAgIGlmICghaW5wdXQpIHtcbiAgICAgICAgdGVtcG9yYXJ5UmVjaXBpZW50cy5wdXNoKGlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlY2lwaWVudHMucHVzaChpbnB1dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeyBzZW5kRHJhZnRNYWlsIH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIikoe1xuICAgICAgc2VuZERyYWZ0TWFpbDogW1xuICAgICAgICB7XG4gICAgICAgICAgdGVtcG9yYXJ5UmVjaXBpZW50cyxcbiAgICAgICAgICByZWNpcGllbnRzLFxuICAgICAgICAgIGRyYWZ0TWFpbElkOiBkcmFmdC5tYWlsSW50ZWdyaXR5SWQsXG4gICAgICAgICAgY3VzdG9tTWVzc2FnZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFNlbmREcmFmdE1haWxSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgc2VuZERyYWZ0TWFpbDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFzZW5kRHJhZnRNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoc2VuZERyYWZ0TWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBzZW5kRHJhZnRNYWlsO1xuICAgIH1cblxuICAgIGlmIChzZW5kRHJhZnRNYWlsLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JCYXNpY1wiKSB7XG4gICAgICByZXR1cm4gc2VuZERyYWZ0TWFpbDtcbiAgICB9XG5cbiAgICBpZiAoIXNlbmREcmFmdE1haWwuc2VuZERyYWZ0TWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBzZW5kRHJhZnRNYWlsLnNlbmREcmFmdE1haWxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc2VuZFdhaXRpbmdFbWFpbHMoKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IEVycm9yQmFzaWMgfCBudWxsXG4gID4ge1xuICAgIC8vIFRPRE8gb3B0aSB0aGlzXG4gICAgY29uc3QgbWFpbHMgPSBhd2FpdCB0aGlzLnNlbnRNYWlscygpO1xuXG4gICAgaWYgKCFtYWlscykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgICAgZGF0YTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChtYWlscy5fX3R5cGVuYW1lICE9PSBcIlN1Y2Nlc3NSZXNwb25zZVwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgICBkYXRhOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyZWQgPSBtYWlscy5kYXRhLmZpbHRlcihtID0+IG0udGVtcG9yYXJ5UmVjaXBpZW50cy5sZW5ndGggPiAwKTtcblxuICAgIGZvciAoY29uc3QgbWFpbCBvZiBmaWx0ZXJlZCkge1xuICAgICAgZm9yIChjb25zdCB7IGVtYWlsIH0gb2YgbWFpbC50ZW1wb3JhcnlSZWNpcGllbnRzKSB7XG4gICAgICAgIGlmICghZW1haWwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5fZWFjaFVzZXIoXG4gICAgICAgICAgICBtYWlsLmZpbGVzLFxuICAgICAgICAgICAgbWFpbC5zdWJqZWN0LFxuICAgICAgICAgICAgbWFpbC5ib2R5LFxuICAgICAgICAgICAgZW1haWxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiKSh7XG4gICAgICAgICAgICBzZW5kT25lTWFpbDogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWFpbEludGVncml0eUlkOiBtYWlsLm1haWxJbnRlZ3JpdHlJZCxcbiAgICAgICAgICAgICAgICByZWNpcGllbnQ6IGlucHV0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcIi4uLm9uIEVycm9yQmFzaWNcIjoge1xuICAgICAgICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiLi4ub24gUmVjb3Zlck5vZGVSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgcmVjb3Zlck5vZGU6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBhc3luYyBjcmVhdGVEcmFmdCh7XG4gICAgYm9keSxcbiAgICBzdWJqZWN0LFxuICAgIGZpbGVzLFxuICAgIHJlY2lwaWVudHNJZHMsXG4gICAgcmVwbHlUb1xuICB9OiBOZXdNYWlsKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8RHJhZnRNYWlsPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgRXJyb3JCYXNpYyB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgaGFzaEtleSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoXG4gICAgICBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoX0tFWUJZVEVTLFxuICAgICAgXCJoZXhcIlxuICAgICk7XG4gICAgY29uc3QgaGFzaCA9IHNvZGl1bS5jcnlwdG9fZ2VuZXJpY2hhc2goXG4gICAgICBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoX0JZVEVTLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoeyBib2R5LCBzdWJqZWN0IH0pLFxuICAgICAgaGFzaEtleSxcbiAgICAgIFwiaGV4XCJcbiAgICApO1xuICAgIGNvbnN0IHNlbmRlckZpbGVzID0gbmV3IEFycmF5PE1haWxGaWxlSW5wdXQ+KCk7XG4gICAgZm9yIChjb25zdCBmIG9mIGZpbGVzKSB7XG4gICAgICBsZXQgZmlsZSA9IGZpbGVzQ2FjaGUuZ2V0KGYuaWQpO1xuICAgICAgaWYgKCFmaWxlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuI2NsaWVudC5jbG91ZC5maWxlKHsgaWQ6IGYuaWQgfSk7XG4gICAgICAgIGZpbGUgPSBmaWxlc0NhY2hlLmdldChmLmlkKTtcbiAgICAgICAgaWYgKCFmaWxlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlICR7Zi5uYW1lfSAoJHtmLmlkfSkgZG9lcyBub3QgZXhpc3RzYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNlbmRlckZpbGVzLnB1c2goe1xuICAgICAgICBpZDogZmlsZS5pZCxcbiAgICAgICAgZmlsZUtleTogc29kaXVtLnRvX2hleChcbiAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKGZpbGUua2V5KSxcbiAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBuYW1lOiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoZi5uYW1lKSxcbiAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNyZWF0ZURyYWZ0TWFpbCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcIm11dGF0aW9uXCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgY3JlYXRlRHJhZnRNYWlsOiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZWNpcGllbnRzOiByZWNpcGllbnRzSWRzLFxuICAgICAgICAgIHJlcGx5VG8sXG4gICAgICAgICAgYm9keTogc29kaXVtLnRvX2hleChcbiAgICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhib2R5KSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgICAgc3ViamVjdDogc29kaXVtLnRvX2hleChcbiAgICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhzdWJqZWN0KSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgICAgc2VuZGVyRmlsZXMsXG4gICAgICAgICAgaGFzaCxcbiAgICAgICAgICBoYXNoS2V5XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQmFzaWNcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gQ3JlYXRlRHJhZnRNYWlsUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGNyZWF0ZURyYWZ0TWFpbDogbWFpbFNlbGVjdG9yXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWNyZWF0ZURyYWZ0TWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZURyYWZ0TWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBjcmVhdGVEcmFmdE1haWw7XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZURyYWZ0TWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIGNyZWF0ZURyYWZ0TWFpbDtcbiAgICB9XG5cbiAgICBpZiAoIWNyZWF0ZURyYWZ0TWFpbC5jcmVhdGVEcmFmdE1haWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKFxuICAgICAgY3JlYXRlRHJhZnRNYWlsLmNyZWF0ZURyYWZ0TWFpbCxcbiAgICAgIHRoaXMuI2tleXNcbiAgICApIGFzIERyYWZ0TWFpbDtcblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogcmVzdWx0XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHJlYWQoe1xuICAgIG1haWxJZFxuICB9OiB7XG4gICAgbWFpbElkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFxuICAgIHwgU3VjY2Vzc1Jlc3BvbnNlPGJvb2xlYW4+XG4gICAgfCBFcnJvckFjY2Vzc0RlbmllZFxuICAgIHwgRXJyb3JCYXNpY1xuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHJlYWRNYWlsIH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIikoe1xuICAgICAgcmVhZE1haWw6IFtcbiAgICAgICAgeyBtYWlsSWQgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JCYXNpY1wiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFJlYWRNYWlsUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHJlYWRNYWlsOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlYWRNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocmVhZE1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gcmVhZE1haWw7XG4gICAgfVxuXG4gICAgaWYgKHJlYWRNYWlsLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JCYXNpY1wiKSB7XG4gICAgICByZXR1cm4gcmVhZE1haWw7XG4gICAgfVxuXG4gICAgaWYgKHJlYWRNYWlsLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gcmVhZE1haWw7XG4gICAgfVxuXG4gICAgaWYgKCFyZWFkTWFpbC5yZWFkTWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiByZWFkTWFpbC5yZWFkTWFpbFxuICAgIH07XG4gIH1cblxuICBhc3luYyB1bnJlYWQoe1xuICAgIG1haWxJZFxuICB9OiB7XG4gICAgbWFpbElkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFxuICAgIHwgU3VjY2Vzc1Jlc3BvbnNlPGJvb2xlYW4+XG4gICAgfCBFcnJvckFjY2Vzc0RlbmllZFxuICAgIHwgRXJyb3JCYXNpY1xuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHVucmVhZE1haWwgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiKSh7XG4gICAgICB1bnJlYWRNYWlsOiBbXG4gICAgICAgIHsgbWFpbElkIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQmFzaWNcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBVbnJlYWRNYWlsUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHVucmVhZE1haWw6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdW5yZWFkTWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVucmVhZE1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gdW5yZWFkTWFpbDtcbiAgICB9XG5cbiAgICBpZiAodW5yZWFkTWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIHVucmVhZE1haWw7XG4gICAgfVxuXG4gICAgaWYgKHVucmVhZE1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiB1bnJlYWRNYWlsO1xuICAgIH1cblxuICAgIGlmICghdW5yZWFkTWFpbC51bnJlYWRNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHVucmVhZE1haWwudW5yZWFkTWFpbFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZWNlaXZlZE1haWxzKCk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPFJlY2VpdmVkTWFpbFtdPiB8IEVycm9yTm90Rm91bmQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBVc2VyUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgICAgcmVjZWl2ZWRNYWlsczogbWFpbFNlbGVjdG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1c2VyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gdXNlcjtcbiAgICB9XG5cbiAgICBpZiAoIXVzZXIudXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBnZXQgYWN0dWFsIG1haWxzIG9uIHRoaXMgYXBwIG9ubHlcblxuICAgIGNvbnN0IHJlY2VpdmVkTWFpbHMgPSBuZXcgQXJyYXk8UmVjZWl2ZWRNYWlsPigpO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIHVzZXIudXNlci5yZWNlaXZlZE1haWxzKSB7XG4gICAgICBjb25zdCBtYWlsID0gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobSwgdGhpcy4ja2V5cyk7XG4gICAgICBpZiAobWFpbCkge1xuICAgICAgICByZWNlaXZlZE1haWxzLnB1c2gobWFpbCBhcyBSZWNlaXZlZE1haWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogcmVjZWl2ZWRNYWlsc1xuICAgIH07XG4gIH1cblxuICBhc3luYyBzZW50TWFpbHMoKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8U2VudE1haWxbXT4gfCBFcnJvck5vdEZvdW5kIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiLCB7XG4gICAgICBzY2FsYXJzOiB7XG4gICAgICAgIERhdGVUaW1lOiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gbmV3IERhdGUoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIERhdGUpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gVXNlclJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgICAgIHNlbnRNYWlsczogbWFpbFNlbGVjdG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1c2VyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gdXNlcjtcbiAgICB9XG5cbiAgICBpZiAoIXVzZXIudXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBnZXQgYWN0dWFsIG1haWxzIG9uIHRoaXMgYXBwIG9ubHlcblxuICAgIGNvbnN0IHNlbnRNYWlscyA9IG5ldyBBcnJheTxTZW50TWFpbD4oKTtcblxuICAgIGZvciAoY29uc3QgbSBvZiB1c2VyLnVzZXIuc2VudE1haWxzKSB7XG4gICAgICBjb25zdCBtYWlsID0gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobSwgdGhpcy4ja2V5cyk7XG4gICAgICBpZiAobWFpbCkge1xuICAgICAgICBzZW50TWFpbHMucHVzaChtYWlsIGFzIFNlbnRNYWlsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHNlbnRNYWlsc1xuICAgIH07XG4gIH1cblxuICBhc3luYyBkcmFmdE1haWxzKCk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPERyYWZ0TWFpbFtdPiB8IEVycm9yTm90Rm91bmQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBVc2VyUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgICAgZHJhZnRNYWlsczogbWFpbFNlbGVjdG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1c2VyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gdXNlcjtcbiAgICB9XG5cbiAgICBpZiAoIXVzZXIudXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBnZXQgYWN0dWFsIG1haWxzIG9uIHRoaXMgYXBwIG9ubHlcblxuICAgIGNvbnN0IGRyYWZ0TWFpbHMgPSBuZXcgQXJyYXk8RHJhZnRNYWlsPigpO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIHVzZXIudXNlci5kcmFmdE1haWxzKSB7XG4gICAgICBjb25zdCBkcmFmdCA9IGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKG0sIHRoaXMuI2tleXMpIGFzIERyYWZ0TWFpbDtcbiAgICAgIGlmIChkcmFmdCkge1xuICAgICAgICBkcmFmdE1haWxzLnB1c2goZHJhZnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZHJhZnRNYWlsc1xuICAgIH07XG4gIH1cblxuICBhc3luYyB1bnJlYWRSZWNlaXZlZE1haWxzQ291bnQoKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8bnVtYmVyPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHVucmVhZFJlY2VpdmVkTWFpbHNDb3VudCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIpKHtcbiAgICAgIHVucmVhZFJlY2VpdmVkTWFpbHNDb3VudDoge1xuICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCIuLi5vbiBVbnJlYWRSZWNlaXZlZE1haWxzQ291bnRSZXNwb25zZVwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBjb3VudDogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIXVucmVhZFJlY2VpdmVkTWFpbHNDb3VudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVucmVhZFJlY2VpdmVkTWFpbHNDb3VudC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiB1bnJlYWRSZWNlaXZlZE1haWxzQ291bnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiB1bnJlYWRSZWNlaXZlZE1haWxzQ291bnQuY291bnRcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfZWFjaFVzZXIgPSBhc3luYyAoXG4gICAgZmlsZXM6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH1bXSxcbiAgICBzdWJqZWN0OiBzdHJpbmcsXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGlkT3JNYWlsOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxNYWlsUmVjaXBpZW50SW5wdXQgfCBudWxsPiA9PiB7XG4gICAgbGV0IHUgPSB1c2Vyc0NhY2hlLmdldChpZE9yTWFpbCk7XG5cbiAgICBpZiAoIXUgfHwgIShcInB1YmxpY0tleVwiIGluIHUpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXEgPSBhd2FpdCB0aGlzLiNjbGllbnQudXNlcih7XG4gICAgICAgICAgdXNlcklkOiBpZE9yTWFpbCxcbiAgICAgICAgICB3aXRoUHVibGljS2V5OiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXJlcSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXEuX190eXBlbmFtZSAhPT0gXCJTdWNjZXNzUmVzcG9uc2VcIikge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHUgPSByZXEuZGF0YTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKCF1KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghKFwicHVibGljS2V5XCIgaW4gdSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVXNlciAke2lkT3JNYWlsfSBoYXZlIG5vIHB1YmxpYyBrZXlgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWNpcGllbnRzRmlsZXMgPSBuZXcgQXJyYXk8TWFpbEZpbGVJbnB1dD4oKTtcblxuICAgIGZvciAoY29uc3QgZiBvZiBmaWxlcykge1xuICAgICAgbGV0IGZpbGVJbkhpc3RvcnkgPSBmaWxlc0NhY2hlLmdldChmLmlkKTtcbiAgICAgIGlmICghZmlsZUluSGlzdG9yeSkge1xuICAgICAgICBhd2FpdCB0aGlzLiNjbGllbnQuY2xvdWQuZmlsZSh7IGlkOiBmLmlkIH0pO1xuICAgICAgICBmaWxlSW5IaXN0b3J5ID0gZmlsZXNDYWNoZS5nZXQoZi5pZCk7XG4gICAgICAgIGlmICghZmlsZUluSGlzdG9yeSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAke2YubmFtZX0gKCR7Zi5pZH0pIGRvZXMgbm90IGV4aXN0c2ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBrZXkgPSBmaWxlSW5IaXN0b3J5LmtleTtcbiAgICAgIHJlY2lwaWVudHNGaWxlcy5wdXNoKHtcbiAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgIG5hbWU6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhmLm5hbWUpLFxuICAgICAgICAgICAgdS5wdWJsaWNLZXksXG4gICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGZpbGVLZXk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgIHNvZGl1bS5mcm9tX2hleChrZXkpLFxuICAgICAgICAgICAgdS5wdWJsaWNLZXksXG4gICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZWNpcGllbnRJZDogdS5pZCxcbiAgICAgIGJvZHk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKGJvZHkpLFxuICAgICAgICAgIHUucHVibGljS2V5LFxuICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgc3ViamVjdDogc29kaXVtLnRvX2hleChcbiAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoc3ViamVjdCksXG4gICAgICAgICAgdS5wdWJsaWNLZXksXG4gICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBmaWxlczogcmVjaXBpZW50c0ZpbGVzXG4gICAgfTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBLFNBQVNBLFFBQVQsUUFBeUIsU0FBekI7QUFDQSxTQUFTQyxVQUFULEVBQXFCQyxVQUFyQixRQUF1QyxhQUF2QztBQVFBLFNBQVNDLGdCQUFULEVBQTJCQyxNQUEzQixR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
1187
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZW5lcmF0ZSIsImZpbGVzQ2FjaGUiLCJ1c2Vyc0NhY2hlIiwiZW5jcnlwdENyeXB0b0JveCIsInNvZGl1bSIsImNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsIiwibWFpbFNlbGVjdG9yIiwiU2VjcmVjeU1haWxDbGllbnQiLCJjb25zdHJ1Y3RvciIsImNsaWVudCIsImtleXMiLCJ0aHVuZGVyIiwiX2VhY2hVc2VyIiwiZmlsZXMiLCJzdWJqZWN0IiwiYm9keSIsImlkT3JNYWlsIiwidSIsImdldCIsInJlcSIsInVzZXIiLCJ1c2VySWQiLCJ3aXRoUHVibGljS2V5IiwiX190eXBlbmFtZSIsImRhdGEiLCJFcnJvciIsInJlY2lwaWVudHNGaWxlcyIsIkFycmF5IiwiZiIsImZpbGVJbkhpc3RvcnkiLCJpZCIsImNsb3VkIiwiZmlsZSIsIm5hbWUiLCJrZXkiLCJwdXNoIiwidG9faGV4IiwiZnJvbV9zdHJpbmciLCJwdWJsaWNLZXkiLCJwcml2YXRlS2V5IiwiZmlsZUtleSIsImZyb21faGV4IiwicmVjaXBpZW50SWQiLCJtYWlsIiwic2NhbGFycyIsIkRhdGVUaW1lIiwiZGVjb2RlIiwiZSIsIkRhdGUiLCJlbmNvZGUiLCJ0b0lTT1N0cmluZyIsIm1lc3NhZ2UiLCJyZXN1bHQiLCJyZWNvdmVyIiwibWFpbElkIiwicmVjb3Zlck1haWwiLCJkZWxldGVkTWFpbHMiLCJtYWlsVHlwZSIsIm1haWxzIiwibSIsImNyZWF0ZSIsImN1c3RvbU1lc3NhZ2UiLCJjcmVhdGVEcmFmdCIsInNlbmREcmFmdCIsIm1haWxJbnRlZ3JpdHlJZCIsIndhaXRpbmdSZWNlaXZlZE1haWxzIiwiZGF0ZSIsImF0dGFjaG1lbnRzQ291bnQiLCJzZW5kZXIiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsImVtYWlsIiwicmVjaXBpZW50cyIsInRlbXBvcmFyeVJlY2lwaWVudHMiLCJtYXAiLCJ1cGRhdGVEcmFmdCIsImRyYWZ0SWQiLCJyZWNpcGllbnRzSWRzIiwicmVwbHlUbyIsImRyYWZ0cyIsImRyYWZ0TWFpbHMiLCJkcmFmdCIsImZpbmQiLCJkIiwiaGFzaEtleSIsImhhc2giLCJyYW5kb21ieXRlc19idWYiLCJjcnlwdG9fZ2VuZXJpY2hhc2hfS0VZQllURVMiLCJjcnlwdG9fZ2VuZXJpY2hhc2giLCJjcnlwdG9fZ2VuZXJpY2hhc2hfQllURVMiLCJKU09OIiwic3RyaW5naWZ5Iiwic2VuZGVyRmlsZXMiLCJ1cGRhdGVEcmFmdE1haWwiLCJKc29uIiwicGFyc2UiLCJCaWdJbnQiLCJ0b1N0cmluZyIsImRlbGV0ZURyYWZ0IiwiZGVsZXRlRHJhZnRNYWlsIiwiZGVsZXRlVHJhc2giLCJpZHMiLCJkZWxldGVNYWlsVHJhc2giLCJlbXB0eVRyYXNoIiwiZW1wdHlNYWlsVHJhc2giLCJkZWxldGUiLCJkZWxldGVNYWlsIiwiaW5wdXQiLCJzZW5kRHJhZnRNYWlsIiwiZHJhZnRNYWlsSWQiLCJzZW5kV2FpdGluZ0VtYWlscyIsInNlbnRNYWlscyIsImZpbHRlcmVkIiwiZmlsdGVyIiwibGVuZ3RoIiwic2VuZE9uZU1haWwiLCJyZWNpcGllbnQiLCJyZWNvdmVyTm9kZSIsImNyZWF0ZURyYWZ0TWFpbCIsInJlYWQiLCJyZWFkTWFpbCIsInVucmVhZCIsInVucmVhZE1haWwiLCJyZWNlaXZlZE1haWxzIiwidW5yZWFkUmVjZWl2ZWRNYWlsc0NvdW50IiwiY291bnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L1NlY3JlY3lNYWlsQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2hvcnRpZFwiO1xuaW1wb3J0IHsgZmlsZXNDYWNoZSwgdXNlcnNDYWNoZSB9IGZyb20gXCIuLi9jYWNoZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBFcnJvckFjY2Vzc0RlbmllZCwgRXJyb3JCYXNpYywgRXJyb3JOb3RGb3VuZCB9IGZyb20gXCIuLi9lcnJvci5qc1wiO1xuaW1wb3J0IHR5cGUge1xuICBTdWNjZXNzUmVzcG9uc2UsXG4gIEtleVBhaXIsXG4gIE5ld01haWwsXG4gIFNlY3JlY3lDbGllbnRcbn0gZnJvbSBcIi4uL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBlbmNyeXB0Q3J5cHRvQm94LCBzb2RpdW0gfSBmcm9tIFwiLi4vaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgTWFpbFR5cGUsIFRodW5kZXIgfSBmcm9tIFwiLi4vemV1cy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwgfSBmcm9tIFwiLi9jb252ZXJ0L21haWwuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRHJhZnRNYWlsLFxuICBNYWlsLFxuICBNYWlsRmlsZUlucHV0LFxuICBNYWlsUmVjaXBpZW50SW5wdXQsXG4gIFJlY2VpdmVkTWFpbCxcbiAgU2VudE1haWwsXG4gIFdhaXRpbmdSZWNlaXZlZE1haWxcbn0gZnJvbSBcIi4vdHlwZXMvaW5kZXguanNcIjtcbmltcG9ydCB7IG1haWxTZWxlY3RvciB9IGZyb20gXCIuL3R5cGVzL3NlbGVjdG9ycy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgU2VjcmVjeU1haWxDbGllbnQge1xuICAjY2xpZW50OiBTZWNyZWN5Q2xpZW50O1xuXG4gICNrZXlzOiBLZXlQYWlyO1xuXG4gICN0aHVuZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjbGllbnQ6IFNlY3JlY3lDbGllbnQsXG4gICAga2V5czogS2V5UGFpcixcbiAgICB0aHVuZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPlxuICApIHtcbiAgICB0aGlzLiNjbGllbnQgPSBjbGllbnQ7XG4gICAgdGhpcy4ja2V5cyA9IGtleXM7XG4gICAgdGhpcy4jdGh1bmRlciA9IHRodW5kZXI7XG4gIH1cblxuICBhc3luYyBnZXQoe1xuICAgIGlkXG4gIH06IHtcbiAgICBpZDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8TWFpbD4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IG1haWwgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiLCB7XG4gICAgICBzY2FsYXJzOiB7XG4gICAgICAgIERhdGVUaW1lOiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gbmV3IERhdGUoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIERhdGUpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIG1haWw6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFF1ZXJ5TWFpbFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtYWlsOiBtYWlsU2VsZWN0b3JcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghbWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gbWFpbDtcbiAgICB9XG5cbiAgICBpZiAoIW1haWwubWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobWFpbC5tYWlsLCB0aGlzLiNrZXlzKTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZWNvdmVyKHtcbiAgICBtYWlsSWRcbiAgfToge1xuICAgIG1haWxJZDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IEVycm9yQmFzaWMgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgcmVjb3Zlck1haWwgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiKSh7XG4gICAgICByZWNvdmVyTWFpbDogW1xuICAgICAgICB7IG1haWxJZCB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFJlY292ZXJNYWlsUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHJlY292ZXJNYWlsOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlY292ZXJNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocmVjb3Zlck1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gcmVjb3Zlck1haWw7XG4gICAgfVxuXG4gICAgaWYgKHJlY292ZXJNYWlsLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JCYXNpY1wiKSB7XG4gICAgICByZXR1cm4gcmVjb3Zlck1haWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiByZWNvdmVyTWFpbC5yZWNvdmVyTWFpbFxuICAgIH07XG4gIH1cblxuICBhc3luYyBkZWxldGVkTWFpbHMoe1xuICAgIG1haWxUeXBlXG4gIH06IHtcbiAgICBtYWlsVHlwZTogTWFpbFR5cGU7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxNYWlsW10+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsPiB7XG4gICAgY29uc3QgeyBkZWxldGVkTWFpbHMgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiLCB7XG4gICAgICBzY2FsYXJzOiB7XG4gICAgICAgIERhdGVUaW1lOiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gbmV3IERhdGUoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIERhdGUpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIGRlbGV0ZWRNYWlsczogW1xuICAgICAgICB7IG1haWxUeXBlIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERlbGV0ZWRNYWlsc1Jlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBkZWxldGVkTWFpbHM6IG1haWxTZWxlY3RvclxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkZWxldGVkTWFpbHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkZWxldGVkTWFpbHMuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZGVsZXRlZE1haWxzO1xuICAgIH1cblxuICAgIGNvbnN0IG1haWxzID0gbmV3IEFycmF5PE1haWw+KCk7XG5cbiAgICBmb3IgKGNvbnN0IG0gb2YgZGVsZXRlZE1haWxzLmRlbGV0ZWRNYWlscykge1xuICAgICAgY29uc3QgbWFpbCA9IGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKG0sIHRoaXMuI2tleXMpO1xuICAgICAgaWYgKG1haWwpIHtcbiAgICAgICAgbWFpbHMucHVzaChtYWlsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IG1haWxzXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZShcbiAgICBkYXRhOiBOZXdNYWlsLFxuICAgIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPGJvb2xlYW4+IHwgRXJyb3JCYXNpYyB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IG1haWwgPSBhd2FpdCB0aGlzLmNyZWF0ZURyYWZ0KGRhdGEpO1xuICAgIGlmICghbWFpbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgICAgZGF0YTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKG1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckJhc2ljXCIpIHtcbiAgICAgIHJldHVybiBtYWlsO1xuICAgIH1cblxuICAgIGlmIChtYWlsLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIG1haWw7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZW5kRHJhZnQoXG4gICAgICBtYWlsLmRhdGEubWFpbEludGVncml0eUlkLFxuICAgICAgY3VzdG9tTWVzc2FnZVxuICAgICk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdC5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHJlc3VsdC5kYXRhXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHdhaXRpbmdSZWNlaXZlZE1haWxzKCk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPFdhaXRpbmdSZWNlaXZlZE1haWxbXT4gfCBFcnJvck5vdEZvdW5kIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiKSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFVzZXJSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgICB3YWl0aW5nUmVjZWl2ZWRNYWlsczoge1xuICAgICAgICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgYXR0YWNobWVudHNDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZW5kZXI6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHB1YmxpY0tleTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVjaXBpZW50czoge1xuICAgICAgICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgcHVibGljS2V5OiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0ZW1wb3JhcnlSZWNpcGllbnRzOiB7XG4gICAgICAgICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodXNlci5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfVxuXG4gICAgaWYgKCF1c2VyLnVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHVzZXIudXNlci53YWl0aW5nUmVjZWl2ZWRNYWlscy5tYXAobSA9PiAoe1xuICAgICAgaWQ6IGdlbmVyYXRlKCksXG4gICAgICAuLi5tLFxuICAgICAgZGF0ZTogbmV3IERhdGUobS5kYXRlIGFzIHN0cmluZylcbiAgICB9KSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH07XG4gIH1cblxuICBhc3luYyB1cGRhdGVEcmFmdChcbiAgICBkcmFmdElkOiBzdHJpbmcsXG4gICAgeyBib2R5LCBzdWJqZWN0LCBmaWxlcywgcmVjaXBpZW50c0lkcywgcmVwbHlUbyB9OiBQYXJ0aWFsPE5ld01haWw+XG4gICk6IFByb21pc2U8XG4gICAgfCBTdWNjZXNzUmVzcG9uc2U8RHJhZnRNYWlsPlxuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgRXJyb3JBY2Nlc3NEZW5pZWRcbiAgICB8IEVycm9yQmFzaWNcbiAgICB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgZHJhZnRzID0gYXdhaXQgdGhpcy5kcmFmdE1haWxzKCk7XG4gICAgaWYgKCFkcmFmdHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkcmFmdHMuX190eXBlbmFtZSAhPT0gXCJTdWNjZXNzUmVzcG9uc2VcIikge1xuICAgICAgcmV0dXJuIGRyYWZ0cztcbiAgICB9XG4gICAgY29uc3QgZHJhZnQgPSBkcmFmdHMuZGF0YS5maW5kKGQgPT4gZC5tYWlsSW50ZWdyaXR5SWQgPT09IGRyYWZ0SWQpO1xuICAgIGlmICghZHJhZnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkcmFmdCAke2RyYWZ0SWR9YCk7XG4gICAgfVxuICAgIGxldCBoYXNoS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgaGFzaDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKGJvZHkgfHwgc3ViamVjdCkge1xuICAgICAgaGFzaEtleSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoXG4gICAgICAgIHNvZGl1bS5jcnlwdG9fZ2VuZXJpY2hhc2hfS0VZQllURVMsXG4gICAgICAgIFwiaGV4XCJcbiAgICAgICk7XG4gICAgICBoYXNoID0gc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaChcbiAgICAgICAgc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaF9CWVRFUyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBib2R5LCBzdWJqZWN0IH0pLFxuICAgICAgICBoYXNoS2V5LFxuICAgICAgICBcImhleFwiXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBzZW5kZXJGaWxlcyA9IG5ldyBBcnJheTxNYWlsRmlsZUlucHV0PigpO1xuICAgIGlmIChmaWxlcykge1xuICAgICAgZm9yIChjb25zdCBmIG9mIGZpbGVzKSB7XG4gICAgICAgIGxldCBmaWxlID0gZmlsZXNDYWNoZS5nZXQoZi5pZCk7XG4gICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuI2NsaWVudC5jbG91ZC5maWxlKHsgaWQ6IGYuaWQgfSk7XG4gICAgICAgICAgZmlsZSA9IGZpbGVzQ2FjaGUuZ2V0KGYuaWQpO1xuICAgICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlICR7Zi5uYW1lfSAoJHtmLmlkfSkgZG9lcyBub3QgZXhpc3RzYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNlbmRlckZpbGVzLnB1c2goe1xuICAgICAgICAgIGlkOiBmaWxlLmlkLFxuICAgICAgICAgIGZpbGVLZXk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoZmlsZS5rZXkpLFxuICAgICAgICAgICAgICB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuYW1lOiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKGYubmFtZSksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgdXBkYXRlRHJhZnRNYWlsIH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIiwge1xuICAgICAgc2NhbGFyczoge1xuICAgICAgICBKc29uOiB7XG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gSlNPTi5zdHJpbmdpZnkoZSksXG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gSlNPTi5wYXJzZShlIGFzIHN0cmluZylcbiAgICAgICAgfSxcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9LFxuICAgICAgICBCaWdJbnQ6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBCaWdJbnQoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIGJpZ2ludCkudG9TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgdXBkYXRlRHJhZnRNYWlsOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBkcmFmdElkLFxuICAgICAgICAgIHJlY2lwaWVudHM6IHJlY2lwaWVudHNJZHMsXG4gICAgICAgICAgcmVwbHlUbyxcbiAgICAgICAgICBib2R5OiBib2R5XG4gICAgICAgICAgICA/IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhib2R5KSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgc3ViamVjdDogc3ViamVjdFxuICAgICAgICAgICAgPyBzb2RpdW0udG9faGV4KFxuICAgICAgICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoc3ViamVjdCksXG4gICAgICAgICAgICAgICAgICB0aGlzLiNrZXlzLnB1YmxpY0tleSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIHNlbmRlckZpbGVzLFxuICAgICAgICAgIGhhc2gsXG4gICAgICAgICAgaGFzaEtleVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFVwZGF0ZURyYWZ0TWFpbFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICB1cGRhdGVEcmFmdE1haWw6IG1haWxTZWxlY3RvclxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1cGRhdGVEcmFmdE1haWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1cGRhdGVEcmFmdE1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gdXBkYXRlRHJhZnRNYWlsO1xuICAgIH1cblxuICAgIGlmICh1cGRhdGVEcmFmdE1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckJhc2ljXCIpIHtcbiAgICAgIHJldHVybiB1cGRhdGVEcmFmdE1haWw7XG4gICAgfVxuXG4gICAgaWYgKCF1cGRhdGVEcmFmdE1haWwudXBkYXRlRHJhZnRNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0SW50ZXJuYWxNYWlsVG9FeHRlcm5hbChcbiAgICAgIHVwZGF0ZURyYWZ0TWFpbC51cGRhdGVEcmFmdE1haWwsXG4gICAgICB0aGlzLiNrZXlzXG4gICAgKSBhcyBEcmFmdE1haWw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHJlc3VsdFxuICAgIH07XG4gIH1cblxuICBhc3luYyBkZWxldGVEcmFmdChcbiAgICBkcmFmdElkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGRlbGV0ZURyYWZ0TWFpbCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZURyYWZ0TWFpbDogW1xuICAgICAgICB7XG4gICAgICAgICAgZHJhZnRJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBEZWxldGVEcmFmdE1haWxSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlRHJhZnRNYWlsOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRlbGV0ZURyYWZ0TWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRlbGV0ZURyYWZ0TWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkZWxldGVEcmFmdE1haWw7XG4gICAgfVxuXG4gICAgaWYgKCFkZWxldGVEcmFmdE1haWwuZGVsZXRlRHJhZnRNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRlbGV0ZURyYWZ0TWFpbC5kZWxldGVEcmFmdE1haWwgPz8gZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlVHJhc2goe1xuICAgIGlkc1xuICB9OiB7XG4gICAgaWRzOiBBcnJheTxzdHJpbmc+O1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGRlbGV0ZU1haWxUcmFzaCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZU1haWxUcmFzaDogW1xuICAgICAgICB7XG4gICAgICAgICAgaWRzXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERlbGV0ZU1haWxUcmFzaFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBkZWxldGVNYWlsVHJhc2g6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGVsZXRlTWFpbFRyYXNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGVsZXRlTWFpbFRyYXNoLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRlbGV0ZU1haWxUcmFzaDtcbiAgICB9XG5cbiAgICBpZiAoIWRlbGV0ZU1haWxUcmFzaC5kZWxldGVNYWlsVHJhc2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGVsZXRlTWFpbFRyYXNoLmRlbGV0ZU1haWxUcmFzaFxuICAgIH07XG4gIH1cblxuICBhc3luYyBlbXB0eVRyYXNoKCk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPGJvb2xlYW4+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZW1wdHlNYWlsVHJhc2ggfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiKSh7XG4gICAgICBlbXB0eU1haWxUcmFzaDoge1xuICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCIuLi5vbiBFbXB0eU1haWxUcmFzaFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIGVtcHR5TWFpbFRyYXNoOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghZW1wdHlNYWlsVHJhc2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChlbXB0eU1haWxUcmFzaC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBlbXB0eU1haWxUcmFzaDtcbiAgICB9XG5cbiAgICBpZiAoIWVtcHR5TWFpbFRyYXNoLmVtcHR5TWFpbFRyYXNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGVtcHR5TWFpbFRyYXNoLmVtcHR5TWFpbFRyYXNoXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZSh7XG4gICAgbWFpbElkXG4gIH06IHtcbiAgICBtYWlsSWQ6IHN0cmluZztcbiAgfSk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPGJvb2xlYW4+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsPiB7XG4gICAgY29uc3QgeyBkZWxldGVNYWlsIH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIikoe1xuICAgICAgZGVsZXRlTWFpbDogW1xuICAgICAgICB7XG4gICAgICAgICAgbWFpbElkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERlbGV0ZU1haWxSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlTWFpbDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkZWxldGVNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGVsZXRlTWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkZWxldGVNYWlsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGVsZXRlTWFpbC5kZWxldGVNYWlsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHNlbmREcmFmdChcbiAgICBkcmFmdElkOiBzdHJpbmcsXG4gICAgY3VzdG9tTWVzc2FnZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IEVycm9yQmFzaWMgfCBudWxsPiB7XG4gICAgY29uc3QgZHJhZnRzID0gYXdhaXQgdGhpcy5kcmFmdE1haWxzKCk7XG5cbiAgICBpZiAoIWRyYWZ0cykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgICAgZGF0YTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChkcmFmdHMuX190eXBlbmFtZSAhPT0gXCJTdWNjZXNzUmVzcG9uc2VcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgICAgZGF0YTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZHJhZnQgPSBkcmFmdHMuZGF0YS5maW5kKGQgPT4gZC5tYWlsSW50ZWdyaXR5SWQgPT09IGRyYWZ0SWQpO1xuICAgIGlmICghZHJhZnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICAgIGRhdGE6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCByZWNpcGllbnRzID0gbmV3IEFycmF5PE1haWxSZWNpcGllbnRJbnB1dD4oKTtcblxuICAgIGNvbnN0IHRlbXBvcmFyeVJlY2lwaWVudHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgZm9yIChjb25zdCB7IGVtYWlsIH0gb2YgZHJhZnQudGVtcG9yYXJ5UmVjaXBpZW50cykge1xuICAgICAgaWYgKCFlbWFpbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5fZWFjaFVzZXIoXG4gICAgICAgIGRyYWZ0LmZpbGVzLFxuICAgICAgICBkcmFmdC5zdWJqZWN0LFxuICAgICAgICBkcmFmdC5ib2R5LFxuICAgICAgICBlbWFpbFxuICAgICAgKTtcblxuICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICB0ZW1wb3JhcnlSZWNpcGllbnRzLnB1c2goZW1haWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVjaXBpZW50cy5wdXNoKGlucHV0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHsgaWQgfSBvZiBkcmFmdC5yZWNpcGllbnRzKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuX2VhY2hVc2VyKFxuICAgICAgICBkcmFmdC5maWxlcyxcbiAgICAgICAgZHJhZnQuc3ViamVjdCxcbiAgICAgICAgZHJhZnQuYm9keSxcbiAgICAgICAgaWRcbiAgICAgICk7XG5cbiAgICAgIGlmICghaW5wdXQpIHtcbiAgICAgICAgdGVtcG9yYXJ5UmVjaXBpZW50cy5wdXNoKGlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlY2lwaWVudHMucHVzaChpbnB1dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeyBzZW5kRHJhZnRNYWlsIH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIikoe1xuICAgICAgc2VuZERyYWZ0TWFpbDogW1xuICAgICAgICB7XG4gICAgICAgICAgdGVtcG9yYXJ5UmVjaXBpZW50cyxcbiAgICAgICAgICByZWNpcGllbnRzLFxuICAgICAgICAgIGRyYWZ0TWFpbElkOiBkcmFmdC5tYWlsSW50ZWdyaXR5SWQsXG4gICAgICAgICAgY3VzdG9tTWVzc2FnZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFNlbmREcmFmdE1haWxSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgc2VuZERyYWZ0TWFpbDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFzZW5kRHJhZnRNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoc2VuZERyYWZ0TWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBzZW5kRHJhZnRNYWlsO1xuICAgIH1cblxuICAgIGlmIChzZW5kRHJhZnRNYWlsLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JCYXNpY1wiKSB7XG4gICAgICByZXR1cm4gc2VuZERyYWZ0TWFpbDtcbiAgICB9XG5cbiAgICBpZiAoIXNlbmREcmFmdE1haWwuc2VuZERyYWZ0TWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBzZW5kRHJhZnRNYWlsLnNlbmREcmFmdE1haWxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc2VuZFdhaXRpbmdFbWFpbHMoKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8Ym9vbGVhbj4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IEVycm9yQmFzaWMgfCBudWxsXG4gID4ge1xuICAgIC8vIFRPRE8gb3B0aSB0aGlzXG4gICAgY29uc3QgbWFpbHMgPSBhd2FpdCB0aGlzLnNlbnRNYWlscygpO1xuXG4gICAgaWYgKCFtYWlscykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgICAgZGF0YTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChtYWlscy5fX3R5cGVuYW1lICE9PSBcIlN1Y2Nlc3NSZXNwb25zZVwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgICBkYXRhOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyZWQgPSBtYWlscy5kYXRhLmZpbHRlcihtID0+IG0udGVtcG9yYXJ5UmVjaXBpZW50cy5sZW5ndGggPiAwKTtcblxuICAgIGZvciAoY29uc3QgbWFpbCBvZiBmaWx0ZXJlZCkge1xuICAgICAgZm9yIChjb25zdCB7IGVtYWlsIH0gb2YgbWFpbC50ZW1wb3JhcnlSZWNpcGllbnRzKSB7XG4gICAgICAgIGlmICghZW1haWwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5fZWFjaFVzZXIoXG4gICAgICAgICAgICBtYWlsLmZpbGVzLFxuICAgICAgICAgICAgbWFpbC5zdWJqZWN0LFxuICAgICAgICAgICAgbWFpbC5ib2R5LFxuICAgICAgICAgICAgZW1haWxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiKSh7XG4gICAgICAgICAgICBzZW5kT25lTWFpbDogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWFpbEludGVncml0eUlkOiBtYWlsLm1haWxJbnRlZ3JpdHlJZCxcbiAgICAgICAgICAgICAgICByZWNpcGllbnQ6IGlucHV0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcIi4uLm9uIEVycm9yQmFzaWNcIjoge1xuICAgICAgICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiLi4ub24gUmVjb3Zlck5vZGVSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgcmVjb3Zlck5vZGU6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBhc3luYyBjcmVhdGVEcmFmdCh7XG4gICAgYm9keSxcbiAgICBzdWJqZWN0LFxuICAgIGZpbGVzLFxuICAgIHJlY2lwaWVudHNJZHMsXG4gICAgcmVwbHlUb1xuICB9OiBOZXdNYWlsKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8RHJhZnRNYWlsPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgRXJyb3JCYXNpYyB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgaGFzaEtleSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoXG4gICAgICBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoX0tFWUJZVEVTLFxuICAgICAgXCJoZXhcIlxuICAgICk7XG4gICAgY29uc3QgaGFzaCA9IHNvZGl1bS5jcnlwdG9fZ2VuZXJpY2hhc2goXG4gICAgICBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoX0JZVEVTLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoeyBib2R5LCBzdWJqZWN0IH0pLFxuICAgICAgaGFzaEtleSxcbiAgICAgIFwiaGV4XCJcbiAgICApO1xuICAgIGNvbnN0IHNlbmRlckZpbGVzID0gbmV3IEFycmF5PE1haWxGaWxlSW5wdXQ+KCk7XG4gICAgZm9yIChjb25zdCBmIG9mIGZpbGVzKSB7XG4gICAgICBsZXQgZmlsZSA9IGZpbGVzQ2FjaGUuZ2V0KGYuaWQpO1xuICAgICAgaWYgKCFmaWxlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuI2NsaWVudC5jbG91ZC5maWxlKHsgaWQ6IGYuaWQgfSk7XG4gICAgICAgIGZpbGUgPSBmaWxlc0NhY2hlLmdldChmLmlkKTtcbiAgICAgICAgaWYgKCFmaWxlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlICR7Zi5uYW1lfSAoJHtmLmlkfSkgZG9lcyBub3QgZXhpc3RzYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNlbmRlckZpbGVzLnB1c2goe1xuICAgICAgICBpZDogZmlsZS5pZCxcbiAgICAgICAgZmlsZUtleTogc29kaXVtLnRvX2hleChcbiAgICAgICAgICBlbmNyeXB0Q3J5cHRvQm94KFxuICAgICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKGZpbGUua2V5KSxcbiAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBuYW1lOiBzb2RpdW0udG9faGV4KFxuICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoZi5uYW1lKSxcbiAgICAgICAgICAgIHRoaXMuI2tleXMucHVibGljS2V5LFxuICAgICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNyZWF0ZURyYWZ0TWFpbCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcIm11dGF0aW9uXCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgY3JlYXRlRHJhZnRNYWlsOiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZWNpcGllbnRzOiByZWNpcGllbnRzSWRzLFxuICAgICAgICAgIHJlcGx5VG8sXG4gICAgICAgICAgYm9keTogc29kaXVtLnRvX2hleChcbiAgICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhib2R5KSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgICAgc3ViamVjdDogc29kaXVtLnRvX2hleChcbiAgICAgICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhzdWJqZWN0KSxcbiAgICAgICAgICAgICAgdGhpcy4ja2V5cy5wdWJsaWNLZXksXG4gICAgICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgICAgc2VuZGVyRmlsZXMsXG4gICAgICAgICAgaGFzaCxcbiAgICAgICAgICBoYXNoS2V5XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQmFzaWNcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gQ3JlYXRlRHJhZnRNYWlsUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGNyZWF0ZURyYWZ0TWFpbDogbWFpbFNlbGVjdG9yXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWNyZWF0ZURyYWZ0TWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZURyYWZ0TWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBjcmVhdGVEcmFmdE1haWw7XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZURyYWZ0TWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIGNyZWF0ZURyYWZ0TWFpbDtcbiAgICB9XG5cbiAgICBpZiAoIWNyZWF0ZURyYWZ0TWFpbC5jcmVhdGVEcmFmdE1haWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKFxuICAgICAgY3JlYXRlRHJhZnRNYWlsLmNyZWF0ZURyYWZ0TWFpbCxcbiAgICAgIHRoaXMuI2tleXNcbiAgICApIGFzIERyYWZ0TWFpbDtcblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogcmVzdWx0XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHJlYWQoe1xuICAgIG1haWxJZFxuICB9OiB7XG4gICAgbWFpbElkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFxuICAgIHwgU3VjY2Vzc1Jlc3BvbnNlPGJvb2xlYW4+XG4gICAgfCBFcnJvckFjY2Vzc0RlbmllZFxuICAgIHwgRXJyb3JCYXNpY1xuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHJlYWRNYWlsIH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIikoe1xuICAgICAgcmVhZE1haWw6IFtcbiAgICAgICAgeyBtYWlsSWQgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JCYXNpY1wiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIFJlYWRNYWlsUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHJlYWRNYWlsOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlYWRNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocmVhZE1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gcmVhZE1haWw7XG4gICAgfVxuXG4gICAgaWYgKHJlYWRNYWlsLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JCYXNpY1wiKSB7XG4gICAgICByZXR1cm4gcmVhZE1haWw7XG4gICAgfVxuXG4gICAgaWYgKHJlYWRNYWlsLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gcmVhZE1haWw7XG4gICAgfVxuXG4gICAgaWYgKCFyZWFkTWFpbC5yZWFkTWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiByZWFkTWFpbC5yZWFkTWFpbFxuICAgIH07XG4gIH1cblxuICBhc3luYyB1bnJlYWQoe1xuICAgIG1haWxJZFxuICB9OiB7XG4gICAgbWFpbElkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFxuICAgIHwgU3VjY2Vzc1Jlc3BvbnNlPGJvb2xlYW4+XG4gICAgfCBFcnJvckFjY2Vzc0RlbmllZFxuICAgIHwgRXJyb3JCYXNpY1xuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHVucmVhZE1haWwgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiKSh7XG4gICAgICB1bnJlYWRNYWlsOiBbXG4gICAgICAgIHsgbWFpbElkIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQmFzaWNcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBVbnJlYWRNYWlsUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHVucmVhZE1haWw6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdW5yZWFkTWFpbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVucmVhZE1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gdW5yZWFkTWFpbDtcbiAgICB9XG5cbiAgICBpZiAodW5yZWFkTWFpbC5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIHVucmVhZE1haWw7XG4gICAgfVxuXG4gICAgaWYgKHVucmVhZE1haWwuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiB1bnJlYWRNYWlsO1xuICAgIH1cblxuICAgIGlmICghdW5yZWFkTWFpbC51bnJlYWRNYWlsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHVucmVhZE1haWwudW5yZWFkTWFpbFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZWNlaXZlZE1haWxzKCk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPFJlY2VpdmVkTWFpbFtdPiB8IEVycm9yTm90Rm91bmQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBVc2VyUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgICAgcmVjZWl2ZWRNYWlsczogbWFpbFNlbGVjdG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1c2VyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gdXNlcjtcbiAgICB9XG5cbiAgICBpZiAoIXVzZXIudXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBnZXQgYWN0dWFsIG1haWxzIG9uIHRoaXMgYXBwIG9ubHlcblxuICAgIGNvbnN0IHJlY2VpdmVkTWFpbHMgPSBuZXcgQXJyYXk8UmVjZWl2ZWRNYWlsPigpO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIHVzZXIudXNlci5yZWNlaXZlZE1haWxzKSB7XG4gICAgICBjb25zdCBtYWlsID0gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobSwgdGhpcy4ja2V5cyk7XG4gICAgICBpZiAobWFpbCkge1xuICAgICAgICByZWNlaXZlZE1haWxzLnB1c2gobWFpbCBhcyBSZWNlaXZlZE1haWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogcmVjZWl2ZWRNYWlsc1xuICAgIH07XG4gIH1cblxuICBhc3luYyBzZW50TWFpbHMoKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8U2VudE1haWxbXT4gfCBFcnJvck5vdEZvdW5kIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiLCB7XG4gICAgICBzY2FsYXJzOiB7XG4gICAgICAgIERhdGVUaW1lOiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gbmV3IERhdGUoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIERhdGUpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gVXNlclJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgICAgIHNlbnRNYWlsczogbWFpbFNlbGVjdG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1c2VyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gdXNlcjtcbiAgICB9XG5cbiAgICBpZiAoIXVzZXIudXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBnZXQgYWN0dWFsIG1haWxzIG9uIHRoaXMgYXBwIG9ubHlcblxuICAgIGNvbnN0IHNlbnRNYWlscyA9IG5ldyBBcnJheTxTZW50TWFpbD4oKTtcblxuICAgIGZvciAoY29uc3QgbSBvZiB1c2VyLnVzZXIuc2VudE1haWxzKSB7XG4gICAgICBjb25zdCBtYWlsID0gY29udmVydEludGVybmFsTWFpbFRvRXh0ZXJuYWwobSwgdGhpcy4ja2V5cyk7XG4gICAgICBpZiAobWFpbCkge1xuICAgICAgICBzZW50TWFpbHMucHVzaChtYWlsIGFzIFNlbnRNYWlsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHNlbnRNYWlsc1xuICAgIH07XG4gIH1cblxuICBhc3luYyBkcmFmdE1haWxzKCk6IFByb21pc2U8XG4gICAgU3VjY2Vzc1Jlc3BvbnNlPERyYWZ0TWFpbFtdPiB8IEVycm9yTm90Rm91bmQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgRGF0ZVRpbWU6IHtcbiAgICAgICAgICBkZWNvZGU6IChlOiB1bmtub3duKSA9PiBuZXcgRGF0ZShlIGFzIHN0cmluZyksXG4gICAgICAgICAgZW5jb2RlOiAoZTogdW5rbm93bikgPT4gKGUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBVc2VyUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgICAgZHJhZnRNYWlsczogbWFpbFNlbGVjdG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh1c2VyLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gdXNlcjtcbiAgICB9XG5cbiAgICBpZiAoIXVzZXIudXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBnZXQgYWN0dWFsIG1haWxzIG9uIHRoaXMgYXBwIG9ubHlcblxuICAgIGNvbnN0IGRyYWZ0TWFpbHMgPSBuZXcgQXJyYXk8RHJhZnRNYWlsPigpO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIHVzZXIudXNlci5kcmFmdE1haWxzKSB7XG4gICAgICBjb25zdCBkcmFmdCA9IGNvbnZlcnRJbnRlcm5hbE1haWxUb0V4dGVybmFsKG0sIHRoaXMuI2tleXMpIGFzIERyYWZ0TWFpbDtcbiAgICAgIGlmIChkcmFmdCkge1xuICAgICAgICBkcmFmdE1haWxzLnB1c2goZHJhZnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZHJhZnRNYWlsc1xuICAgIH07XG4gIH1cblxuICBhc3luYyB1bnJlYWRSZWNlaXZlZE1haWxzQ291bnQoKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8bnVtYmVyPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IHVucmVhZFJlY2VpdmVkTWFpbHNDb3VudCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIpKHtcbiAgICAgIHVucmVhZFJlY2VpdmVkTWFpbHNDb3VudDoge1xuICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCIuLi5vbiBVbnJlYWRSZWNlaXZlZE1haWxzQ291bnRSZXNwb25zZVwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBjb3VudDogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIXVucmVhZFJlY2VpdmVkTWFpbHNDb3VudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVucmVhZFJlY2VpdmVkTWFpbHNDb3VudC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiB1bnJlYWRSZWNlaXZlZE1haWxzQ291bnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiB1bnJlYWRSZWNlaXZlZE1haWxzQ291bnQuY291bnRcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfZWFjaFVzZXIgPSBhc3luYyAoXG4gICAgZmlsZXM6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH1bXSxcbiAgICBzdWJqZWN0OiBzdHJpbmcsXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGlkT3JNYWlsOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxNYWlsUmVjaXBpZW50SW5wdXQgfCBudWxsPiA9PiB7XG4gICAgbGV0IHUgPSB1c2Vyc0NhY2hlLmdldChpZE9yTWFpbCk7XG5cbiAgICBpZiAoIXUgfHwgIShcInB1YmxpY0tleVwiIGluIHUpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXEgPSBhd2FpdCB0aGlzLiNjbGllbnQudXNlcih7XG4gICAgICAgICAgdXNlcklkOiBpZE9yTWFpbCxcbiAgICAgICAgICB3aXRoUHVibGljS2V5OiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXJlcSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXEuX190eXBlbmFtZSAhPT0gXCJTdWNjZXNzUmVzcG9uc2VcIikge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHUgPSByZXEuZGF0YTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKCF1KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghKFwicHVibGljS2V5XCIgaW4gdSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVXNlciAke2lkT3JNYWlsfSBoYXZlIG5vIHB1YmxpYyBrZXlgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWNpcGllbnRzRmlsZXMgPSBuZXcgQXJyYXk8TWFpbEZpbGVJbnB1dD4oKTtcblxuICAgIGZvciAoY29uc3QgZiBvZiBmaWxlcykge1xuICAgICAgbGV0IGZpbGVJbkhpc3RvcnkgPSBmaWxlc0NhY2hlLmdldChmLmlkKTtcbiAgICAgIGlmICghZmlsZUluSGlzdG9yeSkge1xuICAgICAgICBhd2FpdCB0aGlzLiNjbGllbnQuY2xvdWQuZmlsZSh7IGlkOiBmLmlkIH0pO1xuICAgICAgICBmaWxlSW5IaXN0b3J5ID0gZmlsZXNDYWNoZS5nZXQoZi5pZCk7XG4gICAgICAgIGlmICghZmlsZUluSGlzdG9yeSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSAke2YubmFtZX0gKCR7Zi5pZH0pIGRvZXMgbm90IGV4aXN0c2ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBrZXkgPSBmaWxlSW5IaXN0b3J5LmtleTtcbiAgICAgIHJlY2lwaWVudHNGaWxlcy5wdXNoKHtcbiAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgIG5hbWU6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgIHNvZGl1bS5mcm9tX3N0cmluZyhmLm5hbWUpLFxuICAgICAgICAgICAgdS5wdWJsaWNLZXksXG4gICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGZpbGVLZXk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICAgIHNvZGl1bS5mcm9tX2hleChrZXkpLFxuICAgICAgICAgICAgdS5wdWJsaWNLZXksXG4gICAgICAgICAgICB0aGlzLiNrZXlzLnByaXZhdGVLZXlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZWNpcGllbnRJZDogdS5pZCxcbiAgICAgIGJvZHk6IHNvZGl1bS50b19oZXgoXG4gICAgICAgIGVuY3J5cHRDcnlwdG9Cb3goXG4gICAgICAgICAgc29kaXVtLmZyb21fc3RyaW5nKGJvZHkpLFxuICAgICAgICAgIHUucHVibGljS2V5LFxuICAgICAgICAgIHRoaXMuI2tleXMucHJpdmF0ZUtleVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgc3ViamVjdDogc29kaXVtLnRvX2hleChcbiAgICAgICAgZW5jcnlwdENyeXB0b0JveChcbiAgICAgICAgICBzb2RpdW0uZnJvbV9zdHJpbmcoc3ViamVjdCksXG4gICAgICAgICAgdS5wdWJsaWNLZXksXG4gICAgICAgICAgdGhpcy4ja2V5cy5wcml2YXRlS2V5XG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBmaWxlczogcmVjaXBpZW50c0ZpbGVzXG4gICAgfTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBLFNBQVNBLFFBQVQsUUFBeUIsU0FBekI7QUFDQSxTQUFTQyxVQUFULEVBQXFCQyxVQUFyQixRQUF1QyxhQUF2QztBQVFBLFNBQVNDLGdCQUFULEVBQTJCQyxNQUEzQixR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
@@ -3,7 +3,7 @@ import { decryptCryptoBox } from "../../crypto/index.js";
3
3
  import { sodium } from "../../sodium.js";
4
4
  export function gqlFileToInternal(gql, keyPair) {
5
5
  if (!gql.access || !gql.access.sharedBy.keyPair) {
6
- throw "File " + gql.id + " doesn't have access";
6
+ throw `File ${gql.id} doesn't have access`;
7
7
  }
8
8
 
9
9
  const file = {
@@ -31,4 +31,4 @@ export function internalFileToFile(internal) {
31
31
  export function gqlFileToExternal(gql, keyPair) {
32
32
  return internalFileToFile(gqlFileToInternal(gql, keyPair));
33
33
  }
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWxlc0NhY2hlIiwiZGVjcnlwdENyeXB0b0JveCIsInNvZGl1bSIsImdxbEZpbGVUb0ludGVybmFsIiwiZ3FsIiwia2V5UGFpciIsImFjY2VzcyIsInNoYXJlZEJ5IiwiaWQiLCJmaWxlIiwibWQ1IiwibWQ1RW5jcnlwdGVkIiwiY3JlYXRlZEF0IiwiRGF0ZSIsInNpemUiLCJCaWdJbnQiLCJzaXplQmVmb3JlIiwia2V5IiwidG9faGV4IiwiZnJvbV9oZXgiLCJwdWIiLCJwcml2YXRlS2V5Iiwic2V0IiwiaW50ZXJuYWxGaWxlVG9GaWxlIiwiaW50ZXJuYWwiLCJncWxGaWxlVG9FeHRlcm5hbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbGVzQ2FjaGUgfSBmcm9tIFwiLi4vLi4vY2FjaGUuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi8uLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzb2RpdW0gfSBmcm9tIFwiLi4vLi4vc29kaXVtLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdRTEZpbGUsIEludGVybmFsRmlsZSwgRmlsZU1ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBncWxGaWxlVG9JbnRlcm5hbChcbiAgZ3FsOiBHUUxGaWxlLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBJbnRlcm5hbEZpbGUge1xuICBpZiAoIWdxbC5hY2Nlc3MgfHwgIWdxbC5hY2Nlc3Muc2hhcmVkQnkua2V5UGFpcikge1xuICAgIHRocm93IGBGaWxlICR7Z3FsLmlkfSBkb2Vzbid0IGhhdmUgYWNjZXNzYDtcbiAgfVxuXG4gIGNvbnN0IGZpbGU6IEludGVybmFsRmlsZSA9IHtcbiAgICBpZDogZ3FsLmlkLFxuICAgIG1kNTogZ3FsLm1kNSxcbiAgICBtZDVFbmNyeXB0ZWQ6IGdxbC5tZDVFbmNyeXB0ZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZShncWwuY3JlYXRlZEF0IGFzIHN0cmluZyksXG4gICAgc2l6ZTogQmlnSW50KGdxbC5zaXplIGFzIHN0cmluZyksXG4gICAgc2l6ZUJlZm9yZTogQmlnSW50KGdxbC5zaXplQmVmb3JlIGFzIHN0cmluZyksXG4gICAga2V5OiBzb2RpdW0udG9faGV4KFxuICAgICAgZGVjcnlwdENyeXB0b0JveChcbiAgICAgICAgc29kaXVtLmZyb21faGV4KGdxbC5hY2Nlc3Mua2V5KSxcbiAgICAgICAgZ3FsLmFjY2Vzcy5zaGFyZWRCeS5rZXlQYWlyLnB1YixcbiAgICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgICApXG4gICAgKVxuICB9O1xuXG4gIGZpbGVzQ2FjaGUuc2V0KGZpbGUuaWQsIGZpbGUpO1xuXG4gIHJldHVybiBmaWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJuYWxGaWxlVG9GaWxlKGludGVybmFsOiBJbnRlcm5hbEZpbGUpOiBGaWxlTWV0YWRhdGEge1xuICByZXR1cm4ge1xuICAgIGlkOiBpbnRlcm5hbC5pZCxcbiAgICBtZDU6IGludGVybmFsLm1kNSxcbiAgICBtZDVFbmNyeXB0ZWQ6IGludGVybmFsLm1kNUVuY3J5cHRlZCxcbiAgICBjcmVhdGVkQXQ6IGludGVybmFsLmNyZWF0ZWRBdCxcbiAgICBzaXplOiBpbnRlcm5hbC5zaXplLFxuICAgIHNpemVCZWZvcmU6IGludGVybmFsLnNpemVCZWZvcmVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdxbEZpbGVUb0V4dGVybmFsKFxuICBncWw6IEdRTEZpbGUsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IEZpbGVNZXRhZGF0YSB7XG4gIHJldHVybiBpbnRlcm5hbEZpbGVUb0ZpbGUoZ3FsRmlsZVRvSW50ZXJuYWwoZ3FsLCBrZXlQYWlyKSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVQsUUFBMkIsZ0JBQTNCO0FBRUEsU0FBU0MsZ0JBQVQsUUFBaUMsdUJBQWpDO0FBQ0EsU0FBU0MsTUFBVCxRQUF1QixpQkFBdkI7QUFHQSxPQUFPLFNBQVNDLGlCQUFULENBQ0xDLEdBREssRUFFTEMsT0FGSyxFQUdTO0VBQ2QsSUFBSSxDQUFDRCxHQUFHLENBQUNFLE1BQUwsSUFBZSxDQUFDRixHQUFHLENBQUNFLE1BQUosQ0FBV0MsUUFBWCxDQUFvQkYsT0FBeEMsRUFBaUQ7SUFDL0MsZ0JBQWNELEdBQUcsQ0FBQ0ksRUFBbEI7RUFDRDs7RUFFRCxNQUFNQyxJQUFrQixHQUFHO0lBQ3pCRCxFQUFFLEVBQUVKLEdBQUcsQ0FBQ0ksRUFEaUI7SUFFekJFLEdBQUcsRUFBRU4sR0FBRyxDQUFDTSxHQUZnQjtJQUd6QkMsWUFBWSxFQUFFUCxHQUFHLENBQUNPLFlBSE87SUFJekJDLFNBQVMsRUFBRSxJQUFJQyxJQUFKLENBQVNULEdBQUcsQ0FBQ1EsU0FBYixDQUpjO0lBS3pCRSxJQUFJLEVBQUVDLE1BQU0sQ0FBQ1gsR0FBRyxDQUFDVSxJQUFMLENBTGE7SUFNekJFLFVBQVUsRUFBRUQsTUFBTSxDQUFDWCxHQUFHLENBQUNZLFVBQUwsQ0FOTztJQU96QkMsR0FBRyxFQUFFZixNQUFNLENBQUNnQixNQUFQLENBQ0hqQixnQkFBZ0IsQ0FDZEMsTUFBTSxDQUFDaUIsUUFBUCxDQUFnQmYsR0FBRyxDQUFDRSxNQUFKLENBQVdXLEdBQTNCLENBRGMsRUFFZGIsR0FBRyxDQUFDRSxNQUFKLENBQVdDLFFBQVgsQ0FBb0JGLE9BQXBCLENBQTRCZSxHQUZkLEVBR2RmLE9BQU8sQ0FBQ2dCLFVBSE0sQ0FEYjtFQVBvQixDQUEzQjtFQWdCQXJCLFVBQVUsQ0FBQ3NCLEdBQVgsQ0FBZWIsSUFBSSxDQUFDRCxFQUFwQixFQUF3QkMsSUFBeEI7RUFFQSxPQUFPQSxJQUFQO0FBQ0Q7QUFFRCxPQUFPLFNBQVNjLGtCQUFULENBQTRCQyxRQUE1QixFQUFrRTtFQUN2RSxPQUFPO0lBQ0xoQixFQUFFLEVBQUVnQixRQUFRLENBQUNoQixFQURSO0lBRUxFLEdBQUcsRUFBRWMsUUFBUSxDQUFDZCxHQUZUO0lBR0xDLFlBQVksRUFBRWEsUUFBUSxDQUFDYixZQUhsQjtJQUlMQyxTQUFTLEVBQUVZLFFBQVEsQ0FBQ1osU0FKZjtJQUtMRSxJQUFJLEVBQUVVLFFBQVEsQ0FBQ1YsSUFMVjtJQU1MRSxVQUFVLEVBQUVRLFFBQVEsQ0FBQ1I7RUFOaEIsQ0FBUDtBQVFEO0FBRUQsT0FBTyxTQUFTUyxpQkFBVCxDQUNMckIsR0FESyxFQUVMQyxPQUZLLEVBR1M7RUFDZCxPQUFPa0Isa0JBQWtCLENBQUNwQixpQkFBaUIsQ0FBQ0MsR0FBRCxFQUFNQyxPQUFOLENBQWxCLENBQXpCO0FBQ0QifQ==
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWxlc0NhY2hlIiwiZGVjcnlwdENyeXB0b0JveCIsInNvZGl1bSIsImdxbEZpbGVUb0ludGVybmFsIiwiZ3FsIiwia2V5UGFpciIsImFjY2VzcyIsInNoYXJlZEJ5IiwiaWQiLCJmaWxlIiwibWQ1IiwibWQ1RW5jcnlwdGVkIiwiY3JlYXRlZEF0IiwiRGF0ZSIsInNpemUiLCJCaWdJbnQiLCJzaXplQmVmb3JlIiwia2V5IiwidG9faGV4IiwiZnJvbV9oZXgiLCJwdWIiLCJwcml2YXRlS2V5Iiwic2V0IiwiaW50ZXJuYWxGaWxlVG9GaWxlIiwiaW50ZXJuYWwiLCJncWxGaWxlVG9FeHRlcm5hbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvY29udmVydC9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbGVzQ2FjaGUgfSBmcm9tIFwiLi4vLi4vY2FjaGUuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5UGFpciB9IGZyb20gXCIuLi8uLi9jcnlwdG8vaW5kZXguanNcIjtcbmltcG9ydCB7IGRlY3J5cHRDcnlwdG9Cb3ggfSBmcm9tIFwiLi4vLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzb2RpdW0gfSBmcm9tIFwiLi4vLi4vc29kaXVtLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdRTEZpbGUsIEludGVybmFsRmlsZSwgRmlsZU1ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBncWxGaWxlVG9JbnRlcm5hbChcbiAgZ3FsOiBHUUxGaWxlLFxuICBrZXlQYWlyOiBLZXlQYWlyXG4pOiBJbnRlcm5hbEZpbGUge1xuICBpZiAoIWdxbC5hY2Nlc3MgfHwgIWdxbC5hY2Nlc3Muc2hhcmVkQnkua2V5UGFpcikge1xuICAgIHRocm93IGBGaWxlICR7Z3FsLmlkfSBkb2Vzbid0IGhhdmUgYWNjZXNzYDtcbiAgfVxuXG4gIGNvbnN0IGZpbGU6IEludGVybmFsRmlsZSA9IHtcbiAgICBpZDogZ3FsLmlkLFxuICAgIG1kNTogZ3FsLm1kNSxcbiAgICBtZDVFbmNyeXB0ZWQ6IGdxbC5tZDVFbmNyeXB0ZWQsXG4gICAgY3JlYXRlZEF0OiBuZXcgRGF0ZShncWwuY3JlYXRlZEF0IGFzIHN0cmluZyksXG4gICAgc2l6ZTogQmlnSW50KGdxbC5zaXplIGFzIHN0cmluZyksXG4gICAgc2l6ZUJlZm9yZTogQmlnSW50KGdxbC5zaXplQmVmb3JlIGFzIHN0cmluZyksXG4gICAga2V5OiBzb2RpdW0udG9faGV4KFxuICAgICAgZGVjcnlwdENyeXB0b0JveChcbiAgICAgICAgc29kaXVtLmZyb21faGV4KGdxbC5hY2Nlc3Mua2V5KSxcbiAgICAgICAgZ3FsLmFjY2Vzcy5zaGFyZWRCeS5rZXlQYWlyLnB1YixcbiAgICAgICAga2V5UGFpci5wcml2YXRlS2V5XG4gICAgICApXG4gICAgKVxuICB9O1xuXG4gIGZpbGVzQ2FjaGUuc2V0KGZpbGUuaWQsIGZpbGUpO1xuXG4gIHJldHVybiBmaWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJuYWxGaWxlVG9GaWxlKGludGVybmFsOiBJbnRlcm5hbEZpbGUpOiBGaWxlTWV0YWRhdGEge1xuICByZXR1cm4ge1xuICAgIGlkOiBpbnRlcm5hbC5pZCxcbiAgICBtZDU6IGludGVybmFsLm1kNSxcbiAgICBtZDVFbmNyeXB0ZWQ6IGludGVybmFsLm1kNUVuY3J5cHRlZCxcbiAgICBjcmVhdGVkQXQ6IGludGVybmFsLmNyZWF0ZWRBdCxcbiAgICBzaXplOiBpbnRlcm5hbC5zaXplLFxuICAgIHNpemVCZWZvcmU6IGludGVybmFsLnNpemVCZWZvcmVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdxbEZpbGVUb0V4dGVybmFsKFxuICBncWw6IEdRTEZpbGUsXG4gIGtleVBhaXI6IEtleVBhaXJcbik6IEZpbGVNZXRhZGF0YSB7XG4gIHJldHVybiBpbnRlcm5hbEZpbGVUb0ZpbGUoZ3FsRmlsZVRvSW50ZXJuYWwoZ3FsLCBrZXlQYWlyKSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVQsUUFBMkIsZ0JBQTNCO0FBRUEsU0FBU0MsZ0JBQVQsUUFBaUMsdUJBQWpDO0FBQ0EsU0FBU0MsTUFBVCxRQUF1QixpQkFBdkI7QUFHQSxPQUFPLFNBQVNDLGlCQUFULENBQ0xDLEdBREssRUFFTEMsT0FGSyxFQUdTO0VBQ2QsSUFBSSxDQUFDRCxHQUFHLENBQUNFLE1BQUwsSUFBZSxDQUFDRixHQUFHLENBQUNFLE1BQUosQ0FBV0MsUUFBWCxDQUFvQkYsT0FBeEMsRUFBaUQ7SUFDL0MsTUFBTyxRQUFPRCxHQUFHLENBQUNJLEVBQUcsc0JBQXJCO0VBQ0Q7O0VBRUQsTUFBTUMsSUFBa0IsR0FBRztJQUN6QkQsRUFBRSxFQUFFSixHQUFHLENBQUNJLEVBRGlCO0lBRXpCRSxHQUFHLEVBQUVOLEdBQUcsQ0FBQ00sR0FGZ0I7SUFHekJDLFlBQVksRUFBRVAsR0FBRyxDQUFDTyxZQUhPO0lBSXpCQyxTQUFTLEVBQUUsSUFBSUMsSUFBSixDQUFTVCxHQUFHLENBQUNRLFNBQWIsQ0FKYztJQUt6QkUsSUFBSSxFQUFFQyxNQUFNLENBQUNYLEdBQUcsQ0FBQ1UsSUFBTCxDQUxhO0lBTXpCRSxVQUFVLEVBQUVELE1BQU0sQ0FBQ1gsR0FBRyxDQUFDWSxVQUFMLENBTk87SUFPekJDLEdBQUcsRUFBRWYsTUFBTSxDQUFDZ0IsTUFBUCxDQUNIakIsZ0JBQWdCLENBQ2RDLE1BQU0sQ0FBQ2lCLFFBQVAsQ0FBZ0JmLEdBQUcsQ0FBQ0UsTUFBSixDQUFXVyxHQUEzQixDQURjLEVBRWRiLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxRQUFYLENBQW9CRixPQUFwQixDQUE0QmUsR0FGZCxFQUdkZixPQUFPLENBQUNnQixVQUhNLENBRGI7RUFQb0IsQ0FBM0I7RUFnQkFyQixVQUFVLENBQUNzQixHQUFYLENBQWViLElBQUksQ0FBQ0QsRUFBcEIsRUFBd0JDLElBQXhCO0VBRUEsT0FBT0EsSUFBUDtBQUNEO0FBRUQsT0FBTyxTQUFTYyxrQkFBVCxDQUE0QkMsUUFBNUIsRUFBa0U7RUFDdkUsT0FBTztJQUNMaEIsRUFBRSxFQUFFZ0IsUUFBUSxDQUFDaEIsRUFEUjtJQUVMRSxHQUFHLEVBQUVjLFFBQVEsQ0FBQ2QsR0FGVDtJQUdMQyxZQUFZLEVBQUVhLFFBQVEsQ0FBQ2IsWUFIbEI7SUFJTEMsU0FBUyxFQUFFWSxRQUFRLENBQUNaLFNBSmY7SUFLTEUsSUFBSSxFQUFFVSxRQUFRLENBQUNWLElBTFY7SUFNTEUsVUFBVSxFQUFFUSxRQUFRLENBQUNSO0VBTmhCLENBQVA7QUFRRDtBQUVELE9BQU8sU0FBU1MsaUJBQVQsQ0FDTHJCLEdBREssRUFFTEMsT0FGSyxFQUdTO0VBQ2QsT0FBT2tCLGtCQUFrQixDQUFDcEIsaUJBQWlCLENBQUNDLEdBQUQsRUFBTUMsT0FBTixDQUFsQixDQUF6QjtBQUNEIn0=