@decohere/create 0.0.1-dev.34 → 0.0.1-dev.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -191,6 +191,11 @@ function createApi(name, identifier, scopes = HELLO_API_SCOPES) {
191
191
  identifier,
192
192
  "--scopes",
193
193
  scopes.join(","),
194
+ // RBAC: only permissions assigned to the user/role appear on the token.
195
+ "--enforce-policies",
196
+ // Include Auth0 `permissions[]` claim (consumed by sample principalMapper).
197
+ "--token-dialect",
198
+ "access_token_authz",
194
199
  "--json",
195
200
  "--no-input"
196
201
  ]);
@@ -203,6 +208,9 @@ function updateApiScopes(identifier, scopes = HELLO_API_SCOPES) {
203
208
  identifier,
204
209
  "--scopes",
205
210
  scopes.join(","),
211
+ "--enforce-policies",
212
+ "--token-dialect",
213
+ "access_token_authz",
206
214
  "--no-input"
207
215
  ]);
208
216
  }
@@ -395,4 +403,4 @@ function createAdminDatabaseUser(input) {
395
403
  }
396
404
  }
397
405
 
398
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2F1dGgwLWNsaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjRmlsZVN5bmMsIHNwYXduU3luYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbi8qKiBNYW5hZ2VtZW50IEFQSSBzY29wZXMgbmVlZGVkIGZvciBBUEksIFNQQSwgY29ubmVjdGlvbnMsIGFuZCBhZG1pbiB1c2Vycy4gKi9cbmNvbnN0IFJFUVVJUkVEX1NDT1BFUyA9IFtcblx0XCJjcmVhdGU6Y2xpZW50c1wiLFxuXHRcInJlYWQ6Y2xpZW50c1wiLFxuXHRcInVwZGF0ZTpjbGllbnRzXCIsXG5cdFwiY3JlYXRlOnJlc291cmNlX3NlcnZlcnNcIixcblx0XCJyZWFkOnJlc291cmNlX3NlcnZlcnNcIixcblx0XCJ1cGRhdGU6cmVzb3VyY2Vfc2VydmVyc1wiLFxuXHRcInJlYWQ6Y29ubmVjdGlvbnNcIixcblx0XCJ1cGRhdGU6Y29ubmVjdGlvbnNcIixcblx0XCJjcmVhdGU6dXNlcnNcIixcblx0XCJyZWFkOnVzZXJzXCIsXG5cdFwidXBkYXRlOnVzZXJzXCIsXG5dLmpvaW4oXCIsXCIpO1xuXG4vKiogSGFyZCB0aW1lb3V0IGZvciBhbnkgTWFuYWdlbWVudCBBUEkgY2FsbC4gUHJldmVudHMgaW5kZWZpbml0ZSBoYW5ncyBvbiB0b2tlbiByZS1hdXRoLiAqL1xuY29uc3QgQVBJX1RJTUVPVVRfTVMgPSA4XzAwMDtcblxuLyoqIERlZmF1bHQgQVBJIHNjb3BlcyBtYXRjaGluZyBIZWxsbyBDQVNMIEF1dGhvcml6ZSBkZWNvcmF0b3JzLiAqL1xuZXhwb3J0IGNvbnN0IEhFTExPX0FQSV9TQ09QRVMgPSBbXG5cdFwicmVhZDpIZWxsb1wiLFxuXHRcImNyZWF0ZTpIZWxsb1wiLFxuXHRcInVwZGF0ZTpIZWxsb1wiLFxuXHRcImRlbGV0ZTpIZWxsb1wiLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IERCX0NPTk5FQ1RJT05fTkFNRSA9IFwiVXNlcm5hbWUtUGFzc3dvcmQtQXV0aGVudGljYXRpb25cIjtcblxuZXhwb3J0IGNsYXNzIEF1dGgwQXV0aEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobWVzc2FnZSk7XG5cdFx0dGhpcy5uYW1lID0gXCJBdXRoMEF1dGhFcnJvclwiO1xuXHR9XG59XG5cbi8qKiBSZXR1cm5zIHRydWUgaWYgYW4gZXJyb3Igb3Igc3RkZXJyIG91dHB1dCBsb29rcyBsaWtlIGFuIGV4cGlyZWQvbWlzc2luZyB0b2tlbi4gKi9cbmZ1bmN0aW9uIGlzQXV0aEVycm9yKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gKFxuXHRcdHRleHQuaW5jbHVkZXMoXCJyZW5ldyBhY2Nlc3MgdG9rZW5cIikgfHxcblx0XHR0ZXh0LmluY2x1ZGVzKFwibG9nIGluXCIpIHx8XG5cdFx0dGV4dC5pbmNsdWRlcyhcIlVuYXV0aG9yaXplZFwiKVxuXHQpO1xufVxuXG4vKiogU3RyaXAgQXV0aDAgQ0xJIGJhbm5lciBsaW5lcyBiZWZvcmUgSlNPTi4gKi9cbmZ1bmN0aW9uIHBhcnNlSnNvbk91dHB1dDxUPihzdGRvdXQ6IHN0cmluZyk6IFQge1xuXHRjb25zdCBzdGFydCA9IHN0ZG91dC5pbmRleE9mKFwie1wiKTtcblx0Y29uc3QgYXJyYXlTdGFydCA9IHN0ZG91dC5pbmRleE9mKFwiW1wiKTtcblx0bGV0IGlkeCA9IC0xO1xuXHRpZiAoc3RhcnQgPT09IC0xKSBpZHggPSBhcnJheVN0YXJ0O1xuXHRlbHNlIGlmIChhcnJheVN0YXJ0ID09PSAtMSkgaWR4ID0gc3RhcnQ7XG5cdGVsc2UgaWR4ID0gTWF0aC5taW4oc3RhcnQsIGFycmF5U3RhcnQpO1xuXHRpZiAoaWR4IDwgMCkgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBKU09OIGZyb20gYXV0aDAgQ0xJLCBnb3Q6ICR7c3Rkb3V0LnNsaWNlKDAsIDIwMCl9YCk7XG5cdHJldHVybiBKU09OLnBhcnNlKHN0ZG91dC5zbGljZShpZHgpKSBhcyBUO1xufVxuXG4vKiogUnVuIGFuIGF1dGgwIENMSSBjb21tYW5kIHdpdGggYSBoYXJkIHRpbWVvdXQuIFJldHVybnMgc3Rkb3V0IG9uIHN1Y2Nlc3MsIHRocm93cyBvbiBmYWlsdXJlLiAqL1xuZnVuY3Rpb24gcnVuQXV0aDAoYXJnczogc3RyaW5nW10pOiBzdHJpbmcge1xuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXCJhdXRoMFwiLCBhcmdzLCB7XG5cdFx0ZW5jb2Rpbmc6IFwidXRmOFwiLFxuXHRcdHRpbWVvdXQ6IEFQSV9USU1FT1VUX01TLFxuXHRcdGlucHV0OiBcIlwiLFxuXHRcdHN0ZGlvOiBcInBpcGVcIixcblx0fSk7XG5cblx0aWYgKHJlc3VsdC5lcnJvcikge1xuXHRcdGNvbnN0IG1zZyA9IHJlc3VsdC5lcnJvci5tZXNzYWdlO1xuXHRcdGlmIChpc0F1dGhFcnJvcihtc2cpIHx8IChyZXN1bHQuZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlID09PSBcIkVUSU1FRE9VVFwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgQXV0aDBBdXRoRXJyb3IobXNnKTtcblx0XHR9XG5cdFx0dGhyb3cgcmVzdWx0LmVycm9yO1xuXHR9XG5cblx0aWYgKHJlc3VsdC5zdGF0dXMgIT09IDApIHtcblx0XHRjb25zdCBzdGRlcnIgPSByZXN1bHQuc3RkZXJyID8/IFwiXCI7XG5cdFx0aWYgKGlzQXV0aEVycm9yKHN0ZGVycikpIHRocm93IG5ldyBBdXRoMEF1dGhFcnJvcihzdGRlcnIpO1xuXHRcdHRocm93IG5ldyBFcnJvcihzdGRlcnIgfHwgYGF1dGgwIGV4aXRlZCB3aXRoIGNvZGUgJHtyZXN1bHQuc3RhdHVzfWApO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdC5zdGRvdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aDBUZW5hbnQge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGFjdGl2ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0luc3RhbGxlZCgpOiBib29sZWFuIHtcblx0dHJ5IHtcblx0XHRleGVjRmlsZVN5bmMoXCJhdXRoMFwiLCBbXCItLXZlcnNpb25cIl0sIHsgc3RkaW86IFwicGlwZVwiIH0pO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RUZW5hbnRzKCk6IEF1dGgwVGVuYW50W10ge1xuXHR0cnkge1xuXHRcdGNvbnN0IG91dCA9IGV4ZWNGaWxlU3luYyhcImF1dGgwXCIsIFtcInRlbmFudHNcIiwgXCJsaXN0XCIsIFwiLS1qc29uXCJdLCB7XG5cdFx0XHRlbmNvZGluZzogXCJ1dGY4XCIsXG5cdFx0XHRzdGRpbzogXCJwaXBlXCIsXG5cdFx0fSk7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2Uob3V0KSBhcyBBdXRoMFRlbmFudFtdO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ2luKCk6IGJvb2xlYW4ge1xuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXCJhdXRoMFwiLCBbXCJsb2dpblwiLCBcIi0tc2NvcGVzXCIsIFJFUVVJUkVEX1NDT1BFU10sIHtcblx0XHRzdGRpbzogXCJpbmhlcml0XCIsXG5cdH0pO1xuXHRyZXR1cm4gcmVzdWx0LnN0YXR1cyA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RBcGlzKCk6IEFycmF5PHsgaWRlbnRpZmllcjogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfT4ge1xuXHR0cnkge1xuXHRcdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcImFwaXNcIiwgXCJsaXN0XCIsIFwiLS1qc29uXCIsIFwiLS1uby1pbnB1dFwiXSk7XG5cdFx0cmV0dXJuIHBhcnNlSnNvbk91dHB1dChvdXQpO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRpZiAoZXJyIGluc3RhbmNlb2YgQXV0aDBBdXRoRXJyb3IpIHRocm93IGVycjtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFwaShcblx0bmFtZTogc3RyaW5nLFxuXHRpZGVudGlmaWVyOiBzdHJpbmcsXG5cdHNjb3BlczogcmVhZG9ubHkgc3RyaW5nW10gPSBIRUxMT19BUElfU0NPUEVTLFxuKTogeyBpZGVudGlmaWVyOiBzdHJpbmcgfSB7XG5cdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwaXNcIixcblx0XHRcImNyZWF0ZVwiLFxuXHRcdFwiLS1uYW1lXCIsXG5cdFx0bmFtZSxcblx0XHRcIi0taWRlbnRpZmllclwiLFxuXHRcdGlkZW50aWZpZXIsXG5cdFx0XCItLXNjb3Blc1wiLFxuXHRcdHNjb3Blcy5qb2luKFwiLFwiKSxcblx0XHRcIi0tanNvblwiLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcblx0cmV0dXJuIHBhcnNlSnNvbk91dHB1dChvdXQpO1xufVxuXG4vKiogUmVwbGFjZSBhbiBBUEkncyBzY29wZXMgKEF1dGgwIENMSSB1cGRhdGUgLS1zY29wZXMgcmVwbGFjZXMgdGhlIGZ1bGwgc2V0KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVBcGlTY29wZXMoXG5cdGlkZW50aWZpZXI6IHN0cmluZyxcblx0c2NvcGVzOiByZWFkb25seSBzdHJpbmdbXSA9IEhFTExPX0FQSV9TQ09QRVMsXG4pOiB2b2lkIHtcblx0cnVuQXV0aDAoW1wiYXBpc1wiLCBcInVwZGF0ZVwiLCBpZGVudGlmaWVyLCBcIi0tc2NvcGVzXCIsIHNjb3Blcy5qb2luKFwiLFwiKSwgXCItLW5vLWlucHV0XCJdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNwYUFwcChcblx0bmFtZTogc3RyaW5nLFxuXHRjYWxsYmFja1VybHM6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogeyBjbGllbnRfaWQ6IHN0cmluZyB9IHtcblx0Y29uc3QgY2FsbGJhY2tzID0gdHlwZW9mIGNhbGxiYWNrVXJscyA9PT0gXCJzdHJpbmdcIiA/IGNhbGxiYWNrVXJscyA6IGNhbGxiYWNrVXJscy5qb2luKFwiLFwiKTtcblx0Y29uc3Qgb3V0ID0gcnVuQXV0aDAoW1xuXHRcdFwiYXBwc1wiLFxuXHRcdFwiY3JlYXRlXCIsXG5cdFx0XCItLW5hbWVcIixcblx0XHRuYW1lLFxuXHRcdFwiLS10eXBlXCIsXG5cdFx0XCJzcGFcIixcblx0XHRcIi0tY2FsbGJhY2tzXCIsXG5cdFx0Y2FsbGJhY2tzLFxuXHRcdFwiLS1qc29uXCIsXG5cdFx0XCItLW5vLWlucHV0XCIsXG5cdF0pO1xuXHRjb25zdCBhcHAgPSBwYXJzZUpzb25PdXRwdXQ8eyBjbGllbnRfaWQ/OiBzdHJpbmc7IGNsaWVudElkPzogc3RyaW5nIH0+KG91dCk7XG5cdGNvbnN0IGNsaWVudElkID0gYXBwLmNsaWVudF9pZCA/PyBhcHAuY2xpZW50SWQ7XG5cdGlmICghY2xpZW50SWQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRgQXV0aDAgY3JlYXRlIFNQQSByZXNwb25zZSBtaXNzaW5nIGNsaWVudF9pZC4gc3Rkb3V0OiAke291dC5zbGljZSgwLCAzMDApfWAsXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4geyBjbGllbnRfaWQ6IGNsaWVudElkIH07XG59XG5cbmV4cG9ydCB0eXBlIEF1dGgwQXBwID0geyBjbGllbnRfaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0QXBwcygpOiBBdXRoMEFwcFtdIHtcblx0dHJ5IHtcblx0XHRjb25zdCBvdXQgPSBydW5BdXRoMChbXCJhcHBzXCIsIFwibGlzdFwiLCBcIi0tanNvblwiLCBcIi0tbm8taW5wdXRcIl0pO1xuXHRcdGNvbnN0IGFwcHMgPVxuXHRcdFx0cGFyc2VKc29uT3V0cHV0PEFycmF5PHsgY2xpZW50X2lkPzogc3RyaW5nOyBjbGllbnRJZD86IHN0cmluZzsgbmFtZT86IHN0cmluZyB9Pj4ob3V0KTtcblx0XHRyZXR1cm4gYXBwc1xuXHRcdFx0Lm1hcCgoYSkgPT4gKHtcblx0XHRcdFx0Y2xpZW50X2lkOiBhLmNsaWVudF9pZCA/PyBhLmNsaWVudElkID8/IFwiXCIsXG5cdFx0XHRcdG5hbWU6IGEubmFtZSA/PyBcIlwiLFxuXHRcdFx0fSkpXG5cdFx0XHQuZmlsdGVyKChhKSA9PiBhLmNsaWVudF9pZCAmJiBhLm5hbWUpO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRpZiAoZXJyIGluc3RhbmNlb2YgQXV0aDBBdXRoRXJyb3IpIHRocm93IGVycjtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVNwYUNhbGxiYWNrcyhcblx0Y2xpZW50SWQ6IHN0cmluZyxcblx0Y2FsbGJhY2tVcmxzOiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSxcbik6IHZvaWQge1xuXHRjb25zdCBjYWxsYmFja3MgPSB0eXBlb2YgY2FsbGJhY2tVcmxzID09PSBcInN0cmluZ1wiID8gY2FsbGJhY2tVcmxzIDogY2FsbGJhY2tVcmxzLmpvaW4oXCIsXCIpO1xuXHRydW5BdXRoMChbXCJhcHBzXCIsIFwidXBkYXRlXCIsIGNsaWVudElkLCBcIi0tY2FsbGJhY2tzXCIsIGNhbGxiYWNrcywgXCItLW5vLWlucHV0XCJdKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBQb3N0bWFuIFNQQSwgb3IgcmV1c2UgYW4gZXhpc3RpbmcgYXBwIHdpdGggdGhlIHNhbWUgbmFtZSAocmUtc2NhZmZvbGQpLlxuICogQWx3YXlzIHJldHVybnMgYSBjbGllbnRfaWQgc3VpdGFibGUgZm9yIFBvc3RtYW4gYXV0aDBDbGllbnRJZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVNwYUFwcChcblx0bmFtZTogc3RyaW5nLFxuXHRjYWxsYmFja1VybHM6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogeyBjbGllbnRfaWQ6IHN0cmluZzsgcmV1c2VkOiBib29sZWFuIH0ge1xuXHRjb25zdCBleGlzdGluZyA9IGxpc3RBcHBzKCkuZmluZCgoYSkgPT4gYS5uYW1lID09PSBuYW1lKTtcblx0aWYgKGV4aXN0aW5nKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHVwZGF0ZVNwYUNhbGxiYWNrcyhleGlzdGluZy5jbGllbnRfaWQsIGNhbGxiYWNrVXJscyk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHQvLyBDYWxsYmFja3MgbWF5IGFscmVhZHkgbWF0Y2g7IHN0aWxsIHVzYWJsZSBmb3IgUG9zdG1hbi5cblx0XHR9XG5cdFx0cmV0dXJuIHsgY2xpZW50X2lkOiBleGlzdGluZy5jbGllbnRfaWQsIHJldXNlZDogdHJ1ZSB9O1xuXHR9XG5cdHJldHVybiB7IC4uLmNyZWF0ZVNwYUFwcChuYW1lLCBjYWxsYmFja1VybHMpLCByZXVzZWQ6IGZhbHNlIH07XG59XG5cbnR5cGUgQXV0aDBDb25uZWN0aW9uID0geyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHN0cmF0ZWd5OiBzdHJpbmcgfTtcblxuLyoqIEVuYWJsZSBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gZm9yIGFuIGFwcGxpY2F0aW9uIChyZXF1aXJlZCBmb3IgdXNlcm5hbWUvcGFzc3dvcmQgbG9naW4pLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQoY29ubmVjdGlvbk5hbWU6IHN0cmluZywgY2xpZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuXHRjb25zdCBsaXN0T3V0ID0gcnVuQXV0aDAoW1wiYXBpXCIsIFwiZ2V0XCIsIFwiY29ubmVjdGlvbnNcIiwgXCItLW5vLWlucHV0XCJdKTtcblx0Y29uc3QgY29ubmVjdGlvbnMgPSBwYXJzZUpzb25PdXRwdXQ8QXV0aDBDb25uZWN0aW9uW10+KGxpc3RPdXQpO1xuXHRjb25zdCBjb25uZWN0aW9uID0gY29ubmVjdGlvbnMuZmluZCgoYykgPT4gYy5uYW1lID09PSBjb25uZWN0aW9uTmFtZSk7XG5cdGlmICghY29ubmVjdGlvbikge1xuXHRcdHRocm93IG5ldyBFcnJvcihgQXV0aDAgY29ubmVjdGlvbiBub3QgZm91bmQ6ICR7Y29ubmVjdGlvbk5hbWV9YCk7XG5cdH1cblxuXHRjb25zdCBjbGllbnRzT3V0ID0gcnVuQXV0aDAoW1xuXHRcdFwiYXBpXCIsXG5cdFx0XCJnZXRcIixcblx0XHRgY29ubmVjdGlvbnMvJHtjb25uZWN0aW9uLmlkfS9jbGllbnRzYCxcblx0XHRcIi0tbm8taW5wdXRcIixcblx0XSk7XG5cdGNvbnN0IHsgY2xpZW50cyB9ID0gcGFyc2VKc29uT3V0cHV0PHsgY2xpZW50czogQXJyYXk8eyBjbGllbnRfaWQ6IHN0cmluZyB9PiB9PihjbGllbnRzT3V0KTtcblx0aWYgKGNsaWVudHMuc29tZSgoYykgPT4gYy5jbGllbnRfaWQgPT09IGNsaWVudElkKSkgcmV0dXJuO1xuXG5cdC8vIERlZGljYXRlZCBlbmFibGVkLWNsaWVudHMgZW5kcG9pbnQgKGVuYWJsZWRfY2xpZW50cyBvbiBjb25uZWN0aW9uIFBBVENIIGlzIGRlcHJlY2F0ZWQpLlxuXHRydW5BdXRoMChbXG5cdFx0XCJhcGlcIixcblx0XHRcInBhdGNoXCIsXG5cdFx0YGNvbm5lY3Rpb25zLyR7Y29ubmVjdGlvbi5pZH0vY2xpZW50c2AsXG5cdFx0XCItLWRhdGFcIixcblx0XHRKU09OLnN0cmluZ2lmeShbeyBjbGllbnRfaWQ6IGNsaWVudElkLCBzdGF0dXM6IHRydWUgfV0pLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcbn1cblxuZXhwb3J0IHR5cGUgQWRtaW5EYXRhYmFzZVVzZXIgPSB7XG5cdHVzZXJfaWQ6IHN0cmluZztcblx0ZW1haWw6IHN0cmluZztcblx0cGFzc3dvcmQ6IHN0cmluZztcblx0dXNlcm5hbWU6IHN0cmluZztcbn07XG5cbi8qKiBTdHJvbmcgZGVmYXVsdCBwYXNzd29yZCB3aGVuIHRoZSBzY2FmZm9sZGVyIGNhbGxlciBsZWF2ZXMgcGFzc3dvcmQgYmxhbmsuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBZG1pblBhc3N3b3JkKCk6IHN0cmluZyB7XG5cdHJldHVybiBgJHtyYW5kb21CeXRlcygxMikudG9TdHJpbmcoXCJiYXNlNjR1cmxcIil9YUExIWA7XG59XG5cbmZ1bmN0aW9uIGlzVXNlckFscmVhZHlFeGlzdHNFcnJvcihlcnI6IHVua25vd24pOiBib29sZWFuIHtcblx0Y29uc3QgdGV4dCA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0cmV0dXJuIC9hbHJlYWR5IGV4aXN0c3x1c2VyIGV4aXN0c3xDb25mbGljdHw0MDkvaS50ZXN0KHRleHQpO1xufVxuXG4vKiogTG9vayB1cCBhIHVzZXIgYnkgZW1haWwgKE1hbmFnZW1lbnQgQVBJIHVzZXJzLWJ5LWVtYWlsKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kVXNlckJ5RW1haWwoZW1haWw6IHN0cmluZyk6IHsgdXNlcl9pZDogc3RyaW5nOyBlbWFpbDogc3RyaW5nIH0gfCBudWxsIHtcblx0Y29uc3Qgb3V0ID0gcnVuQXV0aDAoW1xuXHRcdFwiYXBpXCIsXG5cdFx0XCJnZXRcIixcblx0XHRgdXNlcnMtYnktZW1haWw/ZW1haWw9JHtlbmNvZGVVUklDb21wb25lbnQoZW1haWwpfWAsXG5cdFx0XCItLW5vLWlucHV0XCIsXG5cdF0pO1xuXHRjb25zdCB1c2VycyA9IHBhcnNlSnNvbk91dHB1dDxBcnJheTx7IHVzZXJfaWQ/OiBzdHJpbmc7IGVtYWlsPzogc3RyaW5nIH0+PihvdXQpO1xuXHRjb25zdCB1c2VyID0gdXNlcnMuZmluZCgodSkgPT4gdS51c2VyX2lkICYmIHUuZW1haWwpO1xuXHRpZiAoIXVzZXI/LnVzZXJfaWQgfHwgIXVzZXIuZW1haWwpIHJldHVybiBudWxsO1xuXHRyZXR1cm4geyB1c2VyX2lkOiB1c2VyLnVzZXJfaWQsIGVtYWlsOiB1c2VyLmVtYWlsIH07XG59XG5cbi8qKiBSZXNldCBwYXNzd29yZCBzbyBhIHJlLXNjYWZmb2xkIGNhbiB3cml0ZSBhIGtub3duIHBhc3N3b3JkIHRvIC5lbnYuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVXNlclBhc3N3b3JkKHVzZXJJZDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogdm9pZCB7XG5cdHJ1bkF1dGgwKFtcblx0XHRcImFwaVwiLFxuXHRcdFwicGF0Y2hcIixcblx0XHRgdXNlcnMvJHtlbmNvZGVVUklDb21wb25lbnQodXNlcklkKX1gLFxuXHRcdFwiLS1kYXRhXCIsXG5cdFx0SlNPTi5zdHJpbmdpZnkoeyBwYXNzd29yZCwgY29ubmVjdGlvbjogREJfQ09OTkVDVElPTl9OQU1FIH0pLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBEQiBjb25uZWN0aW9uIHJvb3QtYWRtaW4gdXNlciBmb3IgbG9jYWwgLyBQb3N0bWFuIGxvZ2luLlxuICogSWYgdGhlIHVzZXIgYWxyZWFkeSBleGlzdHMsIGxvb2sgdGhlbSB1cCwgcmVzZXQgcGFzc3dvcmQgdG8gYGlucHV0LnBhc3N3b3JkYCxcbiAqIGFuZCByZXR1cm4gdGhhdCBpZGVudGl0eSBzbyBjYWxsZXJzIGNhbiBzdGlsbCB3cml0ZSAuZW52IGNyZWRlbnRpYWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWRtaW5EYXRhYmFzZVVzZXIoaW5wdXQ6IHtcblx0ZW1haWw6IHN0cmluZztcblx0cGFzc3dvcmQ6IHN0cmluZztcblx0dXNlcm5hbWU6IHN0cmluZztcbn0pOiBBZG1pbkRhdGFiYXNlVXNlciB7XG5cdGNvbnN0IGJvZHkgPSB7XG5cdFx0ZW1haWw6IGlucHV0LmVtYWlsLFxuXHRcdGNvbm5lY3Rpb246IERCX0NPTk5FQ1RJT05fTkFNRSxcblx0XHRwYXNzd29yZDogaW5wdXQucGFzc3dvcmQsXG5cdFx0bmFtZTogaW5wdXQudXNlcm5hbWUsXG5cdFx0ZW1haWxfdmVyaWZpZWQ6IHRydWUsXG5cdFx0dmVyaWZ5X2VtYWlsOiBmYWxzZSxcblx0XHRhcHBfbWV0YWRhdGE6IHsgcm9sZXM6IFtcImFkbWluXCJdIH0sXG5cdH07XG5cblx0dHJ5IHtcblx0XHRjb25zdCBvdXQgPSBydW5BdXRoMChbXG5cdFx0XHRcImFwaVwiLFxuXHRcdFx0XCJwb3N0XCIsXG5cdFx0XHRcInVzZXJzXCIsXG5cdFx0XHRcIi0tZGF0YVwiLFxuXHRcdFx0SlNPTi5zdHJpbmdpZnkoYm9keSksXG5cdFx0XHRcIi0tbm8taW5wdXRcIixcblx0XHRdKTtcblx0XHRjb25zdCB1c2VyID0gcGFyc2VKc29uT3V0cHV0PHsgdXNlcl9pZD86IHN0cmluZzsgZW1haWw/OiBzdHJpbmcgfT4ob3V0KTtcblx0XHRpZiAoIXVzZXIudXNlcl9pZCB8fCAhdXNlci5lbWFpbCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRgQXV0aDAgY3JlYXRlIHVzZXIgcmVzcG9uc2UgbWlzc2luZyB1c2VyX2lkL2VtYWlsLiBzdGRvdXQ6ICR7b3V0LnNsaWNlKDAsIDMwMCl9YCxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHR1c2VyX2lkOiB1c2VyLnVzZXJfaWQsXG5cdFx0XHRlbWFpbDogdXNlci5lbWFpbCxcblx0XHRcdHBhc3N3b3JkOiBpbnB1dC5wYXNzd29yZCxcblx0XHRcdHVzZXJuYW1lOiBpbnB1dC51c2VybmFtZSxcblx0XHR9O1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRpZiAoIWlzVXNlckFscmVhZHlFeGlzdHNFcnJvcihlcnIpKSB0aHJvdyBlcnI7XG5cblx0XHRjb25zdCBleGlzdGluZyA9IGZpbmRVc2VyQnlFbWFpbChpbnB1dC5lbWFpbCk7XG5cdFx0aWYgKCFleGlzdGluZykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRgQXV0aDAgdXNlciBhbHJlYWR5IGV4aXN0cyBmb3IgJHtpbnB1dC5lbWFpbH0sIGJ1dCBsb29rdXAgYnkgZW1haWwgcmV0dXJuZWQgbm8gdXNlci5gLFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR1cGRhdGVVc2VyUGFzc3dvcmQoZXhpc3RpbmcudXNlcl9pZCwgaW5wdXQucGFzc3dvcmQpO1xuXHRcdHJldHVybiB7XG5cdFx0XHR1c2VyX2lkOiBleGlzdGluZy51c2VyX2lkLFxuXHRcdFx0ZW1haWw6IGV4aXN0aW5nLmVtYWlsLFxuXHRcdFx0cGFzc3dvcmQ6IGlucHV0LnBhc3N3b3JkLFxuXHRcdFx0dXNlcm5hbWU6IGlucHV0LnVzZXJuYW1lLFxuXHRcdH07XG5cdH1cbn1cblxuZXhwb3J0IHsgUkVRVUlSRURfU0NPUEVTIH07XG4iXSwibmFtZXMiOlsiQXV0aDBBdXRoRXJyb3IiLCJEQl9DT05ORUNUSU9OX05BTUUiLCJIRUxMT19BUElfU0NPUEVTIiwiUkVRVUlSRURfU0NPUEVTIiwiY3JlYXRlQWRtaW5EYXRhYmFzZVVzZXIiLCJjcmVhdGVBcGkiLCJjcmVhdGVTcGFBcHAiLCJlbmFibGVDb25uZWN0aW9uRm9yQ2xpZW50IiwiZW5zdXJlU3BhQXBwIiwiZmluZFVzZXJCeUVtYWlsIiwiZ2VuZXJhdGVBZG1pblBhc3N3b3JkIiwiaXNJbnN0YWxsZWQiLCJsaXN0QXBpcyIsImxpc3RBcHBzIiwibGlzdFRlbmFudHMiLCJsb2dpbiIsInVwZGF0ZUFwaVNjb3BlcyIsInVwZGF0ZVNwYUNhbGxiYWNrcyIsInVwZGF0ZVVzZXJQYXNzd29yZCIsImpvaW4iLCJBUElfVElNRU9VVF9NUyIsIkVycm9yIiwibWVzc2FnZSIsIm5hbWUiLCJpc0F1dGhFcnJvciIsInRleHQiLCJpbmNsdWRlcyIsInBhcnNlSnNvbk91dHB1dCIsInN0ZG91dCIsInN0YXJ0IiwiaW5kZXhPZiIsImFycmF5U3RhcnQiLCJpZHgiLCJNYXRoIiwibWluIiwic2xpY2UiLCJKU09OIiwicGFyc2UiLCJydW5BdXRoMCIsImFyZ3MiLCJyZXN1bHQiLCJzcGF3blN5bmMiLCJlbmNvZGluZyIsInRpbWVvdXQiLCJpbnB1dCIsInN0ZGlvIiwiZXJyb3IiLCJtc2ciLCJjb2RlIiwic3RhdHVzIiwic3RkZXJyIiwiZXhlY0ZpbGVTeW5jIiwib3V0IiwiZXJyIiwiaWRlbnRpZmllciIsInNjb3BlcyIsImNhbGxiYWNrVXJscyIsImNhbGxiYWNrcyIsImFwcCIsImNsaWVudElkIiwiY2xpZW50X2lkIiwiYXBwcyIsIm1hcCIsImEiLCJmaWx0ZXIiLCJleGlzdGluZyIsImZpbmQiLCJyZXVzZWQiLCJjb25uZWN0aW9uTmFtZSIsImxpc3RPdXQiLCJjb25uZWN0aW9ucyIsImNvbm5lY3Rpb24iLCJjIiwiY2xpZW50c091dCIsImlkIiwiY2xpZW50cyIsInNvbWUiLCJzdHJpbmdpZnkiLCJyYW5kb21CeXRlcyIsInRvU3RyaW5nIiwiaXNVc2VyQWxyZWFkeUV4aXN0c0Vycm9yIiwiU3RyaW5nIiwidGVzdCIsImVtYWlsIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwidXNlcnMiLCJ1c2VyIiwidSIsInVzZXJfaWQiLCJ1c2VySWQiLCJwYXNzd29yZCIsImJvZHkiLCJ1c2VybmFtZSIsImVtYWlsX3ZlcmlmaWVkIiwidmVyaWZ5X2VtYWlsIiwiYXBwX21ldGFkYXRhIiwicm9sZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBK0JhQTtlQUFBQTs7UUFGQUM7ZUFBQUE7O1FBUEFDO2VBQUFBOztRQXVWSkM7ZUFBQUE7O1FBeERPQztlQUFBQTs7UUFyTEFDO2VBQUFBOztRQTRCQUM7ZUFBQUE7O1FBNkVBQztlQUFBQTs7UUFuQkFDO2VBQUFBOztRQWlFQUM7ZUFBQUE7O1FBVkFDO2VBQUFBOztRQW5MQUM7ZUFBQUE7O1FBNEJBQztlQUFBQTs7UUFtRUFDO2VBQUFBOztRQXRGQUM7ZUFBQUE7O1FBWUFDO2VBQUFBOztRQXNDQUM7ZUFBQUE7O1FBcURBQztlQUFBQTs7UUEyRkFDO2VBQUFBOzs7bUNBclN3Qjs0QkFDWjtBQUU1Qiw2RUFBNkUsR0FDN0UsTUFBTWYsa0JBQWtCO0lBQ3ZCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDQSxDQUFDZ0IsSUFBSSxDQUFDO0FBRVAsMEZBQTBGLEdBQzFGLE1BQU1DLGlCQUFpQjtBQUdoQixNQUFNbEIsbUJBQW1CO0lBQy9CO0lBQ0E7SUFDQTtJQUNBO0NBQ0E7QUFFTSxNQUFNRCxxQkFBcUI7QUFFM0IsTUFBTUQsdUJBQXVCcUI7SUFDbkMsWUFBbUJDLE9BQWUsQ0FBRTtRQUNuQyxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQyxJQUFJLEdBQUc7SUFDYjtBQUNEO0FBRUEsbUZBQW1GLEdBQ25GLFNBQVNDLFlBQVlDLElBQVk7SUFDaEMsT0FDQ0EsS0FBS0MsUUFBUSxDQUFDLHlCQUNkRCxLQUFLQyxRQUFRLENBQUMsYUFDZEQsS0FBS0MsUUFBUSxDQUFDO0FBRWhCO0FBRUEsOENBQThDLEdBQzlDLFNBQVNDLGdCQUFtQkMsTUFBYztJQUN6QyxNQUFNQyxRQUFRRCxPQUFPRSxPQUFPLENBQUM7SUFDN0IsTUFBTUMsYUFBYUgsT0FBT0UsT0FBTyxDQUFDO0lBQ2xDLElBQUlFLE1BQU0sQ0FBQztJQUNYLElBQUlILFVBQVUsQ0FBQyxHQUFHRyxNQUFNRDtTQUNuQixJQUFJQSxlQUFlLENBQUMsR0FBR0MsTUFBTUg7U0FDN0JHLE1BQU1DLEtBQUtDLEdBQUcsQ0FBQ0wsT0FBT0U7SUFDM0IsSUFBSUMsTUFBTSxHQUFHLE1BQU0sSUFBSVgsTUFBTSxDQUFDLG1DQUFtQyxFQUFFTyxPQUFPTyxLQUFLLENBQUMsR0FBRyxNQUFNO0lBQ3pGLE9BQU9DLEtBQUtDLEtBQUssQ0FBQ1QsT0FBT08sS0FBSyxDQUFDSDtBQUNoQztBQUVBLGdHQUFnRyxHQUNoRyxTQUFTTSxTQUFTQyxJQUFjO0lBQy9CLE1BQU1DLFNBQVNDLElBQUFBLDRCQUFTLEVBQUMsU0FBU0YsTUFBTTtRQUN2Q0csVUFBVTtRQUNWQyxTQUFTdkI7UUFDVHdCLE9BQU87UUFDUEMsT0FBTztJQUNSO0lBRUEsSUFBSUwsT0FBT00sS0FBSyxFQUFFO1FBQ2pCLE1BQU1DLE1BQU1QLE9BQU9NLEtBQUssQ0FBQ3hCLE9BQU87UUFDaEMsSUFBSUUsWUFBWXVCLFFBQVEsQUFBQ1AsT0FBT00sS0FBSyxDQUEyQkUsSUFBSSxLQUFLLGFBQWE7WUFDckYsTUFBTSxJQUFJaEQsZUFBZStDO1FBQzFCO1FBQ0EsTUFBTVAsT0FBT00sS0FBSztJQUNuQjtJQUVBLElBQUlOLE9BQU9TLE1BQU0sS0FBSyxHQUFHO1FBQ3hCLE1BQU1DLFNBQVNWLE9BQU9VLE1BQU0sSUFBSTtRQUNoQyxJQUFJMUIsWUFBWTBCLFNBQVMsTUFBTSxJQUFJbEQsZUFBZWtEO1FBQ2xELE1BQU0sSUFBSTdCLE1BQU02QixVQUFVLENBQUMsdUJBQXVCLEVBQUVWLE9BQU9TLE1BQU0sRUFBRTtJQUNwRTtJQUVBLE9BQU9ULE9BQU9aLE1BQU07QUFDckI7QUFPTyxTQUFTakI7SUFDZixJQUFJO1FBQ0h3QyxJQUFBQSwrQkFBWSxFQUFDLFNBQVM7WUFBQztTQUFZLEVBQUU7WUFBRU4sT0FBTztRQUFPO1FBQ3JELE9BQU87SUFDUixFQUFFLE9BQU07UUFDUCxPQUFPO0lBQ1I7QUFDRDtBQUVPLFNBQVMvQjtJQUNmLElBQUk7UUFDSCxNQUFNc0MsTUFBTUQsSUFBQUEsK0JBQVksRUFBQyxTQUFTO1lBQUM7WUFBVztZQUFRO1NBQVMsRUFBRTtZQUNoRVQsVUFBVTtZQUNWRyxPQUFPO1FBQ1I7UUFDQSxPQUFPVCxLQUFLQyxLQUFLLENBQUNlO0lBQ25CLEVBQUUsT0FBTTtRQUNQLE9BQU8sRUFBRTtJQUNWO0FBQ0Q7QUFFTyxTQUFTckM7SUFDZixNQUFNeUIsU0FBU0MsSUFBQUEsNEJBQVMsRUFBQyxTQUFTO1FBQUM7UUFBUztRQUFZdEM7S0FBZ0IsRUFBRTtRQUN6RTBDLE9BQU87SUFDUjtJQUNBLE9BQU9MLE9BQU9TLE1BQU0sS0FBSztBQUMxQjtBQUVPLFNBQVNyQztJQUNmLElBQUk7UUFDSCxNQUFNd0MsTUFBTWQsU0FBUztZQUFDO1lBQVE7WUFBUTtZQUFVO1NBQWE7UUFDN0QsT0FBT1gsZ0JBQWdCeUI7SUFDeEIsRUFBRSxPQUFPQyxLQUFLO1FBQ2IsSUFBSUEsZUFBZXJELGdCQUFnQixNQUFNcUQ7UUFDekMsT0FBTyxFQUFFO0lBQ1Y7QUFDRDtBQUVPLFNBQVNoRCxVQUNma0IsSUFBWSxFQUNaK0IsVUFBa0IsRUFDbEJDLFNBQTRCckQsZ0JBQWdCO0lBRTVDLE1BQU1rRCxNQUFNZCxTQUFTO1FBQ3BCO1FBQ0E7UUFDQTtRQUNBZjtRQUNBO1FBQ0ErQjtRQUNBO1FBQ0FDLE9BQU9wQyxJQUFJLENBQUM7UUFDWjtRQUNBO0tBQ0E7SUFDRCxPQUFPUSxnQkFBZ0J5QjtBQUN4QjtBQUdPLFNBQVNwQyxnQkFDZnNDLFVBQWtCLEVBQ2xCQyxTQUE0QnJELGdCQUFnQjtJQUU1Q29DLFNBQVM7UUFBQztRQUFRO1FBQVVnQjtRQUFZO1FBQVlDLE9BQU9wQyxJQUFJLENBQUM7UUFBTTtLQUFhO0FBQ3BGO0FBRU8sU0FBU2IsYUFDZmlCLElBQVksRUFDWmlDLFlBQXdDO0lBRXhDLE1BQU1DLFlBQVksT0FBT0QsaUJBQWlCLFdBQVdBLGVBQWVBLGFBQWFyQyxJQUFJLENBQUM7SUFDdEYsTUFBTWlDLE1BQU1kLFNBQVM7UUFDcEI7UUFDQTtRQUNBO1FBQ0FmO1FBQ0E7UUFDQTtRQUNBO1FBQ0FrQztRQUNBO1FBQ0E7S0FDQTtJQUNELE1BQU1DLE1BQU0vQixnQkFBMkR5QjtJQUN2RSxNQUFNTyxXQUFXRCxJQUFJRSxTQUFTLElBQUlGLElBQUlDLFFBQVE7SUFDOUMsSUFBSSxDQUFDQSxVQUFVO1FBQ2QsTUFBTSxJQUFJdEMsTUFDVCxDQUFDLHFEQUFxRCxFQUFFK0IsSUFBSWpCLEtBQUssQ0FBQyxHQUFHLE1BQU07SUFFN0U7SUFDQSxPQUFPO1FBQUV5QixXQUFXRDtJQUFTO0FBQzlCO0FBSU8sU0FBUzlDO0lBQ2YsSUFBSTtRQUNILE1BQU11QyxNQUFNZCxTQUFTO1lBQUM7WUFBUTtZQUFRO1lBQVU7U0FBYTtRQUM3RCxNQUFNdUIsT0FDTGxDLGdCQUFpRnlCO1FBQ2xGLE9BQU9TLEtBQ0xDLEdBQUcsQ0FBQyxDQUFDQyxJQUFPLENBQUE7Z0JBQ1pILFdBQVdHLEVBQUVILFNBQVMsSUFBSUcsRUFBRUosUUFBUSxJQUFJO2dCQUN4Q3BDLE1BQU13QyxFQUFFeEMsSUFBSSxJQUFJO1lBQ2pCLENBQUEsR0FDQ3lDLE1BQU0sQ0FBQyxDQUFDRCxJQUFNQSxFQUFFSCxTQUFTLElBQUlHLEVBQUV4QyxJQUFJO0lBQ3RDLEVBQUUsT0FBTzhCLEtBQUs7UUFDYixJQUFJQSxlQUFlckQsZ0JBQWdCLE1BQU1xRDtRQUN6QyxPQUFPLEVBQUU7SUFDVjtBQUNEO0FBRU8sU0FBU3BDLG1CQUNmMEMsUUFBZ0IsRUFDaEJILFlBQXdDO0lBRXhDLE1BQU1DLFlBQVksT0FBT0QsaUJBQWlCLFdBQVdBLGVBQWVBLGFBQWFyQyxJQUFJLENBQUM7SUFDdEZtQixTQUFTO1FBQUM7UUFBUTtRQUFVcUI7UUFBVTtRQUFlRjtRQUFXO0tBQWE7QUFDOUU7QUFNTyxTQUFTakQsYUFDZmUsSUFBWSxFQUNaaUMsWUFBd0M7SUFFeEMsTUFBTVMsV0FBV3BELFdBQVdxRCxJQUFJLENBQUMsQ0FBQ0gsSUFBTUEsRUFBRXhDLElBQUksS0FBS0E7SUFDbkQsSUFBSTBDLFVBQVU7UUFDYixJQUFJO1lBQ0hoRCxtQkFBbUJnRCxTQUFTTCxTQUFTLEVBQUVKO1FBQ3hDLEVBQUUsT0FBTTtRQUNQLHlEQUF5RDtRQUMxRDtRQUNBLE9BQU87WUFBRUksV0FBV0ssU0FBU0wsU0FBUztZQUFFTyxRQUFRO1FBQUs7SUFDdEQ7SUFDQSxPQUFPO1FBQUUsR0FBRzdELGFBQWFpQixNQUFNaUMsYUFBYTtRQUFFVyxRQUFRO0lBQU07QUFDN0Q7QUFLTyxTQUFTNUQsMEJBQTBCNkQsY0FBc0IsRUFBRVQsUUFBZ0I7SUFDakYsTUFBTVUsVUFBVS9CLFNBQVM7UUFBQztRQUFPO1FBQU87UUFBZTtLQUFhO0lBQ3BFLE1BQU1nQyxjQUFjM0MsZ0JBQW1DMEM7SUFDdkQsTUFBTUUsYUFBYUQsWUFBWUosSUFBSSxDQUFDLENBQUNNLElBQU1BLEVBQUVqRCxJQUFJLEtBQUs2QztJQUN0RCxJQUFJLENBQUNHLFlBQVk7UUFDaEIsTUFBTSxJQUFJbEQsTUFBTSxDQUFDLDRCQUE0QixFQUFFK0MsZ0JBQWdCO0lBQ2hFO0lBRUEsTUFBTUssYUFBYW5DLFNBQVM7UUFDM0I7UUFDQTtRQUNBLENBQUMsWUFBWSxFQUFFaUMsV0FBV0csRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUN0QztLQUNBO0lBQ0QsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR2hELGdCQUEyRDhDO0lBQy9FLElBQUlFLFFBQVFDLElBQUksQ0FBQyxDQUFDSixJQUFNQSxFQUFFWixTQUFTLEtBQUtELFdBQVc7SUFFbkQsMEZBQTBGO0lBQzFGckIsU0FBUztRQUNSO1FBQ0E7UUFDQSxDQUFDLFlBQVksRUFBRWlDLFdBQVdHLEVBQUUsQ0FBQyxRQUFRLENBQUM7UUFDdEM7UUFDQXRDLEtBQUt5QyxTQUFTLENBQUM7WUFBQztnQkFBRWpCLFdBQVdEO2dCQUFVVixRQUFRO1lBQUs7U0FBRTtRQUN0RDtLQUNBO0FBQ0Y7QUFVTyxTQUFTdkM7SUFDZixPQUFPLEdBQUdvRSxJQUFBQSx1QkFBVyxFQUFDLElBQUlDLFFBQVEsQ0FBQyxhQUFhLElBQUksQ0FBQztBQUN0RDtBQUVBLFNBQVNDLHlCQUF5QjNCLEdBQVk7SUFDN0MsTUFBTTVCLE9BQU80QixlQUFlaEMsUUFBUWdDLElBQUkvQixPQUFPLEdBQUcyRCxPQUFPNUI7SUFDekQsT0FBTywyQ0FBMkM2QixJQUFJLENBQUN6RDtBQUN4RDtBQUdPLFNBQVNoQixnQkFBZ0IwRSxLQUFhO0lBQzVDLE1BQU0vQixNQUFNZCxTQUFTO1FBQ3BCO1FBQ0E7UUFDQSxDQUFDLHFCQUFxQixFQUFFOEMsbUJBQW1CRCxRQUFRO1FBQ25EO0tBQ0E7SUFDRCxNQUFNRSxRQUFRMUQsZ0JBQTZEeUI7SUFDM0UsTUFBTWtDLE9BQU9ELE1BQU1uQixJQUFJLENBQUMsQ0FBQ3FCLElBQU1BLEVBQUVDLE9BQU8sSUFBSUQsRUFBRUosS0FBSztJQUNuRCxJQUFJLENBQUNHLE1BQU1FLFdBQVcsQ0FBQ0YsS0FBS0gsS0FBSyxFQUFFLE9BQU87SUFDMUMsT0FBTztRQUFFSyxTQUFTRixLQUFLRSxPQUFPO1FBQUVMLE9BQU9HLEtBQUtILEtBQUs7SUFBQztBQUNuRDtBQUdPLFNBQVNqRSxtQkFBbUJ1RSxNQUFjLEVBQUVDLFFBQWdCO0lBQ2xFcEQsU0FBUztRQUNSO1FBQ0E7UUFDQSxDQUFDLE1BQU0sRUFBRThDLG1CQUFtQkssU0FBUztRQUNyQztRQUNBckQsS0FBS3lDLFNBQVMsQ0FBQztZQUFFYTtZQUFVbkIsWUFBWXRFO1FBQW1CO1FBQzFEO0tBQ0E7QUFDRjtBQU9PLFNBQVNHLHdCQUF3QndDLEtBSXZDO0lBQ0EsTUFBTStDLE9BQU87UUFDWlIsT0FBT3ZDLE1BQU11QyxLQUFLO1FBQ2xCWixZQUFZdEU7UUFDWnlGLFVBQVU5QyxNQUFNOEMsUUFBUTtRQUN4Qm5FLE1BQU1xQixNQUFNZ0QsUUFBUTtRQUNwQkMsZ0JBQWdCO1FBQ2hCQyxjQUFjO1FBQ2RDLGNBQWM7WUFBRUMsT0FBTztnQkFBQzthQUFRO1FBQUM7SUFDbEM7SUFFQSxJQUFJO1FBQ0gsTUFBTTVDLE1BQU1kLFNBQVM7WUFDcEI7WUFDQTtZQUNBO1lBQ0E7WUFDQUYsS0FBS3lDLFNBQVMsQ0FBQ2M7WUFDZjtTQUNBO1FBQ0QsTUFBTUwsT0FBTzNELGdCQUFzRHlCO1FBQ25FLElBQUksQ0FBQ2tDLEtBQUtFLE9BQU8sSUFBSSxDQUFDRixLQUFLSCxLQUFLLEVBQUU7WUFDakMsTUFBTSxJQUFJOUQsTUFDVCxDQUFDLDBEQUEwRCxFQUFFK0IsSUFBSWpCLEtBQUssQ0FBQyxHQUFHLE1BQU07UUFFbEY7UUFDQSxPQUFPO1lBQ05xRCxTQUFTRixLQUFLRSxPQUFPO1lBQ3JCTCxPQUFPRyxLQUFLSCxLQUFLO1lBQ2pCTyxVQUFVOUMsTUFBTThDLFFBQVE7WUFDeEJFLFVBQVVoRCxNQUFNZ0QsUUFBUTtRQUN6QjtJQUNELEVBQUUsT0FBT3ZDLEtBQUs7UUFDYixJQUFJLENBQUMyQix5QkFBeUIzQixNQUFNLE1BQU1BO1FBRTFDLE1BQU1ZLFdBQVd4RCxnQkFBZ0JtQyxNQUFNdUMsS0FBSztRQUM1QyxJQUFJLENBQUNsQixVQUFVO1lBQ2QsTUFBTSxJQUFJNUMsTUFDVCxDQUFDLDhCQUE4QixFQUFFdUIsTUFBTXVDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQztRQUV2RjtRQUVBakUsbUJBQW1CK0MsU0FBU3VCLE9BQU8sRUFBRTVDLE1BQU04QyxRQUFRO1FBQ25ELE9BQU87WUFDTkYsU0FBU3ZCLFNBQVN1QixPQUFPO1lBQ3pCTCxPQUFPbEIsU0FBU2tCLEtBQUs7WUFDckJPLFVBQVU5QyxNQUFNOEMsUUFBUTtZQUN4QkUsVUFBVWhELE1BQU1nRCxRQUFRO1FBQ3pCO0lBQ0Q7QUFDRCJ9
406
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2F1dGgwLWNsaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjRmlsZVN5bmMsIHNwYXduU3luYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbi8qKiBNYW5hZ2VtZW50IEFQSSBzY29wZXMgbmVlZGVkIGZvciBBUEksIFNQQSwgY29ubmVjdGlvbnMsIGFuZCBhZG1pbiB1c2Vycy4gKi9cbmNvbnN0IFJFUVVJUkVEX1NDT1BFUyA9IFtcblx0XCJjcmVhdGU6Y2xpZW50c1wiLFxuXHRcInJlYWQ6Y2xpZW50c1wiLFxuXHRcInVwZGF0ZTpjbGllbnRzXCIsXG5cdFwiY3JlYXRlOnJlc291cmNlX3NlcnZlcnNcIixcblx0XCJyZWFkOnJlc291cmNlX3NlcnZlcnNcIixcblx0XCJ1cGRhdGU6cmVzb3VyY2Vfc2VydmVyc1wiLFxuXHRcInJlYWQ6Y29ubmVjdGlvbnNcIixcblx0XCJ1cGRhdGU6Y29ubmVjdGlvbnNcIixcblx0XCJjcmVhdGU6dXNlcnNcIixcblx0XCJyZWFkOnVzZXJzXCIsXG5cdFwidXBkYXRlOnVzZXJzXCIsXG5dLmpvaW4oXCIsXCIpO1xuXG4vKiogSGFyZCB0aW1lb3V0IGZvciBhbnkgTWFuYWdlbWVudCBBUEkgY2FsbC4gUHJldmVudHMgaW5kZWZpbml0ZSBoYW5ncyBvbiB0b2tlbiByZS1hdXRoLiAqL1xuY29uc3QgQVBJX1RJTUVPVVRfTVMgPSA4XzAwMDtcblxuLyoqIERlZmF1bHQgQVBJIHNjb3BlcyBtYXRjaGluZyBIZWxsbyBDQVNMIEF1dGhvcml6ZSBkZWNvcmF0b3JzLiAqL1xuZXhwb3J0IGNvbnN0IEhFTExPX0FQSV9TQ09QRVMgPSBbXG5cdFwicmVhZDpIZWxsb1wiLFxuXHRcImNyZWF0ZTpIZWxsb1wiLFxuXHRcInVwZGF0ZTpIZWxsb1wiLFxuXHRcImRlbGV0ZTpIZWxsb1wiLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IERCX0NPTk5FQ1RJT05fTkFNRSA9IFwiVXNlcm5hbWUtUGFzc3dvcmQtQXV0aGVudGljYXRpb25cIjtcblxuZXhwb3J0IGNsYXNzIEF1dGgwQXV0aEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobWVzc2FnZSk7XG5cdFx0dGhpcy5uYW1lID0gXCJBdXRoMEF1dGhFcnJvclwiO1xuXHR9XG59XG5cbi8qKiBSZXR1cm5zIHRydWUgaWYgYW4gZXJyb3Igb3Igc3RkZXJyIG91dHB1dCBsb29rcyBsaWtlIGFuIGV4cGlyZWQvbWlzc2luZyB0b2tlbi4gKi9cbmZ1bmN0aW9uIGlzQXV0aEVycm9yKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gKFxuXHRcdHRleHQuaW5jbHVkZXMoXCJyZW5ldyBhY2Nlc3MgdG9rZW5cIikgfHxcblx0XHR0ZXh0LmluY2x1ZGVzKFwibG9nIGluXCIpIHx8XG5cdFx0dGV4dC5pbmNsdWRlcyhcIlVuYXV0aG9yaXplZFwiKVxuXHQpO1xufVxuXG4vKiogU3RyaXAgQXV0aDAgQ0xJIGJhbm5lciBsaW5lcyBiZWZvcmUgSlNPTi4gKi9cbmZ1bmN0aW9uIHBhcnNlSnNvbk91dHB1dDxUPihzdGRvdXQ6IHN0cmluZyk6IFQge1xuXHRjb25zdCBzdGFydCA9IHN0ZG91dC5pbmRleE9mKFwie1wiKTtcblx0Y29uc3QgYXJyYXlTdGFydCA9IHN0ZG91dC5pbmRleE9mKFwiW1wiKTtcblx0bGV0IGlkeCA9IC0xO1xuXHRpZiAoc3RhcnQgPT09IC0xKSBpZHggPSBhcnJheVN0YXJ0O1xuXHRlbHNlIGlmIChhcnJheVN0YXJ0ID09PSAtMSkgaWR4ID0gc3RhcnQ7XG5cdGVsc2UgaWR4ID0gTWF0aC5taW4oc3RhcnQsIGFycmF5U3RhcnQpO1xuXHRpZiAoaWR4IDwgMCkgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBKU09OIGZyb20gYXV0aDAgQ0xJLCBnb3Q6ICR7c3Rkb3V0LnNsaWNlKDAsIDIwMCl9YCk7XG5cdHJldHVybiBKU09OLnBhcnNlKHN0ZG91dC5zbGljZShpZHgpKSBhcyBUO1xufVxuXG4vKiogUnVuIGFuIGF1dGgwIENMSSBjb21tYW5kIHdpdGggYSBoYXJkIHRpbWVvdXQuIFJldHVybnMgc3Rkb3V0IG9uIHN1Y2Nlc3MsIHRocm93cyBvbiBmYWlsdXJlLiAqL1xuZnVuY3Rpb24gcnVuQXV0aDAoYXJnczogc3RyaW5nW10pOiBzdHJpbmcge1xuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXCJhdXRoMFwiLCBhcmdzLCB7XG5cdFx0ZW5jb2Rpbmc6IFwidXRmOFwiLFxuXHRcdHRpbWVvdXQ6IEFQSV9USU1FT1VUX01TLFxuXHRcdGlucHV0OiBcIlwiLFxuXHRcdHN0ZGlvOiBcInBpcGVcIixcblx0fSk7XG5cblx0aWYgKHJlc3VsdC5lcnJvcikge1xuXHRcdGNvbnN0IG1zZyA9IHJlc3VsdC5lcnJvci5tZXNzYWdlO1xuXHRcdGlmIChpc0F1dGhFcnJvcihtc2cpIHx8IChyZXN1bHQuZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlID09PSBcIkVUSU1FRE9VVFwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgQXV0aDBBdXRoRXJyb3IobXNnKTtcblx0XHR9XG5cdFx0dGhyb3cgcmVzdWx0LmVycm9yO1xuXHR9XG5cblx0aWYgKHJlc3VsdC5zdGF0dXMgIT09IDApIHtcblx0XHRjb25zdCBzdGRlcnIgPSByZXN1bHQuc3RkZXJyID8/IFwiXCI7XG5cdFx0aWYgKGlzQXV0aEVycm9yKHN0ZGVycikpIHRocm93IG5ldyBBdXRoMEF1dGhFcnJvcihzdGRlcnIpO1xuXHRcdHRocm93IG5ldyBFcnJvcihzdGRlcnIgfHwgYGF1dGgwIGV4aXRlZCB3aXRoIGNvZGUgJHtyZXN1bHQuc3RhdHVzfWApO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdC5zdGRvdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aDBUZW5hbnQge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGFjdGl2ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0luc3RhbGxlZCgpOiBib29sZWFuIHtcblx0dHJ5IHtcblx0XHRleGVjRmlsZVN5bmMoXCJhdXRoMFwiLCBbXCItLXZlcnNpb25cIl0sIHsgc3RkaW86IFwicGlwZVwiIH0pO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RUZW5hbnRzKCk6IEF1dGgwVGVuYW50W10ge1xuXHR0cnkge1xuXHRcdGNvbnN0IG91dCA9IGV4ZWNGaWxlU3luYyhcImF1dGgwXCIsIFtcInRlbmFudHNcIiwgXCJsaXN0XCIsIFwiLS1qc29uXCJdLCB7XG5cdFx0XHRlbmNvZGluZzogXCJ1dGY4XCIsXG5cdFx0XHRzdGRpbzogXCJwaXBlXCIsXG5cdFx0fSk7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2Uob3V0KSBhcyBBdXRoMFRlbmFudFtdO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ2luKCk6IGJvb2xlYW4ge1xuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXCJhdXRoMFwiLCBbXCJsb2dpblwiLCBcIi0tc2NvcGVzXCIsIFJFUVVJUkVEX1NDT1BFU10sIHtcblx0XHRzdGRpbzogXCJpbmhlcml0XCIsXG5cdH0pO1xuXHRyZXR1cm4gcmVzdWx0LnN0YXR1cyA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RBcGlzKCk6IEFycmF5PHsgaWRlbnRpZmllcjogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfT4ge1xuXHR0cnkge1xuXHRcdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcImFwaXNcIiwgXCJsaXN0XCIsIFwiLS1qc29uXCIsIFwiLS1uby1pbnB1dFwiXSk7XG5cdFx0cmV0dXJuIHBhcnNlSnNvbk91dHB1dChvdXQpO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRpZiAoZXJyIGluc3RhbmNlb2YgQXV0aDBBdXRoRXJyb3IpIHRocm93IGVycjtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFwaShcblx0bmFtZTogc3RyaW5nLFxuXHRpZGVudGlmaWVyOiBzdHJpbmcsXG5cdHNjb3BlczogcmVhZG9ubHkgc3RyaW5nW10gPSBIRUxMT19BUElfU0NPUEVTLFxuKTogeyBpZGVudGlmaWVyOiBzdHJpbmcgfSB7XG5cdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwaXNcIixcblx0XHRcImNyZWF0ZVwiLFxuXHRcdFwiLS1uYW1lXCIsXG5cdFx0bmFtZSxcblx0XHRcIi0taWRlbnRpZmllclwiLFxuXHRcdGlkZW50aWZpZXIsXG5cdFx0XCItLXNjb3Blc1wiLFxuXHRcdHNjb3Blcy5qb2luKFwiLFwiKSxcblx0XHQvLyBSQkFDOiBvbmx5IHBlcm1pc3Npb25zIGFzc2lnbmVkIHRvIHRoZSB1c2VyL3JvbGUgYXBwZWFyIG9uIHRoZSB0b2tlbi5cblx0XHRcIi0tZW5mb3JjZS1wb2xpY2llc1wiLFxuXHRcdC8vIEluY2x1ZGUgQXV0aDAgYHBlcm1pc3Npb25zW11gIGNsYWltIChjb25zdW1lZCBieSBzYW1wbGUgcHJpbmNpcGFsTWFwcGVyKS5cblx0XHRcIi0tdG9rZW4tZGlhbGVjdFwiLFxuXHRcdFwiYWNjZXNzX3Rva2VuX2F1dGh6XCIsXG5cdFx0XCItLWpzb25cIixcblx0XHRcIi0tbm8taW5wdXRcIixcblx0XSk7XG5cdHJldHVybiBwYXJzZUpzb25PdXRwdXQob3V0KTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGFuIEFQSSdzIHNjb3BlcyBhbmQgZW5hYmxlIFJCQUMgcG9saWN5IGVuZm9yY2VtZW50LlxuICogQXV0aDAgQ0xJIGAtLXNjb3Blc2AgcmVwbGFjZXMgdGhlIGZ1bGwgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlQXBpU2NvcGVzKFxuXHRpZGVudGlmaWVyOiBzdHJpbmcsXG5cdHNjb3BlczogcmVhZG9ubHkgc3RyaW5nW10gPSBIRUxMT19BUElfU0NPUEVTLFxuKTogdm9pZCB7XG5cdHJ1bkF1dGgwKFtcblx0XHRcImFwaXNcIixcblx0XHRcInVwZGF0ZVwiLFxuXHRcdGlkZW50aWZpZXIsXG5cdFx0XCItLXNjb3Blc1wiLFxuXHRcdHNjb3Blcy5qb2luKFwiLFwiKSxcblx0XHRcIi0tZW5mb3JjZS1wb2xpY2llc1wiLFxuXHRcdFwiLS10b2tlbi1kaWFsZWN0XCIsXG5cdFx0XCJhY2Nlc3NfdG9rZW5fYXV0aHpcIixcblx0XHRcIi0tbm8taW5wdXRcIixcblx0XSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTcGFBcHAoXG5cdG5hbWU6IHN0cmluZyxcblx0Y2FsbGJhY2tVcmxzOiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSxcbik6IHsgY2xpZW50X2lkOiBzdHJpbmcgfSB7XG5cdGNvbnN0IGNhbGxiYWNrcyA9IHR5cGVvZiBjYWxsYmFja1VybHMgPT09IFwic3RyaW5nXCIgPyBjYWxsYmFja1VybHMgOiBjYWxsYmFja1VybHMuam9pbihcIixcIik7XG5cdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwcHNcIixcblx0XHRcImNyZWF0ZVwiLFxuXHRcdFwiLS1uYW1lXCIsXG5cdFx0bmFtZSxcblx0XHRcIi0tdHlwZVwiLFxuXHRcdFwic3BhXCIsXG5cdFx0XCItLWNhbGxiYWNrc1wiLFxuXHRcdGNhbGxiYWNrcyxcblx0XHRcIi0tanNvblwiLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcblx0Y29uc3QgYXBwID0gcGFyc2VKc29uT3V0cHV0PHsgY2xpZW50X2lkPzogc3RyaW5nOyBjbGllbnRJZD86IHN0cmluZyB9PihvdXQpO1xuXHRjb25zdCBjbGllbnRJZCA9IGFwcC5jbGllbnRfaWQgPz8gYXBwLmNsaWVudElkO1xuXHRpZiAoIWNsaWVudElkKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0YEF1dGgwIGNyZWF0ZSBTUEEgcmVzcG9uc2UgbWlzc2luZyBjbGllbnRfaWQuIHN0ZG91dDogJHtvdXQuc2xpY2UoMCwgMzAwKX1gLFxuXHRcdCk7XG5cdH1cblx0cmV0dXJuIHsgY2xpZW50X2lkOiBjbGllbnRJZCB9O1xufVxuXG5leHBvcnQgdHlwZSBBdXRoMEFwcCA9IHsgY2xpZW50X2lkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gbGlzdEFwcHMoKTogQXV0aDBBcHBbXSB7XG5cdHRyeSB7XG5cdFx0Y29uc3Qgb3V0ID0gcnVuQXV0aDAoW1wiYXBwc1wiLCBcImxpc3RcIiwgXCItLWpzb25cIiwgXCItLW5vLWlucHV0XCJdKTtcblx0XHRjb25zdCBhcHBzID1cblx0XHRcdHBhcnNlSnNvbk91dHB1dDxBcnJheTx7IGNsaWVudF9pZD86IHN0cmluZzsgY2xpZW50SWQ/OiBzdHJpbmc7IG5hbWU/OiBzdHJpbmcgfT4+KG91dCk7XG5cdFx0cmV0dXJuIGFwcHNcblx0XHRcdC5tYXAoKGEpID0+ICh7XG5cdFx0XHRcdGNsaWVudF9pZDogYS5jbGllbnRfaWQgPz8gYS5jbGllbnRJZCA/PyBcIlwiLFxuXHRcdFx0XHRuYW1lOiBhLm5hbWUgPz8gXCJcIixcblx0XHRcdH0pKVxuXHRcdFx0LmZpbHRlcigoYSkgPT4gYS5jbGllbnRfaWQgJiYgYS5uYW1lKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVyciBpbnN0YW5jZW9mIEF1dGgwQXV0aEVycm9yKSB0aHJvdyBlcnI7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTcGFDYWxsYmFja3MoXG5cdGNsaWVudElkOiBzdHJpbmcsXG5cdGNhbGxiYWNrVXJsczogc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW10sXG4pOiB2b2lkIHtcblx0Y29uc3QgY2FsbGJhY2tzID0gdHlwZW9mIGNhbGxiYWNrVXJscyA9PT0gXCJzdHJpbmdcIiA/IGNhbGxiYWNrVXJscyA6IGNhbGxiYWNrVXJscy5qb2luKFwiLFwiKTtcblx0cnVuQXV0aDAoW1wiYXBwc1wiLCBcInVwZGF0ZVwiLCBjbGllbnRJZCwgXCItLWNhbGxiYWNrc1wiLCBjYWxsYmFja3MsIFwiLS1uby1pbnB1dFwiXSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgUG9zdG1hbiBTUEEsIG9yIHJldXNlIGFuIGV4aXN0aW5nIGFwcCB3aXRoIHRoZSBzYW1lIG5hbWUgKHJlLXNjYWZmb2xkKS5cbiAqIEFsd2F5cyByZXR1cm5zIGEgY2xpZW50X2lkIHN1aXRhYmxlIGZvciBQb3N0bWFuIGF1dGgwQ2xpZW50SWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTcGFBcHAoXG5cdG5hbWU6IHN0cmluZyxcblx0Y2FsbGJhY2tVcmxzOiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSxcbik6IHsgY2xpZW50X2lkOiBzdHJpbmc7IHJldXNlZDogYm9vbGVhbiB9IHtcblx0Y29uc3QgZXhpc3RpbmcgPSBsaXN0QXBwcygpLmZpbmQoKGEpID0+IGEubmFtZSA9PT0gbmFtZSk7XG5cdGlmIChleGlzdGluZykge1xuXHRcdHRyeSB7XG5cdFx0XHR1cGRhdGVTcGFDYWxsYmFja3MoZXhpc3RpbmcuY2xpZW50X2lkLCBjYWxsYmFja1VybHMpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0Ly8gQ2FsbGJhY2tzIG1heSBhbHJlYWR5IG1hdGNoOyBzdGlsbCB1c2FibGUgZm9yIFBvc3RtYW4uXG5cdFx0fVxuXHRcdHJldHVybiB7IGNsaWVudF9pZDogZXhpc3RpbmcuY2xpZW50X2lkLCByZXVzZWQ6IHRydWUgfTtcblx0fVxuXHRyZXR1cm4geyAuLi5jcmVhdGVTcGFBcHAobmFtZSwgY2FsbGJhY2tVcmxzKSwgcmV1c2VkOiBmYWxzZSB9O1xufVxuXG50eXBlIEF1dGgwQ29ubmVjdGlvbiA9IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBzdHJhdGVneTogc3RyaW5nIH07XG5cbi8qKiBFbmFibGUgYSBkYXRhYmFzZSBjb25uZWN0aW9uIGZvciBhbiBhcHBsaWNhdGlvbiAocmVxdWlyZWQgZm9yIHVzZXJuYW1lL3Bhc3N3b3JkIGxvZ2luKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVDb25uZWN0aW9uRm9yQ2xpZW50KGNvbm5lY3Rpb25OYW1lOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpOiB2b2lkIHtcblx0Y29uc3QgbGlzdE91dCA9IHJ1bkF1dGgwKFtcImFwaVwiLCBcImdldFwiLCBcImNvbm5lY3Rpb25zXCIsIFwiLS1uby1pbnB1dFwiXSk7XG5cdGNvbnN0IGNvbm5lY3Rpb25zID0gcGFyc2VKc29uT3V0cHV0PEF1dGgwQ29ubmVjdGlvbltdPihsaXN0T3V0KTtcblx0Y29uc3QgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb25zLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gY29ubmVjdGlvbk5hbWUpO1xuXHRpZiAoIWNvbm5lY3Rpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEF1dGgwIGNvbm5lY3Rpb24gbm90IGZvdW5kOiAke2Nvbm5lY3Rpb25OYW1lfWApO1xuXHR9XG5cblx0Y29uc3QgY2xpZW50c091dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwaVwiLFxuXHRcdFwiZ2V0XCIsXG5cdFx0YGNvbm5lY3Rpb25zLyR7Y29ubmVjdGlvbi5pZH0vY2xpZW50c2AsXG5cdFx0XCItLW5vLWlucHV0XCIsXG5cdF0pO1xuXHRjb25zdCB7IGNsaWVudHMgfSA9IHBhcnNlSnNvbk91dHB1dDx7IGNsaWVudHM6IEFycmF5PHsgY2xpZW50X2lkOiBzdHJpbmcgfT4gfT4oY2xpZW50c091dCk7XG5cdGlmIChjbGllbnRzLnNvbWUoKGMpID0+IGMuY2xpZW50X2lkID09PSBjbGllbnRJZCkpIHJldHVybjtcblxuXHQvLyBEZWRpY2F0ZWQgZW5hYmxlZC1jbGllbnRzIGVuZHBvaW50IChlbmFibGVkX2NsaWVudHMgb24gY29ubmVjdGlvbiBQQVRDSCBpcyBkZXByZWNhdGVkKS5cblx0cnVuQXV0aDAoW1xuXHRcdFwiYXBpXCIsXG5cdFx0XCJwYXRjaFwiLFxuXHRcdGBjb25uZWN0aW9ucy8ke2Nvbm5lY3Rpb24uaWR9L2NsaWVudHNgLFxuXHRcdFwiLS1kYXRhXCIsXG5cdFx0SlNPTi5zdHJpbmdpZnkoW3sgY2xpZW50X2lkOiBjbGllbnRJZCwgc3RhdHVzOiB0cnVlIH1dKSxcblx0XHRcIi0tbm8taW5wdXRcIixcblx0XSk7XG59XG5cbmV4cG9ydCB0eXBlIEFkbWluRGF0YWJhc2VVc2VyID0ge1xuXHR1c2VyX2lkOiBzdHJpbmc7XG5cdGVtYWlsOiBzdHJpbmc7XG5cdHBhc3N3b3JkOiBzdHJpbmc7XG5cdHVzZXJuYW1lOiBzdHJpbmc7XG59O1xuXG4vKiogU3Ryb25nIGRlZmF1bHQgcGFzc3dvcmQgd2hlbiB0aGUgc2NhZmZvbGRlciBjYWxsZXIgbGVhdmVzIHBhc3N3b3JkIGJsYW5rLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQWRtaW5QYXNzd29yZCgpOiBzdHJpbmcge1xuXHRyZXR1cm4gYCR7cmFuZG9tQnl0ZXMoMTIpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpfWFBMSFgO1xufVxuXG5mdW5jdGlvbiBpc1VzZXJBbHJlYWR5RXhpc3RzRXJyb3IoZXJyOiB1bmtub3duKTogYm9vbGVhbiB7XG5cdGNvbnN0IHRleHQgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cdHJldHVybiAvYWxyZWFkeSBleGlzdHN8dXNlciBleGlzdHN8Q29uZmxpY3R8NDA5L2kudGVzdCh0ZXh0KTtcbn1cblxuLyoqIExvb2sgdXAgYSB1c2VyIGJ5IGVtYWlsIChNYW5hZ2VtZW50IEFQSSB1c2Vycy1ieS1lbWFpbCkuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFVzZXJCeUVtYWlsKGVtYWlsOiBzdHJpbmcpOiB7IHVzZXJfaWQ6IHN0cmluZzsgZW1haWw6IHN0cmluZyB9IHwgbnVsbCB7XG5cdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwaVwiLFxuXHRcdFwiZ2V0XCIsXG5cdFx0YHVzZXJzLWJ5LWVtYWlsP2VtYWlsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGVtYWlsKX1gLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcblx0Y29uc3QgdXNlcnMgPSBwYXJzZUpzb25PdXRwdXQ8QXJyYXk8eyB1c2VyX2lkPzogc3RyaW5nOyBlbWFpbD86IHN0cmluZyB9Pj4ob3V0KTtcblx0Y29uc3QgdXNlciA9IHVzZXJzLmZpbmQoKHUpID0+IHUudXNlcl9pZCAmJiB1LmVtYWlsKTtcblx0aWYgKCF1c2VyPy51c2VyX2lkIHx8ICF1c2VyLmVtYWlsKSByZXR1cm4gbnVsbDtcblx0cmV0dXJuIHsgdXNlcl9pZDogdXNlci51c2VyX2lkLCBlbWFpbDogdXNlci5lbWFpbCB9O1xufVxuXG4vKiogUmVzZXQgcGFzc3dvcmQgc28gYSByZS1zY2FmZm9sZCBjYW4gd3JpdGUgYSBrbm93biBwYXNzd29yZCB0byAuZW52LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVVzZXJQYXNzd29yZCh1c2VySWQ6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IHZvaWQge1xuXHRydW5BdXRoMChbXG5cdFx0XCJhcGlcIixcblx0XHRcInBhdGNoXCIsXG5cdFx0YHVzZXJzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJJZCl9YCxcblx0XHRcIi0tZGF0YVwiLFxuXHRcdEpTT04uc3RyaW5naWZ5KHsgcGFzc3dvcmQsIGNvbm5lY3Rpb246IERCX0NPTk5FQ1RJT05fTkFNRSB9KSxcblx0XHRcIi0tbm8taW5wdXRcIixcblx0XSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgREIgY29ubmVjdGlvbiByb290LWFkbWluIHVzZXIgZm9yIGxvY2FsIC8gUG9zdG1hbiBsb2dpbi5cbiAqIElmIHRoZSB1c2VyIGFscmVhZHkgZXhpc3RzLCBsb29rIHRoZW0gdXAsIHJlc2V0IHBhc3N3b3JkIHRvIGBpbnB1dC5wYXNzd29yZGAsXG4gKiBhbmQgcmV0dXJuIHRoYXQgaWRlbnRpdHkgc28gY2FsbGVycyBjYW4gc3RpbGwgd3JpdGUgLmVudiBjcmVkZW50aWFscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkbWluRGF0YWJhc2VVc2VyKGlucHV0OiB7XG5cdGVtYWlsOiBzdHJpbmc7XG5cdHBhc3N3b3JkOiBzdHJpbmc7XG5cdHVzZXJuYW1lOiBzdHJpbmc7XG59KTogQWRtaW5EYXRhYmFzZVVzZXIge1xuXHRjb25zdCBib2R5ID0ge1xuXHRcdGVtYWlsOiBpbnB1dC5lbWFpbCxcblx0XHRjb25uZWN0aW9uOiBEQl9DT05ORUNUSU9OX05BTUUsXG5cdFx0cGFzc3dvcmQ6IGlucHV0LnBhc3N3b3JkLFxuXHRcdG5hbWU6IGlucHV0LnVzZXJuYW1lLFxuXHRcdGVtYWlsX3ZlcmlmaWVkOiB0cnVlLFxuXHRcdHZlcmlmeV9lbWFpbDogZmFsc2UsXG5cdFx0YXBwX21ldGFkYXRhOiB7IHJvbGVzOiBbXCJhZG1pblwiXSB9LFxuXHR9O1xuXG5cdHRyeSB7XG5cdFx0Y29uc3Qgb3V0ID0gcnVuQXV0aDAoW1xuXHRcdFx0XCJhcGlcIixcblx0XHRcdFwicG9zdFwiLFxuXHRcdFx0XCJ1c2Vyc1wiLFxuXHRcdFx0XCItLWRhdGFcIixcblx0XHRcdEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuXHRcdFx0XCItLW5vLWlucHV0XCIsXG5cdFx0XSk7XG5cdFx0Y29uc3QgdXNlciA9IHBhcnNlSnNvbk91dHB1dDx7IHVzZXJfaWQ/OiBzdHJpbmc7IGVtYWlsPzogc3RyaW5nIH0+KG91dCk7XG5cdFx0aWYgKCF1c2VyLnVzZXJfaWQgfHwgIXVzZXIuZW1haWwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YEF1dGgwIGNyZWF0ZSB1c2VyIHJlc3BvbnNlIG1pc3NpbmcgdXNlcl9pZC9lbWFpbC4gc3Rkb3V0OiAke291dC5zbGljZSgwLCAzMDApfWAsXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0dXNlcl9pZDogdXNlci51c2VyX2lkLFxuXHRcdFx0ZW1haWw6IHVzZXIuZW1haWwsXG5cdFx0XHRwYXNzd29yZDogaW5wdXQucGFzc3dvcmQsXG5cdFx0XHR1c2VybmFtZTogaW5wdXQudXNlcm5hbWUsXG5cdFx0fTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKCFpc1VzZXJBbHJlYWR5RXhpc3RzRXJyb3IoZXJyKSkgdGhyb3cgZXJyO1xuXG5cdFx0Y29uc3QgZXhpc3RpbmcgPSBmaW5kVXNlckJ5RW1haWwoaW5wdXQuZW1haWwpO1xuXHRcdGlmICghZXhpc3RpbmcpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YEF1dGgwIHVzZXIgYWxyZWFkeSBleGlzdHMgZm9yICR7aW5wdXQuZW1haWx9LCBidXQgbG9va3VwIGJ5IGVtYWlsIHJldHVybmVkIG5vIHVzZXIuYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dXBkYXRlVXNlclBhc3N3b3JkKGV4aXN0aW5nLnVzZXJfaWQsIGlucHV0LnBhc3N3b3JkKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dXNlcl9pZDogZXhpc3RpbmcudXNlcl9pZCxcblx0XHRcdGVtYWlsOiBleGlzdGluZy5lbWFpbCxcblx0XHRcdHBhc3N3b3JkOiBpbnB1dC5wYXNzd29yZCxcblx0XHRcdHVzZXJuYW1lOiBpbnB1dC51c2VybmFtZSxcblx0XHR9O1xuXHR9XG59XG5cbmV4cG9ydCB7IFJFUVVJUkVEX1NDT1BFUyB9O1xuIl0sIm5hbWVzIjpbIkF1dGgwQXV0aEVycm9yIiwiREJfQ09OTkVDVElPTl9OQU1FIiwiSEVMTE9fQVBJX1NDT1BFUyIsIlJFUVVJUkVEX1NDT1BFUyIsImNyZWF0ZUFkbWluRGF0YWJhc2VVc2VyIiwiY3JlYXRlQXBpIiwiY3JlYXRlU3BhQXBwIiwiZW5hYmxlQ29ubmVjdGlvbkZvckNsaWVudCIsImVuc3VyZVNwYUFwcCIsImZpbmRVc2VyQnlFbWFpbCIsImdlbmVyYXRlQWRtaW5QYXNzd29yZCIsImlzSW5zdGFsbGVkIiwibGlzdEFwaXMiLCJsaXN0QXBwcyIsImxpc3RUZW5hbnRzIiwibG9naW4iLCJ1cGRhdGVBcGlTY29wZXMiLCJ1cGRhdGVTcGFDYWxsYmFja3MiLCJ1cGRhdGVVc2VyUGFzc3dvcmQiLCJqb2luIiwiQVBJX1RJTUVPVVRfTVMiLCJFcnJvciIsIm1lc3NhZ2UiLCJuYW1lIiwiaXNBdXRoRXJyb3IiLCJ0ZXh0IiwiaW5jbHVkZXMiLCJwYXJzZUpzb25PdXRwdXQiLCJzdGRvdXQiLCJzdGFydCIsImluZGV4T2YiLCJhcnJheVN0YXJ0IiwiaWR4IiwiTWF0aCIsIm1pbiIsInNsaWNlIiwiSlNPTiIsInBhcnNlIiwicnVuQXV0aDAiLCJhcmdzIiwicmVzdWx0Iiwic3Bhd25TeW5jIiwiZW5jb2RpbmciLCJ0aW1lb3V0IiwiaW5wdXQiLCJzdGRpbyIsImVycm9yIiwibXNnIiwiY29kZSIsInN0YXR1cyIsInN0ZGVyciIsImV4ZWNGaWxlU3luYyIsIm91dCIsImVyciIsImlkZW50aWZpZXIiLCJzY29wZXMiLCJjYWxsYmFja1VybHMiLCJjYWxsYmFja3MiLCJhcHAiLCJjbGllbnRJZCIsImNsaWVudF9pZCIsImFwcHMiLCJtYXAiLCJhIiwiZmlsdGVyIiwiZXhpc3RpbmciLCJmaW5kIiwicmV1c2VkIiwiY29ubmVjdGlvbk5hbWUiLCJsaXN0T3V0IiwiY29ubmVjdGlvbnMiLCJjb25uZWN0aW9uIiwiYyIsImNsaWVudHNPdXQiLCJpZCIsImNsaWVudHMiLCJzb21lIiwic3RyaW5naWZ5IiwicmFuZG9tQnl0ZXMiLCJ0b1N0cmluZyIsImlzVXNlckFscmVhZHlFeGlzdHNFcnJvciIsIlN0cmluZyIsInRlc3QiLCJlbWFpbCIsImVuY29kZVVSSUNvbXBvbmVudCIsInVzZXJzIiwidXNlciIsInUiLCJ1c2VyX2lkIiwidXNlcklkIiwicGFzc3dvcmQiLCJib2R5IiwidXNlcm5hbWUiLCJlbWFpbF92ZXJpZmllZCIsInZlcmlmeV9lbWFpbCIsImFwcF9tZXRhZGF0YSIsInJvbGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7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
@@ -8,9 +8,22 @@ Object.defineProperty(exports, "FinalizeFeature", {
8
8
  return FinalizeFeature;
9
9
  }
10
10
  });
11
+ const _nodefs = require("node:fs");
12
+ const _nodepath = require("node:path");
11
13
  const _interop = require("@decohere/nexus/interop");
12
14
  const _prompt = require("../../domain/prompt.js");
15
+ const _const = require("../../models/const.js");
13
16
  const _biomeformat = require("./biome-format.js");
17
+ function readExistingEnvValue(workspace, key) {
18
+ try {
19
+ const raw = (0, _nodefs.readFileSync)((0, _nodepath.join)(workspace.targetDir, ".env"), "utf8");
20
+ const line = raw.split("\n").find((l)=>l.startsWith(`${key}=`));
21
+ const value = line?.slice(key.length + 1).trim();
22
+ return value || undefined;
23
+ } catch {
24
+ return undefined;
25
+ }
26
+ }
14
27
  // State resolved during scaffold(), consumed by finalize().
15
28
  let _pm = null;
16
29
  let _shouldInstall = true;
@@ -21,6 +34,9 @@ async function getOptions(_workspace, cliOptions) {
21
34
  return {};
22
35
  }
23
36
  async function scaffold(workspace, options) {
37
+ // Local scaffold default — production deploys must set NODE_ENV explicitly.
38
+ const nodeEnv = readExistingEnvValue(workspace, "NODE_ENV") ?? "dev";
39
+ workspace.getModel(_const.WELL_KNOWN_FILES.ENV_FILE)?.addEntry("NODE_ENV", nodeEnv);
24
40
  if (process.env.DECOHERE_BUILDER === "1") {
25
41
  _shouldInstall = false;
26
42
  return;
@@ -60,4 +76,4 @@ const FinalizeFeature = {
60
76
  finalize
61
77
  };
62
78
 
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2ZpbmFsaXplLmZlYXR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYWNrYWdlTWFuYWdlciB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW50ZXJvcFwiO1xuaW1wb3J0IHsgZGV0ZWN0UGFja2FnZU1hbmFnZXIsIHByb21wdEZvclBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBhc2ssIGNsb3NlUHJvbXB0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9wcm9tcHQuanNcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlU2NhZmZvbGQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Byb2plY3QubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zY2FmZm9sZC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBmb3JtYXRTY2FmZm9sZGVkRmlsZXMgfSBmcm9tIFwiLi9iaW9tZS1mb3JtYXQuanNcIjtcblxuLy8gU3RhdGUgcmVzb2x2ZWQgZHVyaW5nIHNjYWZmb2xkKCksIGNvbnN1bWVkIGJ5IGZpbmFsaXplKCkuXG5sZXQgX3BtOiBQYWNrYWdlTWFuYWdlciB8IG51bGwgPSBudWxsO1xubGV0IF9zaG91bGRJbnN0YWxsID0gdHJ1ZTtcblxudHlwZSBGaW5hbGl6ZU9wdGlvbnMgPSB7XG5cdGluc3RhbGxEZXBlbmRlbmNpZXM/OiBcInllc1wiIHwgXCJub1wiO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3B0aW9ucyhcblx0X3dvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsXG5cdGNsaU9wdGlvbnM6IFBhcnRpYWw8RmluYWxpemVPcHRpb25zPixcbik6IFByb21pc2U8b2JqZWN0PiB7XG5cdGlmIChjbGlPcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgIT0gbnVsbCkge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gY2xpT3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzID09PSBcInllc1wiO1xuXHR9XG5cdHJldHVybiB7fTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhZmZvbGQoXG5cdHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsXG5cdG9wdGlvbnM6IEZpbmFsaXplT3B0aW9ucyxcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiA9PT0gXCIxXCIpIHtcblx0XHRfc2hvdWxkSW5zdGFsbCA9IGZhbHNlO1xuXHRcdHJldHVybjtcblx0fVxuXHRfcG0gPSBkZXRlY3RQYWNrYWdlTWFuYWdlcih3b3Jrc3BhY2UudGFyZ2V0RGlyKSA/PyAoYXdhaXQgcHJvbXB0Rm9yUGFja2FnZU1hbmFnZXIoKSk7XG5cdGlmIChvcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgIT0gbnVsbCkge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gb3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzID09PSBcInllc1wiO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGFuc3dlciA9IGF3YWl0IGFzayhcIlxcbkluc3RhbGwgZGVwZW5kZW5jaWVzIG5vdz8gW3llcy9ub10gKHllcyk6IFwiLCBcInllc1wiKTtcblx0X3Nob3VsZEluc3RhbGwgPSBhbnN3ZXIudG9Mb3dlckNhc2UoKSAhPT0gXCJub1wiO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5hbGl6ZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBfb3B0aW9uczogb2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG5cdC8vIExhc3Qgc2NhZmZvbGQgd3JpdGUgc3RlcDogbm9ybWFsaXplIGdlbmVyYXRlZCBzb3VyY2VzIGJlZm9yZSBpbnN0YWxsIC8gaGFuZG9mZi5cblx0Zm9ybWF0U2NhZmZvbGRlZEZpbGVzKHdvcmtzcGFjZS50YXJnZXREaXIpO1xuXG5cdGlmIChfc2hvdWxkSW5zdGFsbCkge1xuXHRcdGNvbnN0IHBtID0gX3BtITtcblx0XHRjb25zb2xlLmxvZyhgXFxuU2NhZmZvbGRlZCAke3dvcmtzcGFjZS5uYW1lfS4gSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi5cXG5gKTtcblx0XHRhd2FpdCBwbS5pbnN0YWxsKHsgY3dkOiB3b3Jrc3BhY2UudGFyZ2V0RGlyIH0pO1xuXHR9XG5cblx0Y29uc29sZS5sb2coYFxcbkRvbmUhICR7X3Nob3VsZEluc3RhbGwgPyBcIk5leHRcIiA6IFwiVG8gZ2V0IHN0YXJ0ZWQ6XCJ9IHN0ZXBzOlxcbmApO1xuXHRjb25zb2xlLmxvZyhgICBjZCAke3dvcmtzcGFjZS5uYW1lfWApO1xuXHRpZiAoIV9zaG91bGRJbnN0YWxsKSB7XG5cdFx0Y29uc3QgcG1OYW1lID0gX3BtPy5uYW1lID8/IFwicG5wbVwiO1xuXHRcdGNvbnNvbGUubG9nKGAgICR7cG1OYW1lfSBpbnN0YWxsYCk7XG5cdH1cblx0Y29uc29sZS5sb2coXCIgIGNvZGUgLiAgICAgICAgICMgb3BlbiBpbiBWUyBDb2RlXCIpO1xuXHRjb25zb2xlLmxvZyhcIiAgICAgICAgICAgICAgICAgIyB0aGVuOiBSZW9wZW4gaW4gQ29udGFpbmVyXFxuXCIpO1xuXG5cdC8vIERyb3AgcmVhZGxpbmUncyBzdGRpbiBob2xkIHNvIHRoZSBDTEkgLyBjb250YWluZXIgY2FuIGV4aXQuXG5cdGNsb3NlUHJvbXB0KCk7XG59XG5cbmV4cG9ydCBjb25zdCBGaW5hbGl6ZUZlYXR1cmU6IEZlYXR1cmUgPSB7IGdldE9wdGlvbnMsIHNjYWZmb2xkLCBmaW5hbGl6ZSB9O1xuIl0sIm5hbWVzIjpbIkZpbmFsaXplRmVhdHVyZSIsIl9wbSIsIl9zaG91bGRJbnN0YWxsIiwiZ2V0T3B0aW9ucyIsIl93b3Jrc3BhY2UiLCJjbGlPcHRpb25zIiwiaW5zdGFsbERlcGVuZGVuY2llcyIsInNjYWZmb2xkIiwid29ya3NwYWNlIiwib3B0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJERUNPSEVSRV9CVUlMREVSIiwiZGV0ZWN0UGFja2FnZU1hbmFnZXIiLCJ0YXJnZXREaXIiLCJwcm9tcHRGb3JQYWNrYWdlTWFuYWdlciIsImFuc3dlciIsImFzayIsInRvTG93ZXJDYXNlIiwiZmluYWxpemUiLCJfb3B0aW9ucyIsImZvcm1hdFNjYWZmb2xkZWRGaWxlcyIsInBtIiwiY29uc29sZSIsImxvZyIsIm5hbWUiLCJpbnN0YWxsIiwiY3dkIiwicG1OYW1lIiwiY2xvc2VQcm9tcHQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBa0VhQTs7O2VBQUFBOzs7eUJBakVpRDt3QkFDN0I7NkJBR0s7QUFFdEMsNERBQTREO0FBQzVELElBQUlDLE1BQTZCO0FBQ2pDLElBQUlDLGlCQUFpQjtBQU1yQixlQUFlQyxXQUNkQyxVQUE2QixFQUM3QkMsVUFBb0M7SUFFcEMsSUFBSUEsV0FBV0MsbUJBQW1CLElBQUksTUFBTTtRQUMzQ0osaUJBQWlCRyxXQUFXQyxtQkFBbUIsS0FBSztJQUNyRDtJQUNBLE9BQU8sQ0FBQztBQUNUO0FBRUEsZUFBZUMsU0FDZEMsU0FBNEIsRUFDNUJDLE9BQXdCO0lBRXhCLElBQUlDLFFBQVFDLEdBQUcsQ0FBQ0MsZ0JBQWdCLEtBQUssS0FBSztRQUN6Q1YsaUJBQWlCO1FBQ2pCO0lBQ0Q7SUFDQUQsTUFBTVksSUFBQUEsNkJBQW9CLEVBQUNMLFVBQVVNLFNBQVMsS0FBTSxNQUFNQyxJQUFBQSxnQ0FBdUI7SUFDakYsSUFBSU4sUUFBUUgsbUJBQW1CLElBQUksTUFBTTtRQUN4Q0osaUJBQWlCTyxRQUFRSCxtQkFBbUIsS0FBSztRQUNqRDtJQUNEO0lBRUEsTUFBTVUsU0FBUyxNQUFNQyxJQUFBQSxXQUFHLEVBQUMsZ0RBQWdEO0lBQ3pFZixpQkFBaUJjLE9BQU9FLFdBQVcsT0FBTztBQUMzQztBQUVBLGVBQWVDLFNBQVNYLFNBQTRCLEVBQUVZLFFBQWdCO0lBQ3JFLGtGQUFrRjtJQUNsRkMsSUFBQUEsa0NBQXFCLEVBQUNiLFVBQVVNLFNBQVM7SUFFekMsSUFBSVosZ0JBQWdCO1FBQ25CLE1BQU1vQixLQUFLckI7UUFDWHNCLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRWhCLFVBQVVpQixJQUFJLENBQUMsOEJBQThCLENBQUM7UUFDMUUsTUFBTUgsR0FBR0ksT0FBTyxDQUFDO1lBQUVDLEtBQUtuQixVQUFVTSxTQUFTO1FBQUM7SUFDN0M7SUFFQVMsUUFBUUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFdEIsaUJBQWlCLFNBQVMsa0JBQWtCLFNBQVMsQ0FBQztJQUM3RXFCLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRWhCLFVBQVVpQixJQUFJLEVBQUU7SUFDcEMsSUFBSSxDQUFDdkIsZ0JBQWdCO1FBQ3BCLE1BQU0wQixTQUFTM0IsS0FBS3dCLFFBQVE7UUFDNUJGLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRUksT0FBTyxRQUFRLENBQUM7SUFDbEM7SUFDQUwsUUFBUUMsR0FBRyxDQUFDO0lBQ1pELFFBQVFDLEdBQUcsQ0FBQztJQUVaLDhEQUE4RDtJQUM5REssSUFBQUEsbUJBQVc7QUFDWjtBQUVPLE1BQU03QixrQkFBMkI7SUFBRUc7SUFBWUk7SUFBVVk7QUFBUyJ9
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2ZpbmFsaXplLmZlYXR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBkZXRlY3RQYWNrYWdlTWFuYWdlciwgcHJvbXB0Rm9yUGFja2FnZU1hbmFnZXIgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2ludGVyb3BcIjtcbmltcG9ydCB7IGFzaywgY2xvc2VQcm9tcHQgfSBmcm9tIFwiLi4vLi4vZG9tYWluL3Byb21wdC5qc1wiO1xuaW1wb3J0IHsgV0VMTF9LTk9XTl9GSUxFUyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgRW52RmlsZSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZW52LWZpbGUubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlU2NhZmZvbGQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Byb2plY3QubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zY2FmZm9sZC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBmb3JtYXRTY2FmZm9sZGVkRmlsZXMgfSBmcm9tIFwiLi9iaW9tZS1mb3JtYXQuanNcIjtcblxuZnVuY3Rpb24gcmVhZEV4aXN0aW5nRW52VmFsdWUod29ya3NwYWNlOiBXb3Jrc3BhY2VTY2FmZm9sZCwga2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHR0cnkge1xuXHRcdGNvbnN0IHJhdyA9IHJlYWRGaWxlU3luYyhqb2luKHdvcmtzcGFjZS50YXJnZXREaXIsIFwiLmVudlwiKSwgXCJ1dGY4XCIpO1xuXHRcdGNvbnN0IGxpbmUgPSByYXcuc3BsaXQoXCJcXG5cIikuZmluZCgobCkgPT4gbC5zdGFydHNXaXRoKGAke2tleX09YCkpO1xuXHRcdGNvbnN0IHZhbHVlID0gbGluZT8uc2xpY2Uoa2V5Lmxlbmd0aCArIDEpLnRyaW0oKTtcblx0XHRyZXR1cm4gdmFsdWUgfHwgdW5kZWZpbmVkO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG59XG5cbi8vIFN0YXRlIHJlc29sdmVkIGR1cmluZyBzY2FmZm9sZCgpLCBjb25zdW1lZCBieSBmaW5hbGl6ZSgpLlxubGV0IF9wbTogUGFja2FnZU1hbmFnZXIgfCBudWxsID0gbnVsbDtcbmxldCBfc2hvdWxkSW5zdGFsbCA9IHRydWU7XG5cbnR5cGUgRmluYWxpemVPcHRpb25zID0ge1xuXHRpbnN0YWxsRGVwZW5kZW5jaWVzPzogXCJ5ZXNcIiB8IFwibm9cIjtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE9wdGlvbnMoXG5cdF93b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLFxuXHRjbGlPcHRpb25zOiBQYXJ0aWFsPEZpbmFsaXplT3B0aW9ucz4sXG4pOiBQcm9taXNlPG9iamVjdD4ge1xuXHRpZiAoY2xpT3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzICE9IG51bGwpIHtcblx0XHRfc2hvdWxkSW5zdGFsbCA9IGNsaU9wdGlvbnMuaW5zdGFsbERlcGVuZGVuY2llcyA9PT0gXCJ5ZXNcIjtcblx0fVxuXHRyZXR1cm4ge307XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYWZmb2xkKFxuXHR3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLFxuXHRvcHRpb25zOiBGaW5hbGl6ZU9wdGlvbnMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0Ly8gTG9jYWwgc2NhZmZvbGQgZGVmYXVsdCDigJQgcHJvZHVjdGlvbiBkZXBsb3lzIG11c3Qgc2V0IE5PREVfRU5WIGV4cGxpY2l0bHkuXG5cdGNvbnN0IG5vZGVFbnYgPSByZWFkRXhpc3RpbmdFbnZWYWx1ZSh3b3Jrc3BhY2UsIFwiTk9ERV9FTlZcIikgPz8gXCJkZXZcIjtcblx0d29ya3NwYWNlLmdldE1vZGVsPEVudkZpbGU+KFdFTExfS05PV05fRklMRVMuRU5WX0ZJTEUpPy5hZGRFbnRyeShcIk5PREVfRU5WXCIsIG5vZGVFbnYpO1xuXG5cdGlmIChwcm9jZXNzLmVudi5ERUNPSEVSRV9CVUlMREVSID09PSBcIjFcIikge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gZmFsc2U7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdF9wbSA9IGRldGVjdFBhY2thZ2VNYW5hZ2VyKHdvcmtzcGFjZS50YXJnZXREaXIpID8/IChhd2FpdCBwcm9tcHRGb3JQYWNrYWdlTWFuYWdlcigpKTtcblx0aWYgKG9wdGlvbnMuaW5zdGFsbERlcGVuZGVuY2llcyAhPSBudWxsKSB7XG5cdFx0X3Nob3VsZEluc3RhbGwgPSBvcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgPT09IFwieWVzXCI7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgYW5zd2VyID0gYXdhaXQgYXNrKFwiXFxuSW5zdGFsbCBkZXBlbmRlbmNpZXMgbm93PyBbeWVzL25vXSAoeWVzKTogXCIsIFwieWVzXCIpO1xuXHRfc2hvdWxkSW5zdGFsbCA9IGFuc3dlci50b0xvd2VyQ2FzZSgpICE9PSBcIm5vXCI7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbmFsaXplKHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsIF9vcHRpb25zOiBvYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcblx0Ly8gTGFzdCBzY2FmZm9sZCB3cml0ZSBzdGVwOiBub3JtYWxpemUgZ2VuZXJhdGVkIHNvdXJjZXMgYmVmb3JlIGluc3RhbGwgLyBoYW5kb2ZmLlxuXHRmb3JtYXRTY2FmZm9sZGVkRmlsZXMod29ya3NwYWNlLnRhcmdldERpcik7XG5cblx0aWYgKF9zaG91bGRJbnN0YWxsKSB7XG5cdFx0Y29uc3QgcG0gPSBfcG0hO1xuXHRcdGNvbnNvbGUubG9nKGBcXG5TY2FmZm9sZGVkICR7d29ya3NwYWNlLm5hbWV9LiBJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLlxcbmApO1xuXHRcdGF3YWl0IHBtLmluc3RhbGwoeyBjd2Q6IHdvcmtzcGFjZS50YXJnZXREaXIgfSk7XG5cdH1cblxuXHRjb25zb2xlLmxvZyhgXFxuRG9uZSEgJHtfc2hvdWxkSW5zdGFsbCA/IFwiTmV4dFwiIDogXCJUbyBnZXQgc3RhcnRlZDpcIn0gc3RlcHM6XFxuYCk7XG5cdGNvbnNvbGUubG9nKGAgIGNkICR7d29ya3NwYWNlLm5hbWV9YCk7XG5cdGlmICghX3Nob3VsZEluc3RhbGwpIHtcblx0XHRjb25zdCBwbU5hbWUgPSBfcG0/Lm5hbWUgPz8gXCJwbnBtXCI7XG5cdFx0Y29uc29sZS5sb2coYCAgJHtwbU5hbWV9IGluc3RhbGxgKTtcblx0fVxuXHRjb25zb2xlLmxvZyhcIiAgY29kZSAuICAgICAgICAgIyBvcGVuIGluIFZTIENvZGVcIik7XG5cdGNvbnNvbGUubG9nKFwiICAgICAgICAgICAgICAgICAjIHRoZW46IFJlb3BlbiBpbiBDb250YWluZXJcXG5cIik7XG5cblx0Ly8gRHJvcCByZWFkbGluZSdzIHN0ZGluIGhvbGQgc28gdGhlIENMSSAvIGNvbnRhaW5lciBjYW4gZXhpdC5cblx0Y2xvc2VQcm9tcHQoKTtcbn1cblxuZXhwb3J0IGNvbnN0IEZpbmFsaXplRmVhdHVyZTogRmVhdHVyZSA9IHsgZ2V0T3B0aW9ucywgc2NhZmZvbGQsIGZpbmFsaXplIH07XG4iXSwibmFtZXMiOlsiRmluYWxpemVGZWF0dXJlIiwicmVhZEV4aXN0aW5nRW52VmFsdWUiLCJ3b3Jrc3BhY2UiLCJrZXkiLCJyYXciLCJyZWFkRmlsZVN5bmMiLCJqb2luIiwidGFyZ2V0RGlyIiwibGluZSIsInNwbGl0IiwiZmluZCIsImwiLCJzdGFydHNXaXRoIiwidmFsdWUiLCJzbGljZSIsImxlbmd0aCIsInRyaW0iLCJ1bmRlZmluZWQiLCJfcG0iLCJfc2hvdWxkSW5zdGFsbCIsImdldE9wdGlvbnMiLCJfd29ya3NwYWNlIiwiY2xpT3B0aW9ucyIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJzY2FmZm9sZCIsIm9wdGlvbnMiLCJub2RlRW52IiwiZ2V0TW9kZWwiLCJXRUxMX0tOT1dOX0ZJTEVTIiwiRU5WX0ZJTEUiLCJhZGRFbnRyeSIsInByb2Nlc3MiLCJlbnYiLCJERUNPSEVSRV9CVUlMREVSIiwiZGV0ZWN0UGFja2FnZU1hbmFnZXIiLCJwcm9tcHRGb3JQYWNrYWdlTWFuYWdlciIsImFuc3dlciIsImFzayIsInRvTG93ZXJDYXNlIiwiZmluYWxpemUiLCJfb3B0aW9ucyIsImZvcm1hdFNjYWZmb2xkZWRGaWxlcyIsInBtIiwiY29uc29sZSIsImxvZyIsIm5hbWUiLCJpbnN0YWxsIiwiY3dkIiwicG1OYW1lIiwiY2xvc2VQcm9tcHQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBcUZhQTs7O2VBQUFBOzs7d0JBckZnQjswQkFDUjt5QkFFeUM7d0JBQzdCO3VCQUNBOzZCQUlLO0FBRXRDLFNBQVNDLHFCQUFxQkMsU0FBNEIsRUFBRUMsR0FBVztJQUN0RSxJQUFJO1FBQ0gsTUFBTUMsTUFBTUMsSUFBQUEsb0JBQVksRUFBQ0MsSUFBQUEsY0FBSSxFQUFDSixVQUFVSyxTQUFTLEVBQUUsU0FBUztRQUM1RCxNQUFNQyxPQUFPSixJQUFJSyxLQUFLLENBQUMsTUFBTUMsSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLFVBQVUsQ0FBQyxHQUFHVCxJQUFJLENBQUMsQ0FBQztRQUMvRCxNQUFNVSxRQUFRTCxNQUFNTSxNQUFNWCxJQUFJWSxNQUFNLEdBQUcsR0FBR0M7UUFDMUMsT0FBT0gsU0FBU0k7SUFDakIsRUFBRSxPQUFNO1FBQ1AsT0FBT0E7SUFDUjtBQUNEO0FBRUEsNERBQTREO0FBQzVELElBQUlDLE1BQTZCO0FBQ2pDLElBQUlDLGlCQUFpQjtBQU1yQixlQUFlQyxXQUNkQyxVQUE2QixFQUM3QkMsVUFBb0M7SUFFcEMsSUFBSUEsV0FBV0MsbUJBQW1CLElBQUksTUFBTTtRQUMzQ0osaUJBQWlCRyxXQUFXQyxtQkFBbUIsS0FBSztJQUNyRDtJQUNBLE9BQU8sQ0FBQztBQUNUO0FBRUEsZUFBZUMsU0FDZHRCLFNBQTRCLEVBQzVCdUIsT0FBd0I7SUFFeEIsNEVBQTRFO0lBQzVFLE1BQU1DLFVBQVV6QixxQkFBcUJDLFdBQVcsZUFBZTtJQUMvREEsVUFBVXlCLFFBQVEsQ0FBVUMsdUJBQWdCLENBQUNDLFFBQVEsR0FBR0MsU0FBUyxZQUFZSjtJQUU3RSxJQUFJSyxRQUFRQyxHQUFHLENBQUNDLGdCQUFnQixLQUFLLEtBQUs7UUFDekNkLGlCQUFpQjtRQUNqQjtJQUNEO0lBQ0FELE1BQU1nQixJQUFBQSw2QkFBb0IsRUFBQ2hDLFVBQVVLLFNBQVMsS0FBTSxNQUFNNEIsSUFBQUEsZ0NBQXVCO0lBQ2pGLElBQUlWLFFBQVFGLG1CQUFtQixJQUFJLE1BQU07UUFDeENKLGlCQUFpQk0sUUFBUUYsbUJBQW1CLEtBQUs7UUFDakQ7SUFDRDtJQUVBLE1BQU1hLFNBQVMsTUFBTUMsSUFBQUEsV0FBRyxFQUFDLGdEQUFnRDtJQUN6RWxCLGlCQUFpQmlCLE9BQU9FLFdBQVcsT0FBTztBQUMzQztBQUVBLGVBQWVDLFNBQVNyQyxTQUE0QixFQUFFc0MsUUFBZ0I7SUFDckUsa0ZBQWtGO0lBQ2xGQyxJQUFBQSxrQ0FBcUIsRUFBQ3ZDLFVBQVVLLFNBQVM7SUFFekMsSUFBSVksZ0JBQWdCO1FBQ25CLE1BQU11QixLQUFLeEI7UUFDWHlCLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRTFDLFVBQVUyQyxJQUFJLENBQUMsOEJBQThCLENBQUM7UUFDMUUsTUFBTUgsR0FBR0ksT0FBTyxDQUFDO1lBQUVDLEtBQUs3QyxVQUFVSyxTQUFTO1FBQUM7SUFDN0M7SUFFQW9DLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRXpCLGlCQUFpQixTQUFTLGtCQUFrQixTQUFTLENBQUM7SUFDN0V3QixRQUFRQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUxQyxVQUFVMkMsSUFBSSxFQUFFO0lBQ3BDLElBQUksQ0FBQzFCLGdCQUFnQjtRQUNwQixNQUFNNkIsU0FBUzlCLEtBQUsyQixRQUFRO1FBQzVCRixRQUFRQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUVJLE9BQU8sUUFBUSxDQUFDO0lBQ2xDO0lBQ0FMLFFBQVFDLEdBQUcsQ0FBQztJQUNaRCxRQUFRQyxHQUFHLENBQUM7SUFFWiw4REFBOEQ7SUFDOURLLElBQUFBLG1CQUFXO0FBQ1o7QUFFTyxNQUFNakQsa0JBQTJCO0lBQUVvQjtJQUFZSTtJQUFVZTtBQUFTIn0=
@@ -122,18 +122,29 @@ export function createApi(name, identifier, scopes = HELLO_API_SCOPES) {
122
122
  identifier,
123
123
  "--scopes",
124
124
  scopes.join(","),
125
+ // RBAC: only permissions assigned to the user/role appear on the token.
126
+ "--enforce-policies",
127
+ // Include Auth0 `permissions[]` claim (consumed by sample principalMapper).
128
+ "--token-dialect",
129
+ "access_token_authz",
125
130
  "--json",
126
131
  "--no-input"
127
132
  ]);
128
133
  return parseJsonOutput(out);
129
134
  }
130
- /** Replace an API's scopes (Auth0 CLI update --scopes replaces the full set). */ export function updateApiScopes(identifier, scopes = HELLO_API_SCOPES) {
135
+ /**
136
+ * Replace an API's scopes and enable RBAC policy enforcement.
137
+ * Auth0 CLI `--scopes` replaces the full set.
138
+ */ export function updateApiScopes(identifier, scopes = HELLO_API_SCOPES) {
131
139
  runAuth0([
132
140
  "apis",
133
141
  "update",
134
142
  identifier,
135
143
  "--scopes",
136
144
  scopes.join(","),
145
+ "--enforce-policies",
146
+ "--token-dialect",
147
+ "access_token_authz",
137
148
  "--no-input"
138
149
  ]);
139
150
  }
@@ -334,4 +345,4 @@ function isUserAlreadyExistsError(err) {
334
345
  }
335
346
  export { REQUIRED_SCOPES };
336
347
 
337
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2F1dGgwLWNsaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjRmlsZVN5bmMsIHNwYXduU3luYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbi8qKiBNYW5hZ2VtZW50IEFQSSBzY29wZXMgbmVlZGVkIGZvciBBUEksIFNQQSwgY29ubmVjdGlvbnMsIGFuZCBhZG1pbiB1c2Vycy4gKi9cbmNvbnN0IFJFUVVJUkVEX1NDT1BFUyA9IFtcblx0XCJjcmVhdGU6Y2xpZW50c1wiLFxuXHRcInJlYWQ6Y2xpZW50c1wiLFxuXHRcInVwZGF0ZTpjbGllbnRzXCIsXG5cdFwiY3JlYXRlOnJlc291cmNlX3NlcnZlcnNcIixcblx0XCJyZWFkOnJlc291cmNlX3NlcnZlcnNcIixcblx0XCJ1cGRhdGU6cmVzb3VyY2Vfc2VydmVyc1wiLFxuXHRcInJlYWQ6Y29ubmVjdGlvbnNcIixcblx0XCJ1cGRhdGU6Y29ubmVjdGlvbnNcIixcblx0XCJjcmVhdGU6dXNlcnNcIixcblx0XCJyZWFkOnVzZXJzXCIsXG5cdFwidXBkYXRlOnVzZXJzXCIsXG5dLmpvaW4oXCIsXCIpO1xuXG4vKiogSGFyZCB0aW1lb3V0IGZvciBhbnkgTWFuYWdlbWVudCBBUEkgY2FsbC4gUHJldmVudHMgaW5kZWZpbml0ZSBoYW5ncyBvbiB0b2tlbiByZS1hdXRoLiAqL1xuY29uc3QgQVBJX1RJTUVPVVRfTVMgPSA4XzAwMDtcblxuLyoqIERlZmF1bHQgQVBJIHNjb3BlcyBtYXRjaGluZyBIZWxsbyBDQVNMIEF1dGhvcml6ZSBkZWNvcmF0b3JzLiAqL1xuZXhwb3J0IGNvbnN0IEhFTExPX0FQSV9TQ09QRVMgPSBbXG5cdFwicmVhZDpIZWxsb1wiLFxuXHRcImNyZWF0ZTpIZWxsb1wiLFxuXHRcInVwZGF0ZTpIZWxsb1wiLFxuXHRcImRlbGV0ZTpIZWxsb1wiLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IERCX0NPTk5FQ1RJT05fTkFNRSA9IFwiVXNlcm5hbWUtUGFzc3dvcmQtQXV0aGVudGljYXRpb25cIjtcblxuZXhwb3J0IGNsYXNzIEF1dGgwQXV0aEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobWVzc2FnZSk7XG5cdFx0dGhpcy5uYW1lID0gXCJBdXRoMEF1dGhFcnJvclwiO1xuXHR9XG59XG5cbi8qKiBSZXR1cm5zIHRydWUgaWYgYW4gZXJyb3Igb3Igc3RkZXJyIG91dHB1dCBsb29rcyBsaWtlIGFuIGV4cGlyZWQvbWlzc2luZyB0b2tlbi4gKi9cbmZ1bmN0aW9uIGlzQXV0aEVycm9yKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gKFxuXHRcdHRleHQuaW5jbHVkZXMoXCJyZW5ldyBhY2Nlc3MgdG9rZW5cIikgfHxcblx0XHR0ZXh0LmluY2x1ZGVzKFwibG9nIGluXCIpIHx8XG5cdFx0dGV4dC5pbmNsdWRlcyhcIlVuYXV0aG9yaXplZFwiKVxuXHQpO1xufVxuXG4vKiogU3RyaXAgQXV0aDAgQ0xJIGJhbm5lciBsaW5lcyBiZWZvcmUgSlNPTi4gKi9cbmZ1bmN0aW9uIHBhcnNlSnNvbk91dHB1dDxUPihzdGRvdXQ6IHN0cmluZyk6IFQge1xuXHRjb25zdCBzdGFydCA9IHN0ZG91dC5pbmRleE9mKFwie1wiKTtcblx0Y29uc3QgYXJyYXlTdGFydCA9IHN0ZG91dC5pbmRleE9mKFwiW1wiKTtcblx0bGV0IGlkeCA9IC0xO1xuXHRpZiAoc3RhcnQgPT09IC0xKSBpZHggPSBhcnJheVN0YXJ0O1xuXHRlbHNlIGlmIChhcnJheVN0YXJ0ID09PSAtMSkgaWR4ID0gc3RhcnQ7XG5cdGVsc2UgaWR4ID0gTWF0aC5taW4oc3RhcnQsIGFycmF5U3RhcnQpO1xuXHRpZiAoaWR4IDwgMCkgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBKU09OIGZyb20gYXV0aDAgQ0xJLCBnb3Q6ICR7c3Rkb3V0LnNsaWNlKDAsIDIwMCl9YCk7XG5cdHJldHVybiBKU09OLnBhcnNlKHN0ZG91dC5zbGljZShpZHgpKSBhcyBUO1xufVxuXG4vKiogUnVuIGFuIGF1dGgwIENMSSBjb21tYW5kIHdpdGggYSBoYXJkIHRpbWVvdXQuIFJldHVybnMgc3Rkb3V0IG9uIHN1Y2Nlc3MsIHRocm93cyBvbiBmYWlsdXJlLiAqL1xuZnVuY3Rpb24gcnVuQXV0aDAoYXJnczogc3RyaW5nW10pOiBzdHJpbmcge1xuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXCJhdXRoMFwiLCBhcmdzLCB7XG5cdFx0ZW5jb2Rpbmc6IFwidXRmOFwiLFxuXHRcdHRpbWVvdXQ6IEFQSV9USU1FT1VUX01TLFxuXHRcdGlucHV0OiBcIlwiLFxuXHRcdHN0ZGlvOiBcInBpcGVcIixcblx0fSk7XG5cblx0aWYgKHJlc3VsdC5lcnJvcikge1xuXHRcdGNvbnN0IG1zZyA9IHJlc3VsdC5lcnJvci5tZXNzYWdlO1xuXHRcdGlmIChpc0F1dGhFcnJvcihtc2cpIHx8IChyZXN1bHQuZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlID09PSBcIkVUSU1FRE9VVFwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgQXV0aDBBdXRoRXJyb3IobXNnKTtcblx0XHR9XG5cdFx0dGhyb3cgcmVzdWx0LmVycm9yO1xuXHR9XG5cblx0aWYgKHJlc3VsdC5zdGF0dXMgIT09IDApIHtcblx0XHRjb25zdCBzdGRlcnIgPSByZXN1bHQuc3RkZXJyID8/IFwiXCI7XG5cdFx0aWYgKGlzQXV0aEVycm9yKHN0ZGVycikpIHRocm93IG5ldyBBdXRoMEF1dGhFcnJvcihzdGRlcnIpO1xuXHRcdHRocm93IG5ldyBFcnJvcihzdGRlcnIgfHwgYGF1dGgwIGV4aXRlZCB3aXRoIGNvZGUgJHtyZXN1bHQuc3RhdHVzfWApO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdC5zdGRvdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aDBUZW5hbnQge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGFjdGl2ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0luc3RhbGxlZCgpOiBib29sZWFuIHtcblx0dHJ5IHtcblx0XHRleGVjRmlsZVN5bmMoXCJhdXRoMFwiLCBbXCItLXZlcnNpb25cIl0sIHsgc3RkaW86IFwicGlwZVwiIH0pO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RUZW5hbnRzKCk6IEF1dGgwVGVuYW50W10ge1xuXHR0cnkge1xuXHRcdGNvbnN0IG91dCA9IGV4ZWNGaWxlU3luYyhcImF1dGgwXCIsIFtcInRlbmFudHNcIiwgXCJsaXN0XCIsIFwiLS1qc29uXCJdLCB7XG5cdFx0XHRlbmNvZGluZzogXCJ1dGY4XCIsXG5cdFx0XHRzdGRpbzogXCJwaXBlXCIsXG5cdFx0fSk7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2Uob3V0KSBhcyBBdXRoMFRlbmFudFtdO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ2luKCk6IGJvb2xlYW4ge1xuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXCJhdXRoMFwiLCBbXCJsb2dpblwiLCBcIi0tc2NvcGVzXCIsIFJFUVVJUkVEX1NDT1BFU10sIHtcblx0XHRzdGRpbzogXCJpbmhlcml0XCIsXG5cdH0pO1xuXHRyZXR1cm4gcmVzdWx0LnN0YXR1cyA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RBcGlzKCk6IEFycmF5PHsgaWRlbnRpZmllcjogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfT4ge1xuXHR0cnkge1xuXHRcdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcImFwaXNcIiwgXCJsaXN0XCIsIFwiLS1qc29uXCIsIFwiLS1uby1pbnB1dFwiXSk7XG5cdFx0cmV0dXJuIHBhcnNlSnNvbk91dHB1dChvdXQpO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRpZiAoZXJyIGluc3RhbmNlb2YgQXV0aDBBdXRoRXJyb3IpIHRocm93IGVycjtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFwaShcblx0bmFtZTogc3RyaW5nLFxuXHRpZGVudGlmaWVyOiBzdHJpbmcsXG5cdHNjb3BlczogcmVhZG9ubHkgc3RyaW5nW10gPSBIRUxMT19BUElfU0NPUEVTLFxuKTogeyBpZGVudGlmaWVyOiBzdHJpbmcgfSB7XG5cdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwaXNcIixcblx0XHRcImNyZWF0ZVwiLFxuXHRcdFwiLS1uYW1lXCIsXG5cdFx0bmFtZSxcblx0XHRcIi0taWRlbnRpZmllclwiLFxuXHRcdGlkZW50aWZpZXIsXG5cdFx0XCItLXNjb3Blc1wiLFxuXHRcdHNjb3Blcy5qb2luKFwiLFwiKSxcblx0XHRcIi0tanNvblwiLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcblx0cmV0dXJuIHBhcnNlSnNvbk91dHB1dChvdXQpO1xufVxuXG4vKiogUmVwbGFjZSBhbiBBUEkncyBzY29wZXMgKEF1dGgwIENMSSB1cGRhdGUgLS1zY29wZXMgcmVwbGFjZXMgdGhlIGZ1bGwgc2V0KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVBcGlTY29wZXMoXG5cdGlkZW50aWZpZXI6IHN0cmluZyxcblx0c2NvcGVzOiByZWFkb25seSBzdHJpbmdbXSA9IEhFTExPX0FQSV9TQ09QRVMsXG4pOiB2b2lkIHtcblx0cnVuQXV0aDAoW1wiYXBpc1wiLCBcInVwZGF0ZVwiLCBpZGVudGlmaWVyLCBcIi0tc2NvcGVzXCIsIHNjb3Blcy5qb2luKFwiLFwiKSwgXCItLW5vLWlucHV0XCJdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNwYUFwcChcblx0bmFtZTogc3RyaW5nLFxuXHRjYWxsYmFja1VybHM6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogeyBjbGllbnRfaWQ6IHN0cmluZyB9IHtcblx0Y29uc3QgY2FsbGJhY2tzID0gdHlwZW9mIGNhbGxiYWNrVXJscyA9PT0gXCJzdHJpbmdcIiA/IGNhbGxiYWNrVXJscyA6IGNhbGxiYWNrVXJscy5qb2luKFwiLFwiKTtcblx0Y29uc3Qgb3V0ID0gcnVuQXV0aDAoW1xuXHRcdFwiYXBwc1wiLFxuXHRcdFwiY3JlYXRlXCIsXG5cdFx0XCItLW5hbWVcIixcblx0XHRuYW1lLFxuXHRcdFwiLS10eXBlXCIsXG5cdFx0XCJzcGFcIixcblx0XHRcIi0tY2FsbGJhY2tzXCIsXG5cdFx0Y2FsbGJhY2tzLFxuXHRcdFwiLS1qc29uXCIsXG5cdFx0XCItLW5vLWlucHV0XCIsXG5cdF0pO1xuXHRjb25zdCBhcHAgPSBwYXJzZUpzb25PdXRwdXQ8eyBjbGllbnRfaWQ/OiBzdHJpbmc7IGNsaWVudElkPzogc3RyaW5nIH0+KG91dCk7XG5cdGNvbnN0IGNsaWVudElkID0gYXBwLmNsaWVudF9pZCA/PyBhcHAuY2xpZW50SWQ7XG5cdGlmICghY2xpZW50SWQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRgQXV0aDAgY3JlYXRlIFNQQSByZXNwb25zZSBtaXNzaW5nIGNsaWVudF9pZC4gc3Rkb3V0OiAke291dC5zbGljZSgwLCAzMDApfWAsXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4geyBjbGllbnRfaWQ6IGNsaWVudElkIH07XG59XG5cbmV4cG9ydCB0eXBlIEF1dGgwQXBwID0geyBjbGllbnRfaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0QXBwcygpOiBBdXRoMEFwcFtdIHtcblx0dHJ5IHtcblx0XHRjb25zdCBvdXQgPSBydW5BdXRoMChbXCJhcHBzXCIsIFwibGlzdFwiLCBcIi0tanNvblwiLCBcIi0tbm8taW5wdXRcIl0pO1xuXHRcdGNvbnN0IGFwcHMgPVxuXHRcdFx0cGFyc2VKc29uT3V0cHV0PEFycmF5PHsgY2xpZW50X2lkPzogc3RyaW5nOyBjbGllbnRJZD86IHN0cmluZzsgbmFtZT86IHN0cmluZyB9Pj4ob3V0KTtcblx0XHRyZXR1cm4gYXBwc1xuXHRcdFx0Lm1hcCgoYSkgPT4gKHtcblx0XHRcdFx0Y2xpZW50X2lkOiBhLmNsaWVudF9pZCA/PyBhLmNsaWVudElkID8/IFwiXCIsXG5cdFx0XHRcdG5hbWU6IGEubmFtZSA/PyBcIlwiLFxuXHRcdFx0fSkpXG5cdFx0XHQuZmlsdGVyKChhKSA9PiBhLmNsaWVudF9pZCAmJiBhLm5hbWUpO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRpZiAoZXJyIGluc3RhbmNlb2YgQXV0aDBBdXRoRXJyb3IpIHRocm93IGVycjtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVNwYUNhbGxiYWNrcyhcblx0Y2xpZW50SWQ6IHN0cmluZyxcblx0Y2FsbGJhY2tVcmxzOiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSxcbik6IHZvaWQge1xuXHRjb25zdCBjYWxsYmFja3MgPSB0eXBlb2YgY2FsbGJhY2tVcmxzID09PSBcInN0cmluZ1wiID8gY2FsbGJhY2tVcmxzIDogY2FsbGJhY2tVcmxzLmpvaW4oXCIsXCIpO1xuXHRydW5BdXRoMChbXCJhcHBzXCIsIFwidXBkYXRlXCIsIGNsaWVudElkLCBcIi0tY2FsbGJhY2tzXCIsIGNhbGxiYWNrcywgXCItLW5vLWlucHV0XCJdKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBQb3N0bWFuIFNQQSwgb3IgcmV1c2UgYW4gZXhpc3RpbmcgYXBwIHdpdGggdGhlIHNhbWUgbmFtZSAocmUtc2NhZmZvbGQpLlxuICogQWx3YXlzIHJldHVybnMgYSBjbGllbnRfaWQgc3VpdGFibGUgZm9yIFBvc3RtYW4gYXV0aDBDbGllbnRJZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVNwYUFwcChcblx0bmFtZTogc3RyaW5nLFxuXHRjYWxsYmFja1VybHM6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogeyBjbGllbnRfaWQ6IHN0cmluZzsgcmV1c2VkOiBib29sZWFuIH0ge1xuXHRjb25zdCBleGlzdGluZyA9IGxpc3RBcHBzKCkuZmluZCgoYSkgPT4gYS5uYW1lID09PSBuYW1lKTtcblx0aWYgKGV4aXN0aW5nKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHVwZGF0ZVNwYUNhbGxiYWNrcyhleGlzdGluZy5jbGllbnRfaWQsIGNhbGxiYWNrVXJscyk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHQvLyBDYWxsYmFja3MgbWF5IGFscmVhZHkgbWF0Y2g7IHN0aWxsIHVzYWJsZSBmb3IgUG9zdG1hbi5cblx0XHR9XG5cdFx0cmV0dXJuIHsgY2xpZW50X2lkOiBleGlzdGluZy5jbGllbnRfaWQsIHJldXNlZDogdHJ1ZSB9O1xuXHR9XG5cdHJldHVybiB7IC4uLmNyZWF0ZVNwYUFwcChuYW1lLCBjYWxsYmFja1VybHMpLCByZXVzZWQ6IGZhbHNlIH07XG59XG5cbnR5cGUgQXV0aDBDb25uZWN0aW9uID0geyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHN0cmF0ZWd5OiBzdHJpbmcgfTtcblxuLyoqIEVuYWJsZSBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gZm9yIGFuIGFwcGxpY2F0aW9uIChyZXF1aXJlZCBmb3IgdXNlcm5hbWUvcGFzc3dvcmQgbG9naW4pLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQoY29ubmVjdGlvbk5hbWU6IHN0cmluZywgY2xpZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuXHRjb25zdCBsaXN0T3V0ID0gcnVuQXV0aDAoW1wiYXBpXCIsIFwiZ2V0XCIsIFwiY29ubmVjdGlvbnNcIiwgXCItLW5vLWlucHV0XCJdKTtcblx0Y29uc3QgY29ubmVjdGlvbnMgPSBwYXJzZUpzb25PdXRwdXQ8QXV0aDBDb25uZWN0aW9uW10+KGxpc3RPdXQpO1xuXHRjb25zdCBjb25uZWN0aW9uID0gY29ubmVjdGlvbnMuZmluZCgoYykgPT4gYy5uYW1lID09PSBjb25uZWN0aW9uTmFtZSk7XG5cdGlmICghY29ubmVjdGlvbikge1xuXHRcdHRocm93IG5ldyBFcnJvcihgQXV0aDAgY29ubmVjdGlvbiBub3QgZm91bmQ6ICR7Y29ubmVjdGlvbk5hbWV9YCk7XG5cdH1cblxuXHRjb25zdCBjbGllbnRzT3V0ID0gcnVuQXV0aDAoW1xuXHRcdFwiYXBpXCIsXG5cdFx0XCJnZXRcIixcblx0XHRgY29ubmVjdGlvbnMvJHtjb25uZWN0aW9uLmlkfS9jbGllbnRzYCxcblx0XHRcIi0tbm8taW5wdXRcIixcblx0XSk7XG5cdGNvbnN0IHsgY2xpZW50cyB9ID0gcGFyc2VKc29uT3V0cHV0PHsgY2xpZW50czogQXJyYXk8eyBjbGllbnRfaWQ6IHN0cmluZyB9PiB9PihjbGllbnRzT3V0KTtcblx0aWYgKGNsaWVudHMuc29tZSgoYykgPT4gYy5jbGllbnRfaWQgPT09IGNsaWVudElkKSkgcmV0dXJuO1xuXG5cdC8vIERlZGljYXRlZCBlbmFibGVkLWNsaWVudHMgZW5kcG9pbnQgKGVuYWJsZWRfY2xpZW50cyBvbiBjb25uZWN0aW9uIFBBVENIIGlzIGRlcHJlY2F0ZWQpLlxuXHRydW5BdXRoMChbXG5cdFx0XCJhcGlcIixcblx0XHRcInBhdGNoXCIsXG5cdFx0YGNvbm5lY3Rpb25zLyR7Y29ubmVjdGlvbi5pZH0vY2xpZW50c2AsXG5cdFx0XCItLWRhdGFcIixcblx0XHRKU09OLnN0cmluZ2lmeShbeyBjbGllbnRfaWQ6IGNsaWVudElkLCBzdGF0dXM6IHRydWUgfV0pLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcbn1cblxuZXhwb3J0IHR5cGUgQWRtaW5EYXRhYmFzZVVzZXIgPSB7XG5cdHVzZXJfaWQ6IHN0cmluZztcblx0ZW1haWw6IHN0cmluZztcblx0cGFzc3dvcmQ6IHN0cmluZztcblx0dXNlcm5hbWU6IHN0cmluZztcbn07XG5cbi8qKiBTdHJvbmcgZGVmYXVsdCBwYXNzd29yZCB3aGVuIHRoZSBzY2FmZm9sZGVyIGNhbGxlciBsZWF2ZXMgcGFzc3dvcmQgYmxhbmsuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBZG1pblBhc3N3b3JkKCk6IHN0cmluZyB7XG5cdHJldHVybiBgJHtyYW5kb21CeXRlcygxMikudG9TdHJpbmcoXCJiYXNlNjR1cmxcIil9YUExIWA7XG59XG5cbmZ1bmN0aW9uIGlzVXNlckFscmVhZHlFeGlzdHNFcnJvcihlcnI6IHVua25vd24pOiBib29sZWFuIHtcblx0Y29uc3QgdGV4dCA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0cmV0dXJuIC9hbHJlYWR5IGV4aXN0c3x1c2VyIGV4aXN0c3xDb25mbGljdHw0MDkvaS50ZXN0KHRleHQpO1xufVxuXG4vKiogTG9vayB1cCBhIHVzZXIgYnkgZW1haWwgKE1hbmFnZW1lbnQgQVBJIHVzZXJzLWJ5LWVtYWlsKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kVXNlckJ5RW1haWwoZW1haWw6IHN0cmluZyk6IHsgdXNlcl9pZDogc3RyaW5nOyBlbWFpbDogc3RyaW5nIH0gfCBudWxsIHtcblx0Y29uc3Qgb3V0ID0gcnVuQXV0aDAoW1xuXHRcdFwiYXBpXCIsXG5cdFx0XCJnZXRcIixcblx0XHRgdXNlcnMtYnktZW1haWw/ZW1haWw9JHtlbmNvZGVVUklDb21wb25lbnQoZW1haWwpfWAsXG5cdFx0XCItLW5vLWlucHV0XCIsXG5cdF0pO1xuXHRjb25zdCB1c2VycyA9IHBhcnNlSnNvbk91dHB1dDxBcnJheTx7IHVzZXJfaWQ/OiBzdHJpbmc7IGVtYWlsPzogc3RyaW5nIH0+PihvdXQpO1xuXHRjb25zdCB1c2VyID0gdXNlcnMuZmluZCgodSkgPT4gdS51c2VyX2lkICYmIHUuZW1haWwpO1xuXHRpZiAoIXVzZXI/LnVzZXJfaWQgfHwgIXVzZXIuZW1haWwpIHJldHVybiBudWxsO1xuXHRyZXR1cm4geyB1c2VyX2lkOiB1c2VyLnVzZXJfaWQsIGVtYWlsOiB1c2VyLmVtYWlsIH07XG59XG5cbi8qKiBSZXNldCBwYXNzd29yZCBzbyBhIHJlLXNjYWZmb2xkIGNhbiB3cml0ZSBhIGtub3duIHBhc3N3b3JkIHRvIC5lbnYuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVXNlclBhc3N3b3JkKHVzZXJJZDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogdm9pZCB7XG5cdHJ1bkF1dGgwKFtcblx0XHRcImFwaVwiLFxuXHRcdFwicGF0Y2hcIixcblx0XHRgdXNlcnMvJHtlbmNvZGVVUklDb21wb25lbnQodXNlcklkKX1gLFxuXHRcdFwiLS1kYXRhXCIsXG5cdFx0SlNPTi5zdHJpbmdpZnkoeyBwYXNzd29yZCwgY29ubmVjdGlvbjogREJfQ09OTkVDVElPTl9OQU1FIH0pLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBEQiBjb25uZWN0aW9uIHJvb3QtYWRtaW4gdXNlciBmb3IgbG9jYWwgLyBQb3N0bWFuIGxvZ2luLlxuICogSWYgdGhlIHVzZXIgYWxyZWFkeSBleGlzdHMsIGxvb2sgdGhlbSB1cCwgcmVzZXQgcGFzc3dvcmQgdG8gYGlucHV0LnBhc3N3b3JkYCxcbiAqIGFuZCByZXR1cm4gdGhhdCBpZGVudGl0eSBzbyBjYWxsZXJzIGNhbiBzdGlsbCB3cml0ZSAuZW52IGNyZWRlbnRpYWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWRtaW5EYXRhYmFzZVVzZXIoaW5wdXQ6IHtcblx0ZW1haWw6IHN0cmluZztcblx0cGFzc3dvcmQ6IHN0cmluZztcblx0dXNlcm5hbWU6IHN0cmluZztcbn0pOiBBZG1pbkRhdGFiYXNlVXNlciB7XG5cdGNvbnN0IGJvZHkgPSB7XG5cdFx0ZW1haWw6IGlucHV0LmVtYWlsLFxuXHRcdGNvbm5lY3Rpb246IERCX0NPTk5FQ1RJT05fTkFNRSxcblx0XHRwYXNzd29yZDogaW5wdXQucGFzc3dvcmQsXG5cdFx0bmFtZTogaW5wdXQudXNlcm5hbWUsXG5cdFx0ZW1haWxfdmVyaWZpZWQ6IHRydWUsXG5cdFx0dmVyaWZ5X2VtYWlsOiBmYWxzZSxcblx0XHRhcHBfbWV0YWRhdGE6IHsgcm9sZXM6IFtcImFkbWluXCJdIH0sXG5cdH07XG5cblx0dHJ5IHtcblx0XHRjb25zdCBvdXQgPSBydW5BdXRoMChbXG5cdFx0XHRcImFwaVwiLFxuXHRcdFx0XCJwb3N0XCIsXG5cdFx0XHRcInVzZXJzXCIsXG5cdFx0XHRcIi0tZGF0YVwiLFxuXHRcdFx0SlNPTi5zdHJpbmdpZnkoYm9keSksXG5cdFx0XHRcIi0tbm8taW5wdXRcIixcblx0XHRdKTtcblx0XHRjb25zdCB1c2VyID0gcGFyc2VKc29uT3V0cHV0PHsgdXNlcl9pZD86IHN0cmluZzsgZW1haWw/OiBzdHJpbmcgfT4ob3V0KTtcblx0XHRpZiAoIXVzZXIudXNlcl9pZCB8fCAhdXNlci5lbWFpbCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRgQXV0aDAgY3JlYXRlIHVzZXIgcmVzcG9uc2UgbWlzc2luZyB1c2VyX2lkL2VtYWlsLiBzdGRvdXQ6ICR7b3V0LnNsaWNlKDAsIDMwMCl9YCxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHR1c2VyX2lkOiB1c2VyLnVzZXJfaWQsXG5cdFx0XHRlbWFpbDogdXNlci5lbWFpbCxcblx0XHRcdHBhc3N3b3JkOiBpbnB1dC5wYXNzd29yZCxcblx0XHRcdHVzZXJuYW1lOiBpbnB1dC51c2VybmFtZSxcblx0XHR9O1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRpZiAoIWlzVXNlckFscmVhZHlFeGlzdHNFcnJvcihlcnIpKSB0aHJvdyBlcnI7XG5cblx0XHRjb25zdCBleGlzdGluZyA9IGZpbmRVc2VyQnlFbWFpbChpbnB1dC5lbWFpbCk7XG5cdFx0aWYgKCFleGlzdGluZykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRgQXV0aDAgdXNlciBhbHJlYWR5IGV4aXN0cyBmb3IgJHtpbnB1dC5lbWFpbH0sIGJ1dCBsb29rdXAgYnkgZW1haWwgcmV0dXJuZWQgbm8gdXNlci5gLFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR1cGRhdGVVc2VyUGFzc3dvcmQoZXhpc3RpbmcudXNlcl9pZCwgaW5wdXQucGFzc3dvcmQpO1xuXHRcdHJldHVybiB7XG5cdFx0XHR1c2VyX2lkOiBleGlzdGluZy51c2VyX2lkLFxuXHRcdFx0ZW1haWw6IGV4aXN0aW5nLmVtYWlsLFxuXHRcdFx0cGFzc3dvcmQ6IGlucHV0LnBhc3N3b3JkLFxuXHRcdFx0dXNlcm5hbWU6IGlucHV0LnVzZXJuYW1lLFxuXHRcdH07XG5cdH1cbn1cblxuZXhwb3J0IHsgUkVRVUlSRURfU0NPUEVTIH07XG4iXSwibmFtZXMiOlsiZXhlY0ZpbGVTeW5jIiwic3Bhd25TeW5jIiwicmFuZG9tQnl0ZXMiLCJSRVFVSVJFRF9TQ09QRVMiLCJqb2luIiwiQVBJX1RJTUVPVVRfTVMiLCJIRUxMT19BUElfU0NPUEVTIiwiREJfQ09OTkVDVElPTl9OQU1FIiwiQXV0aDBBdXRoRXJyb3IiLCJFcnJvciIsIm1lc3NhZ2UiLCJuYW1lIiwiaXNBdXRoRXJyb3IiLCJ0ZXh0IiwiaW5jbHVkZXMiLCJwYXJzZUpzb25PdXRwdXQiLCJzdGRvdXQiLCJzdGFydCIsImluZGV4T2YiLCJhcnJheVN0YXJ0IiwiaWR4IiwiTWF0aCIsIm1pbiIsInNsaWNlIiwiSlNPTiIsInBhcnNlIiwicnVuQXV0aDAiLCJhcmdzIiwicmVzdWx0IiwiZW5jb2RpbmciLCJ0aW1lb3V0IiwiaW5wdXQiLCJzdGRpbyIsImVycm9yIiwibXNnIiwiY29kZSIsInN0YXR1cyIsInN0ZGVyciIsImlzSW5zdGFsbGVkIiwibGlzdFRlbmFudHMiLCJvdXQiLCJsb2dpbiIsImxpc3RBcGlzIiwiZXJyIiwiY3JlYXRlQXBpIiwiaWRlbnRpZmllciIsInNjb3BlcyIsInVwZGF0ZUFwaVNjb3BlcyIsImNyZWF0ZVNwYUFwcCIsImNhbGxiYWNrVXJscyIsImNhbGxiYWNrcyIsImFwcCIsImNsaWVudElkIiwiY2xpZW50X2lkIiwibGlzdEFwcHMiLCJhcHBzIiwibWFwIiwiYSIsImZpbHRlciIsInVwZGF0ZVNwYUNhbGxiYWNrcyIsImVuc3VyZVNwYUFwcCIsImV4aXN0aW5nIiwiZmluZCIsInJldXNlZCIsImVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQiLCJjb25uZWN0aW9uTmFtZSIsImxpc3RPdXQiLCJjb25uZWN0aW9ucyIsImNvbm5lY3Rpb24iLCJjIiwiY2xpZW50c091dCIsImlkIiwiY2xpZW50cyIsInNvbWUiLCJzdHJpbmdpZnkiLCJnZW5lcmF0ZUFkbWluUGFzc3dvcmQiLCJ0b1N0cmluZyIsImlzVXNlckFscmVhZHlFeGlzdHNFcnJvciIsIlN0cmluZyIsInRlc3QiLCJmaW5kVXNlckJ5RW1haWwiLCJlbWFpbCIsImVuY29kZVVSSUNvbXBvbmVudCIsInVzZXJzIiwidXNlciIsInUiLCJ1c2VyX2lkIiwidXBkYXRlVXNlclBhc3N3b3JkIiwidXNlcklkIiwicGFzc3dvcmQiLCJjcmVhdGVBZG1pbkRhdGFiYXNlVXNlciIsImJvZHkiLCJ1c2VybmFtZSIsImVtYWlsX3ZlcmlmaWVkIiwidmVyaWZ5X2VtYWlsIiwiYXBwX21ldGFkYXRhIiwicm9sZXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFlBQVksRUFBRUMsU0FBUyxRQUFRLHFCQUFxQjtBQUM3RCxTQUFTQyxXQUFXLFFBQVEsY0FBYztBQUUxQyw2RUFBNkUsR0FDN0UsTUFBTUMsa0JBQWtCO0lBQ3ZCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDQSxDQUFDQyxJQUFJLENBQUM7QUFFUCwwRkFBMEYsR0FDMUYsTUFBTUMsaUJBQWlCO0FBRXZCLGlFQUFpRSxHQUNqRSxPQUFPLE1BQU1DLG1CQUFtQjtJQUMvQjtJQUNBO0lBQ0E7SUFDQTtDQUNBLENBQVU7QUFFWCxPQUFPLE1BQU1DLHFCQUFxQixtQ0FBbUM7QUFFckUsT0FBTyxNQUFNQyx1QkFBdUJDO0lBQ25DLFlBQW1CQyxPQUFlLENBQUU7UUFDbkMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsSUFBSSxHQUFHO0lBQ2I7QUFDRDtBQUVBLG1G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
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2F1dGgwLWNsaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjRmlsZVN5bmMsIHNwYXduU3luYyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbi8qKiBNYW5hZ2VtZW50IEFQSSBzY29wZXMgbmVlZGVkIGZvciBBUEksIFNQQSwgY29ubmVjdGlvbnMsIGFuZCBhZG1pbiB1c2Vycy4gKi9cbmNvbnN0IFJFUVVJUkVEX1NDT1BFUyA9IFtcblx0XCJjcmVhdGU6Y2xpZW50c1wiLFxuXHRcInJlYWQ6Y2xpZW50c1wiLFxuXHRcInVwZGF0ZTpjbGllbnRzXCIsXG5cdFwiY3JlYXRlOnJlc291cmNlX3NlcnZlcnNcIixcblx0XCJyZWFkOnJlc291cmNlX3NlcnZlcnNcIixcblx0XCJ1cGRhdGU6cmVzb3VyY2Vfc2VydmVyc1wiLFxuXHRcInJlYWQ6Y29ubmVjdGlvbnNcIixcblx0XCJ1cGRhdGU6Y29ubmVjdGlvbnNcIixcblx0XCJjcmVhdGU6dXNlcnNcIixcblx0XCJyZWFkOnVzZXJzXCIsXG5cdFwidXBkYXRlOnVzZXJzXCIsXG5dLmpvaW4oXCIsXCIpO1xuXG4vKiogSGFyZCB0aW1lb3V0IGZvciBhbnkgTWFuYWdlbWVudCBBUEkgY2FsbC4gUHJldmVudHMgaW5kZWZpbml0ZSBoYW5ncyBvbiB0b2tlbiByZS1hdXRoLiAqL1xuY29uc3QgQVBJX1RJTUVPVVRfTVMgPSA4XzAwMDtcblxuLyoqIERlZmF1bHQgQVBJIHNjb3BlcyBtYXRjaGluZyBIZWxsbyBDQVNMIEF1dGhvcml6ZSBkZWNvcmF0b3JzLiAqL1xuZXhwb3J0IGNvbnN0IEhFTExPX0FQSV9TQ09QRVMgPSBbXG5cdFwicmVhZDpIZWxsb1wiLFxuXHRcImNyZWF0ZTpIZWxsb1wiLFxuXHRcInVwZGF0ZTpIZWxsb1wiLFxuXHRcImRlbGV0ZTpIZWxsb1wiLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IERCX0NPTk5FQ1RJT05fTkFNRSA9IFwiVXNlcm5hbWUtUGFzc3dvcmQtQXV0aGVudGljYXRpb25cIjtcblxuZXhwb3J0IGNsYXNzIEF1dGgwQXV0aEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobWVzc2FnZSk7XG5cdFx0dGhpcy5uYW1lID0gXCJBdXRoMEF1dGhFcnJvclwiO1xuXHR9XG59XG5cbi8qKiBSZXR1cm5zIHRydWUgaWYgYW4gZXJyb3Igb3Igc3RkZXJyIG91dHB1dCBsb29rcyBsaWtlIGFuIGV4cGlyZWQvbWlzc2luZyB0b2tlbi4gKi9cbmZ1bmN0aW9uIGlzQXV0aEVycm9yKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gKFxuXHRcdHRleHQuaW5jbHVkZXMoXCJyZW5ldyBhY2Nlc3MgdG9rZW5cIikgfHxcblx0XHR0ZXh0LmluY2x1ZGVzKFwibG9nIGluXCIpIHx8XG5cdFx0dGV4dC5pbmNsdWRlcyhcIlVuYXV0aG9yaXplZFwiKVxuXHQpO1xufVxuXG4vKiogU3RyaXAgQXV0aDAgQ0xJIGJhbm5lciBsaW5lcyBiZWZvcmUgSlNPTi4gKi9cbmZ1bmN0aW9uIHBhcnNlSnNvbk91dHB1dDxUPihzdGRvdXQ6IHN0cmluZyk6IFQge1xuXHRjb25zdCBzdGFydCA9IHN0ZG91dC5pbmRleE9mKFwie1wiKTtcblx0Y29uc3QgYXJyYXlTdGFydCA9IHN0ZG91dC5pbmRleE9mKFwiW1wiKTtcblx0bGV0IGlkeCA9IC0xO1xuXHRpZiAoc3RhcnQgPT09IC0xKSBpZHggPSBhcnJheVN0YXJ0O1xuXHRlbHNlIGlmIChhcnJheVN0YXJ0ID09PSAtMSkgaWR4ID0gc3RhcnQ7XG5cdGVsc2UgaWR4ID0gTWF0aC5taW4oc3RhcnQsIGFycmF5U3RhcnQpO1xuXHRpZiAoaWR4IDwgMCkgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBKU09OIGZyb20gYXV0aDAgQ0xJLCBnb3Q6ICR7c3Rkb3V0LnNsaWNlKDAsIDIwMCl9YCk7XG5cdHJldHVybiBKU09OLnBhcnNlKHN0ZG91dC5zbGljZShpZHgpKSBhcyBUO1xufVxuXG4vKiogUnVuIGFuIGF1dGgwIENMSSBjb21tYW5kIHdpdGggYSBoYXJkIHRpbWVvdXQuIFJldHVybnMgc3Rkb3V0IG9uIHN1Y2Nlc3MsIHRocm93cyBvbiBmYWlsdXJlLiAqL1xuZnVuY3Rpb24gcnVuQXV0aDAoYXJnczogc3RyaW5nW10pOiBzdHJpbmcge1xuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXCJhdXRoMFwiLCBhcmdzLCB7XG5cdFx0ZW5jb2Rpbmc6IFwidXRmOFwiLFxuXHRcdHRpbWVvdXQ6IEFQSV9USU1FT1VUX01TLFxuXHRcdGlucHV0OiBcIlwiLFxuXHRcdHN0ZGlvOiBcInBpcGVcIixcblx0fSk7XG5cblx0aWYgKHJlc3VsdC5lcnJvcikge1xuXHRcdGNvbnN0IG1zZyA9IHJlc3VsdC5lcnJvci5tZXNzYWdlO1xuXHRcdGlmIChpc0F1dGhFcnJvcihtc2cpIHx8IChyZXN1bHQuZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlID09PSBcIkVUSU1FRE9VVFwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgQXV0aDBBdXRoRXJyb3IobXNnKTtcblx0XHR9XG5cdFx0dGhyb3cgcmVzdWx0LmVycm9yO1xuXHR9XG5cblx0aWYgKHJlc3VsdC5zdGF0dXMgIT09IDApIHtcblx0XHRjb25zdCBzdGRlcnIgPSByZXN1bHQuc3RkZXJyID8/IFwiXCI7XG5cdFx0aWYgKGlzQXV0aEVycm9yKHN0ZGVycikpIHRocm93IG5ldyBBdXRoMEF1dGhFcnJvcihzdGRlcnIpO1xuXHRcdHRocm93IG5ldyBFcnJvcihzdGRlcnIgfHwgYGF1dGgwIGV4aXRlZCB3aXRoIGNvZGUgJHtyZXN1bHQuc3RhdHVzfWApO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdC5zdGRvdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aDBUZW5hbnQge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGFjdGl2ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0luc3RhbGxlZCgpOiBib29sZWFuIHtcblx0dHJ5IHtcblx0XHRleGVjRmlsZVN5bmMoXCJhdXRoMFwiLCBbXCItLXZlcnNpb25cIl0sIHsgc3RkaW86IFwicGlwZVwiIH0pO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RUZW5hbnRzKCk6IEF1dGgwVGVuYW50W10ge1xuXHR0cnkge1xuXHRcdGNvbnN0IG91dCA9IGV4ZWNGaWxlU3luYyhcImF1dGgwXCIsIFtcInRlbmFudHNcIiwgXCJsaXN0XCIsIFwiLS1qc29uXCJdLCB7XG5cdFx0XHRlbmNvZGluZzogXCJ1dGY4XCIsXG5cdFx0XHRzdGRpbzogXCJwaXBlXCIsXG5cdFx0fSk7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2Uob3V0KSBhcyBBdXRoMFRlbmFudFtdO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ2luKCk6IGJvb2xlYW4ge1xuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXCJhdXRoMFwiLCBbXCJsb2dpblwiLCBcIi0tc2NvcGVzXCIsIFJFUVVJUkVEX1NDT1BFU10sIHtcblx0XHRzdGRpbzogXCJpbmhlcml0XCIsXG5cdH0pO1xuXHRyZXR1cm4gcmVzdWx0LnN0YXR1cyA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RBcGlzKCk6IEFycmF5PHsgaWRlbnRpZmllcjogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfT4ge1xuXHR0cnkge1xuXHRcdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcImFwaXNcIiwgXCJsaXN0XCIsIFwiLS1qc29uXCIsIFwiLS1uby1pbnB1dFwiXSk7XG5cdFx0cmV0dXJuIHBhcnNlSnNvbk91dHB1dChvdXQpO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRpZiAoZXJyIGluc3RhbmNlb2YgQXV0aDBBdXRoRXJyb3IpIHRocm93IGVycjtcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFwaShcblx0bmFtZTogc3RyaW5nLFxuXHRpZGVudGlmaWVyOiBzdHJpbmcsXG5cdHNjb3BlczogcmVhZG9ubHkgc3RyaW5nW10gPSBIRUxMT19BUElfU0NPUEVTLFxuKTogeyBpZGVudGlmaWVyOiBzdHJpbmcgfSB7XG5cdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwaXNcIixcblx0XHRcImNyZWF0ZVwiLFxuXHRcdFwiLS1uYW1lXCIsXG5cdFx0bmFtZSxcblx0XHRcIi0taWRlbnRpZmllclwiLFxuXHRcdGlkZW50aWZpZXIsXG5cdFx0XCItLXNjb3Blc1wiLFxuXHRcdHNjb3Blcy5qb2luKFwiLFwiKSxcblx0XHQvLyBSQkFDOiBvbmx5IHBlcm1pc3Npb25zIGFzc2lnbmVkIHRvIHRoZSB1c2VyL3JvbGUgYXBwZWFyIG9uIHRoZSB0b2tlbi5cblx0XHRcIi0tZW5mb3JjZS1wb2xpY2llc1wiLFxuXHRcdC8vIEluY2x1ZGUgQXV0aDAgYHBlcm1pc3Npb25zW11gIGNsYWltIChjb25zdW1lZCBieSBzYW1wbGUgcHJpbmNpcGFsTWFwcGVyKS5cblx0XHRcIi0tdG9rZW4tZGlhbGVjdFwiLFxuXHRcdFwiYWNjZXNzX3Rva2VuX2F1dGh6XCIsXG5cdFx0XCItLWpzb25cIixcblx0XHRcIi0tbm8taW5wdXRcIixcblx0XSk7XG5cdHJldHVybiBwYXJzZUpzb25PdXRwdXQob3V0KTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGFuIEFQSSdzIHNjb3BlcyBhbmQgZW5hYmxlIFJCQUMgcG9saWN5IGVuZm9yY2VtZW50LlxuICogQXV0aDAgQ0xJIGAtLXNjb3Blc2AgcmVwbGFjZXMgdGhlIGZ1bGwgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlQXBpU2NvcGVzKFxuXHRpZGVudGlmaWVyOiBzdHJpbmcsXG5cdHNjb3BlczogcmVhZG9ubHkgc3RyaW5nW10gPSBIRUxMT19BUElfU0NPUEVTLFxuKTogdm9pZCB7XG5cdHJ1bkF1dGgwKFtcblx0XHRcImFwaXNcIixcblx0XHRcInVwZGF0ZVwiLFxuXHRcdGlkZW50aWZpZXIsXG5cdFx0XCItLXNjb3Blc1wiLFxuXHRcdHNjb3Blcy5qb2luKFwiLFwiKSxcblx0XHRcIi0tZW5mb3JjZS1wb2xpY2llc1wiLFxuXHRcdFwiLS10b2tlbi1kaWFsZWN0XCIsXG5cdFx0XCJhY2Nlc3NfdG9rZW5fYXV0aHpcIixcblx0XHRcIi0tbm8taW5wdXRcIixcblx0XSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTcGFBcHAoXG5cdG5hbWU6IHN0cmluZyxcblx0Y2FsbGJhY2tVcmxzOiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSxcbik6IHsgY2xpZW50X2lkOiBzdHJpbmcgfSB7XG5cdGNvbnN0IGNhbGxiYWNrcyA9IHR5cGVvZiBjYWxsYmFja1VybHMgPT09IFwic3RyaW5nXCIgPyBjYWxsYmFja1VybHMgOiBjYWxsYmFja1VybHMuam9pbihcIixcIik7XG5cdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwcHNcIixcblx0XHRcImNyZWF0ZVwiLFxuXHRcdFwiLS1uYW1lXCIsXG5cdFx0bmFtZSxcblx0XHRcIi0tdHlwZVwiLFxuXHRcdFwic3BhXCIsXG5cdFx0XCItLWNhbGxiYWNrc1wiLFxuXHRcdGNhbGxiYWNrcyxcblx0XHRcIi0tanNvblwiLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcblx0Y29uc3QgYXBwID0gcGFyc2VKc29uT3V0cHV0PHsgY2xpZW50X2lkPzogc3RyaW5nOyBjbGllbnRJZD86IHN0cmluZyB9PihvdXQpO1xuXHRjb25zdCBjbGllbnRJZCA9IGFwcC5jbGllbnRfaWQgPz8gYXBwLmNsaWVudElkO1xuXHRpZiAoIWNsaWVudElkKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0YEF1dGgwIGNyZWF0ZSBTUEEgcmVzcG9uc2UgbWlzc2luZyBjbGllbnRfaWQuIHN0ZG91dDogJHtvdXQuc2xpY2UoMCwgMzAwKX1gLFxuXHRcdCk7XG5cdH1cblx0cmV0dXJuIHsgY2xpZW50X2lkOiBjbGllbnRJZCB9O1xufVxuXG5leHBvcnQgdHlwZSBBdXRoMEFwcCA9IHsgY2xpZW50X2lkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gbGlzdEFwcHMoKTogQXV0aDBBcHBbXSB7XG5cdHRyeSB7XG5cdFx0Y29uc3Qgb3V0ID0gcnVuQXV0aDAoW1wiYXBwc1wiLCBcImxpc3RcIiwgXCItLWpzb25cIiwgXCItLW5vLWlucHV0XCJdKTtcblx0XHRjb25zdCBhcHBzID1cblx0XHRcdHBhcnNlSnNvbk91dHB1dDxBcnJheTx7IGNsaWVudF9pZD86IHN0cmluZzsgY2xpZW50SWQ/OiBzdHJpbmc7IG5hbWU/OiBzdHJpbmcgfT4+KG91dCk7XG5cdFx0cmV0dXJuIGFwcHNcblx0XHRcdC5tYXAoKGEpID0+ICh7XG5cdFx0XHRcdGNsaWVudF9pZDogYS5jbGllbnRfaWQgPz8gYS5jbGllbnRJZCA/PyBcIlwiLFxuXHRcdFx0XHRuYW1lOiBhLm5hbWUgPz8gXCJcIixcblx0XHRcdH0pKVxuXHRcdFx0LmZpbHRlcigoYSkgPT4gYS5jbGllbnRfaWQgJiYgYS5uYW1lKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVyciBpbnN0YW5jZW9mIEF1dGgwQXV0aEVycm9yKSB0aHJvdyBlcnI7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTcGFDYWxsYmFja3MoXG5cdGNsaWVudElkOiBzdHJpbmcsXG5cdGNhbGxiYWNrVXJsczogc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW10sXG4pOiB2b2lkIHtcblx0Y29uc3QgY2FsbGJhY2tzID0gdHlwZW9mIGNhbGxiYWNrVXJscyA9PT0gXCJzdHJpbmdcIiA/IGNhbGxiYWNrVXJscyA6IGNhbGxiYWNrVXJscy5qb2luKFwiLFwiKTtcblx0cnVuQXV0aDAoW1wiYXBwc1wiLCBcInVwZGF0ZVwiLCBjbGllbnRJZCwgXCItLWNhbGxiYWNrc1wiLCBjYWxsYmFja3MsIFwiLS1uby1pbnB1dFwiXSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgUG9zdG1hbiBTUEEsIG9yIHJldXNlIGFuIGV4aXN0aW5nIGFwcCB3aXRoIHRoZSBzYW1lIG5hbWUgKHJlLXNjYWZmb2xkKS5cbiAqIEFsd2F5cyByZXR1cm5zIGEgY2xpZW50X2lkIHN1aXRhYmxlIGZvciBQb3N0bWFuIGF1dGgwQ2xpZW50SWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTcGFBcHAoXG5cdG5hbWU6IHN0cmluZyxcblx0Y2FsbGJhY2tVcmxzOiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSxcbik6IHsgY2xpZW50X2lkOiBzdHJpbmc7IHJldXNlZDogYm9vbGVhbiB9IHtcblx0Y29uc3QgZXhpc3RpbmcgPSBsaXN0QXBwcygpLmZpbmQoKGEpID0+IGEubmFtZSA9PT0gbmFtZSk7XG5cdGlmIChleGlzdGluZykge1xuXHRcdHRyeSB7XG5cdFx0XHR1cGRhdGVTcGFDYWxsYmFja3MoZXhpc3RpbmcuY2xpZW50X2lkLCBjYWxsYmFja1VybHMpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0Ly8gQ2FsbGJhY2tzIG1heSBhbHJlYWR5IG1hdGNoOyBzdGlsbCB1c2FibGUgZm9yIFBvc3RtYW4uXG5cdFx0fVxuXHRcdHJldHVybiB7IGNsaWVudF9pZDogZXhpc3RpbmcuY2xpZW50X2lkLCByZXVzZWQ6IHRydWUgfTtcblx0fVxuXHRyZXR1cm4geyAuLi5jcmVhdGVTcGFBcHAobmFtZSwgY2FsbGJhY2tVcmxzKSwgcmV1c2VkOiBmYWxzZSB9O1xufVxuXG50eXBlIEF1dGgwQ29ubmVjdGlvbiA9IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBzdHJhdGVneTogc3RyaW5nIH07XG5cbi8qKiBFbmFibGUgYSBkYXRhYmFzZSBjb25uZWN0aW9uIGZvciBhbiBhcHBsaWNhdGlvbiAocmVxdWlyZWQgZm9yIHVzZXJuYW1lL3Bhc3N3b3JkIGxvZ2luKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVDb25uZWN0aW9uRm9yQ2xpZW50KGNvbm5lY3Rpb25OYW1lOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpOiB2b2lkIHtcblx0Y29uc3QgbGlzdE91dCA9IHJ1bkF1dGgwKFtcImFwaVwiLCBcImdldFwiLCBcImNvbm5lY3Rpb25zXCIsIFwiLS1uby1pbnB1dFwiXSk7XG5cdGNvbnN0IGNvbm5lY3Rpb25zID0gcGFyc2VKc29uT3V0cHV0PEF1dGgwQ29ubmVjdGlvbltdPihsaXN0T3V0KTtcblx0Y29uc3QgY29ubmVjdGlvbiA9IGNvbm5lY3Rpb25zLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gY29ubmVjdGlvbk5hbWUpO1xuXHRpZiAoIWNvbm5lY3Rpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEF1dGgwIGNvbm5lY3Rpb24gbm90IGZvdW5kOiAke2Nvbm5lY3Rpb25OYW1lfWApO1xuXHR9XG5cblx0Y29uc3QgY2xpZW50c091dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwaVwiLFxuXHRcdFwiZ2V0XCIsXG5cdFx0YGNvbm5lY3Rpb25zLyR7Y29ubmVjdGlvbi5pZH0vY2xpZW50c2AsXG5cdFx0XCItLW5vLWlucHV0XCIsXG5cdF0pO1xuXHRjb25zdCB7IGNsaWVudHMgfSA9IHBhcnNlSnNvbk91dHB1dDx7IGNsaWVudHM6IEFycmF5PHsgY2xpZW50X2lkOiBzdHJpbmcgfT4gfT4oY2xpZW50c091dCk7XG5cdGlmIChjbGllbnRzLnNvbWUoKGMpID0+IGMuY2xpZW50X2lkID09PSBjbGllbnRJZCkpIHJldHVybjtcblxuXHQvLyBEZWRpY2F0ZWQgZW5hYmxlZC1jbGllbnRzIGVuZHBvaW50IChlbmFibGVkX2NsaWVudHMgb24gY29ubmVjdGlvbiBQQVRDSCBpcyBkZXByZWNhdGVkKS5cblx0cnVuQXV0aDAoW1xuXHRcdFwiYXBpXCIsXG5cdFx0XCJwYXRjaFwiLFxuXHRcdGBjb25uZWN0aW9ucy8ke2Nvbm5lY3Rpb24uaWR9L2NsaWVudHNgLFxuXHRcdFwiLS1kYXRhXCIsXG5cdFx0SlNPTi5zdHJpbmdpZnkoW3sgY2xpZW50X2lkOiBjbGllbnRJZCwgc3RhdHVzOiB0cnVlIH1dKSxcblx0XHRcIi0tbm8taW5wdXRcIixcblx0XSk7XG59XG5cbmV4cG9ydCB0eXBlIEFkbWluRGF0YWJhc2VVc2VyID0ge1xuXHR1c2VyX2lkOiBzdHJpbmc7XG5cdGVtYWlsOiBzdHJpbmc7XG5cdHBhc3N3b3JkOiBzdHJpbmc7XG5cdHVzZXJuYW1lOiBzdHJpbmc7XG59O1xuXG4vKiogU3Ryb25nIGRlZmF1bHQgcGFzc3dvcmQgd2hlbiB0aGUgc2NhZmZvbGRlciBjYWxsZXIgbGVhdmVzIHBhc3N3b3JkIGJsYW5rLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQWRtaW5QYXNzd29yZCgpOiBzdHJpbmcge1xuXHRyZXR1cm4gYCR7cmFuZG9tQnl0ZXMoMTIpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpfWFBMSFgO1xufVxuXG5mdW5jdGlvbiBpc1VzZXJBbHJlYWR5RXhpc3RzRXJyb3IoZXJyOiB1bmtub3duKTogYm9vbGVhbiB7XG5cdGNvbnN0IHRleHQgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cdHJldHVybiAvYWxyZWFkeSBleGlzdHN8dXNlciBleGlzdHN8Q29uZmxpY3R8NDA5L2kudGVzdCh0ZXh0KTtcbn1cblxuLyoqIExvb2sgdXAgYSB1c2VyIGJ5IGVtYWlsIChNYW5hZ2VtZW50IEFQSSB1c2Vycy1ieS1lbWFpbCkuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFVzZXJCeUVtYWlsKGVtYWlsOiBzdHJpbmcpOiB7IHVzZXJfaWQ6IHN0cmluZzsgZW1haWw6IHN0cmluZyB9IHwgbnVsbCB7XG5cdGNvbnN0IG91dCA9IHJ1bkF1dGgwKFtcblx0XHRcImFwaVwiLFxuXHRcdFwiZ2V0XCIsXG5cdFx0YHVzZXJzLWJ5LWVtYWlsP2VtYWlsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGVtYWlsKX1gLFxuXHRcdFwiLS1uby1pbnB1dFwiLFxuXHRdKTtcblx0Y29uc3QgdXNlcnMgPSBwYXJzZUpzb25PdXRwdXQ8QXJyYXk8eyB1c2VyX2lkPzogc3RyaW5nOyBlbWFpbD86IHN0cmluZyB9Pj4ob3V0KTtcblx0Y29uc3QgdXNlciA9IHVzZXJzLmZpbmQoKHUpID0+IHUudXNlcl9pZCAmJiB1LmVtYWlsKTtcblx0aWYgKCF1c2VyPy51c2VyX2lkIHx8ICF1c2VyLmVtYWlsKSByZXR1cm4gbnVsbDtcblx0cmV0dXJuIHsgdXNlcl9pZDogdXNlci51c2VyX2lkLCBlbWFpbDogdXNlci5lbWFpbCB9O1xufVxuXG4vKiogUmVzZXQgcGFzc3dvcmQgc28gYSByZS1zY2FmZm9sZCBjYW4gd3JpdGUgYSBrbm93biBwYXNzd29yZCB0byAuZW52LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVVzZXJQYXNzd29yZCh1c2VySWQ6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IHZvaWQge1xuXHRydW5BdXRoMChbXG5cdFx0XCJhcGlcIixcblx0XHRcInBhdGNoXCIsXG5cdFx0YHVzZXJzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJJZCl9YCxcblx0XHRcIi0tZGF0YVwiLFxuXHRcdEpTT04uc3RyaW5naWZ5KHsgcGFzc3dvcmQsIGNvbm5lY3Rpb246IERCX0NPTk5FQ1RJT05fTkFNRSB9KSxcblx0XHRcIi0tbm8taW5wdXRcIixcblx0XSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgREIgY29ubmVjdGlvbiByb290LWFkbWluIHVzZXIgZm9yIGxvY2FsIC8gUG9zdG1hbiBsb2dpbi5cbiAqIElmIHRoZSB1c2VyIGFscmVhZHkgZXhpc3RzLCBsb29rIHRoZW0gdXAsIHJlc2V0IHBhc3N3b3JkIHRvIGBpbnB1dC5wYXNzd29yZGAsXG4gKiBhbmQgcmV0dXJuIHRoYXQgaWRlbnRpdHkgc28gY2FsbGVycyBjYW4gc3RpbGwgd3JpdGUgLmVudiBjcmVkZW50aWFscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkbWluRGF0YWJhc2VVc2VyKGlucHV0OiB7XG5cdGVtYWlsOiBzdHJpbmc7XG5cdHBhc3N3b3JkOiBzdHJpbmc7XG5cdHVzZXJuYW1lOiBzdHJpbmc7XG59KTogQWRtaW5EYXRhYmFzZVVzZXIge1xuXHRjb25zdCBib2R5ID0ge1xuXHRcdGVtYWlsOiBpbnB1dC5lbWFpbCxcblx0XHRjb25uZWN0aW9uOiBEQl9DT05ORUNUSU9OX05BTUUsXG5cdFx0cGFzc3dvcmQ6IGlucHV0LnBhc3N3b3JkLFxuXHRcdG5hbWU6IGlucHV0LnVzZXJuYW1lLFxuXHRcdGVtYWlsX3ZlcmlmaWVkOiB0cnVlLFxuXHRcdHZlcmlmeV9lbWFpbDogZmFsc2UsXG5cdFx0YXBwX21ldGFkYXRhOiB7IHJvbGVzOiBbXCJhZG1pblwiXSB9LFxuXHR9O1xuXG5cdHRyeSB7XG5cdFx0Y29uc3Qgb3V0ID0gcnVuQXV0aDAoW1xuXHRcdFx0XCJhcGlcIixcblx0XHRcdFwicG9zdFwiLFxuXHRcdFx0XCJ1c2Vyc1wiLFxuXHRcdFx0XCItLWRhdGFcIixcblx0XHRcdEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuXHRcdFx0XCItLW5vLWlucHV0XCIsXG5cdFx0XSk7XG5cdFx0Y29uc3QgdXNlciA9IHBhcnNlSnNvbk91dHB1dDx7IHVzZXJfaWQ/OiBzdHJpbmc7IGVtYWlsPzogc3RyaW5nIH0+KG91dCk7XG5cdFx0aWYgKCF1c2VyLnVzZXJfaWQgfHwgIXVzZXIuZW1haWwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YEF1dGgwIGNyZWF0ZSB1c2VyIHJlc3BvbnNlIG1pc3NpbmcgdXNlcl9pZC9lbWFpbC4gc3Rkb3V0OiAke291dC5zbGljZSgwLCAzMDApfWAsXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0dXNlcl9pZDogdXNlci51c2VyX2lkLFxuXHRcdFx0ZW1haWw6IHVzZXIuZW1haWwsXG5cdFx0XHRwYXNzd29yZDogaW5wdXQucGFzc3dvcmQsXG5cdFx0XHR1c2VybmFtZTogaW5wdXQudXNlcm5hbWUsXG5cdFx0fTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKCFpc1VzZXJBbHJlYWR5RXhpc3RzRXJyb3IoZXJyKSkgdGhyb3cgZXJyO1xuXG5cdFx0Y29uc3QgZXhpc3RpbmcgPSBmaW5kVXNlckJ5RW1haWwoaW5wdXQuZW1haWwpO1xuXHRcdGlmICghZXhpc3RpbmcpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YEF1dGgwIHVzZXIgYWxyZWFkeSBleGlzdHMgZm9yICR7aW5wdXQuZW1haWx9LCBidXQgbG9va3VwIGJ5IGVtYWlsIHJldHVybmVkIG5vIHVzZXIuYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dXBkYXRlVXNlclBhc3N3b3JkKGV4aXN0aW5nLnVzZXJfaWQsIGlucHV0LnBhc3N3b3JkKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dXNlcl9pZDogZXhpc3RpbmcudXNlcl9pZCxcblx0XHRcdGVtYWlsOiBleGlzdGluZy5lbWFpbCxcblx0XHRcdHBhc3N3b3JkOiBpbnB1dC5wYXNzd29yZCxcblx0XHRcdHVzZXJuYW1lOiBpbnB1dC51c2VybmFtZSxcblx0XHR9O1xuXHR9XG59XG5cbmV4cG9ydCB7IFJFUVVJUkVEX1NDT1BFUyB9O1xuIl0sIm5hbWVzIjpbImV4ZWNGaWxlU3luYyIsInNwYXduU3luYyIsInJhbmRvbUJ5dGVzIiwiUkVRVUlSRURfU0NPUEVTIiwiam9pbiIsIkFQSV9USU1FT1VUX01TIiwiSEVMTE9fQVBJX1NDT1BFUyIsIkRCX0NPTk5FQ1RJT05fTkFNRSIsIkF1dGgwQXV0aEVycm9yIiwiRXJyb3IiLCJtZXNzYWdlIiwibmFtZSIsImlzQXV0aEVycm9yIiwidGV4dCIsImluY2x1ZGVzIiwicGFyc2VKc29uT3V0cHV0Iiwic3Rkb3V0Iiwic3RhcnQiLCJpbmRleE9mIiwiYXJyYXlTdGFydCIsImlkeCIsIk1hdGgiLCJtaW4iLCJzbGljZSIsIkpTT04iLCJwYXJzZSIsInJ1bkF1dGgwIiwiYXJncyIsInJlc3VsdCIsImVuY29kaW5nIiwidGltZW91dCIsImlucHV0Iiwic3RkaW8iLCJlcnJvciIsIm1zZyIsImNvZGUiLCJzdGF0dXMiLCJzdGRlcnIiLCJpc0luc3RhbGxlZCIsImxpc3RUZW5hbnRzIiwib3V0IiwibG9naW4iLCJsaXN0QXBpcyIsImVyciIsImNyZWF0ZUFwaSIsImlkZW50aWZpZXIiLCJzY29wZXMiLCJ1cGRhdGVBcGlTY29wZXMiLCJjcmVhdGVTcGFBcHAiLCJjYWxsYmFja1VybHMiLCJjYWxsYmFja3MiLCJhcHAiLCJjbGllbnRJZCIsImNsaWVudF9pZCIsImxpc3RBcHBzIiwiYXBwcyIsIm1hcCIsImEiLCJmaWx0ZXIiLCJ1cGRhdGVTcGFDYWxsYmFja3MiLCJlbnN1cmVTcGFBcHAiLCJleGlzdGluZyIsImZpbmQiLCJyZXVzZWQiLCJlbmFibGVDb25uZWN0aW9uRm9yQ2xpZW50IiwiY29ubmVjdGlvbk5hbWUiLCJsaXN0T3V0IiwiY29ubmVjdGlvbnMiLCJjb25uZWN0aW9uIiwiYyIsImNsaWVudHNPdXQiLCJpZCIsImNsaWVudHMiLCJzb21lIiwic3RyaW5naWZ5IiwiZ2VuZXJhdGVBZG1pblBhc3N3b3JkIiwidG9TdHJpbmciLCJpc1VzZXJBbHJlYWR5RXhpc3RzRXJyb3IiLCJTdHJpbmciLCJ0ZXN0IiwiZmluZFVzZXJCeUVtYWlsIiwiZW1haWwiLCJlbmNvZGVVUklDb21wb25lbnQiLCJ1c2VycyIsInVzZXIiLCJ1IiwidXNlcl9pZCIsInVwZGF0ZVVzZXJQYXNzd29yZCIsInVzZXJJZCIsInBhc3N3b3JkIiwiY3JlYXRlQWRtaW5EYXRhYmFzZVVzZXIiLCJib2R5IiwidXNlcm5hbWUiLCJlbWFpbF92ZXJpZmllZCIsInZlcmlmeV9lbWFpbCIsImFwcF9tZXRhZGF0YSIsInJvbGVzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxZQUFZLEVBQUVDLFNBQVMsUUFBUSxxQkFBcUI7QUFDN0QsU0FBU0MsV0FBVyxRQUFRLGNBQWM7QUFFMUMsNkVBQTZFLEdBQzdFLE1BQU1DLGtCQUFrQjtJQUN2QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0EsQ0FBQ0MsSUFBSSxDQUFDO0FBRVAsMEZBQTBGLEdBQzFGLE1BQU1DLGlCQUFpQjtBQUV2QixpRUFBaUUsR0FDakUsT0FBTyxNQUFNQyxtQkFBbUI7SUFDL0I7SUFDQTtJQUNBO0lBQ0E7Q0FDQSxDQUFVO0FBRVgsT0FBTyxNQUFNQyxxQkFBcUIsbUNBQW1DO0FBRXJFLE9BQU8sTUFBTUMsdUJBQXVCQztJQUNuQyxZQUFtQkMsT0FBZSxDQUFFO1FBQ25DLEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUNDLElBQUksR0FBRztJQUNiO0FBQ0Q7QUFFQSxtRkFBbUYsR0FDbkYsU0FBU0MsWUFBWUMsSUFBWTtJQUNoQyxPQUNDQSxLQUFLQyxRQUFRLENBQUMseUJBQ2RELEtBQUtDLFFBQVEsQ0FBQyxhQUNkRCxLQUFLQyxRQUFRLENBQUM7QUFFaEI7QUFFQSw4Q0FBOEMsR0FDOUMsU0FBU0MsZ0JBQW1CQyxNQUFjO0lBQ3pDLE1BQU1DLFFBQVFELE9BQU9FLE9BQU8sQ0FBQztJQUM3QixNQUFNQyxhQUFhSCxPQUFPRSxPQUFPLENBQUM7SUFDbEMsSUFBSUUsTUFBTSxDQUFDO0lBQ1gsSUFBSUgsVUFBVSxDQUFDLEdBQUdHLE1BQU1EO1NBQ25CLElBQUlBLGVBQWUsQ0FBQyxHQUFHQyxNQUFNSDtTQUM3QkcsTUFBTUMsS0FBS0MsR0FBRyxDQUFDTCxPQUFPRTtJQUMzQixJQUFJQyxNQUFNLEdBQUcsTUFBTSxJQUFJWCxNQUFNLENBQUMsbUNBQW1DLEVBQUVPLE9BQU9PLEtBQUssQ0FBQyxHQUFHLE1BQU07SUFDekYsT0FBT0MsS0FBS0MsS0FBSyxDQUFDVCxPQUFPTyxLQUFLLENBQUNIO0FBQ2hDO0FBRUEsZ0dBQWdHLEdBQ2hHLFNBQVNNLFNBQVNDLElBQWM7SUFDL0IsTUFBTUMsU0FBUzNCLFVBQVUsU0FBUzBCLE1BQU07UUFDdkNFLFVBQVU7UUFDVkMsU0FBU3pCO1FBQ1QwQixPQUFPO1FBQ1BDLE9BQU87SUFDUjtJQUVBLElBQUlKLE9BQU9LLEtBQUssRUFBRTtRQUNqQixNQUFNQyxNQUFNTixPQUFPSyxLQUFLLENBQUN2QixPQUFPO1FBQ2hDLElBQUlFLFlBQVlzQixRQUFRLEFBQUNOLE9BQU9LLEtBQUssQ0FBMkJFLElBQUksS0FBSyxhQUFhO1lBQ3JGLE1BQU0sSUFBSTNCLGVBQWUwQjtRQUMxQjtRQUNBLE1BQU1OLE9BQU9LLEtBQUs7SUFDbkI7SUFFQSxJQUFJTCxPQUFPUSxNQUFNLEtBQUssR0FBRztRQUN4QixNQUFNQyxTQUFTVCxPQUFPUyxNQUFNLElBQUk7UUFDaEMsSUFBSXpCLFlBQVl5QixTQUFTLE1BQU0sSUFBSTdCLGVBQWU2QjtRQUNsRCxNQUFNLElBQUk1QixNQUFNNEIsVUFBVSxDQUFDLHVCQUF1QixFQUFFVCxPQUFPUSxNQUFNLEVBQUU7SUFDcEU7SUFFQSxPQUFPUixPQUFPWixNQUFNO0FBQ3JCO0FBT0EsT0FBTyxTQUFTc0I7SUFDZixJQUFJO1FBQ0h0QyxhQUFhLFNBQVM7WUFBQztTQUFZLEVBQUU7WUFBRWdDLE9BQU87UUFBTztRQUNyRCxPQUFPO0lBQ1IsRUFBRSxPQUFNO1FBQ1AsT0FBTztJQUNSO0FBQ0Q7QUFFQSxPQUFPLFNBQVNPO0lBQ2YsSUFBSTtRQUNILE1BQU1DLE1BQU14QyxhQUFhLFNBQVM7WUFBQztZQUFXO1lBQVE7U0FBUyxFQUFFO1lBQ2hFNkIsVUFBVTtZQUNWRyxPQUFPO1FBQ1I7UUFDQSxPQUFPUixLQUFLQyxLQUFLLENBQUNlO0lBQ25CLEVBQUUsT0FBTTtRQUNQLE9BQU8sRUFBRTtJQUNWO0FBQ0Q7QUFFQSxPQUFPLFNBQVNDO0lBQ2YsTUFBTWIsU0FBUzNCLFVBQVUsU0FBUztRQUFDO1FBQVM7UUFBWUU7S0FBZ0IsRUFBRTtRQUN6RTZCLE9BQU87SUFDUjtJQUNBLE9BQU9KLE9BQU9RLE1BQU0sS0FBSztBQUMxQjtBQUVBLE9BQU8sU0FBU007SUFDZixJQUFJO1FBQ0gsTUFBTUYsTUFBTWQsU0FBUztZQUFDO1lBQVE7WUFBUTtZQUFVO1NBQWE7UUFDN0QsT0FBT1gsZ0JBQWdCeUI7SUFDeEIsRUFBRSxPQUFPRyxLQUFLO1FBQ2IsSUFBSUEsZUFBZW5DLGdCQUFnQixNQUFNbUM7UUFDekMsT0FBTyxFQUFFO0lBQ1Y7QUFDRDtBQUVBLE9BQU8sU0FBU0MsVUFDZmpDLElBQVksRUFDWmtDLFVBQWtCLEVBQ2xCQyxTQUE0QnhDLGdCQUFnQjtJQUU1QyxNQUFNa0MsTUFBTWQsU0FBUztRQUNwQjtRQUNBO1FBQ0E7UUFDQWY7UUFDQTtRQUNBa0M7UUFDQTtRQUNBQyxPQUFPMUMsSUFBSSxDQUFDO1FBQ1osd0VBQXdFO1FBQ3hFO1FBQ0EsNEVBQTRFO1FBQzVFO1FBQ0E7UUFDQTtRQUNBO0tBQ0E7SUFDRCxPQUFPVyxnQkFBZ0J5QjtBQUN4QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBU08sZ0JBQ2ZGLFVBQWtCLEVBQ2xCQyxTQUE0QnhDLGdCQUFnQjtJQUU1Q29CLFNBQVM7UUFDUjtRQUNBO1FBQ0FtQjtRQUNBO1FBQ0FDLE9BQU8xQyxJQUFJLENBQUM7UUFDWjtRQUNBO1FBQ0E7UUFDQTtLQUNBO0FBQ0Y7QUFFQSxPQUFPLFNBQVM0QyxhQUNmckMsSUFBWSxFQUNac0MsWUFBd0M7SUFFeEMsTUFBTUMsWUFBWSxPQUFPRCxpQkFBaUIsV0FBV0EsZUFBZUEsYUFBYTdDLElBQUksQ0FBQztJQUN0RixNQUFNb0MsTUFBTWQsU0FBUztRQUNwQjtRQUNBO1FBQ0E7UUFDQWY7UUFDQTtRQUNBO1FBQ0E7UUFDQXVDO1FBQ0E7UUFDQTtLQUNBO0lBQ0QsTUFBTUMsTUFBTXBDLGdCQUEyRHlCO0lBQ3ZFLE1BQU1ZLFdBQVdELElBQUlFLFNBQVMsSUFBSUYsSUFBSUMsUUFBUTtJQUM5QyxJQUFJLENBQUNBLFVBQVU7UUFDZCxNQUFNLElBQUkzQyxNQUNULENBQUMscURBQXFELEVBQUUrQixJQUFJakIsS0FBSyxDQUFDLEdBQUcsTUFBTTtJQUU3RTtJQUNBLE9BQU87UUFBRThCLFdBQVdEO0lBQVM7QUFDOUI7QUFJQSxPQUFPLFNBQVNFO0lBQ2YsSUFBSTtRQUNILE1BQU1kLE1BQU1kLFNBQVM7WUFBQztZQUFRO1lBQVE7WUFBVTtTQUFhO1FBQzdELE1BQU02QixPQUNMeEMsZ0JBQWlGeUI7UUFDbEYsT0FBT2UsS0FDTEMsR0FBRyxDQUFDLENBQUNDLElBQU8sQ0FBQTtnQkFDWkosV0FBV0ksRUFBRUosU0FBUyxJQUFJSSxFQUFFTCxRQUFRLElBQUk7Z0JBQ3hDekMsTUFBTThDLEVBQUU5QyxJQUFJLElBQUk7WUFDakIsQ0FBQSxHQUNDK0MsTUFBTSxDQUFDLENBQUNELElBQU1BLEVBQUVKLFNBQVMsSUFBSUksRUFBRTlDLElBQUk7SUFDdEMsRUFBRSxPQUFPZ0MsS0FBSztRQUNiLElBQUlBLGVBQWVuQyxnQkFBZ0IsTUFBTW1DO1FBQ3pDLE9BQU8sRUFBRTtJQUNWO0FBQ0Q7QUFFQSxPQUFPLFNBQVNnQixtQkFDZlAsUUFBZ0IsRUFDaEJILFlBQXdDO0lBRXhDLE1BQU1DLFlBQVksT0FBT0QsaUJBQWlCLFdBQVdBLGVBQWVBLGFBQWE3QyxJQUFJLENBQUM7SUFDdEZzQixTQUFTO1FBQUM7UUFBUTtRQUFVMEI7UUFBVTtRQUFlRjtRQUFXO0tBQWE7QUFDOUU7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVNVLGFBQ2ZqRCxJQUFZLEVBQ1pzQyxZQUF3QztJQUV4QyxNQUFNWSxXQUFXUCxXQUFXUSxJQUFJLENBQUMsQ0FBQ0wsSUFBTUEsRUFBRTlDLElBQUksS0FBS0E7SUFDbkQsSUFBSWtELFVBQVU7UUFDYixJQUFJO1lBQ0hGLG1CQUFtQkUsU0FBU1IsU0FBUyxFQUFFSjtRQUN4QyxFQUFFLE9BQU07UUFDUCx5REFBeUQ7UUFDMUQ7UUFDQSxPQUFPO1lBQUVJLFdBQVdRLFNBQVNSLFNBQVM7WUFBRVUsUUFBUTtRQUFLO0lBQ3REO0lBQ0EsT0FBTztRQUFFLEdBQUdmLGFBQWFyQyxNQUFNc0MsYUFBYTtRQUFFYyxRQUFRO0lBQU07QUFDN0Q7QUFJQSw0RkFBNEYsR0FDNUYsT0FBTyxTQUFTQywwQkFBMEJDLGNBQXNCLEVBQUViLFFBQWdCO0lBQ2pGLE1BQU1jLFVBQVV4QyxTQUFTO1FBQUM7UUFBTztRQUFPO1FBQWU7S0FBYTtJQUNwRSxNQUFNeUMsY0FBY3BELGdCQUFtQ21EO0lBQ3ZELE1BQU1FLGFBQWFELFlBQVlMLElBQUksQ0FBQyxDQUFDTyxJQUFNQSxFQUFFMUQsSUFBSSxLQUFLc0Q7SUFDdEQsSUFBSSxDQUFDRyxZQUFZO1FBQ2hCLE1BQU0sSUFBSTNELE1BQU0sQ0FBQyw0QkFBNEIsRUFBRXdELGdCQUFnQjtJQUNoRTtJQUVBLE1BQU1LLGFBQWE1QyxTQUFTO1FBQzNCO1FBQ0E7UUFDQSxDQUFDLFlBQVksRUFBRTBDLFdBQVdHLEVBQUUsQ0FBQyxRQUFRLENBQUM7UUFDdEM7S0FDQTtJQUNELE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUd6RCxnQkFBMkR1RDtJQUMvRSxJQUFJRSxRQUFRQyxJQUFJLENBQUMsQ0FBQ0osSUFBTUEsRUFBRWhCLFNBQVMsS0FBS0QsV0FBVztJQUVuRCwwRkFBMEY7SUFDMUYxQixTQUFTO1FBQ1I7UUFDQTtRQUNBLENBQUMsWUFBWSxFQUFFMEMsV0FBV0csRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUN0QztRQUNBL0MsS0FBS2tELFNBQVMsQ0FBQztZQUFDO2dCQUFFckIsV0FBV0Q7Z0JBQVVoQixRQUFRO1lBQUs7U0FBRTtRQUN0RDtLQUNBO0FBQ0Y7QUFTQSw4RUFBOEUsR0FDOUUsT0FBTyxTQUFTdUM7SUFDZixPQUFPLEdBQUd6RSxZQUFZLElBQUkwRSxRQUFRLENBQUMsYUFBYSxJQUFJLENBQUM7QUFDdEQ7QUFFQSxTQUFTQyx5QkFBeUJsQyxHQUFZO0lBQzdDLE1BQU05QixPQUFPOEIsZUFBZWxDLFFBQVFrQyxJQUFJakMsT0FBTyxHQUFHb0UsT0FBT25DO0lBQ3pELE9BQU8sMkNBQTJDb0MsSUFBSSxDQUFDbEU7QUFDeEQ7QUFFQSw2REFBNkQsR0FDN0QsT0FBTyxTQUFTbUUsZ0JBQWdCQyxLQUFhO0lBQzVDLE1BQU16QyxNQUFNZCxTQUFTO1FBQ3BCO1FBQ0E7UUFDQSxDQUFDLHFCQUFxQixFQUFFd0QsbUJBQW1CRCxRQUFRO1FBQ25EO0tBQ0E7SUFDRCxNQUFNRSxRQUFRcEUsZ0JBQTZEeUI7SUFDM0UsTUFBTTRDLE9BQU9ELE1BQU1yQixJQUFJLENBQUMsQ0FBQ3VCLElBQU1BLEVBQUVDLE9BQU8sSUFBSUQsRUFBRUosS0FBSztJQUNuRCxJQUFJLENBQUNHLE1BQU1FLFdBQVcsQ0FBQ0YsS0FBS0gsS0FBSyxFQUFFLE9BQU87SUFDMUMsT0FBTztRQUFFSyxTQUFTRixLQUFLRSxPQUFPO1FBQUVMLE9BQU9HLEtBQUtILEtBQUs7SUFBQztBQUNuRDtBQUVBLHdFQUF3RSxHQUN4RSxPQUFPLFNBQVNNLG1CQUFtQkMsTUFBYyxFQUFFQyxRQUFnQjtJQUNsRS9ELFNBQVM7UUFDUjtRQUNBO1FBQ0EsQ0FBQyxNQUFNLEVBQUV3RCxtQkFBbUJNLFNBQVM7UUFDckM7UUFDQWhFLEtBQUtrRCxTQUFTLENBQUM7WUFBRWU7WUFBVXJCLFlBQVk3RDtRQUFtQjtRQUMxRDtLQUNBO0FBQ0Y7QUFFQTs7OztDQUlDLEdBQ0QsT0FBTyxTQUFTbUYsd0JBQXdCM0QsS0FJdkM7SUFDQSxNQUFNNEQsT0FBTztRQUNaVixPQUFPbEQsTUFBTWtELEtBQUs7UUFDbEJiLFlBQVk3RDtRQUNaa0YsVUFBVTFELE1BQU0wRCxRQUFRO1FBQ3hCOUUsTUFBTW9CLE1BQU02RCxRQUFRO1FBQ3BCQyxnQkFBZ0I7UUFDaEJDLGNBQWM7UUFDZEMsY0FBYztZQUFFQyxPQUFPO2dCQUFDO2FBQVE7UUFBQztJQUNsQztJQUVBLElBQUk7UUFDSCxNQUFNeEQsTUFBTWQsU0FBUztZQUNwQjtZQUNBO1lBQ0E7WUFDQTtZQUNBRixLQUFLa0QsU0FBUyxDQUFDaUI7WUFDZjtTQUNBO1FBQ0QsTUFBTVAsT0FBT3JFLGdCQUFzRHlCO1FBQ25FLElBQUksQ0FBQzRDLEtBQUtFLE9BQU8sSUFBSSxDQUFDRixLQUFLSCxLQUFLLEVBQUU7WUFDakMsTUFBTSxJQUFJeEUsTUFDVCxDQUFDLDBEQUEwRCxFQUFFK0IsSUFBSWpCLEtBQUssQ0FBQyxHQUFHLE1BQU07UUFFbEY7UUFDQSxPQUFPO1lBQ04rRCxTQUFTRixLQUFLRSxPQUFPO1lBQ3JCTCxPQUFPRyxLQUFLSCxLQUFLO1lBQ2pCUSxVQUFVMUQsTUFBTTBELFFBQVE7WUFDeEJHLFVBQVU3RCxNQUFNNkQsUUFBUTtRQUN6QjtJQUNELEVBQUUsT0FBT2pELEtBQUs7UUFDYixJQUFJLENBQUNrQyx5QkFBeUJsQyxNQUFNLE1BQU1BO1FBRTFDLE1BQU1rQixXQUFXbUIsZ0JBQWdCakQsTUFBTWtELEtBQUs7UUFDNUMsSUFBSSxDQUFDcEIsVUFBVTtZQUNkLE1BQU0sSUFBSXBELE1BQ1QsQ0FBQyw4QkFBOEIsRUFBRXNCLE1BQU1rRCxLQUFLLENBQUMsdUNBQXVDLENBQUM7UUFFdkY7UUFFQU0sbUJBQW1CMUIsU0FBU3lCLE9BQU8sRUFBRXZELE1BQU0wRCxRQUFRO1FBQ25ELE9BQU87WUFDTkgsU0FBU3pCLFNBQVN5QixPQUFPO1lBQ3pCTCxPQUFPcEIsU0FBU29CLEtBQUs7WUFDckJRLFVBQVUxRCxNQUFNMEQsUUFBUTtZQUN4QkcsVUFBVTdELE1BQU02RCxRQUFRO1FBQ3pCO0lBQ0Q7QUFDRDtBQUVBLFNBQVN6RixlQUFlLEdBQUcifQ==
@@ -1,6 +1,19 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { join } from "node:path";
1
3
  import { detectPackageManager, promptForPackageManager } from "@decohere/nexus/interop";
2
4
  import { ask, closePrompt } from "../../domain/prompt.js";
5
+ import { WELL_KNOWN_FILES } from "../../models/const.js";
3
6
  import { formatScaffoldedFiles } from "./biome-format.js";
7
+ function readExistingEnvValue(workspace, key) {
8
+ try {
9
+ const raw = readFileSync(join(workspace.targetDir, ".env"), "utf8");
10
+ const line = raw.split("\n").find((l)=>l.startsWith(`${key}=`));
11
+ const value = line?.slice(key.length + 1).trim();
12
+ return value || undefined;
13
+ } catch {
14
+ return undefined;
15
+ }
16
+ }
4
17
  // State resolved during scaffold(), consumed by finalize().
5
18
  let _pm = null;
6
19
  let _shouldInstall = true;
@@ -11,6 +24,9 @@ async function getOptions(_workspace, cliOptions) {
11
24
  return {};
12
25
  }
13
26
  async function scaffold(workspace, options) {
27
+ // Local scaffold default — production deploys must set NODE_ENV explicitly.
28
+ const nodeEnv = readExistingEnvValue(workspace, "NODE_ENV") ?? "dev";
29
+ workspace.getModel(WELL_KNOWN_FILES.ENV_FILE)?.addEntry("NODE_ENV", nodeEnv);
14
30
  if (process.env.DECOHERE_BUILDER === "1") {
15
31
  _shouldInstall = false;
16
32
  return;
@@ -50,4 +66,4 @@ export const FinalizeFeature = {
50
66
  finalize
51
67
  };
52
68
 
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2ZpbmFsaXplLmZlYXR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYWNrYWdlTWFuYWdlciB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW50ZXJvcFwiO1xuaW1wb3J0IHsgZGV0ZWN0UGFja2FnZU1hbmFnZXIsIHByb21wdEZvclBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBhc2ssIGNsb3NlUHJvbXB0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9wcm9tcHQuanNcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlU2NhZmZvbGQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Byb2plY3QubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zY2FmZm9sZC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBmb3JtYXRTY2FmZm9sZGVkRmlsZXMgfSBmcm9tIFwiLi9iaW9tZS1mb3JtYXQuanNcIjtcblxuLy8gU3RhdGUgcmVzb2x2ZWQgZHVyaW5nIHNjYWZmb2xkKCksIGNvbnN1bWVkIGJ5IGZpbmFsaXplKCkuXG5sZXQgX3BtOiBQYWNrYWdlTWFuYWdlciB8IG51bGwgPSBudWxsO1xubGV0IF9zaG91bGRJbnN0YWxsID0gdHJ1ZTtcblxudHlwZSBGaW5hbGl6ZU9wdGlvbnMgPSB7XG5cdGluc3RhbGxEZXBlbmRlbmNpZXM/OiBcInllc1wiIHwgXCJub1wiO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3B0aW9ucyhcblx0X3dvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsXG5cdGNsaU9wdGlvbnM6IFBhcnRpYWw8RmluYWxpemVPcHRpb25zPixcbik6IFByb21pc2U8b2JqZWN0PiB7XG5cdGlmIChjbGlPcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgIT0gbnVsbCkge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gY2xpT3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzID09PSBcInllc1wiO1xuXHR9XG5cdHJldHVybiB7fTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhZmZvbGQoXG5cdHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsXG5cdG9wdGlvbnM6IEZpbmFsaXplT3B0aW9ucyxcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiA9PT0gXCIxXCIpIHtcblx0XHRfc2hvdWxkSW5zdGFsbCA9IGZhbHNlO1xuXHRcdHJldHVybjtcblx0fVxuXHRfcG0gPSBkZXRlY3RQYWNrYWdlTWFuYWdlcih3b3Jrc3BhY2UudGFyZ2V0RGlyKSA/PyAoYXdhaXQgcHJvbXB0Rm9yUGFja2FnZU1hbmFnZXIoKSk7XG5cdGlmIChvcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgIT0gbnVsbCkge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gb3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzID09PSBcInllc1wiO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGFuc3dlciA9IGF3YWl0IGFzayhcIlxcbkluc3RhbGwgZGVwZW5kZW5jaWVzIG5vdz8gW3llcy9ub10gKHllcyk6IFwiLCBcInllc1wiKTtcblx0X3Nob3VsZEluc3RhbGwgPSBhbnN3ZXIudG9Mb3dlckNhc2UoKSAhPT0gXCJub1wiO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5hbGl6ZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBfb3B0aW9uczogb2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG5cdC8vIExhc3Qgc2NhZmZvbGQgd3JpdGUgc3RlcDogbm9ybWFsaXplIGdlbmVyYXRlZCBzb3VyY2VzIGJlZm9yZSBpbnN0YWxsIC8gaGFuZG9mZi5cblx0Zm9ybWF0U2NhZmZvbGRlZEZpbGVzKHdvcmtzcGFjZS50YXJnZXREaXIpO1xuXG5cdGlmIChfc2hvdWxkSW5zdGFsbCkge1xuXHRcdGNvbnN0IHBtID0gX3BtITtcblx0XHRjb25zb2xlLmxvZyhgXFxuU2NhZmZvbGRlZCAke3dvcmtzcGFjZS5uYW1lfS4gSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi5cXG5gKTtcblx0XHRhd2FpdCBwbS5pbnN0YWxsKHsgY3dkOiB3b3Jrc3BhY2UudGFyZ2V0RGlyIH0pO1xuXHR9XG5cblx0Y29uc29sZS5sb2coYFxcbkRvbmUhICR7X3Nob3VsZEluc3RhbGwgPyBcIk5leHRcIiA6IFwiVG8gZ2V0IHN0YXJ0ZWQ6XCJ9IHN0ZXBzOlxcbmApO1xuXHRjb25zb2xlLmxvZyhgICBjZCAke3dvcmtzcGFjZS5uYW1lfWApO1xuXHRpZiAoIV9zaG91bGRJbnN0YWxsKSB7XG5cdFx0Y29uc3QgcG1OYW1lID0gX3BtPy5uYW1lID8/IFwicG5wbVwiO1xuXHRcdGNvbnNvbGUubG9nKGAgICR7cG1OYW1lfSBpbnN0YWxsYCk7XG5cdH1cblx0Y29uc29sZS5sb2coXCIgIGNvZGUgLiAgICAgICAgICMgb3BlbiBpbiBWUyBDb2RlXCIpO1xuXHRjb25zb2xlLmxvZyhcIiAgICAgICAgICAgICAgICAgIyB0aGVuOiBSZW9wZW4gaW4gQ29udGFpbmVyXFxuXCIpO1xuXG5cdC8vIERyb3AgcmVhZGxpbmUncyBzdGRpbiBob2xkIHNvIHRoZSBDTEkgLyBjb250YWluZXIgY2FuIGV4aXQuXG5cdGNsb3NlUHJvbXB0KCk7XG59XG5cbmV4cG9ydCBjb25zdCBGaW5hbGl6ZUZlYXR1cmU6IEZlYXR1cmUgPSB7IGdldE9wdGlvbnMsIHNjYWZmb2xkLCBmaW5hbGl6ZSB9O1xuIl0sIm5hbWVzIjpbImRldGVjdFBhY2thZ2VNYW5hZ2VyIiwicHJvbXB0Rm9yUGFja2FnZU1hbmFnZXIiLCJhc2siLCJjbG9zZVByb21wdCIsImZvcm1hdFNjYWZmb2xkZWRGaWxlcyIsIl9wbSIsIl9zaG91bGRJbnN0YWxsIiwiZ2V0T3B0aW9ucyIsIl93b3Jrc3BhY2UiLCJjbGlPcHRpb25zIiwiaW5zdGFsbERlcGVuZGVuY2llcyIsInNjYWZmb2xkIiwid29ya3NwYWNlIiwib3B0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJERUNPSEVSRV9CVUlMREVSIiwidGFyZ2V0RGlyIiwiYW5zd2VyIiwidG9Mb3dlckNhc2UiLCJmaW5hbGl6ZSIsIl9vcHRpb25zIiwicG0iLCJjb25zb2xlIiwibG9nIiwibmFtZSIsImluc3RhbGwiLCJjd2QiLCJwbU5hbWUiLCJGaW5hbGl6ZUZlYXR1cmUiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLG9CQUFvQixFQUFFQyx1QkFBdUIsUUFBUSwwQkFBMEI7QUFDeEYsU0FBU0MsR0FBRyxFQUFFQyxXQUFXLFFBQVEseUJBQXlCO0FBRzFELFNBQVNDLHFCQUFxQixRQUFRLG9CQUFvQjtBQUUxRCw0REFBNEQ7QUFDNUQsSUFBSUMsTUFBNkI7QUFDakMsSUFBSUMsaUJBQWlCO0FBTXJCLGVBQWVDLFdBQ2RDLFVBQTZCLEVBQzdCQyxVQUFvQztJQUVwQyxJQUFJQSxXQUFXQyxtQkFBbUIsSUFBSSxNQUFNO1FBQzNDSixpQkFBaUJHLFdBQVdDLG1CQUFtQixLQUFLO0lBQ3JEO0lBQ0EsT0FBTyxDQUFDO0FBQ1Q7QUFFQSxlQUFlQyxTQUNkQyxTQUE0QixFQUM1QkMsT0FBd0I7SUFFeEIsSUFBSUMsUUFBUUMsR0FBRyxDQUFDQyxnQkFBZ0IsS0FBSyxLQUFLO1FBQ3pDVixpQkFBaUI7UUFDakI7SUFDRDtJQUNBRCxNQUFNTCxxQkFBcUJZLFVBQVVLLFNBQVMsS0FBTSxNQUFNaEI7SUFDMUQsSUFBSVksUUFBUUgsbUJBQW1CLElBQUksTUFBTTtRQUN4Q0osaUJBQWlCTyxRQUFRSCxtQkFBbUIsS0FBSztRQUNqRDtJQUNEO0lBRUEsTUFBTVEsU0FBUyxNQUFNaEIsSUFBSSxnREFBZ0Q7SUFDekVJLGlCQUFpQlksT0FBT0MsV0FBVyxPQUFPO0FBQzNDO0FBRUEsZUFBZUMsU0FBU1IsU0FBNEIsRUFBRVMsUUFBZ0I7SUFDckUsa0ZBQWtGO0lBQ2xGakIsc0JBQXNCUSxVQUFVSyxTQUFTO0lBRXpDLElBQUlYLGdCQUFnQjtRQUNuQixNQUFNZ0IsS0FBS2pCO1FBQ1hrQixRQUFRQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUVaLFVBQVVhLElBQUksQ0FBQyw4QkFBOEIsQ0FBQztRQUMxRSxNQUFNSCxHQUFHSSxPQUFPLENBQUM7WUFBRUMsS0FBS2YsVUFBVUssU0FBUztRQUFDO0lBQzdDO0lBRUFNLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRWxCLGlCQUFpQixTQUFTLGtCQUFrQixTQUFTLENBQUM7SUFDN0VpQixRQUFRQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUVaLFVBQVVhLElBQUksRUFBRTtJQUNwQyxJQUFJLENBQUNuQixnQkFBZ0I7UUFDcEIsTUFBTXNCLFNBQVN2QixLQUFLb0IsUUFBUTtRQUM1QkYsUUFBUUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFSSxPQUFPLFFBQVEsQ0FBQztJQUNsQztJQUNBTCxRQUFRQyxHQUFHLENBQUM7SUFDWkQsUUFBUUMsR0FBRyxDQUFDO0lBRVosOERBQThEO0lBQzlEckI7QUFDRDtBQUVBLE9BQU8sTUFBTTBCLGtCQUEyQjtJQUFFdEI7SUFBWUk7SUFBVVM7QUFBUyxFQUFFIn0=
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2ZpbmFsaXplLmZlYXR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBkZXRlY3RQYWNrYWdlTWFuYWdlciwgcHJvbXB0Rm9yUGFja2FnZU1hbmFnZXIgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2ludGVyb3BcIjtcbmltcG9ydCB7IGFzaywgY2xvc2VQcm9tcHQgfSBmcm9tIFwiLi4vLi4vZG9tYWluL3Byb21wdC5qc1wiO1xuaW1wb3J0IHsgV0VMTF9LTk9XTl9GSUxFUyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgRW52RmlsZSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZW52LWZpbGUubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlU2NhZmZvbGQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Byb2plY3QubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zY2FmZm9sZC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBmb3JtYXRTY2FmZm9sZGVkRmlsZXMgfSBmcm9tIFwiLi9iaW9tZS1mb3JtYXQuanNcIjtcblxuZnVuY3Rpb24gcmVhZEV4aXN0aW5nRW52VmFsdWUod29ya3NwYWNlOiBXb3Jrc3BhY2VTY2FmZm9sZCwga2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHR0cnkge1xuXHRcdGNvbnN0IHJhdyA9IHJlYWRGaWxlU3luYyhqb2luKHdvcmtzcGFjZS50YXJnZXREaXIsIFwiLmVudlwiKSwgXCJ1dGY4XCIpO1xuXHRcdGNvbnN0IGxpbmUgPSByYXcuc3BsaXQoXCJcXG5cIikuZmluZCgobCkgPT4gbC5zdGFydHNXaXRoKGAke2tleX09YCkpO1xuXHRcdGNvbnN0IHZhbHVlID0gbGluZT8uc2xpY2Uoa2V5Lmxlbmd0aCArIDEpLnRyaW0oKTtcblx0XHRyZXR1cm4gdmFsdWUgfHwgdW5kZWZpbmVkO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG59XG5cbi8vIFN0YXRlIHJlc29sdmVkIGR1cmluZyBzY2FmZm9sZCgpLCBjb25zdW1lZCBieSBmaW5hbGl6ZSgpLlxubGV0IF9wbTogUGFja2FnZU1hbmFnZXIgfCBudWxsID0gbnVsbDtcbmxldCBfc2hvdWxkSW5zdGFsbCA9IHRydWU7XG5cbnR5cGUgRmluYWxpemVPcHRpb25zID0ge1xuXHRpbnN0YWxsRGVwZW5kZW5jaWVzPzogXCJ5ZXNcIiB8IFwibm9cIjtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE9wdGlvbnMoXG5cdF93b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLFxuXHRjbGlPcHRpb25zOiBQYXJ0aWFsPEZpbmFsaXplT3B0aW9ucz4sXG4pOiBQcm9taXNlPG9iamVjdD4ge1xuXHRpZiAoY2xpT3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzICE9IG51bGwpIHtcblx0XHRfc2hvdWxkSW5zdGFsbCA9IGNsaU9wdGlvbnMuaW5zdGFsbERlcGVuZGVuY2llcyA9PT0gXCJ5ZXNcIjtcblx0fVxuXHRyZXR1cm4ge307XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYWZmb2xkKFxuXHR3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLFxuXHRvcHRpb25zOiBGaW5hbGl6ZU9wdGlvbnMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0Ly8gTG9jYWwgc2NhZmZvbGQgZGVmYXVsdCDigJQgcHJvZHVjdGlvbiBkZXBsb3lzIG11c3Qgc2V0IE5PREVfRU5WIGV4cGxpY2l0bHkuXG5cdGNvbnN0IG5vZGVFbnYgPSByZWFkRXhpc3RpbmdFbnZWYWx1ZSh3b3Jrc3BhY2UsIFwiTk9ERV9FTlZcIikgPz8gXCJkZXZcIjtcblx0d29ya3NwYWNlLmdldE1vZGVsPEVudkZpbGU+KFdFTExfS05PV05fRklMRVMuRU5WX0ZJTEUpPy5hZGRFbnRyeShcIk5PREVfRU5WXCIsIG5vZGVFbnYpO1xuXG5cdGlmIChwcm9jZXNzLmVudi5ERUNPSEVSRV9CVUlMREVSID09PSBcIjFcIikge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gZmFsc2U7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdF9wbSA9IGRldGVjdFBhY2thZ2VNYW5hZ2VyKHdvcmtzcGFjZS50YXJnZXREaXIpID8/IChhd2FpdCBwcm9tcHRGb3JQYWNrYWdlTWFuYWdlcigpKTtcblx0aWYgKG9wdGlvbnMuaW5zdGFsbERlcGVuZGVuY2llcyAhPSBudWxsKSB7XG5cdFx0X3Nob3VsZEluc3RhbGwgPSBvcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgPT09IFwieWVzXCI7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgYW5zd2VyID0gYXdhaXQgYXNrKFwiXFxuSW5zdGFsbCBkZXBlbmRlbmNpZXMgbm93PyBbeWVzL25vXSAoeWVzKTogXCIsIFwieWVzXCIpO1xuXHRfc2hvdWxkSW5zdGFsbCA9IGFuc3dlci50b0xvd2VyQ2FzZSgpICE9PSBcIm5vXCI7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbmFsaXplKHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsIF9vcHRpb25zOiBvYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcblx0Ly8gTGFzdCBzY2FmZm9sZCB3cml0ZSBzdGVwOiBub3JtYWxpemUgZ2VuZXJhdGVkIHNvdXJjZXMgYmVmb3JlIGluc3RhbGwgLyBoYW5kb2ZmLlxuXHRmb3JtYXRTY2FmZm9sZGVkRmlsZXMod29ya3NwYWNlLnRhcmdldERpcik7XG5cblx0aWYgKF9zaG91bGRJbnN0YWxsKSB7XG5cdFx0Y29uc3QgcG0gPSBfcG0hO1xuXHRcdGNvbnNvbGUubG9nKGBcXG5TY2FmZm9sZGVkICR7d29ya3NwYWNlLm5hbWV9LiBJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLlxcbmApO1xuXHRcdGF3YWl0IHBtLmluc3RhbGwoeyBjd2Q6IHdvcmtzcGFjZS50YXJnZXREaXIgfSk7XG5cdH1cblxuXHRjb25zb2xlLmxvZyhgXFxuRG9uZSEgJHtfc2hvdWxkSW5zdGFsbCA/IFwiTmV4dFwiIDogXCJUbyBnZXQgc3RhcnRlZDpcIn0gc3RlcHM6XFxuYCk7XG5cdGNvbnNvbGUubG9nKGAgIGNkICR7d29ya3NwYWNlLm5hbWV9YCk7XG5cdGlmICghX3Nob3VsZEluc3RhbGwpIHtcblx0XHRjb25zdCBwbU5hbWUgPSBfcG0/Lm5hbWUgPz8gXCJwbnBtXCI7XG5cdFx0Y29uc29sZS5sb2coYCAgJHtwbU5hbWV9IGluc3RhbGxgKTtcblx0fVxuXHRjb25zb2xlLmxvZyhcIiAgY29kZSAuICAgICAgICAgIyBvcGVuIGluIFZTIENvZGVcIik7XG5cdGNvbnNvbGUubG9nKFwiICAgICAgICAgICAgICAgICAjIHRoZW46IFJlb3BlbiBpbiBDb250YWluZXJcXG5cIik7XG5cblx0Ly8gRHJvcCByZWFkbGluZSdzIHN0ZGluIGhvbGQgc28gdGhlIENMSSAvIGNvbnRhaW5lciBjYW4gZXhpdC5cblx0Y2xvc2VQcm9tcHQoKTtcbn1cblxuZXhwb3J0IGNvbnN0IEZpbmFsaXplRmVhdHVyZTogRmVhdHVyZSA9IHsgZ2V0T3B0aW9ucywgc2NhZmZvbGQsIGZpbmFsaXplIH07XG4iXSwibmFtZXMiOlsicmVhZEZpbGVTeW5jIiwiam9pbiIsImRldGVjdFBhY2thZ2VNYW5hZ2VyIiwicHJvbXB0Rm9yUGFja2FnZU1hbmFnZXIiLCJhc2siLCJjbG9zZVByb21wdCIsIldFTExfS05PV05fRklMRVMiLCJmb3JtYXRTY2FmZm9sZGVkRmlsZXMiLCJyZWFkRXhpc3RpbmdFbnZWYWx1ZSIsIndvcmtzcGFjZSIsImtleSIsInJhdyIsInRhcmdldERpciIsImxpbmUiLCJzcGxpdCIsImZpbmQiLCJsIiwic3RhcnRzV2l0aCIsInZhbHVlIiwic2xpY2UiLCJsZW5ndGgiLCJ0cmltIiwidW5kZWZpbmVkIiwiX3BtIiwiX3Nob3VsZEluc3RhbGwiLCJnZXRPcHRpb25zIiwiX3dvcmtzcGFjZSIsImNsaU9wdGlvbnMiLCJpbnN0YWxsRGVwZW5kZW5jaWVzIiwic2NhZmZvbGQiLCJvcHRpb25zIiwibm9kZUVudiIsImdldE1vZGVsIiwiRU5WX0ZJTEUiLCJhZGRFbnRyeSIsInByb2Nlc3MiLCJlbnYiLCJERUNPSEVSRV9CVUlMREVSIiwiYW5zd2VyIiwidG9Mb3dlckNhc2UiLCJmaW5hbGl6ZSIsIl9vcHRpb25zIiwicG0iLCJjb25zb2xlIiwibG9nIiwibmFtZSIsImluc3RhbGwiLCJjd2QiLCJwbU5hbWUiLCJGaW5hbGl6ZUZlYXR1cmUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFlBQVksUUFBUSxVQUFVO0FBQ3ZDLFNBQVNDLElBQUksUUFBUSxZQUFZO0FBRWpDLFNBQVNDLG9CQUFvQixFQUFFQyx1QkFBdUIsUUFBUSwwQkFBMEI7QUFDeEYsU0FBU0MsR0FBRyxFQUFFQyxXQUFXLFFBQVEseUJBQXlCO0FBQzFELFNBQVNDLGdCQUFnQixRQUFRLHdCQUF3QjtBQUl6RCxTQUFTQyxxQkFBcUIsUUFBUSxvQkFBb0I7QUFFMUQsU0FBU0MscUJBQXFCQyxTQUE0QixFQUFFQyxHQUFXO0lBQ3RFLElBQUk7UUFDSCxNQUFNQyxNQUFNWCxhQUFhQyxLQUFLUSxVQUFVRyxTQUFTLEVBQUUsU0FBUztRQUM1RCxNQUFNQyxPQUFPRixJQUFJRyxLQUFLLENBQUMsTUFBTUMsSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLFVBQVUsQ0FBQyxHQUFHUCxJQUFJLENBQUMsQ0FBQztRQUMvRCxNQUFNUSxRQUFRTCxNQUFNTSxNQUFNVCxJQUFJVSxNQUFNLEdBQUcsR0FBR0M7UUFDMUMsT0FBT0gsU0FBU0k7SUFDakIsRUFBRSxPQUFNO1FBQ1AsT0FBT0E7SUFDUjtBQUNEO0FBRUEsNERBQTREO0FBQzVELElBQUlDLE1BQTZCO0FBQ2pDLElBQUlDLGlCQUFpQjtBQU1yQixlQUFlQyxXQUNkQyxVQUE2QixFQUM3QkMsVUFBb0M7SUFFcEMsSUFBSUEsV0FBV0MsbUJBQW1CLElBQUksTUFBTTtRQUMzQ0osaUJBQWlCRyxXQUFXQyxtQkFBbUIsS0FBSztJQUNyRDtJQUNBLE9BQU8sQ0FBQztBQUNUO0FBRUEsZUFBZUMsU0FDZHBCLFNBQTRCLEVBQzVCcUIsT0FBd0I7SUFFeEIsNEVBQTRFO0lBQzVFLE1BQU1DLFVBQVV2QixxQkFBcUJDLFdBQVcsZUFBZTtJQUMvREEsVUFBVXVCLFFBQVEsQ0FBVTFCLGlCQUFpQjJCLFFBQVEsR0FBR0MsU0FBUyxZQUFZSDtJQUU3RSxJQUFJSSxRQUFRQyxHQUFHLENBQUNDLGdCQUFnQixLQUFLLEtBQUs7UUFDekNiLGlCQUFpQjtRQUNqQjtJQUNEO0lBQ0FELE1BQU1yQixxQkFBcUJPLFVBQVVHLFNBQVMsS0FBTSxNQUFNVDtJQUMxRCxJQUFJMkIsUUFBUUYsbUJBQW1CLElBQUksTUFBTTtRQUN4Q0osaUJBQWlCTSxRQUFRRixtQkFBbUIsS0FBSztRQUNqRDtJQUNEO0lBRUEsTUFBTVUsU0FBUyxNQUFNbEMsSUFBSSxnREFBZ0Q7SUFDekVvQixpQkFBaUJjLE9BQU9DLFdBQVcsT0FBTztBQUMzQztBQUVBLGVBQWVDLFNBQVMvQixTQUE0QixFQUFFZ0MsUUFBZ0I7SUFDckUsa0ZBQWtGO0lBQ2xGbEMsc0JBQXNCRSxVQUFVRyxTQUFTO0lBRXpDLElBQUlZLGdCQUFnQjtRQUNuQixNQUFNa0IsS0FBS25CO1FBQ1hvQixRQUFRQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUVuQyxVQUFVb0MsSUFBSSxDQUFDLDhCQUE4QixDQUFDO1FBQzFFLE1BQU1ILEdBQUdJLE9BQU8sQ0FBQztZQUFFQyxLQUFLdEMsVUFBVUcsU0FBUztRQUFDO0lBQzdDO0lBRUErQixRQUFRQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUVwQixpQkFBaUIsU0FBUyxrQkFBa0IsU0FBUyxDQUFDO0lBQzdFbUIsUUFBUUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFbkMsVUFBVW9DLElBQUksRUFBRTtJQUNwQyxJQUFJLENBQUNyQixnQkFBZ0I7UUFDcEIsTUFBTXdCLFNBQVN6QixLQUFLc0IsUUFBUTtRQUM1QkYsUUFBUUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFSSxPQUFPLFFBQVEsQ0FBQztJQUNsQztJQUNBTCxRQUFRQyxHQUFHLENBQUM7SUFDWkQsUUFBUUMsR0FBRyxDQUFDO0lBRVosOERBQThEO0lBQzlEdkM7QUFDRDtBQUVBLE9BQU8sTUFBTTRDLGtCQUEyQjtJQUFFeEI7SUFBWUk7SUFBVVc7QUFBUyxFQUFFIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decohere/create",
3
- "version": "0.0.1-dev.34",
3
+ "version": "0.0.1-dev.36",
4
4
  "description": "Scaffold a new Decohere project — build with Forge, serve with Flux",
5
5
  "keywords": [
6
6
  "decohere",
@@ -21,7 +21,7 @@
21
21
  "test": "echo \"Error: no test specified\" && exit 1"
22
22
  },
23
23
  "dependencies": {
24
- "@decohere/nexus": "0.0.1-dev.34",
24
+ "@decohere/nexus": "0.0.1-dev.36",
25
25
  "commander": "^13.1.0"
26
26
  },
27
27
  "devDependencies": {},
@@ -20,7 +20,10 @@ export declare function listApis(): Array<{
20
20
  export declare function createApi(name: string, identifier: string, scopes?: readonly string[]): {
21
21
  identifier: string;
22
22
  };
23
- /** Replace an API's scopes (Auth0 CLI update --scopes replaces the full set). */
23
+ /**
24
+ * Replace an API's scopes and enable RBAC policy enforcement.
25
+ * Auth0 CLI `--scopes` replaces the full set.
26
+ */
24
27
  export declare function updateApiScopes(identifier: string, scopes?: readonly string[]): void;
25
28
  export declare function createSpaApp(name: string, callbackUrls: string | readonly string[]): {
26
29
  client_id: string;