@kontur.candy/tools 2.131.0 → 2.133.0

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.
@@ -227,7 +227,7 @@ class HttpClient {
227
227
  const isSuccessResponseStatus = response.status >= 200 && response.status < 300;
228
228
  const isAcceptCodesIncludesResponseStatus = (acceptCodes !== null && acceptCodes !== void 0 ? acceptCodes : []).includes(response.status);
229
229
 
230
- if (!isSuccessResponseStatus && !isAcceptCodesIncludesResponseStatus || response.status === 400) {
230
+ if (!isSuccessResponseStatus && !isAcceptCodesIncludesResponseStatus) {
231
231
  const errorText = await response.text();
232
232
  let serverResponse;
233
233
 
@@ -363,4 +363,4 @@ class HttpError extends Error {
363
363
  }
364
364
 
365
365
  exports.HttpError = HttpError;
366
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9IdHRwQ2xpZW50L0h0dHBDbGllbnQudHMiXSwibmFtZXMiOlsidHJpbVRyYWlsaW5nU2xhc2giLCJ1cmwiLCJzbGljZSIsInRyaW1MZWFkaW5nU2xhc2giLCJIdHRwQ2xpZW50UmVzcG9uc2UiLCJjb25zdHJ1Y3RvciIsImZldGNoUmVzcG9uc2UiLCJzdGF0dXMiLCJqc29uIiwicmVzcG9uc2VEYXRhIiwiSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIiwiZXhlY3V0ZSIsImV4ZWN1dGVSZXF1ZXN0IiwiYWNjZXB0Q29kZXMiLCJxdWVyeVBhcmFtcyIsInNpZ25hbCIsImJvZHlGYWN0b3J5IiwiY29udGVudFR5cGUiLCJ0aGVuIiwiYXJncyIsInJlc3VsdFByb21pc2UiLCJyZXN1bHQiLCJjcmVhdGVDb25maWciLCJ3aXRoQWJvcnRTaWduYWwiLCJ3aXRoQ29udGVudFR5cGUiLCJ3aXRoQm9keUZyb21CdWZmZXIiLCJib2R5IiwidW5kZWZpbmVkIiwid2l0aEpzb25Cb2R5Iiwic2VyaWFsaXphYmxlQm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3aXRoUXVlcnlQYXJhbXMiLCJ3aXRoUmF3Qm9keSIsImFjY2VwdENvZGUiLCJjb2RlIiwicHVzaCIsImNyZWF0ZSIsImZuIiwiSHR0cENsaWVudCIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJhdXRoZW50aWNhdGlvblByb3ZpZGVyIiwiZGVmYXVsdFF1ZXJ5UGFyYW1zIiwiZGVmYXVsdFBhcmFtcyIsImdldCIsIm1ldGhvZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImRlbGV0ZSIsImNvbmZpZyIsImZldGNoVXJsIiwicmVxdWVzdCIsImFwcGVuZERlZmF1bHRSZXF1ZXN0SGVhZGVycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwicmVzcG9uc2UiLCJjaGVja1N0YXR1cyIsIm9wdGlvbnMiLCJoZWFkZXJzIiwicGF0aCIsInBhcmFtcyIsInJlc3VsdFBhcmFtcyIsImluY2x1ZGVzIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsIk5vdFN1cHBvcnRlZEVycm9yIiwiY3JlYXRlUXVlcnlTdHJpbmciLCJpc1N1Y2Nlc3NSZXNwb25zZVN0YXR1cyIsImlzQWNjZXB0Q29kZXNJbmNsdWRlc1Jlc3BvbnNlU3RhdHVzIiwiZXJyb3JUZXh0IiwidGV4dCIsInNlcnZlclJlc3BvbnNlIiwicGFyc2UiLCJlIiwiZXJyb3IiLCJIdHRwRXJyb3IiLCJNZXNzYWdlIiwibWVzc2FnZSIsIkVycm9yIiwicG9zdFN5bmMiLCJkYXRhIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwid2l0aENyZWRlbnRpYWxzIiwic2V0UmVxdWVzdEhlYWRlciIsInNlbmQiLCJtYWtlUGFyYW1WYWx1ZVN0cmluZyIsInBhcmFtIiwidmFsdWUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJwYXJhbXMyIiwibWFwIiwia2V5IiwidG9TdHJpbmciLCJBcnJheSIsImlzQXJyYXkiLCJpdGVtIiwiZmlsdGVyIiwieCIsImpvaW4iLCJjcmVhdGVGZXRjaEltcGwiLCJmZXRjaFdpdGhPcHRpb25zIiwiaW5wdXQiLCJpbml0IiwicmVxdWVzdEluaXQiLCJjYWNoZSIsImNyZWRlbnRpYWxzIiwiaW50ZWdyaXR5Iiwia2VlcGFsaXZlIiwibW9kZSIsInJlZGlyZWN0IiwicmVmZXJyZXIiLCJyZWZlcnJlclBvbGljeSIsInN0YXR1c0NvZGUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBWUEsU0FBU0EsaUJBQVQsQ0FBMkJDLEdBQTNCLEVBQWdEO0FBQzVDLFNBQU9BLEdBQUcsQ0FBQ0MsS0FBSixDQUFVLENBQUMsQ0FBWCxNQUFrQixHQUFsQixHQUF3QkQsR0FBRyxDQUFDQyxLQUFKLENBQVUsQ0FBVixFQUFhLENBQUMsQ0FBZCxDQUF4QixHQUEyQ0QsR0FBbEQ7QUFDSDs7QUFFRCxTQUFTRSxnQkFBVCxDQUEwQkYsR0FBMUIsRUFBK0M7QUFDM0MsU0FBT0EsR0FBRyxDQUFDLENBQUQsQ0FBSCxLQUFXLEdBQVgsR0FB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QWxCO0FBQ0g7O0FBRTBCLE1BQVBwQyxPQUFPLEdBQVc7QUFDbEMsV0FBTyxNQUFNQSxPQUFOLEdBQWlCLGlCQUFnQixLQUFLb0MsVUFBVyxFQUF4RDtBQUNIOztBQVhnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yLCBOb3RTdXBwb3J0ZWRFcnJvciB9IGZyb20gXCIuLi9FcnJvcnNcIjtcblxuaW1wb3J0IHsgRmV0Y2ggfSBmcm9tIFwiLi9GZXRjaEltcGxlbWVudGF0aW9uL0ZldGNoXCI7XG5pbXBvcnQge1xuICAgIEh0dHBTdGF0dXNDb2RlLFxuICAgIElIdHRwQ2xpZW50LFxuICAgIElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIsXG4gICAgSUh0dHBDbGllbnRSZXNwb25zZSxcbiAgICBRdWVyeVBhcmFtc09iamVjdCxcbn0gZnJvbSBcIi4vSUh0dHBDbGllbnRcIjtcbmltcG9ydCB7IEh0dHBDbGllbnRBdXRoZW50aWNhdGlvblByb3ZpZGVyIH0gZnJvbSBcIi4vSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJcIjtcblxuZnVuY3Rpb24gdHJpbVRyYWlsaW5nU2xhc2godXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB1cmwuc2xpY2UoLTEpID09PSBcIi9cIiA/IHVybC5zbGljZSgwLCAtMSkgOiB1cmw7XG59XG5cbmZ1bmN0aW9uIHRyaW1MZWFkaW5nU2xhc2godXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB1cmxbMF0gPT09IFwiL1wiID8gdXJsLnNsaWNlKDEpIDogdXJsO1xufVxuXG50eXBlIEJvZHlGYWN0b3J5ID0gKCkgPT4gQm9keUluaXQgfCBudWxsO1xuXG5pbnRlcmZhY2UgSUh0dHBDbGllbnRSZXF1ZXN0Q29uZmlnIHtcbiAgICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgICBib2R5RmFjdG9yeT86IEJvZHlGYWN0b3J5O1xuICAgIGFjY2VwdENvZGVzOiBIdHRwU3RhdHVzQ29kZVtdO1xuICAgIHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtc09iamVjdDtcbiAgICBjb250ZW50VHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBDbGllbnRSZXNwb25zZSBpbXBsZW1lbnRzIElIdHRwQ2xpZW50UmVzcG9uc2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmV0Y2hSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZmV0Y2hSZXNwb25zZTogUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5mZXRjaFJlc3BvbnNlID0gZmV0Y2hSZXNwb25zZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN0YXR1cygpOiBIdHRwU3RhdHVzQ29kZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoUmVzcG9uc2Uuc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBqc29uPFQ+KCk6IFByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmZldGNoUmVzcG9uc2UuanNvbigpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YTtcbiAgICB9XG59XG5cbnR5cGUgUmVxdWVzdEV4ZWN1dGlvbkZ1bmN0aW9uID0gKGNvbmZpZzogSUh0dHBDbGllbnRSZXF1ZXN0Q29uZmlnKSA9PiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZSB8IFJlc3BvbnNlPjtcblxuZXhwb3J0IGNsYXNzIEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciBpbXBsZW1lbnRzIElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXhlY3V0ZVJlcXVlc3Q6IFJlcXVlc3RFeGVjdXRpb25GdW5jdGlvbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjY2VwdENvZGVzOiBIdHRwU3RhdHVzQ29kZVtdID0gW107XG4gICAgcHJpdmF0ZSBxdWVyeVBhcmFtczogUXVlcnlQYXJhbXNPYmplY3QgPSB7fTtcbiAgICBwcml2YXRlIHNpZ25hbDogdW5kZWZpbmVkIHwgQWJvcnRTaWduYWw7XG4gICAgcHJpdmF0ZSBib2R5RmFjdG9yeT86IEJvZHlGYWN0b3J5O1xuICAgIHByaXZhdGUgY29udGVudFR5cGU/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZXhlY3V0ZTogUmVxdWVzdEV4ZWN1dGlvbkZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMuZXhlY3V0ZVJlcXVlc3QgPSBleGVjdXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWJvcnRTaWduYWwoc2lnbmFsOiB1bmRlZmluZWQgfCBBYm9ydFNpZ25hbCk6IHRoaXMge1xuICAgICAgICB0aGlzLnNpZ25hbCA9IHNpZ25hbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb250ZW50VHlwZShjb250ZW50VHlwZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuY29udGVudFR5cGUgPSBjb250ZW50VHlwZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCb2R5RnJvbUJ1ZmZlcihib2R5OiBmYWxzZSB8IEJ1ZmZlciB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgICAgICBpZiAoYm9keSA9PT0gZmFsc2UgfHwgYm9keSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYm9keUZhY3RvcnkgPSAoKSA9PiBib2R5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEpzb25Cb2R5KHNlcmlhbGl6YWJsZUJvZHk6IHVua25vd24gfCB7fSB8IHVua25vd25bXSB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgICAgICBpZiAoc2VyaWFsaXphYmxlQm9keSAhPT0gZmFsc2UgJiYgc2VyaWFsaXphYmxlQm9keSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYm9keUZhY3RvcnkgPSAoKSA9PiBKU09OLnN0cmluZ2lmeShzZXJpYWxpemFibGVCb2R5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtc09iamVjdCB8IGZhbHNlIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChxdWVyeVBhcmFtcykge1xuICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgICAgIC4uLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJhd0JvZHkoYm9keTogQnVmZmVyIHwgc3RyaW5nIHwgZmFsc2UgfCB1bmRlZmluZWQpOiB0aGlzIHtcbiAgICAgICAgaWYgKGJvZHkgIT09IGZhbHNlICYmIGJvZHkgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmJvZHlGYWN0b3J5ID0gKCkgPT4gYm9keTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMganNvbjxUPigpOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcztcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5qc29uPFQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjY2VwdENvZGUoY29kZTogSHR0cFN0YXR1c0NvZGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5hY2NlcHRDb2Rlcy5wdXNoKGNvZGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdGhlbjogUHJvbWlzZTxIdHRwQ2xpZW50UmVzcG9uc2U+W1widGhlblwiXSA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdFByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdCh0aGlzLmNyZWF0ZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBIdHRwQ2xpZW50UmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEh0dHBDbGllbnRSZXNwb25zZShyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgICAgICByZXR1cm4gcmVzdWx0UHJvbWlzZS50aGVuKC4uLmFyZ3MpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbmZpZygpOiBJSHR0cENsaWVudFJlcXVlc3RDb25maWcge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2lnbmFsOiB0aGlzLnNpZ25hbCxcbiAgICAgICAgICAgIGJvZHlGYWN0b3J5OiB0aGlzLmJvZHlGYWN0b3J5LFxuICAgICAgICAgICAgYWNjZXB0Q29kZXM6IHRoaXMuYWNjZXB0Q29kZXMsXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogdGhpcy5xdWVyeVBhcmFtcyxcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiB0aGlzLmNvbnRlbnRUeXBlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKGZuOiBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24pOiBIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIge1xuICAgICAgICByZXR1cm4gbmV3IEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlcihmbik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudCBpbXBsZW1lbnRzIElIdHRwQ2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZldGNoSW1wbDogRmV0Y2g7XG4gICAgcHJpdmF0ZSByZWFkb25seSBiYXNlVXJsOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoZW50aWNhdGlvblByb3ZpZGVyOiBIdHRwQ2xpZW50QXV0aGVudGljYXRpb25Qcm92aWRlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRQYXJhbXM/OiBRdWVyeVBhcmFtc09iamVjdCA9IHt9O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBmZXRjaEltcGw6IEZldGNoLFxuICAgICAgICBiYXNlVXJsOiB1bmRlZmluZWQgfCBzdHJpbmcsXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uUHJvdmlkZXI6IEh0dHBDbGllbnRBdXRoZW50aWNhdGlvblByb3ZpZGVyLFxuICAgICAgICBkZWZhdWx0UXVlcnlQYXJhbXM/OiBRdWVyeVBhcmFtc09iamVjdFxuICAgICkge1xuICAgICAgICB0aGlzLmZldGNoSW1wbCA9IGZldGNoSW1wbDtcbiAgICAgICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybCA9PSB1bmRlZmluZWQgPyBiYXNlVXJsIDogdHJpbVRyYWlsaW5nU2xhc2goYmFzZVVybCk7XG4gICAgICAgIHRoaXMuZGVmYXVsdFBhcmFtcyA9IGRlZmF1bHRRdWVyeVBhcmFtcztcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblByb3ZpZGVyID0gYXV0aGVudGljYXRpb25Qcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0KHVybDogc3RyaW5nKTogSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGhvZChcIkdFVFwiKSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3N0KHVybDogc3RyaW5nKTogSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGhvZChcIlBPU1RcIikodXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHV0KHVybDogc3RyaW5nKTogSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGhvZChcIlBVVFwiKSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXRjaCh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRob2QoXCJQQVRDSFwiKSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGUodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiREVMRVRFXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtZXRob2QobWV0aG9kOiBcIkdFVFwiIHwgXCJQT1NUXCIgfCBcIlBVVFwiIHwgXCJQQVRDSFwiIHwgXCJERUxFVEVcIik6ICh1cmw6IHN0cmluZykgPT4gSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiAodXJsOiBzdHJpbmcpID0+XG4gICAgICAgICAgICBIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIuY3JlYXRlKGFzeW5jIGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmV0Y2hVcmwgPSB0aGlzLnVybCh1cmwsIGNvbmZpZy5xdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVlc3QgPSB0aGlzLmFwcGVuZERlZmF1bHRSZXF1ZXN0SGVhZGVycyh7IG1ldGhvZDogbWV0aG9kIH0sIGNvbmZpZy5jb250ZW50VHlwZSk7XG4gICAgICAgICAgICAgICAgcmVxdWVzdCA9IHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlcihyZXF1ZXN0KTtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnNpZ25hbCA9IGNvbmZpZy5zaWduYWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuYm9keUZhY3RvcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJHRVRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibWV0aG9kXCIsIFwiQm9keSBpcyBub3QgYWxsb3dlZCBmb3IgR0VUIHJlcXVlc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYm9keSA9IGNvbmZpZy5ib2R5RmFjdG9yeSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCByZXF1ZXN0KTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNoZWNrU3RhdHVzKHJlc3BvbnNlLCBjb25maWcuYWNjZXB0Q29kZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwZW5kRGVmYXVsdFJlcXVlc3RIZWFkZXJzKG9wdGlvbnM6IFJlcXVlc3RJbml0LCBjb250ZW50VHlwZT86IHVuZGVmaW5lZCB8IHN0cmluZyk6IFJlcXVlc3RJbml0IHtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJDb250ZW50LVR5cGVcIl0gPSBjb250ZW50VHlwZSA/PyBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzW1wiQ2FjaGUtQ29udHJvbFwiXSA9IFwibm8tY2FjaGUsIG5vLXN0b3JlXCI7XG4gICAgICAgIG9wdGlvbnMuaGVhZGVyc1tcIlByYWdtYVwiXSA9IFwibm8tY2FjaGVcIjtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzW1wiRXhwaXJlc1wiXSA9IFwiMFwiO1xuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgdXJsKHBhdGg6IHN0cmluZywgcGFyYW1zOiB1bmRlZmluZWQgfCBRdWVyeVBhcmFtc09iamVjdCk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBwYXRoO1xuICAgICAgICBpZiAodGhpcy5iYXNlVXJsICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5iYXNlVXJsICsgXCIvXCIgKyB0cmltTGVhZGluZ1NsYXNoKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0UGFyYW1zID0geyAuLi50aGlzLmRlZmF1bHRQYXJhbXMsIC4uLnBhcmFtcyB9O1xuICAgICAgICBpZiAocGF0aC5pbmNsdWRlcyhcIj9cIikgJiYgcGFyYW1zICE9IHVuZGVmaW5lZCAmJiBPYmplY3Qua2V5cyhyZXN1bHRQYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWRFcnJvcihgUGFzc2luZyBzZWFyY2ggcGFyYW1zIGluIHVybCBhbmQgdmlhIHBhcmFtcyBvYmplY3QgaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHRoaXMuY3JlYXRlUXVlcnlTdHJpbmcocmVzdWx0UGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNoZWNrU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSwgYWNjZXB0Q29kZXM/OiBIdHRwU3RhdHVzQ29kZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlzU3VjY2Vzc1Jlc3BvbnNlU3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzID49IDIwMCAmJiByZXNwb25zZS5zdGF0dXMgPCAzMDA7XG4gICAgICAgIGNvbnN0IGlzQWNjZXB0Q29kZXNJbmNsdWRlc1Jlc3BvbnNlU3RhdHVzID0gKGFjY2VwdENvZGVzID8/IFtdKS5pbmNsdWRlcyhyZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICBpZiAoKCFpc1N1Y2Nlc3NSZXNwb25zZVN0YXR1cyAmJiAhaXNBY2NlcHRDb2Rlc0luY2x1ZGVzUmVzcG9uc2VTdGF0dXMpIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvclRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICBsZXQgc2VydmVyUmVzcG9uc2U7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gSlNPTi5wYXJzZShlcnJvclRleHQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlcnZlclJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChcImVycm9yXCIgaW4gc2VydmVyUmVzcG9uc2UgJiYgdHlwZW9mIHNlcnZlclJlc3BvbnNlLmVycm9yID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc2VydmVyUmVzcG9uc2UuZXJyb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlLk1lc3NhZ2UgPz8gc2VydmVyUmVzcG9uc2UubWVzc2FnZSA/PyBzZXJ2ZXJSZXNwb25zZS5FcnJvcixcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoZXJyb3JUZXh0LCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3RTeW5jKHVybDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0LCBkYXRhOiB7fSk6IEh0dHBTdGF0dXNDb2RlIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICByZXF1ZXN0Lm9wZW4oXCJQT1NUXCIsIHRoaXMudXJsKHVybCwgcGFyYW1zKSwgZmFsc2UpO1xuICAgICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLThcIik7XG4gICAgICAgIHJlcXVlc3Quc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIHJldHVybiByZXF1ZXN0LnN0YXR1cztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VQYXJhbVZhbHVlU3RyaW5nKHBhcmFtOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtKX09JHtlbmNvZGVVUklDb21wb25lbnQodmFsdWUpfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVRdWVyeVN0cmluZyhwYXJhbXM/OiBRdWVyeVBhcmFtc09iamVjdCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChwYXJhbXMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXMyID0gcGFyYW1zO1xuICAgICAgICBsZXQgcmVzdWx0ID0gT2JqZWN0LmtleXMocGFyYW1zKVxuICAgICAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zMltrZXldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCBpdGVtLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4ICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKHggPT4geCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAuam9pbihcIiZcIik7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCA/IFwiP1wiICsgcmVzdWx0IDogXCJcIjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmV0Y2hJbXBsKCk6IEZldGNoIHtcbiAgICAgICAgY29uc3QgZmV0Y2hXaXRoT3B0aW9ucyA9IChpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKGlucHV0LCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGluaXQgPSBpbml0ID8/IHt9O1xuICAgICAgICAgICAgICAgIGluaXQuaGVhZGVycyA9IGluaXQuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJQcmFnbWFcIl0gPSBcIm5vLWNhY2hlXCI7XG4gICAgICAgICAgICAgICAgaW5pdC5oZWFkZXJzW1wiRXhwaXJlc1wiXSA9IFwiMFwiO1xuICAgICAgICAgICAgICAgIGluaXQgPSB0aGlzLmF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoaW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCBpbml0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmV0Y2hVcmwgPSB0aGlzLnVybChpbnB1dC51cmwsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVlc3RJbml0OiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FjaGUtQ29udHJvbFwiXTogXCJuby1jYWNoZSwgbm8tc3RvcmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByYWdtYVwiXTogXCJuby1jYWNoZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiRXhwaXJlc1wiXTogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzaWduYWw6IGlucHV0LnNpZ25hbCxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGU6IGlucHV0LmNhY2hlLFxuICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogaW5wdXQuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVncml0eTogaW5wdXQuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgICAgICBrZWVwYWxpdmU6IGlucHV0LmtlZXBhbGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBpbnB1dC5tZXRob2QsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IGlucHV0Lm1vZGUsXG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBpbnB1dC5yZWRpcmVjdCxcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXI6IGlucHV0LnJlZmVycmVyLFxuICAgICAgICAgICAgICAgICAgICByZWZlcnJlclBvbGljeTogaW5wdXQucmVmZXJyZXJQb2xpY3ksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SW5pdCA9IHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlcihyZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCByZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmZXRjaFdpdGhPcHRpb25zO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZTogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkh0dHBFcnJvclwiO1xuICAgICAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3VwZXIubWVzc2FnZSArIGAuIFN0YXR1c0NvZGU6ICR7dGhpcy5zdGF0dXNDb2RlfWA7XG4gICAgfVxufVxuIl19
366
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9IdHRwQ2xpZW50L0h0dHBDbGllbnQudHMiXSwibmFtZXMiOlsidHJpbVRyYWlsaW5nU2xhc2giLCJ1cmwiLCJzbGljZSIsInRyaW1MZWFkaW5nU2xhc2giLCJIdHRwQ2xpZW50UmVzcG9uc2UiLCJjb25zdHJ1Y3RvciIsImZldGNoUmVzcG9uc2UiLCJzdGF0dXMiLCJqc29uIiwicmVzcG9uc2VEYXRhIiwiSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIiwiZXhlY3V0ZSIsImV4ZWN1dGVSZXF1ZXN0IiwiYWNjZXB0Q29kZXMiLCJxdWVyeVBhcmFtcyIsInNpZ25hbCIsImJvZHlGYWN0b3J5IiwiY29udGVudFR5cGUiLCJ0aGVuIiwiYXJncyIsInJlc3VsdFByb21pc2UiLCJyZXN1bHQiLCJjcmVhdGVDb25maWciLCJ3aXRoQWJvcnRTaWduYWwiLCJ3aXRoQ29udGVudFR5cGUiLCJ3aXRoQm9keUZyb21CdWZmZXIiLCJib2R5IiwidW5kZWZpbmVkIiwid2l0aEpzb25Cb2R5Iiwic2VyaWFsaXphYmxlQm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3aXRoUXVlcnlQYXJhbXMiLCJ3aXRoUmF3Qm9keSIsImFjY2VwdENvZGUiLCJjb2RlIiwicHVzaCIsImNyZWF0ZSIsImZuIiwiSHR0cENsaWVudCIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJhdXRoZW50aWNhdGlvblByb3ZpZGVyIiwiZGVmYXVsdFF1ZXJ5UGFyYW1zIiwiZGVmYXVsdFBhcmFtcyIsImdldCIsIm1ldGhvZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImRlbGV0ZSIsImNvbmZpZyIsImZldGNoVXJsIiwicmVxdWVzdCIsImFwcGVuZERlZmF1bHRSZXF1ZXN0SGVhZGVycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwicmVzcG9uc2UiLCJjaGVja1N0YXR1cyIsIm9wdGlvbnMiLCJoZWFkZXJzIiwicGF0aCIsInBhcmFtcyIsInJlc3VsdFBhcmFtcyIsImluY2x1ZGVzIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsIk5vdFN1cHBvcnRlZEVycm9yIiwiY3JlYXRlUXVlcnlTdHJpbmciLCJpc1N1Y2Nlc3NSZXNwb25zZVN0YXR1cyIsImlzQWNjZXB0Q29kZXNJbmNsdWRlc1Jlc3BvbnNlU3RhdHVzIiwiZXJyb3JUZXh0IiwidGV4dCIsInNlcnZlclJlc3BvbnNlIiwicGFyc2UiLCJlIiwiZXJyb3IiLCJIdHRwRXJyb3IiLCJNZXNzYWdlIiwibWVzc2FnZSIsIkVycm9yIiwicG9zdFN5bmMiLCJkYXRhIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwid2l0aENyZWRlbnRpYWxzIiwic2V0UmVxdWVzdEhlYWRlciIsInNlbmQiLCJtYWtlUGFyYW1WYWx1ZVN0cmluZyIsInBhcmFtIiwidmFsdWUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJwYXJhbXMyIiwibWFwIiwia2V5IiwidG9TdHJpbmciLCJBcnJheSIsImlzQXJyYXkiLCJpdGVtIiwiZmlsdGVyIiwieCIsImpvaW4iLCJjcmVhdGVGZXRjaEltcGwiLCJmZXRjaFdpdGhPcHRpb25zIiwiaW5wdXQiLCJpbml0IiwicmVxdWVzdEluaXQiLCJjYWNoZSIsImNyZWRlbnRpYWxzIiwiaW50ZWdyaXR5Iiwia2VlcGFsaXZlIiwibW9kZSIsInJlZGlyZWN0IiwicmVmZXJyZXIiLCJyZWZlcnJlclBvbGljeSIsInN0YXR1c0NvZGUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBWUEsU0FBU0EsaUJBQVQsQ0FBMkJDLEdBQTNCLEVBQWdEO0FBQzVDLFNBQU9BLEdBQUcsQ0FBQ0MsS0FBSixDQUFVLENBQUMsQ0FBWCxNQUFrQixHQUFsQixHQUF3QkQsR0FBRyxDQUFDQyxLQUFKLENBQVUsQ0FBVixFQUFhLENBQUMsQ0FBZCxDQUF4QixHQUEyQ0QsR0FBbEQ7QUFDSDs7QUFFRCxTQUFTRSxnQkFBVCxDQUEwQkYsR0FBMUIsRUFBK0M7QUFDM0MsU0FBT0EsR0FBRyxDQUFDLENBQUQsQ0FBSCxLQUFXLEdBQVgsR0FB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QyxXQUFPLE1BQU1BLE9BQU4sR0FBaUIsaUJBQWdCLEtBQUtvQyxVQUFXLEVBQXhEO0FBQ0g7O0FBWGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IsIE5vdFN1cHBvcnRlZEVycm9yIH0gZnJvbSBcIi4uL0Vycm9yc1wiO1xuXG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuL0ZldGNoSW1wbGVtZW50YXRpb24vRmV0Y2hcIjtcbmltcG9ydCB7XG4gICAgSHR0cFN0YXR1c0NvZGUsXG4gICAgSUh0dHBDbGllbnQsXG4gICAgSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlcixcbiAgICBJSHR0cENsaWVudFJlc3BvbnNlLFxuICAgIFF1ZXJ5UGFyYW1zT2JqZWN0LFxufSBmcm9tIFwiLi9JSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi9IdHRwQ2xpZW50QXV0aGVudGljYXRpb25Qcm92aWRlclwiO1xuXG5mdW5jdGlvbiB0cmltVHJhaWxpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybC5zbGljZSgtMSkgPT09IFwiL1wiID8gdXJsLnNsaWNlKDAsIC0xKSA6IHVybDtcbn1cblxuZnVuY3Rpb24gdHJpbUxlYWRpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybFswXSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMSkgOiB1cmw7XG59XG5cbnR5cGUgQm9keUZhY3RvcnkgPSAoKSA9PiBCb2R5SW5pdCB8IG51bGw7XG5cbmludGVyZmFjZSBJSHR0cENsaWVudFJlcXVlc3RDb25maWcge1xuICAgIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAgIGJvZHlGYWN0b3J5PzogQm9keUZhY3Rvcnk7XG4gICAgYWNjZXB0Q29kZXM6IEh0dHBTdGF0dXNDb2RlW107XG4gICAgcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0O1xuICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFJlc3BvbnNlIGltcGxlbWVudHMgSUh0dHBDbGllbnRSZXNwb25zZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmZXRjaFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmZXRjaFJlc3BvbnNlOiBSZXNwb25zZSkge1xuICAgICAgICB0aGlzLmZldGNoUmVzcG9uc2UgPSBmZXRjaFJlc3BvbnNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3RhdHVzKCk6IEh0dHBTdGF0dXNDb2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hSZXNwb25zZS5zdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGpzb248VD4oKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2hSZXNwb25zZS5qc29uKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRhO1xuICAgIH1cbn1cblxudHlwZSBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24gPSAoY29uZmlnOiBJSHR0cENsaWVudFJlcXVlc3RDb25maWcpID0+IFByb21pc2U8SHR0cENsaWVudFJlc3BvbnNlIHwgUmVzcG9uc2U+O1xuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIGltcGxlbWVudHMgSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGVjdXRlUmVxdWVzdDogUmVxdWVzdEV4ZWN1dGlvbkZ1bmN0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXB0Q29kZXM6IEh0dHBTdGF0dXNDb2RlW10gPSBbXTtcbiAgICBwcml2YXRlIHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtc09iamVjdCA9IHt9O1xuICAgIHByaXZhdGUgc2lnbmFsOiB1bmRlZmluZWQgfCBBYm9ydFNpZ25hbDtcbiAgICBwcml2YXRlIGJvZHlGYWN0b3J5PzogQm9keUZhY3Rvcnk7XG4gICAgcHJpdmF0ZSBjb250ZW50VHlwZT86IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihleGVjdXRlOiBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdCA9IGV4ZWN1dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBYm9ydFNpZ25hbChzaWduYWw6IHVuZGVmaW5lZCB8IEFib3J0U2lnbmFsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuc2lnbmFsID0gc2lnbmFsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJvZHlGcm9tQnVmZmVyKGJvZHk6IGZhbHNlIHwgQnVmZmVyIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChib2R5ID09PSBmYWxzZSB8fCBib2R5ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ib2R5RmFjdG9yeSA9ICgpID0+IGJvZHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSnNvbkJvZHkoc2VyaWFsaXphYmxlQm9keTogdW5rbm93biB8IHt9IHwgdW5rbm93bltdIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChzZXJpYWxpemFibGVCb2R5ICE9PSBmYWxzZSAmJiBzZXJpYWxpemFibGVCb2R5ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5ib2R5RmFjdG9yeSA9ICgpID0+IEpTT04uc3RyaW5naWZ5KHNlcmlhbGl6YWJsZUJvZHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0IHwgZmFsc2UgfCB1bmRlZmluZWQpOiB0aGlzIHtcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICAgICAgLi4ucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmF3Qm9keShib2R5OiBCdWZmZXIgfCBzdHJpbmcgfCBmYWxzZSB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgICAgICBpZiAoYm9keSAhPT0gZmFsc2UgJiYgYm9keSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYm9keUZhY3RvcnkgPSAoKSA9PiBib2R5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBqc29uPFQ+KCk6IFByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzO1xuICAgICAgICByZXR1cm4gcmVzdWx0Lmpzb248VD4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWNjZXB0Q29kZShjb2RlOiBIdHRwU3RhdHVzQ29kZSk6IHRoaXMge1xuICAgICAgICB0aGlzLmFjY2VwdENvZGVzLnB1c2goY29kZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSB0aGVuOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZT5bXCJ0aGVuXCJdID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVSZXF1ZXN0KHRoaXMuY3JlYXRlQ29uZmlnKCkpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEh0dHBDbGllbnRSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSHR0cENsaWVudFJlc3BvbnNlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKCk7XG4gICAgICAgIHJldHVybiByZXN1bHRQcm9taXNlLnRoZW4oLi4uYXJncyk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgY3JlYXRlQ29uZmlnKCk6IElIdHRwQ2xpZW50UmVxdWVzdENvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYWw6IHRoaXMuc2lnbmFsLFxuICAgICAgICAgICAgYm9keUZhY3Rvcnk6IHRoaXMuYm9keUZhY3RvcnksXG4gICAgICAgICAgICBhY2NlcHRDb2RlczogdGhpcy5hY2NlcHRDb2RlcyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgY29udGVudFR5cGU6IHRoaXMuY29udGVudFR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoZm46IFJlcXVlc3RFeGVjdXRpb25GdW5jdGlvbik6IEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiBuZXcgSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyKGZuKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIdHRwQ2xpZW50IGltcGxlbWVudHMgSUh0dHBDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmV0Y2hJbXBsOiBGZXRjaDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhlbnRpY2F0aW9uUHJvdmlkZXI6IEh0dHBDbGllbnRBdXRoZW50aWNhdGlvblByb3ZpZGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFBhcmFtcz86IFF1ZXJ5UGFyYW1zT2JqZWN0ID0ge307XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGZldGNoSW1wbDogRmV0Y2gsXG4gICAgICAgIGJhc2VVcmw6IHVuZGVmaW5lZCB8IHN0cmluZyxcbiAgICAgICAgYXV0aGVudGljYXRpb25Qcm92aWRlcjogSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIsXG4gICAgICAgIGRlZmF1bHRRdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zT2JqZWN0XG4gICAgKSB7XG4gICAgICAgIHRoaXMuZmV0Y2hJbXBsID0gZmV0Y2hJbXBsO1xuICAgICAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsID09IHVuZGVmaW5lZCA/IGJhc2VVcmwgOiB0cmltVHJhaWxpbmdTbGFzaChiYXNlVXJsKTtcbiAgICAgICAgdGhpcy5kZWZhdWx0UGFyYW1zID0gZGVmYXVsdFF1ZXJ5UGFyYW1zO1xuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgPSBhdXRoZW50aWNhdGlvblByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiR0VUXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3QodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiUE9TVFwiKSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiUFVUXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdGNoKHVybDogc3RyaW5nKTogSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGhvZChcIlBBVENIXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZSh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRob2QoXCJERUxFVEVcIikodXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ldGhvZChtZXRob2Q6IFwiR0VUXCIgfCBcIlBPU1RcIiB8IFwiUFVUXCIgfCBcIlBBVENIXCIgfCBcIkRFTEVURVwiKTogKHVybDogc3RyaW5nKSA9PiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuICh1cmw6IHN0cmluZykgPT5cbiAgICAgICAgICAgIEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlci5jcmVhdGUoYXN5bmMgY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKHVybCwgY29uZmlnLnF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuYXBwZW5kRGVmYXVsdFJlcXVlc3RIZWFkZXJzKHsgbWV0aG9kOiBtZXRob2QgfSwgY29uZmlnLmNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0ID0gdGhpcy5hdXRoZW50aWNhdGlvblByb3ZpZGVyKHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Quc2lnbmFsID0gY29uZmlnLnNpZ25hbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5ib2R5RmFjdG9yeSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kID09PSBcIkdFVFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJtZXRob2RcIiwgXCJCb2R5IGlzIG5vdCBhbGxvd2VkIGZvciBHRVQgcmVxdWVzdHNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5ib2R5ID0gY29uZmlnLmJvZHlGYWN0b3J5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5mZXRjaEltcGwoZmV0Y2hVcmwsIHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tTdGF0dXMocmVzcG9uc2UsIGNvbmZpZy5hY2NlcHRDb2Rlcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmREZWZhdWx0UmVxdWVzdEhlYWRlcnMob3B0aW9uczogUmVxdWVzdEluaXQsIGNvbnRlbnRUeXBlPzogdW5kZWZpbmVkIHwgc3RyaW5nKTogUmVxdWVzdEluaXQge1xuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgPz8ge307XG4gICAgICAgIG9wdGlvbnMuaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IGNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzW1wiUHJhZ21hXCJdID0gXCJuby1jYWNoZVwiO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJFeHBpcmVzXCJdID0gXCIwXCI7XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHBhdGg7XG4gICAgICAgIGlmICh0aGlzLmJhc2VVcmwgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLmJhc2VVcmwgKyBcIi9cIiArIHRyaW1MZWFkaW5nU2xhc2gocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHRQYXJhbXMgPSB7IC4uLnRoaXMuZGVmYXVsdFBhcmFtcywgLi4ucGFyYW1zIH07XG4gICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKFwiP1wiKSAmJiBwYXJhbXMgIT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKHJlc3VsdFBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZEVycm9yKGBQYXNzaW5nIHNlYXJjaCBwYXJhbXMgaW4gdXJsIGFuZCB2aWEgcGFyYW1zIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgdGhpcy5jcmVhdGVRdWVyeVN0cmluZyhyZXN1bHRQYXJhbXMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlLCBhY2NlcHRDb2Rlcz86IEh0dHBTdGF0dXNDb2RlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaXNTdWNjZXNzUmVzcG9uc2VTdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlc3BvbnNlLnN0YXR1cyA8IDMwMDtcbiAgICAgICAgY29uc3QgaXNBY2NlcHRDb2Rlc0luY2x1ZGVzUmVzcG9uc2VTdGF0dXMgPSAoYWNjZXB0Q29kZXMgPz8gW10pLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIGlmICghaXNTdWNjZXNzUmVzcG9uc2VTdGF0dXMgJiYgIWlzQWNjZXB0Q29kZXNJbmNsdWRlc1Jlc3BvbnNlU3RhdHVzKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvclRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICBsZXQgc2VydmVyUmVzcG9uc2U7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gSlNPTi5wYXJzZShlcnJvclRleHQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlcnZlclJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChcImVycm9yXCIgaW4gc2VydmVyUmVzcG9uc2UgJiYgdHlwZW9mIHNlcnZlclJlc3BvbnNlLmVycm9yID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc2VydmVyUmVzcG9uc2UuZXJyb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlLk1lc3NhZ2UgPz8gc2VydmVyUmVzcG9uc2UubWVzc2FnZSA/PyBzZXJ2ZXJSZXNwb25zZS5FcnJvcixcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoZXJyb3JUZXh0LCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3RTeW5jKHVybDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0LCBkYXRhOiB7fSk6IEh0dHBTdGF0dXNDb2RlIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICByZXF1ZXN0Lm9wZW4oXCJQT1NUXCIsIHRoaXMudXJsKHVybCwgcGFyYW1zKSwgZmFsc2UpO1xuICAgICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLThcIik7XG4gICAgICAgIHJlcXVlc3Quc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIHJldHVybiByZXF1ZXN0LnN0YXR1cztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VQYXJhbVZhbHVlU3RyaW5nKHBhcmFtOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtKX09JHtlbmNvZGVVUklDb21wb25lbnQodmFsdWUpfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVRdWVyeVN0cmluZyhwYXJhbXM/OiBRdWVyeVBhcmFtc09iamVjdCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChwYXJhbXMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXMyID0gcGFyYW1zO1xuICAgICAgICBsZXQgcmVzdWx0ID0gT2JqZWN0LmtleXMocGFyYW1zKVxuICAgICAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zMltrZXldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCBpdGVtLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4ICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKHggPT4geCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAuam9pbihcIiZcIik7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCA/IFwiP1wiICsgcmVzdWx0IDogXCJcIjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmV0Y2hJbXBsKCk6IEZldGNoIHtcbiAgICAgICAgY29uc3QgZmV0Y2hXaXRoT3B0aW9ucyA9IChpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKGlucHV0LCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGluaXQgPSBpbml0ID8/IHt9O1xuICAgICAgICAgICAgICAgIGluaXQuaGVhZGVycyA9IGluaXQuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJQcmFnbWFcIl0gPSBcIm5vLWNhY2hlXCI7XG4gICAgICAgICAgICAgICAgaW5pdC5oZWFkZXJzW1wiRXhwaXJlc1wiXSA9IFwiMFwiO1xuICAgICAgICAgICAgICAgIGluaXQgPSB0aGlzLmF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoaW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCBpbml0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmV0Y2hVcmwgPSB0aGlzLnVybChpbnB1dC51cmwsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVlc3RJbml0OiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FjaGUtQ29udHJvbFwiXTogXCJuby1jYWNoZSwgbm8tc3RvcmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByYWdtYVwiXTogXCJuby1jYWNoZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiRXhwaXJlc1wiXTogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzaWduYWw6IGlucHV0LnNpZ25hbCxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGU6IGlucHV0LmNhY2hlLFxuICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogaW5wdXQuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVncml0eTogaW5wdXQuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgICAgICBrZWVwYWxpdmU6IGlucHV0LmtlZXBhbGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBpbnB1dC5tZXRob2QsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IGlucHV0Lm1vZGUsXG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBpbnB1dC5yZWRpcmVjdCxcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXI6IGlucHV0LnJlZmVycmVyLFxuICAgICAgICAgICAgICAgICAgICByZWZlcnJlclBvbGljeTogaW5wdXQucmVmZXJyZXJQb2xpY3ksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SW5pdCA9IHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlcihyZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCByZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmZXRjaFdpdGhPcHRpb25zO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZTogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkh0dHBFcnJvclwiO1xuICAgICAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3VwZXIubWVzc2FnZSArIGAuIFN0YXR1c0NvZGU6ICR7dGhpcy5zdGF0dXNDb2RlfWA7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useTypedSelector = void 0;
7
+
8
+ var _reactRedux = require("react-redux");
9
+
10
+ const useTypedSelector = _reactRedux.useSelector;
11
+ exports.useTypedSelector = useTypedSelector;
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9Vc2VUeXBlZFNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbInVzZVR5cGVkU2VsZWN0b3IiLCJ1c2VTZWxlY3RvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUlPLE1BQU1BLGdCQUFxRCxHQUFHQyx1QkFBOUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlZFVzZVNlbGVjdG9ySG9vaywgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcblxuaW1wb3J0IHsgRnVsbEZvcm1TdGF0ZSB9IGZyb20gXCIuLi9FbmdpbmUvc3JjL0VuZ2luZS9Db3JlL1N0b3JlL0Z1bGxGb3JtU3RhdGVcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVR5cGVkU2VsZWN0b3I6IFR5cGVkVXNlU2VsZWN0b3JIb29rPEZ1bGxGb3JtU3RhdGU+ID0gdXNlU2VsZWN0b3I7XG4iXX0=
@@ -11,6 +11,8 @@ var _path = _interopRequireDefault(require("path"));
11
11
 
12
12
  var _shelljs = require("shelljs");
13
13
 
14
+ var _fsExtra = require("fs-extra");
15
+
14
16
  var _FsUtils = require("../Commons/FsUtils");
15
17
 
16
18
  class FSTask {
@@ -60,7 +62,24 @@ class FSTask {
60
62
  }
61
63
  }
62
64
 
65
+ static async modifyFilesContent(logger, sourceDirectory, targetDirectory, mask, modifier) {
66
+ if (await (0, _FsUtils.isDirectoryExists)(sourceDirectory)) {
67
+ logger.log(`Modify files from ${sourceDirectory}`);
68
+ const sourceFiles = (0, _shelljs.ls)(`${sourceDirectory}/${mask}`);
69
+ await Promise.all(sourceFiles.map(async f => {
70
+ const targetFile = _path.default.join(targetDirectory, _path.default.basename(f));
71
+
72
+ if (await (0, _FsUtils.isFileExists)(targetFile)) {
73
+ const content = await (0, _fsExtra.readFile)(targetFile, {
74
+ encoding: "utf8"
75
+ });
76
+ await (0, _FsUtils.writeFileAsync)(targetFile, modifier(content), "utf8");
77
+ }
78
+ }));
79
+ }
80
+ }
81
+
63
82
  }
64
83
 
65
84
  exports.FSTask = FSTask;
66
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0ZTVGFzay50cyJdLCJuYW1lcyI6WyJGU1Rhc2siLCJmaW5kTWF4QmFzZVBhdGgiLCJmaXJzdFBhdGgiLCJzZWNvbmRQYXRoIiwiY3VycmVudFBhdGgiLCJwYXRoIiwiZGlybmFtZSIsImluY2x1ZGVzIiwibG9nQ29weSIsImxvZ2dlciIsInNvdXJjZURpcmVjdG9yeSIsInRhcmdldERpcmVjdG9yeSIsImJhc2VQYXRoIiwibG9nIiwicmVwbGFjZSIsImNvcHlSZWN1cnNpdmVseSIsImNvcHlCeU1hc2tzIiwibWFza3MiLCJtYXNrIiwiY29weUZpbGUiLCJzb3VyY2VGaWxlTmFtZSIsInRhcmdldEZpbGVOYW1lIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBR08sTUFBTUEsTUFBTixDQUFhO0FBQ2MsU0FBZkMsZUFBZSxDQUFDQyxTQUFELEVBQW9CQyxVQUFwQixFQUFnRDtBQUMxRSxRQUFJQyxXQUFXLEdBQUdGLFNBQWxCOztBQUNBLFdBQU9FLFdBQVcsS0FBS0MsY0FBS0MsT0FBTCxDQUFhRixXQUFiLENBQXZCLEVBQWtEO0FBQzlDLFVBQUlELFVBQVUsQ0FBQ0ksUUFBWCxDQUFvQkgsV0FBcEIsQ0FBSixFQUFzQztBQUNsQyxlQUFPQSxXQUFQO0FBQ0g7O0FBQ0RBLE1BQUFBLFdBQVcsR0FBR0MsY0FBS0MsT0FBTCxDQUFhRixXQUFiLENBQWQ7QUFDSDs7QUFDRCxXQUFPLEVBQVA7QUFDSDs7QUFFcUIsU0FBUEksT0FBTyxDQUFDQyxNQUFELEVBQWtCQyxlQUFsQixFQUEyQ0MsZUFBM0MsRUFBMEU7QUFDNUYsVUFBTUMsUUFBUSxHQUFHLEtBQUtYLGVBQUwsQ0FBcUJTLGVBQXJCLEVBQXNDQyxlQUF0QyxDQUFqQjtBQUNBRixJQUFBQSxNQUFNLENBQUNJLEdBQVAsQ0FBWSxRQUFPSCxlQUFlLENBQUNJLE9BQWhCLENBQXdCRixRQUF4QixFQUFrQyxFQUFsQyxDQUFzQyxPQUFNRCxlQUFlLENBQUNHLE9BQWhCLENBQXdCRixRQUF4QixFQUFrQyxFQUFsQyxDQUFzQyxFQUFyRztBQUNIOztBQUVrQyxlQUFmRyxlQUFlLENBQy9CTixNQUQrQixFQUUvQkMsZUFGK0IsRUFHL0JDLGVBSCtCLEVBSWxCO0FBQ2IsUUFBSSxNQUFNLGdDQUFrQkQsZUFBbEIsQ0FBVixFQUE4QztBQUMxQyxXQUFLRixPQUFMLENBQWFDLE1BQWIsRUFBcUJDLGVBQXJCLEVBQXNDQyxlQUF0QztBQUNBLDBCQUFNLElBQU4sRUFBWUEsZUFBWjtBQUNBLHVCQUFHLElBQUgsRUFBU0QsZUFBZSxHQUFHLElBQTNCLEVBQWlDQyxlQUFqQztBQUNIO0FBQ0o7O0FBRThCLGVBQVhLLFdBQVcsQ0FDM0JQLE1BRDJCLEVBRTNCQyxlQUYyQixFQUczQk8sS0FIMkIsRUFJM0JOLGVBSjJCLEVBS2Q7QUFDYixRQUFJLE1BQU0sZ0NBQWtCRCxlQUFsQixDQUFWLEVBQThDO0FBQzFDLDBCQUFNLElBQU4sRUFBWUMsZUFBWjs7QUFDQSxXQUFLLE1BQU1PLElBQVgsSUFBbUJELEtBQW5CLEVBQTBCO0FBQ3RCLGFBQUtULE9BQUwsQ0FBYUMsTUFBYixFQUFxQkMsZUFBckIsRUFBc0NDLGVBQXRDO0FBQ0EseUJBQUdELGVBQWUsR0FBRyxHQUFsQixHQUF3QlEsSUFBM0IsRUFBaUNQLGVBQWpDO0FBQ0g7QUFDSjtBQUNKOztBQUUyQixlQUFSUSxRQUFRLENBQUNWLE1BQUQsRUFBa0JXLGNBQWxCLEVBQTBDQyxjQUExQyxFQUFpRjtBQUN6RyxRQUFJLE1BQU0sMkJBQWFELGNBQWIsQ0FBVixFQUF3QztBQUNwQyxXQUFLWixPQUFMLENBQWFDLE1BQWIsRUFBcUJXLGNBQXJCLEVBQXFDQyxjQUFyQztBQUNBLDBCQUFNLElBQU4sRUFBWWhCLGNBQUtpQixJQUFMLENBQVVqQixjQUFLQyxPQUFMLENBQWFlLGNBQWIsQ0FBVixDQUFaO0FBQ0EsdUJBQUdELGNBQUgsRUFBbUJDLGNBQW5CO0FBQ0g7QUFDSjs7QUFsRGUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBjcCwgbWtkaXIgfSBmcm9tIFwic2hlbGxqc1wiO1xuXG5pbXBvcnQgeyBpc0RpcmVjdG9yeUV4aXN0cywgaXNGaWxlRXhpc3RzIH0gZnJvbSBcIi4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuXG5leHBvcnQgY2xhc3MgRlNUYXNrIHtcbiAgICBwcml2YXRlIHN0YXRpYyBmaW5kTWF4QmFzZVBhdGgoZmlyc3RQYXRoOiBzdHJpbmcsIHNlY29uZFBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBjdXJyZW50UGF0aCA9IGZpcnN0UGF0aDtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnRQYXRoICE9PSBwYXRoLmRpcm5hbWUoY3VycmVudFBhdGgpKSB7XG4gICAgICAgICAgICBpZiAoc2Vjb25kUGF0aC5pbmNsdWRlcyhjdXJyZW50UGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50UGF0aCA9IHBhdGguZGlybmFtZShjdXJyZW50UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgbG9nQ29weShsb2dnZXI6IElMb2dnZXIsIHNvdXJjZURpcmVjdG9yeTogc3RyaW5nLCB0YXJnZXREaXJlY3Rvcnk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IHRoaXMuZmluZE1heEJhc2VQYXRoKHNvdXJjZURpcmVjdG9yeSwgdGFyZ2V0RGlyZWN0b3J5KTtcbiAgICAgICAgbG9nZ2VyLmxvZyhgQ29weSAke3NvdXJjZURpcmVjdG9yeS5yZXBsYWNlKGJhc2VQYXRoLCBcIlwiKX0gLT4gJHt0YXJnZXREaXJlY3RvcnkucmVwbGFjZShiYXNlUGF0aCwgXCJcIil9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyBjb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgIGxvZ2dlcjogSUxvZ2dlcixcbiAgICAgICAgc291cmNlRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIHRhcmdldERpcmVjdG9yeTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChhd2FpdCBpc0RpcmVjdG9yeUV4aXN0cyhzb3VyY2VEaXJlY3RvcnkpKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ0NvcHkobG9nZ2VyLCBzb3VyY2VEaXJlY3RvcnksIHRhcmdldERpcmVjdG9yeSk7XG4gICAgICAgICAgICBta2RpcihcIi1wXCIsIHRhcmdldERpcmVjdG9yeSk7XG4gICAgICAgICAgICBjcChcIi1SXCIsIHNvdXJjZURpcmVjdG9yeSArIFwiLypcIiwgdGFyZ2V0RGlyZWN0b3J5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgY29weUJ5TWFza3MoXG4gICAgICAgIGxvZ2dlcjogSUxvZ2dlcixcbiAgICAgICAgc291cmNlRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIG1hc2tzOiBzdHJpbmdbXSxcbiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKGF3YWl0IGlzRGlyZWN0b3J5RXhpc3RzKHNvdXJjZURpcmVjdG9yeSkpIHtcbiAgICAgICAgICAgIG1rZGlyKFwiLXBcIiwgdGFyZ2V0RGlyZWN0b3J5KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFzayBvZiBtYXNrcykge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nQ29weShsb2dnZXIsIHNvdXJjZURpcmVjdG9yeSwgdGFyZ2V0RGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICBjcChzb3VyY2VEaXJlY3RvcnkgKyBcIi9cIiArIG1hc2ssIHRhcmdldERpcmVjdG9yeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGNvcHlGaWxlKGxvZ2dlcjogSUxvZ2dlciwgc291cmNlRmlsZU5hbWU6IHN0cmluZywgdGFyZ2V0RmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoYXdhaXQgaXNGaWxlRXhpc3RzKHNvdXJjZUZpbGVOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5sb2dDb3B5KGxvZ2dlciwgc291cmNlRmlsZU5hbWUsIHRhcmdldEZpbGVOYW1lKTtcbiAgICAgICAgICAgIG1rZGlyKFwiLXBcIiwgcGF0aC5qb2luKHBhdGguZGlybmFtZSh0YXJnZXRGaWxlTmFtZSkpKTtcbiAgICAgICAgICAgIGNwKHNvdXJjZUZpbGVOYW1lLCB0YXJnZXRGaWxlTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
85
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0ZTVGFzay50cyJdLCJuYW1lcyI6WyJGU1Rhc2siLCJmaW5kTWF4QmFzZVBhdGgiLCJmaXJzdFBhdGgiLCJzZWNvbmRQYXRoIiwiY3VycmVudFBhdGgiLCJwYXRoIiwiZGlybmFtZSIsImluY2x1ZGVzIiwibG9nQ29weSIsImxvZ2dlciIsInNvdXJjZURpcmVjdG9yeSIsInRhcmdldERpcmVjdG9yeSIsImJhc2VQYXRoIiwibG9nIiwicmVwbGFjZSIsImNvcHlSZWN1cnNpdmVseSIsImNvcHlCeU1hc2tzIiwibWFza3MiLCJtYXNrIiwiY29weUZpbGUiLCJzb3VyY2VGaWxlTmFtZSIsInRhcmdldEZpbGVOYW1lIiwiam9pbiIsIm1vZGlmeUZpbGVzQ29udGVudCIsIm1vZGlmaWVyIiwic291cmNlRmlsZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiZiIsInRhcmdldEZpbGUiLCJiYXNlbmFtZSIsImNvbnRlbnQiLCJlbmNvZGluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBR08sTUFBTUEsTUFBTixDQUFhO0FBQ2MsU0FBZkMsZUFBZSxDQUFDQyxTQUFELEVBQW9CQyxVQUFwQixFQUFnRDtBQUMxRSxRQUFJQyxXQUFXLEdBQUdGLFNBQWxCOztBQUNBLFdBQU9FLFdBQVcsS0FBS0MsY0FBS0MsT0FBTCxDQUFhRixXQUFiLENBQXZCLEVBQWtEO0FBQzlDLFVBQUlELFVBQVUsQ0FBQ0ksUUFBWCxDQUFvQkgsV0FBcEIsQ0FBSixFQUFzQztBQUNsQyxlQUFPQSxXQUFQO0FBQ0g7O0FBQ0RBLE1BQUFBLFdBQVcsR0FBR0MsY0FBS0MsT0FBTCxDQUFhRixXQUFiLENBQWQ7QUFDSDs7QUFDRCxXQUFPLEVBQVA7QUFDSDs7QUFFcUIsU0FBUEksT0FBTyxDQUFDQyxNQUFELEVBQWtCQyxlQUFsQixFQUEyQ0MsZUFBM0MsRUFBMEU7QUFDNUYsVUFBTUMsUUFBUSxHQUFHLEtBQUtYLGVBQUwsQ0FBcUJTLGVBQXJCLEVBQXNDQyxlQUF0QyxDQUFqQjtBQUNBRixJQUFBQSxNQUFNLENBQUNJLEdBQVAsQ0FBWSxRQUFPSCxlQUFlLENBQUNJLE9BQWhCLENBQXdCRixRQUF4QixFQUFrQyxFQUFsQyxDQUFzQyxPQUFNRCxlQUFlLENBQUNHLE9BQWhCLENBQXdCRixRQUF4QixFQUFrQyxFQUFsQyxDQUFzQyxFQUFyRztBQUNIOztBQUVrQyxlQUFmRyxlQUFlLENBQy9CTixNQUQrQixFQUUvQkMsZUFGK0IsRUFHL0JDLGVBSCtCLEVBSWxCO0FBQ2IsUUFBSSxNQUFNLGdDQUFrQkQsZUFBbEIsQ0FBVixFQUE4QztBQUMxQyxXQUFLRixPQUFMLENBQWFDLE1BQWIsRUFBcUJDLGVBQXJCLEVBQXNDQyxlQUF0QztBQUNBLDBCQUFNLElBQU4sRUFBWUEsZUFBWjtBQUNBLHVCQUFHLElBQUgsRUFBU0QsZUFBZSxHQUFHLElBQTNCLEVBQWlDQyxlQUFqQztBQUNIO0FBQ0o7O0FBRThCLGVBQVhLLFdBQVcsQ0FDM0JQLE1BRDJCLEVBRTNCQyxlQUYyQixFQUczQk8sS0FIMkIsRUFJM0JOLGVBSjJCLEVBS2Q7QUFDYixRQUFJLE1BQU0sZ0NBQWtCRCxlQUFsQixDQUFWLEVBQThDO0FBQzFDLDBCQUFNLElBQU4sRUFBWUMsZUFBWjs7QUFDQSxXQUFLLE1BQU1PLElBQVgsSUFBbUJELEtBQW5CLEVBQTBCO0FBQ3RCLGFBQUtULE9BQUwsQ0FBYUMsTUFBYixFQUFxQkMsZUFBckIsRUFBc0NDLGVBQXRDO0FBQ0EseUJBQUdELGVBQWUsR0FBRyxHQUFsQixHQUF3QlEsSUFBM0IsRUFBaUNQLGVBQWpDO0FBQ0g7QUFDSjtBQUNKOztBQUUyQixlQUFSUSxRQUFRLENBQUNWLE1BQUQsRUFBa0JXLGNBQWxCLEVBQTBDQyxjQUExQyxFQUFpRjtBQUN6RyxRQUFJLE1BQU0sMkJBQWFELGNBQWIsQ0FBVixFQUF3QztBQUNwQyxXQUFLWixPQUFMLENBQWFDLE1BQWIsRUFBcUJXLGNBQXJCLEVBQXFDQyxjQUFyQztBQUNBLDBCQUFNLElBQU4sRUFBWWhCLGNBQUtpQixJQUFMLENBQVVqQixjQUFLQyxPQUFMLENBQWFlLGNBQWIsQ0FBVixDQUFaO0FBQ0EsdUJBQUdELGNBQUgsRUFBbUJDLGNBQW5CO0FBQ0g7QUFDSjs7QUFFcUMsZUFBbEJFLGtCQUFrQixDQUNsQ2QsTUFEa0MsRUFFbENDLGVBRmtDLEVBR2xDQyxlQUhrQyxFQUlsQ08sSUFKa0MsRUFLbENNLFFBTGtDLEVBTXJCO0FBQ2IsUUFBSSxNQUFNLGdDQUFrQmQsZUFBbEIsQ0FBVixFQUE4QztBQUMxQ0QsTUFBQUEsTUFBTSxDQUFDSSxHQUFQLENBQVkscUJBQW9CSCxlQUFnQixFQUFoRDtBQUNBLFlBQU1lLFdBQVcsR0FBRyxpQkFBSSxHQUFFZixlQUFnQixJQUFHUSxJQUFLLEVBQTlCLENBQXBCO0FBQ0EsWUFBTVEsT0FBTyxDQUFDQyxHQUFSLENBQ0ZGLFdBQVcsQ0FBQ0csR0FBWixDQUFnQixNQUFNQyxDQUFOLElBQVc7QUFDdkIsY0FBTUMsVUFBVSxHQUFHekIsY0FBS2lCLElBQUwsQ0FBVVgsZUFBVixFQUEyQk4sY0FBSzBCLFFBQUwsQ0FBY0YsQ0FBZCxDQUEzQixDQUFuQjs7QUFDQSxZQUFJLE1BQU0sMkJBQWFDLFVBQWIsQ0FBVixFQUFvQztBQUNoQyxnQkFBTUUsT0FBTyxHQUFHLE1BQU0sdUJBQVNGLFVBQVQsRUFBcUI7QUFBRUcsWUFBQUEsUUFBUSxFQUFFO0FBQVosV0FBckIsQ0FBdEI7QUFDQSxnQkFBTSw2QkFBZUgsVUFBZixFQUEyQk4sUUFBUSxDQUFDUSxPQUFELENBQW5DLEVBQThDLE1BQTlDLENBQU47QUFDSDtBQUNKLE9BTkQsQ0FERSxDQUFOO0FBU0g7QUFDSjs7QUF4RWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBjcCwgbWtkaXIsIGxzIH0gZnJvbSBcInNoZWxsanNcIjtcbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGlzRGlyZWN0b3J5RXhpc3RzLCBpc0ZpbGVFeGlzdHMsIHdyaXRlRmlsZUFzeW5jIH0gZnJvbSBcIi4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuXG5leHBvcnQgY2xhc3MgRlNUYXNrIHtcbiAgICBwcml2YXRlIHN0YXRpYyBmaW5kTWF4QmFzZVBhdGgoZmlyc3RQYXRoOiBzdHJpbmcsIHNlY29uZFBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBjdXJyZW50UGF0aCA9IGZpcnN0UGF0aDtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnRQYXRoICE9PSBwYXRoLmRpcm5hbWUoY3VycmVudFBhdGgpKSB7XG4gICAgICAgICAgICBpZiAoc2Vjb25kUGF0aC5pbmNsdWRlcyhjdXJyZW50UGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50UGF0aCA9IHBhdGguZGlybmFtZShjdXJyZW50UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgbG9nQ29weShsb2dnZXI6IElMb2dnZXIsIHNvdXJjZURpcmVjdG9yeTogc3RyaW5nLCB0YXJnZXREaXJlY3Rvcnk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IHRoaXMuZmluZE1heEJhc2VQYXRoKHNvdXJjZURpcmVjdG9yeSwgdGFyZ2V0RGlyZWN0b3J5KTtcbiAgICAgICAgbG9nZ2VyLmxvZyhgQ29weSAke3NvdXJjZURpcmVjdG9yeS5yZXBsYWNlKGJhc2VQYXRoLCBcIlwiKX0gLT4gJHt0YXJnZXREaXJlY3RvcnkucmVwbGFjZShiYXNlUGF0aCwgXCJcIil9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyBjb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgIGxvZ2dlcjogSUxvZ2dlcixcbiAgICAgICAgc291cmNlRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIHRhcmdldERpcmVjdG9yeTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChhd2FpdCBpc0RpcmVjdG9yeUV4aXN0cyhzb3VyY2VEaXJlY3RvcnkpKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ0NvcHkobG9nZ2VyLCBzb3VyY2VEaXJlY3RvcnksIHRhcmdldERpcmVjdG9yeSk7XG4gICAgICAgICAgICBta2RpcihcIi1wXCIsIHRhcmdldERpcmVjdG9yeSk7XG4gICAgICAgICAgICBjcChcIi1SXCIsIHNvdXJjZURpcmVjdG9yeSArIFwiLypcIiwgdGFyZ2V0RGlyZWN0b3J5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgY29weUJ5TWFza3MoXG4gICAgICAgIGxvZ2dlcjogSUxvZ2dlcixcbiAgICAgICAgc291cmNlRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIG1hc2tzOiBzdHJpbmdbXSxcbiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKGF3YWl0IGlzRGlyZWN0b3J5RXhpc3RzKHNvdXJjZURpcmVjdG9yeSkpIHtcbiAgICAgICAgICAgIG1rZGlyKFwiLXBcIiwgdGFyZ2V0RGlyZWN0b3J5KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFzayBvZiBtYXNrcykge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nQ29weShsb2dnZXIsIHNvdXJjZURpcmVjdG9yeSwgdGFyZ2V0RGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICBjcChzb3VyY2VEaXJlY3RvcnkgKyBcIi9cIiArIG1hc2ssIHRhcmdldERpcmVjdG9yeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGNvcHlGaWxlKGxvZ2dlcjogSUxvZ2dlciwgc291cmNlRmlsZU5hbWU6IHN0cmluZywgdGFyZ2V0RmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoYXdhaXQgaXNGaWxlRXhpc3RzKHNvdXJjZUZpbGVOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5sb2dDb3B5KGxvZ2dlciwgc291cmNlRmlsZU5hbWUsIHRhcmdldEZpbGVOYW1lKTtcbiAgICAgICAgICAgIG1rZGlyKFwiLXBcIiwgcGF0aC5qb2luKHBhdGguZGlybmFtZSh0YXJnZXRGaWxlTmFtZSkpKTtcbiAgICAgICAgICAgIGNwKHNvdXJjZUZpbGVOYW1lLCB0YXJnZXRGaWxlTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIG1vZGlmeUZpbGVzQ29udGVudChcbiAgICAgICAgbG9nZ2VyOiBJTG9nZ2VyLFxuICAgICAgICBzb3VyY2VEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIG1hc2s6IHN0cmluZyxcbiAgICAgICAgbW9kaWZpZXI6IChjb250ZW50OiBzdHJpbmcpID0+IHN0cmluZ1xuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoYXdhaXQgaXNEaXJlY3RvcnlFeGlzdHMoc291cmNlRGlyZWN0b3J5KSkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhgTW9kaWZ5IGZpbGVzIGZyb20gJHtzb3VyY2VEaXJlY3Rvcnl9YCk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VGaWxlcyA9IGxzKGAke3NvdXJjZURpcmVjdG9yeX0vJHttYXNrfWApO1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgc291cmNlRmlsZXMubWFwKGFzeW5jIGYgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRGaWxlID0gcGF0aC5qb2luKHRhcmdldERpcmVjdG9yeSwgcGF0aC5iYXNlbmFtZShmKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBpc0ZpbGVFeGlzdHModGFyZ2V0RmlsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZSh0YXJnZXRGaWxlLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKHRhcmdldEZpbGUsIG1vZGlmaWVyKGNvbnRlbnQpLCBcInV0ZjhcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -28,6 +28,7 @@ async function readFormSource(formSourcesPath, farmDirectory, hlFarmDirectoryPat
28
28
  additionalSettings: await readFileWithDefault(formSourcesPath, "settings.json", "{}"),
29
29
  autocalcsContent: await readAutoCalcFiles(_path.default.join(formSourcesPath, "autocalc")),
30
30
  helpersContent: await readJavaScriptFilesWithNames(_path.default.join(formSourcesPath, "helpers")),
31
+ commonHelpersContent: await readJavaScriptFilesWithNames(_path.default.join(farmDirectory, "jsHelpers")),
31
32
  validationsContent: await readJavaScriptFilesWithNames(_path.default.join(formSourcesPath, "validations")),
32
33
  schemaRngContent: await readSchemaRngFile(_path.default.join(formSourcesPath, "schemas"), formName),
33
34
  kcJsXmlContent: await readFileWithDefault(_path.default.join(formSourcesPath, "autocalc"), `${formName}.КС.candy.js.xml`, "<dummy/>"),
@@ -132,4 +133,4 @@ async function readFileWithDefault(filePath, filename, defaultValue) {
132
133
  return defaultValue;
133
134
  }
134
135
  }
135
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL1JlYWRGb3JtU291cmNlLnRzIl0sIm5hbWVzIjpbInJlYWRGb3JtU291cmNlIiwiZm9ybVNvdXJjZXNQYXRoIiwiZmFybURpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJyb290UGF0aCIsImZvcm1OYW1lIiwicGF0aCIsImJhc2VuYW1lIiwic3VnYXJDb250ZW50IiwicmVhZFN1Z2FyRmlsZXMiLCJqb2luIiwicmVzdWx0IiwicmVzb3VyY2VzIiwiZ2Z2IiwiYWRkaXRpb25hbFNldHRpbmdzIiwicmVhZEZpbGVXaXRoRGVmYXVsdCIsImF1dG9jYWxjc0NvbnRlbnQiLCJyZWFkQXV0b0NhbGNGaWxlcyIsImhlbHBlcnNDb250ZW50IiwicmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyIsInZhbGlkYXRpb25zQ29udGVudCIsInNjaGVtYVJuZ0NvbnRlbnQiLCJyZWFkU2NoZW1hUm5nRmlsZSIsImtjSnNYbWxDb250ZW50Iiwia2NMYW5nQ29udGVudCIsIm5vcm1hdGl2ZUhlbHBDb250ZW50IiwicmVhZE5vcm1hdGl2ZUhlbHBGaWxlIiwidG91clN0ZXBzIiwiaG9va3NDb250ZW50IiwicmVhZEhvb2tzRmlsZSIsImN1c3RvbUNvbnRyb2xzQ29udGVudCIsInJlYWRDdXN0b21Db250cm9sc0ZpbGVzIiwic3RhcnRzV2l0aCIsImNvbW1vblJlc291cmNlc1BhdGgiLCJlbGVtZW50cyIsInJlcXVpcmUiLCJoYXNSZWdpb25hbEZvcm0iLCJPYmplY3QiLCJ2YWx1ZXMiLCJmaW5kIiwic3VnYXIiLCJpbmNsdWRlcyIsInByZXByb2Nlc3NvciIsImZvcm1TdWdhckRpcmVjdG9yeVBhdGgiLCJmaWxlTmFtZXMiLCJmaWxlTmFtZSIsInN1Z2FyTW9kdWxlTmFtZSIsInJlcGxhY2UiLCJzdWdhck1vZHVsZUNvbnRlbnQiLCJyZWxhdGl2ZUZpbGVOYW1lIiwiZm9ybUF1dG9DYWxjUGF0aCIsImZpbGVzIiwianNGaWxlcyIsImZpbHRlciIsImZpbGVuYW1lIiwidGVzdCIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJpZ25vcmVFcnJvciIsImZvcm1KYXZhU2NyaXB0RmlsZXNQYXRoIiwicGFyc2UiLCJuYW1lIiwiY29udGVudCIsImZvcm1TY2hlbWFzUGF0aCIsImZvcm1EaXJlY3RvcnlQYXRoIiwiY2F0Y2giLCJmaWxlUGF0aCIsImRlZmF1bHRWYWx1ZSIsImluZ29yZUVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFnQ08sZUFBZUEsY0FBZixDQUNIQyxlQURHLEVBRUhDLGFBRkcsRUFHSEMsbUJBSEcsRUFJZ0I7QUFDbkIsUUFBTUMsUUFBUSxHQUFHRixhQUFqQjs7QUFDQSxRQUFNRyxRQUFRLEdBQUdDLGNBQUtDLFFBQUwsQ0FBY04sZUFBZCxDQUFqQjs7QUFDQSxRQUFNTyxZQUFZLEdBQUcsTUFBTUMsY0FBYyxDQUFDSCxjQUFLSSxJQUFMLENBQVVULGVBQVYsRUFBMkIsT0FBM0IsQ0FBRCxDQUF6QztBQUNBLFFBQU1VLE1BQWtCLEdBQUc7QUFDdkJILElBQUFBLFlBQVksRUFBRUEsWUFEUztBQUV2QkksSUFBQUEsU0FBUyxFQUFFO0FBQ1BDLE1BQUFBLEdBQUcsRUFBRVAsY0FBS0MsUUFBTCxDQUFjTixlQUFkLENBREU7QUFFUGEsTUFBQUEsa0JBQWtCLEVBQUUsTUFBTUMsbUJBQW1CLENBQUNkLGVBQUQsRUFBa0IsZUFBbEIsRUFBbUMsSUFBbkMsQ0FGdEM7QUFHUGUsTUFBQUEsZ0JBQWdCLEVBQUUsTUFBTUMsaUJBQWlCLENBQUNYLGNBQUtJLElBQUwsQ0FBVVQsZUFBVixFQUEyQixVQUEzQixDQUFELENBSGxDO0FBSVBpQixNQUFBQSxjQUFjLEVBQUUsTUFBTUMsNEJBQTRCLENBQUNiLGNBQUtJLElBQUwsQ0FBVVQsZUFBVixFQUEyQixTQUEzQixDQUFELENBSjNDO0FBS1BtQixNQUFBQSxrQkFBa0IsRUFBRSxNQUFNRCw0QkFBNEIsQ0FBQ2IsY0FB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LFFBRkosRUFHSWMsWUFISixFQUkrQjtBQUMzQixNQUFJO0FBQ0EsV0FBTyxNQUFNLHVCQUFTOUQsY0FBS0ksSUFBTCxDQUFVeUQsUUFBVixFQUFvQmIsUUFBcEIsQ0FBVCxFQUF3QyxPQUF4QyxDQUFiO0FBQ0gsR0FGRCxDQUVFLE9BQU9lLFdBQVAsRUFBb0I7QUFDbEIsV0FBT0QsWUFBUDtBQUNIO0FBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHJlY3Vyc2l2ZVJlYWRkaXIgZnJvbSBcInJlY3Vyc2l2ZS1yZWFkZGlyXCI7XG5cbmltcG9ydCB7IGlzRGlyZWN0b3J5RXhpc3RzIH0gZnJvbSBcIi4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1Z2FyQ29udGVudCB7XG4gICAgW3N1Z2FyRmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uOiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tQ29udHJvbHNDb250ZW50IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVJlc291cmNlcyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgYWRkaXRpb25hbFNldHRpbmdzOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgYXV0b2NhbGNzQ29udGVudDogc3RyaW5nW107XG4gICAgaGVscGVyc0NvbnRlbnQ6IEFycmF5PHsgZmlsZW5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+O1xuICAgIHZhbGlkYXRpb25zQ29udGVudDogQXJyYXk8eyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT47XG4gICAgc2NoZW1hUm5nQ29udGVudDogc3RyaW5nO1xuICAgIGtjSnNYbWxDb250ZW50OiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAga2NMYW5nQ29udGVudDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIG5vcm1hdGl2ZUhlbHBDb250ZW50OiBzdHJpbmc7XG4gICAgdG91clN0ZXBzOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgaG9va3NDb250ZW50OiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgY3VzdG9tQ29udHJvbHNDb250ZW50OiBDdXN0b21Db250cm9sc0NvbnRlbnQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcmVwcm9jZXNzb3I/OiBhbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtU291cmNlIHtcbiAgICBzdWdhckNvbnRlbnQ6IFN1Z2FyQ29udGVudDtcbiAgICByZXNvdXJjZXM6IEZvcm1SZXNvdXJjZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRm9ybVNvdXJjZShcbiAgICBmb3JtU291cmNlc1BhdGg6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPEZvcm1Tb3VyY2U+IHtcbiAgICBjb25zdCByb290UGF0aCA9IGZhcm1EaXJlY3Rvcnk7XG4gICAgY29uc3QgZm9ybU5hbWUgPSBwYXRoLmJhc2VuYW1lKGZvcm1Tb3VyY2VzUGF0aCk7XG4gICAgY29uc3Qgc3VnYXJDb250ZW50ID0gYXdhaXQgcmVhZFN1Z2FyRmlsZXMocGF0aC5qb2luKGZvcm1Tb3VyY2VzUGF0aCwgXCJzdWdhclwiKSk7XG4gICAgY29uc3QgcmVzdWx0OiBGb3JtU291cmNlID0ge1xuICAgICAgICBzdWdhckNvbnRlbnQ6IHN1Z2FyQ29udGVudCxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgICBnZnY6IHBhdGguYmFzZW5hbWUoZm9ybVNvdXJjZXNQYXRoKSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxTZXR0aW5nczogYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChmb3JtU291cmNlc1BhdGgsIFwic2V0dGluZ3MuanNvblwiLCBcInt9XCIpLFxuICAgICAgICAgICAgYXV0b2NhbGNzQ29udGVudDogYXdhaXQgcmVhZEF1dG9DYWxjRmlsZXMocGF0aC5qb2luKGZvcm1Tb3VyY2VzUGF0aCwgXCJhdXRvY2FsY1wiKSksXG4gICAgICAgICAgICBoZWxwZXJzQ29udGVudDogYXdhaXQgcmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyhwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcImhlbHBlcnNcIikpLFxuICAgICAgICAgICAgdmFsaWRhdGlvbnNDb250ZW50OiBhd2FpdCByZWFkSmF2YVNjcmlwdEZpbGVzV2l0aE5hbWVzKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwidmFsaWRhdGlvbnNcIikpLFxuICAgICAgICAgICAgc2NoZW1hUm5nQ29udGVudDogYXdhaXQgcmVhZFNjaGVtYVJuZ0ZpbGUocGF0aC5qb2luKGZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBmb3JtTmFtZSksXG4gICAgICAgICAgICBrY0pzWG1sQ29udGVudDogYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcImF1dG9jYWxjXCIpLFxuICAgICAgICAgICAgICAgIGAke2Zvcm1OYW1lfS7QmtChLmNhbmR5LmpzLnhtbGAsXG4gICAgICAgICAgICAgICAgXCI8ZHVtbXkvPlwiXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAga2NMYW5nQ29udGVudDogYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcImF1dG9jYWxjXCIpLFxuICAgICAgICAgICAgICAgIGAke2Zvcm1OYW1lfS7QmtChLmNhbmR5LmpzLmtjbGFuZ2AsXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG5vcm1hdGl2ZUhlbHBDb250ZW50OiBhd2FpdCByZWFkTm9ybWF0aXZlSGVscEZpbGUoaGxGYXJtRGlyZWN0b3J5UGF0aCksXG4gICAgICAgICAgICB0b3VyU3RlcHM6IGF3YWl0IHJlYWRGaWxlV2l0aERlZmF1bHQocGF0aC5qb2luKHJvb3RQYXRoLCBcInRvdXJcIiksIFwidG91ci5qc1wiLCBcInt9XCIpLFxuICAgICAgICAgICAgaG9va3NDb250ZW50OiBhd2FpdCByZWFkSG9va3NGaWxlKGZvcm1Tb3VyY2VzUGF0aCksXG4gICAgICAgICAgICBjdXN0b21Db250cm9sc0NvbnRlbnQ6IGF3YWl0IHJlYWRDdXN0b21Db250cm9sc0ZpbGVzKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwiY29udHJvbHNcIikpLFxuICAgICAgICB9LFxuICAgIH07XG4gICAgaWYgKGZvcm1OYW1lLnN0YXJ0c1dpdGgoXCI0XCIpKSB7XG4gICAgICAgIGNvbnN0IGNvbW1vblJlc291cmNlc1BhdGggPSBwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcIi4uXCIsIFwiLi5cIiwgXCJjb21tb25SZXNvdXJjZXNcIik7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICAgIGNvbnN0IHsgZWxlbWVudHMgfSA9IHJlcXVpcmUocGF0aC5qb2luKGNvbW1vblJlc291cmNlc1BhdGgsIFwic3RhdFRpdGxlLmpzXCIpKTtcbiAgICAgICAgY29uc3QgaGFzUmVnaW9uYWxGb3JtID0gT2JqZWN0LnZhbHVlcyhzdWdhckNvbnRlbnQpLmZpbmQoc3VnYXIgPT4gc3VnYXIuaW5jbHVkZXMoJ2hhc1JlZ2lvbmFsRm9ybXM9XCJ0cnVlXCInKSk7XG5cbiAgICAgICAgaWYgKCFyZXN1bHQucmVzb3VyY2VzLmhvb2tzQ29udGVudCAmJiBoYXNSZWdpb25hbEZvcm0pIHtcbiAgICAgICAgICAgIHJlc3VsdC5yZXNvdXJjZXMuaG9va3NDb250ZW50ID0gYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChjb21tb25SZXNvdXJjZXNQYXRoLCBcInJlZ2lvblN0YXRIb29rcy5qc1wiKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucmVzb3VyY2VzLnByZXByb2Nlc3NvciA9IHsgLi4uZWxlbWVudHMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFN1Z2FyRmlsZXMoZm9ybVN1Z2FyRGlyZWN0b3J5UGF0aDogc3RyaW5nKTogUHJvbWlzZTxTdWdhckNvbnRlbnQ+IHtcbiAgICBjb25zdCBmaWxlTmFtZXMgPSBhd2FpdCByZWFkZGlyKGZvcm1TdWdhckRpcmVjdG9yeVBhdGgpO1xuICAgIGNvbnN0IHJlc3VsdDogU3VnYXJDb250ZW50ID0ge307XG4gICAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBmaWxlTmFtZXMpIHtcbiAgICAgICAgY29uc3Qgc3VnYXJNb2R1bGVOYW1lID0gZmlsZU5hbWUucmVwbGFjZShcIi5zdWdhci54bWxcIiwgXCJcIik7XG4gICAgICAgIGNvbnN0IHN1Z2FyTW9kdWxlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbihmb3JtU3VnYXJEaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSksIFwidXRmLThcIik7XG4gICAgICAgIHJlc3VsdFtzdWdhck1vZHVsZU5hbWVdID0gc3VnYXJNb2R1bGVDb250ZW50O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VzdG9tQ29udHJvbHNGaWxlcyhmb3JtU3VnYXJEaXJlY3RvcnlQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEN1c3RvbUNvbnRyb2xzQ29udGVudD4ge1xuICAgIGlmICghKGF3YWl0IGlzRGlyZWN0b3J5RXhpc3RzKGZvcm1TdWdhckRpcmVjdG9yeVBhdGgpKSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGZpbGVOYW1lcyA9IGF3YWl0IHJlY3Vyc2l2ZVJlYWRkaXIoZm9ybVN1Z2FyRGlyZWN0b3J5UGF0aCk7XG4gICAgY29uc3QgcmVzdWx0OiBDdXN0b21Db250cm9sc0NvbnRlbnQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIGZpbGVOYW1lcykge1xuICAgICAgICBjb25zdCBzdWdhck1vZHVsZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShmaWxlTmFtZSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVGaWxlTmFtZSA9IChcImNvbnRyb2xzXFxcXFwiICsgZmlsZU5hbWUucmVwbGFjZShmb3JtU3VnYXJEaXJlY3RvcnlQYXRoICsgXCJcXFxcXCIsIFwiXCIpKS5yZXBsYWNlKFxuICAgICAgICAgICAgL1xcXFwvZyxcbiAgICAgICAgICAgIFwiL1wiXG4gICAgICAgICk7XG4gICAgICAgIHJlc3VsdFtyZWxhdGl2ZUZpbGVOYW1lXSA9IHN1Z2FyTW9kdWxlQ29udGVudDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEF1dG9DYWxjRmlsZXMoZm9ybUF1dG9DYWxjUGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpcihmb3JtQXV0b0NhbGNQYXRoKTtcbiAgICAgICAgY29uc3QganNGaWxlcyA9IGZpbGVzLmZpbHRlcihmaWxlbmFtZSA9PiAvXFwuanMkLy50ZXN0KGZpbGVuYW1lKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChqc0ZpbGVzLm1hcChmaWxlbmFtZSA9PiByZWFkRmlsZShwYXRoLmpvaW4oZm9ybUF1dG9DYWxjUGF0aCwgZmlsZW5hbWUpLCBcInV0Zi04XCIpKSk7XG4gICAgfSBjYXRjaCAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyhcbiAgICBmb3JtSmF2YVNjcmlwdEZpbGVzUGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPEFycmF5PHsgZmlsZW5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCByZWFkZGlyKGZvcm1KYXZhU2NyaXB0RmlsZXNQYXRoKTtcbiAgICAgICAgY29uc3QganNGaWxlcyA9IGZpbGVzLmZpbHRlcihmaWxlbmFtZSA9PiAvXFwuanMkLy50ZXN0KGZpbGVuYW1lKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGpzRmlsZXMubWFwKGFzeW5jIGZpbGVuYW1lID0+ICh7XG4gICAgICAgICAgICAgICAgZmlsZW5hbWU6IHBhdGgucGFyc2UoZmlsZW5hbWUpLm5hbWUsXG4gICAgICAgICAgICAgICAgY29udGVudDogYXdhaXQgcmVhZEZpbGUocGF0aC5qb2luKGZvcm1KYXZhU2NyaXB0RmlsZXNQYXRoLCBmaWxlbmFtZSksIFwidXRmLThcIiksXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIChpZ25vcmVFcnJvcikge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWFkU2NoZW1hUm5nRmlsZShmb3JtU2NoZW1hc1BhdGg6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiByZWFkRmlsZShwYXRoLmpvaW4oZm9ybVNjaGVtYXNQYXRoLCBgJHtnZnZ9LnJuZy54bWxgKSwgXCJ1dGYtOFwiKTtcbn1cblxuZnVuY3Rpb24gcmVhZE5vcm1hdGl2ZUhlbHBGaWxlKGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHJlYWRGaWxlKHBhdGguam9pbihobEZhcm1EaXJlY3RvcnlQYXRoLCBcIkZvcm1zXCIsIFwiaGVscGlkX25vcm1hdGl2LnhtbFwiKSwgXCJ1dGYtOFwiKTtcbn1cblxuZnVuY3Rpb24gcmVhZEhvb2tzRmlsZShmb3JtRGlyZWN0b3J5UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gcmVhZEZpbGUocGF0aC5qb2luKGZvcm1EaXJlY3RvcnlQYXRoLCBcImhvb2tzLmpzXCIpLCBcInV0Zi04XCIpLmNhdGNoKCgpID0+IFwiXCIpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkRmlsZVdpdGhEZWZhdWx0KFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmdcbik6IFByb21pc2U8dW5kZWZpbmVkIHwgc3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbihmaWxlUGF0aCwgZmlsZW5hbWUpLCBcInV0Zi04XCIpO1xuICAgIH0gY2F0Y2ggKGluZ29yZUVycm9yKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxufVxuIl19
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL1JlYWRGb3JtU291cmNlLnRzIl0sIm5hbWVzIjpbInJlYWRGb3JtU291cmNlIiwiZm9ybVNvdXJjZXNQYXRoIiwiZmFybURpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJyb290UGF0aCIsImZvcm1OYW1lIiwicGF0aCIsImJhc2VuYW1lIiwic3VnYXJDb250ZW50IiwicmVhZFN1Z2FyRmlsZXMiLCJqb2luIiwicmVzdWx0IiwicmVzb3VyY2VzIiwiZ2Z2IiwiYWRkaXRpb25hbFNldHRpbmdzIiwicmVhZEZpbGVXaXRoRGVmYXVsdCIsImF1dG9jYWxjc0NvbnRlbnQiLCJyZWFkQXV0b0NhbGNGaWxlcyIsImhlbHBlcnNDb250ZW50IiwicmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyIsImNvbW1vbkhlbHBlcnNDb250ZW50IiwidmFsaWRhdGlvbnNDb250ZW50Iiwic2NoZW1hUm5nQ29udGVudCIsInJlYWRTY2hlbWFSbmdGaWxlIiwia2NKc1htbENvbnRlbnQiLCJrY0xhbmdDb250ZW50Iiwibm9ybWF0aXZlSGVscENvbnRlbnQiLCJyZWFkTm9ybWF0aXZlSGVscEZpbGUiLCJ0b3VyU3RlcHMiLCJob29rc0NvbnRlbnQiLCJyZWFkSG9va3NGaWxlIiwiY3VzdG9tQ29udHJvbHNDb250ZW50IiwicmVhZEN1c3RvbUNvbnRyb2xzRmlsZXMiLCJzdGFydHNXaXRoIiwiY29tbW9uUmVzb3VyY2VzUGF0aCIsImVsZW1lbnRzIiwicmVxdWlyZSIsImhhc1JlZ2lvbmFsRm9ybSIsIk9iamVjdCIsInZhbHVlcyIsImZpbmQiLCJzdWdhciIsImluY2x1ZGVzIiwicHJlcHJvY2Vzc29yIiwiZm9ybVN1Z2FyRGlyZWN0b3J5UGF0aCIsImZpbGVOYW1lcyIsImZpbGVOYW1lIiwic3VnYXJNb2R1bGVOYW1lIiwicmVwbGFjZSIsInN1Z2FyTW9kdWxlQ29udGVudCIsInJlbGF0aXZlRmlsZU5hbWUiLCJmb3JtQXV0b0NhbGNQYXRoIiwiZmlsZXMiLCJqc0ZpbGVzIiwiZmlsdGVyIiwiZmlsZW5hbWUiLCJ0ZXN0IiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImlnbm9yZUVycm9yIiwiZm9ybUphdmFTY3JpcHRGaWxlc1BhdGgiLCJwYXJzZSIsIm5hbWUiLCJjb250ZW50IiwiZm9ybVNjaGVtYXNQYXRoIiwiZm9ybURpcmVjdG9yeVBhdGgiLCJjYXRjaCIsImZpbGVQYXRoIiwiZGVmYXVsdFZhbHVlIiwiaW5nb3JlRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUVBOztBQWlDTyxlQUFlQSxjQUFmLENBQ0hDLGVBREcsRUFFSEMsYUFGRyxFQUdIQyxtQkFIRyxFQUlnQjtBQUNuQixRQUFNQyxRQUFRLEdBQUdGLGFBQWpCOztBQUNBLFFBQU1HLFFBQVEsR0FBR0MsY0FBS0MsUUFBTCxDQUFjTixlQUFkLENBQWpCOztBQUNBLFFBQU1PLFlBQVksR0FBRyxNQUFNQyxjQUFjLENBQUNILGNBQUtJLElBQUwsQ0FBVVQsZUFBVixFQUEyQixPQUEzQixDQUFELENBQXpDO0FBQ0EsUUFBTVUsTUFBa0IsR0FBRztBQUN2QkgsSUFBQUEsWUFBWSxFQUFFQSxZQURTO0FBRXZCSSxJQUFBQSxTQUFTLEVBQUU7QUFDUEMsTUFBQUEsR0FBRyxFQUFFUCxjQUFLQyxRQUFMLENBQWNOLGVBQWQsQ0FERTtBQUVQYSxNQUFBQSxrQkFBa0IsRUFBRSxNQUFNQyxtQkFBbUIsQ0FBQ2QsZUFBRCxFQUFrQixlQUFsQixFQUFtQyxJQUFuQyxDQUZ0QztBQUdQZSxNQUFBQSxnQkFBZ0IsRUFBRSxNQUFNQyxpQkFBaUIsQ0FBQ1gsY0FBS0ksSUFBTCxDQUFVVCxlQUFWLEVBQTJCLFVBQTNCLENBQUQsQ0FIbEM7QUFJUGlCLE1BQUFBLGNBQWMsRUFBRSxNQUFNQyw0QkFBNEIsQ0FBQ2IsY0FBS0ksSUFBTCxDQUFVVCxlQUFWLEVBQTJCLFNBQTNCLENBQUQsQ0FKM0M7QUFLUG1CLE1BQUFBLG9CQUFvQixFQUFF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LGlCQUFWLEVBQTZCLFVBQTdCLENBQVQsRUFBbUQsT0FBbkQsRUFBNERDLEtBQTVELENBQWtFLE1BQU0sRUFBeEUsQ0FBUDtBQUNIOztBQUVELGVBQWVwRCxtQkFBZixDQUNJcUQsUUFESixFQUVJYixRQUZKLEVBR0ljLFlBSEosRUFJK0I7QUFDM0IsTUFBSTtBQUNBLFdBQU8sTUFBTSx1QkFBUy9ELGNBQUtJLElBQUwsQ0FBVTBELFFBQVYsRUFBb0JiLFFBQXBCLENBQVQsRUFBd0MsT0FBeEMsQ0FBYjtBQUNILEdBRkQsQ0FFRSxPQUFPZSxXQUFQLEVBQW9CO0FBQ2xCLFdBQU9ELFlBQVA7QUFDSDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcmVhZGRpciwgcmVhZEZpbGUgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCByZWN1cnNpdmVSZWFkZGlyIGZyb20gXCJyZWN1cnNpdmUtcmVhZGRpclwiO1xuXG5pbXBvcnQgeyBpc0RpcmVjdG9yeUV4aXN0cyB9IGZyb20gXCIuLi9Db21tb25zL0ZzVXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTdWdhckNvbnRlbnQge1xuICAgIFtzdWdhckZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbjogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUNvbnRyb2xzQ29udGVudCB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1SZXNvdXJjZXMge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGFkZGl0aW9uYWxTZXR0aW5nczogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIGF1dG9jYWxjc0NvbnRlbnQ6IHN0cmluZ1tdO1xuICAgIGhlbHBlcnNDb250ZW50OiBBcnJheTx7IGZpbGVuYW1lOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB9PjtcbiAgICBjb21tb25IZWxwZXJzQ29udGVudDogQXJyYXk8eyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT47XG4gICAgdmFsaWRhdGlvbnNDb250ZW50OiBBcnJheTx7IGZpbGVuYW1lOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB9PjtcbiAgICBzY2hlbWFSbmdDb250ZW50OiBzdHJpbmc7XG4gICAga2NKc1htbENvbnRlbnQ6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBrY0xhbmdDb250ZW50OiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgbm9ybWF0aXZlSGVscENvbnRlbnQ6IHN0cmluZztcbiAgICB0b3VyU3RlcHM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBob29rc0NvbnRlbnQ6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBjdXN0b21Db250cm9sc0NvbnRlbnQ6IEN1c3RvbUNvbnRyb2xzQ29udGVudDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByZXByb2Nlc3Nvcj86IGFueVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Tb3VyY2Uge1xuICAgIHN1Z2FyQ29udGVudDogU3VnYXJDb250ZW50O1xuICAgIHJlc291cmNlczogRm9ybVJlc291cmNlcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRGb3JtU291cmNlKFxuICAgIGZvcm1Tb3VyY2VzUGF0aDogc3RyaW5nLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8Rm9ybVNvdXJjZT4ge1xuICAgIGNvbnN0IHJvb3RQYXRoID0gZmFybURpcmVjdG9yeTtcbiAgICBjb25zdCBmb3JtTmFtZSA9IHBhdGguYmFzZW5hbWUoZm9ybVNvdXJjZXNQYXRoKTtcbiAgICBjb25zdCBzdWdhckNvbnRlbnQgPSBhd2FpdCByZWFkU3VnYXJGaWxlcyhwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcInN1Z2FyXCIpKTtcbiAgICBjb25zdCByZXN1bHQ6IEZvcm1Tb3VyY2UgPSB7XG4gICAgICAgIHN1Z2FyQ29udGVudDogc3VnYXJDb250ZW50LFxuICAgICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgICAgIGdmdjogcGF0aC5iYXNlbmFtZShmb3JtU291cmNlc1BhdGgpLFxuICAgICAgICAgICAgYWRkaXRpb25hbFNldHRpbmdzOiBhd2FpdCByZWFkRmlsZVdpdGhEZWZhdWx0KGZvcm1Tb3VyY2VzUGF0aCwgXCJzZXR0aW5ncy5qc29uXCIsIFwie31cIiksXG4gICAgICAgICAgICBhdXRvY2FsY3NDb250ZW50OiBhd2FpdCByZWFkQXV0b0NhbGNGaWxlcyhwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcImF1dG9jYWxjXCIpKSxcbiAgICAgICAgICAgIGhlbHBlcnNDb250ZW50OiBhd2FpdCByZWFkSmF2YVNjcmlwdEZpbGVzV2l0aE5hbWVzKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwiaGVscGVyc1wiKSksXG4gICAgICAgICAgICBjb21tb25IZWxwZXJzQ29udGVudDogYXdhaXQgcmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJqc0hlbHBlcnNcIikpLFxuICAgICAgICAgICAgdmFsaWRhdGlvbnNDb250ZW50OiBhd2FpdCByZWFkSmF2YVNjcmlwdEZpbGVzV2l0aE5hbWVzKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwidmFsaWRhdGlvbnNcIikpLFxuICAgICAgICAgICAgc2NoZW1hUm5nQ29udGVudDogYXdhaXQgcmVhZFNjaGVtYVJuZ0ZpbGUocGF0aC5qb2luKGZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBmb3JtTmFtZSksXG4gICAgICAgICAgICBrY0pzWG1sQ29udGVudDogYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcImF1dG9jYWxjXCIpLFxuICAgICAgICAgICAgICAgIGAke2Zvcm1OYW1lfS7QmtChLmNhbmR5LmpzLnhtbGAsXG4gICAgICAgICAgICAgICAgXCI8ZHVtbXkvPlwiXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAga2NMYW5nQ29udGVudDogYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcImF1dG9jYWxjXCIpLFxuICAgICAgICAgICAgICAgIGAke2Zvcm1OYW1lfS7QmtChLmNhbmR5LmpzLmtjbGFuZ2AsXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG5vcm1hdGl2ZUhlbHBDb250ZW50OiBhd2FpdCByZWFkTm9ybWF0aXZlSGVscEZpbGUoaGxGYXJtRGlyZWN0b3J5UGF0aCksXG4gICAgICAgICAgICB0b3VyU3RlcHM6IGF3YWl0IHJlYWRGaWxlV2l0aERlZmF1bHQocGF0aC5qb2luKHJvb3RQYXRoLCBcInRvdXJcIiksIFwidG91ci5qc1wiLCBcInt9XCIpLFxuICAgICAgICAgICAgaG9va3NDb250ZW50OiBhd2FpdCByZWFkSG9va3NGaWxlKGZvcm1Tb3VyY2VzUGF0aCksXG4gICAgICAgICAgICBjdXN0b21Db250cm9sc0NvbnRlbnQ6IGF3YWl0IHJlYWRDdXN0b21Db250cm9sc0ZpbGVzKHBhdGguam9pbihmb3JtU291cmNlc1BhdGgsIFwiY29udHJvbHNcIikpLFxuICAgICAgICB9LFxuICAgIH07XG4gICAgaWYgKGZvcm1OYW1lLnN0YXJ0c1dpdGgoXCI0XCIpKSB7XG4gICAgICAgIGNvbnN0IGNvbW1vblJlc291cmNlc1BhdGggPSBwYXRoLmpvaW4oZm9ybVNvdXJjZXNQYXRoLCBcIi4uXCIsIFwiLi5cIiwgXCJjb21tb25SZXNvdXJjZXNcIik7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICAgIGNvbnN0IHsgZWxlbWVudHMgfSA9IHJlcXVpcmUocGF0aC5qb2luKGNvbW1vblJlc291cmNlc1BhdGgsIFwic3RhdFRpdGxlLmpzXCIpKTtcbiAgICAgICAgY29uc3QgaGFzUmVnaW9uYWxGb3JtID0gT2JqZWN0LnZhbHVlcyhzdWdhckNvbnRlbnQpLmZpbmQoc3VnYXIgPT4gc3VnYXIuaW5jbHVkZXMoJ2hhc1JlZ2lvbmFsRm9ybXM9XCJ0cnVlXCInKSk7XG5cbiAgICAgICAgaWYgKCFyZXN1bHQucmVzb3VyY2VzLmhvb2tzQ29udGVudCAmJiBoYXNSZWdpb25hbEZvcm0pIHtcbiAgICAgICAgICAgIHJlc3VsdC5yZXNvdXJjZXMuaG9va3NDb250ZW50ID0gYXdhaXQgcmVhZEZpbGVXaXRoRGVmYXVsdChjb21tb25SZXNvdXJjZXNQYXRoLCBcInJlZ2lvblN0YXRIb29rcy5qc1wiKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucmVzb3VyY2VzLnByZXByb2Nlc3NvciA9IHsgLi4uZWxlbWVudHMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFN1Z2FyRmlsZXMoZm9ybVN1Z2FyRGlyZWN0b3J5UGF0aDogc3RyaW5nKTogUHJvbWlzZTxTdWdhckNvbnRlbnQ+IHtcbiAgICBjb25zdCBmaWxlTmFtZXMgPSBhd2FpdCByZWFkZGlyKGZvcm1TdWdhckRpcmVjdG9yeVBhdGgpO1xuICAgIGNvbnN0IHJlc3VsdDogU3VnYXJDb250ZW50ID0ge307XG4gICAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBmaWxlTmFtZXMpIHtcbiAgICAgICAgY29uc3Qgc3VnYXJNb2R1bGVOYW1lID0gZmlsZU5hbWUucmVwbGFjZShcIi5zdWdhci54bWxcIiwgXCJcIik7XG4gICAgICAgIGNvbnN0IHN1Z2FyTW9kdWxlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbihmb3JtU3VnYXJEaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSksIFwidXRmLThcIik7XG4gICAgICAgIHJlc3VsdFtzdWdhck1vZHVsZU5hbWVdID0gc3VnYXJNb2R1bGVDb250ZW50O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VzdG9tQ29udHJvbHNGaWxlcyhmb3JtU3VnYXJEaXJlY3RvcnlQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEN1c3RvbUNvbnRyb2xzQ29udGVudD4ge1xuICAgIGlmICghKGF3YWl0IGlzRGlyZWN0b3J5RXhpc3RzKGZvcm1TdWdhckRpcmVjdG9yeVBhdGgpKSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGZpbGVOYW1lcyA9IGF3YWl0IHJlY3Vyc2l2ZVJlYWRkaXIoZm9ybVN1Z2FyRGlyZWN0b3J5UGF0aCk7XG4gICAgY29uc3QgcmVzdWx0OiBDdXN0b21Db250cm9sc0NvbnRlbnQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIGZpbGVOYW1lcykge1xuICAgICAgICBjb25zdCBzdWdhck1vZHVsZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShmaWxlTmFtZSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVGaWxlTmFtZSA9IChcImNvbnRyb2xzXFxcXFwiICsgZmlsZU5hbWUucmVwbGFjZShmb3JtU3VnYXJEaXJlY3RvcnlQYXRoICsgXCJcXFxcXCIsIFwiXCIpKS5yZXBsYWNlKFxuICAgICAgICAgICAgL1xcXFwvZyxcbiAgICAgICAgICAgIFwiL1wiXG4gICAgICAgICk7XG4gICAgICAgIHJlc3VsdFtyZWxhdGl2ZUZpbGVOYW1lXSA9IHN1Z2FyTW9kdWxlQ29udGVudDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEF1dG9DYWxjRmlsZXMoZm9ybUF1dG9DYWxjUGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpcihmb3JtQXV0b0NhbGNQYXRoKTtcbiAgICAgICAgY29uc3QganNGaWxlcyA9IGZpbGVzLmZpbHRlcihmaWxlbmFtZSA9PiAvXFwuanMkLy50ZXN0KGZpbGVuYW1lKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChqc0ZpbGVzLm1hcChmaWxlbmFtZSA9PiByZWFkRmlsZShwYXRoLmpvaW4oZm9ybUF1dG9DYWxjUGF0aCwgZmlsZW5hbWUpLCBcInV0Zi04XCIpKSk7XG4gICAgfSBjYXRjaCAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEphdmFTY3JpcHRGaWxlc1dpdGhOYW1lcyhcbiAgICBmb3JtSmF2YVNjcmlwdEZpbGVzUGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPEFycmF5PHsgZmlsZW5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCByZWFkZGlyKGZvcm1KYXZhU2NyaXB0RmlsZXNQYXRoKTtcbiAgICAgICAgY29uc3QganNGaWxlcyA9IGZpbGVzLmZpbHRlcihmaWxlbmFtZSA9PiAvXFwuanMkLy50ZXN0KGZpbGVuYW1lKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGpzRmlsZXMubWFwKGFzeW5jIGZpbGVuYW1lID0+ICh7XG4gICAgICAgICAgICAgICAgZmlsZW5hbWU6IHBhdGgucGFyc2UoZmlsZW5hbWUpLm5hbWUsXG4gICAgICAgICAgICAgICAgY29udGVudDogYXdhaXQgcmVhZEZpbGUocGF0aC5qb2luKGZvcm1KYXZhU2NyaXB0RmlsZXNQYXRoLCBmaWxlbmFtZSksIFwidXRmLThcIiksXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIChpZ25vcmVFcnJvcikge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWFkU2NoZW1hUm5nRmlsZShmb3JtU2NoZW1hc1BhdGg6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiByZWFkRmlsZShwYXRoLmpvaW4oZm9ybVNjaGVtYXNQYXRoLCBgJHtnZnZ9LnJuZy54bWxgKSwgXCJ1dGYtOFwiKTtcbn1cblxuZnVuY3Rpb24gcmVhZE5vcm1hdGl2ZUhlbHBGaWxlKGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHJlYWRGaWxlKHBhdGguam9pbihobEZhcm1EaXJlY3RvcnlQYXRoLCBcIkZvcm1zXCIsIFwiaGVscGlkX25vcm1hdGl2LnhtbFwiKSwgXCJ1dGYtOFwiKTtcbn1cblxuZnVuY3Rpb24gcmVhZEhvb2tzRmlsZShmb3JtRGlyZWN0b3J5UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gcmVhZEZpbGUocGF0aC5qb2luKGZvcm1EaXJlY3RvcnlQYXRoLCBcImhvb2tzLmpzXCIpLCBcInV0Zi04XCIpLmNhdGNoKCgpID0+IFwiXCIpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkRmlsZVdpdGhEZWZhdWx0KFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmdcbik6IFByb21pc2U8dW5kZWZpbmVkIHwgc3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbihmaWxlUGF0aCwgZmlsZW5hbWUpLCBcInV0Zi04XCIpO1xuICAgIH0gY2F0Y2ggKGluZ29yZUVycm9yKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxufVxuIl19
@@ -124,4 +124,4 @@ async function readFormConfig(formJsonFile, logger) {
124
124
  } : undefined
125
125
  };
126
126
  }
127
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mby50cyJdLCJuYW1lcyI6WyJGb3JtQnVpbGRNb2RlIiwicmVzb2x2ZUZvcm1JbmZvIiwiZm9ybUpzb25GaWxlIiwicGF0aFRvRm9ybSIsIl9lbmdpbmVEaXJlY3RvcnkiLCJsb2dnZXIiLCJ1cGdyYWRlRm9ybUpzb24iLCJ1c2VMYXN0U3RhYmxlVmVyc2lvbiIsInVzZVByZXJlbGVhc2VWZXJzaW9uIiwibmlnaHRseSIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsInVuZGVmaW5lZCIsIkVycm9yIiwiZGVwZW5kZW5jaWVzIiwiZW5naW5lIiwiZ2VuZXJhdG9yIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsInByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24iLCJnZW5lcmF0b3JWZXJzaW9uIiwiZW5naW5lVmVyc2lvbiIsInR5cGUiLCJwcmVJZCIsInRoZW1lcyIsIm1vZGUiLCJOb0VkaXRvciIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIk5vcm1hbEJ1aWxkIiwiZm9ybU5hbWUiLCJwYXRoIiwiYmFzZW5hbWUiLCJmb3JtU291cmNlc1BhdGgiLCJpc05ld0Zvcm1Kc29uRm9ybWF0IiwiYnVpbGQiLCJzZXR0aW5ncyIsInVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUtBOztJQUVZQSxhOzs7V0FBQUEsYTtBQUFBQSxFQUFBQSxhLENBQUFBLGE7QUFBQUEsRUFBQUEsYSxDQUFBQSxhO0FBQUFBLEVBQUFBLGEsQ0FBQUEsYTtHQUFBQSxhLDZCQUFBQSxhOztBQXlDTCxlQUFlQyxlQUFmLENBQ0hDLFlBREcsRUFFSEMsVUFGRyxFQUdIQyxnQkFIRyxFQUlIQyxNQUFlLEdBQUcsOEJBSmYsRUFLSEMsZUFBd0IsR0FBRyxLQUx4QixFQU1IQyxvQkFBNkIsR0FBRyxLQU43QixFQU9IQyxvQkFQRyxFQVFIQyxPQUFnQixHQUFHLEtBUmhCLEVBU2M7QUFBQTs7QUFDakIsUUFBTUMsVUFBVSxHQUFHLE1BQU1DLGNBQWMsQ0FBQ1QsWUFBRCxFQUFlRyxNQUFmLENBQXZDOztBQUNBLE1BQUlFLG9CQUFvQixJQUFJQyxvQkFBb0IsSUFBSUksU0FBcEQsRUFBK0Q7QUFDM0QsVUFBTSxJQUFJQyxLQUFKLENBQVUsa0ZBQVYsQ0FBTjtBQUNIOztBQUNELE1BQUlOLG9CQUFKLEVBQTBCO0FBQ3RCRyxJQUFBQSxVQUFVLENBQUNJLFlBQVgsR0FBMEI7QUFDdEJDLE1BQUFBLE1BQU0sRUFBRSxNQUFNLHdEQURRO0FBRXRCQyxNQUFBQSxTQUFTLEVBQUUsTUFBTTtBQUZLLEtBQTFCO0FBSUFYLElBQUFBLE1BQU0sQ0FBQ1ksR0FBUCxDQUFZLGtDQUFpQ1AsVUFBVSxDQUFDSSxZQUFYLENBQXdCQyxNQUFPLEVBQTVFO0FBQ0EsVUFBTSw2QkFBZWIsWUFBZixFQUE2QmdCLElBQUksQ0FBQ0MsU0FBTCxDQUFlVCxVQUFmLEVBQTJCRSxTQUEzQixFQUFzQyxJQUF0QyxDQUE3QixFQUEwRSxNQUExRSxDQUFOO0FBQ0g7O0FBQ0QsTUFBSUosb0JBQW9CLElBQUlJLFNBQTVCLEVBQXVDO0FBQ25DLFVBQU1RLHlCQUF5QixHQUFHLE1BQU0seURBQTZCWixvQkFBN0IsQ0FBeEM7O0FBQ0EsUUFBSVkseUJBQXlCLElBQUlSLFNBQWpDLEVBQTRDO0FBQ3hDRixNQUFBQSxVQUFVLENBQUNJLFlBQVgsR0FBMEI7QUFDdEJDLFFBQUFBLE1BQU0sRUFBRUsseUJBRGM7QUFFdEJKLFFBQUFBLFNBQVMsRUFBRUk7QUFGVyxPQUExQjtBQUlBZixNQUFBQSxNQUFNLENBQUNZLEdBQVAsQ0FBWSxzQ0FBcUNQLFVBQVUsQ0FBQ0ksWUFBWCxDQUF3QkMsTUFBTyxFQUFoRjtBQUNIOztBQUNELFVBQU0sNkJBQWViLFlBQWYsRUFBNkJnQixJQUFJLENBQUNDLFNBQUwsQ0FBZVQsVUFBZixFQUEyQkUsU0FBM0IsRUFBc0MsSUFBdEMsQ0FBN0IsRUFBMEUsTUFBMUUsQ0FBTjtBQUNIOztBQUNELE1BQUlTLGdCQUFnQixHQUNoQiwwQkFBQVgsVUFBVSxDQUFDSSxZQUFYLGdGQUF5QkUsU0FBekIsS0FBc0NKLFNBQXRDLEdBQ00sb0NBQXNCRixVQUFVLENBQUNJLFlBQVgsQ0FBd0JFLFNBQTlDLENBRE4sR0FFTUosU0FIVjtBQUlBLE1BQUlVLGFBQWEsR0FDYiwyQkFBQVosVUFBVSxDQUFDSSxZQUFYLGtGQUF5QkMsTUFBekIsS0FBbUNILFNBQW5DLEdBQ00sb0NBQXNCRixVQUFVLENBQUNJLFlBQVgsQ0FBd0JDLE1BQTlDLENBRE4sR0FFTUgsU0FIVjs7QUFJQSxNQUFJSCxPQUFKLEVBQWE7QUFDVFksSUFBQUEsZ0JBQWdCLEdBQUc7QUFBRUUsTUFBQUEsSUFBSSxFQUFFLEtBQVI7QUFBZUMsTUFBQUEsS0FBSyxFQUFFO0FBQXRCLEtBQW5CO0FBQ0FGLElBQUFBLGFBQWEsR0FBRztBQUFFQyxNQUFBQSxJQUFJLEVBQUUsS0FBUjtBQUFlQyxNQUFBQSxLQUFLLEVBQUU7QUFBdEIsS0FBaEI7QUFDSDs7QUFDRCxNQUFJbEIsZUFBSixFQUFxQjtBQUNqQixVQUFNLDZCQUFlSixZQUFmLEVBQTZCZ0IsSUFBSSxDQUFDQyxTQUFMLENBQWVULFVBQWYsRUFBMkJFLFNBQTNCLEVBQXNDLElBQXRDLENBQTdCLEVBQTBFLE1BQTFFLENBQU47QUFDSDs7QUFDRCxTQUFPO0FBQ0hhLElBQUFBLE1BQU0sRUFBRWYsVUFBVSxDQUFDZSxNQURoQjtBQUVIQyxJQUFBQSxJQUFJLEVBQ0FoQixVQUFVLENBQUNnQixJQUFYLEtBQW9CLFdBQXBCLEdBQ00xQixhQUFhLENBQUMyQixRQURwQixHQUVNakIsVUFBVSxDQUFDZ0IsSUFBWCxLQUFvQixnQ0FBcEIsR0FDQTFCLGFBQWEsQ0FBQzRCLDJCQURkLEdBRUE1QixhQUFhLENBQUM2QixXQVByQjtBQVFIQyxJQUFBQSxRQUFRLEVBQUVDLGNBQUtDLFFBQUwsQ0FBYzdCLFVBQWQsQ0FSUDtBQVNIOEIsSUFBQUEsZUFBZSxFQUFFOUIsVUFUZDtBQVVIa0IsSUFBQUEsZ0JBQWdCLEVBQUVBLGdCQVZmO0FBV0hDLElBQUFBLGFBQWEsRUFBRUE7QUFYWixHQUFQO0FBYUg7O0FBRU0sZUFBZVksbUJBQWYsQ0FBbUNoQyxZQUFuQyxFQUEyRTtBQUM5RTtBQUNBLFFBQU1RLFVBQTZCLEdBQUcsTUFBTSx1QkFBU1IsWUFBVCxDQUE1QztBQUNBLFNBQU9RLFVBQVUsQ0FBQ0ksWUFBWCxJQUEyQkYsU0FBbEM7QUFDSDs7QUFFTSxlQUFlRCxjQUFmLENBQThCVCxZQUE5QixFQUFvREcsTUFBcEQsRUFBMEY7QUFBQTs7QUFDN0Y7QUFDQSxRQUFNSyxVQUE2QixHQUFHLE1BQU0sdUJBQVNSLFlBQVQsQ0FBNUM7O0FBQ0EsTUFDSSwyQkFBQVEsVUFBVSxDQUFDSSxZQUFYLGtGQUF5QkUsU0FBekIsS0FBc0NKLFNBQXRDLElBQ0EsQ0FBQyx3Q0FBMEJGLFVBQVUsQ0FBQ0ksWUFBWCxDQUF3QkUsU0FBbEQsQ0FGTCxFQUdFO0FBQ0UsVUFBTSxJQUFJSCxLQUFKLENBQVcsR0FBRUgsVUFBVSxDQUFDSSxZQUFYLENBQXdCRSxTQUFVLDhCQUEvQyxDQUFOO0FBQ0g7O0FBRUQsTUFBSSwyQkFBQU4sVUFBVSxDQUFDSSxZQUFYLGtGQUF5QkMsTUFBekIsS0FBbUNILFNBQW5DLElBQWdELENBQUMsd0NBQTBCRixVQUFVLENBQUNJLFlBQVgsQ0FBd0JDLE1BQWxELENBQXJELEVBQWdIO0FBQzVHLFVBQU0sSUFBSUYsS0FBSixDQUFXLEdBQUVILFVBQVUsQ0FBQ0ksWUFBWCxDQUF3QkMsTUFBTyw4QkFBNUMsQ0FBTjtBQUNIOztBQUNELFNBQU87QUFDSFUsSUFBQUEsTUFBTSxFQUFFZixVQUFVLENBQUNlLE1BRGhCO0FBRUhVLElBQUFBLEtBQUssRUFBRXpCLFVBQVUsQ0FBQ3lCLEtBQVgsSUFBb0IsUUFGeEI7QUFHSFQsSUFBQUEsSUFBSSxzQkFBRWhCLFVBQVUsQ0FBQ2dCLElBQWIsK0RBQXFCLGNBSHRCO0FBSUhVLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSwrQkFBK0IsbURBQUUzQixVQUFVLENBQUMwQixRQUFiLHlEQUFFLHFCQUFxQkMsK0JBQXZCLHlFQUEwRDtBQURuRixLQUpQO0FBT0h2QixJQUFBQSxZQUFZLEVBQ1JKLFVBQVUsQ0FBQ0ksWUFBWCxJQUEyQkYsU0FBM0IsR0FDTTtBQUNJSSxNQUFBQSxTQUFTLEVBQUVOLFVBQVUsQ0FBQ0ksWUFBWCxDQUF3QkUsU0FEdkM7QUFFSUQsTUFBQUEsTUFBTSxFQUFFTCxVQUFVLENBQUNJLFlBQVgsQ0FBd0JDO0FBRnBDLEtBRE4sR0FLTUg7QUFiUCxHQUFQO0FBZUgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyByZWFkSnNvbiB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyB3cml0ZUZpbGVBc3luYyB9IGZyb20gXCIuLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5cbmltcG9ydCB7XG4gICAgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24sXG4gICAgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24sXG4gICAgZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbixcbn0gZnJvbSBcIi4vUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBDYW5keVZlcnNpb25TcGVjLCBpc1ZhbGlkU2VtVmVyVmVyc2lvblJhbmdlLCBwYXJzZUNhbmR5VmVyc2lvblNwZWMgfSBmcm9tIFwiLi9WZXJzaW9uXCI7XG5cbmV4cG9ydCBlbnVtIEZvcm1CdWlsZE1vZGUge1xuICAgIE5vcm1hbEJ1aWxkLFxuICAgIE5vRWRpdG9yLFxuICAgIENvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtSW5mbyB7XG4gICAgdGhlbWVzPzogc3RyaW5nW107XG4gICAgbW9kZTogRm9ybUJ1aWxkTW9kZTtcbiAgICBmb3JtTmFtZTogc3RyaW5nO1xuICAgIGZvcm1Tb3VyY2VzUGF0aDogc3RyaW5nO1xuICAgIGdlbmVyYXRvclZlcnNpb246IHVuZGVmaW5lZCB8IENhbmR5VmVyc2lvblNwZWM7XG4gICAgZW5naW5lVmVyc2lvbjogdW5kZWZpbmVkIHwgQ2FuZHlWZXJzaW9uU3BlYztcbn1cblxuaW50ZXJmYWNlIEZvcm1Db25maWdDb250ZW50IHtcbiAgICB0aGVtZXM/OiBzdHJpbmdbXTtcbiAgICBidWlsZD86IFwiY2lcIiB8IFwibWFudWFsXCI7XG4gICAgbW9kZT86IFwibm8tZWRpdG9yXCIgfCBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiO1xuICAgIGRlcGVuZGVuY2llcz86IHtcbiAgICAgICAgZ2VuZXJhdG9yPzogc3RyaW5nO1xuICAgICAgICBlbmdpbmU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBzZXR0aW5ncz86IHtcbiAgICAgICAgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbj86IGJvb2xlYW47XG4gICAgfTtcbn1cblxuaW50ZXJmYWNlIEZvcm1Db25maWcge1xuICAgIHRoZW1lcz86IHN0cmluZ1tdO1xuICAgIGJ1aWxkPzogXCJjaVwiIHwgXCJtYW51YWxcIjtcbiAgICBtb2RlPzogXCJuby1lZGl0b3JcIiB8IFwiY29weS1sZWdhY3ktcHJlYnVpbHQtcmVzb3VyY2VzXCIgfCBcIm5vcm1hbC1idWlsZFwiO1xuICAgIGRlcGVuZGVuY2llcz86IHtcbiAgICAgICAgZ2VuZXJhdG9yOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgICAgIGVuZ2luZTogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIH07XG4gICAgc2V0dGluZ3M6IHtcbiAgICAgICAgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbjogYm9vbGVhbjtcbiAgICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUZvcm1JbmZvKFxuICAgIGZvcm1Kc29uRmlsZTogc3RyaW5nLFxuICAgIHBhdGhUb0Zvcm06IHN0cmluZyxcbiAgICBfZW5naW5lRGlyZWN0b3J5OiB1bmRlZmluZWQgfCBzdHJpbmcsXG4gICAgbG9nZ2VyOiBJTG9nZ2VyID0gZ2V0TG9nZ2VyKCksXG4gICAgdXBncmFkZUZvcm1Kc29uOiBib29sZWFuID0gZmFsc2UsXG4gICAgdXNlTGFzdFN0YWJsZVZlcnNpb246IGJvb2xlYW4gPSBmYWxzZSxcbiAgICB1c2VQcmVyZWxlYXNlVmVyc2lvbj86IHN0cmluZyxcbiAgICBuaWdodGx5OiBib29sZWFuID0gZmFsc2Vcbik6IFByb21pc2U8Rm9ybUluZm8+IHtcbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25GaWxlLCBsb2dnZXIpO1xuICAgIGlmICh1c2VMYXN0U3RhYmxlVmVyc2lvbiAmJiB1c2VQcmVyZWxlYXNlVmVyc2lvbiAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwi0J3QtdC+0LHRhdC+0LTQuNC80L4g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC70LjQsdC+INGE0LvQsNCzIHVzZUxhc3RTdGFibGVWZXJzaW9uINC70LjQsdC+IHVzZVByZXJlbGVhc2VWZXJzaW9uXCIpO1xuICAgIH1cbiAgICBpZiAodXNlTGFzdFN0YWJsZVZlcnNpb24pIHtcbiAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMgPSB7XG4gICAgICAgICAgICBlbmdpbmU6IGF3YWl0IGdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uKCksXG4gICAgICAgICAgICBnZW5lcmF0b3I6IGF3YWl0IGdldExhc3RTdGFibGVHZW5lcmF0b3JWZXJzaW9uKCksXG4gICAgICAgIH07XG4gICAgICAgIGxvZ2dlci5sb2coYFVwZGF0ZWQgdG8gbGFzdCBzdGFibGUgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoZm9ybUpzb25GaWxlLCBKU09OLnN0cmluZ2lmeShmb3JtQ29uZmlnLCB1bmRlZmluZWQsIFwiICBcIiksIFwidXRmOFwiKTtcbiAgICB9XG4gICAgaWYgKHVzZVByZXJlbGVhc2VWZXJzaW9uICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uID0gYXdhaXQgZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbih1c2VQcmVyZWxlYXNlVmVyc2lvbik7XG4gICAgICAgIGlmIChwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMgPSB7XG4gICAgICAgICAgICAgICAgZW5naW5lOiBwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIGxhc3QgcHJlcmVsZWFzZSB2ZXJzaW9uICR7Zm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lfWApO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGZvcm1Kc29uRmlsZSwgSlNPTi5zdHJpbmdpZnkoZm9ybUNvbmZpZywgdW5kZWZpbmVkLCBcIiAgXCIpLCBcInV0ZjhcIik7XG4gICAgfVxuICAgIGxldCBnZW5lcmF0b3JWZXJzaW9uID1cbiAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXM/LmdlbmVyYXRvciAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gcGFyc2VDYW5keVZlcnNpb25TcGVjKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzLmdlbmVyYXRvcilcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGxldCBlbmdpbmVWZXJzaW9uID1cbiAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXM/LmVuZ2luZSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gcGFyc2VDYW5keVZlcnNpb25TcGVjKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGlmIChuaWdodGx5KSB7XG4gICAgICAgIGdlbmVyYXRvclZlcnNpb24gPSB7IHR5cGU6IFwicHJlXCIsIHByZUlkOiBcIm5pZ2h0bHlcIiB9O1xuICAgICAgICBlbmdpbmVWZXJzaW9uID0geyB0eXBlOiBcInByZVwiLCBwcmVJZDogXCJuaWdodGx5XCIgfTtcbiAgICB9XG4gICAgaWYgKHVwZ3JhZGVGb3JtSnNvbikge1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhmb3JtSnNvbkZpbGUsIEpTT04uc3RyaW5naWZ5KGZvcm1Db25maWcsIHVuZGVmaW5lZCwgXCIgIFwiKSwgXCJ1dGY4XCIpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB0aGVtZXM6IGZvcm1Db25maWcudGhlbWVzLFxuICAgICAgICBtb2RlOlxuICAgICAgICAgICAgZm9ybUNvbmZpZy5tb2RlID09PSBcIm5vLWVkaXRvclwiXG4gICAgICAgICAgICAgICAgPyBGb3JtQnVpbGRNb2RlLk5vRWRpdG9yXG4gICAgICAgICAgICAgICAgOiBmb3JtQ29uZmlnLm1vZGUgPT09IFwiY29weS1sZWdhY3ktcHJlYnVpbHQtcmVzb3VyY2VzXCJcbiAgICAgICAgICAgICAgICA/IEZvcm1CdWlsZE1vZGUuQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgOiBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkLFxuICAgICAgICBmb3JtTmFtZTogcGF0aC5iYXNlbmFtZShwYXRoVG9Gb3JtKSxcbiAgICAgICAgZm9ybVNvdXJjZXNQYXRoOiBwYXRoVG9Gb3JtLFxuICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZW5lcmF0b3JWZXJzaW9uLFxuICAgICAgICBlbmdpbmVWZXJzaW9uOiBlbmdpbmVWZXJzaW9uLFxuICAgIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc05ld0Zvcm1Kc29uRm9ybWF0KGZvcm1Kc29uRmlsZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICBjb25zdCBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnQ29udGVudCA9IGF3YWl0IHJlYWRKc29uKGZvcm1Kc29uRmlsZSk7XG4gICAgcmV0dXJuIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uRmlsZTogc3RyaW5nLCBsb2dnZXI6IElMb2dnZXIpOiBQcm9taXNlPEZvcm1Db25maWc+IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgIGNvbnN0IGZvcm1Db25maWc6IEZvcm1Db25maWdDb250ZW50ID0gYXdhaXQgcmVhZEpzb24oZm9ybUpzb25GaWxlKTtcbiAgICBpZiAoXG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFpc1ZhbGlkU2VtVmVyVmVyc2lvblJhbmdlKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzLmdlbmVyYXRvcilcbiAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmdlbmVyYXRvcn0gaXMgbm90IHZhbGlkIHZlcnNpb24gZm9ybWF0YCk7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5lbmdpbmUgIT0gdW5kZWZpbmVkICYmICFpc1ZhbGlkU2VtVmVyVmVyc2lvblJhbmdlKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX0gaXMgbm90IHZhbGlkIHZlcnNpb24gZm9ybWF0YCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHRoZW1lczogZm9ybUNvbmZpZy50aGVtZXMsXG4gICAgICAgIGJ1aWxkOiBmb3JtQ29uZmlnLmJ1aWxkIHx8IFwibWFudWFsXCIsXG4gICAgICAgIG1vZGU6IGZvcm1Db25maWcubW9kZSA/PyBcIm5vcm1hbC1idWlsZFwiLFxuICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgICAgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbjogZm9ybUNvbmZpZy5zZXR0aW5ncz8udXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA/PyBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVwZW5kZW5jaWVzOlxuICAgICAgICAgICAgZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yOiBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgZW5naW5lOiBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmUsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcbn1cbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mby50cyJdLCJuYW1lcyI6WyJGb3JtQnVpbGRNb2RlIiwicmVzb2x2ZUZvcm1JbmZvIiwiZm9ybUpzb25GaWxlIiwicGF0aFRvRm9ybSIsIl9lbmdpbmVEaXJlY3RvcnkiLCJsb2dnZXIiLCJ1cGdyYWRlRm9ybUpzb24iLCJ1c2VMYXN0U3RhYmxlVmVyc2lvbiIsInVzZVByZXJlbGVhc2VWZXJzaW9uIiwibmlnaHRseSIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsInVuZGVmaW5lZCIsIkVycm9yIiwiZGVwZW5kZW5jaWVzIiwiZW5naW5lIiwiZ2VuZXJhdG9yIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsInByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24iLCJnZW5lcmF0b3JWZXJzaW9uIiwiZW5naW5lVmVyc2lvbiIsInR5cGUiLCJwcmVJZCIsInRoZW1lcyIsIm1vZGUiLCJOb0VkaXRvciIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIk5vcm1hbEJ1aWxkIiwiZm9ybU5hbWUiLCJwYXRoIiwiYmFzZW5hbWUiLCJmb3JtU291cmNlc1BhdGgiLCJpc05ld0Zvcm1Kc29uRm9ybWF0IiwiYnVpbGQiLCJzZXR0aW5ncyIsInVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUtBOztJQUVZQSxhOzs7V0FBQUEsYTtBQUFBQSxFQUFBQSxhLENBQUFBLGE7QUFBQUEsRUFBQUEsYSxDQUFBQSxhO0FBQUFBLEVBQUFBLGEsQ0FBQUEsYTtHQUFBQSxhLDZCQUFBQSxhOztBQXlDTCxlQUFlQyxlQUFmLENBQ0hDLFlBREcsRUFFSEMsVUFGRyxFQUdIQyxnQkFIRyxFQUlIQyxNQUFlLEdBQUcsOEJBSmYsRUFLSEMsZUFBd0IsR0FBRyxLQUx4QixFQU1IQyxvQkFBNkIs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LElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSwrQkFBK0IsbURBQUUzQixVQUFVLENBQUMwQixRQUFiLHlEQUFFLHFCQUFxQkMsK0JBQXZCLHlFQUEwRDtBQURuRixLQUpQO0FBT0h2QixJQUFBQSxZQUFZLEVBQ1JKLFVBQVUsQ0FBQ0ksWUFBWCxJQUEyQkYsU0FBM0IsR0FDTTtBQUNJSSxNQUFBQSxTQUFTLEVBQUVOLFVBQVUsQ0FBQ0ksWUFBWCxDQUF3QkUsU0FEdkM7QUFFSUQsTUFBQUEsTUFBTSxFQUFFTCxVQUFVLENBQUNJLFlBQVgsQ0FBd0JDO0FBRnBDLEtBRE4sR0FLTUg7QUFiUCxHQUFQO0FBZUgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyByZWFkSnNvbiB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyB3cml0ZUZpbGVBc3luYyB9IGZyb20gXCIuLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5cbmltcG9ydCB7XG4gICAgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24sXG4gICAgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24sXG4gICAgZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbixcbn0gZnJvbSBcIi4vUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBDYW5keVZlcnNpb25TcGVjLCBpc1ZhbGlkU2VtVmVyVmVyc2lvblJhbmdlLCBwYXJzZUNhbmR5VmVyc2lvblNwZWMgfSBmcm9tIFwiLi9WZXJzaW9uXCI7XG5cbmV4cG9ydCBlbnVtIEZvcm1CdWlsZE1vZGUge1xuICAgIE5vcm1hbEJ1aWxkLFxuICAgIE5vRWRpdG9yLFxuICAgIENvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtSW5mbyB7XG4gICAgdGhlbWVzPzogc3RyaW5nW107XG4gICAgbW9kZTogRm9ybUJ1aWxkTW9kZTtcbiAgICBmb3JtTmFtZTogc3RyaW5nO1xuICAgIGZvcm1Tb3VyY2VzUGF0aDogc3RyaW5nO1xuICAgIGdlbmVyYXRvclZlcnNpb246IHVuZGVmaW5lZCB8IENhbmR5VmVyc2lvblNwZWM7XG4gICAgZW5naW5lVmVyc2lvbjogdW5kZWZpbmVkIHwgQ2FuZHlWZXJzaW9uU3BlYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtQ29uZmlnQ29udGVudCB7XG4gICAgdGhlbWVzPzogc3RyaW5nW107XG4gICAgYnVpbGQ/OiBcImNpXCIgfCBcIm1hbnVhbFwiO1xuICAgIG1vZGU/OiBcIm5vLWVkaXRvclwiIHwgXCJjb3B5LWxlZ2FjeS1wcmVidWlsdC1yZXNvdXJjZXNcIjtcbiAgICBkZXBlbmRlbmNpZXM/OiB7XG4gICAgICAgIGdlbmVyYXRvcj86IHN0cmluZztcbiAgICAgICAgZW5naW5lPzogc3RyaW5nO1xuICAgIH07XG4gICAgc2V0dGluZ3M/OiB7XG4gICAgICAgIHVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24/OiBib29sZWFuO1xuICAgIH07XG59XG5cbmludGVyZmFjZSBGb3JtQ29uZmlnIHtcbiAgICB0aGVtZXM/OiBzdHJpbmdbXTtcbiAgICBidWlsZD86IFwiY2lcIiB8IFwibWFudWFsXCI7XG4gICAgbW9kZT86IFwibm8tZWRpdG9yXCIgfCBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiIHwgXCJub3JtYWwtYnVpbGRcIjtcbiAgICBkZXBlbmRlbmNpZXM/OiB7XG4gICAgICAgIGdlbmVyYXRvcjogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgICAgICBlbmdpbmU6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICB9O1xuICAgIHNldHRpbmdzOiB7XG4gICAgICAgIHVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb246IGJvb2xlYW47XG4gICAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVGb3JtSW5mbyhcbiAgICBmb3JtSnNvbkZpbGU6IHN0cmluZyxcbiAgICBwYXRoVG9Gb3JtOiBzdHJpbmcsXG4gICAgX2VuZ2luZURpcmVjdG9yeTogdW5kZWZpbmVkIHwgc3RyaW5nLFxuICAgIGxvZ2dlcjogSUxvZ2dlciA9IGdldExvZ2dlcigpLFxuICAgIHVwZ3JhZGVGb3JtSnNvbjogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHVzZUxhc3RTdGFibGVWZXJzaW9uOiBib29sZWFuID0gZmFsc2UsXG4gICAgdXNlUHJlcmVsZWFzZVZlcnNpb24/OiBzdHJpbmcsXG4gICAgbmlnaHRseTogYm9vbGVhbiA9IGZhbHNlXG4pOiBQcm9taXNlPEZvcm1JbmZvPiB7XG4gICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uRmlsZSwgbG9nZ2VyKTtcbiAgICBpZiAodXNlTGFzdFN0YWJsZVZlcnNpb24gJiYgdXNlUHJlcmVsZWFzZVZlcnNpb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcItCd0LXQvtCx0YXQvtC00LjQvNC+INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQu9C40LHQviDRhNC70LDQsyB1c2VMYXN0U3RhYmxlVmVyc2lvbiDQu9C40LHQviB1c2VQcmVyZWxlYXNlVmVyc2lvblwiKTtcbiAgICB9XG4gICAgaWYgKHVzZUxhc3RTdGFibGVWZXJzaW9uKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAgICAgZW5naW5lOiBhd2FpdCBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbigpLFxuICAgICAgICAgICAgZ2VuZXJhdG9yOiBhd2FpdCBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbigpLFxuICAgICAgICB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIGxhc3Qgc3RhYmxlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGZvcm1Kc29uRmlsZSwgSlNPTi5zdHJpbmdpZnkoZm9ybUNvbmZpZywgdW5kZWZpbmVkLCBcIiAgXCIpLCBcInV0ZjhcIik7XG4gICAgfVxuICAgIGlmICh1c2VQcmVyZWxlYXNlVmVyc2lvbiAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiA9IGF3YWl0IGdldFByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24odXNlUHJlcmVsZWFzZVZlcnNpb24pO1xuICAgICAgICBpZiAocHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAgICAgICAgIGVuZ2luZTogcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbixcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byBsYXN0IHByZXJlbGVhc2UgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB3cml0ZUZpbGVBc3luYyhmb3JtSnNvbkZpbGUsIEpTT04uc3RyaW5naWZ5KGZvcm1Db25maWcsIHVuZGVmaW5lZCwgXCIgIFwiKSwgXCJ1dGY4XCIpO1xuICAgIH1cbiAgICBsZXQgZ2VuZXJhdG9yVmVyc2lvbiA9XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5nZW5lcmF0b3IpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBsZXQgZW5naW5lVmVyc2lvbiA9XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5lbmdpbmUgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmUpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAobmlnaHRseSkge1xuICAgICAgICBnZW5lcmF0b3JWZXJzaW9uID0geyB0eXBlOiBcInByZVwiLCBwcmVJZDogXCJuaWdodGx5XCIgfTtcbiAgICAgICAgZW5naW5lVmVyc2lvbiA9IHsgdHlwZTogXCJwcmVcIiwgcHJlSWQ6IFwibmlnaHRseVwiIH07XG4gICAgfVxuICAgIGlmICh1cGdyYWRlRm9ybUpzb24pIHtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoZm9ybUpzb25GaWxlLCBKU09OLnN0cmluZ2lmeShmb3JtQ29uZmlnLCB1bmRlZmluZWQsIFwiICBcIiksIFwidXRmOFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGhlbWVzOiBmb3JtQ29uZmlnLnRoZW1lcyxcbiAgICAgICAgbW9kZTpcbiAgICAgICAgICAgIGZvcm1Db25maWcubW9kZSA9PT0gXCJuby1lZGl0b3JcIlxuICAgICAgICAgICAgICAgID8gRm9ybUJ1aWxkTW9kZS5Ob0VkaXRvclxuICAgICAgICAgICAgICAgIDogZm9ybUNvbmZpZy5tb2RlID09PSBcImNvcHktbGVnYWN5LXByZWJ1aWx0LXJlc291cmNlc1wiXG4gICAgICAgICAgICAgICAgPyBGb3JtQnVpbGRNb2RlLkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlc1xuICAgICAgICAgICAgICAgIDogRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCxcbiAgICAgICAgZm9ybU5hbWU6IHBhdGguYmFzZW5hbWUocGF0aFRvRm9ybSksXG4gICAgICAgIGZvcm1Tb3VyY2VzUGF0aDogcGF0aFRvRm9ybSxcbiAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2VuZXJhdG9yVmVyc2lvbixcbiAgICAgICAgZW5naW5lVmVyc2lvbjogZW5naW5lVmVyc2lvbixcbiAgICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNOZXdGb3JtSnNvbkZvcm1hdChmb3JtSnNvbkZpbGU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgY29uc3QgZm9ybUNvbmZpZzogRm9ybUNvbmZpZ0NvbnRlbnQgPSBhd2FpdCByZWFkSnNvbihmb3JtSnNvbkZpbGUpO1xuICAgIHJldHVybiBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyAhPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRm9ybUNvbmZpZyhmb3JtSnNvbkZpbGU6IHN0cmluZywgbG9nZ2VyOiBJTG9nZ2VyKTogUHJvbWlzZTxGb3JtQ29uZmlnPiB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICBjb25zdCBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnQ29udGVudCA9IGF3YWl0IHJlYWRKc29uKGZvcm1Kc29uRmlsZSk7XG4gICAgaWYgKFxuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZ2VuZXJhdG9yICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAhaXNWYWxpZFNlbVZlclZlcnNpb25SYW5nZShmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5nZW5lcmF0b3IpXG4gICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5nZW5lcmF0b3J9IGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGZvcm1hdGApO1xuICAgIH1cblxuICAgIGlmIChmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZW5naW5lICE9IHVuZGVmaW5lZCAmJiAhaXNWYWxpZFNlbVZlclZlcnNpb25SYW5nZShmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9IGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGZvcm1hdGApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB0aGVtZXM6IGZvcm1Db25maWcudGhlbWVzLFxuICAgICAgICBidWlsZDogZm9ybUNvbmZpZy5idWlsZCB8fCBcIm1hbnVhbFwiLFxuICAgICAgICBtb2RlOiBmb3JtQ29uZmlnLm1vZGUgPz8gXCJub3JtYWwtYnVpbGRcIixcbiAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgIHVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb246IGZvcm1Db25maWcuc2V0dGluZ3M/LnVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24gPz8gZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGRlcGVuZGVuY2llczpcbiAgICAgICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZTogZm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH07XG59XG4iXX0=