@payloadcms/db-postgres 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -155,7 +155,7 @@ const findMany = async function find({ adapter, fields, limit: limitArg, locale,
155
155
  methods: selectCountMethods,
156
156
  query: db.select({
157
157
  count: (0, _drizzleorm.sql)`count
158
- (*)`
158
+ (DISTINCT ${adapter.tables[tableName].id})`
159
159
  }).from(table).where(where)
160
160
  });
161
161
  totalDocs = Number(countResult[0].count);
@@ -197,4 +197,4 @@ const findMany = async function find({ adapter, fields, limit: limitArg, locale,
197
197
  };
198
198
  };
199
199
 
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maW5kL2ZpbmRNYW55LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmluZEFyZ3MgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCwgUGF5bG9hZFJlcXVlc3QsIFR5cGVXaXRoSUQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBpbkFycmF5LCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQ2hhaW5lZE1ldGhvZHMgfSBmcm9tICcuL2NoYWluTWV0aG9kcydcblxuaW1wb3J0IGJ1aWxkUXVlcnkgZnJvbSAnLi4vcXVlcmllcy9idWlsZFF1ZXJ5J1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnLi4vdHJhbnNmb3JtL3JlYWQnXG5pbXBvcnQgeyBidWlsZEZpbmRNYW55QXJncyB9IGZyb20gJy4vYnVpbGRGaW5kTWFueUFyZ3MnXG5pbXBvcnQgeyBjaGFpbk1ldGhvZHMgfSBmcm9tICcuL2NoYWluTWV0aG9kcydcblxudHlwZSBBcmdzID0gT21pdDxGaW5kQXJncywgJ2NvbGxlY3Rpb24nPiAmIHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGZpZWxkczogRmllbGRbXVxuICB0YWJsZU5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgZmluZE1hbnkgPSBhc3luYyBmdW5jdGlvbiBmaW5kKHtcbiAgYWRhcHRlcixcbiAgZmllbGRzLFxuICBsaW1pdDogbGltaXRBcmcsXG4gIGxvY2FsZSxcbiAgcGFnZSA9IDEsXG4gIHBhZ2luYXRpb24sXG4gIHJlcSA9IHt9IGFzIFBheWxvYWRSZXF1ZXN0LFxuICBza2lwLFxuICBzb3J0LFxuICB0YWJsZU5hbWUsXG4gIHdoZXJlOiB3aGVyZUFyZyxcbn06IEFyZ3MpIHtcbiAgY29uc3QgZGIgPSBhZGFwdGVyLnNlc3Npb25zW3JlcS50cmFuc2FjdGlvbklEXT8uZGIgfHwgYWRhcHRlci5kcml6emxlXG4gIGNvbnN0IHRhYmxlID0gYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXVxuXG4gIGNvbnN0IGxpbWl0ID0gbGltaXRBcmcgPz8gMTBcbiAgbGV0IHRvdGFsRG9jczogbnVtYmVyXG4gIGxldCB0b3RhbFBhZ2VzOiBudW1iZXJcbiAgbGV0IGhhc1ByZXZQYWdlOiBib29sZWFuXG4gIGxldCBoYXNOZXh0UGFnZTogYm9vbGVhblxuICBsZXQgcGFnaW5nQ291bnRlcjogbnVtYmVyXG4gIGxldCBzZWxlY3REaXN0aW5jdFJlc3VsdFxuXG4gIGNvbnN0IHsgam9pbkFsaWFzZXMsIGpvaW5zLCBvcmRlckJ5LCBzZWxlY3RGaWVsZHMsIHdoZXJlIH0gPSBhd2FpdCBidWlsZFF1ZXJ5KHtcbiAgICBhZGFwdGVyLFxuICAgIGZpZWxkcyxcbiAgICBsb2NhbGUsXG4gICAgc29ydCxcbiAgICB0YWJsZU5hbWUsXG4gICAgd2hlcmU6IHdoZXJlQXJnLFxuICB9KVxuXG4gIGNvbnN0IG9yZGVyZWRJRE1hcDogUmVjb3JkPG51bWJlciB8IHN0cmluZywgbnVtYmVyPiA9IHt9XG4gIGxldCBvcmRlcmVkSURzOiAobnVtYmVyIHwgc3RyaW5nKVtdXG5cbiAgY29uc3Qgc2VsZWN0RGlzdGluY3RNZXRob2RzOiBDaGFpbmVkTWV0aG9kcyA9IFtdXG5cbiAgaWYgKG9yZGVyQnk/Lm9yZGVyICYmIG9yZGVyQnk/LmNvbHVtbikge1xuICAgIHNlbGVjdERpc3RpbmN0TWV0aG9kcy5wdXNoKHtcbiAgICAgIGFyZ3M6IFtvcmRlckJ5Lm9yZGVyKG9yZGVyQnkuY29sdW1uKV0sXG4gICAgICBtZXRob2Q6ICdvcmRlckJ5JyxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZmluZE1hbnlBcmdzID0gYnVpbGRGaW5kTWFueUFyZ3Moe1xuICAgIGFkYXB0ZXIsXG4gICAgZGVwdGg6IDAsXG4gICAgZmllbGRzLFxuICAgIHRhYmxlTmFtZSxcbiAgfSlcblxuICAvLyBvbmx5IGZldGNoIElEcyB3aGVuIGEgc29ydCBvciB3aGVyZSBxdWVyeSBpcyB1c2VkIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBvbiBqb2luIHRhYmxlcywgb3RoZXJ3aXNlIHRoZXNlIGNhbiBiZSBkb25lIGRpcmVjdGx5IG9uIHRoZSB0YWJsZSBpbiBmaW5kTWFueVxuICBpZiAoT2JqZWN0LmtleXMoam9pbnMpLmxlbmd0aCA+IDAgfHwgam9pbkFsaWFzZXMubGVuZ3RoID4gMCkge1xuICAgIGlmICh3aGVyZSkge1xuICAgICAgc2VsZWN0RGlzdGluY3RNZXRob2RzLnB1c2goeyBhcmdzOiBbd2hlcmVdLCBtZXRob2Q6ICd3aGVyZScgfSlcbiAgICB9XG5cbiAgICBqb2luQWxpYXNlcy5mb3JFYWNoKCh7IGNvbmRpdGlvbiwgdGFibGUgfSkgPT4ge1xuICAgICAgc2VsZWN0RGlzdGluY3RNZXRob2RzLnB1c2goe1xuICAgICAgICBhcmdzOiBbdGFibGUsIGNvbmRpdGlvbl0sXG4gICAgICAgIG1ldGhvZDogJ2xlZnRKb2luJyxcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIE9iamVjdC5lbnRyaWVzKGpvaW5zKS5mb3JFYWNoKChbam9pblRhYmxlLCBjb25kaXRpb25dKSA9PiB7XG4gICAgICBpZiAoam9pblRhYmxlKSB7XG4gICAgICAgIHNlbGVjdERpc3RpbmN0TWV0aG9kcy5wdXNoKHtcbiAgICAgICAgICBhcmdzOiBbYWRhcHRlci50YWJsZXNbam9pblRhYmxlXSwgY29uZGl0aW9uXSxcbiAgICAgICAgICBtZXRob2Q6ICdsZWZ0Sm9pbicsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIHNlbGVjdERpc3RpbmN0TWV0aG9kcy5wdXNoKHsgYXJnczogW3NraXAgfHwgKHBhZ2UgLSAxKSAqIGxpbWl0XSwgbWV0aG9kOiAnb2Zmc2V0JyB9KVxuICAgIHNlbGVjdERpc3RpbmN0TWV0aG9kcy5wdXNoKHsgYXJnczogW2xpbWl0ID09PSAwID8gdW5kZWZpbmVkIDogbGltaXRdLCBtZXRob2Q6ICdsaW1pdCcgfSlcblxuICAgIHNlbGVjdERpc3RpbmN0UmVzdWx0ID0gYXdhaXQgY2hhaW5NZXRob2RzKHtcbiAgICAgIG1ldGhvZHM6IHNlbGVjdERpc3RpbmN0TWV0aG9kcyxcbiAgICAgIHF1ZXJ5OiBkYi5zZWxlY3REaXN0aW5jdChzZWxlY3RGaWVsZHMpLmZyb20odGFibGUpLFxuICAgIH0pXG5cbiAgICBpZiAoc2VsZWN0RGlzdGluY3RSZXN1bHQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkb2NzOiBbXSxcbiAgICAgICAgaGFzTmV4dFBhZ2U6IGZhbHNlLFxuICAgICAgICBoYXNQcmV2UGFnZTogZmFsc2UsXG4gICAgICAgIGxpbWl0LFxuICAgICAgICBuZXh0UGFnZTogbnVsbCxcbiAgICAgICAgcGFnZTogMSxcbiAgICAgICAgcGFnaW5nQ291bnRlcjogMCxcbiAgICAgICAgcHJldlBhZ2U6IG51bGwsXG4gICAgICAgIHRvdGFsRG9jczogMCxcbiAgICAgICAgdG90YWxQYWdlczogMCxcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gc2V0IHRoZSBpZCBpbiBhbiBvYmplY3QgZm9yIHNvcnRpbmcgbGF0ZXJcbiAgICBzZWxlY3REaXN0aW5jdFJlc3VsdC5mb3JFYWNoKCh7IGlkIH0sIGkpID0+IHtcbiAgICAgIG9yZGVyZWRJRE1hcFtpZCBhcyBudW1iZXIgfCBzdHJpbmddID0gaVxuICAgIH0pXG4gICAgb3JkZXJlZElEcyA9IE9iamVjdC5rZXlzKG9yZGVyZWRJRE1hcClcbiAgICBmaW5kTWFueUFyZ3Mud2hlcmUgPSBpbkFycmF5KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIG9yZGVyZWRJRHMpXG4gIH0gZWxzZSB7XG4gICAgZmluZE1hbnlBcmdzLmxpbWl0ID0gbGltaXRBcmcgPT09IDAgPyB1bmRlZmluZWQgOiBsaW1pdEFyZ1xuXG4gICAgY29uc3Qgb2Zmc2V0ID0gc2tpcCB8fCAocGFnZSAtIDEpICogbGltaXRBcmdcblxuICAgIGlmICghTnVtYmVyLmlzTmFOKG9mZnNldCkpIGZpbmRNYW55QXJncy5vZmZzZXQgPSBvZmZzZXRcblxuICAgIGlmICh3aGVyZSkge1xuICAgICAgZmluZE1hbnlBcmdzLndoZXJlID0gd2hlcmVcbiAgICB9XG4gICAgZmluZE1hbnlBcmdzLm9yZGVyQnkgPSBvcmRlckJ5Lm9yZGVyKG9yZGVyQnkuY29sdW1uKVxuICB9XG5cbiAgY29uc3QgZmluZFByb21pc2UgPSBkYi5xdWVyeVt0YWJsZU5hbWVdLmZpbmRNYW55KGZpbmRNYW55QXJncylcblxuICBpZiAocGFnaW5hdGlvbiAhPT0gZmFsc2UgJiYgKG9yZGVyZWRJRHMgPyBvcmRlcmVkSURzPy5sZW5ndGggPj0gbGltaXQgOiB0cnVlKSkge1xuICAgIGNvbnN0IHNlbGVjdENvdW50TWV0aG9kczogQ2hhaW5lZE1ldGhvZHMgPSBbXVxuXG4gICAgam9pbkFsaWFzZXMuZm9yRWFjaCgoeyBjb25kaXRpb24sIHRhYmxlIH0pID0+IHtcbiAgICAgIHNlbGVjdENvdW50TWV0aG9kcy5wdXNoKHtcbiAgICAgICAgYXJnczogW3RhYmxlLCBjb25kaXRpb25dLFxuICAgICAgICBtZXRob2Q6ICdsZWZ0Sm9pbicsXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBPYmplY3QuZW50cmllcyhqb2lucykuZm9yRWFjaCgoW2pvaW5UYWJsZSwgY29uZGl0aW9uXSkgPT4ge1xuICAgICAgaWYgKGpvaW5UYWJsZSkge1xuICAgICAgICBzZWxlY3RDb3VudE1ldGhvZHMucHVzaCh7XG4gICAgICAgICAgYXJnczogW2FkYXB0ZXIudGFibGVzW2pvaW5UYWJsZV0sIGNvbmRpdGlvbl0sXG4gICAgICAgICAgbWV0aG9kOiAnbGVmdEpvaW4nLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBjb3VudFJlc3VsdCA9IGF3YWl0IGNoYWluTWV0aG9kcyh7XG4gICAgICBtZXRob2RzOiBzZWxlY3RDb3VudE1ldGhvZHMsXG4gICAgICBxdWVyeTogZGJcbiAgICAgICAgLnNlbGVjdCh7XG4gICAgICAgICAgY291bnQ6IHNxbDxudW1iZXI+YGNvdW50XG4gICAgICAgICAgICAgICgqKWAsXG4gICAgICAgIH0pXG4gICAgICAgIC5mcm9tKHRhYmxlKVxuICAgICAgICAud2hlcmUod2hlcmUpLFxuICAgIH0pXG4gICAgdG90YWxEb2NzID0gTnVtYmVyKGNvdW50UmVzdWx0WzBdLmNvdW50KVxuICAgIHRvdGFsUGFnZXMgPSB0eXBlb2YgbGltaXQgPT09ICdudW1iZXInICYmIGxpbWl0ICE9PSAwID8gTWF0aC5jZWlsKHRvdGFsRG9jcyAvIGxpbWl0KSA6IDFcbiAgICBoYXNQcmV2UGFnZSA9IHBhZ2UgPiAxXG4gICAgaGFzTmV4dFBhZ2UgPSB0b3RhbFBhZ2VzID4gcGFnZVxuICAgIHBhZ2luZ0NvdW50ZXIgPSAocGFnZSAtIDEpICogbGltaXQgKyAxXG4gIH1cblxuICBjb25zdCByYXdEb2NzID0gYXdhaXQgZmluZFByb21pc2VcbiAgLy8gc29ydCByYXdEb2NzIGZyb20gc2VsZWN0UXVlcnlcbiAgaWYgKE9iamVjdC5rZXlzKG9yZGVyZWRJRE1hcCkubGVuZ3RoID4gMCkge1xuICAgIHJhd0RvY3Muc29ydCgoYSwgYikgPT4gb3JkZXJlZElETWFwW2EuaWRdIC0gb3JkZXJlZElETWFwW2IuaWRdKVxuICB9XG5cbiAgaWYgKHBhZ2luYXRpb24gPT09IGZhbHNlIHx8ICF0b3RhbERvY3MpIHtcbiAgICB0b3RhbERvY3MgPSByYXdEb2NzLmxlbmd0aFxuICAgIHRvdGFsUGFnZXMgPSAxXG4gICAgcGFnaW5nQ291bnRlciA9IDFcbiAgICBoYXNQcmV2UGFnZSA9IGZhbHNlXG4gICAgaGFzTmV4dFBhZ2UgPSBmYWxzZVxuICB9XG5cbiAgY29uc3QgZG9jcyA9IHJhd0RvY3MubWFwKChkYXRhOiBUeXBlV2l0aElEKSA9PiB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybSh7XG4gICAgICBjb25maWc6IGFkYXB0ZXIucGF5bG9hZC5jb25maWcsXG4gICAgICBkYXRhLFxuICAgICAgZmllbGRzLFxuICAgIH0pXG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBkb2NzLFxuICAgIGhhc05leHRQYWdlLFxuICAgIGhhc1ByZXZQYWdlLFxuICAgIGxpbWl0LFxuICAgIG5leHRQYWdlOiBoYXNOZXh0UGFnZSA/IHBhZ2UgKyAxIDogbnVsbCxcbiAgICBwYWdlLFxuICAgIHBhZ2luZ0NvdW50ZXIsXG4gICAgcHJldlBhZ2U6IGhhc1ByZXZQYWdlID8gcGFnZSAtIDEgOiBudWxsLFxuICAgIHRvdGFsRG9jcyxcbiAgICB0b3RhbFBhZ2VzLFxuICB9XG59XG4iXSwibmFtZXMiOlsiZmluZE1hbnkiLCJmaW5kIiwiYWRhcHRlciIsImZpZWxkcyIsImxpbWl0IiwibGltaXRBcmciLCJsb2NhbGUiLCJwYWdlIiwicGFnaW5hdGlvbiIsInJlcSIsInNraXAiLCJzb3J0IiwidGFibGVOYW1lIiwid2hlcmUiLCJ3aGVyZUFyZyIsImRiIiwic2Vzc2lvbnMiLCJ0cmFuc2FjdGlvbklEIiwiZHJpenpsZSIsInRhYmxlIiwidGFibGVzIiwidG90YWxEb2NzIiwidG90YWxQYWdlcyIsImhhc1ByZXZQYWdlIiwiaGFzTmV4dFBhZ2UiLCJwYWdpbmdDb3VudGVyIiwic2VsZWN0RGlzdGluY3RSZXN1bHQiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwib3JkZXJCeSIsInNlbGVjdEZpZWxkcyIsImJ1aWxkUXVlcnkiLCJvcmRlcmVkSURNYXAiLCJvcmRlcmVkSURzIiwic2VsZWN0RGlzdGluY3RNZXRob2RzIiwib3JkZXIiLCJjb2x1bW4iLCJwdXNoIiwiYXJncyIsIm1ldGhvZCIsImZpbmRNYW55QXJncyIsImJ1aWxkRmluZE1hbnlBcmdzIiwiZGVwdGgiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZm9yRWFjaCIsImNvbmRpdGlvbiIsImVudHJpZXMiLCJqb2luVGFibGUiLCJ1bmRlZmluZWQiLCJjaGFpbk1ldGhvZHMiLCJtZXRob2RzIiwicXVlcnkiLCJzZWxlY3REaXN0aW5jdCIsImZyb20iLCJkb2NzIiwibmV4dFBhZ2UiLCJwcmV2UGFnZSIsImlkIiwiaSIsImluQXJyYXkiLCJvZmZzZXQiLCJOdW1iZXIiLCJpc05hTiIsImZpbmRQcm9taXNlIiwic2VsZWN0Q291bnRNZXRob2RzIiwiY291bnRSZXN1bHQiLCJzZWxlY3QiLCJjb3VudCIsInNxbCIsIk1hdGgiLCJjZWlsIiwicmF3RG9jcyIsImEiLCJiIiwibWFwIiwiZGF0YSIsInRyYW5zZm9ybSIsImNvbmZpZyIsInBheWxvYWQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBbUJhQTs7O2VBQUFBOzs7NEJBaEJnQjttRUFLTjtzQkFDRzttQ0FDUTs4QkFDTDs7Ozs7O0FBUXRCLE1BQU1BLFdBQVcsZUFBZUMsS0FBSyxFQUMxQ0MsT0FBTyxFQUNQQyxNQUFNLEVBQ05DLE9BQU9DLFFBQVEsRUFDZkMsTUFBTSxFQUNOQyxPQUFPLENBQUMsRUFDUkMsVUFBVSxFQUNWQyxNQUFNLENBQUMsQ0FBbUIsRUFDMUJDLElBQUksRUFDSkMsSUFBSSxFQUNKQyxTQUFTLEVBQ1RDLE9BQU9DLFFBQVEsRUFDVjtJQUNMLE1BQU1DLEtBQUtiLFFBQVFjLFFBQVEsQ0FBQ1AsSUFBSVEsYUFBYSxDQUFDLEVBQUVGLE1BQU1iLFFBQVFnQixPQUFPO0lBQ3JFLE1BQU1DLFFBQVFqQixRQUFRa0IsTUFBTSxDQUFDUixVQUFVO0lBRXZDLE1BQU1SLFFBQVFDLFlBQVk7SUFDMUIsSUFBSWdCO0lBQ0osSUFBSUM7SUFDSixJQUFJQztJQUNKLElBQUlDO0lBQ0osSUFBSUM7SUFDSixJQUFJQztJQUVKLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsWUFBWSxFQUFFakIsS0FBSyxFQUFFLEdBQUcsTUFBTWtCLElBQUFBLG1CQUFVLEVBQUM7UUFDNUU3QjtRQUNBQztRQUNBRztRQUNBSztRQUNBQztRQUNBQyxPQUFPQztJQUNUO0lBRUEsTUFBTWtCLGVBQWdELENBQUM7SUFDdkQsSUFBSUM7SUFFSixNQUFNQyx3QkFBd0MsRUFBRTtJQUVoRCxJQUFJTCxTQUFTTSxTQUFTTixTQUFTTyxRQUFRO1FBQ3JDRixzQkFBc0JHLElBQUksQ0FBQztZQUN6QkMsTUFBTTtnQkFBQ1QsUUFBUU0sS0FBSyxDQUFDTixRQUFRTyxNQUFNO2FBQUU7WUFDckNHLFFBQVE7UUFDVjtJQUNGO0lBRUEsTUFBTUMsZUFBZUMsSUFBQUEsb0NBQWlCLEVBQUM7UUFDckN2QztRQUNBd0MsT0FBTztRQUNQdkM7UUFDQVM7SUFDRjtJQUVBLHdKQUF3SjtJQUN4SixJQUFJK0IsT0FBT0MsSUFBSSxDQUFDaEIsT0FBT2lCLE1BQU0sR0FBRyxLQUFLbEIsWUFBWWtCLE1BQU0sR0FBRyxHQUFHO1FBQzNELElBQUloQyxPQUFPO1lBQ1RxQixzQkFBc0JHLElBQUksQ0FBQztnQkFBRUMsTUFBTTtvQkFBQ3pCO2lCQUFNO2dCQUFFMEIsUUFBUTtZQUFRO1FBQzlEO1FBRUFaLFlBQVltQixPQUFPLENBQUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU1QixLQUFLLEVBQUU7WUFDdkNlLHNCQUFzQkcsSUFBSSxDQUFDO2dCQUN6QkMsTUFBTTtvQkFBQ25CO29CQUFPNEI7aUJBQVU7Z0JBQ3hCUixRQUFRO1lBQ1Y7UUFDRjtRQUVBSSxPQUFPSyxPQUFPLENBQUNwQixPQUFPa0IsT0FBTyxDQUFDLENBQUMsQ0FBQ0csV0FBV0YsVUFBVTtZQUNuRCxJQUFJRSxXQUFXO2dCQUNiZixzQkFBc0JHLElBQUksQ0FBQztvQkFDekJDLE1BQU07d0JBQUNwQyxRQUFRa0IsTUFBTSxDQUFDNkIsVUFBVTt3QkFBRUY7cUJBQVU7b0JBQzVDUixRQUFRO2dCQUNWO1lBQ0Y7UUFDRjtRQUVBTCxzQkFBc0JHLElBQUksQ0FBQztZQUFFQyxNQUFNO2dCQUFDNUIsUUFBUSxBQUFDSCxDQUFBQSxPQUFPLENBQUEsSUFBS0g7YUFBTTtZQUFFbUMsUUFBUTtRQUFTO1FBQ2xGTCxzQkFBc0JHLElBQUksQ0FBQztZQUFFQyxNQUFNO2dCQUFDbEMsVUFBVSxJQUFJOEMsWUFBWTlDO2FBQU07WUFBRW1DLFFBQVE7UUFBUTtRQUV0RmIsdUJBQXVCLE1BQU15QixJQUFBQSwwQkFBWSxFQUFDO1lBQ3hDQyxTQUFTbEI7WUFDVG1CLE9BQU90QyxHQUFHdUMsY0FBYyxDQUFDeEIsY0FBY3lCLElBQUksQ0FBQ3BDO1FBQzlDO1FBRUEsSUFBSU8scUJBQXFCbUIsTUFBTSxLQUFLLEdBQUc7WUFDckMsT0FBTztnQkFDTFcsTUFBTSxFQUFFO2dCQUNSaEMsYUFBYTtnQkFDYkQsYUFBYTtnQkFDYm5CO2dCQUNBcUQsVUFBVTtnQkFDVmxELE1BQU07Z0JBQ05rQixlQUFlO2dCQUNmaUMsVUFBVTtnQkFDVnJDLFdBQVc7Z0JBQ1hDLFlBQVk7WUFDZDtRQUNGO1FBQ0EsNENBQTRDO1FBQzVDSSxxQkFBcUJvQixPQUFPLENBQUMsQ0FBQyxFQUFFYSxFQUFFLEVBQUUsRUFBRUM7WUFDcEM1QixZQUFZLENBQUMyQixHQUFzQixHQUFHQztRQUN4QztRQUNBM0IsYUFBYVUsT0FBT0MsSUFBSSxDQUFDWjtRQUN6QlEsYUFBYTNCLEtBQUssR0FBR2dELElBQUFBLG1CQUFPLEVBQUMzRCxRQUFRa0IsTUFBTSxDQUFDUixVQUFVLENBQUMrQyxFQUFFLEVBQUUxQjtJQUM3RCxPQUFPO1FBQ0xPLGFBQWFwQyxLQUFLLEdBQUdDLGFBQWEsSUFBSTZDLFlBQVk3QztRQUVsRCxNQUFNeUQsU0FBU3BELFFBQVEsQUFBQ0gsQ0FBQUEsT0FBTyxDQUFBLElBQUtGO1FBRXBDLElBQUksQ0FBQzBELE9BQU9DLEtBQUssQ0FBQ0YsU0FBU3RCLGFBQWFzQixNQUFNLEdBQUdBO1FBRWpELElBQUlqRCxPQUFPO1lBQ1QyQixhQUFhM0IsS0FBSyxHQUFHQTtRQUN2QjtRQUNBMkIsYUFBYVgsT0FBTyxHQUFHQSxRQUFRTSxLQUFLLENBQUNOLFFBQVFPLE1BQU07SUFDckQ7SUFFQSxNQUFNNkIsY0FBY2xELEdBQUdzQyxLQUFLLENBQUN6QyxVQUFVLENBQUNaLFFBQVEsQ0FBQ3dDO0lBRWpELElBQUloQyxlQUFlLFNBQVV5QixDQUFBQSxhQUFhQSxZQUFZWSxVQUFVekMsUUFBUSxJQUFHLEdBQUk7UUFDN0UsTUFBTThELHFCQUFxQyxFQUFFO1FBRTdDdkMsWUFBWW1CLE9BQU8sQ0FBQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTVCLEtBQUssRUFBRTtZQUN2QytDLG1CQUFtQjdCLElBQUksQ0FBQztnQkFDdEJDLE1BQU07b0JBQUNuQjtvQkFBTzRCO2lCQUFVO2dCQUN4QlIsUUFBUTtZQUNWO1FBQ0Y7UUFFQUksT0FBT0ssT0FBTyxDQUFDcEIsT0FBT2tCLE9BQU8sQ0FBQyxDQUFDLENBQUNHLFdBQVdGLFVBQVU7WUFDbkQsSUFBSUUsV0FBVztnQkFDYmlCLG1CQUFtQjdCLElBQUksQ0FBQztvQkFDdEJDLE1BQU07d0JBQUNwQyxRQUFRa0IsTUFBTSxDQUFDNkIsVUFBVTt3QkFBRUY7cUJBQVU7b0JBQzVDUixRQUFRO2dCQUNWO1lBQ0Y7UUFDRjtRQUVBLE1BQU00QixjQUFjLE1BQU1oQixJQUFBQSwwQkFBWSxFQUFDO1lBQ3JDQyxTQUFTYztZQUNUYixPQUFPdEMsR0FDSnFELE1BQU0sQ0FBQztnQkFDTkMsT0FBT0MsSUFBQUEsZUFBRyxDQUFRLENBQUM7aUJBQ1osQ0FBQztZQUNWLEdBQ0NmLElBQUksQ0FBQ3BDLE9BQ0xOLEtBQUssQ0FBQ0E7UUFDWDtRQUNBUSxZQUFZMEMsT0FBT0ksV0FBVyxDQUFDLEVBQUUsQ0FBQ0UsS0FBSztRQUN2Qy9DLGFBQWEsT0FBT2xCLFVBQVUsWUFBWUEsVUFBVSxJQUFJbUUsS0FBS0MsSUFBSSxDQUFDbkQsWUFBWWpCLFNBQVM7UUFDdkZtQixjQUFjaEIsT0FBTztRQUNyQmlCLGNBQWNGLGFBQWFmO1FBQzNCa0IsZ0JBQWdCLEFBQUNsQixDQUFBQSxPQUFPLENBQUEsSUFBS0gsUUFBUTtJQUN2QztJQUVBLE1BQU1xRSxVQUFVLE1BQU1SO0lBQ3RCLGdDQUFnQztJQUNoQyxJQUFJdEIsT0FBT0MsSUFBSSxDQUFDWixjQUFjYSxNQUFNLEdBQUcsR0FBRztRQUN4QzRCLFFBQVE5RCxJQUFJLENBQUMsQ0FBQytELEdBQUdDLElBQU0zQyxZQUFZLENBQUMwQyxFQUFFZixFQUFFLENBQUMsR0FBRzNCLFlBQVksQ0FBQzJDLEVBQUVoQixFQUFFLENBQUM7SUFDaEU7SUFFQSxJQUFJbkQsZUFBZSxTQUFTLENBQUNhLFdBQVc7UUFDdENBLFlBQVlvRCxRQUFRNUIsTUFBTTtRQUMxQnZCLGFBQWE7UUFDYkcsZ0JBQWdCO1FBQ2hCRixjQUFjO1FBQ2RDLGNBQWM7SUFDaEI7SUFFQSxNQUFNZ0MsT0FBT2lCLFFBQVFHLEdBQUcsQ0FBQyxDQUFDQztRQUN4QixPQUFPQyxJQUFBQSxlQUFTLEVBQUM7WUFDZkMsUUFBUTdFLFFBQVE4RSxPQUFPLENBQUNELE1BQU07WUFDOUJGO1lBQ0ExRTtRQUNGO0lBQ0Y7SUFFQSxPQUFPO1FBQ0xxRDtRQUNBaEM7UUFDQUQ7UUFDQW5CO1FBQ0FxRCxVQUFVakMsY0FBY2pCLE9BQU8sSUFBSTtRQUNuQ0E7UUFDQWtCO1FBQ0FpQyxVQUFVbkMsY0FBY2hCLE9BQU8sSUFBSTtRQUNuQ2M7UUFDQUM7SUFDRjtBQUNGIn0=
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maW5kL2ZpbmRNYW55LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmluZEFyZ3MgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCwgUGF5bG9hZFJlcXVlc3QsIFR5cGVXaXRoSUQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBpbkFycmF5LCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQ2hhaW5lZE1ldGhvZHMgfSBmcm9tICcuL2NoYWluTWV0aG9kcydcblxuaW1wb3J0IGJ1aWxkUXVlcnkgZnJvbSAnLi4vcXVlcmllcy9idWlsZFF1ZXJ5J1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnLi4vdHJhbnNmb3JtL3JlYWQnXG5pbXBvcnQgeyBidWlsZEZpbmRNYW55QXJncyB9IGZyb20gJy4vYnVpbGRGaW5kTWFueUFyZ3MnXG5pbXBvcnQgeyBjaGFpbk1ldGhvZHMgfSBmcm9tICcuL2NoYWluTWV0aG9kcydcblxudHlwZSBBcmdzID0gT21pdDxGaW5kQXJncywgJ2NvbGxlY3Rpb24nPiAmIHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGZpZWxkczogRmllbGRbXVxuICB0YWJsZU5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgZmluZE1hbnkgPSBhc3luYyBmdW5jdGlvbiBmaW5kKHtcbiAgYWRhcHRlcixcbiAgZmllbGRzLFxuICBsaW1pdDogbGltaXRBcmcsXG4gIGxvY2FsZSxcbiAgcGFnZSA9IDEsXG4gIHBhZ2luYXRpb24sXG4gIHJlcSA9IHt9IGFzIFBheWxvYWRSZXF1ZXN0LFxuICBza2lwLFxuICBzb3J0LFxuICB0YWJsZU5hbWUsXG4gIHdoZXJlOiB3aGVyZUFyZyxcbn06IEFyZ3MpIHtcbiAgY29uc3QgZGIgPSBhZGFwdGVyLnNlc3Npb25zW3JlcS50cmFuc2FjdGlvbklEXT8uZGIgfHwgYWRhcHRlci5kcml6emxlXG4gIGNvbnN0IHRhYmxlID0gYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXVxuXG4gIGNvbnN0IGxpbWl0ID0gbGltaXRBcmcgPz8gMTBcbiAgbGV0IHRvdGFsRG9jczogbnVtYmVyXG4gIGxldCB0b3RhbFBhZ2VzOiBudW1iZXJcbiAgbGV0IGhhc1ByZXZQYWdlOiBib29sZWFuXG4gIGxldCBoYXNOZXh0UGFnZTogYm9vbGVhblxuICBsZXQgcGFnaW5nQ291bnRlcjogbnVtYmVyXG4gIGxldCBzZWxlY3REaXN0aW5jdFJlc3VsdFxuXG4gIGNvbnN0IHsgam9pbkFsaWFzZXMsIGpvaW5zLCBvcmRlckJ5LCBzZWxlY3RGaWVsZHMsIHdoZXJlIH0gPSBhd2FpdCBidWlsZFF1ZXJ5KHtcbiAgICBhZGFwdGVyLFxuICAgIGZpZWxkcyxcbiAgICBsb2NhbGUsXG4gICAgc29ydCxcbiAgICB0YWJsZU5hbWUsXG4gICAgd2hlcmU6IHdoZXJlQXJnLFxuICB9KVxuXG4gIGNvbnN0IG9yZGVyZWRJRE1hcDogUmVjb3JkPG51bWJlciB8IHN0cmluZywgbnVtYmVyPiA9IHt9XG4gIGxldCBvcmRlcmVkSURzOiAobnVtYmVyIHwgc3RyaW5nKVtdXG5cbiAgY29uc3Qgc2VsZWN0RGlzdGluY3RNZXRob2RzOiBDaGFpbmVkTWV0aG9kcyA9IFtdXG5cbiAgaWYgKG9yZGVyQnk/Lm9yZGVyICYmIG9yZGVyQnk/LmNvbHVtbikge1xuICAgIHNlbGVjdERpc3RpbmN0TWV0aG9kcy5wdXNoKHtcbiAgICAgIGFyZ3M6IFtvcmRlckJ5Lm9yZGVyKG9yZGVyQnkuY29sdW1uKV0sXG4gICAgICBtZXRob2Q6ICdvcmRlckJ5JyxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZmluZE1hbnlBcmdzID0gYnVpbGRGaW5kTWFueUFyZ3Moe1xuICAgIGFkYXB0ZXIsXG4gICAgZGVwdGg6IDAsXG4gICAgZmllbGRzLFxuICAgIHRhYmxlTmFtZSxcbiAgfSlcblxuICAvLyBvbmx5IGZldGNoIElEcyB3aGVuIGEgc29ydCBvciB3aGVyZSBxdWVyeSBpcyB1c2VkIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBvbiBqb2luIHRhYmxlcywgb3RoZXJ3aXNlIHRoZXNlIGNhbiBiZSBkb25lIGRpcmVjdGx5IG9uIHRoZSB0YWJsZSBpbiBmaW5kTWFueVxuICBpZiAoT2JqZWN0LmtleXMoam9pbnMpLmxlbmd0aCA+IDAgfHwgam9pbkFsaWFzZXMubGVuZ3RoID4gMCkge1xuICAgIGlmICh3aGVyZSkge1xuICAgICAgc2VsZWN0RGlzdGluY3RNZXRob2RzLnB1c2goeyBhcmdzOiBbd2hlcmVdLCBtZXRob2Q6ICd3aGVyZScgfSlcbiAgICB9XG5cbiAgICBqb2luQWxpYXNlcy5mb3JFYWNoKCh7IGNvbmRpdGlvbiwgdGFibGUgfSkgPT4ge1xuICAgICAgc2VsZWN0RGlzdGluY3RNZXRob2RzLnB1c2goe1xuICAgICAgICBhcmdzOiBbdGFibGUsIGNvbmRpdGlvbl0sXG4gICAgICAgIG1ldGhvZDogJ2xlZnRKb2luJyxcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIE9iamVjdC5lbnRyaWVzKGpvaW5zKS5mb3JFYWNoKChbam9pblRhYmxlLCBjb25kaXRpb25dKSA9PiB7XG4gICAgICBpZiAoam9pblRhYmxlKSB7XG4gICAgICAgIHNlbGVjdERpc3RpbmN0TWV0aG9kcy5wdXNoKHtcbiAgICAgICAgICBhcmdzOiBbYWRhcHRlci50YWJsZXNbam9pblRhYmxlXSwgY29uZGl0aW9uXSxcbiAgICAgICAgICBtZXRob2Q6ICdsZWZ0Sm9pbicsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIHNlbGVjdERpc3RpbmN0TWV0aG9kcy5wdXNoKHsgYXJnczogW3NraXAgfHwgKHBhZ2UgLSAxKSAqIGxpbWl0XSwgbWV0aG9kOiAnb2Zmc2V0JyB9KVxuICAgIHNlbGVjdERpc3RpbmN0TWV0aG9kcy5wdXNoKHsgYXJnczogW2xpbWl0ID09PSAwID8gdW5kZWZpbmVkIDogbGltaXRdLCBtZXRob2Q6ICdsaW1pdCcgfSlcblxuICAgIHNlbGVjdERpc3RpbmN0UmVzdWx0ID0gYXdhaXQgY2hhaW5NZXRob2RzKHtcbiAgICAgIG1ldGhvZHM6IHNlbGVjdERpc3RpbmN0TWV0aG9kcyxcbiAgICAgIHF1ZXJ5OiBkYi5zZWxlY3REaXN0aW5jdChzZWxlY3RGaWVsZHMpLmZyb20odGFibGUpLFxuICAgIH0pXG5cbiAgICBpZiAoc2VsZWN0RGlzdGluY3RSZXN1bHQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkb2NzOiBbXSxcbiAgICAgICAgaGFzTmV4dFBhZ2U6IGZhbHNlLFxuICAgICAgICBoYXNQcmV2UGFnZTogZmFsc2UsXG4gICAgICAgIGxpbWl0LFxuICAgICAgICBuZXh0UGFnZTogbnVsbCxcbiAgICAgICAgcGFnZTogMSxcbiAgICAgICAgcGFnaW5nQ291bnRlcjogMCxcbiAgICAgICAgcHJldlBhZ2U6IG51bGwsXG4gICAgICAgIHRvdGFsRG9jczogMCxcbiAgICAgICAgdG90YWxQYWdlczogMCxcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gc2V0IHRoZSBpZCBpbiBhbiBvYmplY3QgZm9yIHNvcnRpbmcgbGF0ZXJcbiAgICBzZWxlY3REaXN0aW5jdFJlc3VsdC5mb3JFYWNoKCh7IGlkIH0sIGkpID0+IHtcbiAgICAgIG9yZGVyZWRJRE1hcFtpZCBhcyBudW1iZXIgfCBzdHJpbmddID0gaVxuICAgIH0pXG4gICAgb3JkZXJlZElEcyA9IE9iamVjdC5rZXlzKG9yZGVyZWRJRE1hcClcbiAgICBmaW5kTWFueUFyZ3Mud2hlcmUgPSBpbkFycmF5KGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIG9yZGVyZWRJRHMpXG4gIH0gZWxzZSB7XG4gICAgZmluZE1hbnlBcmdzLmxpbWl0ID0gbGltaXRBcmcgPT09IDAgPyB1bmRlZmluZWQgOiBsaW1pdEFyZ1xuXG4gICAgY29uc3Qgb2Zmc2V0ID0gc2tpcCB8fCAocGFnZSAtIDEpICogbGltaXRBcmdcblxuICAgIGlmICghTnVtYmVyLmlzTmFOKG9mZnNldCkpIGZpbmRNYW55QXJncy5vZmZzZXQgPSBvZmZzZXRcblxuICAgIGlmICh3aGVyZSkge1xuICAgICAgZmluZE1hbnlBcmdzLndoZXJlID0gd2hlcmVcbiAgICB9XG4gICAgZmluZE1hbnlBcmdzLm9yZGVyQnkgPSBvcmRlckJ5Lm9yZGVyKG9yZGVyQnkuY29sdW1uKVxuICB9XG5cbiAgY29uc3QgZmluZFByb21pc2UgPSBkYi5xdWVyeVt0YWJsZU5hbWVdLmZpbmRNYW55KGZpbmRNYW55QXJncylcblxuICBpZiAocGFnaW5hdGlvbiAhPT0gZmFsc2UgJiYgKG9yZGVyZWRJRHMgPyBvcmRlcmVkSURzPy5sZW5ndGggPj0gbGltaXQgOiB0cnVlKSkge1xuICAgIGNvbnN0IHNlbGVjdENvdW50TWV0aG9kczogQ2hhaW5lZE1ldGhvZHMgPSBbXVxuXG4gICAgam9pbkFsaWFzZXMuZm9yRWFjaCgoeyBjb25kaXRpb24sIHRhYmxlIH0pID0+IHtcbiAgICAgIHNlbGVjdENvdW50TWV0aG9kcy5wdXNoKHtcbiAgICAgICAgYXJnczogW3RhYmxlLCBjb25kaXRpb25dLFxuICAgICAgICBtZXRob2Q6ICdsZWZ0Sm9pbicsXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBPYmplY3QuZW50cmllcyhqb2lucykuZm9yRWFjaCgoW2pvaW5UYWJsZSwgY29uZGl0aW9uXSkgPT4ge1xuICAgICAgaWYgKGpvaW5UYWJsZSkge1xuICAgICAgICBzZWxlY3RDb3VudE1ldGhvZHMucHVzaCh7XG4gICAgICAgICAgYXJnczogW2FkYXB0ZXIudGFibGVzW2pvaW5UYWJsZV0sIGNvbmRpdGlvbl0sXG4gICAgICAgICAgbWV0aG9kOiAnbGVmdEpvaW4nLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBjb3VudFJlc3VsdCA9IGF3YWl0IGNoYWluTWV0aG9kcyh7XG4gICAgICBtZXRob2RzOiBzZWxlY3RDb3VudE1ldGhvZHMsXG4gICAgICBxdWVyeTogZGJcbiAgICAgICAgLnNlbGVjdCh7XG4gICAgICAgICAgY291bnQ6IHNxbDxudW1iZXI+YGNvdW50XG4gICAgICAgICAgICAgIChESVNUSU5DVCAke2FkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWR9KWAsXG4gICAgICAgIH0pXG4gICAgICAgIC5mcm9tKHRhYmxlKVxuICAgICAgICAud2hlcmUod2hlcmUpLFxuICAgIH0pXG4gICAgdG90YWxEb2NzID0gTnVtYmVyKGNvdW50UmVzdWx0WzBdLmNvdW50KVxuICAgIHRvdGFsUGFnZXMgPSB0eXBlb2YgbGltaXQgPT09ICdudW1iZXInICYmIGxpbWl0ICE9PSAwID8gTWF0aC5jZWlsKHRvdGFsRG9jcyAvIGxpbWl0KSA6IDFcbiAgICBoYXNQcmV2UGFnZSA9IHBhZ2UgPiAxXG4gICAgaGFzTmV4dFBhZ2UgPSB0b3RhbFBhZ2VzID4gcGFnZVxuICAgIHBhZ2luZ0NvdW50ZXIgPSAocGFnZSAtIDEpICogbGltaXQgKyAxXG4gIH1cblxuICBjb25zdCByYXdEb2NzID0gYXdhaXQgZmluZFByb21pc2VcbiAgLy8gc29ydCByYXdEb2NzIGZyb20gc2VsZWN0UXVlcnlcbiAgaWYgKE9iamVjdC5rZXlzKG9yZGVyZWRJRE1hcCkubGVuZ3RoID4gMCkge1xuICAgIHJhd0RvY3Muc29ydCgoYSwgYikgPT4gb3JkZXJlZElETWFwW2EuaWRdIC0gb3JkZXJlZElETWFwW2IuaWRdKVxuICB9XG5cbiAgaWYgKHBhZ2luYXRpb24gPT09IGZhbHNlIHx8ICF0b3RhbERvY3MpIHtcbiAgICB0b3RhbERvY3MgPSByYXdEb2NzLmxlbmd0aFxuICAgIHRvdGFsUGFnZXMgPSAxXG4gICAgcGFnaW5nQ291bnRlciA9IDFcbiAgICBoYXNQcmV2UGFnZSA9IGZhbHNlXG4gICAgaGFzTmV4dFBhZ2UgPSBmYWxzZVxuICB9XG5cbiAgY29uc3QgZG9jcyA9IHJhd0RvY3MubWFwKChkYXRhOiBUeXBlV2l0aElEKSA9PiB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybSh7XG4gICAgICBjb25maWc6IGFkYXB0ZXIucGF5bG9hZC5jb25maWcsXG4gICAgICBkYXRhLFxuICAgICAgZmllbGRzLFxuICAgIH0pXG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBkb2NzLFxuICAgIGhhc05leHRQYWdlLFxuICAgIGhhc1ByZXZQYWdlLFxuICAgIGxpbWl0LFxuICAgIG5leHRQYWdlOiBoYXNOZXh0UGFnZSA/IHBhZ2UgKyAxIDogbnVsbCxcbiAgICBwYWdlLFxuICAgIHBhZ2luZ0NvdW50ZXIsXG4gICAgcHJldlBhZ2U6IGhhc1ByZXZQYWdlID8gcGFnZSAtIDEgOiBudWxsLFxuICAgIHRvdGFsRG9jcyxcbiAgICB0b3RhbFBhZ2VzLFxuICB9XG59XG4iXSwibmFtZXMiOlsiZmluZE1hbnkiLCJmaW5kIiwiYWRhcHRlciIsImZpZWxkcyIsImxpbWl0IiwibGltaXRBcmciLCJsb2NhbGUiLCJwYWdlIiwicGFnaW5hdGlvbiIsInJlcSIsInNraXAiLCJzb3J0IiwidGFibGVOYW1lIiwid2hlcmUiLCJ3aGVyZUFyZyIsImRiIiwic2Vzc2lvbnMiLCJ0cmFuc2FjdGlvbklEIiwiZHJpenpsZSIsInRhYmxlIiwidGFibGVzIiwidG90YWxEb2NzIiwidG90YWxQYWdlcyIsImhhc1ByZXZQYWdlIiwiaGFzTmV4dFBhZ2UiLCJwYWdpbmdDb3VudGVyIiwic2VsZWN0RGlzdGluY3RSZXN1bHQiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwib3JkZXJCeSIsInNlbGVjdEZpZWxkcyIsImJ1aWxkUXVlcnkiLCJvcmRlcmVkSURNYXAiLCJvcmRlcmVkSURzIiwic2VsZWN0RGlzdGluY3RNZXRob2RzIiwib3JkZXIiLCJjb2x1bW4iLCJwdXNoIiwiYXJncyIsIm1ldGhvZCIsImZpbmRNYW55QXJncyIsImJ1aWxkRmluZE1hbnlBcmdzIiwiZGVwdGgiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZm9yRWFjaCIsImNvbmRpdGlvbiIsImVudHJpZXMiLCJqb2luVGFibGUiLCJ1bmRlZmluZWQiLCJjaGFpbk1ldGhvZHMiLCJtZXRob2RzIiwicXVlcnkiLCJzZWxlY3REaXN0aW5jdCIsImZyb20iLCJkb2NzIiwibmV4dFBhZ2UiLCJwcmV2UGFnZSIsImlkIiwiaSIsImluQXJyYXkiLCJvZmZzZXQiLCJOdW1iZXIiLCJpc05hTiIsImZpbmRQcm9taXNlIiwic2VsZWN0Q291bnRNZXRob2RzIiwiY291bnRSZXN1bHQiLCJzZWxlY3QiLCJjb3VudCIsInNxbCIsIk1hdGgiLCJjZWlsIiwicmF3RG9jcyIsImEiLCJiIiwibWFwIiwiZGF0YSIsInRyYW5zZm9ybSIsImNvbmZpZyIsInBheWxvYWQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBbUJhQTs7O2VBQUFBOzs7NEJBaEJnQjttRUFLTjtzQkFDRzttQ0FDUTs4QkFDTDs7Ozs7O0FBUXRCLE1BQU1BLFdBQVcsZUFBZUMsS0FBSyxFQUMxQ0MsT0FBTyxFQUNQQyxNQUFNLEVBQ05DLE9BQU9DLFFBQVEsRUFDZkMsTUFBTSxFQUNOQyxPQUFPLENBQUMsRUFDUkMsVUFBVSxFQUNWQyxNQUFNLENBQUMsQ0FBbUIsRUFDMUJDLElBQUksRUFDSkMsSUFBSSxFQUNKQyxTQUFTLEVBQ1RDLE9BQU9DLFFBQVEsRUFDVjtJQUNMLE1BQU1DLEtBQUtiLFFBQVFjLFFBQVEsQ0FBQ1AsSUFBSVEsYUFBYSxDQUFDLEVBQUVGLE1BQU1iLFFBQVFnQixPQUFPO0lBQ3JFLE1BQU1DLFFBQVFqQixRQUFRa0IsTUFBTSxDQUFDUixVQUFVO0lBRXZDLE1BQU1SLFFBQVFDLFlBQVk7SUFDMUIsSUFBSWdCO0lBQ0osSUFBSUM7SUFDSixJQUFJQztJQUNKLElBQUlDO0lBQ0osSUFBSUM7SUFDSixJQUFJQztJQUVKLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsWUFBWSxFQUFFakIsS0FBSyxFQUFFLEdBQUcsTUFBTWtCLElBQUFBLG1CQUFVLEVBQUM7UUFDNUU3QjtRQUNBQztRQUNBRztRQUNBSztRQUNBQztRQUNBQyxPQUFPQztJQUNUO0lBRUEsTUFB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
@@ -83,7 +83,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
83
83
  aliasTable,
84
84
  collectionPath,
85
85
  columnPrefix: `${columnPrefix}${field.name}_`,
86
- constraintPath,
86
+ constraintPath: `${constraintPath}${field.name}.`,
87
87
  constraints,
88
88
  fields: field.fields,
89
89
  joinAliases,
@@ -130,7 +130,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
130
130
  aliasTable,
131
131
  collectionPath,
132
132
  columnPrefix: `${columnPrefix}${field.name}_`,
133
- constraintPath,
133
+ constraintPath: `${constraintPath}${field.name}.`,
134
134
  constraints,
135
135
  fields: field.fields,
136
136
  joinAliases,
@@ -345,4 +345,4 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
345
345
  throw new _errors.APIError(`Cannot find field for path at ${fieldPath}`);
346
346
  };
347
347
 
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBsaWtlLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeSdcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZVxuICB2YWx1ZTogdW5rbm93blxufVxuXG50eXBlIFRhYmxlQ29sdW1uID0ge1xuICBjb2x1bW5OYW1lPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzOiBDb25zdHJhaW50W11cbiAgZmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YVxuICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZT86ICh2YWw6IHVua25vd24pID0+IHN0cmluZ1xuICBwYXRoU2VnbWVudHM/OiBzdHJpbmdbXVxuICByYXdDb2x1bW4/OiBTUUxcbiAgdGFibGU6IEdlbmVyaWNUYWJsZVxufVxuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBhbGlhc1RhYmxlPzogR2VuZXJpY1RhYmxlXG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRQYXRoPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgcm9vdFRhYmxlTmFtZT86IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIFRyYW5zZm9ybXMgcGF0aCB0byB0YWJsZSBhbmQgY29sdW1uIG5hbWVcbiAqIEFkZHMgdGFibGVzIHRvIGBqb2luYFxuICogQHJldHVybnMgVGFibGVDb2x1bW5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggPSAoe1xuICBhZGFwdGVyLFxuICBhbGlhc1RhYmxlLFxuICBjb2xsZWN0aW9uUGF0aCxcbiAgY29sdW1uUHJlZml4ID0gJycsXG4gIGNvbnN0cmFpbnRQYXRoOiBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoLFxuICBjb25zdHJhaW50cyA9IFtdLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlOiBpbmNvbWluZ0xvY2FsZSxcbiAgcGF0aFNlZ21lbnRzOiBpbmNvbWluZ1NlZ21lbnRzLFxuICByb290VGFibGVOYW1lOiBpbmNvbWluZ1Jvb3RUYWJsZU5hbWUsXG4gIHNlbGVjdEZpZWxkcyxcbiAgdGFibGVOYW1lLFxufTogQXJncyk6IFRhYmxlQ29sdW1uID0+IHtcbiAgY29uc3QgZmllbGRQYXRoID0gaW5jb21pbmdTZWdtZW50c1swXVxuICBsZXQgbG9jYWxlID0gaW5jb21pbmdMb2NhbGVcbiAgY29uc3Qgcm9vdFRhYmxlTmFtZSA9IGluY29taW5nUm9vdFRhYmxlTmFtZSB8fCB0YWJsZU5hbWVcbiAgbGV0IGNvbnN0cmFpbnRQYXRoID0gaW5jb21pbmdDb25zdHJhaW50UGF0aCB8fCAnJ1xuXG4gIGNvbnN0IGZpZWxkID0gZmxhdHRlblRvcExldmVsRmllbGRzKGZpZWxkcyBhcyBGaWVsZFtdKS5maW5kKFxuICAgIChmaWVsZFRvRmluZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZFRvRmluZCkgJiYgZmllbGRUb0ZpbmQubmFtZSA9PT0gZmllbGRQYXRoLFxuICApIGFzIEZpZWxkIHwgVGFiQXNGaWVsZFxuICBsZXQgbmV3VGFibGVOYW1lID0gdGFibGVOYW1lXG5cbiAgaWYgKCFmaWVsZCAmJiBmaWVsZFBhdGggPT09ICdpZCcpIHtcbiAgICBzZWxlY3RGaWVsZHMuaWQgPSBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLmlkXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbHVtbk5hbWU6ICdpZCcsXG4gICAgICBjb25zdHJhaW50cyxcbiAgICAgIGZpZWxkOiB7XG4gICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgfSxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgY2FzZSAndGFiJzoge1xuICAgICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfV9gLFxuICAgICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICBqb2lucyxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjYXNlICdncm91cCc6IHtcbiAgICAgICAgaWYgKGxvY2FsZSAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXG5cbiAgICAgICAgICBqb2luc1t0YWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQsXG4gICAgICAgICAgKVxuICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgY29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfV9gLFxuICAgICAgICAgIGNvbnN0cmFpbnRQYXRoLFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgIGNvbnN0cmFpbnRQYXRoID0gYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfS4lLmBcbiAgICAgICAgaWYgKGxvY2FsZSAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKFxuICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQpLFxuICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fbG9jYWxlLCBsb2NhbGUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbnN0cmFpbnRQYXRoLFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICBsZXQgYmxvY2tUYWJsZUNvbHVtbjogVGFibGVDb2x1bW5cbiAgICAgICAgbGV0IG5ld1RhYmxlTmFtZTogc3RyaW5nXG4gICAgICAgIGNvbnN0IGhhc0Jsb2NrRmllbGQgPSBmaWVsZC5ibG9ja3Muc29tZSgoYmxvY2spID0+IHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCA9IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uJS5gXG4gICAgICAgICAgbGV0IHJlc3VsdFxuICAgICAgICAgIGNvbnN0IGJsb2NrQ29uc3RyYWludHMgPSBbXVxuICAgICAgICAgIGNvbnN0IGJsb2NrU2VsZWN0RmllbGRzID0ge31cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHM6IGJsb2NrQ29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHNlbGVjdEZpZWxkczogYmxvY2tTZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBmaW5lLCBub3QgZXZlcnkgYmxvY2sgd2lsbCBoYXZlIHRoZSBmaWVsZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGJsb2NrVGFibGVDb2x1bW4gPSByZXN1bHRcbiAgICAgICAgICBjb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLmNvbmNhdChibG9ja0NvbnN0cmFpbnRzKVxuICAgICAgICAgIHNlbGVjdEZpZWxkcyA9IHsgLi4uc2VsZWN0RmllbGRzLCAuLi5ibG9ja1NlbGVjdEZpZWxkcyB9XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQpLFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9sb2NhbGUsIGxvY2FsZSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9KVxuICAgICAgICBpZiAoaGFzQmxvY2tGaWVsZCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBibG9ja1RhYmxlQ29sdW1uLmNvbHVtbk5hbWUsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkOiBibG9ja1RhYmxlQ29sdW1uLmZpZWxkLFxuICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICByYXdDb2x1bW46IGJsb2NrVGFibGVDb2x1bW4ucmF3Q29sdW1uLFxuICAgICAgICAgICAgdGFibGU6IGJsb2NrVGFibGVDb2x1bW4udGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoU2VnbWVudHNbMV0gPT09ICdibG9ja1R5cGUnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKCdRdWVyeWluZyBvbiBibG9ja1R5cGUgaXMgbm90IHN1cHBvcnRlZCcpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmVsYXRpb25zaGlwJzpcbiAgICAgIGNhc2UgJ3VwbG9hZCc6IHtcbiAgICAgICAgbGV0IHJlbGF0aW9uc2hpcEZpZWxkc1xuICAgICAgICBjb25zdCByZWxhdGlvblRhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X3JlbHNgXG4gICAgICAgIGNvbnN0IG5ld0NvbGxlY3Rpb25QYXRoID0gcGF0aFNlZ21lbnRzLnNsaWNlKDEpLmpvaW4oJy4nKVxuICAgICAgICBjb25zdCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSA9IHV1aWQoKVxuICAgICAgICBjb25zdCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlID0gYWxpYXMoXG4gICAgICAgICAgYWRhcHRlci50YWJsZXNbcmVsYXRpb25UYWJsZU5hbWVdLFxuICAgICAgICAgIGFsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gSm9pbiBpbiB0aGUgcmVsYXRpb25zaGlwcyB0YWJsZVxuICAgICAgICBqb2luQWxpYXNlcy5wdXNoKHtcbiAgICAgICAgICBjb25kaXRpb246IGFuZChcbiAgICAgICAgICAgIGVxKChhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdKS5pZCwgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXJlbnQpLFxuICAgICAgICAgICAgbGlrZShhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhdGgsIGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX1gKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICB9KVxuXG4gICAgICAgIHNlbGVjdEZpZWxkc1tgJHtyZWxhdGlvblRhYmxlTmFtZX0ucGF0aGBdID0gYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXRoXG5cbiAgICAgICAgbGV0IG5ld0FsaWFzVGFibGVcblxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkLnJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dG9TbmFrZUNhc2UoZmllbGQucmVsYXRpb25Ubyl9YFxuICAgICAgICAgIC8vIHBhcmVudCB0byByZWxhdGlvbnNoaXAgam9pbiB0YWJsZVxuICAgICAgICAgIHJlbGF0aW9uc2hpcEZpZWxkcyA9IGFkYXB0ZXIucGF5bG9hZC5jb2xsZWN0aW9uc1tmaWVsZC5yZWxhdGlvblRvXS5jb25maWcuZmllbGRzXG5cbiAgICAgICAgICBuZXdBbGlhc1RhYmxlID0gYWxpYXMoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSwgdG9TbmFrZUNhc2UodXVpZCgpKSlcblxuICAgICAgICAgIGpvaW5BbGlhc2VzLnB1c2goe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBlcShuZXdBbGlhc1RhYmxlLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlW2Ake2ZpZWxkLnJlbGF0aW9uVG99SURgXSksXG4gICAgICAgICAgICB0YWJsZTogbmV3QWxpYXNUYWJsZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogYCR7ZmllbGQucmVsYXRpb25Ub31JRGAsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAndmFsdWUnKSB7XG4gICAgICAgICAgY29uc3QgdGFibGVDb2x1bW5zTmFtZXMgPSBmaWVsZC5yZWxhdGlvblRvLm1hcChcbiAgICAgICAgICAgIChyZWxhdGlvblRvKSA9PiBgXCIke2FsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lfVwiLlwiJHt0b1NuYWtlQ2FzZShyZWxhdGlvblRvKX1faWRcImAsXG4gICAgICAgICAgKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcmF3Q29sdW1uOiBzcWwucmF3KGBDT0FMRVNDRSgke3RhYmxlQ29sdW1uc05hbWVzLmpvaW4oJywgJyl9KWApLFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAncmVsYXRpb25UbycpIHtcbiAgICAgICAgICBjb25zdCByZWxhdGlvblRvID0gQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSA/IGZpZWxkLnJlbGF0aW9uVG8gOiBbZmllbGQucmVsYXRpb25Ub11cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWU6ICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZFJlbGF0aW9uID0gcmVsYXRpb25Uby5maW5kKChyZWxhdGlvbikgPT4gcmVsYXRpb24gPT09IHZhbClcbiAgICAgICAgICAgICAgaWYgKG1hdGNoZWRSZWxhdGlvbikgcmV0dXJuIGAke21hdGNoZWRSZWxhdGlvbn1JRGBcbiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoJ05vdCBzdXBwb3J0ZWQnKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZTogbmV3QWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aDogbmV3Q29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiByZWxhdGlvbnNoaXBGaWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgLy8gSWYgbG9jYWxpemVkLCB3ZSBnbyB0byBsb2NhbGl6ZWQgdGFibGUgYW5kIHNldCBhbGlhc1RhYmxlIHRvIHVuZGVmaW5lZFxuICAgICAgICAgICAgLy8gc28gaXQgaXMgbm90IHBpY2tlZCB1cCBiZWxvdyB0byBiZSB1c2VkIGFzIHRhcmdldFRhYmxlXG4gICAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXG5cbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFRhYmxlID0gYWxpYXNUYWJsZSB8fCBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdXG5cbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBlcShwYXJlbnRUYWJsZS5pZCwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQpXG5cbiAgICAgICAgICAgIGFsaWFzVGFibGUgPSB1bmRlZmluZWRcblxuICAgICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdGFyZ2V0VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV1cblxuICAgICAgICAgIHNlbGVjdEZpZWxkc1tgJHtuZXdUYWJsZU5hbWV9LiR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1gXSA9XG4gICAgICAgICAgICB0YXJnZXRUYWJsZVtgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWBdXG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uTmFtZTogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1gLFxuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50cyxcbiAgICAgICAgICAgIHRhYmxlOiB0YXJnZXRUYWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgQVBJRXJyb3IoYENhbm5vdCBmaW5kIGZpZWxkIGZvciBwYXRoIGF0ICR7ZmllbGRQYXRofWApXG59XG4iXSwibmFtZXMiOlsiZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCIsImFkYXB0ZXIiLCJhbGlhc1RhYmxlIiwiY29sbGVjdGlvblBhdGgiLCJjb2x1bW5QcmVmaXgiLCJjb25zdHJhaW50UGF0aCIsImluY29taW5nQ29uc3RyYWludFBhdGgiLCJjb25zdHJhaW50cyIsImZpZWxkcyIsImpvaW5BbGlhc2VzIiwiam9pbnMiLCJsb2NhbGUiLCJpbmNvbWluZ0xvY2FsZSIsInBhdGhTZWdtZW50cyIsImluY29taW5nU2VnbWVudHMiLCJyb290VGFibGVOYW1lIiwiaW5jb21pbmdSb290VGFibGVOYW1lIiwic2VsZWN0RmllbGRzIiwidGFibGVOYW1lIiwiZmllbGRQYXRoIiwiZmllbGQiLCJmbGF0dGVuVG9wTGV2ZWxGaWVsZHMiLCJmaW5kIiwiZmllbGRUb0ZpbmQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsIm5ld1RhYmxlTmFtZSIsImlkIiwidGFibGVzIiwiY29sdW1uTmFtZSIsInR5cGUiLCJ0YWJsZSIsImxvY2FsaXplZCIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJtYXRjaGVkTG9jYWxlIiwibG9jYWxlQ29kZXMiLCJzcGxpY2UiLCJ0YWJzIiwibWFwIiwidGFiIiwic2xpY2UiLCJ0YWJIYXNOYW1lIiwiZXEiLCJfcGFyZW50SUQiLCJwdXNoIiwidmFsdWUiLCJ0b1NuYWtlQ2FzZSIsImFuZCIsIl9sb2NhbGUiLCJibG9ja1RhYmxlQ29sdW1uIiwiaGFzQmxvY2tGaWVsZCIsImJsb2NrcyIsInNvbWUiLCJibG9jayIsInNsdWciLCJyZXN1bHQiLCJibG9ja0NvbnN0cmFpbnRzIiwiYmxvY2tTZWxlY3RGaWVsZHMiLCJlcnJvciIsImNvbmNhdCIsInJhd0NvbHVtbiIsIkFQSUVycm9yIiwicmVsYXRpb25zaGlwRmllbGRzIiwicmVsYXRpb25UYWJsZU5hbWUiLCJuZXdDb2xsZWN0aW9uUGF0aCIsImpvaW4iLCJhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSIsInV1aWQiLCJhbGlhc1JlbGF0aW9uc2hpcFRhYmxlIiwiYWxpYXMiLCJjb25kaXRpb24iLCJwYXJlbnQiLCJsaWtlIiwicGF0aCIsIm5ld0FsaWFzVGFibGUiLCJyZWxhdGlvblRvIiwiY29sbGVjdGlvbnMiLCJ0YWJsZUNvbHVtbnNOYW1lcyIsInNxbCIsInJhdyIsIkFycmF5IiwiaXNBcnJheSIsImdldE5vdE51bGxDb2x1bW5CeVZhbHVlIiwidmFsIiwibWF0Y2hlZFJlbGF0aW9uIiwicmVsYXRpb24iLCJ1bmRlZmluZWQiLCJwYXJlbnRUYWJsZSIsInRhcmdldFRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBb0R2QkE7OztlQUFBQTs7OzRCQWhEc0I7d0JBQ2I7d0JBQ0c7dUJBQ29COzJCQUNQO29FQUNkO3NCQUNHOzs7Ozs7QUEwQ3BCLE1BQU1BLHlCQUF5QixDQUFDLEVBQ3JDQyxPQUFPLEVBQ1BDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxlQUFlLEVBQUUsRUFDakJDLGdCQUFnQkMsc0JBQXNCLEVBQ3RDQyxjQUFjLEVBQUUsRUFDaEJDLE1BQU0sRUFDTkMsV0FBVyxFQUNYQyxLQUFLLEVBQ0xDLFFBQVFDLGNBQWMsRUFDdEJDLGNBQWNDLGdCQUFnQixFQUM5QkMsZUFBZUMscUJBQXFCLEVBQ3BDQyxZQUFZLEVBQ1pDLFNBQVMsRUFDSjtJQUNM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
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBsaWtlLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeSdcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZVxuICB2YWx1ZTogdW5rbm93blxufVxuXG50eXBlIFRhYmxlQ29sdW1uID0ge1xuICBjb2x1bW5OYW1lPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzOiBDb25zdHJhaW50W11cbiAgZmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YVxuICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZT86ICh2YWw6IHVua25vd24pID0+IHN0cmluZ1xuICBwYXRoU2VnbWVudHM/OiBzdHJpbmdbXVxuICByYXdDb2x1bW4/OiBTUUxcbiAgdGFibGU6IEdlbmVyaWNUYWJsZVxufVxuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBhbGlhc1RhYmxlPzogR2VuZXJpY1RhYmxlXG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRQYXRoPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgcm9vdFRhYmxlTmFtZT86IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIFRyYW5zZm9ybXMgcGF0aCB0byB0YWJsZSBhbmQgY29sdW1uIG5hbWVcbiAqIEFkZHMgdGFibGVzIHRvIGBqb2luYFxuICogQHJldHVybnMgVGFibGVDb2x1bW5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggPSAoe1xuICBhZGFwdGVyLFxuICBhbGlhc1RhYmxlLFxuICBjb2xsZWN0aW9uUGF0aCxcbiAgY29sdW1uUHJlZml4ID0gJycsXG4gIGNvbnN0cmFpbnRQYXRoOiBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoLFxuICBjb25zdHJhaW50cyA9IFtdLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlOiBpbmNvbWluZ0xvY2FsZSxcbiAgcGF0aFNlZ21lbnRzOiBpbmNvbWluZ1NlZ21lbnRzLFxuICByb290VGFibGVOYW1lOiBpbmNvbWluZ1Jvb3RUYWJsZU5hbWUsXG4gIHNlbGVjdEZpZWxkcyxcbiAgdGFibGVOYW1lLFxufTogQXJncyk6IFRhYmxlQ29sdW1uID0+IHtcbiAgY29uc3QgZmllbGRQYXRoID0gaW5jb21pbmdTZWdtZW50c1swXVxuICBsZXQgbG9jYWxlID0gaW5jb21pbmdMb2NhbGVcbiAgY29uc3Qgcm9vdFRhYmxlTmFtZSA9IGluY29taW5nUm9vdFRhYmxlTmFtZSB8fCB0YWJsZU5hbWVcbiAgbGV0IGNvbnN0cmFpbnRQYXRoID0gaW5jb21pbmdDb25zdHJhaW50UGF0aCB8fCAnJ1xuXG4gIGNvbnN0IGZpZWxkID0gZmxhdHRlblRvcExldmVsRmllbGRzKGZpZWxkcyBhcyBGaWVsZFtdKS5maW5kKFxuICAgIChmaWVsZFRvRmluZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZFRvRmluZCkgJiYgZmllbGRUb0ZpbmQubmFtZSA9PT0gZmllbGRQYXRoLFxuICApIGFzIEZpZWxkIHwgVGFiQXNGaWVsZFxuICBsZXQgbmV3VGFibGVOYW1lID0gdGFibGVOYW1lXG5cbiAgaWYgKCFmaWVsZCAmJiBmaWVsZFBhdGggPT09ICdpZCcpIHtcbiAgICBzZWxlY3RGaWVsZHMuaWQgPSBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLmlkXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbHVtbk5hbWU6ICdpZCcsXG4gICAgICBjb25zdHJhaW50cyxcbiAgICAgIGZpZWxkOiB7XG4gICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgfSxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgY2FzZSAndGFiJzoge1xuICAgICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfV9gLFxuICAgICAgICAgICAgY29uc3RyYWludFBhdGg6IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fbG9jYWxlc2BcblxuICAgICAgICAgIGpvaW5zW3RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9X2AsXG4gICAgICAgICAgY29uc3RyYWludFBhdGg6IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9XyR7dG9TbmFrZUNhc2UoZmllbGQubmFtZSl9YFxuICAgICAgICBjb25zdHJhaW50UGF0aCA9IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uJS5gXG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKSxcbiAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX2xvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgbGV0IGJsb2NrVGFibGVDb2x1bW46IFRhYmxlQ29sdW1uXG4gICAgICAgIGxldCBuZXdUYWJsZU5hbWU6IHN0cmluZ1xuICAgICAgICBjb25zdCBoYXNCbG9ja0ZpZWxkID0gZmllbGQuYmxvY2tzLnNvbWUoKGJsb2NrKSA9PiB7XG4gICAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV9ibG9ja3NfJHt0b1NuYWtlQ2FzZShibG9jay5zbHVnKX1gXG4gICAgICAgICAgY29uc3RyYWludFBhdGggPSBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LiUuYFxuICAgICAgICAgIGxldCByZXN1bHRcbiAgICAgICAgICBjb25zdCBibG9ja0NvbnN0cmFpbnRzID0gW11cbiAgICAgICAgICBjb25zdCBibG9ja1NlbGVjdEZpZWxkcyA9IHt9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiBibG9ja0NvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgICBzZWxlY3RGaWVsZHM6IGJsb2NrU2VsZWN0RmllbGRzLFxuICAgICAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgZmluZSwgbm90IGV2ZXJ5IGJsb2NrIHdpbGwgaGF2ZSB0aGUgZmllbGRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBibG9ja1RhYmxlQ29sdW1uID0gcmVzdWx0XG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50cy5jb25jYXQoYmxvY2tDb25zdHJhaW50cylcbiAgICAgICAgICBzZWxlY3RGaWVsZHMgPSB7IC4uLnNlbGVjdEZpZWxkcywgLi4uYmxvY2tTZWxlY3RGaWVsZHMgfVxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBhbmQoXG4gICAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKSxcbiAgICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fbG9jYWxlLCBsb2NhbGUpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGhhc0Jsb2NrRmllbGQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uTmFtZTogYmxvY2tUYWJsZUNvbHVtbi5jb2x1bW5OYW1lLFxuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZDogYmxvY2tUYWJsZUNvbHVtbi5maWVsZCxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcmF3Q29sdW1uOiBibG9ja1RhYmxlQ29sdW1uLnJhd0NvbHVtbixcbiAgICAgICAgICAgIHRhYmxlOiBibG9ja1RhYmxlQ29sdW1uLnRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aFNlZ21lbnRzWzFdID09PSAnYmxvY2tUeXBlJykge1xuICAgICAgICAgIHRocm93IG5ldyBBUElFcnJvcignUXVlcnlpbmcgb24gYmxvY2tUeXBlIGlzIG5vdCBzdXBwb3J0ZWQnKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICBjYXNlICd1cGxvYWQnOiB7XG4gICAgICAgIGxldCByZWxhdGlvbnNoaXBGaWVsZHNcbiAgICAgICAgY29uc3QgcmVsYXRpb25UYWJsZU5hbWUgPSBgJHtyb290VGFibGVOYW1lfV9yZWxzYFxuICAgICAgICBjb25zdCBuZXdDb2xsZWN0aW9uUGF0aCA9IHBhdGhTZWdtZW50cy5zbGljZSgxKS5qb2luKCcuJylcbiAgICAgICAgY29uc3QgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUgPSB1dWlkKClcbiAgICAgICAgY29uc3QgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSA9IGFsaWFzKFxuICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3JlbGF0aW9uVGFibGVOYW1lXSxcbiAgICAgICAgICBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEpvaW4gaW4gdGhlIHJlbGF0aW9uc2hpcHMgdGFibGVcbiAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgY29uZGl0aW9uOiBhbmQoXG4gICAgICAgICAgICBlcSgoYWxpYXNUYWJsZSB8fCBhZGFwdGVyLnRhYmxlc1tyb290VGFibGVOYW1lXSkuaWQsIGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGFyZW50KSxcbiAgICAgICAgICAgIGxpa2UoYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXRoLCBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9YCksXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgfSlcblxuICAgICAgICBzZWxlY3RGaWVsZHNbYCR7cmVsYXRpb25UYWJsZU5hbWV9LnBhdGhgXSA9IGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGF0aFxuXG4gICAgICAgIGxldCBuZXdBbGlhc1RhYmxlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC5yZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RvU25ha2VDYXNlKGZpZWxkLnJlbGF0aW9uVG8pfWBcbiAgICAgICAgICAvLyBwYXJlbnQgdG8gcmVsYXRpb25zaGlwIGpvaW4gdGFibGVcbiAgICAgICAgICByZWxhdGlvbnNoaXBGaWVsZHMgPSBhZGFwdGVyLnBheWxvYWQuY29sbGVjdGlvbnNbZmllbGQucmVsYXRpb25Ub10uY29uZmlnLmZpZWxkc1xuXG4gICAgICAgICAgbmV3QWxpYXNUYWJsZSA9IGFsaWFzKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sIHRvU25ha2VDYXNlKHV1aWQoKSkpXG5cbiAgICAgICAgICBqb2luQWxpYXNlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogZXEobmV3QWxpYXNUYWJsZS5pZCwgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZVtgJHtmaWVsZC5yZWxhdGlvblRvfUlEYF0pLFxuICAgICAgICAgICAgdGFibGU6IG5ld0FsaWFzVGFibGUsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmIChuZXdDb2xsZWN0aW9uUGF0aCA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGNvbHVtbk5hbWU6IGAke2ZpZWxkLnJlbGF0aW9uVG99SURgLFxuICAgICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChuZXdDb2xsZWN0aW9uUGF0aCA9PT0gJ3ZhbHVlJykge1xuICAgICAgICAgIGNvbnN0IHRhYmxlQ29sdW1uc05hbWVzID0gZmllbGQucmVsYXRpb25Uby5tYXAoXG4gICAgICAgICAgICAocmVsYXRpb25UbykgPT4gYFwiJHthbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZX1cIi5cIiR7dG9TbmFrZUNhc2UocmVsYXRpb25Ubyl9X2lkXCJgLFxuICAgICAgICAgIClcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHJhd0NvbHVtbjogc3FsLnJhdyhgQ09BTEVTQ0UoJHt0YWJsZUNvbHVtbnNOYW1lcy5qb2luKCcsICcpfSlgKSxcbiAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChuZXdDb2xsZWN0aW9uUGF0aCA9PT0gJ3JlbGF0aW9uVG8nKSB7XG4gICAgICAgICAgY29uc3QgcmVsYXRpb25UbyA9IEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykgPyBmaWVsZC5yZWxhdGlvblRvIDogW2ZpZWxkLnJlbGF0aW9uVG9dXG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlOiAodmFsKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRSZWxhdGlvbiA9IHJlbGF0aW9uVG8uZmluZCgocmVsYXRpb24pID0+IHJlbGF0aW9uID09PSB2YWwpXG4gICAgICAgICAgICAgIGlmIChtYXRjaGVkUmVsYXRpb24pIHJldHVybiBgJHttYXRjaGVkUmVsYXRpb259SURgXG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKCdOb3Qgc3VwcG9ydGVkJylcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGFsaWFzVGFibGU6IG5ld0FsaWFzVGFibGUsXG4gICAgICAgICAgY29sbGVjdGlvblBhdGg6IG5ld0NvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogcmVsYXRpb25zaGlwRmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICByb290VGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICAgIC8vIElmIGxvY2FsaXplZCwgd2UgZ28gdG8gbG9jYWxpemVkIHRhYmxlIGFuZCBzZXQgYWxpYXNUYWJsZSB0byB1bmRlZmluZWRcbiAgICAgICAgICAgIC8vIHNvIGl0IGlzIG5vdCBwaWNrZWQgdXAgYmVsb3cgdG8gYmUgdXNlZCBhcyB0YXJnZXRUYWJsZVxuICAgICAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV9sb2NhbGVzYFxuXG4gICAgICAgICAgICBjb25zdCBwYXJlbnRUYWJsZSA9IGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXVxuXG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEocGFyZW50VGFibGUuaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKVxuXG4gICAgICAgICAgICBhbGlhc1RhYmxlID0gdW5kZWZpbmVkXG5cbiAgICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHRhcmdldFRhYmxlID0gYWxpYXNUYWJsZSB8fCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdXG5cbiAgICAgICAgICBzZWxlY3RGaWVsZHNbYCR7bmV3VGFibGVOYW1lfS4ke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9YF0gPVxuICAgICAgICAgICAgdGFyZ2V0VGFibGVbYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1gXVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IGAke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9YCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBwYXRoU2VnbWVudHMsXG4gICAgICAgICAgICB0YWJsZTogdGFyZ2V0VGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEFQSUVycm9yKGBDYW5ub3QgZmluZCBmaWVsZCBmb3IgcGF0aCBhdCAke2ZpZWxkUGF0aH1gKVxufVxuIl0sIm5hbWVzIjpbImdldFRhYmxlQ29sdW1uRnJvbVBhdGgiLCJhZGFwdGVyIiwiYWxpYXNUYWJsZSIsImNvbGxlY3Rpb25QYXRoIiwiY29sdW1uUHJlZml4IiwiY29uc3RyYWludFBhdGgiLCJpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIiwiY29uc3RyYWludHMiLCJmaWVsZHMiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwibG9jYWxlIiwiaW5jb21pbmdMb2NhbGUiLCJwYXRoU2VnbWVudHMiLCJpbmNvbWluZ1NlZ21lbnRzIiwicm9vdFRhYmxlTmFtZSIsImluY29taW5nUm9vdFRhYmxlTmFtZSIsInNlbGVjdEZpZWxkcyIsInRhYmxlTmFtZSIsImZpZWxkUGF0aCIsImZpZWxkIiwiZmxhdHRlblRvcExldmVsRmllbGRzIiwiZmluZCIsImZpZWxkVG9GaW5kIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJuZXdUYWJsZU5hbWUiLCJpZCIsInRhYmxlcyIsImNvbHVtbk5hbWUiLCJ0eXBlIiwidGFibGUiLCJsb2NhbGl6ZWQiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwibWF0Y2hlZExvY2FsZSIsImxvY2FsZUNvZGVzIiwic3BsaWNlIiwidGFicyIsIm1hcCIsInRhYiIsInNsaWNlIiwidGFiSGFzTmFtZSIsImVxIiwiX3BhcmVudElEIiwicHVzaCIsInZhbHVlIiwidG9TbmFrZUNhc2UiLCJhbmQiLCJfbG9jYWxlIiwiYmxvY2tUYWJsZUNvbHVtbiIsImhhc0Jsb2NrRmllbGQiLCJibG9ja3MiLCJzb21lIiwiYmxvY2siLCJzbHVnIiwicmVzdWx0IiwiYmxvY2tDb25zdHJhaW50cyIsImJsb2NrU2VsZWN0RmllbGRzIiwiZXJyb3IiLCJjb25jYXQiLCJyYXdDb2x1bW4iLCJBUElFcnJvciIsInJlbGF0aW9uc2hpcEZpZWxkcyIsInJlbGF0aW9uVGFibGVOYW1lIiwibmV3Q29sbGVjdGlvblBhdGgiLCJqb2luIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUiLCJ1dWlkIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSIsImFsaWFzIiwiY29uZGl0aW9uIiwicGFyZW50IiwibGlrZSIsInBhdGgiLCJuZXdBbGlhc1RhYmxlIiwicmVsYXRpb25UbyIsImNvbGxlY3Rpb25zIiwidGFibGVDb2x1bW5zTmFtZXMiLCJzcWwiLCJyYXciLCJBcnJheSIsImlzQXJyYXkiLCJnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSIsInZhbCIsIm1hdGNoZWRSZWxhdGlvbiIsInJlbGF0aW9uIiwidW5kZWZpbmVkIiwicGFyZW50VGFibGUiLCJ0YXJnZXRUYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQW9EdkJBOzs7ZUFBQUE7Ozs0QkFoRHNCO3dCQUNiO3dCQUNHO3VCQUNvQjsyQkFDUDtvRUFDZDtzQkFDRzs7Ozs7O0FBMENwQixNQUFNQSx5QkFBeUIsQ0FBQyxFQUNyQ0MsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsZUFBZSxFQUFFLEVBQ2pCQyxnQkFBZ0JDLHNCQUFzQixFQUN0Q0MsY0FBYyxFQUFFLEVBQ2hCQyxNQUFNLEVBQ05DLFdBQVcsRUFDWEMsS0FBSyxFQUNMQyxRQUFRQyxjQUFjLEVB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
@@ -5,9 +5,9 @@ type Args = {
5
5
  adapter: PostgresAdapter;
6
6
  baseColumns?: Record<string, PgColumnBuilder>;
7
7
  baseExtraConfig?: Record<string, (cols: GenericColumns) => IndexBuilder | UniqueConstraintBuilder>;
8
- buildTexts?: boolean;
9
8
  buildNumbers?: boolean;
10
9
  buildRelationships?: boolean;
10
+ buildTexts?: boolean;
11
11
  disableNotNull: boolean;
12
12
  disableUnique: boolean;
13
13
  fields: Field[];
@@ -19,10 +19,10 @@ type Args = {
19
19
  timestamps?: boolean;
20
20
  };
21
21
  type Result = {
22
- hasManyTextField: 'index' | boolean;
23
22
  hasManyNumberField: 'index' | boolean;
23
+ hasManyTextField: 'index' | boolean;
24
24
  relationsToBuild: Map<string, string>;
25
25
  };
26
- export declare const buildTable: ({ adapter, baseColumns, baseExtraConfig, buildTexts, buildNumbers, buildRelationships, disableNotNull, disableUnique, fields, rootRelationsToBuild, rootRelationships, rootTableIDColType, rootTableName: incomingRootTableName, tableName, timestamps, }: Args) => Result;
26
+ export declare const buildTable: ({ adapter, baseColumns, baseExtraConfig, buildNumbers, buildRelationships, buildTexts, disableNotNull, disableUnique, fields, rootRelationsToBuild, rootRelationships, rootTableIDColType, rootTableName: incomingRootTableName, tableName, timestamps, }: Args) => Result;
27
27
  export {};
28
28
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAgB1C,OAAO,KAAK,EAAE,cAAc,EAAgB,eAAe,EAAE,MAAM,UAAU,CAAA;AAM7E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,GAAG,uBAAuB,CAAC,CAAA;IAClG,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,UAAU,8PAgBpB,IAAI,KAAG,MA+TT,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAgB1C,OAAO,KAAK,EAAE,cAAc,EAAgB,eAAe,EAAE,MAAM,UAAU,CAAA;AAM7E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,GAAG,uBAAuB,CAAC,CAAA;IAClG,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,UAAU,8PAgBpB,IAAI,KAAG,MAkUT,CAAA"}
@@ -20,7 +20,7 @@ function _interop_require_default(obj) {
20
20
  default: obj
21
21
  };
22
22
  }
23
- const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildTexts, buildNumbers, buildRelationships, disableNotNull, disableUnique = false, fields, rootRelationsToBuild, rootRelationships, rootTableIDColType, rootTableName: incomingRootTableName, tableName, timestamps })=>{
23
+ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumbers, buildRelationships, buildTexts, disableNotNull, disableUnique = false, fields, rootRelationsToBuild, rootRelationships, rootTableIDColType, rootTableName: incomingRootTableName, tableName, timestamps })=>{
24
24
  const rootTableName = incomingRootTableName || tableName;
25
25
  const columns = baseColumns;
26
26
  const indexes = {};
@@ -47,11 +47,11 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildText
47
47
  varchar: _pgcore.varchar
48
48
  };
49
49
  columns.id = idColTypeMap[idColType]('id').primaryKey();
50
- ({ hasLocalizedField, hasLocalizedManyTextField, hasLocalizedManyNumberField, hasLocalizedRelationshipField, hasManyTextField, hasManyNumberField } = (0, _traverseFields.traverseFields)({
50
+ ({ hasLocalizedField, hasLocalizedManyNumberField, hasLocalizedManyTextField, hasLocalizedRelationshipField, hasManyNumberField, hasManyTextField } = (0, _traverseFields.traverseFields)({
51
51
  adapter,
52
- buildTexts,
53
52
  buildNumbers,
54
53
  buildRelationships,
54
+ buildTexts,
55
55
  columns,
56
56
  disableNotNull,
57
57
  disableUnique,
@@ -122,25 +122,25 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildText
122
122
  const textsTableName = `${rootTableName}_texts`;
123
123
  const columns = {
124
124
  id: (0, _pgcore.serial)('id').primaryKey(),
125
- text: (0, _pgcore.varchar)('text'),
126
125
  order: (0, _pgcore.integer)('order').notNull(),
127
126
  parent: _parentIDColumnMap.parentIDColumnMap[idColType]('parent_id').references(()=>table.id, {
128
127
  onDelete: 'cascade'
129
128
  }).notNull(),
130
- path: (0, _pgcore.varchar)('path').notNull()
129
+ path: (0, _pgcore.varchar)('path').notNull(),
130
+ text: (0, _pgcore.varchar)('text')
131
131
  };
132
132
  if (hasLocalizedManyTextField) {
133
133
  columns.locale = adapter.enums.enum__locales('locale');
134
134
  }
135
135
  textsTable = (0, _pgcore.pgTable)(textsTableName, columns, (cols)=>{
136
136
  const indexes = {
137
- orderParentIdx: (0, _pgcore.index)('order_parent_idx').on(cols.order, cols.parent)
137
+ orderParentIdx: (0, _pgcore.index)(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent)
138
138
  };
139
139
  if (hasManyTextField === 'index') {
140
- indexes.text_idx = (0, _pgcore.index)('text_idx').on(cols.text);
140
+ indexes.text_idx = (0, _pgcore.index)(`${textsTableName}_text_idx`).on(cols.text);
141
141
  }
142
142
  if (hasLocalizedManyTextField) {
143
- indexes.localeParent = (0, _pgcore.index)('locale_parent').on(cols.locale, cols.parent);
143
+ indexes.localeParent = (0, _pgcore.index)(`${textsTableName}_locale_parent`).on(cols.locale, cols.parent);
144
144
  }
145
145
  return indexes;
146
146
  });
@@ -173,13 +173,13 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildText
173
173
  }
174
174
  numbersTable = (0, _pgcore.pgTable)(numbersTableName, columns, (cols)=>{
175
175
  const indexes = {
176
- orderParentIdx: (0, _pgcore.index)('order_parent_idx').on(cols.order, cols.parent)
176
+ orderParentIdx: (0, _pgcore.index)(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent)
177
177
  };
178
178
  if (hasManyNumberField === 'index') {
179
- indexes.numberIdx = (0, _pgcore.index)('number_idx').on(cols.number);
179
+ indexes.numberIdx = (0, _pgcore.index)(`${numbersTableName}_number_idx`).on(cols.number);
180
180
  }
181
181
  if (hasLocalizedManyNumberField) {
182
- indexes.localeParent = (0, _pgcore.index)('locale_parent').on(cols.locale, cols.parent);
182
+ indexes.localeParent = (0, _pgcore.index)(`${numbersTableName}_locale_parent`).on(cols.locale, cols.parent);
183
183
  }
184
184
  return indexes;
185
185
  });
@@ -222,12 +222,12 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildText
222
222
  const relationshipsTableName = `${tableName}_rels`;
223
223
  relationshipsTable = (0, _pgcore.pgTable)(relationshipsTableName, relationshipColumns, (cols)=>{
224
224
  const result = {
225
- order: (0, _pgcore.index)('order_idx').on(cols.order),
226
- parentIdx: (0, _pgcore.index)('parent_idx').on(cols.parent),
227
- pathIdx: (0, _pgcore.index)('path_idx').on(cols.path)
225
+ order: (0, _pgcore.index)(`${relationshipsTableName}_order_idx`).on(cols.order),
226
+ parentIdx: (0, _pgcore.index)(`${relationshipsTableName}_parent_idx`).on(cols.parent),
227
+ pathIdx: (0, _pgcore.index)(`${relationshipsTableName}_path_idx`).on(cols.path)
228
228
  };
229
229
  if (hasLocalizedRelationshipField) {
230
- result.localeIdx = (0, _pgcore.index)('locale_idx').on(cols.locale);
230
+ result.localeIdx = (0, _pgcore.index)(`${relationshipsTableName}_locale_idx`).on(cols.locale);
231
231
  }
232
232
  return result;
233
233
  });
@@ -284,10 +284,10 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildText
284
284
  });
285
285
  adapter.relations[`relations_${tableName}`] = tableRelations;
286
286
  return {
287
- hasManyTextField,
288
287
  hasManyNumberField,
288
+ hasManyTextField,
289
289
  relationsToBuild
290
290
  };
291
291
  };
292
292
 
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvYnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBudW1lcmljLFxuICBwZ1RhYmxlLFxuICBzZXJpYWwsXG4gIHRpbWVzdGFtcCxcbiAgdW5pcXVlLFxuICB2YXJjaGFyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgR2VuZXJpY1RhYmxlLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgZ2V0Q29uZmlnSURUeXBlIH0gZnJvbSAnLi9nZXRDb25maWdJRFR5cGUnXG5pbXBvcnQgeyBwYXJlbnRJRENvbHVtbk1hcCB9IGZyb20gJy4vcGFyZW50SURDb2x1bW5NYXAnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGJhc2VDb2x1bW5zPzogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBiYXNlRXh0cmFDb25maWc/OiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlciB8IFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyPlxuICBidWlsZFRleHRzPzogYm9vbGVhblxuICBidWlsZE51bWJlcnM/OiBib29sZWFuXG4gIGJ1aWxkUmVsYXRpb25zaGlwcz86IGJvb2xlYW5cbiAgZGlzYWJsZU5vdE51bGw6IGJvb2xlYW5cbiAgZGlzYWJsZVVuaXF1ZTogYm9vbGVhblxuICBmaWVsZHM6IEZpZWxkW11cbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ/OiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJvb3RSZWxhdGlvbnNoaXBzPzogU2V0PHN0cmluZz5cbiAgcm9vdFRhYmxlSURDb2xUeXBlPzogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU/OiBzdHJpbmdcbiAgdGFibGVOYW1lOiBzdHJpbmdcbiAgdGltZXN0YW1wcz86IGJvb2xlYW5cbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIGhhc01hbnlUZXh0RmllbGQ6ICdpbmRleCcgfCBib29sZWFuXG4gIGhhc01hbnlOdW1iZXJGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW5cbiAgcmVsYXRpb25zVG9CdWlsZDogTWFwPHN0cmluZywgc3RyaW5nPlxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRUYWJsZSA9ICh7XG4gIGFkYXB0ZXIsXG4gIGJhc2VDb2x1bW5zID0ge30sXG4gIGJhc2VFeHRyYUNvbmZpZyA9IHt9LFxuICBidWlsZFRleHRzLFxuICBidWlsZE51bWJlcnMsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgZGlzYWJsZU5vdE51bGwsXG4gIGRpc2FibGVVbmlxdWUgPSBmYWxzZSxcbiAgZmllbGRzLFxuICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgcm9vdFJlbGF0aW9uc2hpcHMsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZTogaW5jb21pbmdSb290VGFibGVOYW1lLFxuICB0YWJsZU5hbWUsXG4gIHRpbWVzdGFtcHMsXG59OiBBcmdzKTogUmVzdWx0ID0+IHtcbiAgY29uc3Qgcm9vdFRhYmxlTmFtZSA9IGluY29taW5nUm9vdFRhYmxlTmFtZSB8fCB0YWJsZU5hbWVcbiAgY29uc3QgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IGJhc2VDb2x1bW5zXG4gIGNvbnN0IGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPiA9IHt9XG5cbiAgbGV0IGhhc0xvY2FsaXplZEZpZWxkID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gZmFsc2VcbiAgbGV0IGhhc01hbnlUZXh0RmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc01hbnlOdW1iZXJGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSBmYWxzZVxuXG4gIGNvbnN0IGxvY2FsZXNDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge31cbiAgY29uc3QgbG9jYWxlc0luZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPiA9IHt9XG4gIGxldCBsb2NhbGVzVGFibGU6IEdlbmVyaWNUYWJsZVxuICBsZXQgdGV4dHNUYWJsZTogR2VuZXJpY1RhYmxlXG4gIGxldCBudW1iZXJzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIC8vIFJlbGF0aW9uc2hpcHMgdG8gdGhlIGJhc2UgY29sbGVjdGlvblxuICBjb25zdCByZWxhdGlvbnNoaXBzOiBTZXQ8c3RyaW5nPiA9IHJvb3RSZWxhdGlvbnNoaXBzIHx8IG5ldyBTZXQoKVxuXG4gIGxldCByZWxhdGlvbnNoaXBzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIC8vIERyaXp6bGUgcmVsYXRpb25zXG4gIGNvbnN0IHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKClcblxuICBjb25zdCBpZENvbFR5cGUgPSBnZXRDb25maWdJRFR5cGUoZmllbGRzKVxuXG4gIGNvbnN0IGlkQ29sVHlwZU1hcCA9IHtcbiAgICBpbnRlZ2VyOiBzZXJpYWwsXG4gICAgbnVtZXJpYyxcbiAgICB2YXJjaGFyLFxuICB9XG5cbiAgY29sdW1ucy5pZCA9IGlkQ29sVHlwZU1hcFtpZENvbFR5cGVdKCdpZCcpLnByaW1hcnlLZXkoKVxuICA7KHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICBoYXNNYW55VGV4dEZpZWxkLFxuICAgIGhhc01hbnlOdW1iZXJGaWVsZCxcbiAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICBhZGFwdGVyLFxuICAgIGJ1aWxkVGV4dHMsXG4gICAgYnVpbGROdW1iZXJzLFxuICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICBjb2x1bW5zLFxuICAgIGRpc2FibGVOb3ROdWxsLFxuICAgIGRpc2FibGVVbmlxdWUsXG4gICAgZmllbGRzLFxuICAgIGluZGV4ZXMsXG4gICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgbmV3VGFibGVOYW1lOiB0YWJsZU5hbWUsXG4gICAgcGFyZW50VGFibGVOYW1lOiB0YWJsZU5hbWUsXG4gICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICByZWxhdGlvbnNoaXBzLFxuICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkOiByb290UmVsYXRpb25zVG9CdWlsZCB8fCByZWxhdGlvbnNUb0J1aWxkLFxuICAgIHJvb3RUYWJsZUlEQ29sVHlwZTogcm9vdFRhYmxlSURDb2xUeXBlIHx8IGlkQ29sVHlwZSxcbiAgICByb290VGFibGVOYW1lLFxuICB9KSlcblxuICBpZiAodGltZXN0YW1wcykge1xuICAgIGNvbHVtbnMuY3JlYXRlZEF0ID0gdGltZXN0YW1wKCdjcmVhdGVkX2F0Jywge1xuICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICBwcmVjaXNpb246IDMsXG4gICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgfSlcbiAgICAgIC5kZWZhdWx0Tm93KClcbiAgICAgIC5ub3ROdWxsKClcbiAgICBjb2x1bW5zLnVwZGF0ZWRBdCA9IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHtcbiAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgIH0pXG4gICAgICAuZGVmYXVsdE5vdygpXG4gICAgICAubm90TnVsbCgpXG4gIH1cblxuICBjb25zdCB0YWJsZSA9IHBnVGFibGUodGFibGVOYW1lLCBjb2x1bW5zLCAoY29scykgPT4ge1xuICAgIGNvbnN0IGV4dHJhQ29uZmlnID0gT2JqZWN0LmVudHJpZXMoYmFzZUV4dHJhQ29uZmlnKS5yZWR1Y2UoKGNvbmZpZywgW2tleSwgZnVuY10pID0+IHtcbiAgICAgIGNvbmZpZ1trZXldID0gZnVuYyhjb2xzKVxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0sIHt9KVxuXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGluZGV4ZXMpLnJlZHVjZSgoYWNjLCBbY29sTmFtZSwgZnVuY10pID0+IHtcbiAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgIHJldHVybiBhY2NcbiAgICB9LCBleHRyYUNvbmZpZylcbiAgfSlcblxuICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdID0gdGFibGVcblxuICBpZiAoaGFzTG9jYWxpemVkRmllbGQpIHtcbiAgICBjb25zdCBsb2NhbGVUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXG4gICAgbG9jYWxlc0NvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgbG9jYWxlc0NvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgIGxvY2FsZXNDb2x1bW5zLl9wYXJlbnRJRCA9IHBhcmVudElEQ29sdW1uTWFwW2lkQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgLm5vdE51bGwoKVxuXG4gICAgbG9jYWxlc1RhYmxlID0gcGdUYWJsZShsb2NhbGVUYWJsZU5hbWUsIGxvY2FsZXNDb2x1bW5zLCAoY29scykgPT4ge1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGxvY2FsZXNJbmRleGVzKS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIFtjb2xOYW1lLCBmdW5jXSkgPT4ge1xuICAgICAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBfbG9jYWxlUGFyZW50OiB1bmlxdWUoYCR7bG9jYWxlVGFibGVOYW1lfV9sb2NhbGVfcGFyZW50X2lkX3VuaXF1ZWApLm9uKFxuICAgICAgICAgICAgY29scy5fbG9jYWxlLFxuICAgICAgICAgICAgY29scy5fcGFyZW50SUQsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB9KVxuXG4gICAgYWRhcHRlci50YWJsZXNbbG9jYWxlVGFibGVOYW1lXSA9IGxvY2FsZXNUYWJsZVxuXG4gICAgY29uc3QgbG9jYWxlc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGxvY2FsZXNUYWJsZSwgKHsgb25lIH0pID0+ICh7XG4gICAgICBfcGFyZW50SUQ6IG9uZSh0YWJsZSwge1xuICAgICAgICBmaWVsZHM6IFtsb2NhbGVzVGFibGUuX3BhcmVudElEXSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2xvY2FsZVRhYmxlTmFtZX1gXSA9IGxvY2FsZXNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGhhc01hbnlUZXh0RmllbGQgJiYgYnVpbGRUZXh0cykge1xuICAgIGNvbnN0IHRleHRzVGFibGVOYW1lID0gYCR7cm9vdFRhYmxlTmFtZX1fdGV4dHNgXG4gICAgY29uc3QgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgdGV4dDogdmFyY2hhcigndGV4dCcpLFxuICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAucmVmZXJlbmNlcygoKSA9PiB0YWJsZS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgIC5ub3ROdWxsKCksXG4gICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgIH1cblxuICAgIGlmIChoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkKSB7XG4gICAgICBjb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJylcbiAgICB9XG5cbiAgICB0ZXh0c1RhYmxlID0gcGdUYWJsZSh0ZXh0c1RhYmxlTmFtZSwgY29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIEluZGV4QnVpbGRlcj4gPSB7XG4gICAgICAgIG9yZGVyUGFyZW50SWR4OiBpbmRleCgnb3JkZXJfcGFyZW50X2lkeCcpLm9uKGNvbHMub3JkZXIsIGNvbHMucGFyZW50KSxcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc01hbnlUZXh0RmllbGQgPT09ICdpbmRleCcpIHtcbiAgICAgICAgaW5kZXhlcy50ZXh0X2lkeCA9IGluZGV4KCd0ZXh0X2lkeCcpLm9uKGNvbHMudGV4dClcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIHtcbiAgICAgICAgaW5kZXhlcy5sb2NhbGVQYXJlbnQgPSBpbmRleCgnbG9jYWxlX3BhcmVudCcpLm9uKGNvbHMubG9jYWxlLCBjb2xzLnBhcmVudClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZGV4ZXNcbiAgICB9KVxuXG4gICAgYWRhcHRlci50YWJsZXNbdGV4dHNUYWJsZU5hbWVdID0gdGV4dHNUYWJsZVxuXG4gICAgY29uc3QgdGV4dHNUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyh0ZXh0c1RhYmxlLCAoeyBvbmUgfSkgPT4gKHtcbiAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgIGZpZWxkczogW3RleHRzVGFibGUucGFyZW50XSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke3RleHRzVGFibGVOYW1lfWBdID0gdGV4dHNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCAmJiBidWlsZE51bWJlcnMpIHtcbiAgICBjb25zdCBudW1iZXJzVGFibGVOYW1lID0gYCR7cm9vdFRhYmxlTmFtZX1fbnVtYmVyc2BcbiAgICBjb25zdCBjb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgaWQ6IHNlcmlhbCgnaWQnKS5wcmltYXJ5S2V5KCksXG4gICAgICBudW1iZXI6IG51bWVyaWMoJ251bWJlcicpLFxuICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAucmVmZXJlbmNlcygoKSA9PiB0YWJsZS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgIC5ub3ROdWxsKCksXG4gICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgIH1cblxuICAgIGlmIChoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgIGNvbHVtbnMubG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdsb2NhbGUnKVxuICAgIH1cblxuICAgIG51bWJlcnNUYWJsZSA9IHBnVGFibGUobnVtYmVyc1RhYmxlTmFtZSwgY29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIEluZGV4QnVpbGRlcj4gPSB7XG4gICAgICAgIG9yZGVyUGFyZW50SWR4OiBpbmRleCgnb3JkZXJfcGFyZW50X2lkeCcpLm9uKGNvbHMub3JkZXIsIGNvbHMucGFyZW50KSxcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCA9PT0gJ2luZGV4Jykge1xuICAgICAgICBpbmRleGVzLm51bWJlcklkeCA9IGluZGV4KCdudW1iZXJfaWR4Jykub24oY29scy5udW1iZXIpXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgaW5kZXhlcy5sb2NhbGVQYXJlbnQgPSBpbmRleCgnbG9jYWxlX3BhcmVudCcpLm9uKGNvbHMubG9jYWxlLCBjb2xzLnBhcmVudClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZGV4ZXNcbiAgICB9KVxuXG4gICAgYWRhcHRlci50YWJsZXNbbnVtYmVyc1RhYmxlTmFtZV0gPSBudW1iZXJzVGFibGVcblxuICAgIGNvbnN0IG51bWJlcnNUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyhudW1iZXJzVGFibGUsICh7IG9uZSB9KSA9PiAoe1xuICAgICAgcGFyZW50OiBvbmUodGFibGUsIHtcbiAgICAgICAgZmllbGRzOiBbbnVtYmVyc1RhYmxlLnBhcmVudF0sXG4gICAgICAgIHJlZmVyZW5jZXM6IFt0YWJsZS5pZF0sXG4gICAgICB9KSxcbiAgICB9KSlcblxuICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHtudW1iZXJzVGFibGVOYW1lfWBdID0gbnVtYmVyc1RhYmxlUmVsYXRpb25zXG4gIH1cblxuICBpZiAoYnVpbGRSZWxhdGlvbnNoaXBzKSB7XG4gICAgaWYgKHJlbGF0aW9uc2hpcHMuc2l6ZSkge1xuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgICAgaWQ6IHNlcmlhbCgnaWQnKS5wcmltYXJ5S2V5KCksXG4gICAgICAgIG9yZGVyOiBpbnRlZ2VyKCdvcmRlcicpLFxuICAgICAgICBwYXJlbnQ6IHBhcmVudElEQ29sdW1uTWFwW2lkQ29sVHlwZV0oJ3BhcmVudF9pZCcpXG4gICAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAgIC5ub3ROdWxsKCksXG4gICAgICAgIHBhdGg6IHZhcmNoYXIoJ3BhdGgnKS5ub3ROdWxsKCksXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkge1xuICAgICAgICByZWxhdGlvbnNoaXBDb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJylcbiAgICAgIH1cblxuICAgICAgcmVsYXRpb25zaGlwcy5mb3JFYWNoKChyZWxhdGlvblRvKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFJlbGF0aW9uVG8gPSB0b1NuYWtlQ2FzZShyZWxhdGlvblRvKVxuICAgICAgICBsZXQgY29sVHlwZSA9ICdpbnRlZ2VyJ1xuICAgICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEID0gYWRhcHRlci5wYXlsb2FkLmNvbGxlY3Rpb25zW1xuICAgICAgICAgIHJlbGF0aW9uVG9cbiAgICAgICAgXS5jb25maWcuZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuICAgICAgICBpZiAocmVsYXRlZENvbGxlY3Rpb25DdXN0b21JRD8udHlwZSA9PT0gJ251bWJlcicpIGNvbFR5cGUgPSAnbnVtZXJpYydcbiAgICAgICAgaWYgKHJlbGF0ZWRDb2xsZWN0aW9uQ3VzdG9tSUQ/LnR5cGUgPT09ICd0ZXh0JykgY29sVHlwZSA9ICd2YXJjaGFyJ1xuXG4gICAgICAgIHJlbGF0aW9uc2hpcENvbHVtbnNbYCR7cmVsYXRpb25Ub31JRGBdID0gcGFyZW50SURDb2x1bW5NYXBbY29sVHlwZV0oXG4gICAgICAgICAgYCR7Zm9ybWF0dGVkUmVsYXRpb25Ub31faWRgLFxuICAgICAgICApLnJlZmVyZW5jZXMoKCkgPT4gYWRhcHRlci50YWJsZXNbZm9ybWF0dGVkUmVsYXRpb25Ub10uaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgfSlcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwc1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fcmVsc2BcblxuICAgICAgcmVsYXRpb25zaGlwc1RhYmxlID0gcGdUYWJsZShyZWxhdGlvbnNoaXBzVGFibGVOYW1lLCByZWxhdGlvbnNoaXBDb2x1bW5zLCAoY29scykgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgICAgIG9yZGVyOiBpbmRleCgnb3JkZXJfaWR4Jykub24oY29scy5vcmRlciksXG4gICAgICAgICAgcGFyZW50SWR4OiBpbmRleCgncGFyZW50X2lkeCcpLm9uKGNvbHMucGFyZW50KSxcbiAgICAgICAgICBwYXRoSWR4OiBpbmRleCgncGF0aF9pZHgnKS5vbihjb2xzLnBhdGgpLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSB7XG4gICAgICAgICAgcmVzdWx0LmxvY2FsZUlkeCA9IGluZGV4KCdsb2NhbGVfaWR4Jykub24oY29scy5sb2NhbGUpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9KVxuXG4gICAgICBhZGFwdGVyLnRhYmxlc1tyZWxhdGlvbnNoaXBzVGFibGVOYW1lXSA9IHJlbGF0aW9uc2hpcHNUYWJsZVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBzVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMocmVsYXRpb25zaGlwc1RhYmxlLCAoeyBvbmUgfSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgICAgICBmaWVsZHM6IFtyZWxhdGlvbnNoaXBzVGFibGUucGFyZW50XSxcbiAgICAgICAgICAgIHJlZmVyZW5jZXM6IFt0YWJsZS5pZF0sXG4gICAgICAgICAgICByZWxhdGlvbk5hbWU6ICdfcmVscycsXG4gICAgICAgICAgfSksXG4gICAgICAgIH1cblxuICAgICAgICByZWxhdGlvbnNoaXBzLmZvckVhY2goKHJlbGF0aW9uVG8pID0+IHtcbiAgICAgICAgICBjb25zdCByZWxhdGVkVGFibGVOYW1lID0gdG9TbmFrZUNhc2UocmVsYXRpb25UbylcbiAgICAgICAgICBjb25zdCBpZENvbHVtbk5hbWUgPSBgJHtyZWxhdGlvblRvfUlEYFxuICAgICAgICAgIHJlc3VsdFtpZENvbHVtbk5hbWVdID0gb25lKGFkYXB0ZXIudGFibGVzW3JlbGF0ZWRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICBmaWVsZHM6IFtyZWxhdGlvbnNoaXBzVGFibGVbaWRDb2x1bW5OYW1lXV0sXG4gICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcmVsYXRlZFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSlcblxuICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke3JlbGF0aW9uc2hpcHNUYWJsZU5hbWV9YF0gPSByZWxhdGlvbnNoaXBzVGFibGVSZWxhdGlvbnNcbiAgICB9XG4gIH1cblxuICBjb25zdCB0YWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyh0YWJsZSwgKHsgbWFueSB9KSA9PiB7XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHt9XG5cbiAgICByZWxhdGlvbnNUb0J1aWxkLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICByZXN1bHRba2V5XSA9IG1hbnkoYWRhcHRlci50YWJsZXNbdmFsXSlcbiAgICB9KVxuXG4gICAgaWYgKGhhc0xvY2FsaXplZEZpZWxkKSB7XG4gICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGxvY2FsZXNUYWJsZSlcbiAgICB9XG5cbiAgICBpZiAoaGFzTWFueVRleHRGaWVsZCkge1xuICAgICAgcmVzdWx0Ll90ZXh0cyA9IG1hbnkodGV4dHNUYWJsZSlcbiAgICB9XG4gICAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgcmVzdWx0Ll9udW1iZXJzID0gbWFueShudW1iZXJzVGFibGUpXG4gICAgfVxuXG4gICAgaWYgKHJlbGF0aW9uc2hpcHMuc2l6ZSAmJiByZWxhdGlvbnNoaXBzVGFibGUpIHtcbiAgICAgIHJlc3VsdC5fcmVscyA9IG1hbnkocmVsYXRpb25zaGlwc1RhYmxlLCB7XG4gICAgICAgIHJlbGF0aW9uTmFtZTogJ19yZWxzJyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KVxuXG4gIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHt0YWJsZU5hbWV9YF0gPSB0YWJsZVJlbGF0aW9uc1xuXG4gIHJldHVybiB7IGhhc01hbnlUZXh0RmllbGQsIGhhc01hbnlOdW1iZXJGaWVsZCwgcmVsYXRpb25zVG9CdWlsZCB9XG59XG4iXSwibmFtZXMiOlsiYnVpbGRUYWJsZSIsImFkYXB0ZXIiLCJiYXNlQ29sdW1ucyIsImJhc2VFeHRyYUNvbmZpZyIsImJ1aWxkVGV4dHMiLCJidWlsZE51bWJlcnMiLCJidWlsZFJlbGF0aW9uc2hpcHMiLCJkaXNhYmxlTm90TnVsbCIsImRpc2FibGVVbmlxdWUiLCJmaWVsZHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RSZWxhdGlvbnNoaXBzIiwicm9vdFRhYmxlSURDb2xUeXBlIiwicm9vdFRhYmxlTmFtZSIsImluY29taW5nUm9vdFRhYmxlTmFtZSIsInRhYmxlTmFtZSIsInRpbWVzdGFtcHMiLCJjb2x1bW5zIiwiaW5kZXhlcyIsImhhc0xvY2FsaXplZEZpZWxkIiwiaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJoYXNNYW55VGV4dEZpZWxkIiwiaGFzTWFueU51bWJlckZpZWxkIiwiaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsImxvY2FsZXNDb2x1bW5zIiwibG9jYWxlc0luZGV4ZXMiLCJsb2NhbGVzVGFibGUiLCJ0ZXh0c1RhYmxlIiwibnVtYmVyc1RhYmxlIiwicmVsYXRpb25zaGlwcyIsIlNldCIsInJlbGF0aW9uc2hpcHNUYWJsZSIsInJlbGF0aW9uc1RvQnVpbGQiLCJNYXAiLCJpZENvbFR5cGUiLCJnZXRDb25maWdJRFR5cGUiLCJpZENvbFR5cGVNYXAiLCJpbnRlZ2VyIiwic2VyaWFsIiwibnVtZXJpYyIsInZhcmNoYXIiLCJpZCIsInByaW1hcnlLZXkiLCJ0cmF2ZXJzZUZpZWxkcyIsIm5ld1RhYmxlTmFtZSIsInBhcmVudFRhYmxlTmFtZSIsImNyZWF0ZWRBdCIsInRpbWVzdGFtcCIsIm1vZGUiLCJwcmVjaXNpb24iLCJ3aXRoVGltZXpvbmUiLCJkZWZhdWx0Tm93Iiwibm90TnVsbCIsInVwZGF0ZWRBdCIsInRhYmxlIiwicGdUYWJsZSIsImNvbHMiLCJleHRyYUNvbmZpZyIsIk9iamVjdCIsImVudHJpZXMiLCJyZWR1Y2UiLCJjb25maWciLCJrZXkiLCJmdW5jIiwiYWNjIiwiY29sTmFtZSIsInRhYmxlcyIsImxvY2FsZVRhYmxlTmFtZSIsIl9sb2NhbGUiLCJlbnVtcyIsImVudW1fX2xvY2FsZXMiLCJfcGFyZW50SUQiLCJwYXJlbnRJRENvbHVtbk1hcCIsInJlZmVyZW5jZXMiLCJvbkRlbGV0ZSIsIl9sb2NhbGVQYXJlbnQiLCJ1bmlxdWUiLCJvbiIsImxvY2FsZXNUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9ucyIsIm9uZSIsInRleHRzVGFibGVOYW1lIiwidGV4dCIsIm9yZGVyIiwicGFyZW50IiwicGF0aCIsImxvY2FsZSIsIm9yZGVyUGFyZW50SWR4IiwiaW5kZXgiLCJ0ZXh0X2lkeCIsImxvY2FsZVBhcmVudCIsInRleHRzVGFibGVSZWxhdGlvbnMiLCJudW1iZXJzVGFibGVOYW1lIiwibnVtYmVyIiwibnVtYmVySWR4IiwibnVtYmVyc1RhYmxlUmVsYXRpb25zIiwic2l6ZSIsInJlbGF0aW9uc2hpcENvbHVtbnMiLCJmb3JFYWNoIiwicmVsYXRpb25UbyIsImZvcm1hdHRlZFJlbGF0aW9uVG8iLCJ0b1NuYWtlQ2FzZSIsImNvbFR5cGUiLCJyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEIiwicGF5bG9hZCIsImNvbGxlY3Rpb25zIiwiZmluZCIsImZpZWxkIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJ0eXBlIiwicmVsYXRpb25zaGlwc1RhYmxlTmFtZSIsInJlc3VsdCIsInBhcmVudElkeCIsInBhdGhJZHgiLCJsb2NhbGVJZHgiLCJyZWxhdGlvbnNoaXBzVGFibGVSZWxhdGlvbnMiLCJyZWxhdGlvbk5hbWUiLCJyZWxhdGVkVGFibGVOYW1lIiwiaWRDb2x1bW5OYW1lIiwidGFibGVSZWxhdGlvbnMiLCJtYW55IiwidmFsIiwiX2xvY2FsZXMiLCJfdGV4dHMiLCJfbnVtYmVycyIsIl9yZWxzIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBaUR2QkE7OztlQUFBQTs7OzRCQTVDYTt3QkFVbkI7dUJBQzBCO29FQUNUO2lDQUlRO21DQUNFO2dDQUNIOzs7Ozs7QUEwQnhCLE1BQU1BLGFBQWEsQ0FBQyxFQUN6QkMsT0FBTyxFQUNQQyxjQUFjLENBQUMsQ0FBQyxFQUNoQkMsa0JBQWtCLENBQUMsQ0FBQyxFQUNwQkMsVUFBVSxFQUNWQyxZQUFZLEVBQ1pDLGtCQUFrQixFQUNsQkMsY0FBYyxFQUNkQyxnQkFBZ0IsS0FBSyxFQUNyQkMsTUFBTSxFQUNOQyxvQkFBb0IsRUFDcEJDLGlCQUFpQixFQUNqQkMsa0JBQWtCLEVBQ2xCQyxlQUFlQyxxQkFBcUIsRUFDcENDLFNBQVMsRUFDVEMsVUFBVSxFQUNMO0lBQ0wsTUFBTUgsZ0JBQWdCQyx5QkFBeUJDO0lBQy9DLE1BQU1FLFVBQTJDZjtJQUNqRCxNQUFNZ0IsVUFBa0UsQ0FBQztJQUV6RSxJQUFJQyxvQkFBb0I7SUFDeEIsSUFBSUMsZ0NBQWdDO0lBQ3BDLElBQUlDLG1CQUFzQztJQUMxQyxJQUFJQyxxQkFBd0M7SUFDNUMsSUFBSUMsNEJBQTRCO0lBQ2hDLElBQUlDLDhCQUE4QjtJQUVsQyxNQUFNQyxpQkFBa0QsQ0FBQztJQUN6RCxNQUFNQyxpQkFBeUUsQ0FBQztJQUNoRixJQUFJQztJQUNKLElBQUlDO0lBQ0osSUFBSUM7SUFFSix1Q0FBdUM7SUFDdkMsTUFBTUMsZ0JBQTZCbkIscUJBQXFCLElBQUlvQjtJQUU1RCxJQUFJQztJQUVKLG9CQUFvQjtJQUNwQixNQUFNQyxtQkFBd0MsSUFBSUM7SUFFbEQsTUFBTUMsWUFBWUMsSUFBQUEsZ0NBQWUsRUFBQzNCO0lBRWxDLE1BQU00QixlQUFlO1FBQ25CQyxTQUFTQyxjQUFNO1FBQ2ZDLFNBQUFBLGVB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
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvYnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBudW1lcmljLFxuICBwZ1RhYmxlLFxuICBzZXJpYWwsXG4gIHRpbWVzdGFtcCxcbiAgdW5pcXVlLFxuICB2YXJjaGFyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgR2VuZXJpY1RhYmxlLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgZ2V0Q29uZmlnSURUeXBlIH0gZnJvbSAnLi9nZXRDb25maWdJRFR5cGUnXG5pbXBvcnQgeyBwYXJlbnRJRENvbHVtbk1hcCB9IGZyb20gJy4vcGFyZW50SURDb2x1bW5NYXAnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGJhc2VDb2x1bW5zPzogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBiYXNlRXh0cmFDb25maWc/OiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlciB8IFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyPlxuICBidWlsZE51bWJlcnM/OiBib29sZWFuXG4gIGJ1aWxkUmVsYXRpb25zaGlwcz86IGJvb2xlYW5cbiAgYnVpbGRUZXh0cz86IGJvb2xlYW5cbiAgZGlzYWJsZU5vdE51bGw6IGJvb2xlYW5cbiAgZGlzYWJsZVVuaXF1ZTogYm9vbGVhblxuICBmaWVsZHM6IEZpZWxkW11cbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ/OiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJvb3RSZWxhdGlvbnNoaXBzPzogU2V0PHN0cmluZz5cbiAgcm9vdFRhYmxlSURDb2xUeXBlPzogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU/OiBzdHJpbmdcbiAgdGFibGVOYW1lOiBzdHJpbmdcbiAgdGltZXN0YW1wcz86IGJvb2xlYW5cbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIGhhc01hbnlOdW1iZXJGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW5cbiAgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW5cbiAgcmVsYXRpb25zVG9CdWlsZDogTWFwPHN0cmluZywgc3RyaW5nPlxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRUYWJsZSA9ICh7XG4gIGFkYXB0ZXIsXG4gIGJhc2VDb2x1bW5zID0ge30sXG4gIGJhc2VFeHRyYUNvbmZpZyA9IHt9LFxuICBidWlsZE51bWJlcnMsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgYnVpbGRUZXh0cyxcbiAgZGlzYWJsZU5vdE51bGwsXG4gIGRpc2FibGVVbmlxdWUgPSBmYWxzZSxcbiAgZmllbGRzLFxuICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgcm9vdFJlbGF0aW9uc2hpcHMsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZTogaW5jb21pbmdSb290VGFibGVOYW1lLFxuICB0YWJsZU5hbWUsXG4gIHRpbWVzdGFtcHMsXG59OiBBcmdzKTogUmVzdWx0ID0+IHtcbiAgY29uc3Qgcm9vdFRhYmxlTmFtZSA9IGluY29taW5nUm9vdFRhYmxlTmFtZSB8fCB0YWJsZU5hbWVcbiAgY29uc3QgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IGJhc2VDb2x1bW5zXG4gIGNvbnN0IGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPiA9IHt9XG5cbiAgbGV0IGhhc0xvY2FsaXplZEZpZWxkID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gZmFsc2VcbiAgbGV0IGhhc01hbnlUZXh0RmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc01hbnlOdW1iZXJGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSBmYWxzZVxuXG4gIGNvbnN0IGxvY2FsZXNDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge31cbiAgY29uc3QgbG9jYWxlc0luZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPiA9IHt9XG4gIGxldCBsb2NhbGVzVGFibGU6IEdlbmVyaWNUYWJsZVxuICBsZXQgdGV4dHNUYWJsZTogR2VuZXJpY1RhYmxlXG4gIGxldCBudW1iZXJzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIC8vIFJlbGF0aW9uc2hpcHMgdG8gdGhlIGJhc2UgY29sbGVjdGlvblxuICBjb25zdCByZWxhdGlvbnNoaXBzOiBTZXQ8c3RyaW5nPiA9IHJvb3RSZWxhdGlvbnNoaXBzIHx8IG5ldyBTZXQoKVxuXG4gIGxldCByZWxhdGlvbnNoaXBzVGFibGU6IEdlbmVyaWNUYWJsZVxuXG4gIC8vIERyaXp6bGUgcmVsYXRpb25zXG4gIGNvbnN0IHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKClcblxuICBjb25zdCBpZENvbFR5cGUgPSBnZXRDb25maWdJRFR5cGUoZmllbGRzKVxuXG4gIGNvbnN0IGlkQ29sVHlwZU1hcCA9IHtcbiAgICBpbnRlZ2VyOiBzZXJpYWwsXG4gICAgbnVtZXJpYyxcbiAgICB2YXJjaGFyLFxuICB9XG5cbiAgY29sdW1ucy5pZCA9IGlkQ29sVHlwZU1hcFtpZENvbFR5cGVdKCdpZCcpLnByaW1hcnlLZXkoKVxuICA7KHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICBoYXNNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTWFueVRleHRGaWVsZCxcbiAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICBhZGFwdGVyLFxuICAgIGJ1aWxkTnVtYmVycyxcbiAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgYnVpbGRUZXh0cyxcbiAgICBjb2x1bW5zLFxuICAgIGRpc2FibGVOb3ROdWxsLFxuICAgIGRpc2FibGVVbmlxdWUsXG4gICAgZmllbGRzLFxuICAgIGluZGV4ZXMsXG4gICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgbmV3VGFibGVOYW1lOiB0YWJsZU5hbWUsXG4gICAgcGFyZW50VGFibGVOYW1lOiB0YWJsZU5hbWUsXG4gICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICByZWxhdGlvbnNoaXBzLFxuICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkOiByb290UmVsYXRpb25zVG9CdWlsZCB8fCByZWxhdGlvbnNUb0J1aWxkLFxuICAgIHJvb3RUYWJsZUlEQ29sVHlwZTogcm9vdFRhYmxlSURDb2xUeXBlIHx8IGlkQ29sVHlwZSxcbiAgICByb290VGFibGVOYW1lLFxuICB9KSlcblxuICBpZiAodGltZXN0YW1wcykge1xuICAgIGNvbHVtbnMuY3JlYXRlZEF0ID0gdGltZXN0YW1wKCdjcmVhdGVkX2F0Jywge1xuICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICBwcmVjaXNpb246IDMsXG4gICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgfSlcbiAgICAgIC5kZWZhdWx0Tm93KClcbiAgICAgIC5ub3ROdWxsKClcbiAgICBjb2x1bW5zLnVwZGF0ZWRBdCA9IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHtcbiAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgIH0pXG4gICAgICAuZGVmYXVsdE5vdygpXG4gICAgICAubm90TnVsbCgpXG4gIH1cblxuICBjb25zdCB0YWJsZSA9IHBnVGFibGUodGFibGVOYW1lLCBjb2x1bW5zLCAoY29scykgPT4ge1xuICAgIGNvbnN0IGV4dHJhQ29uZmlnID0gT2JqZWN0LmVudHJpZXMoYmFzZUV4dHJhQ29uZmlnKS5yZWR1Y2UoKGNvbmZpZywgW2tleSwgZnVuY10pID0+IHtcbiAgICAgIGNvbmZpZ1trZXldID0gZnVuYyhjb2xzKVxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0sIHt9KVxuXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGluZGV4ZXMpLnJlZHVjZSgoYWNjLCBbY29sTmFtZSwgZnVuY10pID0+IHtcbiAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgIHJldHVybiBhY2NcbiAgICB9LCBleHRyYUNvbmZpZylcbiAgfSlcblxuICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdID0gdGFibGVcblxuICBpZiAoaGFzTG9jYWxpemVkRmllbGQpIHtcbiAgICBjb25zdCBsb2NhbGVUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXG4gICAgbG9jYWxlc0NvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgbG9jYWxlc0NvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgIGxvY2FsZXNDb2x1bW5zLl9wYXJlbnRJRCA9IHBhcmVudElEQ29sdW1uTWFwW2lkQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgLm5vdE51bGwoKVxuXG4gICAgbG9jYWxlc1RhYmxlID0gcGdUYWJsZShsb2NhbGVUYWJsZU5hbWUsIGxvY2FsZXNDb2x1bW5zLCAoY29scykgPT4ge1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGxvY2FsZXNJbmRleGVzKS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIFtjb2xOYW1lLCBmdW5jXSkgPT4ge1xuICAgICAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBfbG9jYWxlUGFyZW50OiB1bmlxdWUoYCR7bG9jYWxlVGFibGVOYW1lfV9sb2NhbGVfcGFyZW50X2lkX3VuaXF1ZWApLm9uKFxuICAgICAgICAgICAgY29scy5fbG9jYWxlLFxuICAgICAgICAgICAgY29scy5fcGFyZW50SUQsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB9KVxuXG4gICAgYWRhcHRlci50YWJsZXNbbG9jYWxlVGFibGVOYW1lXSA9IGxvY2FsZXNUYWJsZVxuXG4gICAgY29uc3QgbG9jYWxlc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGxvY2FsZXNUYWJsZSwgKHsgb25lIH0pID0+ICh7XG4gICAgICBfcGFyZW50SUQ6IG9uZSh0YWJsZSwge1xuICAgICAgICBmaWVsZHM6IFtsb2NhbGVzVGFibGUuX3BhcmVudElEXSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2xvY2FsZVRhYmxlTmFtZX1gXSA9IGxvY2FsZXNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGhhc01hbnlUZXh0RmllbGQgJiYgYnVpbGRUZXh0cykge1xuICAgIGNvbnN0IHRleHRzVGFibGVOYW1lID0gYCR7cm9vdFRhYmxlTmFtZX1fdGV4dHNgXG4gICAgY29uc3QgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAucmVmZXJlbmNlcygoKSA9PiB0YWJsZS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgIC5ub3ROdWxsKCksXG4gICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgICAgdGV4dDogdmFyY2hhcigndGV4dCcpLFxuICAgIH1cblxuICAgIGlmIChoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkKSB7XG4gICAgICBjb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJylcbiAgICB9XG5cbiAgICB0ZXh0c1RhYmxlID0gcGdUYWJsZSh0ZXh0c1RhYmxlTmFtZSwgY29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIEluZGV4QnVpbGRlcj4gPSB7XG4gICAgICAgIG9yZGVyUGFyZW50SWR4OiBpbmRleChgJHt0ZXh0c1RhYmxlTmFtZX1fb3JkZXJfcGFyZW50X2lkeGApLm9uKGNvbHMub3JkZXIsIGNvbHMucGFyZW50KSxcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc01hbnlUZXh0RmllbGQgPT09ICdpbmRleCcpIHtcbiAgICAgICAgaW5kZXhlcy50ZXh0X2lkeCA9IGluZGV4KGAke3RleHRzVGFibGVOYW1lfV90ZXh0X2lkeGApLm9uKGNvbHMudGV4dClcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIHtcbiAgICAgICAgaW5kZXhlcy5sb2NhbGVQYXJlbnQgPSBpbmRleChgJHt0ZXh0c1RhYmxlTmFtZX1fbG9jYWxlX3BhcmVudGApLm9uKGNvbHMubG9jYWxlLCBjb2xzLnBhcmVudClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZGV4ZXNcbiAgICB9KVxuXG4gICAgYWRhcHRlci50YWJsZXNbdGV4dHNUYWJsZU5hbWVdID0gdGV4dHNUYWJsZVxuXG4gICAgY29uc3QgdGV4dHNUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyh0ZXh0c1RhYmxlLCAoeyBvbmUgfSkgPT4gKHtcbiAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgIGZpZWxkczogW3RleHRzVGFibGUucGFyZW50XSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke3RleHRzVGFibGVOYW1lfWBdID0gdGV4dHNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCAmJiBidWlsZE51bWJlcnMpIHtcbiAgICBjb25zdCBudW1iZXJzVGFibGVOYW1lID0gYCR7cm9vdFRhYmxlTmFtZX1fbnVtYmVyc2BcbiAgICBjb25zdCBjb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgaWQ6IHNlcmlhbCgnaWQnKS5wcmltYXJ5S2V5KCksXG4gICAgICBudW1iZXI6IG51bWVyaWMoJ251bWJlcicpLFxuICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAucmVmZXJlbmNlcygoKSA9PiB0YWJsZS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgIC5ub3ROdWxsKCksXG4gICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgIH1cblxuICAgIGlmIChoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgIGNvbHVtbnMubG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdsb2NhbGUnKVxuICAgIH1cblxuICAgIG51bWJlcnNUYWJsZSA9IHBnVGFibGUobnVtYmVyc1RhYmxlTmFtZSwgY29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIEluZGV4QnVpbGRlcj4gPSB7XG4gICAgICAgIG9yZGVyUGFyZW50SWR4OiBpbmRleChgJHtudW1iZXJzVGFibGVOYW1lfV9vcmRlcl9wYXJlbnRfaWR4YCkub24oY29scy5vcmRlciwgY29scy5wYXJlbnQpLFxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTWFueU51bWJlckZpZWxkID09PSAnaW5kZXgnKSB7XG4gICAgICAgIGluZGV4ZXMubnVtYmVySWR4ID0gaW5kZXgoYCR7bnVtYmVyc1RhYmxlTmFtZX1fbnVtYmVyX2lkeGApLm9uKGNvbHMubnVtYmVyKVxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgIGluZGV4ZXMubG9jYWxlUGFyZW50ID0gaW5kZXgoYCR7bnVtYmVyc1RhYmxlTmFtZX1fbG9jYWxlX3BhcmVudGApLm9uKFxuICAgICAgICAgIGNvbHMubG9jYWxlLFxuICAgICAgICAgIGNvbHMucGFyZW50LFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbmRleGVzXG4gICAgfSlcblxuICAgIGFkYXB0ZXIudGFibGVzW251bWJlcnNUYWJsZU5hbWVdID0gbnVtYmVyc1RhYmxlXG5cbiAgICBjb25zdCBudW1iZXJzVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMobnVtYmVyc1RhYmxlLCAoeyBvbmUgfSkgPT4gKHtcbiAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgIGZpZWxkczogW251bWJlcnNUYWJsZS5wYXJlbnRdLFxuICAgICAgICByZWZlcmVuY2VzOiBbdGFibGUuaWRdLFxuICAgICAgfSksXG4gICAgfSkpXG5cbiAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7bnVtYmVyc1RhYmxlTmFtZX1gXSA9IG51bWJlcnNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGJ1aWxkUmVsYXRpb25zaGlwcykge1xuICAgIGlmIChyZWxhdGlvbnNoaXBzLnNpemUpIHtcbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcENvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgICBvcmRlcjogaW50ZWdlcignb3JkZXInKSxcbiAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IHRhYmxlLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIHtcbiAgICAgICAgcmVsYXRpb25zaGlwQ29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpXG4gICAgICB9XG5cbiAgICAgIHJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb25UbykgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRSZWxhdGlvblRvID0gdG9TbmFrZUNhc2UocmVsYXRpb25UbylcbiAgICAgICAgbGV0IGNvbFR5cGUgPSAnaW50ZWdlcidcbiAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb25DdXN0b21JRCA9IGFkYXB0ZXIucGF5bG9hZC5jb2xsZWN0aW9uc1tcbiAgICAgICAgICByZWxhdGlvblRvXG4gICAgICAgIF0uY29uZmlnLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcbiAgICAgICAgaWYgKHJlbGF0ZWRDb2xsZWN0aW9uQ3VzdG9tSUQ/LnR5cGUgPT09ICdudW1iZXInKSBjb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICAgIGlmIChyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEPy50eXBlID09PSAndGV4dCcpIGNvbFR5cGUgPSAndmFyY2hhcidcblxuICAgICAgICByZWxhdGlvbnNoaXBDb2x1bW5zW2Ake3JlbGF0aW9uVG99SURgXSA9IHBhcmVudElEQ29sdW1uTWFwW2NvbFR5cGVdKFxuICAgICAgICAgIGAke2Zvcm1hdHRlZFJlbGF0aW9uVG99X2lkYCxcbiAgICAgICAgKS5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW2Zvcm1hdHRlZFJlbGF0aW9uVG9dLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X3JlbHNgXG5cbiAgICAgIHJlbGF0aW9uc2hpcHNUYWJsZSA9IHBnVGFibGUocmVsYXRpb25zaGlwc1RhYmxlTmFtZSwgcmVsYXRpb25zaGlwQ29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgICAgICBvcmRlcjogaW5kZXgoYCR7cmVsYXRpb25zaGlwc1RhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5vcmRlciksXG4gICAgICAgICAgcGFyZW50SWR4OiBpbmRleChgJHtyZWxhdGlvbnNoaXBzVGFibGVOYW1lfV9wYXJlbnRfaWR4YCkub24oY29scy5wYXJlbnQpLFxuICAgICAgICAgIHBhdGhJZHg6IGluZGV4KGAke3JlbGF0aW9uc2hpcHNUYWJsZU5hbWV9X3BhdGhfaWR4YCkub24oY29scy5wYXRoKSxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkge1xuICAgICAgICAgIHJlc3VsdC5sb2NhbGVJZHggPSBpbmRleChgJHtyZWxhdGlvbnNoaXBzVGFibGVOYW1lfV9sb2NhbGVfaWR4YCkub24oY29scy5sb2NhbGUpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9KVxuXG4gICAgICBhZGFwdGVyLnRhYmxlc1tyZWxhdGlvbnNoaXBzVGFibGVOYW1lXSA9IHJlbGF0aW9uc2hpcHNUYWJsZVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBzVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMocmVsYXRpb25zaGlwc1RhYmxlLCAoeyBvbmUgfSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgICAgICBmaWVsZHM6IFtyZWxhdGlvbnNoaXBzVGFibGUucGFyZW50XSxcbiAgICAgICAgICAgIHJlZmVyZW5jZXM6IFt0YWJsZS5pZF0sXG4gICAgICAgICAgICByZWxhdGlvbk5hbWU6ICdfcmVscycsXG4gICAgICAgICAgfSksXG4gICAgICAgIH1cblxuICAgICAgICByZWxhdGlvbnNoaXBzLmZvckVhY2goKHJlbGF0aW9uVG8pID0+IHtcbiAgICAgICAgICBjb25zdCByZWxhdGVkVGFibGVOYW1lID0gdG9TbmFrZUNhc2UocmVsYXRpb25UbylcbiAgICAgICAgICBjb25zdCBpZENvbHVtbk5hbWUgPSBgJHtyZWxhdGlvblRvfUlEYFxuICAgICAgICAgIHJlc3VsdFtpZENvbHVtbk5hbWVdID0gb25lKGFkYXB0ZXIudGFibGVzW3JlbGF0ZWRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICBmaWVsZHM6IFtyZWxhdGlvbnNoaXBzVGFibGVbaWRDb2x1bW5OYW1lXV0sXG4gICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcmVsYXRlZFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSlcblxuICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke3JlbGF0aW9uc2hpcHNUYWJsZU5hbWV9YF0gPSByZWxhdGlvbnNoaXBzVGFibGVSZWxhdGlvbnNcbiAgICB9XG4gIH1cblxuICBjb25zdCB0YWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyh0YWJsZSwgKHsgbWFueSB9KSA9PiB7XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHt9XG5cbiAgICByZWxhdGlvbnNUb0J1aWxkLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICByZXN1bHRba2V5XSA9IG1hbnkoYWRhcHRlci50YWJsZXNbdmFsXSlcbiAgICB9KVxuXG4gICAgaWYgKGhhc0xvY2FsaXplZEZpZWxkKSB7XG4gICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGxvY2FsZXNUYWJsZSlcbiAgICB9XG5cbiAgICBpZiAoaGFzTWFueVRleHRGaWVsZCkge1xuICAgICAgcmVzdWx0Ll90ZXh0cyA9IG1hbnkodGV4dHNUYWJsZSlcbiAgICB9XG4gICAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgcmVzdWx0Ll9udW1iZXJzID0gbWFueShudW1iZXJzVGFibGUpXG4gICAgfVxuXG4gICAgaWYgKHJlbGF0aW9uc2hpcHMuc2l6ZSAmJiByZWxhdGlvbnNoaXBzVGFibGUpIHtcbiAgICAgIHJlc3VsdC5fcmVscyA9IG1hbnkocmVsYXRpb25zaGlwc1RhYmxlLCB7XG4gICAgICAgIHJlbGF0aW9uTmFtZTogJ19yZWxzJyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KVxuXG4gIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHt0YWJsZU5hbWV9YF0gPSB0YWJsZVJlbGF0aW9uc1xuXG4gIHJldHVybiB7IGhhc01hbnlOdW1iZXJGaWVsZCwgaGFzTWFueVRleHRGaWVsZCwgcmVsYXRpb25zVG9CdWlsZCB9XG59XG4iXSwibmFtZXMiOlsiYnVpbGRUYWJsZSIsImFkYXB0ZXIiLCJiYXNlQ29sdW1ucyIsImJhc2VFeHRyYUNvbmZpZyIsImJ1aWxkTnVtYmVycyIsImJ1aWxkUmVsYXRpb25zaGlwcyIsImJ1aWxkVGV4dHMiLCJkaXNhYmxlTm90TnVsbCIsImRpc2FibGVVbmlxdWUiLCJmaWVsZHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RSZWxhdGlvbnNoaXBzIiwicm9vdFRhYmxlSURDb2xUeXBlIiwicm9vdFRhYmxlTmFtZSIsImluY29taW5nUm9vdFRhYmxlTmFtZSIsInRhYmxlTmFtZSIsInRpbWVzdGFtcHMiLCJjb2x1bW5zIiwiaW5kZXhlcyIsImhhc0xvY2FsaXplZEZpZWxkIiwiaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJoYXNNYW55VGV4dEZpZWxkIiwiaGFzTWFueU51bWJlckZpZWxkIiwiaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsImxvY2FsZXNDb2x1bW5zIiwibG9jYWxlc0luZGV4ZXMiLCJsb2NhbGVzVGFibGUiLCJ0ZXh0c1RhYmxlIiwibnVtYmVyc1RhYmxlIiwicmVsYXRpb25zaGlwcyIsIlNldCIsInJlbGF0aW9uc2hpcHNUYWJsZSIsInJlbGF0aW9uc1RvQnVpbGQiLCJNYXAiLCJpZENvbFR5cGUiLCJnZXRDb25maWdJRFR5cGUiLCJpZENvbFR5cGVNYXAiLCJpbnRlZ2VyIiwic2VyaWFsIiwibnVtZXJpYyIsInZhcmNoYXIiLCJpZCIsInByaW1hcnlLZXkiLCJ0cmF2ZXJzZUZpZWxkcyIsIm5ld1RhYmxlTmFtZSIsInBhcmVudFRhYmxlTmFtZSIsImNyZWF0ZWRBdCIsInRpbWVzdGFtcCIsIm1vZGUiLCJwcmVjaXNpb24iLCJ3aXRoVGltZXpvbmUiLCJkZWZhdWx0Tm93Iiwibm90TnVsbCIsInVwZGF0ZWRBdCIsInRhYmxlIiwicGdUYWJsZSIsImNvbHMiLCJleHRyYUNvbmZpZyIsIk9iamVjdCIsImVudHJpZXMiLCJyZWR1Y2UiLCJjb25maWciLCJrZXkiLCJmdW5jIiwiYWNjIiwiY29sTmFtZSIsInRhYmxlcyIsImxvY2FsZVRhYmxlTmFtZSIsIl9sb2NhbGUiLCJlbnVtcyIsImVudW1fX2xvY2FsZXMiLCJfcGFyZW50SUQiLCJwYXJlbnRJRENvbHVtbk1hcCIsInJlZmVyZW5jZXMiLCJvbkRlbGV0ZSIsIl9sb2NhbGVQYXJlbnQiLCJ1bmlxdWUiLCJvbiIsImxvY2FsZXNUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9ucyIsIm9uZSIsInRleHRzVGFibGVOYW1lIiwib3JkZXIiLCJwYXJlbnQiLCJwYXRoIiwidGV4dCIsImxvY2FsZSIsIm9yZGVyUGFyZW50SWR4IiwiaW5kZXgiLCJ0ZXh0X2lkeCIsImxvY2FsZVBhcmVudCIsInRleHRzVGFibGVSZWxhdGlvbnMiLCJudW1iZXJzVGFibGVOYW1lIiwibnVtYmVyIiwibnVtYmVySWR4IiwibnVtYmVyc1RhYmxlUmVsYXRpb25zIiwic2l6ZSIsInJlbGF0aW9uc2hpcENvbHVtbnMiLCJmb3JFYWNoIiwicmVsYXRpb25UbyIsImZvcm1hdHRlZFJlbGF0aW9uVG8iLCJ0b1NuYWtlQ2FzZSIsImNvbFR5cGUiLCJyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEIiwicGF5bG9hZCIsImNvbGxlY3Rpb25zIiwiZmluZCIsImZpZWxkIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJ0eXBlIiwicmVsYXRpb25zaGlwc1RhYmxlTmFtZSIsInJlc3VsdCIsInBhcmVudElkeCIsInBhdGhJZHgiLCJsb2NhbGVJZHgiLCJyZWxhdGlvbnNoaXBzVGFibGVSZWxhdGlvbnMiLCJyZWxhdGlvbk5hbWUiLCJyZWxhdGVkVGFibGVOYW1lIiwiaWRDb2x1bW5OYW1lIiwidGFibGVSZWxhdGlvbnMiLCJtYW55IiwidmFsIiwiX2xvY2FsZXMiLCJfdGV4dHMiLCJfbnVtYmVycyIsIl9yZWxzIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBaUR2QkE7OztlQUFBQTs7OzRCQTVDYTt3QkFVbkI7dUJBQzBCO29FQUNUO2lDQUlRO21DQUNFO2dDQUNIOzs7Ozs7QUEwQnhCLE1BQU1BLGFBQWEsQ0FBQyxFQUN6QkMsT0FBTyxFQUNQQyxjQUFjLENBQUMsQ0FBQyxFQUNoQkMsa0JBQWtCLENBQUMsQ0FBQyxFQUNwQkMsWUFBWSxFQUNaQyxrQkFBa0IsRUFDbEJDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxnQkFBZ0IsS0FBSyxFQUNyQkMsTUFBTSxFQUNOQyxvQkFBb0IsRUFDcEJDLGlCQUFpQixFQUNqQkMsa0JBQWtCLEVBQ2xCQyxlQUFlQyxxQkFBcUIsRUFDcENDLFNBQVMsRUFDVEMsVUFBVSxFQUNMO0lBQ0wsTUFBTUgsZ0JBQWdCQyx5QkFBeUJDO0lBQy9DLE1BQU1FLFVBQTJDZjtJQUNqRCxNQUFNZ0IsVUFBa0UsQ0FBQztJQUV6RSxJQUFJQyxvQkFBb0I7SUFDeEIsSUFBSUMsZ0NBQWdDO0lBQ3BDLElBQUlDLG1CQUFzQztJQUMxQyxJQUFJQyxxQkFBd0M7SUFDNUMsSUFBSUMsNEJBQTRCO0lBQ2hDLElBQUlDLDhCQUE4QjtJQUVsQyxNQUFNQyxp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
@@ -2,9 +2,10 @@ import type { GenericColumn } from '../types';
2
2
  type CreateIndexArgs = {
3
3
  columnName: string;
4
4
  name: string | string[];
5
+ tableName: string;
5
6
  unique?: boolean;
6
7
  };
7
- export declare const createIndex: ({ name, columnName, unique }: CreateIndexArgs) => (table: {
8
+ export declare const createIndex: ({ name, columnName, tableName, unique }: CreateIndexArgs) => (table: {
8
9
  [x: string]: GenericColumn;
9
10
  }) => import("drizzle-orm/pg-core").IndexBuilder;
10
11
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"createIndex.d.ts","sourceRoot":"","sources":["../../src/schema/createIndex.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,WAAW,iCAAkC,eAAe;;gDAcxE,CAAA"}
1
+ {"version":3,"file":"createIndex.d.ts","sourceRoot":"","sources":["../../src/schema/createIndex.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,WAAW,4CAA6C,eAAe;;gDAenF,CAAA"}
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "createIndex", {
9
9
  }
10
10
  });
11
11
  const _pgcore = require("drizzle-orm/pg-core");
12
- const createIndex = ({ name, columnName, unique })=>{
12
+ const createIndex = ({ name, columnName, tableName, unique })=>{
13
13
  return (table)=>{
14
14
  let columns;
15
15
  if (Array.isArray(name)) {
@@ -20,9 +20,9 @@ const createIndex = ({ name, columnName, unique })=>{
20
20
  table[name]
21
21
  ];
22
22
  }
23
- if (unique) return (0, _pgcore.uniqueIndex)(`${columnName}_idx`).on(columns[0], ...columns.slice(1));
24
- return (0, _pgcore.index)(`${columnName}_idx`).on(columns[0], ...columns.slice(1));
23
+ if (unique) return (0, _pgcore.uniqueIndex)(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1));
24
+ return (0, _pgcore.index)(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1));
25
25
  };
26
26
  };
27
27
 
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvY3JlYXRlSW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB7IGluZGV4LCB1bmlxdWVJbmRleCB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY0NvbHVtbiB9IGZyb20gJy4uL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUluZGV4QXJncyA9IHtcbiAgY29sdW1uTmFtZTogc3RyaW5nXG4gIG5hbWU6IHN0cmluZyB8IHN0cmluZ1tdXG4gIHVuaXF1ZT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUluZGV4ID0gKHsgbmFtZSwgY29sdW1uTmFtZSwgdW5pcXVlIH06IENyZWF0ZUluZGV4QXJncykgPT4ge1xuICByZXR1cm4gKHRhYmxlOiB7IFt4OiBzdHJpbmddOiBHZW5lcmljQ29sdW1uIH0pID0+IHtcbiAgICBsZXQgY29sdW1uc1xuICAgIGlmIChBcnJheS5pc0FycmF5KG5hbWUpKSB7XG4gICAgICBjb2x1bW5zID0gbmFtZVxuICAgICAgICAubWFwKChjb2x1bW5OYW1lKSA9PiB0YWJsZVtjb2x1bW5OYW1lXSlcbiAgICAgICAgLy8gZXhjbHVkZSBmaWVsZHMgd2VyZSBpbmNsdWRlZCBpbiBjb21wb3VuZCBpbmRleGVzIGJ1dCBkbyBub3QgZXhpc3Qgb24gdGhlIHRhYmxlXG4gICAgICAgIC5maWx0ZXIoKGNvbCkgPT4gdHlwZW9mIGNvbCAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbHVtbnMgPSBbdGFibGVbbmFtZV1dXG4gICAgfVxuICAgIGlmICh1bmlxdWUpIHJldHVybiB1bmlxdWVJbmRleChgJHtjb2x1bW5OYW1lfV9pZHhgKS5vbihjb2x1bW5zWzBdLCAuLi5jb2x1bW5zLnNsaWNlKDEpKVxuICAgIHJldHVybiBpbmRleChgJHtjb2x1bW5OYW1lfV9pZHhgKS5vbihjb2x1bW5zWzBdLCAuLi5jb2x1bW5zLnNsaWNlKDEpKVxuICB9XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlSW5kZXgiLCJuYW1lIiwiY29sdW1uTmFtZSIsInVuaXF1ZSIsInRhYmxlIiwiY29sdW1ucyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImZpbHRlciIsImNvbCIsInVuaXF1ZUluZGV4Iiwib24iLCJzbGljZSIsImluZGV4Il0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBV3ZCQTs7O2VBQUFBOzs7d0JBVnNCO0FBVTVCLE1BQU1BLGNBQWMsQ0FBQyxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsTUFBTSxFQUFtQjtJQUN2RSxPQUFPLENBQUNDO1FBQ04sSUFBSUM7UUFDSixJQUFJQyxNQUFNQyxPQUFPLENBQUNOLE9BQU87WUFDdkJJLFVBQVVKLEtBQ1BPLEdBQUcsQ0FBQyxDQUFDTixhQUFlRSxLQUFLLENBQUNGLFdBQVcsQ0FDdEMsaUZBQWlGO2FBQ2hGTyxNQUFNLENBQUMsQ0FBQ0MsTUFBUSxPQUFPQSxRQUFRO1FBQ3BDLE9BQU87WUFDTEwsVUFBVTtnQkFBQ0QsS0FBSyxDQUFDSCxLQUFLO2FBQUM7UUFDekI7UUFDQSxJQUFJRSxRQUFRLE9BQU9RLElBQUFBLG1CQUFXLEVBQUMsQ0FBQyxFQUFFVCxXQUFXLElBQUksQ0FBQyxFQUFFVSxFQUFFLENBQUNQLE9BQU8sQ0FBQyxFQUFFLEtBQUtBLFFBQVFRLEtBQUssQ0FBQztRQUNwRixPQUFPQyxJQUFBQSxhQUFLLEVBQUMsQ0FBQyxFQUFFWixXQUFXLElBQUksQ0FBQyxFQUFFVSxFQUFFLENBQUNQLE9BQU8sQ0FBQyxFQUFFLEtBQUtBLFFBQVFRLEtBQUssQ0FBQztJQUNwRTtBQUNGIn0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvY3JlYXRlSW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB7IGluZGV4LCB1bmlxdWVJbmRleCB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY0NvbHVtbiB9IGZyb20gJy4uL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUluZGV4QXJncyA9IHtcbiAgY29sdW1uTmFtZTogc3RyaW5nXG4gIG5hbWU6IHN0cmluZyB8IHN0cmluZ1tdXG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIHVuaXF1ZT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUluZGV4ID0gKHsgbmFtZSwgY29sdW1uTmFtZSwgdGFibGVOYW1lLCB1bmlxdWUgfTogQ3JlYXRlSW5kZXhBcmdzKSA9PiB7XG4gIHJldHVybiAodGFibGU6IHsgW3g6IHN0cmluZ106IEdlbmVyaWNDb2x1bW4gfSkgPT4ge1xuICAgIGxldCBjb2x1bW5zXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmFtZSkpIHtcbiAgICAgIGNvbHVtbnMgPSBuYW1lXG4gICAgICAgIC5tYXAoKGNvbHVtbk5hbWUpID0+IHRhYmxlW2NvbHVtbk5hbWVdKVxuICAgICAgICAvLyBleGNsdWRlIGZpZWxkcyB3ZXJlIGluY2x1ZGVkIGluIGNvbXBvdW5kIGluZGV4ZXMgYnV0IGRvIG5vdCBleGlzdCBvbiB0aGUgdGFibGVcbiAgICAgICAgLmZpbHRlcigoY29sKSA9PiB0eXBlb2YgY29sICE9PSAndW5kZWZpbmVkJylcbiAgICB9IGVsc2Uge1xuICAgICAgY29sdW1ucyA9IFt0YWJsZVtuYW1lXV1cbiAgICB9XG4gICAgaWYgKHVuaXF1ZSlcbiAgICAgIHJldHVybiB1bmlxdWVJbmRleChgJHt0YWJsZU5hbWV9XyR7Y29sdW1uTmFtZX1faWR4YCkub24oY29sdW1uc1swXSwgLi4uY29sdW1ucy5zbGljZSgxKSlcbiAgICByZXR1cm4gaW5kZXgoYCR7dGFibGVOYW1lfV8ke2NvbHVtbk5hbWV9X2lkeGApLm9uKGNvbHVtbnNbMF0sIC4uLmNvbHVtbnMuc2xpY2UoMSkpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVJbmRleCIsIm5hbWUiLCJjb2x1bW5OYW1lIiwidGFibGVOYW1lIiwidW5pcXVlIiwidGFibGUiLCJjb2x1bW5zIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiZmlsdGVyIiwiY29sIiwidW5pcXVlSW5kZXgiLCJvbiIsInNsaWNlIiwiaW5kZXgiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFZdkJBOzs7ZUFBQUE7Ozt3QkFYc0I7QUFXNUIsTUFBTUEsY0FBYyxDQUFDLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBbUI7SUFDbEYsT0FBTyxDQUFDQztRQUNOLElBQUlDO1FBQ0osSUFBSUMsTUFBTUMsT0FBTyxDQUFDUCxPQUFPO1lBQ3ZCSyxVQUFVTCxLQUNQUSxHQUFHLENBQUMsQ0FBQ1AsYUFBZUcsS0FBSyxDQUFDSCxXQUFXLENBQ3RDLGlGQUFpRjthQUNoRlEsTUFBTSxDQUFDLENBQUNDLE1BQVEsT0FBT0EsUUFBUTtRQUNwQyxPQUFPO1lBQ0xMLFVBQVU7Z0JBQUNELEtBQUssQ0FBQ0osS0FBSzthQUFDO1FBQ3pCO1FBQ0EsSUFBSUcsUUFDRixPQUFPUSxJQUFBQSxtQkFBVyxFQUFDLENBQUMsRUFBRVQsVUFBVSxDQUFDLEVBQUVELFdBQVcsSUFBSSxDQUFDLEVBQUVXLEVBQUUsQ0FBQ1AsT0FBTyxDQUFDLEVBQUUsS0FBS0EsUUFBUVEsS0FBSyxDQUFDO1FBQ3ZGLE9BQU9DLElBQUFBLGFBQUssRUFBQyxDQUFDLEVBQUVaLFVBQVUsQ0FBQyxFQUFFRCxXQUFXLElBQUksQ0FBQyxFQUFFVyxFQUFFLENBQUNQLE9BQU8sQ0FBQyxFQUFFLEtBQUtBLFFBQVFRLEtBQUssQ0FBQztJQUNqRjtBQUNGIn0=
@@ -3,9 +3,9 @@ import type { Field, TabAsField } from 'payload/types';
3
3
  import type { GenericColumns, PostgresAdapter } from '../types';
4
4
  type Args = {
5
5
  adapter: PostgresAdapter;
6
- buildTexts: boolean;
7
6
  buildNumbers: boolean;
8
7
  buildRelationships: boolean;
8
+ buildTexts: boolean;
9
9
  columnPrefix?: string;
10
10
  columns: Record<string, PgColumnBuilder>;
11
11
  disableNotNull: boolean;
@@ -26,12 +26,12 @@ type Args = {
26
26
  };
27
27
  type Result = {
28
28
  hasLocalizedField: boolean;
29
- hasLocalizedManyTextField: boolean;
30
29
  hasLocalizedManyNumberField: boolean;
30
+ hasLocalizedManyTextField: boolean;
31
31
  hasLocalizedRelationshipField: boolean;
32
- hasManyTextField: 'index' | boolean;
33
32
  hasManyNumberField: 'index' | boolean;
33
+ hasManyTextField: 'index' | boolean;
34
34
  };
35
- export declare const traverseFields: ({ adapter, buildTexts, buildNumbers, buildRelationships, columnPrefix, columns, disableNotNull, disableUnique, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, }: Args) => Result;
35
+ export declare const traverseFields: ({ adapter, buildNumbers, buildRelationships, buildTexts, columnPrefix, columns, disableNotNull, disableUnique, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, }: Args) => Result;
36
36
  export {};
37
37
  //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAA2B,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAoBtD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAS/D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,yBAAyB,EAAE,OAAO,CAAA;IAClC,2BAA2B,EAAE,OAAO,CAAA;IACpC,6BAA6B,EAAE,OAAO,CAAA;IACtC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,cAAc,4TAsBxB,IAAI,KAAG,MAwkBT,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAA2B,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAoBtD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAS/D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,4TAsBxB,IAAI,KAAG,MA4kBT,CAAA"}
@@ -24,7 +24,7 @@ function _interop_require_default(obj) {
24
24
  default: obj
25
25
  };
26
26
  }
27
- const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships, columnPrefix, columns, disableNotNull, disableUnique = false, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName })=>{
27
+ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts, columnPrefix, columns, disableNotNull, disableUnique = false, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName })=>{
28
28
  let hasLocalizedField = false;
29
29
  let hasLocalizedRelationshipField = false;
30
30
  let hasManyTextField = false;
@@ -57,7 +57,7 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
57
57
  'point',
58
58
  'relationship',
59
59
  'upload'
60
- ].includes(field.type) && !(field.type === 'number' && field.hasMany === true)) {
60
+ ].includes(field.type) && !('hasMany' in field && field.hasMany === true)) {
61
61
  const unique = disableUnique !== true && field.unique;
62
62
  if (unique) {
63
63
  const constraintValue = `${fieldPrefix || ''}${field.name}`;
@@ -66,9 +66,10 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
66
66
  }
67
67
  adapter.fieldConstraints[rootTableName][`${columnName}_idx`] = constraintValue;
68
68
  }
69
- targetIndexes[`${field.name}Idx`] = (0, _createIndex.createIndex)({
69
+ targetIndexes[`${newTableName}_${field.name}Idx`] = (0, _createIndex.createIndex)({
70
70
  name: fieldName,
71
71
  columnName,
72
+ tableName: newTableName,
72
73
  unique
73
74
  });
74
75
  }
@@ -158,15 +159,15 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
158
159
  value: adapter.enums[enumName]('value')
159
160
  };
160
161
  const baseExtraConfig = {
161
- orderIdx: (cols)=>(0, _pgcore.index)('order_idx').on(cols.order),
162
- parentIdx: (cols)=>(0, _pgcore.index)('parent_idx').on(cols.parent)
162
+ orderIdx: (cols)=>(0, _pgcore.index)(`${selectTableName}_order_idx`).on(cols.order),
163
+ parentIdx: (cols)=>(0, _pgcore.index)(`${selectTableName}_parent_idx`).on(cols.parent)
163
164
  };
164
165
  if (field.localized) {
165
166
  baseColumns.locale = adapter.enums.enum__locales('locale').notNull();
166
- baseExtraConfig.localeIdx = (cols)=>(0, _pgcore.index)('locale_idx').on(cols.locale);
167
+ baseExtraConfig.localeIdx = (cols)=>(0, _pgcore.index)(`${selectTableName}_locale_idx`).on(cols.locale);
167
168
  }
168
169
  if (field.index) {
169
- baseExtraConfig.value = (cols)=>(0, _pgcore.index)('value_idx').on(cols.value);
170
+ baseExtraConfig.value = (cols)=>(0, _pgcore.index)(`${selectTableName}_value_idx`).on(cols.value);
170
171
  }
171
172
  (0, _build.buildTable)({
172
173
  adapter,
@@ -213,14 +214,14 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
213
214
  }).notNull()
214
215
  };
215
216
  const baseExtraConfig = {
216
- _orderIdx: (cols)=>(0, _pgcore.index)('_order_idx').on(cols._order),
217
- _parentIDIdx: (cols)=>(0, _pgcore.index)('_parent_id_idx').on(cols._parentID)
217
+ _orderIdx: (cols)=>(0, _pgcore.index)(`${arrayTableName}_order_idx`).on(cols._order),
218
+ _parentIDIdx: (cols)=>(0, _pgcore.index)(`${arrayTableName}_parent_id_idx`).on(cols._parentID)
218
219
  };
219
220
  if (field.localized && adapter.payload.config.localization) {
220
221
  baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
221
- baseExtraConfig._localeIdx = (cols)=>(0, _pgcore.index)('_locale_idx').on(cols._locale);
222
+ baseExtraConfig._localeIdx = (cols)=>(0, _pgcore.index)(`${arrayTableName}_locale_idx`).on(cols._locale);
222
223
  }
223
- const { hasManyTextField: subHasManyTextField, hasManyNumberField: subHasManyNumberField, relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
224
+ const { hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
224
225
  adapter,
225
226
  baseColumns,
226
227
  baseExtraConfig,
@@ -276,15 +277,15 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
276
277
  _path: (0, _pgcore.text)('_path').notNull()
277
278
  };
278
279
  const baseExtraConfig = {
279
- _orderIdx: (cols)=>(0, _pgcore.index)('order_idx').on(cols._order),
280
- _parentIDIdx: (cols)=>(0, _pgcore.index)('parent_id_idx').on(cols._parentID),
281
- _pathIdx: (cols)=>(0, _pgcore.index)('path_idx').on(cols._path)
280
+ _orderIdx: (cols)=>(0, _pgcore.index)(`${blockTableName}_order_idx`).on(cols._order),
281
+ _parentIDIdx: (cols)=>(0, _pgcore.index)(`${blockTableName}_parent_id_idx`).on(cols._parentID),
282
+ _pathIdx: (cols)=>(0, _pgcore.index)(`${blockTableName}_path_idx`).on(cols._path)
282
283
  };
283
284
  if (field.localized && adapter.payload.config.localization) {
284
285
  baseColumns._locale = adapter.enums.enum__locales('_locale').notNull();
285
- baseExtraConfig._localeIdx = (cols)=>(0, _pgcore.index)('locale_idx').on(cols._locale);
286
+ baseExtraConfig._localeIdx = (cols)=>(0, _pgcore.index)(`${blockTableName}_locale_idx`).on(cols._locale);
286
287
  }
287
- const { hasManyTextField: subHasManyTextField, hasManyNumberField: subHasManyNumberField, relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
288
+ const { hasManyNumberField: subHasManyNumberField, hasManyTextField: subHasManyTextField, relationsToBuild: subRelationsToBuild } = (0, _build.buildTable)({
288
289
  adapter,
289
290
  baseColumns,
290
291
  baseExtraConfig,
@@ -339,11 +340,11 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
339
340
  case 'group':
340
341
  {
341
342
  if (!('name' in field)) {
342
- const { hasLocalizedField: groupHasLocalizedField, hasLocalizedManyTextField: groupHasLocalizedManyTextField, hasLocalizedManyNumberField: groupHasLocalizedManyNumberField, hasLocalizedRelationshipField: groupHasLocalizedRelationshipField, hasManyTextField: groupHasManyTextField, hasManyNumberField: groupHasManyNumberField } = traverseFields({
343
+ const { hasLocalizedField: groupHasLocalizedField, hasLocalizedManyNumberField: groupHasLocalizedManyNumberField, hasLocalizedManyTextField: groupHasLocalizedManyTextField, hasLocalizedRelationshipField: groupHasLocalizedRelationshipField, hasManyNumberField: groupHasManyNumberField, hasManyTextField: groupHasManyTextField } = traverseFields({
343
344
  adapter,
344
- buildTexts,
345
345
  buildNumbers,
346
346
  buildRelationships,
347
+ buildTexts,
347
348
  columnPrefix,
348
349
  columns,
349
350
  disableNotNull,
@@ -371,11 +372,11 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
371
372
  break;
372
373
  }
373
374
  const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
374
- const { hasLocalizedField: groupHasLocalizedField, hasLocalizedManyTextField: groupHasLocalizedManyTextField, hasLocalizedManyNumberField: groupHasLocalizedManyNumberField, hasLocalizedRelationshipField: groupHasLocalizedRelationshipField, hasManyTextField: groupHasManyTextField, hasManyNumberField: groupHasManyNumberField } = traverseFields({
375
+ const { hasLocalizedField: groupHasLocalizedField, hasLocalizedManyNumberField: groupHasLocalizedManyNumberField, hasLocalizedManyTextField: groupHasLocalizedManyTextField, hasLocalizedRelationshipField: groupHasLocalizedRelationshipField, hasManyNumberField: groupHasManyNumberField, hasManyTextField: groupHasManyTextField } = traverseFields({
375
376
  adapter,
376
- buildTexts,
377
377
  buildNumbers,
378
378
  buildRelationships,
379
+ buildTexts,
379
380
  columnPrefix: `${columnName}_`,
380
381
  columns,
381
382
  disableNotNull: disableNotNullFromHere,
@@ -405,11 +406,11 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
405
406
  case 'tabs':
406
407
  {
407
408
  const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
408
- const { hasLocalizedField: tabHasLocalizedField, hasLocalizedManyTextField: tabHasLocalizedManyTextField, hasLocalizedManyNumberField: tabHasLocalizedManyNumberField, hasLocalizedRelationshipField: tabHasLocalizedRelationshipField, hasManyTextField: tabHasManyTextField, hasManyNumberField: tabHasManyNumberField } = traverseFields({
409
+ const { hasLocalizedField: tabHasLocalizedField, hasLocalizedManyNumberField: tabHasLocalizedManyNumberField, hasLocalizedManyTextField: tabHasLocalizedManyTextField, hasLocalizedRelationshipField: tabHasLocalizedRelationshipField, hasManyNumberField: tabHasManyNumberField, hasManyTextField: tabHasManyTextField } = traverseFields({
409
410
  adapter,
410
- buildTexts,
411
411
  buildNumbers,
412
412
  buildRelationships,
413
+ buildTexts,
413
414
  columnPrefix,
414
415
  columns,
415
416
  disableNotNull: disableNotNullFromHere,
@@ -443,11 +444,11 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
443
444
  case 'collapsible':
444
445
  {
445
446
  const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
446
- const { hasLocalizedField: rowHasLocalizedField, hasLocalizedManyTextField: rowHasLocalizedManyTextField, hasLocalizedManyNumberField: rowHasLocalizedManyNumberField, hasLocalizedRelationshipField: rowHasLocalizedRelationshipField, hasManyTextField: rowHasManyTextField, hasManyNumberField: rowHasManyNumberField } = traverseFields({
447
+ const { hasLocalizedField: rowHasLocalizedField, hasLocalizedManyNumberField: rowHasLocalizedManyNumberField, hasLocalizedManyTextField: rowHasLocalizedManyTextField, hasLocalizedRelationshipField: rowHasLocalizedRelationshipField, hasManyNumberField: rowHasManyNumberField, hasManyTextField: rowHasManyTextField } = traverseFields({
447
448
  adapter,
448
- buildTexts,
449
449
  buildNumbers,
450
450
  buildRelationships,
451
+ buildTexts,
451
452
  columnPrefix,
452
453
  columns,
453
454
  disableNotNull: disableNotNullFromHere,
@@ -495,12 +496,12 @@ const traverseFields = ({ adapter, buildTexts, buildNumbers, buildRelationships,
495
496
  });
496
497
  return {
497
498
  hasLocalizedField,
498
- hasLocalizedManyTextField,
499
499
  hasLocalizedManyNumberField,
500
+ hasLocalizedManyTextField,
500
501
  hasLocalizedRelationshipField,
501
- hasManyTextField,
502
- hasManyNumberField
502
+ hasManyNumberField,
503
+ hasManyTextField
503
504
  };
504
505
  };
505
506
 
506
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIFBnTnVtZXJpY0J1aWxkZXIsXG4gIFBnVmFyY2hhckJ1aWxkZXIsXG4gIGJvb2xlYW4sXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBqc29uYixcbiAgbnVtZXJpYyxcbiAgcGdFbnVtLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHZhcmNoYXIsXG59IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlndXJhdGlvbiB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgb3B0aW9uSXNPYmplY3QgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY0NvbHVtbnMsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBoYXNMb2NhbGVzVGFibGUgfSBmcm9tICcuLi91dGlsaXRpZXMvaGFzTG9jYWxlc1RhYmxlJ1xuaW1wb3J0IHsgYnVpbGRUYWJsZSB9IGZyb20gJy4vYnVpbGQnXG5pbXBvcnQgeyBjcmVhdGVJbmRleCB9IGZyb20gJy4vY3JlYXRlSW5kZXgnXG5pbXBvcnQgeyBpZFRvVVVJRCB9IGZyb20gJy4vaWRUb1VVSUQnXG5pbXBvcnQgeyBwYXJlbnRJRENvbHVtbk1hcCB9IGZyb20gJy4vcGFyZW50SURDb2x1bW5NYXAnXG5pbXBvcnQgeyB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCB9IGZyb20gJy4vdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGJ1aWxkVGV4dHM6IGJvb2xlYW5cbiAgYnVpbGROdW1iZXJzOiBib29sZWFuXG4gIGJ1aWxkUmVsYXRpb25zaGlwczogYm9vbGVhblxuICBjb2x1bW5QcmVmaXg/OiBzdHJpbmdcbiAgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBkaXNhYmxlTm90TnVsbDogYm9vbGVhblxuICBkaXNhYmxlVW5pcXVlPzogYm9vbGVhblxuICBmaWVsZFByZWZpeD86IHN0cmluZ1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgZm9yY2VMb2NhbGl6ZWQ/OiBib29sZWFuXG4gIGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPlxuICBsb2NhbGVzQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBsb2NhbGVzSW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+XG4gIG5ld1RhYmxlTmFtZTogc3RyaW5nXG4gIHBhcmVudFRhYmxlTmFtZTogc3RyaW5nXG4gIHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcmVsYXRpb25zaGlwczogU2V0PHN0cmluZz5cbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ/OiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJvb3RUYWJsZUlEQ29sVHlwZTogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU6IHN0cmluZ1xufVxuXG50eXBlIFJlc3VsdCA9IHtcbiAgaGFzTG9jYWxpemVkRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogYm9vbGVhblxuICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGJvb2xlYW5cbiAgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW5cbiAgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBidWlsZFRleHRzLFxuICBidWlsZE51bWJlcnMsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgY29sdW1uUHJlZml4LFxuICBjb2x1bW5zLFxuICBkaXNhYmxlTm90TnVsbCxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbn06IEFyZ3MpOiBSZXN1bHQgPT4ge1xuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IGZhbHNlXG5cbiAgbGV0IHBhcmVudElEQ29sVHlwZSA9ICdpbnRlZ2VyJ1xuICBpZiAoY29sdW1ucy5pZCBpbnN0YW5jZW9mIFBnTnVtZXJpY0J1aWxkZXIpIHBhcmVudElEQ29sVHlwZSA9ICdudW1lcmljJ1xuICBpZiAoY29sdW1ucy5pZCBpbnN0YW5jZW9mIFBnVmFyY2hhckJ1aWxkZXIpIHBhcmVudElEQ29sVHlwZSA9ICd2YXJjaGFyJ1xuXG4gIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgIGlmICgnbmFtZScgaW4gZmllbGQgJiYgZmllbGQubmFtZSA9PT0gJ2lkJykgcmV0dXJuXG4gICAgbGV0IGNvbHVtbk5hbWU6IHN0cmluZ1xuICAgIGxldCBmaWVsZE5hbWU6IHN0cmluZ1xuXG4gICAgbGV0IHRhcmdldFRhYmxlID0gY29sdW1uc1xuICAgIGxldCB0YXJnZXRJbmRleGVzID0gaW5kZXhlc1xuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb2x1bW5OYW1lID0gYCR7Y29sdW1uUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZVswXSA9PT0gJ18nID8gJ18nIDogJyd9JHt0b1NuYWtlQ2FzZShcbiAgICAgICAgZmllbGQubmFtZSxcbiAgICAgICl9YFxuICAgICAgZmllbGROYW1lID0gYCR7ZmllbGRQcmVmaXg/LnJlcGxhY2UoJy4nLCAnXycpIHx8ICcnfSR7ZmllbGQubmFtZX1gXG5cbiAgICAgIC8vIElmIGZpZWxkIGlzIGxvY2FsaXplZCxcbiAgICAgIC8vIGFkZCB0aGUgY29sdW1uIHRvIHRoZSBsb2NhbGUgdGFibGUgaW5zdGVhZCBvZiBtYWluIHRhYmxlXG4gICAgICBpZiAoYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24gJiYgKGZpZWxkLmxvY2FsaXplZCB8fCBmb3JjZUxvY2FsaXplZCkpIHtcbiAgICAgICAgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIHRhcmdldFRhYmxlID0gbG9jYWxlc0NvbHVtbnNcbiAgICAgICAgdGFyZ2V0SW5kZXhlcyA9IGxvY2FsZXNJbmRleGVzXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgKGZpZWxkLnVuaXF1ZSB8fCBmaWVsZC5pbmRleCkgJiZcbiAgICAgICAgIVsnYXJyYXknLCAnYmxvY2tzJywgJ2dyb3VwJywgJ3BvaW50JywgJ3JlbGF0aW9uc2hpcCcsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSAmJlxuICAgICAgICAhKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIGZpZWxkLmhhc01hbnkgPT09IHRydWUpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdW5pcXVlID0gZGlzYWJsZVVuaXF1ZSAhPT0gdHJ1ZSAmJiBmaWVsZC51bmlxdWVcbiAgICAgICAgaWYgKHVuaXF1ZSkge1xuICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnRWYWx1ZSA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1gXG4gICAgICAgICAgaWYgKCFhZGFwdGVyLmZpZWxkQ29uc3RyYWludHM/Lltyb290VGFibGVOYW1lXSkge1xuICAgICAgICAgICAgYWRhcHRlci5maWVsZENvbnN0cmFpbnRzW3Jvb3RUYWJsZU5hbWVdID0ge31cbiAgICAgICAgICB9XG4gICAgICAgICAgYWRhcHRlci5maWVsZENvbnN0cmFpbnRzW3Jvb3RUYWJsZU5hbWVdW2Ake2NvbHVtbk5hbWV9X2lkeGBdID0gY29uc3RyYWludFZhbHVlXG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0SW5kZXhlc1tgJHtmaWVsZC5uYW1lfUlkeGBdID0gY3JlYXRlSW5kZXgoe1xuICAgICAgICAgIG5hbWU6IGZpZWxkTmFtZSxcbiAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgIHVuaXF1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RleHQnOiB7XG4gICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQuaW5kZXgpIHtcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSAnaW5kZXgnXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzTWFueVRleHRGaWVsZCkge1xuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQudW5pcXVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICdVbmlxdWUgaXMgbm90IHN1cHBvcnRlZCBpbiBQb3N0Z3JlcyBmb3IgaGFzTWFueSB0ZXh0IGZpZWxkcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdmFyY2hhcihjb2x1bW5OYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdlbWFpbCc6XG4gICAgICBjYXNlICdjb2RlJzpcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdmFyY2hhcihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdudW1iZXInOiB7XG4gICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5pbmRleCkge1xuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gJ2luZGV4J1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC51bmlxdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlndXJhdGlvbihcbiAgICAgICAgICAgICAgJ1VuaXF1ZSBpcyBub3Qgc3VwcG9ydGVkIGluIFBvc3RncmVzIGZvciBoYXNNYW55IG51bWJlciBmaWVsZHMuJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IG51bWVyaWMoY29sdW1uTmFtZSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyaWNoVGV4dCc6XG4gICAgICBjYXNlICdqc29uJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0ganNvbmIoY29sdW1uTmFtZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZGF0ZSc6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IHRpbWVzdGFtcChjb2x1bW5OYW1lLCB7XG4gICAgICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgICAgIHdpdGhUaW1lem9uZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncG9pbnQnOiB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgIGNhc2UgJ3NlbGVjdCc6IHtcbiAgICAgICAgY29uc3QgZW51bU5hbWUgPSBgZW51bV8ke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG5cbiAgICAgICAgYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0gPSBwZ0VudW0oXG4gICAgICAgICAgZW51bU5hbWUsXG4gICAgICAgICAgZmllbGQub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbklzT2JqZWN0KG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uXG4gICAgICAgICAgfSkgYXMgW3N0cmluZywgLi4uc3RyaW5nW11dLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdzZWxlY3QnICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBjb25zdCBzZWxlY3RUYWJsZU5hbWUgPSBgJHtuZXdUYWJsZU5hbWV9XyR7dG9TbmFrZUNhc2UoZmllbGQubmFtZSl9YFxuICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgICAgIHZhbHVlOiBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSgndmFsdWUnKSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICA+ID0ge1xuICAgICAgICAgICAgb3JkZXJJZHg6IChjb2xzKSA9PiBpbmRleCgnb3JkZXJfaWR4Jykub24oY29scy5vcmRlciksXG4gICAgICAgICAgICBwYXJlbnRJZHg6IChjb2xzKSA9PiBpbmRleCgncGFyZW50X2lkeCcpLm9uKGNvbHMucGFyZW50KSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICBiYXNlQ29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpLm5vdE51bGwoKVxuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLmxvY2FsZUlkeCA9IChjb2xzKSA9PiBpbmRleCgnbG9jYWxlX2lkeCcpLm9uKGNvbHMubG9jYWxlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5pbmRleCkge1xuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLnZhbHVlID0gKGNvbHMpID0+IGluZGV4KCd2YWx1ZV9pZHgnKS5vbihjb2xzLnZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1aWxkVGFibGUoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgICAgZGlzYWJsZU5vdE51bGwsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogc2VsZWN0VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIHNlbGVjdFRhYmxlTmFtZSlcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV0sICh7IG9uZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXS5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uXyR7c2VsZWN0VGFibGVOYW1lfWBdID0gc2VsZWN0VGFibGVSZWxhdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oZmllbGROYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYm9vbGVhbihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlTmFtZSA9IGAke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgIF9wYXJlbnRJRDogcGFyZW50SURDb2x1bW5NYXBbcGFyZW50SURDb2xUeXBlXSgnX3BhcmVudF9pZCcpXG4gICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgIC5ub3ROdWxsKCksXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlclxuICAgICAgICA+ID0ge1xuICAgICAgICAgIF9vcmRlcklkeDogKGNvbHMpID0+IGluZGV4KCdfb3JkZXJfaWR4Jykub24oY29scy5fb3JkZXIpLFxuICAgICAgICAgIF9wYXJlbnRJRElkeDogKGNvbHMpID0+IGluZGV4KCdfcGFyZW50X2lkX2lkeCcpLm9uKGNvbHMuX3BhcmVudElEKSxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBiYXNlQ29sdW1ucy5fbG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdfbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9sb2NhbGVJZHggPSAoY29scykgPT4gaW5kZXgoJ19sb2NhbGVfaWR4Jykub24oY29scy5fbG9jYWxlKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQ6IHN1Ykhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBzdWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZDogc3ViUmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgfSA9IGJ1aWxkVGFibGUoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRzOiBkaXNhYmxlVW5pcXVlID8gaWRUb1VVSUQoZmllbGQuZmllbGRzKSA6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290UmVsYXRpb25zaGlwczogcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWU6IGFycmF5VGFibGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChzdWJIYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgaWYgKCFoYXNNYW55VGV4dEZpZWxkIHx8IHN1Ykhhc01hbnlUZXh0RmllbGQgPT09ICdpbmRleCcpXG4gICAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkID0gc3ViSGFzTWFueVRleHRGaWVsZFxuICAgICAgICB9XG4gICAgICAgIGlmIChzdWJIYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICBpZiAoIWhhc01hbnlOdW1iZXJGaWVsZCB8fCBzdWJIYXNNYW55TnVtYmVyRmllbGQgPT09ICdpbmRleCcpXG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSBzdWJIYXNNYW55TnVtYmVyRmllbGRcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbGF0aW9uc1RvQnVpbGQuc2V0KGZpZWxkTmFtZSwgYXJyYXlUYWJsZU5hbWUpXG5cbiAgICAgICAgY29uc3QgYXJyYXlUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyhhZGFwdGVyLnRhYmxlc1thcnJheVRhYmxlTmFtZV0sICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbYXJyYXlUYWJsZU5hbWVdLl9wYXJlbnRJRF0sXG4gICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChoYXNMb2NhbGVzVGFibGUoZmllbGQuZmllbGRzKSkge1xuICAgICAgICAgICAgcmVzdWx0Ll9sb2NhbGVzID0gbWFueShhZGFwdGVyLnRhYmxlc1tgJHthcnJheVRhYmxlTmFtZX1fbG9jYWxlc2BdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHN1YlJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH0pXG5cbiAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2FycmF5VGFibGVOYW1lfWBdID0gYXJyYXlUYWJsZVJlbGF0aW9uc1xuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBmaWVsZC5ibG9ja3MuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICBjb25zdCBibG9ja1RhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSkge1xuICAgICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3Jvb3RUYWJsZUlEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGF0aDogdGV4dCgnX3BhdGgnKS5ub3ROdWxsKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJhc2VFeHRyYUNvbmZpZzogUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICAgID4gPSB7XG4gICAgICAgICAgICAgIF9vcmRlcklkeDogKGNvbHMpID0+IGluZGV4KCdvcmRlcl9pZHgnKS5vbihjb2xzLl9vcmRlciksXG4gICAgICAgICAgICAgIF9wYXJlbnRJRElkeDogKGNvbHMpID0+IGluZGV4KCdwYXJlbnRfaWRfaWR4Jykub24oY29scy5fcGFyZW50SUQpLFxuICAgICAgICAgICAgICBfcGF0aElkeDogKGNvbHMpID0+IGluZGV4KCdwYXRoX2lkeCcpLm9uKGNvbHMuX3BhdGgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9sb2NhbGVJZHggPSAoY29scykgPT4gaW5kZXgoJ2xvY2FsZV9pZHgnKS5vbihjb2xzLl9sb2NhbGUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogc3ViSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBzdWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQ6IHN1YlJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICB9ID0gYnVpbGRUYWJsZSh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgICBmaWVsZHM6IGRpc2FibGVVbmlxdWUgPyBpZFRvVVVJRChibG9jay5maWVsZHMpIDogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICAgICAgcm9vdFJlbGF0aW9uc2hpcHM6IHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdGFibGVOYW1lOiBibG9ja1RhYmxlTmFtZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgICAgIGlmICghaGFzTWFueVRleHRGaWVsZCB8fCBzdWJIYXNNYW55VGV4dEZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSBzdWJIYXNNYW55VGV4dEZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgICAgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQgfHwgc3ViSGFzTWFueU51bWJlckZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHN1Ykhhc01hbnlOdW1iZXJGaWVsZFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBibG9ja1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShibG9jay5maWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2Jsb2NrVGFibGVOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2Jsb2NrVGFibGVOYW1lfWBdID0gYmxvY2tUYWJsZVJlbGF0aW9uc1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwoe1xuICAgICAgICAgICAgICBibG9jayxcbiAgICAgICAgICAgICAgbG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLnNldChgX2Jsb2Nrc18ke2Jsb2NrLnNsdWd9YCwgYmxvY2tUYWJsZU5hbWUpXG4gICAgICAgIH0pXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAndGFiJzpcbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAoISgnbmFtZScgaW4gZmllbGQpKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBncm91cEhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICBkaXNhYmxlTm90TnVsbCxcbiAgICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc01hbnlUZXh0RmllbGQpIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogZ3JvdXBIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZFRleHRzLFxuICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5OYW1lfV9gLFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeDogYCR7ZmllbGROYW1lfS5gLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWU6IGAke3BhcmVudFRhYmxlTmFtZX1fJHtjb2x1bW5OYW1lfWAsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTWFueU51bWJlckZpZWxkKSBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICBjb25zdCBkaXNhYmxlTm90TnVsbEZyb21IZXJlID0gQm9vbGVhbihmaWVsZC5hZG1pbj8uY29uZGl0aW9uKSB8fCBkaXNhYmxlTm90TnVsbFxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogdGFiSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogdGFiSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogdGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogdGFiSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHRhYkhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyb3cnOlxuICAgICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUgPSBCb29sZWFuKGZpZWxkLmFkbWluPy5jb25kaXRpb24pIHx8IGRpc2FibGVOb3ROdWxsXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogcm93SGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogcm93SGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogcm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogcm93SGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHJvd0hhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgbmV3VGFibGVOYW1lOiBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICBmaWVsZC5yZWxhdGlvblRvLmZvckVhY2goKHJlbGF0aW9uKSA9PiByZWxhdGlvbnNoaXBzLmFkZChyZWxhdGlvbikpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVsYXRpb25zaGlwcy5hZGQoZmllbGQucmVsYXRpb25UbylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmRpdGlvbiA9IGZpZWxkLmFkbWluICYmIGZpZWxkLmFkbWluLmNvbmRpdGlvblxuXG4gICAgaWYgKFxuICAgICAgIWRpc2FibGVOb3ROdWxsICYmXG4gICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdICYmXG4gICAgICAncmVxdWlyZWQnIGluIGZpZWxkICYmXG4gICAgICBmaWVsZC5yZXF1aXJlZCAmJlxuICAgICAgIWNvbmRpdGlvblxuICAgICkge1xuICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXS5ub3ROdWxsKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICBoYXNNYW55VGV4dEZpZWxkLFxuICAgIGhhc01hbnlOdW1iZXJGaWVsZCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImJ1aWxkVGV4dHMiLCJidWlsZE51bWJlcnMiLCJidWlsZFJlbGF0aW9uc2hpcHMiLCJjb2x1bW5QcmVmaXgiLCJjb2x1bW5zIiwiZGlzYWJsZU5vdE51bGwiLCJkaXNhYmxlVW5pcXVlIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJmb3JjZUxvY2FsaXplZCIsImluZGV4ZXMiLCJsb2NhbGVzQ29sdW1ucyIsImxvY2FsZXNJbmRleGVzIiwibmV3VGFibGVOYW1lIiwicGFyZW50VGFibGVOYW1lIiwicmVsYXRpb25zVG9CdWlsZCIsInJlbGF0aW9uc2hpcHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RUYWJsZUlEQ29sVHlwZSIsInJvb3RUYWJsZU5hbWUiLCJoYXNMb2NhbGl6ZWRGaWVsZCIsImhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiaGFzTWFueVRleHRGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJoYXNNYW55TnVtYmVyRmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJwYXJlbnRJRENvbFR5cGUiLCJpZCIsIlBnTnVtZXJpY0J1aWxkZXIiLCJQZ1ZhcmNoYXJCdWlsZGVyIiwiZm9yRWFjaCIsImZpZWxkIiwibmFtZSIsImNvbHVtbk5hbWUiLCJmaWVsZE5hbWUiLCJ0YXJnZXRUYWJsZSIsInRhcmdldEluZGV4ZXMiLCJmaWVsZEFmZmVjdHNEYXRhIiwidG9TbmFrZUNhc2UiLCJyZXBsYWNlIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsImxvY2FsaXplZCIsInVuaXF1ZSIsImluZGV4IiwiaW5jbHVkZXMiLCJ0eXBlIiwiaGFzTWFueSIsImNvbnN0cmFpbnRWYWx1ZSIsImZpZWxkQ29uc3RyYWludHMiLCJjcmVhdGVJbmRleCIsIkludmFsaWRDb25maWd1cmF0aW9uIiwidmFyY2hhciIsIm51bWVyaWMiLCJqc29uYiIsInRpbWVzdGFtcCIsIm1vZGUiLCJwcmVjaXNpb24iLCJ3aXRoVGltZXpvbmUiLCJlbnVtTmFtZSIsImVudW1zIiwicGdFbnVtIiwib3B0aW9ucyIsIm1hcCIsIm9wdGlvbiIsIm9wdGlvbklzT2JqZWN0IiwidmFsdWUiLCJzZWxlY3RUYWJsZU5hbWUiLCJiYXNlQ29sdW1ucyIsIm9yZGVyIiwiaW50ZWdlciIsIm5vdE51bGwiLCJwYXJlbnQiLCJwYXJlbnRJRENvbHVtbk1hcCIsInJlZmVyZW5jZXMiLCJ0YWJsZXMiLCJvbkRlbGV0ZSIsImJhc2VFeHRyYUNvbmZpZyIsIm9yZGVySWR4IiwiY29scyIsIm9uIiwicGFyZW50SWR4IiwibG9jYWxlIiwiZW51bV9fbG9jYWxlcyIsImxvY2FsZUlkeCIsImJ1aWxkVGFibGUiLCJ0YWJsZU5hbWUiLCJzZXQiLCJzZWxlY3RUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9ucyIsIm9uZSIsInJlc3VsdCIsImJvb2xlYW4iLCJkaXNhYmxlTm90TnVsbEZyb21IZXJlIiwiQm9vbGVhbiIsImFkbWluIiwiY29uZGl0aW9uIiwiYXJyYXlUYWJsZU5hbWUiLCJfb3JkZXIiLCJfcGFyZW50SUQiLCJfb3JkZXJJZHgiLCJfcGFyZW50SURJZHgiLCJfbG9jYWxlIiwiX2xvY2FsZUlkeCIsInN1Ykhhc01hbnlUZXh0RmllbGQiLCJzdWJIYXNNYW55TnVtYmVyRmllbGQiLCJzdWJSZWxhdGlvbnNUb0J1aWxkIiwiaWRUb1VVSUQiLCJyb290UmVsYXRpb25zaGlwcyIsImFycmF5VGFibGVSZWxhdGlvbnMiLCJtYW55IiwiaGFzTG9jYWxlc1RhYmxlIiwiX2xvY2FsZXMiLCJ2YWwiLCJrZXkiLCJibG9ja3MiLCJibG9jayIsImJsb2NrVGFibGVOYW1lIiwic2x1ZyIsIl9wYXRoIiwidGV4dCIsIl9wYXRoSWR4IiwiYmxvY2tUYWJsZVJlbGF0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIiwidGFibGUiLCJncm91cEhhc0xvY2FsaXplZEZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiZ3JvdXBIYXNNYW55VGV4dEZpZWxkIiwiZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRGaWVsZCIsInRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsInRhYkhhc01hbnlUZXh0RmllbGQiLCJ0YWJIYXNNYW55TnVtYmVyRmllbGQiLCJ0YWJzIiwidGFiIiwicm93SGFzTG9jYWxpemVkRmllbGQiLCJyb3dIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwicm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwicm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJyb3dIYXNNYW55VGV4dEZpZWxkIiwicm93SGFzTWFueU51bWJlckZpZWxkIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsInJlbGF0aW9uIiwiYWRkIiwicmVxdWlyZWQiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFpRXZCQTs7O2VBQUFBOzs7NEJBNURhO3dCQWFuQjt3QkFDOEI7dUJBQ1k7b0VBQ3pCO2lDQUlRO3VCQUNMOzZCQUNDOzBCQUNIO21DQUNTO2tEQUNlOzs7Ozs7QUFtQzFDLE1BQU1BLGlCQUFpQixDQUFDLEVBQzdCQyxPQUFPLEVBQ1BDLFVBQVUsRUFDVkMsWUFBWSxFQUNaQyxrQkFBa0IsRUFDbEJDLFlBQVksRUFDWkMsT0FBTyxFQUNQQyxjQUFjLEVBQ2RDLGdCQUFnQixLQUFLLEVBQ3JCQyxXQUFXLEVBQ1hDLE1BQU0sRUFDTkMsY0FBYyxFQUNkQyxPQUFPLEVBQ1BDLGNBQWMsRUFDZEMsY0FBYyxFQUNkQyxZQUFZLEVBQ1pDLGVBQWUsRUFDZkMsZ0JBQWdCLEVBQ2hCQyxhQUFhLEVBQ2JDLG9CQUFvQixFQUNwQkMsa0JBQWtCLEVBQ2xCQyxhQUFhLEVBQ1I7SUFDTCxJQUFJQyxvQkFBb0I7SUFDeEIsSUFBSUMsZ0NBQWdDO0lBQ3BDLElBQUlDLG1CQUFzQztJQUMxQyxJQUFJQyw0QkFBNEI7SUFDaEMsSUFBSUMscUJBQXdDO0lBQzVDLElBQUlDLDhCQUE4QjtJQUVsQyxJQUFJQyxrQkFBa0I7SUFDdEIsSUFBSXRCLFFBQVF1QixFQUFFLFlBQVlDLHdCQUFnQixFQUFFRixrQkFBa0I7SUFDOUQsSUFBSXRCLFFBQVF1QixFQUFFLFlBQVlFLHdCQUFnQixFQUFFSCxrQkFBa0I7SUFFOURsQixPQUFPc0IsT0FBTyxDQUFDLENBQUNDO1FBQ2QsSUFBSSxVQUFVQSxTQUFTQSxNQUFNQyxJQUFJLEtBQUssTUFBTTtRQUM1QyxJQUFJQztRQUNKLElBQUlDO1FBRUosSUFBSUMsY0FBYy9CO1FBQ2xCLElBQUlnQyxnQkFBZ0IxQjtRQUVwQixJQUFJ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
507
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIFBnTnVtZXJpY0J1aWxkZXIsXG4gIFBnVmFyY2hhckJ1aWxkZXIsXG4gIGJvb2xlYW4sXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBqc29uYixcbiAgbnVtZXJpYyxcbiAgcGdFbnVtLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHZhcmNoYXIsXG59IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlndXJhdGlvbiB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgb3B0aW9uSXNPYmplY3QgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY0NvbHVtbnMsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBoYXNMb2NhbGVzVGFibGUgfSBmcm9tICcuLi91dGlsaXRpZXMvaGFzTG9jYWxlc1RhYmxlJ1xuaW1wb3J0IHsgYnVpbGRUYWJsZSB9IGZyb20gJy4vYnVpbGQnXG5pbXBvcnQgeyBjcmVhdGVJbmRleCB9IGZyb20gJy4vY3JlYXRlSW5kZXgnXG5pbXBvcnQgeyBpZFRvVVVJRCB9IGZyb20gJy4vaWRUb1VVSUQnXG5pbXBvcnQgeyBwYXJlbnRJRENvbHVtbk1hcCB9IGZyb20gJy4vcGFyZW50SURDb2x1bW5NYXAnXG5pbXBvcnQgeyB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCB9IGZyb20gJy4vdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGJ1aWxkTnVtYmVyczogYm9vbGVhblxuICBidWlsZFJlbGF0aW9uc2hpcHM6IGJvb2xlYW5cbiAgYnVpbGRUZXh0czogYm9vbGVhblxuICBjb2x1bW5QcmVmaXg/OiBzdHJpbmdcbiAgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBkaXNhYmxlTm90TnVsbDogYm9vbGVhblxuICBkaXNhYmxlVW5pcXVlPzogYm9vbGVhblxuICBmaWVsZFByZWZpeD86IHN0cmluZ1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgZm9yY2VMb2NhbGl6ZWQ/OiBib29sZWFuXG4gIGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPlxuICBsb2NhbGVzQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBsb2NhbGVzSW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+XG4gIG5ld1RhYmxlTmFtZTogc3RyaW5nXG4gIHBhcmVudFRhYmxlTmFtZTogc3RyaW5nXG4gIHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcmVsYXRpb25zaGlwczogU2V0PHN0cmluZz5cbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ/OiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJvb3RUYWJsZUlEQ29sVHlwZTogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU6IHN0cmluZ1xufVxuXG50eXBlIFJlc3VsdCA9IHtcbiAgaGFzTG9jYWxpemVkRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBib29sZWFuXG4gIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGJvb2xlYW5cbiAgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxuICBoYXNNYW55VGV4dEZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBidWlsZE51bWJlcnMsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgYnVpbGRUZXh0cyxcbiAgY29sdW1uUHJlZml4LFxuICBjb2x1bW5zLFxuICBkaXNhYmxlTm90TnVsbCxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbn06IEFyZ3MpOiBSZXN1bHQgPT4ge1xuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IGZhbHNlXG5cbiAgbGV0IHBhcmVudElEQ29sVHlwZSA9ICdpbnRlZ2VyJ1xuICBpZiAoY29sdW1ucy5pZCBpbnN0YW5jZW9mIFBnTnVtZXJpY0J1aWxkZXIpIHBhcmVudElEQ29sVHlwZSA9ICdudW1lcmljJ1xuICBpZiAoY29sdW1ucy5pZCBpbnN0YW5jZW9mIFBnVmFyY2hhckJ1aWxkZXIpIHBhcmVudElEQ29sVHlwZSA9ICd2YXJjaGFyJ1xuXG4gIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgIGlmICgnbmFtZScgaW4gZmllbGQgJiYgZmllbGQubmFtZSA9PT0gJ2lkJykgcmV0dXJuXG4gICAgbGV0IGNvbHVtbk5hbWU6IHN0cmluZ1xuICAgIGxldCBmaWVsZE5hbWU6IHN0cmluZ1xuXG4gICAgbGV0IHRhcmdldFRhYmxlID0gY29sdW1uc1xuICAgIGxldCB0YXJnZXRJbmRleGVzID0gaW5kZXhlc1xuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb2x1bW5OYW1lID0gYCR7Y29sdW1uUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZVswXSA9PT0gJ18nID8gJ18nIDogJyd9JHt0b1NuYWtlQ2FzZShcbiAgICAgICAgZmllbGQubmFtZSxcbiAgICAgICl9YFxuICAgICAgZmllbGROYW1lID0gYCR7ZmllbGRQcmVmaXg/LnJlcGxhY2UoJy4nLCAnXycpIHx8ICcnfSR7ZmllbGQubmFtZX1gXG5cbiAgICAgIC8vIElmIGZpZWxkIGlzIGxvY2FsaXplZCxcbiAgICAgIC8vIGFkZCB0aGUgY29sdW1uIHRvIHRoZSBsb2NhbGUgdGFibGUgaW5zdGVhZCBvZiBtYWluIHRhYmxlXG4gICAgICBpZiAoYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24gJiYgKGZpZWxkLmxvY2FsaXplZCB8fCBmb3JjZUxvY2FsaXplZCkpIHtcbiAgICAgICAgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIHRhcmdldFRhYmxlID0gbG9jYWxlc0NvbHVtbnNcbiAgICAgICAgdGFyZ2V0SW5kZXhlcyA9IGxvY2FsZXNJbmRleGVzXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgKGZpZWxkLnVuaXF1ZSB8fCBmaWVsZC5pbmRleCkgJiZcbiAgICAgICAgIVsnYXJyYXknLCAnYmxvY2tzJywgJ2dyb3VwJywgJ3BvaW50JywgJ3JlbGF0aW9uc2hpcCcsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSAmJlxuICAgICAgICAhKCdoYXNNYW55JyBpbiBmaWVsZCAmJiBmaWVsZC5oYXNNYW55ID09PSB0cnVlKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHVuaXF1ZSA9IGRpc2FibGVVbmlxdWUgIT09IHRydWUgJiYgZmllbGQudW5pcXVlXG4gICAgICAgIGlmICh1bmlxdWUpIHtcbiAgICAgICAgICBjb25zdCBjb25zdHJhaW50VmFsdWUgPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuICAgICAgICAgIGlmICghYWRhcHRlci5maWVsZENvbnN0cmFpbnRzPy5bcm9vdFRhYmxlTmFtZV0pIHtcbiAgICAgICAgICAgIGFkYXB0ZXIuZmllbGRDb25zdHJhaW50c1tyb290VGFibGVOYW1lXSA9IHt9XG4gICAgICAgICAgfVxuICAgICAgICAgIGFkYXB0ZXIuZmllbGRDb25zdHJhaW50c1tyb290VGFibGVOYW1lXVtgJHtjb2x1bW5OYW1lfV9pZHhgXSA9IGNvbnN0cmFpbnRWYWx1ZVxuICAgICAgICB9XG4gICAgICAgIHRhcmdldEluZGV4ZXNbYCR7bmV3VGFibGVOYW1lfV8ke2ZpZWxkLm5hbWV9SWR4YF0gPSBjcmVhdGVJbmRleCh7XG4gICAgICAgICAgbmFtZTogZmllbGROYW1lLFxuICAgICAgICAgIGNvbHVtbk5hbWUsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdW5pcXVlLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSAndGV4dCc6IHtcbiAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5pbmRleCkge1xuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9ICdpbmRleCdcbiAgICAgICAgICB9IGVsc2UgaWYgKCFoYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC51bmlxdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlndXJhdGlvbihcbiAgICAgICAgICAgICAgJ1VuaXF1ZSBpcyBub3Qgc3VwcG9ydGVkIGluIFBvc3RncmVzIGZvciBoYXNNYW55IHRleHQgZmllbGRzLicsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSB2YXJjaGFyKGNvbHVtbk5hbWUpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSB2YXJjaGFyKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSAnaW5kZXgnXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnVuaXF1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAnVW5pcXVlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUG9zdGdyZXMgZm9yIGhhc01hbnkgbnVtYmVyIGZpZWxkcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gbnVtZXJpYyhjb2x1bW5OYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JpY2hUZXh0JzpcbiAgICAgIGNhc2UgJ2pzb24nOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBqc29uYihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdGltZXN0YW1wKGNvbHVtbk5hbWUsIHtcbiAgICAgICAgICBtb2RlOiAnc3RyaW5nJyxcbiAgICAgICAgICBwcmVjaXNpb246IDMsXG4gICAgICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICBjb25zdCBlbnVtTmFtZSA9IGBlbnVtXyR7bmV3VGFibGVOYW1lfV8ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfWBcblxuICAgICAgICBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSA9IHBnRW51bShcbiAgICAgICAgICBlbnVtTmFtZSxcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uSXNPYmplY3Qob3B0aW9uKSkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgICAgICB9KSBhcyBbc3RyaW5nLCAuLi5zdHJpbmdbXV0sXG4gICAgICAgIClcblxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlTmFtZSA9IGAke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICBvcmRlcjogaW50ZWdlcignb3JkZXInKS5ub3ROdWxsKCksXG4gICAgICAgICAgICBwYXJlbnQ6IHBhcmVudElEQ29sdW1uTWFwW3BhcmVudElEQ29sVHlwZV0oJ3BhcmVudF9pZCcpXG4gICAgICAgICAgICAgIC5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICAgICAgdmFsdWU6IGFkYXB0ZXIuZW51bXNbZW51bU5hbWVdKCd2YWx1ZScpLFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGJhc2VFeHRyYUNvbmZpZzogUmVjb3JkPFxuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlclxuICAgICAgICAgID4gPSB7XG4gICAgICAgICAgICBvcmRlcklkeDogKGNvbHMpID0+IGluZGV4KGAke3NlbGVjdFRhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5vcmRlciksXG4gICAgICAgICAgICBwYXJlbnRJZHg6IChjb2xzKSA9PiBpbmRleChgJHtzZWxlY3RUYWJsZU5hbWV9X3BhcmVudF9pZHhgKS5vbihjb2xzLnBhcmVudCksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgYmFzZUNvbHVtbnMubG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdsb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5sb2NhbGVJZHggPSAoY29scykgPT5cbiAgICAgICAgICAgICAgaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV9sb2NhbGVfaWR4YCkub24oY29scy5sb2NhbGUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcudmFsdWUgPSAoY29scykgPT4gaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV92YWx1ZV9pZHhgKS5vbihjb2xzLnZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1aWxkVGFibGUoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgICAgZGlzYWJsZU5vdE51bGwsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogc2VsZWN0VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIHNlbGVjdFRhYmxlTmFtZSlcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV0sICh7IG9uZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXS5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uXyR7c2VsZWN0VGFibGVOYW1lfWBdID0gc2VsZWN0VGFibGVSZWxhdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oZmllbGROYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYm9vbGVhbihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlTmFtZSA9IGAke25ld1RhYmxlTmFtZX1fJHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgIF9wYXJlbnRJRDogcGFyZW50SURDb2x1bW5NYXBbcGFyZW50SURDb2xUeXBlXSgnX3BhcmVudF9pZCcpXG4gICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgIC5ub3ROdWxsKCksXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlclxuICAgICAgICA+ID0ge1xuICAgICAgICAgIF9vcmRlcklkeDogKGNvbHMpID0+IGluZGV4KGAke2FycmF5VGFibGVOYW1lfV9vcmRlcl9pZHhgKS5vbihjb2xzLl9vcmRlciksXG4gICAgICAgICAgX3BhcmVudElESWR4OiAoY29scykgPT4gaW5kZXgoYCR7YXJyYXlUYWJsZU5hbWV9X3BhcmVudF9pZF9pZHhgKS5vbihjb2xzLl9wYXJlbnRJRCksXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgYmFzZUNvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fbG9jYWxlSWR4ID0gKGNvbHMpID0+XG4gICAgICAgICAgICBpbmRleChgJHthcnJheVRhYmxlTmFtZX1fbG9jYWxlX2lkeGApLm9uKGNvbHMuX2xvY2FsZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHN1Ykhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBzdWJIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQ6IHN1YlJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkczogZGlzYWJsZVVuaXF1ZSA/IGlkVG9VVUlEKGZpZWxkLmZpZWxkcykgOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc2hpcHM6IHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgdGFibGVOYW1lOiBhcnJheVRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoc3ViSGFzTWFueVRleHRGaWVsZCkge1xuICAgICAgICAgIGlmICghaGFzTWFueVRleHRGaWVsZCB8fCBzdWJIYXNNYW55VGV4dEZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9IHN1Ykhhc01hbnlUZXh0RmllbGRcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3ViSGFzTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgICAgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQgfHwgc3ViSGFzTWFueU51bWJlckZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gc3ViSGFzTWFueU51bWJlckZpZWxkXG4gICAgICAgIH1cblxuICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIGFycmF5VGFibGVOYW1lKVxuXG4gICAgICAgIGNvbnN0IGFycmF5VGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMoYWRhcHRlci50YWJsZXNbYXJyYXlUYWJsZU5hbWVdLCAoeyBtYW55LCBvbmUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVsYXRpb248c3RyaW5nPj4gPSB7XG4gICAgICAgICAgICBfcGFyZW50SUQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2FycmF5VGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaGFzTG9jYWxlc1RhYmxlKGZpZWxkLmZpZWxkcykpIHtcbiAgICAgICAgICAgIHJlc3VsdC5fbG9jYWxlcyA9IG1hbnkoYWRhcHRlci50YWJsZXNbYCR7YXJyYXlUYWJsZU5hbWV9X2xvY2FsZXNgXSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzdWJSZWxhdGlvbnNUb0J1aWxkLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IG1hbnkoYWRhcHRlci50YWJsZXNbdmFsXSlcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9KVxuXG4gICAgICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHthcnJheVRhYmxlTmFtZX1gXSA9IGFycmF5VGFibGVSZWxhdGlvbnNcblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUgPSBCb29sZWFuKGZpZWxkLmFkbWluPy5jb25kaXRpb24pIHx8IGRpc2FibGVOb3ROdWxsXG5cbiAgICAgICAgZmllbGQuYmxvY2tzLmZvckVhY2goKGJsb2NrKSA9PiB7XG4gICAgICAgICAgY29uc3QgYmxvY2tUYWJsZU5hbWUgPSBgJHtyb290VGFibGVOYW1lfV9ibG9ja3NfJHt0b1NuYWtlQ2FzZShibG9jay5zbHVnKX1gXG4gICAgICAgICAgaWYgKCFhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgICBfb3JkZXI6IGludGVnZXIoJ19vcmRlcicpLm5vdE51bGwoKSxcbiAgICAgICAgICAgICAgX3BhcmVudElEOiBwYXJlbnRJRENvbHVtbk1hcFtyb290VGFibGVJRENvbFR5cGVdKCdfcGFyZW50X2lkJylcbiAgICAgICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1tyb290VGFibGVOYW1lXS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgICAgICAgX3BhdGg6IHRleHQoJ19wYXRoJykubm90TnVsbCgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlciB8IFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyXG4gICAgICAgICAgICA+ID0ge1xuICAgICAgICAgICAgICBfb3JkZXJJZHg6IChjb2xzKSA9PiBpbmRleChgJHtibG9ja1RhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5fb3JkZXIpLFxuICAgICAgICAgICAgICBfcGFyZW50SURJZHg6IChjb2xzKSA9PiBpbmRleChgJHtibG9ja1RhYmxlTmFtZX1fcGFyZW50X2lkX2lkeGApLm9uKGNvbHMuX3BhcmVudElEKSxcbiAgICAgICAgICAgICAgX3BhdGhJZHg6IChjb2xzKSA9PiBpbmRleChgJHtibG9ja1RhYmxlTmFtZX1fcGF0aF9pZHhgKS5vbihjb2xzLl9wYXRoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgICBiYXNlQ29sdW1ucy5fbG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdfbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZy5fbG9jYWxlSWR4ID0gKGNvbHMpID0+XG4gICAgICAgICAgICAgICAgaW5kZXgoYCR7YmxvY2tUYWJsZU5hbWV9X2xvY2FsZV9pZHhgKS5vbihjb2xzLl9sb2NhbGUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBzdWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQ6IHN1Ykhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQ6IHN1YlJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICB9ID0gYnVpbGRUYWJsZSh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLFxuICAgICAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgICBmaWVsZHM6IGRpc2FibGVVbmlxdWUgPyBpZFRvVVVJRChibG9jay5maWVsZHMpIDogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICAgICAgcm9vdFJlbGF0aW9uc2hpcHM6IHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdGFibGVOYW1lOiBibG9ja1RhYmxlTmFtZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgICAgIGlmICghaGFzTWFueVRleHRGaWVsZCB8fCBzdWJIYXNNYW55VGV4dEZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSBzdWJIYXNNYW55VGV4dEZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgICAgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQgfHwgc3ViSGFzTWFueU51bWJlckZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHN1Ykhhc01hbnlOdW1iZXJGaWVsZFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBibG9ja1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShibG9jay5maWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2Jsb2NrVGFibGVOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3ViUmVsYXRpb25zVG9CdWlsZC5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYW55KGFkYXB0ZXIudGFibGVzW3ZhbF0pXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2Jsb2NrVGFibGVOYW1lfWBdID0gYmxvY2tUYWJsZVJlbGF0aW9uc1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwoe1xuICAgICAgICAgICAgICBibG9jayxcbiAgICAgICAgICAgICAgbG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLnNldChgX2Jsb2Nrc18ke2Jsb2NrLnNsdWd9YCwgYmxvY2tUYWJsZU5hbWUpXG4gICAgICAgIH0pXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAndGFiJzpcbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAoISgnbmFtZScgaW4gZmllbGQpKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogZ3JvdXBIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICBkaXNhYmxlTm90TnVsbCxcbiAgICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc01hbnlUZXh0RmllbGQpIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBncm91cEhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZE51bWJlcnMsXG4gICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5OYW1lfV9gLFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeDogYCR7ZmllbGROYW1lfS5gLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWU6IGAke3BhcmVudFRhYmxlTmFtZX1fJHtjb2x1bW5OYW1lfWAsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTWFueU51bWJlckZpZWxkKSBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICBjb25zdCBkaXNhYmxlTm90TnVsbEZyb21IZXJlID0gQm9vbGVhbihmaWVsZC5hZG1pbj8uY29uZGl0aW9uKSB8fCBkaXNhYmxlTm90TnVsbFxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogdGFiSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogdGFiSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogdGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiB0YWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogdGFiSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyb3cnOlxuICAgICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUgPSBCb29sZWFuKGZpZWxkLmFkbWluPy5jb25kaXRpb24pIHx8IGRpc2FibGVOb3ROdWxsXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogcm93SGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiByb3dIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogcm93SGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogcm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiByb3dIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogcm93SGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgbmV3VGFibGVOYW1lOiBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICBmaWVsZC5yZWxhdGlvblRvLmZvckVhY2goKHJlbGF0aW9uKSA9PiByZWxhdGlvbnNoaXBzLmFkZChyZWxhdGlvbikpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVsYXRpb25zaGlwcy5hZGQoZmllbGQucmVsYXRpb25UbylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmRpdGlvbiA9IGZpZWxkLmFkbWluICYmIGZpZWxkLmFkbWluLmNvbmRpdGlvblxuXG4gICAgaWYgKFxuICAgICAgIWRpc2FibGVOb3ROdWxsICYmXG4gICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdICYmXG4gICAgICAncmVxdWlyZWQnIGluIGZpZWxkICYmXG4gICAgICBmaWVsZC5yZXF1aXJlZCAmJlxuICAgICAgIWNvbmRpdGlvblxuICAgICkge1xuICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXS5ub3ROdWxsKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICBoYXNNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTWFueVRleHRGaWVsZCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImJ1aWxkTnVtYmVycyIsImJ1aWxkUmVsYXRpb25zaGlwcyIsImJ1aWxkVGV4dHMiLCJjb2x1bW5QcmVmaXgiLCJjb2x1bW5zIiwiZGlzYWJsZU5vdE51bGwiLCJkaXNhYmxlVW5pcXVlIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJmb3JjZUxvY2FsaXplZCIsImluZGV4ZXMiLCJsb2NhbGVzQ29sdW1ucyIsImxvY2FsZXNJbmRleGVzIiwibmV3VGFibGVOYW1lIiwicGFyZW50VGFibGVOYW1lIiwicmVsYXRpb25zVG9CdWlsZCIsInJlbGF0aW9uc2hpcHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RUYWJsZUlEQ29sVHlwZSIsInJvb3RUYWJsZU5hbWUiLCJoYXNMb2NhbGl6ZWRGaWVsZCIsImhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiaGFzTWFueVRleHRGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJoYXNNYW55TnVtYmVyRmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJwYXJlbnRJRENvbFR5cGUiLCJpZCIsIlBnTnVtZXJpY0J1aWxkZXIiLCJQZ1ZhcmNoYXJCdWlsZGVyIiwiZm9yRWFjaCIsImZpZWxkIiwibmFtZSIsImNvbHVtbk5hbWUiLCJmaWVsZE5hbWUiLCJ0YXJnZXRUYWJsZSIsInRhcmdldEluZGV4ZXMiLCJmaWVsZEFmZmVjdHNEYXRhIiwidG9TbmFrZUNhc2UiLCJyZXBsYWNlIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsImxvY2FsaXplZCIsInVuaXF1ZSIsImluZGV4IiwiaW5jbHVkZXMiLCJ0eXBlIiwiaGFzTWFueSIsImNvbnN0cmFpbnRWYWx1ZSIsImZpZWxkQ29uc3RyYWludHMiLCJjcmVhdGVJbmRleCIsInRhYmxlTmFtZSIsIkludmFsaWRDb25maWd1cmF0aW9uIiwidmFyY2hhciIsIm51bWVyaWMiLCJqc29uYiIsInRpbWVzdGFtcCIsIm1vZGUiLCJwcmVjaXNpb24iLCJ3aXRoVGltZXpvbmUiLCJlbnVtTmFtZSIsImVudW1zIiwicGdFbnVtIiwib3B0aW9ucyIsIm1hcCIsIm9wdGlvbiIsIm9wdGlvbklzT2JqZWN0IiwidmFsdWUiLCJzZWxlY3RUYWJsZU5hbWUiLCJiYXNlQ29sdW1ucyIsIm9yZGVyIiwiaW50ZWdlciIsIm5vdE51bGwiLCJwYXJlbnQiLCJwYXJlbnRJRENvbHVtbk1hcCIsInJlZmVyZW5jZXMiLCJ0YWJsZXMiLCJvbkRlbGV0ZSIsImJhc2VFeHRyYUNvbmZpZyIsIm9yZGVySWR4IiwiY29scyIsIm9uIiwicGFyZW50SWR4IiwibG9jYWxlIiwiZW51bV9fbG9jYWxlcyIsImxvY2FsZUlkeCIsImJ1aWxkVGFibGUiLCJzZXQiLCJzZWxlY3RUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9ucyIsIm9uZSIsInJlc3VsdCIsImJvb2xlYW4iLCJkaXNhYmxlTm90TnVsbEZyb21IZXJlIiwiQm9vbGVhbiIsImFkbWluIiwiY29uZGl0aW9uIiwiYXJyYXlUYWJsZU5hbWUiLCJfb3JkZXIiLCJfcGFyZW50SUQiLCJfb3JkZXJJZHgiLCJfcGFyZW50SURJZHgiLCJfbG9jYWxlIiwiX2xvY2FsZUlkeCIsInN1Ykhhc01hbnlOdW1iZXJGaWVsZCIsInN1Ykhhc01hbnlUZXh0RmllbGQiLCJzdWJSZWxhdGlvbnNUb0J1aWxkIiwiaWRUb1VVSUQiLCJyb290UmVsYXRpb25zaGlwcyIsImFycmF5VGFibGVSZWxhdGlvbnMiLCJtYW55IiwiaGFzTG9jYWxlc1RhYmxlIiwiX2xvY2FsZXMiLCJ2YWwiLCJrZXkiLCJibG9ja3MiLCJibG9jayIsImJsb2NrVGFibGVOYW1lIiwic2x1ZyIsIl9wYXRoIiwidGV4dCIsIl9wYXRoSWR4IiwiYmxvY2tUYWJsZVJlbGF0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIiwidGFibGUiLCJncm91cEhhc0xvY2FsaXplZEZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJncm91cEhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQiLCJncm91cEhhc01hbnlUZXh0RmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRGaWVsZCIsInRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsInRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsInRhYkhhc01hbnlOdW1iZXJGaWVsZCIsInRhYkhhc01hbnlUZXh0RmllbGQiLCJ0YWJzIiwidGFiIiwicm93SGFzTG9jYWxpemVkRmllbGQiLCJyb3dIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJyb3dIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwicm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJyb3dIYXNNYW55TnVtYmVyRmllbGQiLCJyb3dIYXNNYW55VGV4dEZpZWxkIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsInJlbGF0aW9uIiwiYWRkIiwicmVxdWlyZWQiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFpRXZCQTs7O2VBQUFBOzs7NEJBNURhO3dCQWFuQjt3QkFDOEI7dUJBQ1k7b0VBQ3pCO2lDQUlRO3VCQUNMOzZCQUNDOzBCQUNIO21DQUNTO2tEQUNlOzs7Ozs7QUFtQzFDLE1BQU1BLGlCQUFpQixDQUFDLEVBQzdCQyxPQUFPLEVBQ1BDLFlBQVksRUFDWkMsa0JBQWtCLEVBQ2xCQyxVQUFVLEVBQ1ZDLFlBQVksRUFDWkMsT0FBTyxFQUNQQyxjQUFjLEVBQ2RDLGdCQUFnQixLQUFLLEVBQ3JCQyxXQUFXLEVBQ1hDLE1BQU0sRUFDTkMsY0FBYyxFQUNkQyxPQUFPLEVBQ1BDLGNBQWMsRUFDZEMsY0FBYyxFQUNkQyxZQUFZLEVBQ1pDLGVBQWUsRUFDZkMsZ0JBQWdCLEVBQ2hCQyxhQUFhLEVBQ2JDLG9CQUFvQixFQUNwQkMsa0JBQWtCLEVBQ2xCQyxhQUFhLEVBQ1I7SUFDTCxJQUFJQyxvQkFBb0I7SUFDeEIsSUFBSUMsZ0NBQWdDO0lBQ3BDLElBQUlDLG1CQUFzQztJQUMxQyxJQUFJQyw0QkFBNEI7SUFDaEMsSUFBSUMscUJBQXdDO0lBQzVDLElBQUlDLDhCQUE4QjtJQUVsQyxJQUFJQyxrQkFBa0I7SUFDdEIsSUFBSXRCLFFBQVF1QixFQUFFLFlBQVlDLHdCQUFnQixFQUFFRixrQkFBa0I7SUFDOUQsSUFBSXRCLFFBQVF1QixFQUFFLFlBQVlFLHdCQUFnQixFQUFFSCxrQkFBa0I7SUFFOURsQixPQUFPc0IsT0FBTyxDQUFDLENBQUNDO1FBQ2QsSUFBSSxVQUFVQSxTQUFTQSxNQUFNQyxJQUFJLEtBQUssTUFBTTtRQUM1QyxJQUFJQztRQUNKLElBQUlDO1FBRUosSUFBSUMsY0FBYy9CO1FBQ2xCLElBQUlnQyxnQkFBZ0IxQjtRQUVwQixJQUFJMkIsSUFBQUEsdUJBQWdCLEVBQUNOLFFBQVE7WUFDM0JFLGFBQWEsQ0FBQyxFQUFFOUIsZ0JBQWdCLEdBQUcsRUFBRTRCLE1BQU1DLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxNQUFNLEdBQUcsRUFBRU0sSUFBQUEsb0JBQVcsRUFDakZQLE1BQU1DLElBQUksRUFDVixDQUFDO1lBQ0hFLFlBQVksQ0FBQyxFQUFFM0IsYUFBYWdDLFFBQVEsS0FBSyxRQUFRLEdBQUcsRUFBRVIsTUFBTUMsSUFBSSxDQUFDLENBQUM7WUFFbEUseUJBQXlCO1lBQ3pCLDJEQUEyRDtZQUMzRCxJQUFJakMsUUFBUXlDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDQyxZQUFZLElBQUtYLENBQUFBLE1BQU1ZLFNBQVMsSUFBSWxDLGNBQWEsR0FBSTtnQkFDOUVXLG9CQUFvQjtnQkFDcEJlLGNBQWN4QjtnQkFDZHlCLGdCQUFnQnhCO1lBQ2xCO1lBRUEsSUFDRSxBQUFDbUIsQ0FBQUEsTUFBTWEsTUFBTSxJQUFJYixNQUFNYyxLQUFLLEFBQUQsS0FDM0IsQ0FBQztnQkFBQztnQkFBUztnQkFBVTtnQkFBUztnQkFBUztnQkFBZ0I7YUFBUyxDQUFDQyxRQUFRLENBQUNmLE1BQU1nQixJQUFJLEtBQ3BGLENBQUUsQ0FBQSxhQUFhaEIsU0FBU0EsTUFBTWlCLE9BQU8sS0FBSyxJQUFHLEdBQzdDO2dCQUNBLE1BQU1KLFNBQVN0QyxrQkFBa0IsUUFBUXlCLE1BQU1hLE1BQU07Z0JBQ3JELElBQUlBLFFBQVE7b0JBQ1YsTUFBTUssa0JBQWtCLENBQUMsRUFBRTFDLGVBQWUsR0FBRyxFQUFFd0IsTUFBTUMsSUFBSSxDQUFDLENBQUM7b0JBQzNELElBQUksQ0FBQ2pDLFFBQVFtRCxnQkFBZ0IsRUFBRSxDQUFDL0IsY0FBYyxFQUFFO3dCQUM5Q3BCLFFBQVFtRCxnQkFBZ0IsQ0FBQy9CLGNBQWMsR0FBRyxDQUFDO29CQUM3QztvQkFDQXBCLFFBQVFtRCxnQkFBZ0IsQ0FBQy9CLGNBQWMsQ0FBQyxDQUFDLEVBQUVjLFdBQVcsSUFBSSxDQUFDLENBQUMsR0FBR2dCO2dCQUNqRTtnQkFDQWIsYUFBYSxDQUFDLENBQUMsRUFBRXZCLGFBQWEsQ0FBQyxFQUFFa0IsTUFBTUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUdtQixJQUFBQSx3QkFBVyxFQUFDO29CQUM5RG5CLE1BQU1FO29CQUNORDtvQkFDQW1CLFdBQVd2QztvQkFDWCtCO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBLE9BQVFiLE1BQU1nQixJQUFJO1lBQ2hCLEtBQUs7Z0JBQVE7b0JBQ1gsSUFBSWhCLE1BQU1pQixPQUFPLEVBQUU7d0JBQ2pCLElBQUlqQixNQUFNWSxTQUFTLEVBQUU7NEJBQ25CcEIsNEJBQTRCO3dCQUM5Qjt3QkFFQSxJQUFJUSxNQUFNYyxLQUFLLEVBQUU7NEJBQ2Z2QixtQkFBbUI7d0JBQ3JCLE9BQU8sSUFBSSxDQUFDQSxrQkFBa0I7NEJBQzVCQSxtQkFBbUI7d0JBQ3JCO3dCQUVBLElBQUlTLE1BQU1hLE1BQU0sRUFBRTs0QkFDaEIsTUFBTSxJQUFJUyw0QkFBb0IsQ0FDNUI7d0JBRUo7b0JBQ0YsT0FBTzt3QkFDTGxCLFdBQVcsQ0FBQ0QsVUFBVSxHQUFHb0IsSUFBQUEsZUFBTyxFQUFDckI7b0JBQ25DO29CQUNBO2dCQUNGO1lBQ0EsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO2dCQUFZO29CQUNmRSxXQUFXLENBQUNELFVBQVUsR0FBR29CLElBQUFBLGVBQU8sRUFBQ3JCO29CQUNqQztnQkFDRjtZQUVBLEtBQUs7Z0JBQVU7b0JBQ2IsSUFBSUYsTUFBTWlCLE9BQU8sRUFBRTt3QkFDakIsSUFBSWpCLE1BQU1ZLFNBQVMsRUFBRTs0QkFDbkJsQiw4QkFBOEI7d0JBQ2hDO3dCQUVBLElBQUlNLE1BQU1jLEtBQUssRUFBRTs0QkFDZnJCLHFCQUFxQjt3QkFDdkIsT0FBTyxJQUFJLENBQUNBLG9CQUFvQjs0QkFDOUJBLHFCQUFxQjt3QkFDdkI7d0JBRUEsSUFBSU8sTUFBTWEsTUFBTSxFQUFFOzRCQUNoQixNQUFNLElBQUlTLDRCQUFvQixDQUM1Qjt3QkFFSjtvQkFDRixPQUFPO3dCQUNMbEIsV0FBVyxDQUFDRCxVQUFVLEdBQUdxQixJQUFBQSxlQUFPLEVBQUN0QjtvQkFDbkM7b0JBQ0E7Z0JBQ0Y7WUFFQSxLQUFLO1lBQ0wsS0FBSztnQkFBUTtvQkFDWEUsV0FBVyxDQUFDRCxVQUFVLEdBQUdzQixJQUFBQSxhQUFLLEVBQUN2QjtvQkFDL0I7Z0JBQ0Y7WUFFQSxLQUFLO2dCQUFRO29CQUNYRSxXQUFXLENBQUNELFVBQVUsR0FBR3VCLElBQUFBLGlCQUFTLEVBQUN4QixZQUFZO3dCQUM3Q3lCLE1BQU07d0JBQ05DLFdBQVc7d0JBQ1hDLGNBQWM7b0JBQ2hCO29CQUNBO2dCQUNGO1lBRUEsS0FBSztnQkFBUztvQkFDWjtnQkFDRjtZQUVBLEtBQUs7WUFDTCxLQUFLO2dCQUFVO29CQUNiLE1BQU1DLFdBQVcsQ0FBQyxLQUFLLEVBQUVoRCxhQUFhLENBQUMsRUFBRXlCLElBQUFBLG9CQUFXLEVBQUNQLE1BQU1DLElBQUksRUFBRSxDQUFDO29CQUVsRWpDLFFBQVErRCxLQUFLLENBQUNELFNBQVMsR0FBR0UsSUFBQUEsY0FBTSxFQUM5QkYsVUFDQTlCLE1BQU1pQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxDQUFDQzt3QkFDakIsSUFBSUMsSUFBQUEscUJBQWMsRUFBQ0QsU0FBUzs0QkFDMUIsT0FBT0EsT0FBT0UsS0FBSzt3QkFDckI7d0JBRUEsT0FBT0Y7b0JBQ1Q7b0JBR0YsSUFBSW5DLE1BQU1nQixJQUFJLEtBQUssWUFBWWhCLE1BQU1pQixPQUFPLEVBQUU7d0JBQzVDLE1BQU1xQixrQkFBa0IsQ0FBQyxFQUFFeEQsYUFBYSxDQUFDLEVBQUV5QixJQUFBQSxvQkFBVyxFQUFDUCxNQUFNQyxJQUFJLEVBQUUsQ0FBQzt3QkFDcEUsTUFBTXNDLGNBQStDOzRCQUNuREMsT0FBT0MsSUFBQUEsZUFBTyxFQUFDLFNBQVNDLE9BQU87NEJBQy9CQyxRQUFRQyxvQ0FBaUIsQ0FBQ2pELGdCQUFnQixDQUFDLGFBQ3hDa0QsVUFBVSxDQUFDLElBQU03RSxRQUFROEUsTUFBTSxDQUFDL0QsZ0JBQWdCLENBQUNhLEVBQUUsRUFBRTtnQ0FBRW1ELFVBQVU7NEJBQVUsR0FDM0VMLE9BQU87NEJBQ1ZMLE9BQU9yRSxRQUFRK0QsS0FBSyxDQUFDRCxTQUFTLENBQUM7d0JBQ2pDO3dCQUVBLE1BQU1rQixrQkFHRjs0QkFDRkMsVUFBVSxDQUFDQyxPQUFTcEMsSUFBQUEsYUFBSyxFQUFDLENBQUMsRUFBRXdCLGdCQUFnQixVQUFVLENBQUMsRUFBRWEsRUFBRSxDQUFDRCxLQUFLVixLQUFLOzRCQUN2RVksV0FBVyxDQUFDRixPQUFTcEMsSUFBQUEsYUFBSyxFQUFDLENBQUMsRUFBRXdCLGdCQUFnQixXQUFXLENBQUMsRUFBRWEsRUFBRSxDQUFDRCxLQUFLUCxNQUFNO3dCQUM1RTt3QkFFQSxJQUFJM0MsTUFBTVksU0FBUyxFQUFFOzRCQUNuQjJCLFlBQVljLE1BQU0sR0FBR3JGLFFBQVErRCxLQUFLLENBQUN1QixhQUFhLENBQUMsVUFBVVosT0FBTzs0QkFDbEVNLGdCQUFnQk8sU0FBUyxHQUFHLENBQUNMLE9BQzNCcEMsSUFBQUEsYUFBSyxFQUFDLENBQUMsRUFBRXdCLGdCQUFnQixXQUFXLENBQUMsRUFBRWEsRUFBRSxDQUFDRCxLQUFLRyxNQUFNO3dCQUN6RDt3QkFFQSxJQUFJckQsTUFBTWMsS0FBSyxFQUFFOzRCQUNma0MsZ0JBQWdCWCxLQUFLLEdBQUcsQ0FBQ2EsT0FBU3BDLElBQUFBLGFBQUssRUFBQyxDQUFDLEVBQUV3QixnQkFBZ0IsVUFBVSxDQUFDLEVBQUVhLEVBQUUsQ0FBQ0QsS0FBS2IsS0FBSzt3QkFDdkY7d0JBRUFtQixJQUFBQSxpQkFBVSxFQUFDOzRCQUNUeEY7NEJBQ0F1RTs0QkFDQVM7NEJBQ0ExRTs0QkFDQUM7NEJBQ0FFLFFBQVEsRUFBRTs0QkFDVjRDLFdBQVdpQjt3QkFDYjt3QkFFQXRELGlCQUFpQnlFLEdBQUcsQ0FBQ3RELFdBQVdtQzt3QkFFaEMsTUFBTW9CLHVCQUF1QkMsSUFBQUEscUJBQVMsRUFBQzNGLFFBQVE4RSxNQUFNLENBQUNSLGdCQUFnQixFQUFFLENBQUMsRUFBRXNCLEdBQUcsRUFBRTs0QkFDOUUsTUFBTUMsU0FBMkM7Z0NBQy9DbEIsUUFBUWlCLElBQUk1RixRQUFROEUsTUFBTSxDQUFDL0QsZ0JBQWdCLEVBQUU7b0NBQzNDTixRQUFRO3dDQUFDVCxRQUFROEUsTUFBTSxDQUFDUixnQkFBZ0IsQ0FBQ0ssTUFBTTtxQ0FBQztvQ0FDaERFLFlBQVk7d0NBQUM3RSxRQUFROEUsTUFBTSxDQUFDL0QsZ0JBQWdCLENBQUNhLEVBQUU7cUNBQUM7Z0NBQ2xEOzRCQUNGOzRCQUVBLE9BQU9pRTt3QkFDVDt3QkFFQTdGLFFBQVEyRixTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUVyQixnQkFBZ0IsQ0FBQyxDQUFDLEdBQUdvQjtvQkFDckQsT0FBTzt3QkFDTHRELFdBQVcsQ0FBQ0QsVUFBVSxHQUFHbkMsUUFBUStELEtBQUssQ0FBQ0QsU0FBUyxDQUFDM0I7b0JBQ25EO29CQUNBO2dCQUNGO1lBRUEsS0FBSztnQkFBWTtvQkFDZkMsV0FBVyxDQUFDRCxVQUFVLEdBQUcyRCxJQUFBQSxlQUFPLEVBQUM1RDtvQkFDakM7Z0JBQ0Y7WUFFQSxLQUFLO2dCQUFTO29CQUNaLE1BQU02RCx5QkFBeUJDLFFBQVFoRSxNQUFNaUUsS0FBSyxFQUFFQyxjQUFjNUY7b0JBRWxFLE1BQU02RixpQkFBaUIsQ0FBQyxFQUFFckYsYUFBYSxDQUFDLEVBQUV5QixJQUFBQSxvQkFBVyxFQUFDUCxNQUFNQyxJQUFJLEVBQUUsQ0FBQztvQkFDbkUsTUFBTXNDLGNBQStDO3dCQUNuRDZCLFFBQVEzQixJQUFBQSxlQUFPLEVBQUMsVUFBVUMsT0FBTzt3QkFDakMyQixXQUFXekIsb0NBQWlCLENBQUNqRCxnQkFBZ0IsQ0FBQyxjQUMzQ2tELFVBQVUsQ0FBQyxJQUFNN0UsUUFBUThFLE1BQU0sQ0FBQy9ELGdCQUFnQixDQUFDYSxFQUFFLEVBQUU7NEJBQUVtRCxVQUFVO3dCQUFVLEdBQzNFTCxPQUFPO29CQUNaO29CQUVBLE1BQU1NLGtCQUdGO3dCQUNGc0IsV0FBVyxDQUFDcEIsT0FBU3BDLElBQUFBLGFBQUssRUFBQyxDQUFDLEVBQUVxRCxlQUFlLFVBQVUsQ0FBQyxFQUFFaEIsRUFBRSxDQUFDRCxLQUFLa0IsTUFBTTt3QkFDeEVHLGNBQWMsQ0FBQ3JCLE9BQVNwQyxJQUFBQSxhQUFLLEVBQUMsQ0FBQyxFQUFFcUQsZUFBZSxjQUFjLENBQUMsRUFBRWhCLEVBQUUsQ0FBQ0QsS0FBS21CLFNBQVM7b0JBQ3BGO29CQUVBLElBQUlyRSxNQUFNWSxTQUFTLElBQUk1QyxRQUFReUMsT0FBTyxDQUFDQyxNQUFNLENBQUNDLFlBQVksRUFBRTt3QkFDMUQ0QixZQUFZaUMsT0FBTyxHQUFHeEcsUUFBUStELEtBQUssQ0FBQ3VCLGFBQWEsQ0FBQyxXQUFXWixPQUFPO3dCQUNwRU0sZ0JBQWdCeUIsVUFBVSxHQUFHLENBQUN2QixPQUM1QnBDLElBQUFBLGFBQUssRUFBQyxDQUFDLEVBQUVxRCxlQUFlLFdBQVcsQ0FBQyxFQUFFaEIsRUFBRSxDQUFDRCxLQUFLc0IsT0FBTztvQkFDekQ7b0JBRUEsTUFBTSxFQUNKL0Usb0JBQW9CaUYscUJBQXFCLEVBQ3pDbkYsa0JBQWtCb0YsbUJBQW1CLEVBQ3JDM0Ysa0JBQWtCNEYsbUJBQW1CLEVBQ3RDLEdBQUdwQixJQUFBQSxpQkFBVSxFQUFDO3dCQUNieEY7d0JBQ0F1RTt3QkFDQVM7d0JBQ0ExRSxnQkFBZ0J5Rjt3QkFDaEJ4Rjt3QkFDQUUsUUFBUUYsZ0JBQWdCc0csSUFBQUEsa0JBQVEsRUFBQzdFLE1BQU12QixNQUFNLElBQUl1QixNQUFNdkIsTUFBTTt3QkFDN0RTO3dCQUNBNEYsbUJBQW1CN0Y7d0JBQ25CRTt3QkFDQUM7d0JBQ0FpQyxXQUFXOEM7b0JBQ2I7b0JBRUEsSUFBSVEscUJBQXFCO3dCQUN2QixJQUFJLENBQUNwRixvQkFBb0JvRix3QkFBd0IsU0FDL0NwRixtQkFBbUJvRjtvQkFDdkI7b0JBQ0EsSUFBSUQsdUJBQXVCO3dCQUN6QixJQUFJLENBQUNqRixzQkFBc0JpRiwwQkFBMEIsU0FDbkRqRixxQkFBcUJpRjtvQkFDekI7b0JBRUExRixpQkFBaUJ5RSxHQUFHLENBQUN0RCxXQUFXZ0U7b0JBRWhDLE1BQU1ZLHNCQUFzQnBCLElBQUFBLHFCQUFTLEVBQUMzRixRQUFROEUsTUFBTSxDQUFDcUIsZUFBZSxFQUFFLENBQUMsRUFBRWEsSUFBSSxFQUFFcEIsR0FBRyxFQUFFO3dCQUNsRixNQUFNQyxTQUEyQzs0QkFDL0NRLFdBQVdULElBQUk1RixRQUFROEUsTUFBTSxDQUFDL0QsZ0JBQWdCLEVBQUU7Z0NBQzlDTixRQUFRO29DQUFDVCxRQUFROEUsTUFBTSxDQUFDcUIsZUFBZSxDQUFDRSxTQUFTO2lDQUFDO2dDQUNsRHhCLFlBQVk7b0NBQUM3RSxRQUFROEUsTUFBTSxDQUFDL0QsZ0JBQWdCLENBQUNhLEVBQUU7aUNBQUM7NEJBQ2xEO3dCQUNGO3dCQUVBLElBQUlxRixJQUFBQSxnQ0FBZSxFQUFDakYsTUFBTXZCLE1BQU0sR0FBRzs0QkFDakNvRixPQUFPcUIsUUFBUSxHQUFHRixLQUFLaEgsUUFBUThFLE1BQU0sQ0FBQyxDQUFDLEVBQUVxQixlQUFlLFFBQVEsQ0FBQyxDQUFDO3dCQUNwRTt3QkFFQVMsb0JBQW9CN0UsT0FBTyxDQUFDLENBQUNvRixLQUFLQzs0QkFDaEN2QixNQUFNLENBQUN1QixJQUFJLEdBQUdKLEtBQUtoSCxRQUFROEUsTUFBTSxDQUFDcUMsSUFBSTt3QkFDeEM7d0JBRUEsT0FBT3RCO29CQUNUO29CQUVBN0YsUUFBUTJGLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRVEsZUFBZSxDQUFDLENBQUMsR0FBR1k7b0JBRW5EO2dCQUNGO1lBRUEsS0FBSztnQkFBVTtvQkFDYixNQUFNaEIseUJBQXlCQyxRQUFRaEUsTUFBTWlFLEtBQUssRUFBRUMsY0FBYzVGO29CQUVsRTBCLE1BQU1xRixNQUFNLENBQUN0RixPQUFPLENBQUMsQ0FBQ3VGO3dCQUNwQixNQUFNQyxpQkFBaUIsQ0FBQyxFQUFFbkcsY0FBYyxRQUFRLEVBQUVtQixJQUFBQSxvQkFBVyxFQUFDK0UsTUFBTUUsSUFBSSxFQUFFLENBQUM7d0JBQzNFLElBQUksQ0FBQ3hILFFBQVE4RSxNQUFNLENBQUN5QyxlQUFlLEVBQUU7NEJBQ25DLE1BQU1oRCxjQUErQztnQ0FDbkQ2QixRQUFRM0IsSUFBQUEsZUFBTyxFQUFDLFVBQVVDLE9BQU87Z0NBQ2pDMkIsV0FBV3pCLG9DQUFpQixDQUFDekQsbUJBQW1CLENBQUMsY0FDOUMwRCxVQUFVLENBQUMsSUFBTTdFLFFBQVE4RSxNQUFNLENBQUMxRCxjQUFjLENBQUNRLEVBQUUsRUFBRTtvQ0FBRW1ELFVBQVU7Z0NBQVUsR0FDekVMLE9BQU87Z0NBQ1YrQyxPQUFPQyxJQUFBQSxZQUFJLEVBQUMsU0FBU2hELE9BQU87NEJBQzlCOzRCQUVBLE1BQU1NLGtCQUdGO2dDQUNGc0IsV0FBVyxDQUFDcEIsT0FBU3BDLElBQUFBLGFBQUssRUFBQyxDQUFDLEVBQUV5RSxlQUFlLFVBQVUsQ0FBQyxFQUFFcEMsRUFBRSxDQUFDRCxLQUFLa0IsTUFBTTtnQ0FDeEVHLGNBQWMsQ0FBQ3JCLE9BQVNwQyxJQUFBQSxhQUFLLEVBQUMsQ0FBQyxFQUFFeUUsZUFBZSxjQUFjLENBQUMsRUFBRXBDLEVBQUUsQ0FBQ0QsS0FBS21CLFNBQVM7Z0NBQ2xGc0IsVUFBVSxDQUFDekMsT0FBU3BDLElBQUFBLGFBQUssRUFBQyxDQUFDLEVBQUV5RSxlQUFlLFNBQVMsQ0FBQyxFQUFFcEMsRUFBRSxDQUFDRCxLQUFLdUMsS0FBSzs0QkFDdkU7NEJBRUEsSUFBSXpGLE1BQU1ZLFNBQVMsSUFBSTVDLFFBQVF5QyxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsWUFBWSxFQUFFO2dDQUMxRDRCLFlBQVlpQyxPQUFPLEdBQUd4RyxRQUFRK0QsS0FBSyxDQUFDdUIsYUFBYSxDQUFDLFdBQVdaLE9BQU87Z0NBQ3BFTSxnQkFBZ0J5QixVQUFVLEdBQUcsQ0FBQ3ZCLE9BQzVCcEMsSUFBQUEsYUFBSyxFQUFDLENBQUMsRUFBRXlFLGVBQWUsV0FBVyxDQUFDLEVBQUVwQyxFQUFFLENBQUNELEtBQUtzQixPQUFPOzRCQUN6RDs0QkFFQSxNQUFNLEVBQ0ovRSxvQkFBb0JpRixxQkFBcUIsRUFDekNuRixrQkFBa0JvRixtQkFBbUIsRUFDckMzRixrQkFBa0I0RixtQkFBbUIsRUFDdEMsR0FBR3BCLElBQUFBLGlCQUFVLEVBQUM7Z0NBQ2J4RjtnQ0FDQXVFO2dDQUNBUztnQ0FDQTFFLGdCQUFnQnlGO2dDQUNoQnhGO2dDQUNBRSxRQUFRRixnQkFBZ0JzRyxJQUFBQSxrQkFBUSxFQUFDUyxNQUFNN0csTUFBTSxJQUFJNkcsTUFBTTdHLE1BQU07Z0NBQzdEUztnQ0FDQTRGLG1CQUFtQjdGO2dDQUNuQkU7Z0NBQ0FDO2dDQUNBaUMsV0FBV2tFOzRCQUNiOzRCQUVBLElBQUlaLHFCQUFxQjtnQ0FDdkIsSUFBSSxDQUFDcEYsb0JBQW9Cb0Ysd0JBQXdCLFNBQy9DcEYsbUJBQW1Cb0Y7NEJBQ3ZCOzRCQUVBLElBQUlELHVCQUF1QjtnQ0FDekIsSUFBSSxDQUFDakYsc0JBQXNCaUYsMEJBQTBCLFNBQ25EakYscUJBQXFCaUY7NEJBQ3pCOzRCQUVBLE1BQU1rQixzQkFBc0JqQyxJQUFBQSxxQkFBUyxFQUNuQzNGLFFBQVE4RSxNQUFNLENBQUN5QyxlQUFlLEVBQzlCLENBQUMsRUFBRVAsSUFBSSxFQUFFcEIsR0FBRyxFQUFFO2dDQUNaLE1BQU1DLFNBQTJDO29DQUMvQ1EsV0FBV1QsSUFBSTVGLFFBQVE4RSxNQUFNLENBQUMxRCxjQUFjLEVBQUU7d0NBQzVDWCxRQUFROzRDQUFDVCxRQUFROEUsTUFBTSxDQUFDeUMsZUFBZSxDQUFDbEIsU0FBUzt5Q0FBQzt3Q0FDbER4QixZQUFZOzRDQUFDN0UsUUFBUThFLE1BQU0sQ0FBQzFELGNBQWMsQ0FBQ1EsRUFBRTt5Q0FBQztvQ0FDaEQ7Z0NBQ0Y7Z0NBRUEsSUFBSXFGLElBQUFBLGdDQUFlLEVBQUNLLE1BQU03RyxNQUFNLEdBQUc7b0NBQ2pDb0YsT0FBT3FCLFFBQVEsR0FBR0YsS0FBS2hILFFBQVE4RSxNQUFNLENBQUMsQ0FBQyxFQUFFeUMsZUFBZSxRQUFRLENBQUMsQ0FBQztnQ0FDcEU7Z0NBRUFYLG9CQUFvQjdFLE9BQU8sQ0FBQyxDQUFDb0YsS0FBS0M7b0NBQ2hDdkIsTUFBTSxDQUFDdUIsSUFBSSxHQUFHSixLQUFLaEgsUUFBUThFLE1BQU0sQ0FBQ3FDLElBQUk7Z0NBQ3hDO2dDQUVBLE9BQU90Qjs0QkFDVDs0QkFHRjdGLFFBQVEyRixTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUU0QixlQUFlLENBQUMsQ0FBQyxHQUFHSzt3QkFDckQsT0FBTyxJQUFJQyxRQUFRQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxjQUFjOzRCQUNoREMsSUFBQUEsa0VBQWdDLEVBQUM7Z0NBQy9CVjtnQ0FDQTFFLFdBQVdaLE1BQU1ZLFNBQVM7Z0NBQzFCeEI7Z0NBQ0E2RyxPQUFPakksUUFBUThFLE1BQU0sQ0FBQ3lDLGVBQWU7NEJBQ3ZDO3dCQUNGO3dCQUVBckcscUJBQXFCdUUsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFNkIsTUFBTUUsSUFBSSxDQUFDLENBQUMsRUFBRUQ7b0JBQ3BEO29CQUVBO2dCQUNGO1lBRUEsS0FBSztZQUNMLEtBQUs7Z0JBQVM7b0JBQ1osSUFBSSxDQUFFLENBQUEsVUFBVXZGLEtBQUksR0FBSTt3QkFDdEIsTUFBTSxFQUNKWCxtQkFBbUI2RyxzQkFBc0IsRUFDekN4Ryw2QkFBNkJ5RyxnQ0FBZ0MsRUFDN0QzRywyQkFBMkI0Ryw4QkFBOEIsRUFDekQ5RywrQkFBK0IrRyxrQ0FBa0MsRUFDakU1RyxvQkFBb0I2Ryx1QkFBdUIsRUFDM0MvRyxrQkFBa0JnSCxxQkFBcUIsRUFDeEMsR0FBR3hJLGVBQWU7NEJBQ2pCQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQyxRQUFRdUIsTUFBTXZCLE1BQU07NEJBQ3BCQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQzs0QkFDQUM7d0JBQ0Y7d0JBRUEsSUFBSThHLHdCQUF3QjdHLG9CQUFvQjt3QkFDaEQsSUFBSWdILG9DQUFvQy9HLGdDQUFnQzt3QkFDeEUsSUFBSWlILHVCQUF1QmhILG1CQUFtQjt3QkFDOUMsSUFBSTZHLGdDQUFnQzVHLDRCQUE0Qjt3QkFDaEUsSUFBSThHLHlCQUF5QjdHLHFCQUFxQjt3QkFDbEQsSUFBSTBHLGtDQUFrQ3pHLDhCQUE4Qjt3QkFDcEU7b0JBQ0Y7b0JBRUEsTUFBTXFFLHlCQUF5QkMsUUFBUWhFLE1BQU1pRSxLQUFLLEVBQUVDLGNBQWM1RjtvQkFFbEUsTUFBTSxFQUNKZSxtQkFBbUI2RyxzQkFBc0IsRUFDekN4Ryw2QkFBNkJ5RyxnQ0FBZ0MsRUFDN0QzRywyQkFBMkI0Ryw4QkFBOEIsRUFDekQ5RywrQkFBK0IrRyxrQ0FBa0MsRUFDakU1RyxvQkFBb0I2Ryx1QkFBdUIsRUFDM0MvRyxrQkFBa0JnSCxxQkFBcUIsRUFDeEMsR0FBR3hJLGVBQWU7d0JBQ2pCQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUMsY0FBYyxDQUFDLEVBQUU4QixXQUFXLENBQUMsQ0FBQzt3QkFDOUI3Qjt3QkFDQUMsZ0JBQWdCeUY7d0JBQ2hCeEY7d0JBQ0FDLGFBQWEsQ0FBQyxFQUFFMkIsVUFBVSxDQUFDLENBQUM7d0JBQzVCMUIsUUFBUXVCLE1BQU12QixNQUFNO3dCQUNwQkMsZ0JBQWdCc0IsTUFBTVksU0FBUzt3QkFDL0JqQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQyxjQUFjLENBQUMsRUFBRUMsZ0JBQWdCLENBQUMsRUFBRW1CLFdBQVcsQ0FBQzt3QkFDaERuQjt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO29CQUNGO29CQUVBLElBQUk4Ryx3QkFBd0I3RyxvQkFBb0I7b0JBQ2hELElBQUlnSCxvQ0FBb0MvRyxnQ0FBZ0M7b0JBQ3hFLElBQUlpSCx1QkFBdUJoSCxtQkFBbUI7b0JBQzlDLElBQUk2RyxnQ0FBZ0M1Ryw0QkFBNEI7b0JBQ2hFLElBQUk4Ryx5QkFBeUI3RyxxQkFBcUI7b0JBQ2xELElBQUkwRyxrQ0FBa0N6Ryw4QkFBOEI7b0JBQ3BFO2dCQUNGO1lBRUEsS0FBSztnQkFBUTtvQkFDWCxNQUFNcUUseUJBQXlCQyxRQUFRaEUsTUFBTWlFLEtBQUssRUFBRUMsY0FBYzVGO29CQUVsRSxNQUFNLEVBQ0plLG1CQUFtQm1ILG9CQUFvQixFQUN2QzlHLDZCQUE2QitHLDhCQUE4QixFQUMzRGpILDJCQUEyQmtILDRCQUE0QixFQUN2RHBILCtCQUErQnFILGdDQUFnQyxFQUMvRGxILG9CQUFvQm1ILHFCQUFxQixFQUN6Q3JILGtCQUFrQnNILG1CQUFtQixFQUN0QyxHQUFHOUksZUFBZTt3QkFDakJDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDLGdCQUFnQnlGO3dCQUNoQnhGO3dCQUNBQzt3QkFDQUMsUUFBUXVCLE1BQU04RyxJQUFJLENBQUM1RSxHQUFHLENBQUMsQ0FBQzZFLE1BQVMsQ0FBQTtnQ0FBRSxHQUFHQSxHQUFHO2dDQUFFL0YsTUFBTTs0QkFBTSxDQUFBO3dCQUN2RHRDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQztvQkFDRjtvQkFFQSxJQUFJb0gsc0JBQXNCbkgsb0JBQW9CO29CQUM5QyxJQUFJc0gsa0NBQWtDckgsZ0NBQWdDO29CQUN0RSxJQUFJdUgscUJBQXFCdEgsbUJBQW1CO29CQUM1QyxJQUFJbUgsOEJBQThCbEgsNEJBQTRCO29CQUM5RCxJQUFJb0gsdUJBQXVCbkgscUJBQXFCO29CQUNoRCxJQUFJZ0gsZ0NBQWdDL0csOEJBQThCO29CQUNsRTtnQkFDRjtZQUVBLEtBQUs7WUFDTCxLQUFLO2dCQUFlO29CQUNsQixNQUFNcUUseUJBQXlCQyxRQUFRaEUsTUFBTWlFLEtBQUssRUFBRUMsY0FBYzVGO29CQUNsRSxNQUFNLEVBQ0plLG1CQUFtQjJILG9CQUFvQixFQUN2Q3RILDZCQUE2QnVILDhCQUE4QixFQUMzRHpILDJCQUEyQjBILDRCQUE0QixFQUN2RDVILCtCQUErQjZILGdDQUFnQyxFQUMvRDFILG9CQUFvQjJILHFCQUFxQixFQUN6QzdILGtCQUFrQjhILG1CQUFtQixFQUN0QyxHQUFHdEosZUFBZTt3QkFDakJDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDLGdCQUFnQnlGO3dCQUNoQnhGO3dCQUNBQzt3QkFDQUMsUUFBUXVCLE1BQU12QixNQUFNO3dCQUNwQkM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDLGNBQWNDO3dCQUNkQTt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO29CQUNGO29CQUVBLElBQUk0SCxzQkFBc0IzSCxvQkFBb0I7b0JBQzlDLElBQUk4SCxrQ0FBa0M3SCxnQ0FBZ0M7b0JBQ3RFLElBQUkrSCxxQkFBcUI5SCxtQkFBbUI7b0JBQzVDLElBQUkySCw4QkFBOEIxSCw0QkFBNEI7b0JBQzlELElBQUk0SCx1QkFBdUIzSCxxQkFBcUI7b0JBQ2hELElBQUl3SCxnQ0FBZ0N2SCw4QkFBOEI7b0JBQ2xFO2dCQUNGO1lBRUEsS0FBSztZQUNMLEtBQUs7Z0JBQ0gsSUFBSTRILE1BQU1DLE9BQU8sQ0FBQ3ZILE1BQU13SCxVQUFVLEdBQUc7b0JBQ25DeEgsTUFBTXdILFVBQVUsQ0FBQ3pILE9BQU8sQ0FBQyxDQUFDMEgsV0FBYXhJLGNBQWN5SSxHQUFHLENBQUNEO2dCQUMzRCxPQUFPO29CQUNMeEksY0FBY3lJLEdBQUcsQ0FBQzFILE1BQU13SCxVQUFVO2dCQUNwQztnQkFFQSxJQUFJeEgsTUFBTVksU0FBUyxJQUFJNUMsUUFBUXlDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDQyxZQUFZLEVBQUU7b0JBQzFEckIsZ0NBQWdDO2dCQUNsQztnQkFDQTtZQUVGO2dCQUNFO1FBQ0o7UUFFQSxNQUFNNEUsWUFBWWxFLE1BQU1pRSxLQUFLLElBQUlqRSxNQUFNaUUsS0FBSyxDQUFDQyxTQUFTO1FBRXRELElBQ0UsQ0FBQzVGLGtCQUNEOEIsV0FBVyxDQUFDRCxVQUFVLElBQ3RCLGNBQWNILFNBQ2RBLE1BQU0ySCxRQUFRLElBQ2QsQ0FBQ3pELFdBQ0Q7WUFDQTlELFdBQVcsQ0FBQ0QsVUFBVSxDQUFDdUMsT0FBTztRQUNoQztJQUNGO0lBRUEsT0FBTztRQUNMckQ7UUFDQUs7UUFDQUY7UUFDQUY7UUFDQUc7UUFDQUY7SUFDRjtBQUNGIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/db-postgres",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "The officially supported Postgres database adapter for Payload",
5
5
  "repository": "https://github.com/payloadcms/payload",
6
6
  "license": "MIT",
@@ -15,7 +15,7 @@
15
15
  "dependencies": {
16
16
  "@libsql/client": "^0.3.1",
17
17
  "console-table-printer": "2.11.2",
18
- "drizzle-kit": "0.20.5-608ae62",
18
+ "drizzle-kit": "0.20.14-1f2c838",
19
19
  "drizzle-orm": "0.29.3",
20
20
  "pg": "8.11.3",
21
21
  "prompts": "2.4.2",
@@ -26,7 +26,7 @@
26
26
  "@types/pg": "8.10.2",
27
27
  "@types/to-snake-case": "1.0.0",
28
28
  "@payloadcms/eslint-config": "1.1.1",
29
- "payload": "2.9.0"
29
+ "payload": "2.10.0"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "payload": "^2.0.0"