siarashield_workspace 0.0.40 → 0.0.41

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.
@@ -231,6 +231,9 @@ export function resolveCspNonce(documentRef, explicitNonce) {
231
231
  if (resolvedExplicitNonce) {
232
232
  return resolvedExplicitNonce;
233
233
  }
234
+ if (!documentRef) {
235
+ return undefined;
236
+ }
234
237
  const scriptWithNonce = documentRef.querySelector('script[nonce]');
235
238
  const nonceFromScript = normalizeNonce(scriptWithNonce?.getAttribute('nonce') ?? scriptWithNonce?.nonce);
236
239
  if (nonceFromScript) {
@@ -245,12 +248,17 @@ export function prepareScriptNonce(documentRef, explicitNonce) {
245
248
  if (resolvedNonce) {
246
249
  // DOM patching is only needed when a CSP nonce must be propagated.
247
250
  patchDynamicScriptInsertion();
248
- patchState.nonceByDocument.set(documentRef, resolvedNonce);
249
- ensureNonceMutationObserver(documentRef);
251
+ const effectiveDocumentRef = documentRef ?? globalThis.document;
252
+ if (effectiveDocumentRef) {
253
+ patchState.nonceByDocument.set(effectiveDocumentRef, resolvedNonce);
254
+ ensureNonceMutationObserver(effectiveDocumentRef);
255
+ }
250
256
  }
251
257
  else {
252
- patchState.nonceByDocument.delete(documentRef);
253
- teardownNonceMutationObserver(documentRef);
258
+ if (documentRef) {
259
+ patchState.nonceByDocument.delete(documentRef);
260
+ teardownNonceMutationObserver(documentRef);
261
+ }
254
262
  }
255
263
  return resolvedNonce;
256
264
  }
@@ -292,4 +300,4 @@ export function loadScript(documentRef, src, options) {
292
300
  pendingBySrc.set(src, pending);
293
301
  return pending;
294
302
  }
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1zY3JpcHQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBdUMsQ0FBQztBQUNyRixNQUFNLDBCQUEwQixHQUFHLElBQUksT0FBTyxFQUF3QyxDQUFDO0FBQ3ZGLE1BQU0sOEJBQThCLEdBQUcsd0NBQXdDLENBQUM7QUFFaEYsU0FBUyxjQUFjLENBQUMsV0FBcUI7SUFDM0MsSUFBSSxXQUFXLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDOUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFdBQXFCO0lBQzVDLElBQUksWUFBWSxHQUFHLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsWUFBWSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQ2hELDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLFdBQVcsR0FBRyxVQUVuQixDQUFDO0lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUM7UUFD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UUFDWixDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUNwQixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QixZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxnREFBZ0QsQ0FBQyxDQUFDLENBQUM7UUFDbkcsQ0FBQyxDQUFDO1FBQ0YsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBTY3JpcHRTdGF0dXMgPSAnbG9hZGluZycgfCAnbG9hZGVkJyB8ICdlcnJvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0TG9hZE9wdGlvbnMge1xuICBub25jZT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUge1xuICBub25jZUJ5RG9jdW1lbnQ6IFdlYWtNYXA8RG9jdW1lbnQsIHN0cmluZz47XG4gIG9ic2VydmVyQnlEb2N1bWVudDogV2Vha01hcDxEb2N1bWVudCwgTXV0YXRpb25PYnNlcnZlcj47XG4gIGlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50OiBXZWFrTWFwPERvY3VtZW50LCBTZXQ8c3RyaW5nPj47XG4gIHBhdGNoZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IFNDUklQVF9TVEFUVVNfQllfRE9DVU1FTlQgPSBuZXcgV2Vha01hcDxEb2N1bWVudCwgTWFwPHN0cmluZywgU2NyaXB0U3RhdHVzPj4oKTtcbmNvbnN0IFNDUklQVF9QRU5ESU5HX0JZX0RPQ1VNRU5UID0gbmV3IFdlYWtNYXA8RG9jdW1lbnQsIE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+PigpO1xuY29uc3QgRFlOQU1JQ19TQ1JJUFRfTk9OQ0VfU1RBVEVfS0VZID0gJ19fc2lhcmFTaGllbGREeW5hbWljU2NyaXB0Tm9uY2VTdGF0ZV9fJztcblxuZnVuY3Rpb24gZ2V0U3RhdHVzQnlTcmMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogTWFwPHN0cmluZywgU2NyaXB0U3RhdHVzPiB7XG4gIGxldCBzdGF0dXNCeVNyYyA9IFNDUklQVF9TVEFUVVNfQllfRE9DVU1FTlQuZ2V0KGRvY3VtZW50UmVmKTtcbiAgaWYgKCFzdGF0dXNCeVNyYykge1xuICAgIHN0YXR1c0J5U3JjID0gbmV3IE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4oKTtcbiAgICBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5ULnNldChkb2N1bWVudFJlZiwgc3RhdHVzQnlTcmMpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXR1c0J5U3JjO1xufVxuXG5mdW5jdGlvbiBnZXRQZW5kaW5nQnlTcmMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgcGVuZGluZ0J5U3JjID0gU0NSSVBUX1BFTkRJTkdfQllfRE9DVU1FTlQuZ2V0KGRvY3VtZW50UmVmKTtcbiAgaWYgKCFwZW5kaW5nQnlTcmMpIHtcbiAgICBwZW5kaW5nQnlTcmMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcbiAgICBTQ1JJUFRfUEVORElOR19CWV9ET0NVTUVOVC5zZXQoZG9jdW1lbnRSZWYsIHBlbmRpbmdCeVNyYyk7XG4gIH1cblxuICByZXR1cm4gcGVuZGluZ0J5U3JjO1xufVxuXG5mdW5jdGlvbiBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk6IER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUge1xuICBjb25zdCBnbG9iYWxTdGF0ZSA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gICAgW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV0/OiBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlO1xuICB9O1xuXG4gIGlmICghZ2xvYmFsU3RhdGVbRFlOQU1JQ19TQ1JJUFRfTk9OQ0VfU1RBVEVfS0VZXSkge1xuICAgIGdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV0gPSB7XG4gICAgICBub25jZUJ5RG9jdW1lbnQ6IG5ldyBXZWFrTWFwPERvY3VtZW50LCBzdHJpbmc+KCksXG4gICAgICBvYnNlcnZlckJ5RG9jdW1lbnQ6IG5ldyBXZWFrTWFwPERvY3VtZW50LCBNdXRhdGlvbk9ic2VydmVyPigpLFxuICAgICAgaW5saW5lQ2FwdGNoYVNjcmlwdEJ5RG9jdW1lbnQ6IG5ldyBXZWFrTWFwPERvY3VtZW50LCBTZXQ8c3RyaW5nPj4oKSxcbiAgICAgIHBhdGNoZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gZ2xvYmFsU3RhdGVbRFlOQU1JQ19TQ1JJUFRfTk9OQ0VfU1RBVEVfS0VZXTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTm9uY2Uobm9uY2U/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdHJpbW1lZCA9IG5vbmNlPy50cmltKCk7XG4gIHJldHVybiB0cmltbWVkID8gdHJpbW1lZCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNTY3JpcHRFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxTY3JpcHRFbGVtZW50IHtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ICYmIG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc2NyaXB0Jztcbn1cblxuZnVuY3Rpb24gaXNTdHlsZUVsZW1lbnQobm9kZTogTm9kZSk6IG5vZGUgaXMgSFRNTFN0eWxlRWxlbWVudCB7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgRWxlbWVudCAmJiBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3N0eWxlJztcbn1cblxuZnVuY3Rpb24gaXNTdHlsZXNoZWV0TGlua0VsZW1lbnQobm9kZTogTm9kZSk6IG5vZGUgaXMgSFRNTExpbmtFbGVtZW50IHtcbiAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHx8IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnbGluaycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgcmVsID0gKG5vZGUuZ2V0QXR0cmlidXRlKCdyZWwnKSA/PyAnJykudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHJlbCA9PT0gJ3N0eWxlc2hlZXQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlTY3JpcHROb25jZShzY3JpcHQ6IEhUTUxTY3JpcHRFbGVtZW50LCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzY3JpcHQuc2V0QXR0cmlidXRlKCdub25jZScsIHJlc29sdmVkTm9uY2UpO1xuICBzY3JpcHQubm9uY2UgPSByZXNvbHZlZE5vbmNlO1xufVxuXG5mdW5jdGlvbiBhcHBseVN0eWxlTm9uY2Uoc3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHJlc29sdmVkTm9uY2UgPSBub3JtYWxpemVOb25jZShub25jZSk7XG4gIGlmICghcmVzb2x2ZWROb25jZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0eWxlLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgc3R5bGUubm9uY2UgPSByZXNvbHZlZE5vbmNlO1xufVxuXG5mdW5jdGlvbiBhcHBseUxpbmtOb25jZShsaW5rOiBIVE1MTGlua0VsZW1lbnQsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHJlc29sdmVkTm9uY2UgPSBub3JtYWxpemVOb25jZShub25jZSk7XG4gIGlmICghcmVzb2x2ZWROb25jZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxpbmsuc2V0QXR0cmlidXRlKCdub25jZScsIHJlc29sdmVkTm9uY2UpO1xuICAvLyBgSFRNTExpbmtFbGVtZW50Lm5vbmNlYCBleGlzdHMgaW4gbW9kZXJuIGJyb3dzZXJzLlxuICAobGluayBhcyBIVE1MTGlua0VsZW1lbnQgJiB7IG5vbmNlPzogc3RyaW5nIH0pLm5vbmNlID0gcmVzb2x2ZWROb25jZTtcbn1cblxuZnVuY3Rpb24gYXBwbHlOb25jZVRvTm9kZShub2RlOiBOb2RlLCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBpZiAoaXNTY3JpcHRFbGVtZW50KG5vZGUpKSB7XG4gICAgYXBwbHlTY3JpcHROb25jZShub2RlLCBub25jZSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc1N0eWxlRWxlbWVudChub2RlKSkge1xuICAgIGFwcGx5U3R5bGVOb25jZShub2RlLCBub25jZSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc1N0eWxlc2hlZXRMaW5rRWxlbWVudChub2RlKSkge1xuICAgIGFwcGx5TGlua05vbmNlKG5vZGUsIG5vbmNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRyYWNrZWROb25jZShub2RlOiBOb2RlKTogdm9pZCB7XG4gIGNvbnN0IGRvY3VtZW50UmVmID0gbm9kZS5vd25lckRvY3VtZW50O1xuICBpZiAoIWRvY3VtZW50UmVmKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgbm9uY2UgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCkubm9uY2VCeURvY3VtZW50LmdldChkb2N1bWVudFJlZik7XG4gIGFwcGx5Tm9uY2VUb05vZGUobm9kZSwgbm9uY2UpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFja2VkSW5saW5lQ2FwdGNoYVNjcmlwdHMoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogU2V0PHN0cmluZz4ge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuICBsZXQgdHJhY2tlZFNjcmlwdHMgPSBwYXRjaFN0YXRlLmlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50LmdldChkb2N1bWVudFJlZik7XG4gIGlmICghdHJhY2tlZFNjcmlwdHMpIHtcbiAgICB0cmFja2VkU2NyaXB0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHBhdGNoU3RhdGUuaW5saW5lQ2FwdGNoYVNjcmlwdEJ5RG9jdW1lbnQuc2V0KGRvY3VtZW50UmVmLCB0cmFja2VkU2NyaXB0cyk7XG4gIH1cblxuICByZXR1cm4gdHJhY2tlZFNjcmlwdHM7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXBEdXBsaWNhdGVJbmxpbmVDYXB0Y2hhU2NyaXB0KG5vZGU6IE5vZGUpOiBib29sZWFuIHtcbiAgaWYgKCFpc1NjcmlwdEVsZW1lbnQobm9kZSkgfHwgQm9vbGVhbihub2RlLnNyYykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzY3JpcHRCb2R5ID0gKG5vZGUudGV4dENvbnRlbnQgPz8gJycpLnRyaW0oKTtcbiAgaWYgKCFzY3JpcHRCb2R5IHx8ICFzY3JpcHRCb2R5LmluY2x1ZGVzKCdjdXJyZW50TGFuZ0NvZGUnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50UmVmID0gbm9kZS5vd25lckRvY3VtZW50O1xuICBpZiAoIWRvY3VtZW50UmVmKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgdHJhY2tlZFNjcmlwdHMgPSBnZXRUcmFja2VkSW5saW5lQ2FwdGNoYVNjcmlwdHMoZG9jdW1lbnRSZWYpO1xuICBpZiAodHJhY2tlZFNjcmlwdHMuaGFzKHNjcmlwdEJvZHkpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB0cmFja2VkU2NyaXB0cy5hZGQoc2NyaXB0Qm9keSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gd2Fsa0FuZEFwcGx5Tm9uY2Uocm9vdDogTm9kZSwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFub25jZSkgcmV0dXJuO1xuXG4gIC8vIEZhc3QgcGF0aDogcm9vdCBpdHNlbGYgaXMgbm9uY2VhYmxlLlxuICBpZiAoaXNTY3JpcHRFbGVtZW50KHJvb3QpIHx8IGlzU3R5bGVFbGVtZW50KHJvb3QpIHx8IGlzU3R5bGVzaGVldExpbmtFbGVtZW50KHJvb3QpKSB7XG4gICAgYXBwbHlOb25jZVRvTm9kZShyb290LCBub25jZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQ29tbW9uIHBhdGggZm9yIGpRdWVyeTogYXBwZW5kIERvY3VtZW50RnJhZ21lbnQgY29udGFpbmluZyBub2RlcyBjcmVhdGVkIHZpYSBIVE1MIHBhcnNpbmcuXG4gIGlmIChyb290IGluc3RhbmNlb2YgRWxlbWVudCB8fCByb290IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkge1xuICAgIGNvbnN0IG5vbmNlYWJsZSA9IHJvb3QucXVlcnlTZWxlY3RvckFsbD8uKCdzY3JpcHQsc3R5bGUsbGlua1tyZWw9XCJzdHlsZXNoZWV0XCJdJykgPz8gW107XG4gICAgZm9yIChjb25zdCBlbCBvZiBub25jZWFibGUpIHtcbiAgICAgIGFwcGx5Tm9uY2VUb05vZGUoZWwgYXMgdW5rbm93biBhcyBOb2RlLCBub25jZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGVuc3VyZU5vbmNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudFJlZjogRG9jdW1lbnQpOiB2b2lkIHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgaWYgKHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LmdldChkb2N1bWVudFJlZikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChyZWNvcmRzKSA9PiB7XG4gICAgY29uc3Qgbm9uY2UgPSBwYXRjaFN0YXRlLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICAgIGlmICghbm9uY2UpIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiByZWNvcmQuYWRkZWROb2Rlcykge1xuICAgICAgICB3YWxrQW5kQXBwbHlOb25jZShub2RlLCBub25jZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBPYnNlcnZlIHRoZSBmdWxsIGRvY3VtZW50IGJlY2F1c2Ugc2NyaXB0cyBjYW4gYmUgaW5qZWN0ZWQgaW50byBib2R5L2hlYWQgYnkgdmVuZG9yL2pRdWVyeS5cbiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50UmVmLmRvY3VtZW50RWxlbWVudCA/PyBkb2N1bWVudFJlZjtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShyb290LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgcGF0Y2hTdGF0ZS5vYnNlcnZlckJ5RG9jdW1lbnQuc2V0KGRvY3VtZW50UmVmLCBvYnNlcnZlcik7XG59XG5cbmZ1bmN0aW9uIHRlYXJkb3duTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IHZvaWQge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuICBjb25zdCBvYnNlcnZlciA9IHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LmdldChkb2N1bWVudFJlZik7XG4gIGlmICghb2JzZXJ2ZXIpIHJldHVybjtcbiAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICBwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5kZWxldGUoZG9jdW1lbnRSZWYpO1xufVxuXG5mdW5jdGlvbiBpbmplY3ROb25jZUludG9IdG1sKGh0bWw6IHN0cmluZywgbm9uY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHJlc29sdmVkTm9uY2UgPSBub3JtYWxpemVOb25jZShub25jZSk7XG4gIGlmICghcmVzb2x2ZWROb25jZSkgcmV0dXJuIGh0bWw7XG5cbiAgLy8gSWYgdGFnIGFscmVhZHkgaW5jbHVkZXMgbm9uY2UsIGxlYXZlIGl0LlxuICBjb25zdCB3aXRoTm9uY2VBdHRyID0gYCBub25jZT1cIiR7cmVzb2x2ZWROb25jZX1cImA7XG5cbiAgY29uc3QgYWRkTm9uY2VUb1RhZyA9ICh0YWc6ICdzY3JpcHQnIHwgJ3N0eWxlJykgPT4ge1xuICAgIGNvbnN0IG9wZW5UYWcgPSBuZXcgUmVnRXhwKGA8JHt0YWd9KFxcXFxzW14+XSo/KT8+YCwgJ2dpJyk7XG4gICAgcmV0dXJuIChpbnB1dDogc3RyaW5nKSA9PlxuICAgICAgaW5wdXQucmVwbGFjZShvcGVuVGFnLCAobWF0Y2gpID0+IHtcbiAgICAgICAgaWYgKC9bXFxzXCInXW5vbmNlXFxzKj0vLnRlc3QobWF0Y2gpKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgIC8vIEluc2VydCBub25jZSBiZWZvcmUgY2xvc2luZyBgPmBcbiAgICAgICAgcmV0dXJuIG1hdGNoLnJlcGxhY2UoLz4kLywgYCR7d2l0aE5vbmNlQXR0cn0+YCk7XG4gICAgICB9KTtcbiAgfTtcblxuICAvLyBGb3IgbGluayByZWw9c3R5bGVzaGVldCwgYWRkIG5vbmNlIHdoZW4gbWlzc2luZy5cbiAgY29uc3QgbGlua09wZW5UYWcgPSAvPGxpbmtcXGJbXj5dKj4vZ2k7XG4gIGNvbnN0IGFkZE5vbmNlVG9TdHlsZXNoZWV0TGluayA9IChpbnB1dDogc3RyaW5nKSA9PlxuICAgIGlucHV0LnJlcGxhY2UobGlua09wZW5UYWcsIChtYXRjaCkgPT4ge1xuICAgICAgaWYgKC9bXFxzXCInXW5vbmNlXFxzKj0vLnRlc3QobWF0Y2gpKSByZXR1cm4gbWF0Y2g7XG4gICAgICBpZiAoIS9cXGJyZWxcXHMqPVxccypbXCInXT9zdHlsZXNoZWV0W1wiJ10/L2kudGVzdChtYXRjaCkpIHJldHVybiBtYXRjaDtcbiAgICAgIHJldHVybiBtYXRjaC5yZXBsYWNlKC8+JC8sIGAke3dpdGhOb25jZUF0dHJ9PmApO1xuICAgIH0pO1xuXG4gIHJldHVybiBhZGROb25jZVRvU3R5bGVzaGVldExpbmsoYWRkTm9uY2VUb1RhZygnc3R5bGUnKShhZGROb25jZVRvVGFnKCdzY3JpcHQnKShodG1sKSkpO1xufVxuXG5mdW5jdGlvbiBwYXRjaER5bmFtaWNTY3JpcHRJbnNlcnRpb24oKTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG4gIGlmIChwYXRjaFN0YXRlLnBhdGNoZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbEFwcGVuZENoaWxkID0gTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ7XG4gIGNvbnN0IG9yaWdpbmFsSW5zZXJ0QmVmb3JlID0gTm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlO1xuICBjb25zdCBvcmlnaW5hbFJlcGxhY2VDaGlsZCA9IE5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZDtcbiAgY29uc3Qgb3JpZ2luYWxJbnNlcnRBZGphY2VudEhUTUwgPSBFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEhUTUw7XG5cbiAgTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiA8VCBleHRlbmRzIE5vZGU+KG5vZGU6IFQpOiBUIHtcbiAgICAvLyBWZW5kb3IgY2FwdGNoYSBpbmplY3RzIGFuIGlubGluZSBzbmlwcGV0IHdpdGggYGN1cnJlbnRMYW5nQ29kZWAgdGhhdCBjcmFzaGVzIHdoZW4gYXBwZW5kZWQgdHdpY2UuXG4gICAgaWYgKHNob3VsZFNraXBEdXBsaWNhdGVJbmxpbmVDYXB0Y2hhU2NyaXB0KG5vZGUpKSB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgYXBwbHlUcmFja2VkTm9uY2Uobm9kZSk7XG4gICAgcmV0dXJuIG9yaWdpbmFsQXBwZW5kQ2hpbGQuY2FsbCh0aGlzLCBub2RlKSBhcyBUO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmluc2VydEJlZm9yZSA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgTm9kZT4obm9kZTogVCwgY2hpbGQ6IE5vZGUgfCBudWxsKTogVCB7XG4gICAgaWYgKHNob3VsZFNraXBEdXBsaWNhdGVJbmxpbmVDYXB0Y2hhU2NyaXB0KG5vZGUpKSB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgYXBwbHlUcmFja2VkTm9uY2Uobm9kZSk7XG4gICAgcmV0dXJuIG9yaWdpbmFsSW5zZXJ0QmVmb3JlLmNhbGwodGhpcywgbm9kZSwgY2hpbGQpIGFzIFQ7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBOb2RlLCBjaGlsZDogVCk6IFQge1xuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xuICAgIHJldHVybiBvcmlnaW5hbFJlcGxhY2VDaGlsZC5jYWxsKHRoaXMsIG5vZGUsIGNoaWxkKSBhcyBUO1xuICB9O1xuXG4gIEVsZW1lbnQucHJvdG90eXBlLmluc2VydEFkamFjZW50SFRNTCA9IGZ1bmN0aW9uIChwb3NpdGlvbjogSW5zZXJ0UG9zaXRpb24sIHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGRvY3VtZW50UmVmID0gdGhpcy5vd25lckRvY3VtZW50O1xuICAgIGNvbnN0IG5vbmNlID0gZG9jdW1lbnRSZWYgPyBwYXRjaFN0YXRlLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBhdGNoZWRUZXh0ID0gbm9uY2UgPyBpbmplY3ROb25jZUludG9IdG1sKHRleHQsIG5vbmNlKSA6IHRleHQ7XG4gICAgcmV0dXJuIG9yaWdpbmFsSW5zZXJ0QWRqYWNlbnRIVE1MLmNhbGwodGhpcywgcG9zaXRpb24sIHBhdGNoZWRUZXh0KTtcbiAgfTtcblxuICBwYXRjaFN0YXRlLnBhdGNoZWQgPSB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNzcE5vbmNlKGRvY3VtZW50UmVmOiBEb2N1bWVudCwgZXhwbGljaXROb25jZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc29sdmVkRXhwbGljaXROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKGV4cGxpY2l0Tm9uY2UpO1xuICBpZiAocmVzb2x2ZWRFeHBsaWNpdE5vbmNlKSB7XG4gICAgcmV0dXJuIHJlc29sdmVkRXhwbGljaXROb25jZTtcbiAgfVxuXG4gIGNvbnN0IHNjcmlwdFdpdGhOb25jZSA9IGRvY3VtZW50UmVmLnF1ZXJ5U2VsZWN0b3I8SFRNTFNjcmlwdEVsZW1lbnQ+KCdzY3JpcHRbbm9uY2VdJyk7XG4gIGNvbnN0IG5vbmNlRnJvbVNjcmlwdCA9IG5vcm1hbGl6ZU5vbmNlKHNjcmlwdFdpdGhOb25jZT8uZ2V0QXR0cmlidXRlKCdub25jZScpID8/IHNjcmlwdFdpdGhOb25jZT8ubm9uY2UpO1xuICBpZiAobm9uY2VGcm9tU2NyaXB0KSB7XG4gICAgcmV0dXJuIG5vbmNlRnJvbVNjcmlwdDtcbiAgfVxuXG4gIGNvbnN0IG5vbmNlTWV0YSA9IGRvY3VtZW50UmVmLnF1ZXJ5U2VsZWN0b3I8SFRNTE1ldGFFbGVtZW50PignbWV0YVtuYW1lPVwiY3NwLW5vbmNlXCJdJyk7XG4gIHJldHVybiBub3JtYWxpemVOb25jZShub25jZU1ldGE/LmNvbnRlbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVNjcmlwdE5vbmNlKGRvY3VtZW50UmVmOiBEb2N1bWVudCwgZXhwbGljaXROb25jZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlc29sdmVkTm9uY2UgPSByZXNvbHZlQ3NwTm9uY2UoZG9jdW1lbnRSZWYsIGV4cGxpY2l0Tm9uY2UpO1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuXG4gIGlmIChyZXNvbHZlZE5vbmNlKSB7XG4gICAgLy8gRE9NIHBhdGNoaW5nIGlzIG9ubHkgbmVlZGVkIHdoZW4gYSBDU1Agbm9uY2UgbXVzdCBiZSBwcm9wYWdhdGVkLlxuICAgIHBhdGNoRHluYW1pY1NjcmlwdEluc2VydGlvbigpO1xuICAgIHBhdGNoU3RhdGUubm9uY2VCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgcmVzb2x2ZWROb25jZSk7XG4gICAgZW5zdXJlTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmKTtcbiAgfSBlbHNlIHtcbiAgICBwYXRjaFN0YXRlLm5vbmNlQnlEb2N1bWVudC5kZWxldGUoZG9jdW1lbnRSZWYpO1xuICAgIHRlYXJkb3duTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmKTtcbiAgfVxuXG4gIHJldHVybiByZXNvbHZlZE5vbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFNjcmlwdChkb2N1bWVudFJlZjogRG9jdW1lbnQsIHNyYzogc3RyaW5nLCBvcHRpb25zPzogU2NyaXB0TG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgbm9uY2UgPSBub3JtYWxpemVOb25jZShvcHRpb25zPy5ub25jZSk7XG4gIGNvbnN0IHN0YXR1c0J5U3JjID0gZ2V0U3RhdHVzQnlTcmMoZG9jdW1lbnRSZWYpO1xuICBjb25zdCBwZW5kaW5nQnlTcmMgPSBnZXRQZW5kaW5nQnlTcmMoZG9jdW1lbnRSZWYpO1xuICBjb25zdCBleGlzdGluZyA9IGRvY3VtZW50UmVmLnF1ZXJ5U2VsZWN0b3I8SFRNTFNjcmlwdEVsZW1lbnQ+KGBzY3JpcHRbc3JjPVwiJHtzcmN9XCJdYCk7XG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgYXBwbHlTY3JpcHROb25jZShleGlzdGluZywgbm9uY2UpO1xuICAgIGNvbnN0IHN0YXR1cyA9IHN0YXR1c0J5U3JjLmdldChzcmMpO1xuICAgIGlmIChzdGF0dXMgPT09ICdsb2FkZWQnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGVuZGluZyA9IHBlbmRpbmdCeVNyYy5nZXQoc3JjKTtcbiAgICBpZiAocGVuZGluZykge1xuICAgICAgcmV0dXJuIHBlbmRpbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgc3RhdHVzQnlTcmMuc2V0KHNyYywgJ2xvYWRpbmcnKTtcblxuICBjb25zdCBwZW5kaW5nID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50UmVmLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHNjcmlwdC5zcmMgPSBzcmM7XG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICBhcHBseVNjcmlwdE5vbmNlKHNjcmlwdCwgbm9uY2UpO1xuICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBzdGF0dXNCeVNyYy5zZXQoc3JjLCAnbG9hZGVkJyk7XG4gICAgICBwZW5kaW5nQnlTcmMuZGVsZXRlKHNyYyk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfTtcbiAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcbiAgICAgIHN0YXR1c0J5U3JjLnNldChzcmMsICdlcnJvcicpO1xuICAgICAgcGVuZGluZ0J5U3JjLmRlbGV0ZShzcmMpO1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvYWQgc2NyaXB0OiAke3NyY30uIENoZWNrIENTUCBhbGxvd2xpc3QgYW5kIG5vbmNlIGNvbmZpZ3VyYXRpb24uYCkpO1xuICAgIH07XG4gICAgZG9jdW1lbnRSZWYuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICB9KTtcblxuICBwZW5kaW5nQnlTcmMuc2V0KHNyYywgcGVuZGluZyk7XG4gIHJldHVybiBwZW5kaW5nO1xufVxuIl19
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1zY3JpcHQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBdUMsQ0FBQztBQUNyRixNQUFNLDBCQUEwQixHQUFHLElBQUksT0FBTyxFQUF3QyxDQUFDO0FBQ3ZGLE1BQU0sOEJBQThCLEdBQUcsd0NBQXdDLENBQUM7QUFFaEYsU0FBUyxjQUFjLENBQUMsV0FBcUI7SUFDM0MsSUFBSSxXQUFXLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDOUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFdBQXFCO0lBQzVDLElBQUksWUFBWSxHQUFHLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsWUFBWSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQ2hELDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLFdBQVcsR0FBRyxVQUVuQixDQUFDO0lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUM7UUFD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O1FBQ3BCLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNuQixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQixZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDcEIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsMEJBQTBCLEdBQUcsZ0RBQWdELENBQUMsQ0FBQyxDQUFDO1FBQ25HLENBQUMsQ0FBQztRQUNGLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBRUgsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0IsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgU2NyaXB0U3RhdHVzID0gJ2xvYWRpbmcnIHwgJ2xvYWRlZCcgfCAnZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdExvYWRPcHRpb25zIHtcbiAgbm9uY2U/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlIHtcbiAgbm9uY2VCeURvY3VtZW50OiBXZWFrTWFwPERvY3VtZW50LCBzdHJpbmc+O1xuICBvYnNlcnZlckJ5RG9jdW1lbnQ6IFdlYWtNYXA8RG9jdW1lbnQsIE11dGF0aW9uT2JzZXJ2ZXI+O1xuICBpbmxpbmVDYXB0Y2hhU2NyaXB0QnlEb2N1bWVudDogV2Vha01hcDxEb2N1bWVudCwgU2V0PHN0cmluZz4+O1xuICBwYXRjaGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5UID0gbmV3IFdlYWtNYXA8RG9jdW1lbnQsIE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4+KCk7XG5jb25zdCBTQ1JJUFRfUEVORElOR19CWV9ET0NVTUVOVCA9IG5ldyBXZWFrTWFwPERvY3VtZW50LCBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+Pj4oKTtcbmNvbnN0IERZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWSA9ICdfX3NpYXJhU2hpZWxkRHluYW1pY1NjcmlwdE5vbmNlU3RhdGVfXyc7XG5cbmZ1bmN0aW9uIGdldFN0YXR1c0J5U3JjKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4ge1xuICBsZXQgc3RhdHVzQnlTcmMgPSBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5ULmdldChkb2N1bWVudFJlZik7XG4gIGlmICghc3RhdHVzQnlTcmMpIHtcbiAgICBzdGF0dXNCeVNyYyA9IG5ldyBNYXA8c3RyaW5nLCBTY3JpcHRTdGF0dXM+KCk7XG4gICAgU0NSSVBUX1NUQVRVU19CWV9ET0NVTUVOVC5zZXQoZG9jdW1lbnRSZWYsIHN0YXR1c0J5U3JjKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0dXNCeVNyYztcbn1cblxuZnVuY3Rpb24gZ2V0UGVuZGluZ0J5U3JjKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+IHtcbiAgbGV0IHBlbmRpbmdCeVNyYyA9IFNDUklQVF9QRU5ESU5HX0JZX0RPQ1VNRU5ULmdldChkb2N1bWVudFJlZik7XG4gIGlmICghcGVuZGluZ0J5U3JjKSB7XG4gICAgcGVuZGluZ0J5U3JjID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG4gICAgU0NSSVBUX1BFTkRJTkdfQllfRE9DVU1FTlQuc2V0KGRvY3VtZW50UmVmLCBwZW5kaW5nQnlTcmMpO1xuICB9XG5cbiAgcmV0dXJuIHBlbmRpbmdCeVNyYztcbn1cblxuZnVuY3Rpb24gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpOiBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlIHtcbiAgY29uc3QgZ2xvYmFsU3RhdGUgPSBnbG9iYWxUaGlzIGFzIHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICAgIFtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldPzogRHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZTtcbiAgfTtcblxuICBpZiAoIWdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV0pIHtcbiAgICBnbG9iYWxTdGF0ZVtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldID0ge1xuICAgICAgbm9uY2VCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgc3RyaW5nPigpLFxuICAgICAgb2JzZXJ2ZXJCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgTXV0YXRpb25PYnNlcnZlcj4oKSxcbiAgICAgIGlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgU2V0PHN0cmluZz4+KCksXG4gICAgICBwYXRjaGVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV07XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5vbmNlKG5vbmNlPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRyaW1tZWQgPSBub25jZT8udHJpbSgpO1xuICByZXR1cm4gdHJpbW1lZCA/IHRyaW1tZWQgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzU2NyaXB0RWxlbWVudChub2RlOiBOb2RlKTogbm9kZSBpcyBIVE1MU2NyaXB0RWxlbWVudCB7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgRWxlbWVudCAmJiBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NjcmlwdCc7XG59XG5cbmZ1bmN0aW9uIGlzU3R5bGVFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxTdHlsZUVsZW1lbnQge1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdHlsZSc7XG59XG5cbmZ1bmN0aW9uIGlzU3R5bGVzaGVldExpbmtFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxMaW5rRWxlbWVudCB7XG4gIGlmICghKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB8fCBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ2xpbmsnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHJlbCA9IChub2RlLmdldEF0dHJpYnV0ZSgncmVsJykgPz8gJycpLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiByZWwgPT09ICdzdHlsZXNoZWV0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U2NyaXB0Tm9uY2Uoc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKG5vbmNlKTtcbiAgaWYgKCFyZXNvbHZlZE5vbmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgc2NyaXB0Lm5vbmNlID0gcmVzb2x2ZWROb25jZTtcbn1cblxuZnVuY3Rpb24gYXBwbHlTdHlsZU5vbmNlKHN0eWxlOiBIVE1MU3R5bGVFbGVtZW50LCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgcmVzb2x2ZWROb25jZSk7XG4gIHN0eWxlLm5vbmNlID0gcmVzb2x2ZWROb25jZTtcbn1cblxuZnVuY3Rpb24gYXBwbHlMaW5rTm9uY2UobGluazogSFRNTExpbmtFbGVtZW50LCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsaW5rLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgLy8gYEhUTUxMaW5rRWxlbWVudC5ub25jZWAgZXhpc3RzIGluIG1vZGVybiBicm93c2Vycy5cbiAgKGxpbmsgYXMgSFRNTExpbmtFbGVtZW50ICYgeyBub25jZT86IHN0cmluZyB9KS5ub25jZSA9IHJlc29sdmVkTm9uY2U7XG59XG5cbmZ1bmN0aW9uIGFwcGx5Tm9uY2VUb05vZGUobm9kZTogTm9kZSwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGlzU2NyaXB0RWxlbWVudChub2RlKSkge1xuICAgIGFwcGx5U2NyaXB0Tm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNTdHlsZUVsZW1lbnQobm9kZSkpIHtcbiAgICBhcHBseVN0eWxlTm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNTdHlsZXNoZWV0TGlua0VsZW1lbnQobm9kZSkpIHtcbiAgICBhcHBseUxpbmtOb25jZShub2RlLCBub25jZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFja2VkTm9uY2Uobm9kZTogTm9kZSk6IHZvaWQge1xuICBjb25zdCBkb2N1bWVudFJlZiA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5vbmNlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBhcHBseU5vbmNlVG9Ob2RlKG5vZGUsIG5vbmNlKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhY2tlZElubGluZUNhcHRjaGFTY3JpcHRzKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IFNldDxzdHJpbmc+IHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgbGV0IHRyYWNrZWRTY3JpcHRzID0gcGF0Y2hTdGF0ZS5pbmxpbmVDYXB0Y2hhU2NyaXB0QnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBpZiAoIXRyYWNrZWRTY3JpcHRzKSB7XG4gICAgdHJhY2tlZFNjcmlwdHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBwYXRjaFN0YXRlLmlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgdHJhY2tlZFNjcmlwdHMpO1xuICB9XG5cbiAgcmV0dXJuIHRyYWNrZWRTY3JpcHRzO1xufVxuXG5mdW5jdGlvbiBzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlOiBOb2RlKTogYm9vbGVhbiB7XG4gIGlmICghaXNTY3JpcHRFbGVtZW50KG5vZGUpIHx8IEJvb2xlYW4obm9kZS5zcmMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc2NyaXB0Qm9keSA9IChub2RlLnRleHRDb250ZW50ID8/ICcnKS50cmltKCk7XG4gIGlmICghc2NyaXB0Qm9keSB8fCAhc2NyaXB0Qm9keS5pbmNsdWRlcygnY3VycmVudExhbmdDb2RlJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBkb2N1bWVudFJlZiA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHRyYWNrZWRTY3JpcHRzID0gZ2V0VHJhY2tlZElubGluZUNhcHRjaGFTY3JpcHRzKGRvY3VtZW50UmVmKTtcbiAgaWYgKHRyYWNrZWRTY3JpcHRzLmhhcyhzY3JpcHRCb2R5KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdHJhY2tlZFNjcmlwdHMuYWRkKHNjcmlwdEJvZHkpO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHdhbGtBbmRBcHBseU5vbmNlKHJvb3Q6IE5vZGUsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghbm9uY2UpIHJldHVybjtcblxuICAvLyBGYXN0IHBhdGg6IHJvb3QgaXRzZWxmIGlzIG5vbmNlYWJsZS5cbiAgaWYgKGlzU2NyaXB0RWxlbWVudChyb290KSB8fCBpc1N0eWxlRWxlbWVudChyb290KSB8fCBpc1N0eWxlc2hlZXRMaW5rRWxlbWVudChyb290KSkge1xuICAgIGFwcGx5Tm9uY2VUb05vZGUocm9vdCwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENvbW1vbiBwYXRoIGZvciBqUXVlcnk6IGFwcGVuZCBEb2N1bWVudEZyYWdtZW50IGNvbnRhaW5pbmcgbm9kZXMgY3JlYXRlZCB2aWEgSFRNTCBwYXJzaW5nLlxuICBpZiAocm9vdCBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgcm9vdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICBjb25zdCBub25jZWFibGUgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2NyaXB0LHN0eWxlLGxpbmtbcmVsPVwic3R5bGVzaGVldFwiXScpID8/IFtdO1xuICAgIGZvciAoY29uc3QgZWwgb2Ygbm9uY2VhYmxlKSB7XG4gICAgICBhcHBseU5vbmNlVG9Ob2RlKGVsIGFzIHVua25vd24gYXMgTm9kZSwgbm9uY2UpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBlbnN1cmVOb25jZU11dGF0aW9uT2JzZXJ2ZXIoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG4gIGlmIChwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigocmVjb3JkcykgPT4ge1xuICAgIGNvbnN0IG5vbmNlID0gcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZ2V0KGRvY3VtZW50UmVmKTtcbiAgICBpZiAoIW5vbmNlKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgcmVjb3JkLmFkZGVkTm9kZXMpIHtcbiAgICAgICAgd2Fsa0FuZEFwcGx5Tm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gT2JzZXJ2ZSB0aGUgZnVsbCBkb2N1bWVudCBiZWNhdXNlIHNjcmlwdHMgY2FuIGJlIGluamVjdGVkIGludG8gYm9keS9oZWFkIGJ5IHZlbmRvci9qUXVlcnkuXG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudFJlZi5kb2N1bWVudEVsZW1lbnQgPz8gZG9jdW1lbnRSZWY7XG4gIG9ic2VydmVyLm9ic2VydmUocm9vdCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4gIHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgb2JzZXJ2ZXIpO1xufVxuXG5mdW5jdGlvbiB0ZWFyZG93bk5vbmNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudFJlZjogRG9jdW1lbnQpOiB2b2lkIHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgY29uc3Qgb2JzZXJ2ZXIgPSBwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBpZiAoIW9ic2VydmVyKSByZXR1cm47XG4gIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgcGF0Y2hTdGF0ZS5vYnNlcnZlckJ5RG9jdW1lbnQuZGVsZXRlKGRvY3VtZW50UmVmKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Tm9uY2VJbnRvSHRtbChodG1sOiBzdHJpbmcsIG5vbmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHJldHVybiBodG1sO1xuXG4gIC8vIElmIHRhZyBhbHJlYWR5IGluY2x1ZGVzIG5vbmNlLCBsZWF2ZSBpdC5cbiAgY29uc3Qgd2l0aE5vbmNlQXR0ciA9IGAgbm9uY2U9XCIke3Jlc29sdmVkTm9uY2V9XCJgO1xuXG4gIGNvbnN0IGFkZE5vbmNlVG9UYWcgPSAodGFnOiAnc2NyaXB0JyB8ICdzdHlsZScpID0+IHtcbiAgICBjb25zdCBvcGVuVGFnID0gbmV3IFJlZ0V4cChgPCR7dGFnfShcXFxcc1tePl0qPyk/PmAsICdnaScpO1xuICAgIHJldHVybiAoaW5wdXQ6IHN0cmluZykgPT5cbiAgICAgIGlucHV0LnJlcGxhY2Uob3BlblRhZywgKG1hdGNoKSA9PiB7XG4gICAgICAgIGlmICgvW1xcc1wiJ11ub25jZVxccyo9Ly50ZXN0KG1hdGNoKSkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAvLyBJbnNlcnQgbm9uY2UgYmVmb3JlIGNsb3NpbmcgYD5gXG4gICAgICAgIHJldHVybiBtYXRjaC5yZXBsYWNlKC8+JC8sIGAke3dpdGhOb25jZUF0dHJ9PmApO1xuICAgICAgfSk7XG4gIH07XG5cbiAgLy8gRm9yIGxpbmsgcmVsPXN0eWxlc2hlZXQsIGFkZCBub25jZSB3aGVuIG1pc3NpbmcuXG4gIGNvbnN0IGxpbmtPcGVuVGFnID0gLzxsaW5rXFxiW14+XSo+L2dpO1xuICBjb25zdCBhZGROb25jZVRvU3R5bGVzaGVldExpbmsgPSAoaW5wdXQ6IHN0cmluZykgPT5cbiAgICBpbnB1dC5yZXBsYWNlKGxpbmtPcGVuVGFnLCAobWF0Y2gpID0+IHtcbiAgICAgIGlmICgvW1xcc1wiJ11ub25jZVxccyo9Ly50ZXN0KG1hdGNoKSkgcmV0dXJuIG1hdGNoO1xuICAgICAgaWYgKCEvXFxicmVsXFxzKj1cXHMqW1wiJ10/c3R5bGVzaGVldFtcIiddPy9pLnRlc3QobWF0Y2gpKSByZXR1cm4gbWF0Y2g7XG4gICAgICByZXR1cm4gbWF0Y2gucmVwbGFjZSgvPiQvLCBgJHt3aXRoTm9uY2VBdHRyfT5gKTtcbiAgICB9KTtcblxuICByZXR1cm4gYWRkTm9uY2VUb1N0eWxlc2hlZXRMaW5rKGFkZE5vbmNlVG9UYWcoJ3N0eWxlJykoYWRkTm9uY2VUb1RhZygnc2NyaXB0JykoaHRtbCkpKTtcbn1cblxuZnVuY3Rpb24gcGF0Y2hEeW5hbWljU2NyaXB0SW5zZXJ0aW9uKCk6IHZvaWQge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuICBpZiAocGF0Y2hTdGF0ZS5wYXRjaGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxBcHBlbmRDaGlsZCA9IE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkO1xuICBjb25zdCBvcmlnaW5hbEluc2VydEJlZm9yZSA9IE5vZGUucHJvdG90eXBlLmluc2VydEJlZm9yZTtcbiAgY29uc3Qgb3JpZ2luYWxSZXBsYWNlQ2hpbGQgPSBOb2RlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQ7XG4gIGNvbnN0IG9yaWdpbmFsSW5zZXJ0QWRqYWNlbnRIVE1MID0gRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRIVE1MO1xuXG4gIE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBUKTogVCB7XG4gICAgLy8gVmVuZG9yIGNhcHRjaGEgaW5qZWN0cyBhbiBpbmxpbmUgc25pcHBldCB3aXRoIGBjdXJyZW50TGFuZ0NvZGVgIHRoYXQgY3Jhc2hlcyB3aGVuIGFwcGVuZGVkIHR3aWNlLlxuICAgIGlmIChzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xuICAgIHJldHVybiBvcmlnaW5hbEFwcGVuZENoaWxkLmNhbGwodGhpcywgbm9kZSkgYXMgVDtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbiA8VCBleHRlbmRzIE5vZGU+KG5vZGU6IFQsIGNoaWxkOiBOb2RlIHwgbnVsbCk6IFQge1xuICAgIGlmIChzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xuICAgIHJldHVybiBvcmlnaW5hbEluc2VydEJlZm9yZS5jYWxsKHRoaXMsIG5vZGUsIGNoaWxkKSBhcyBUO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgTm9kZT4obm9kZTogTm9kZSwgY2hpbGQ6IFQpOiBUIHtcbiAgICBhcHBseVRyYWNrZWROb25jZShub2RlKTtcbiAgICByZXR1cm4gb3JpZ2luYWxSZXBsYWNlQ2hpbGQuY2FsbCh0aGlzLCBub2RlLCBjaGlsZCkgYXMgVDtcbiAgfTtcblxuICBFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEhUTUwgPSBmdW5jdGlvbiAocG9zaXRpb246IEluc2VydFBvc2l0aW9uLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkb2N1bWVudFJlZiA9IHRoaXMub3duZXJEb2N1bWVudDtcbiAgICBjb25zdCBub25jZSA9IGRvY3VtZW50UmVmID8gcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZ2V0KGRvY3VtZW50UmVmKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwYXRjaGVkVGV4dCA9IG5vbmNlID8gaW5qZWN0Tm9uY2VJbnRvSHRtbCh0ZXh0LCBub25jZSkgOiB0ZXh0O1xuICAgIHJldHVybiBvcmlnaW5hbEluc2VydEFkamFjZW50SFRNTC5jYWxsKHRoaXMsIHBvc2l0aW9uLCBwYXRjaGVkVGV4dCk7XG4gIH07XG5cbiAgcGF0Y2hTdGF0ZS5wYXRjaGVkID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDc3BOb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBleHBsaWNpdE5vbmNlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzb2x2ZWRFeHBsaWNpdE5vbmNlID0gbm9ybWFsaXplTm9uY2UoZXhwbGljaXROb25jZSk7XG4gIGlmIChyZXNvbHZlZEV4cGxpY2l0Tm9uY2UpIHtcbiAgICByZXR1cm4gcmVzb2x2ZWRFeHBsaWNpdE5vbmNlO1xuICB9XG5cbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzY3JpcHRXaXRoTm9uY2UgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50Pignc2NyaXB0W25vbmNlXScpO1xuICBjb25zdCBub25jZUZyb21TY3JpcHQgPSBub3JtYWxpemVOb25jZShzY3JpcHRXaXRoTm9uY2U/LmdldEF0dHJpYnV0ZSgnbm9uY2UnKSA/PyBzY3JpcHRXaXRoTm9uY2U/Lm5vbmNlKTtcbiAgaWYgKG5vbmNlRnJvbVNjcmlwdCkge1xuICAgIHJldHVybiBub25jZUZyb21TY3JpcHQ7XG4gIH1cblxuICBjb25zdCBub25jZU1ldGEgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxNZXRhRWxlbWVudD4oJ21ldGFbbmFtZT1cImNzcC1ub25jZVwiXScpO1xuICByZXR1cm4gbm9ybWFsaXplTm9uY2Uobm9uY2VNZXRhPy5jb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVTY3JpcHROb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBleHBsaWNpdE5vbmNlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IHJlc29sdmVDc3BOb25jZShkb2N1bWVudFJlZiwgZXhwbGljaXROb25jZSk7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG5cbiAgaWYgKHJlc29sdmVkTm9uY2UpIHtcbiAgICAvLyBET00gcGF0Y2hpbmcgaXMgb25seSBuZWVkZWQgd2hlbiBhIENTUCBub25jZSBtdXN0IGJlIHByb3BhZ2F0ZWQuXG4gICAgcGF0Y2hEeW5hbWljU2NyaXB0SW5zZXJ0aW9uKCk7XG4gICAgY29uc3QgZWZmZWN0aXZlRG9jdW1lbnRSZWYgPSBkb2N1bWVudFJlZiA/PyBnbG9iYWxUaGlzLmRvY3VtZW50O1xuICAgIGlmIChlZmZlY3RpdmVEb2N1bWVudFJlZikge1xuICAgICAgcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuc2V0KGVmZmVjdGl2ZURvY3VtZW50UmVmLCByZXNvbHZlZE5vbmNlKTtcbiAgICAgIGVuc3VyZU5vbmNlTXV0YXRpb25PYnNlcnZlcihlZmZlY3RpdmVEb2N1bWVudFJlZik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkb2N1bWVudFJlZikge1xuICAgICAgcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZGVsZXRlKGRvY3VtZW50UmVmKTtcbiAgICAgIHRlYXJkb3duTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWROb25jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTY3JpcHQoZG9jdW1lbnRSZWY6IERvY3VtZW50LCBzcmM6IHN0cmluZywgb3B0aW9ucz86IFNjcmlwdExvYWRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG5vbmNlID0gbm9ybWFsaXplTm9uY2Uob3B0aW9ucz8ubm9uY2UpO1xuICBjb25zdCBzdGF0dXNCeVNyYyA9IGdldFN0YXR1c0J5U3JjKGRvY3VtZW50UmVmKTtcbiAgY29uc3QgcGVuZGluZ0J5U3JjID0gZ2V0UGVuZGluZ0J5U3JjKGRvY3VtZW50UmVmKTtcbiAgY29uc3QgZXhpc3RpbmcgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50Pihgc2NyaXB0W3NyYz1cIiR7c3JjfVwiXWApO1xuXG4gIGlmIChleGlzdGluZykge1xuICAgIGFwcGx5U2NyaXB0Tm9uY2UoZXhpc3RpbmcsIG5vbmNlKTtcbiAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNCeVNyYy5nZXQoc3JjKTtcbiAgICBpZiAoc3RhdHVzID09PSAnbG9hZGVkJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmRpbmcgPSBwZW5kaW5nQnlTcmMuZ2V0KHNyYyk7XG4gICAgaWYgKHBlbmRpbmcpIHtcbiAgICAgIHJldHVybiBwZW5kaW5nO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHN0YXR1c0J5U3JjLnNldChzcmMsICdsb2FkaW5nJyk7XG5cbiAgY29uc3QgcGVuZGluZyA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudFJlZi5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBzY3JpcHQuc3JjID0gc3JjO1xuICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgYXBwbHlTY3JpcHROb25jZShzY3JpcHQsIG5vbmNlKTtcbiAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgc3RhdHVzQnlTcmMuc2V0KHNyYywgJ2xvYWRlZCcpO1xuICAgICAgcGVuZGluZ0J5U3JjLmRlbGV0ZShzcmMpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH07XG4gICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICBzdGF0dXNCeVNyYy5zZXQoc3JjLCAnZXJyb3InKTtcbiAgICAgIHBlbmRpbmdCeVNyYy5kZWxldGUoc3JjKTtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIHNjcmlwdDogJHtzcmN9LiBDaGVjayBDU1AgYWxsb3dsaXN0IGFuZCBub25jZSBjb25maWd1cmF0aW9uLmApKTtcbiAgICB9O1xuICAgIGRvY3VtZW50UmVmLmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgfSk7XG5cbiAgcGVuZGluZ0J5U3JjLnNldChzcmMsIHBlbmRpbmcpO1xuICByZXR1cm4gcGVuZGluZztcbn1cbiJdfQ==
@@ -68,7 +68,7 @@ export class SiaraShieldComponent {
68
68
  throw new Error('SiaraShieldComponent: publicKey is required.');
69
69
  }
70
70
  // Prepare CSP nonce propagation so any vendor-injected child scripts get the same nonce.
71
- const documentRef = this.host.nativeElement.ownerDocument;
71
+ const documentRef = this.host.nativeElement.ownerDocument ?? globalThis.document ?? null;
72
72
  const nonce = prepareScriptNonce(documentRef, options.cspNonce);
73
73
  if ((options.loadJQuery ?? true) && !this.isJQueryAlreadyAvailable()) {
74
74
  await this.loader.loadScript(JQUERY_FALLBACK_SRC, { nonce });
@@ -221,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
221
221
  }], token: [{
222
222
  type: Output
223
223
  }] } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0csT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQUVuRixNQUFNLG1CQUFtQixHQUFHLGtFQUFrRSxDQUFDO0FBQy9GLE1BQU0sa0JBQWtCLEdBQUcsc0VBQXNFLENBQUM7QUFDbEcsTUFBTSxxQkFBcUIsR0FBRyx5RUFBeUUsQ0FBQztBQUN4RyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUV0QyxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLENBQUMsR0FBRyxVQUF5RCxDQUFDO0lBQ3BFLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLHlCQUF5QjtRQUN6QiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLHlCQUF5QjtLQUNqQixDQUFDO0lBRVgsTUFBTSxRQUFRLEdBQUcsVUFBVTtTQUN4QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QixJQUFJLENBQUMsQ0FBQyxLQUFL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QUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDcEUsTUFBTSxLQUFLLEdBQUcscUJBQXFCLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDdEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7d0dBcE1VLG9CQUFvQjs0RkFBcEIsb0JBQW9CLDJPQUhyQixpQ0FBaUM7OzRGQUdoQyxvQkFBb0I7a0JBTmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsaUNBQWlDO29CQUMzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7c0hBRTRCLFNBQVM7c0JBQW5DLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUtJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2lhcmFTaGllbGRMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0SW5pdENhcHRjaGFGbiwgZ2V0U2lhcmFTaGllbGRHbG9iYWxzIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQuZ2xvYmFscyc7XG5pbXBvcnQgeyBpbnN0YWxsVmVuZG9yUnVudGltZUVycm9yU3VwcHJlc3Npb24sIHN1cHByZXNzVmVuZG9yQ29uc29sZVdpbmRvdyB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLWxvZy11dGlscyc7XG5pbXBvcnQgeyBpbnN0YWxsQ2FwdGNoYVN1Ym1pdEd1YXJkIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtc3VibWl0LWd1YXJkJztcbmltcG9ydCB7IHByZXBhcmVTY3JpcHROb25jZSB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscyc7XG5pbXBvcnQgeyBpbnN0YWxsVmVuZG9yQ2hhbGxlbmdlUnVudGltZVBhdGNoIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtdmVuZG9yLXJ1bnRpbWUnO1xuXG5jb25zdCBKUVVFUllfRkFMTEJBQ0tfU1JDID0gJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbS9jYXBjaGEtdGVtcGxlL2pzL2pxdWVyeS5taW4uanMnO1xuY29uc3QgQ0FQVENIQV9TQ1JJUFRfU1JDID0gJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbS9DYXB0Y2hhRm9ybWF0ZS9DYXB0Y2hhUmVzb3VyY2VzLmpzJztcbmNvbnN0IFZBTElEQVRJT05fU0NSSVBUX1NSQyA9ICdodHRwczovL2VtYmVkLm15Y3liZXJzaWFyYS5jb20vQ2FwdGNoYUZvcm1hdGUvU2lhcmFTaGllbGRfVmFsaWRhdGlvbi5qcyc7XG5jb25zdCBDQVBUQ0hBX1JFQURZX1RJTUVPVVRfTVMgPSA4MDAwO1xuXG5mdW5jdGlvbiBlbnN1cmVBY2Nlc3NpYmlsaXR5UG9wdXBBbGlhc2VzKCk6IHZvaWQge1xuICBjb25zdCBnID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBhbGlhc05hbWVzID0gW1xuICAgICdSZW1vdmVBY2Nlc2liaWxpdHlQb3B1cCcsXG4gICAgJ19SZW1vdmVBY2Nlc2liaWxpdHlQb3B1cCcsXG4gICAgJ1JlbW92ZUFjY2VzaWJsaXR5UG9wdXAnLFxuICAgICdfUmVtb3ZlQWNjZXNpYmxpdHlQb3B1cCcsXG4gIF0gYXMgY29uc3Q7XG5cbiAgY29uc3QgZXhpc3RpbmcgPSBhbGlhc05hbWVzXG4gICAgLm1hcCgobmFtZSkgPT4gZ1tuYW1lXSlcbiAgICAuZmluZCgodmFsdWUpOiB2YWx1ZSBpcyAoKSA9PiB2b2lkID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyk7XG5cbiAgY29uc3Qgc3RhYmxlRm4gPSBleGlzdGluZyA/PyAoKCkgPT4gdW5kZWZpbmVkKTtcbiAgZm9yIChjb25zdCBuYW1lIG9mIGFsaWFzTmFtZXMpIHtcbiAgICBnW25hbWVdID0gc3RhYmxlRm47XG4gIH1cbn1cblxuZnVuY3Rpb24gcnVuSW5Sb290Wm9uZTxUPihmbjogKCkgPT4gVCk6IFQge1xuICBjb25zdCBnID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIHsgWm9uZT86IHsgcm9vdD86IHsgcnVuPzogPFU+KGNiOiAoKSA9PiBVKSA9PiBVIH0gfSB9O1xuICBjb25zdCB6b25lUm9vdFJ1biA9IGcuWm9uZT8ucm9vdD8ucnVuO1xuICBpZiAodHlwZW9mIHpvbmVSb290UnVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHpvbmVSb290UnVuLmNhbGwoZy5ab25lPy5yb290LCBmbikgYXMgVDtcbiAgfVxuICByZXR1cm4gZm4oKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWFyYVNoaWVsZEluaXRPcHRpb25zIHtcbiAgLyoqIFNpYXJhU2hpZWxkIHB1YmxpYyBrZXkuIFVzZSBcIlRFU1QtQ1lCRVJTSUFSQVwiIGZvciBzdGFnaW5nL2RldmVsb3BtZW50LiAqL1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgLyoqIExvYWRzIGpRdWVyeSBiZWZvcmUgU2lhcmFTaGllbGQgc2NyaXB0LiBEZWZhdWx0IGlzIHRydWUgZm9yIGVhc2llciBpbnRlZ3JhdGlvbi4gU2V0IHRvIGZhbHNlIG9ubHkgaWYgeW91ciBwYWdlIGFscmVhZHkgaW5jbHVkZXMgalF1ZXJ5LiAqL1xuICBsb2FkSlF1ZXJ5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENTUCBub25jZSB2YWx1ZSAod2l0aG91dCB0aGUgYCdub25jZS0nYCBwcmVmaXgpLlxuICAgKiBJZiBvbWl0dGVkLCB3ZSBhdHRlbXB0IHRvIHJlc29sdmUgaXQgZnJvbSBleGlzdGluZyBgc2NyaXB0W25vbmNlXWAgb3IgYG1ldGFbbmFtZT1cImNzcC1ub25jZVwiXWAuXG4gICAqL1xuICBjc3BOb25jZT86IHN0cmluZztcbiAgLyoqIFNldCB0cnVlIG9ubHkgd2hlbiBhY3RpdmVseSBkZWJ1Z2dpbmcgdmVuZG9yL3J1bnRpbWUgaW50ZXJuYWxzIGluIGJyb3dzZXIgY29uc29sZS4gKi9cbiAgYWxsb3dWZW5kb3JDb25zb2xlTG9ncz86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpYXJhLXNoaWVsZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cIlNpYXJhU2hpZWxkXCI+PC9kaXY+YCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU2lhcmFTaGllbGRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljS2V5ITogc3RyaW5nO1xuICBASW5wdXQoKSBsb2FkSlF1ZXJ5ID0gdHJ1ZTtcbiAgQElucHV0KCkgY3NwTm9uY2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFsbG93VmVuZG9yQ29uc29sZUxvZ3MgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgYEN5YmVyU2lhcmFUb2tlbmAgcmlnaHQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGBjaGVja0NhcHRjaGEoKWAuXG4gICAqL1xuICBAT3V0cHV0KCkgdG9rZW4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvYWRlcjogU2lhcmFTaGllbGRMb2FkZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCh7XG4gICAgICBwdWJsaWNLZXk6IHRoaXMucHVibGljS2V5LFxuICAgICAgbG9hZEpRdWVyeTogdGhpcy5sb2FkSlF1ZXJ5LFxuICAgICAgY3NwTm9uY2U6IHRoaXMuY3NwTm9uY2UsXG4gICAgICBhbGxvd1ZlbmRvckNvbnNvbGVMb2dzOiB0aGlzLmFsbG93VmVuZG9yQ29uc29sZUxvZ3MsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBpbml0KG9wdGlvbnM6IFNpYXJhU2hpZWxkSW5pdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkgcmV0dXJuO1xuXG4gICAgLy8gRW5zdXJlIHRoZSBob3N0IGVsZW1lbnQgaXMgaW4gRE9NIGJlZm9yZSBzY3JpcHRzIHJ1bi5cbiAgICB2b2lkIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O1xuICAgIGluc3RhbGxDYXB0Y2hhU3VibWl0R3VhcmQoKTtcblxuICAgIGlmICghb3B0aW9ucy5wdWJsaWNLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2lhcmFTaGllbGRDb21wb25lbnQ6IHB1YmxpY0tleSBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIENTUCBub25jZSBwcm9wYWdhdGlvbiBzbyBhbnkgdmVuZG9yLWluamVjdGVkIGNoaWxkIHNjcmlwdHMgZ2V0IHRoZSBzYW1lIG5vbmNlLlxuICAgIGNvbnN0IGRvY3VtZW50UmVmID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudDtcbiAgICBjb25zdCBub25jZSA9IHByZXBhcmVTY3JpcHROb25jZShkb2N1bWVudFJlZiwgb3B0aW9ucy5jc3BOb25jZSk7XG4gICAgaWYgKChvcHRpb25zLmxvYWRKUXVlcnkgPz8gdHJ1ZSkgJiYgIXRoaXMuaXNKUXVlcnlBbHJlYWR5QXZhaWxhYmxlKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZGVyLmxvYWRTY3JpcHQoSlFVRVJZX0ZBTExCQUNLX1NSQywgeyBub25jZSB9KTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmxvYWRlci5sb2FkU2NyaXB0KENBUFRDSEFfU0NSSVBUX1NSQywgeyBub25jZSB9KTtcbiAgICBhd2FpdCB0aGlzLmxvYWRlci5sb2FkU2NyaXB0KFZBTElEQVRJT05fU0NSSVBUX1NSQywgeyBub25jZSB9KTtcblxuICAgIGNvbnN0IGcgPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKTtcbiAgICBlbnN1cmVBY2Nlc3NpYmlsaXR5UG9wdXBBbGlhc2VzKCk7XG4gICAgdGhpcy5wcmV2ZW50RHVwbGljYXRlVmFsaWRhdGlvbkJvb3RzdHJhcChnKTtcbiAgICBpbnN0YWxsVmVuZG9yQ2hhbGxlbmdlUnVudGltZVBhdGNoKCk7XG4gICAgY29uc3QgaW5pdENhcHRjaGFGbiA9IGdldEluaXRDYXB0Y2hhRm4oZyk7XG4gICAgaWYgKCFpbml0Q2FwdGNoYUZuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdTaWFyYVNoaWVsZDogSW5pdENhcHRjaGEoKSBpcyBub3QgYXZhaWxhYmxlIGFmdGVyIGxvYWRpbmcgc2NyaXB0cy4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuYWxsb3dWZW5kb3JDb25zb2xlTG9ncykge1xuICAgICAgc3VwcHJlc3NWZW5kb3JDb25zb2xlV2luZG93KCk7XG4gICAgICBpbnN0YWxsVmVuZG9yUnVudGltZUVycm9yU3VwcHJlc3Npb24oKTtcbiAgICB9XG4gICAgcnVuSW5Sb290Wm9uZSgoKSA9PiBpbml0Q2FwdGNoYUZuKG9wdGlvbnMucHVibGljS2V5KSk7XG4gICAgYXdhaXQgdGhpcy53YWl0Rm9yQ2hlY2tDYXB0Y2hhQXBpKCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0IHByZWxvYWRlZCBqUXVlcnkgZnJvbSBnbG9iYWwgb2JqZWN0IG9yIGFuIGV4aXN0aW5nIHNjcmlwdCB0YWcuXG4gICAqL1xuICBwcml2YXRlIGlzSlF1ZXJ5QWxyZWFkeUF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnID0gZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCk7XG4gICAgaWYgKHR5cGVvZiBnLmpRdWVyeSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgZy4kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ0pxdWVyeVNjcmlwdCA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MU2NyaXB0RWxlbWVudD4oXG4gICAgICAnc2NyaXB0W3NyYyo9XCJqcXVlcnlcIl0nLFxuICAgICk7XG4gICAgcmV0dXJuIEJvb2xlYW4oZXhpc3RpbmdKcXVlcnlTY3JpcHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmV2ZW50RHVwbGljYXRlVmFsaWRhdGlvbkJvb3RzdHJhcChnOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRTaWFyYVNoaWVsZEdsb2JhbHM+KTogdm9pZCB7XG4gICAgY29uc3Qgb3JpZ2luYWxBcHBlbmRWYWxpZGF0aW9uID0gZy5BcHBlbmRWYWxpZGF0aW9uSlM7XG4gICAgaWYgKHR5cGVvZiBvcmlnaW5hbEFwcGVuZFZhbGlkYXRpb24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBnLkFwcGVuZFZhbGlkYXRpb25KUyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50PihcbiAgICAgICAgYHNjcmlwdFtzcmM9XCIke1ZBTElEQVRJT05fU0NSSVBUX1NSQ31cIl1gLFxuICAgICAgKTtcbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG9yaWdpbmFsQXBwZW5kVmFsaWRhdGlvbigpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdhaXRGb3JDaGVja0NhcHRjaGFBcGkodGltZW91dE1zID0gQ0FQVENIQV9SRUFEWV9USU1FT1VUX01TKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCA8IHRpbWVvdXRNcykge1xuICAgICAgaWYgKGdldFNpYXJhU2hpZWxkR2xvYmFscygpLkNoZWNrQ2FwdGNoYSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTaWFyYVNoaWVsZDogQ2hlY2tDYXB0Y2hhKCkgd2FzIG5vdCBhdmFpbGFibGUgd2l0aGluIHRpbWVvdXQuJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgdGhlIGdsb2JhbCBgQ2hlY2tDYXB0Y2hhKClgIGZyb20gU2lhcmFTaGllbGQgc2NyaXB0LlxuICAgKiBSZXR1cm5zIHRydWUgd2hlbiBjYXB0Y2hhIGlzIHZhbGlkOyBlbWl0cyB0b2tlbiBpZiBhdmFpbGFibGUuXG4gICAqL1xuICBjaGVja0NhcHRjaGEoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZyA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpO1xuICAgIGlmICghZy5DaGVja0NhcHRjaGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2lhcmFTaGllbGQ6IENoZWNrQ2FwdGNoYSgpIGlzIG5vdCBhdmFpbGFibGUuIERpZCBpbml0KCkgcnVuPycpO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nVG9rZW4gPSB0eXBlb2YgZy5DeWJlclNpYXJhVG9rZW4gPT09ICdzdHJpbmcnICYmIGcuQ3liZXJTaWFyYVRva2VuLmxlbmd0aCA+IDAgPyBnLkN5YmVyU2lhcmFUb2tlbiA6IHVuZGVmaW5lZDtcbiAgICBpZiAoZXhpc3RpbmdUb2tlbikge1xuICAgICAgdGhpcy50b2tlbi5lbWl0KGV4aXN0aW5nVG9rZW4pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFsbG93VmVuZG9yQ29uc29sZUxvZ3MpIHtcbiAgICAgIHN1cHByZXNzVmVuZG9yQ29uc29sZVdpbmRvdygpO1xuICAgIH1cbiAgICBjb25zdCBvayA9IGcuQ2hlY2tDYXB0Y2hhKCk7XG4gICAgaWYgKG9rICYmIHR5cGVvZiBnLkN5YmVyU2lhcmFUb2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMudG9rZW4uZW1pdChnLkN5YmVyU2lhcmFUb2tlbik7XG4gICAgfVxuICAgIHJldHVybiBvaztcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3luYy1mcmllbmRseSBjYXB0Y2hhIHZhbGlkYXRpb24gdG8gYXZvaWQgZmlyc3QtY2xpY2sgdGltaW5nIGlzc3Vlcy5cbiAgICogUGVyZm9ybXMgb25lIHZhbGlkYXRpb24gY2FsbCBhbmQgd2FpdHMgZm9yIHRva2VuIHByb3BhZ2F0aW9uLlxuICAgKi9cbiAgYXN5bmMgY2hlY2tDYXB0Y2hhQXN5bmMob3B0aW9ucz86IHtcbiAgICB0aW1lb3V0TXM/OiBudW1iZXI7XG4gICAgcG9sbEludGVydmFsTXM/OiBudW1iZXI7XG4gICAgYmVmb3JlQ2hlY2tEZWxheU1zPzogbnVtYmVyO1xuICAgIHJldHJ5T25GYWxzZU1zPzogbnVtYmVyO1xuICAgIGZhbHNlUmVzdWx0VG9rZW5XYWl0TXM/OiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB0aW1lb3V0TXMgPSBvcHRpb25zPy50aW1lb3V0TXMgPz8gMjAwMDtcbiAgICBjb25zdCBwb2xsSW50ZXJ2YWxNcyA9IG9wdGlvbnM/LnBvbGxJbnRlcnZhbE1zID8/IDEyMDtcbiAgICBjb25zdCBiZWZvcmVDaGVja0RlbGF5TXMgPSBvcHRpb25zPy5iZWZvcmVDaGVja0RlbGF5TXMgPz8gMTQwO1xuICAgIGNvbnN0IHJldHJ5T25GYWxzZU1zID0gb3B0aW9ucz8ucmV0cnlPbkZhbHNlTXMgPz8gMDtcbiAgICBjb25zdCBmYWxzZVJlc3VsdFRva2VuV2FpdE1zID0gb3B0aW9ucz8uZmFsc2VSZXN1bHRUb2tlbldhaXRNcyA/PyA5MDA7XG4gICAgY29uc3QgZXhpc3RpbmdUb2tlbiA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpLkN5YmVyU2lhcmFUb2tlbjtcbiAgICBpZiAodHlwZW9mIGV4aXN0aW5nVG9rZW4gPT09ICdzdHJpbmcnICYmIGV4aXN0aW5nVG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50b2tlbi5lbWl0KGV4aXN0aW5nVG9rZW4pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIGJlZm9yZUNoZWNrRGVsYXlNcykpO1xuICAgIGxldCBvayA9IHRoaXMuY2hlY2tDYXB0Y2hhKCk7XG4gICAgLy8gT3B0aW9uYWwgcmV0cnkgZm9yIGludGVncmF0aW9ucyB0aGF0IG9ic2VydmUgbGF0ZSB2ZW5kb3Itc3RhdGUgc2V0dGxpbmcuXG4gICAgaWYgKCFvayAmJiByZXRyeU9uRmFsc2VNcyA+IDApIHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHJldHJ5T25GYWxzZU1zKSk7XG4gICAgICBvayA9IHRoaXMuY2hlY2tDYXB0Y2hhKCk7XG4gICAgfVxuICAgIGlmICghb2spIHtcbiAgICAgIC8vIFNvbWUgdmVuZG9yIGZsb3dzIHJldHVybiBmYWxzZSBmaXJzdCwgdGhlbiBzZXQgdG9rZW4gc2hvcnRseSBhZnRlci5cbiAgICAgIGNvbnN0IGZhbHNlU3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgIHdoaWxlIChEYXRlLm5vdygpIC0gZmFsc2VTdGFydGVkQXQgPCBmYWxzZVJlc3VsdFRva2VuV2FpdE1zKSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHBvbGxJbnRlcnZhbE1zKSk7XG4gICAgICAgIGNvbnN0IHRva2VuID0gZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCkuQ3liZXJTaWFyYVRva2VuO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJyAmJiB0b2tlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy50b2tlbi5lbWl0KHRva2VuKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGcgPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKTtcbiAgICBpZiAodHlwZW9mIGcuQ3liZXJTaWFyYVRva2VuID09PSAnc3RyaW5nJyAmJiBnLkN5YmVyU2lhcmFUb2tlbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICAgIHdoaWxlIChEYXRlLm5vdygpIC0gc3RhcnRlZEF0IDwgdGltZW91dE1zKSB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBwb2xsSW50ZXJ2YWxNcykpO1xuICAgICAgY29uc3QgdG9rZW4gPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKS5DeWJlclNpYXJhVG9rZW47XG4gICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJyAmJiB0b2tlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudG9rZW4uZW1pdCh0b2tlbik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbiJdfQ==
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0csT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQUVuRixNQUFNLG1CQUFtQixHQUFHLGtFQUFrRSxDQUFDO0FBQy9GLE1BQU0sa0JBQWtCLEdBQUcsc0VBQXNFLENBQUM7QUFDbEcsTUFBTSxxQkFBcUIsR0FBRyx5RUFBeUUsQ0FBQztBQUN4RyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUV0QyxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLENBQUMsR0FBRyxVQUF5RCxDQUFDO0lBQ3BFLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLHlCQUF5QjtRQUN6QiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLHlCQUF5QjtLQUNqQixDQUFDO0lBRVgsTUFBTSxRQUFRLEdBQUcsVUFBVTtTQUN4QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QixJQUFJLENBQUMsQ0FBQyxLQUFL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IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2lhcmFTaGllbGRMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0SW5pdENhcHRjaGFGbiwgZ2V0U2lhcmFTaGllbGRHbG9iYWxzIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQuZ2xvYmFscyc7XG5pbXBvcnQgeyBpbnN0YWxsVmVuZG9yUnVudGltZUVycm9yU3VwcHJlc3Npb24sIHN1cHByZXNzVmVuZG9yQ29uc29sZVdpbmRvdyB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLWxvZy11dGlscyc7XG5pbXBvcnQgeyBpbnN0YWxsQ2FwdGNoYVN1Ym1pdEd1YXJkIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtc3VibWl0LWd1YXJkJztcbmltcG9ydCB7IHByZXBhcmVTY3JpcHROb25jZSB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscyc7XG5pbXBvcnQgeyBpbnN0YWxsVmVuZG9yQ2hhbGxlbmdlUnVudGltZVBhdGNoIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtdmVuZG9yLXJ1bnRpbWUnO1xuXG5jb25zdCBKUVVFUllfRkFMTEJBQ0tfU1JDID0gJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbS9jYXBjaGEtdGVtcGxlL2pzL2pxdWVyeS5taW4uanMnO1xuY29uc3QgQ0FQVENIQV9TQ1JJUFRfU1JDID0gJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbS9DYXB0Y2hhRm9ybWF0ZS9DYXB0Y2hhUmVzb3VyY2VzLmpzJztcbmNvbnN0IFZBTElEQVRJT05fU0NSSVBUX1NSQyA9ICdodHRwczovL2VtYmVkLm15Y3liZXJzaWFyYS5jb20vQ2FwdGNoYUZvcm1hdGUvU2lhcmFTaGllbGRfVmFsaWRhdGlvbi5qcyc7XG5jb25zdCBDQVBUQ0hBX1JFQURZX1RJTUVPVVRfTVMgPSA4MDAwO1xuXG5mdW5jdGlvbiBlbnN1cmVBY2Nlc3NpYmlsaXR5UG9wdXBBbGlhc2VzKCk6IHZvaWQge1xuICBjb25zdCBnID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBhbGlhc05hbWVzID0gW1xuICAgICdSZW1vdmVBY2Nlc2liaWxpdHlQb3B1cCcsXG4gICAgJ19SZW1vdmVBY2Nlc2liaWxpdHlQb3B1cCcsXG4gICAgJ1JlbW92ZUFjY2VzaWJsaXR5UG9wdXAnLFxuICAgICdfUmVtb3ZlQWNjZXNpYmxpdHlQb3B1cCcsXG4gIF0gYXMgY29uc3Q7XG5cbiAgY29uc3QgZXhpc3RpbmcgPSBhbGlhc05hbWVzXG4gICAgLm1hcCgobmFtZSkgPT4gZ1tuYW1lXSlcbiAgICAuZmluZCgodmFsdWUpOiB2YWx1ZSBpcyAoKSA9PiB2b2lkID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyk7XG5cbiAgY29uc3Qgc3RhYmxlRm4gPSBleGlzdGluZyA/PyAoKCkgPT4gdW5kZWZpbmVkKTtcbiAgZm9yIChjb25zdCBuYW1lIG9mIGFsaWFzTmFtZXMpIHtcbiAgICBnW25hbWVdID0gc3RhYmxlRm47XG4gIH1cbn1cblxuZnVuY3Rpb24gcnVuSW5Sb290Wm9uZTxUPihmbjogKCkgPT4gVCk6IFQge1xuICBjb25zdCBnID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIHsgWm9uZT86IHsgcm9vdD86IHsgcnVuPzogPFU+KGNiOiAoKSA9PiBVKSA9PiBVIH0gfSB9O1xuICBjb25zdCB6b25lUm9vdFJ1biA9IGcuWm9uZT8ucm9vdD8ucnVuO1xuICBpZiAodHlwZW9mIHpvbmVSb290UnVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHpvbmVSb290UnVuLmNhbGwoZy5ab25lPy5yb290LCBmbikgYXMgVDtcbiAgfVxuICByZXR1cm4gZm4oKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWFyYVNoaWVsZEluaXRPcHRpb25zIHtcbiAgLyoqIFNpYXJhU2hpZWxkIHB1YmxpYyBrZXkuIFVzZSBcIlRFU1QtQ1lCRVJTSUFSQVwiIGZvciBzdGFnaW5nL2RldmVsb3BtZW50LiAqL1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgLyoqIExvYWRzIGpRdWVyeSBiZWZvcmUgU2lhcmFTaGllbGQgc2NyaXB0LiBEZWZhdWx0IGlzIHRydWUgZm9yIGVhc2llciBpbnRlZ3JhdGlvbi4gU2V0IHRvIGZhbHNlIG9ubHkgaWYgeW91ciBwYWdlIGFscmVhZHkgaW5jbHVkZXMgalF1ZXJ5LiAqL1xuICBsb2FkSlF1ZXJ5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENTUCBub25jZSB2YWx1ZSAod2l0aG91dCB0aGUgYCdub25jZS0nYCBwcmVmaXgpLlxuICAgKiBJZiBvbWl0dGVkLCB3ZSBhdHRlbXB0IHRvIHJlc29sdmUgaXQgZnJvbSBleGlzdGluZyBgc2NyaXB0W25vbmNlXWAgb3IgYG1ldGFbbmFtZT1cImNzcC1ub25jZVwiXWAuXG4gICAqL1xuICBjc3BOb25jZT86IHN0cmluZztcbiAgLyoqIFNldCB0cnVlIG9ubHkgd2hlbiBhY3RpdmVseSBkZWJ1Z2dpbmcgdmVuZG9yL3J1bnRpbWUgaW50ZXJuYWxzIGluIGJyb3dzZXIgY29uc29sZS4gKi9cbiAgYWxsb3dWZW5kb3JDb25zb2xlTG9ncz86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpYXJhLXNoaWVsZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cIlNpYXJhU2hpZWxkXCI+PC9kaXY+YCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU2lhcmFTaGllbGRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljS2V5ITogc3RyaW5nO1xuICBASW5wdXQoKSBsb2FkSlF1ZXJ5ID0gdHJ1ZTtcbiAgQElucHV0KCkgY3NwTm9uY2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFsbG93VmVuZG9yQ29uc29sZUxvZ3MgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgYEN5YmVyU2lhcmFUb2tlbmAgcmlnaHQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGBjaGVja0NhcHRjaGEoKWAuXG4gICAqL1xuICBAT3V0cHV0KCkgdG9rZW4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvYWRlcjogU2lhcmFTaGllbGRMb2FkZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCh7XG4gICAgICBwdWJsaWNLZXk6IHRoaXMucHVibGljS2V5LFxuICAgICAgbG9hZEpRdWVyeTogdGhpcy5sb2FkSlF1ZXJ5LFxuICAgICAgY3NwTm9uY2U6IHRoaXMuY3NwTm9uY2UsXG4gICAgICBhbGxvd1ZlbmRvckNvbnNvbGVMb2dzOiB0aGlzLmFsbG93VmVuZG9yQ29uc29sZUxvZ3MsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBpbml0KG9wdGlvbnM6IFNpYXJhU2hpZWxkSW5pdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkgcmV0dXJuO1xuXG4gICAgLy8gRW5zdXJlIHRoZSBob3N0IGVsZW1lbnQgaXMgaW4gRE9NIGJlZm9yZSBzY3JpcHRzIHJ1bi5cbiAgICB2b2lkIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O1xuICAgIGluc3RhbGxDYXB0Y2hhU3VibWl0R3VhcmQoKTtcblxuICAgIGlmICghb3B0aW9ucy5wdWJsaWNLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2lhcmFTaGllbGRDb21wb25lbnQ6IHB1YmxpY0tleSBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIENTUCBub25jZSBwcm9wYWdhdGlvbiBzbyBhbnkgdmVuZG9yLWluamVjdGVkIGNoaWxkIHNjcmlwdHMgZ2V0IHRoZSBzYW1lIG5vbmNlLlxuICAgIGNvbnN0IGRvY3VtZW50UmVmID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA/PyBnbG9iYWxUaGlzLmRvY3VtZW50ID8/IG51bGw7XG4gICAgY29uc3Qgbm9uY2UgPSBwcmVwYXJlU2NyaXB0Tm9uY2UoZG9jdW1lbnRSZWYsIG9wdGlvbnMuY3NwTm9uY2UpO1xuICAgIGlmICgob3B0aW9ucy5sb2FkSlF1ZXJ5ID8/IHRydWUpICYmICF0aGlzLmlzSlF1ZXJ5QWxyZWFkeUF2YWlsYWJsZSgpKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRlci5sb2FkU2NyaXB0KEpRVUVSWV9GQUxMQkFDS19TUkMsIHsgbm9uY2UgfSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5sb2FkZXIubG9hZFNjcmlwdChDQVBUQ0hBX1NDUklQVF9TUkMsIHsgbm9uY2UgfSk7XG4gICAgYXdhaXQgdGhpcy5sb2FkZXIubG9hZFNjcmlwdChWQUxJREFUSU9OX1NDUklQVF9TUkMsIHsgbm9uY2UgfSk7XG5cbiAgICBjb25zdCBnID0gZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCk7XG4gICAgZW5zdXJlQWNjZXNzaWJpbGl0eVBvcHVwQWxpYXNlcygpO1xuICAgIHRoaXMucHJldmVudER1cGxpY2F0ZVZhbGlkYXRpb25Cb290c3RyYXAoZyk7XG4gICAgaW5zdGFsbFZlbmRvckNoYWxsZW5nZVJ1bnRpbWVQYXRjaCgpO1xuICAgIGNvbnN0IGluaXRDYXB0Y2hhRm4gPSBnZXRJbml0Q2FwdGNoYUZuKGcpO1xuICAgIGlmICghaW5pdENhcHRjaGFGbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnU2lhcmFTaGllbGQ6IEluaXRDYXB0Y2hhKCkgaXMgbm90IGF2YWlsYWJsZSBhZnRlciBsb2FkaW5nIHNjcmlwdHMuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLmFsbG93VmVuZG9yQ29uc29sZUxvZ3MpIHtcbiAgICAgIHN1cHByZXNzVmVuZG9yQ29uc29sZVdpbmRvdygpO1xuICAgICAgaW5zdGFsbFZlbmRvclJ1bnRpbWVFcnJvclN1cHByZXNzaW9uKCk7XG4gICAgfVxuICAgIHJ1bkluUm9vdFpvbmUoKCkgPT4gaW5pdENhcHRjaGFGbihvcHRpb25zLnB1YmxpY0tleSkpO1xuICAgIGF3YWl0IHRoaXMud2FpdEZvckNoZWNrQ2FwdGNoYUFwaSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVjdCBwcmVsb2FkZWQgalF1ZXJ5IGZyb20gZ2xvYmFsIG9iamVjdCBvciBhbiBleGlzdGluZyBzY3JpcHQgdGFnLlxuICAgKi9cbiAgcHJpdmF0ZSBpc0pRdWVyeUFscmVhZHlBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZyA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpO1xuICAgIGlmICh0eXBlb2YgZy5qUXVlcnkgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGcuJCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmdKcXVlcnlTY3JpcHQgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTFNjcmlwdEVsZW1lbnQ+KFxuICAgICAgJ3NjcmlwdFtzcmMqPVwianF1ZXJ5XCJdJyxcbiAgICApO1xuICAgIHJldHVybiBCb29sZWFuKGV4aXN0aW5nSnF1ZXJ5U2NyaXB0KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudER1cGxpY2F0ZVZhbGlkYXRpb25Cb290c3RyYXAoZzogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0U2lhcmFTaGllbGRHbG9iYWxzPik6IHZvaWQge1xuICAgIGNvbnN0IG9yaWdpbmFsQXBwZW5kVmFsaWRhdGlvbiA9IGcuQXBwZW5kVmFsaWRhdGlvbkpTO1xuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxBcHBlbmRWYWxpZGF0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZy5BcHBlbmRWYWxpZGF0aW9uSlMgPSAoKSA9PiB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MU2NyaXB0RWxlbWVudD4oXG4gICAgICAgIGBzY3JpcHRbc3JjPVwiJHtWQUxJREFUSU9OX1NDUklQVF9TUkN9XCJdYCxcbiAgICAgICk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBvcmlnaW5hbEFwcGVuZFZhbGlkYXRpb24oKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3YWl0Rm9yQ2hlY2tDYXB0Y2hhQXBpKHRpbWVvdXRNcyA9IENBUFRDSEFfUkVBRFlfVElNRU9VVF9NUyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gICAgd2hpbGUgKERhdGUubm93KCkgLSBzdGFydGVkQXQgPCB0aW1lb3V0TXMpIHtcbiAgICAgIGlmIChnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKS5DaGVja0NhcHRjaGEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwKSk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignU2lhcmFTaGllbGQ6IENoZWNrQ2FwdGNoYSgpIHdhcyBub3QgYXZhaWxhYmxlIHdpdGhpbiB0aW1lb3V0LicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBnbG9iYWwgYENoZWNrQ2FwdGNoYSgpYCBmcm9tIFNpYXJhU2hpZWxkIHNjcmlwdC5cbiAgICogUmV0dXJucyB0cnVlIHdoZW4gY2FwdGNoYSBpcyB2YWxpZDsgZW1pdHMgdG9rZW4gaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgY2hlY2tDYXB0Y2hhKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGcgPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKTtcbiAgICBpZiAoIWcuQ2hlY2tDYXB0Y2hhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpYXJhU2hpZWxkOiBDaGVja0NhcHRjaGEoKSBpcyBub3QgYXZhaWxhYmxlLiBEaWQgaW5pdCgpIHJ1bj8nKTtcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ1Rva2VuID0gdHlwZW9mIGcuQ3liZXJTaWFyYVRva2VuID09PSAnc3RyaW5nJyAmJiBnLkN5YmVyU2lhcmFUb2tlbi5sZW5ndGggPiAwID8gZy5DeWJlclNpYXJhVG9rZW4gOiB1bmRlZmluZWQ7XG4gICAgaWYgKGV4aXN0aW5nVG9rZW4pIHtcbiAgICAgIHRoaXMudG9rZW4uZW1pdChleGlzdGluZ1Rva2VuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hbGxvd1ZlbmRvckNvbnNvbGVMb2dzKSB7XG4gICAgICBzdXBwcmVzc1ZlbmRvckNvbnNvbGVXaW5kb3coKTtcbiAgICB9XG4gICAgY29uc3Qgb2sgPSBnLkNoZWNrQ2FwdGNoYSgpO1xuICAgIGlmIChvayAmJiB0eXBlb2YgZy5DeWJlclNpYXJhVG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnRva2VuLmVtaXQoZy5DeWJlclNpYXJhVG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gb2s7XG4gIH1cblxuICAvKipcbiAgICogQXN5bmMtZnJpZW5kbHkgY2FwdGNoYSB2YWxpZGF0aW9uIHRvIGF2b2lkIGZpcnN0LWNsaWNrIHRpbWluZyBpc3N1ZXMuXG4gICAqIFBlcmZvcm1zIG9uZSB2YWxpZGF0aW9uIGNhbGwgYW5kIHdhaXRzIGZvciB0b2tlbiBwcm9wYWdhdGlvbi5cbiAgICovXG4gIGFzeW5jIGNoZWNrQ2FwdGNoYUFzeW5jKG9wdGlvbnM/OiB7XG4gICAgdGltZW91dE1zPzogbnVtYmVyO1xuICAgIHBvbGxJbnRlcnZhbE1zPzogbnVtYmVyO1xuICAgIGJlZm9yZUNoZWNrRGVsYXlNcz86IG51bWJlcjtcbiAgICByZXRyeU9uRmFsc2VNcz86IG51bWJlcjtcbiAgICBmYWxzZVJlc3VsdFRva2VuV2FpdE1zPzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdGltZW91dE1zID0gb3B0aW9ucz8udGltZW91dE1zID8/IDIwMDA7XG4gICAgY29uc3QgcG9sbEludGVydmFsTXMgPSBvcHRpb25zPy5wb2xsSW50ZXJ2YWxNcyA/PyAxMjA7XG4gICAgY29uc3QgYmVmb3JlQ2hlY2tEZWxheU1zID0gb3B0aW9ucz8uYmVmb3JlQ2hlY2tEZWxheU1zID8/IDE0MDtcbiAgICBjb25zdCByZXRyeU9uRmFsc2VNcyA9IG9wdGlvbnM/LnJldHJ5T25GYWxzZU1zID8/IDA7XG4gICAgY29uc3QgZmFsc2VSZXN1bHRUb2tlbldhaXRNcyA9IG9wdGlvbnM/LmZhbHNlUmVzdWx0VG9rZW5XYWl0TXMgPz8gOTAwO1xuICAgIGNvbnN0IGV4aXN0aW5nVG9rZW4gPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKS5DeWJlclNpYXJhVG9rZW47XG4gICAgaWYgKHR5cGVvZiBleGlzdGluZ1Rva2VuID09PSAnc3RyaW5nJyAmJiBleGlzdGluZ1Rva2VuLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudG9rZW4uZW1pdChleGlzdGluZ1Rva2VuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBiZWZvcmVDaGVja0RlbGF5TXMpKTtcbiAgICBsZXQgb2sgPSB0aGlzLmNoZWNrQ2FwdGNoYSgpO1xuICAgIC8vIE9wdGlvbmFsIHJldHJ5IGZvciBpbnRlZ3JhdGlvbnMgdGhhdCBvYnNlcnZlIGxhdGUgdmVuZG9yLXN0YXRlIHNldHRsaW5nLlxuICAgIGlmICghb2sgJiYgcmV0cnlPbkZhbHNlTXMgPiAwKSB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCByZXRyeU9uRmFsc2VNcykpO1xuICAgICAgb2sgPSB0aGlzLmNoZWNrQ2FwdGNoYSgpO1xuICAgIH1cbiAgICBpZiAoIW9rKSB7XG4gICAgICAvLyBTb21lIHZlbmRvciBmbG93cyByZXR1cm4gZmFsc2UgZmlyc3QsIHRoZW4gc2V0IHRva2VuIHNob3J0bHkgYWZ0ZXIuXG4gICAgICBjb25zdCBmYWxzZVN0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gICAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIGZhbHNlU3RhcnRlZEF0IDwgZmFsc2VSZXN1bHRUb2tlbldhaXRNcykge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBwb2xsSW50ZXJ2YWxNcykpO1xuICAgICAgICBjb25zdCB0b2tlbiA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpLkN5YmVyU2lhcmFUb2tlbjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgJiYgdG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMudG9rZW4uZW1pdCh0b2tlbik7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBnID0gZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCk7XG4gICAgaWYgKHR5cGVvZiBnLkN5YmVyU2lhcmFUb2tlbiA9PT0gJ3N0cmluZycgJiYgZy5DeWJlclNpYXJhVG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCA8IHRpbWVvdXRNcykge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgcG9sbEludGVydmFsTXMpKTtcbiAgICAgIGNvbnN0IHRva2VuID0gZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCkuQ3liZXJTaWFyYVRva2VuO1xuICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgJiYgdG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnRva2VuLmVtaXQodG9rZW4pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4iXX0=
@@ -375,6 +375,9 @@ function resolveCspNonce(documentRef, explicitNonce) {
375
375
  if (resolvedExplicitNonce) {
376
376
  return resolvedExplicitNonce;
377
377
  }
378
+ if (!documentRef) {
379
+ return undefined;
380
+ }
378
381
  const scriptWithNonce = documentRef.querySelector('script[nonce]');
379
382
  const nonceFromScript = normalizeNonce(scriptWithNonce?.getAttribute('nonce') ?? scriptWithNonce?.nonce);
380
383
  if (nonceFromScript) {
@@ -389,12 +392,17 @@ function prepareScriptNonce(documentRef, explicitNonce) {
389
392
  if (resolvedNonce) {
390
393
  // DOM patching is only needed when a CSP nonce must be propagated.
391
394
  patchDynamicScriptInsertion();
392
- patchState.nonceByDocument.set(documentRef, resolvedNonce);
393
- ensureNonceMutationObserver(documentRef);
395
+ const effectiveDocumentRef = documentRef ?? globalThis.document;
396
+ if (effectiveDocumentRef) {
397
+ patchState.nonceByDocument.set(effectiveDocumentRef, resolvedNonce);
398
+ ensureNonceMutationObserver(effectiveDocumentRef);
399
+ }
394
400
  }
395
401
  else {
396
- patchState.nonceByDocument.delete(documentRef);
397
- teardownNonceMutationObserver(documentRef);
402
+ if (documentRef) {
403
+ patchState.nonceByDocument.delete(documentRef);
404
+ teardownNonceMutationObserver(documentRef);
405
+ }
398
406
  }
399
407
  return resolvedNonce;
400
408
  }
@@ -615,7 +623,7 @@ class SiaraShieldComponent {
615
623
  throw new Error('SiaraShieldComponent: publicKey is required.');
616
624
  }
617
625
  // Prepare CSP nonce propagation so any vendor-injected child scripts get the same nonce.
618
- const documentRef = this.host.nativeElement.ownerDocument;
626
+ const documentRef = this.host.nativeElement.ownerDocument ?? globalThis.document ?? null;
619
627
  const nonce = prepareScriptNonce(documentRef, options.cspNonce);
620
628
  if ((options.loadJQuery ?? true) && !this.isJQueryAlreadyAvailable()) {
621
629
  await this.loader.loadScript(JQUERY_FALLBACK_SRC$1, { nonce });
@@ -1 +1 @@
1
- {"version":3,"file":"siarashield_workspace.mjs","sources":["../../../projects/siarashield-workspace/src/lib/siara-shield.globals.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-log-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-submit-guard.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-script-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-vendor-runtime.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-loader.service.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.component.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-csp.ts","../../../projects/siarashield-workspace/src/public-api.ts","../../../projects/siarashield-workspace/src/siarashield_workspace.ts"],"sourcesContent":["export type InitCaptchaFn = (publicKey: string) => void;\nexport type CheckCaptchaFn = () => boolean;\n\nexport interface SiaraShieldGlobals {\n initCaptcha?: InitCaptchaFn;\n InitCaptcha?: InitCaptchaFn;\n CheckCaptcha?: CheckCaptchaFn;\n AppendValidationJS?: () => void;\n CyberSiaraToken?: string;\n jQuery?: unknown;\n $?: unknown;\n}\n\nexport function getSiaraShieldGlobals(): SiaraShieldGlobals {\n return (globalThis as unknown as { [k: string]: unknown }) as SiaraShieldGlobals;\n}\n\nexport function getInitCaptchaFn(g: SiaraShieldGlobals): InitCaptchaFn | undefined {\n return g.initCaptcha ?? g.InitCaptcha;\n}\n","interface ConsolePatchState {\n depth: number;\n originalLog: Console['log'];\n originalInfo: Console['info'];\n originalWarn: Console['warn'];\n originalDebug: Console['debug'];\n originalError: Console['error'];\n}\n\ninterface VendorRuntimeErrorPatchState {\n installed: boolean;\n originalOnError: OnErrorEventHandler | null;\n}\n\nconst CONSOLE_PATCH_STATE_KEY = '__siaraShieldConsolePatchState__';\nconst VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY = '__siaraShieldVendorRuntimeErrorPatchState__';\nconst DEFAULT_SUPPRESS_WINDOW_MS = 2000;\n\nfunction getConsolePatchState(): ConsolePatchState {\n const globalState = globalThis as typeof globalThis & {\n [CONSOLE_PATCH_STATE_KEY]?: ConsolePatchState;\n };\n\n if (!globalState[CONSOLE_PATCH_STATE_KEY]) {\n globalState[CONSOLE_PATCH_STATE_KEY] = {\n depth: 0,\n originalLog: console.log.bind(console),\n originalInfo: console.info.bind(console),\n originalWarn: console.warn.bind(console),\n originalDebug: console.debug.bind(console),\n originalError: console.error.bind(console),\n };\n }\n\n return globalState[CONSOLE_PATCH_STATE_KEY];\n}\n\nfunction muteConsole(): void {\n const patchState = getConsolePatchState();\n patchState.depth += 1;\n if (patchState.depth > 1) return;\n\n console.log = () => undefined;\n console.info = () => undefined;\n console.warn = () => undefined;\n console.debug = () => undefined;\n console.error = (...args: unknown[]) => {\n const normalized = args\n .map((arg) => (typeof arg === 'string' ? arg : arg instanceof Error ? arg.message : ''))\n .join(' ')\n .toLowerCase();\n\n // Known noisy upstream vendor runtime error path from CaptchaResources.js bootstrap.\n if (\n normalized.includes('an errorevent with no error occurred') ||\n normalized.includes('script error') ||\n normalized.includes('captcharesources.js') ||\n normalized.includes('getcybersiara')\n ) {\n return;\n }\n\n patchState.originalError(...args);\n };\n}\n\nfunction unmuteConsole(): void {\n const patchState = getConsolePatchState();\n if (patchState.depth === 0) return;\n patchState.depth -= 1;\n if (patchState.depth > 0) return;\n\n console.log = patchState.originalLog;\n console.info = patchState.originalInfo;\n console.warn = patchState.originalWarn;\n console.debug = patchState.originalDebug;\n console.error = patchState.originalError;\n}\n\nexport function suppressVendorConsoleWindow(windowMs = DEFAULT_SUPPRESS_WINDOW_MS): void {\n muteConsole();\n setTimeout(() => {\n unmuteConsole();\n }, windowMs);\n}\n\nfunction getVendorRuntimeErrorPatchState(): VendorRuntimeErrorPatchState {\n const globalState = globalThis as typeof globalThis & {\n [VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]?: VendorRuntimeErrorPatchState;\n };\n\n if (!globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]) {\n globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY] = {\n installed: false,\n originalOnError: globalThis.onerror ?? null,\n };\n }\n\n return globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY];\n}\n\nfunction isLikelyVendorScriptRuntimeError(message: unknown, source: unknown): boolean {\n const normalizedMessage = String(message ?? '').trim().toLowerCase();\n const normalizedSource = String(source ?? '').trim().toLowerCase();\n const fromSiaraHost =\n normalizedSource.includes('embed.mycybersiara.com') || normalizedSource.includes('embedcdn.mycybersiara.com');\n const isKnownVendorDomError =\n normalizedMessage.includes(\"cannot read properties of null (reading 'removechild')\") &&\n (normalizedSource.includes('jquery') || normalizedSource.includes('captcharesources'));\n\n if (fromSiaraHost) return true;\n if (isKnownVendorDomError) return true;\n return normalizedMessage === 'script error.' || normalizedMessage === 'script error';\n}\n\n/**\n * Suppresses noisy cross-origin vendor runtime script errors so Angular does not\n * surface them as unhandled `ErrorEvent` crashes in the console.\n */\nexport function installVendorRuntimeErrorSuppression(): void {\n const patchState = getVendorRuntimeErrorPatchState();\n if (patchState.installed) return;\n\n const previousOnError = patchState.originalOnError;\n globalThis.onerror = (message, source, lineno, colno, error) => {\n if (isLikelyVendorScriptRuntimeError(message, source)) {\n return true;\n }\n\n if (typeof previousOnError === 'function') {\n return previousOnError.call(globalThis, message, source, lineno, colno, error);\n }\n\n return false;\n };\n\n patchState.installed = true;\n}\n\n","const SUBMIT_GUARD_STATE_KEY = '__siaraShieldSubmitGuardInstalled__';\nconst SYNTHETIC_CLICK_GUARD_WINDOW_MS = 1200;\n\nexport function installCaptchaSubmitGuard(): void {\n const globalState = globalThis as typeof globalThis & {\n [SUBMIT_GUARD_STATE_KEY]?: boolean;\n };\n\n if (globalState[SUBMIT_GUARD_STATE_KEY]) return;\n\n const lastSyntheticClickByButton = new WeakMap<EventTarget, number>();\n\n document.addEventListener(\n 'click',\n (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n\n const submitButton = target.closest('.CaptchaSubmit');\n if (!submitButton) return;\n\n // Vendor runtime can emit synthetic clicks on .CaptchaSubmit.\n // Allow one synthetic click (needed for vendor auto-submit) but block rapid duplicates.\n if (!event.isTrusted) {\n const now = Date.now();\n const lastSyntheticClickAt = lastSyntheticClickByButton.get(submitButton) ?? 0;\n if (now - lastSyntheticClickAt < SYNTHETIC_CLICK_GUARD_WINDOW_MS) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n lastSyntheticClickByButton.set(submitButton, now);\n }\n },\n true,\n );\n\n globalState[SUBMIT_GUARD_STATE_KEY] = true;\n}\n\n","type ScriptStatus = 'loading' | 'loaded' | 'error';\n\nexport interface ScriptLoadOptions {\n nonce?: string;\n}\n\ninterface DynamicScriptNoncePatchState {\n nonceByDocument: WeakMap<Document, string>;\n observerByDocument: WeakMap<Document, MutationObserver>;\n inlineCaptchaScriptByDocument: WeakMap<Document, Set<string>>;\n patched: boolean;\n}\n\nconst SCRIPT_STATUS_BY_DOCUMENT = new WeakMap<Document, Map<string, ScriptStatus>>();\nconst SCRIPT_PENDING_BY_DOCUMENT = new WeakMap<Document, Map<string, Promise<void>>>();\nconst DYNAMIC_SCRIPT_NONCE_STATE_KEY = '__siaraShieldDynamicScriptNonceState__';\n\nfunction getStatusBySrc(documentRef: Document): Map<string, ScriptStatus> {\n let statusBySrc = SCRIPT_STATUS_BY_DOCUMENT.get(documentRef);\n if (!statusBySrc) {\n statusBySrc = new Map<string, ScriptStatus>();\n SCRIPT_STATUS_BY_DOCUMENT.set(documentRef, statusBySrc);\n }\n\n return statusBySrc;\n}\n\nfunction getPendingBySrc(documentRef: Document): Map<string, Promise<void>> {\n let pendingBySrc = SCRIPT_PENDING_BY_DOCUMENT.get(documentRef);\n if (!pendingBySrc) {\n pendingBySrc = new Map<string, Promise<void>>();\n SCRIPT_PENDING_BY_DOCUMENT.set(documentRef, pendingBySrc);\n }\n\n return pendingBySrc;\n}\n\nfunction getDynamicScriptNoncePatchState(): DynamicScriptNoncePatchState {\n const globalState = globalThis as typeof globalThis & {\n [DYNAMIC_SCRIPT_NONCE_STATE_KEY]?: DynamicScriptNoncePatchState;\n };\n\n if (!globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY]) {\n globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY] = {\n nonceByDocument: new WeakMap<Document, string>(),\n observerByDocument: new WeakMap<Document, MutationObserver>(),\n inlineCaptchaScriptByDocument: new WeakMap<Document, Set<string>>(),\n patched: false,\n };\n }\n\n return globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY];\n}\n\nfunction normalizeNonce(nonce?: string | null): string | undefined {\n const trimmed = nonce?.trim();\n return trimmed ? trimmed : undefined;\n}\n\nfunction isScriptElement(node: Node): node is HTMLScriptElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'script';\n}\n\nfunction isStyleElement(node: Node): node is HTMLStyleElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'style';\n}\n\nfunction isStylesheetLinkElement(node: Node): node is HTMLLinkElement {\n if (!(node instanceof Element) || node.tagName.toLowerCase() !== 'link') {\n return false;\n }\n const rel = (node.getAttribute('rel') ?? '').toLowerCase();\n return rel === 'stylesheet';\n}\n\nexport function applyScriptNonce(script: HTMLScriptElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n script.setAttribute('nonce', resolvedNonce);\n script.nonce = resolvedNonce;\n}\n\nfunction applyStyleNonce(style: HTMLStyleElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n style.setAttribute('nonce', resolvedNonce);\n style.nonce = resolvedNonce;\n}\n\nfunction applyLinkNonce(link: HTMLLinkElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n link.setAttribute('nonce', resolvedNonce);\n // `HTMLLinkElement.nonce` exists in modern browsers.\n (link as HTMLLinkElement & { nonce?: string }).nonce = resolvedNonce;\n}\n\nfunction applyNonceToNode(node: Node, nonce?: string): void {\n if (isScriptElement(node)) {\n applyScriptNonce(node, nonce);\n return;\n }\n if (isStyleElement(node)) {\n applyStyleNonce(node, nonce);\n return;\n }\n if (isStylesheetLinkElement(node)) {\n applyLinkNonce(node, nonce);\n }\n}\n\nfunction applyTrackedNonce(node: Node): void {\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return;\n }\n\n const nonce = getDynamicScriptNoncePatchState().nonceByDocument.get(documentRef);\n applyNonceToNode(node, nonce);\n}\n\nfunction getTrackedInlineCaptchaScripts(documentRef: Document): Set<string> {\n const patchState = getDynamicScriptNoncePatchState();\n let trackedScripts = patchState.inlineCaptchaScriptByDocument.get(documentRef);\n if (!trackedScripts) {\n trackedScripts = new Set<string>();\n patchState.inlineCaptchaScriptByDocument.set(documentRef, trackedScripts);\n }\n\n return trackedScripts;\n}\n\nfunction shouldSkipDuplicateInlineCaptchaScript(node: Node): boolean {\n if (!isScriptElement(node) || Boolean(node.src)) {\n return false;\n }\n\n const scriptBody = (node.textContent ?? '').trim();\n if (!scriptBody || !scriptBody.includes('currentLangCode')) {\n return false;\n }\n\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return false;\n }\n\n const trackedScripts = getTrackedInlineCaptchaScripts(documentRef);\n if (trackedScripts.has(scriptBody)) {\n return true;\n }\n\n trackedScripts.add(scriptBody);\n return false;\n}\n\nfunction walkAndApplyNonce(root: Node, nonce?: string): void {\n if (!nonce) return;\n\n // Fast path: root itself is nonceable.\n if (isScriptElement(root) || isStyleElement(root) || isStylesheetLinkElement(root)) {\n applyNonceToNode(root, nonce);\n return;\n }\n\n // Common path for jQuery: append DocumentFragment containing nodes created via HTML parsing.\n if (root instanceof Element || root instanceof DocumentFragment) {\n const nonceable = root.querySelectorAll?.('script,style,link[rel=\"stylesheet\"]') ?? [];\n for (const el of nonceable) {\n applyNonceToNode(el as unknown as Node, nonce);\n }\n }\n}\n\nfunction ensureNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.observerByDocument.get(documentRef)) {\n return;\n }\n\n const observer = new MutationObserver((records) => {\n const nonce = patchState.nonceByDocument.get(documentRef);\n if (!nonce) return;\n\n for (const record of records) {\n for (const node of record.addedNodes) {\n walkAndApplyNonce(node, nonce);\n }\n }\n });\n\n // Observe the full document because scripts can be injected into body/head by vendor/jQuery.\n const root = documentRef.documentElement ?? documentRef;\n observer.observe(root, { childList: true, subtree: true });\n patchState.observerByDocument.set(documentRef, observer);\n}\n\nfunction teardownNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n const observer = patchState.observerByDocument.get(documentRef);\n if (!observer) return;\n observer.disconnect();\n patchState.observerByDocument.delete(documentRef);\n}\n\nfunction injectNonceIntoHtml(html: string, nonce: string): string {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) return html;\n\n // If tag already includes nonce, leave it.\n const withNonceAttr = ` nonce=\"${resolvedNonce}\"`;\n\n const addNonceToTag = (tag: 'script' | 'style') => {\n const openTag = new RegExp(`<${tag}(\\\\s[^>]*?)?>`, 'gi');\n return (input: string) =>\n input.replace(openTag, (match) => {\n if (/[\\s\"']nonce\\s*=/.test(match)) return match;\n // Insert nonce before closing `>`\n return match.replace(/>$/, `${withNonceAttr}>`);\n });\n };\n\n // For link rel=stylesheet, add nonce when missing.\n const linkOpenTag = /<link\\b[^>]*>/gi;\n const addNonceToStylesheetLink = (input: string) =>\n input.replace(linkOpenTag, (match) => {\n if (/[\\s\"']nonce\\s*=/.test(match)) return match;\n if (!/\\brel\\s*=\\s*[\"']?stylesheet[\"']?/i.test(match)) return match;\n return match.replace(/>$/, `${withNonceAttr}>`);\n });\n\n return addNonceToStylesheetLink(addNonceToTag('style')(addNonceToTag('script')(html)));\n}\n\nfunction patchDynamicScriptInsertion(): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.patched) {\n return;\n }\n\n const originalAppendChild = Node.prototype.appendChild;\n const originalInsertBefore = Node.prototype.insertBefore;\n const originalReplaceChild = Node.prototype.replaceChild;\n const originalInsertAdjacentHTML = Element.prototype.insertAdjacentHTML;\n\n Node.prototype.appendChild = function <T extends Node>(node: T): T {\n // Vendor captcha injects an inline snippet with `currentLangCode` that crashes when appended twice.\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalAppendChild.call(this, node) as T;\n };\n\n Node.prototype.insertBefore = function <T extends Node>(node: T, child: Node | null): T {\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalInsertBefore.call(this, node, child) as T;\n };\n\n Node.prototype.replaceChild = function <T extends Node>(node: Node, child: T): T {\n applyTrackedNonce(node);\n return originalReplaceChild.call(this, node, child) as T;\n };\n\n Element.prototype.insertAdjacentHTML = function (position: InsertPosition, text: string): void {\n const documentRef = this.ownerDocument;\n const nonce = documentRef ? patchState.nonceByDocument.get(documentRef) : undefined;\n const patchedText = nonce ? injectNonceIntoHtml(text, nonce) : text;\n return originalInsertAdjacentHTML.call(this, position, patchedText);\n };\n\n patchState.patched = true;\n}\n\nexport function resolveCspNonce(documentRef: Document, explicitNonce?: string): string | undefined {\n const resolvedExplicitNonce = normalizeNonce(explicitNonce);\n if (resolvedExplicitNonce) {\n return resolvedExplicitNonce;\n }\n\n const scriptWithNonce = documentRef.querySelector<HTMLScriptElement>('script[nonce]');\n const nonceFromScript = normalizeNonce(scriptWithNonce?.getAttribute('nonce') ?? scriptWithNonce?.nonce);\n if (nonceFromScript) {\n return nonceFromScript;\n }\n\n const nonceMeta = documentRef.querySelector<HTMLMetaElement>('meta[name=\"csp-nonce\"]');\n return normalizeNonce(nonceMeta?.content);\n}\n\nexport function prepareScriptNonce(documentRef: Document, explicitNonce?: string): string | undefined {\n const resolvedNonce = resolveCspNonce(documentRef, explicitNonce);\n const patchState = getDynamicScriptNoncePatchState();\n\n if (resolvedNonce) {\n // DOM patching is only needed when a CSP nonce must be propagated.\n patchDynamicScriptInsertion();\n patchState.nonceByDocument.set(documentRef, resolvedNonce);\n ensureNonceMutationObserver(documentRef);\n } else {\n patchState.nonceByDocument.delete(documentRef);\n teardownNonceMutationObserver(documentRef);\n }\n\n return resolvedNonce;\n}\n\nexport function loadScript(documentRef: Document, src: string, options?: ScriptLoadOptions): Promise<void> {\n const nonce = normalizeNonce(options?.nonce);\n const statusBySrc = getStatusBySrc(documentRef);\n const pendingBySrc = getPendingBySrc(documentRef);\n const existing = documentRef.querySelector<HTMLScriptElement>(`script[src=\"${src}\"]`);\n\n if (existing) {\n applyScriptNonce(existing, nonce);\n const status = statusBySrc.get(src);\n if (status === 'loaded') {\n return Promise.resolve();\n }\n\n const pending = pendingBySrc.get(src);\n if (pending) {\n return pending;\n }\n\n return Promise.resolve();\n }\n\n statusBySrc.set(src, 'loading');\n\n const pending = new Promise<void>((resolve, reject) => {\n const script = documentRef.createElement('script');\n script.src = src;\n script.async = true;\n applyScriptNonce(script, nonce);\n script.onload = () => {\n statusBySrc.set(src, 'loaded');\n pendingBySrc.delete(src);\n resolve();\n };\n script.onerror = () => {\n statusBySrc.set(src, 'error');\n pendingBySrc.delete(src);\n reject(new Error(`Failed to load script: ${src}. Check CSP allowlist and nonce configuration.`));\n };\n documentRef.head.appendChild(script);\n });\n\n pendingBySrc.set(src, pending);\n return pending;\n}\n","import { getSiaraShieldGlobals } from './siara-shield.globals';\r\n\r\nconst VENDOR_RUNTIME_PATCH_KEY = '__siaraShieldVendorRuntimePatchInstalled__';\r\nconst VENDOR_TOKEN_BRIDGE_KEY = '__siaraShieldVendorTokenBridgeInstalled__';\r\nconst WRAPPED_FN_PREFIX = '__siaraShieldWrappedVendorFn__';\r\n\r\ntype VendorFnName = 'Open_Pluin' | 'Open_Plugin' | 'Open_Plugin_';\r\ntype OptionalVendorFnName = VendorFnName | 'OpenCaptchaSlid' | 'GetCyberSiara';\r\ntype VendorFn = (...args: unknown[]) => unknown;\r\n\r\nfunction isKnownVendorNullDomError(error: unknown): boolean {\r\n const msg = error instanceof Error ? error.message.toLowerCase() : String(error ?? '').toLowerCase();\r\n return (\r\n msg.includes(\"cannot read properties of null (reading 'style')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'queryselector')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'removechild')\")\r\n );\r\n}\r\n\r\nfunction runFallbackChallengeOpen(excluding: OptionalVendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const candidates: OptionalVendorFnName[] = ['OpenCaptchaSlid', 'GetCyberSiara', 'Open_Pluin', 'Open_Plugin', 'Open_Plugin_'];\r\n\r\n for (const name of candidates) {\r\n if (name === excluding) continue;\r\n const fn = globals[name];\r\n if (typeof fn !== 'function') continue;\r\n try {\r\n (fn as VendorFn)();\r\n return;\r\n } catch {\r\n // Try next candidate.\r\n }\r\n }\r\n}\r\n\r\nfunction wrapVendorOpenFunction(name: VendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const marker = `${WRAPPED_FN_PREFIX}${name}`;\r\n if (globals[marker] === true) return;\r\n\r\n const candidate = globals[name];\r\n if (typeof candidate !== 'function') return;\r\n\r\n const original = candidate as VendorFn;\r\n globals[name] = ((...args: unknown[]) => {\r\n try {\r\n return original(...args);\r\n } catch (error) {\r\n if (!isKnownVendorNullDomError(error)) {\r\n throw error;\r\n }\r\n\r\n // Vendor challenge opener hit a missing DOM node.\r\n // Try alternative open functions so challenge can still render.\r\n runFallbackChallengeOpen(name);\r\n return undefined;\r\n }\r\n }) as unknown;\r\n globals[marker] = true;\r\n}\r\n\r\nfunction installVerifiedSubmitTokenBridge(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_TOKEN_BRIDGE_KEY]?: boolean;\r\n JQuryName?: { ajax?: (...args: unknown[]) => unknown };\r\n $?: { ajax?: (...args: unknown[]) => unknown };\r\n CyberSiaraToken?: string;\r\n };\r\n if (globals[VENDOR_TOKEN_BRIDGE_KEY]) return;\r\n\r\n const patchAjaxOwner = (owner: { ajax?: (...args: unknown[]) => unknown } | undefined): void => {\r\n if (!owner || typeof owner.ajax !== 'function') return;\r\n const originalAjax = owner.ajax.bind(owner);\r\n\r\n owner.ajax = ((...args: unknown[]) => {\r\n const firstArg = args[0];\r\n if (!firstArg || typeof firstArg !== 'object') {\r\n return originalAjax(...args);\r\n }\r\n\r\n const options = firstArg as Record<string, unknown>;\r\n const url = String(options['url'] ?? '').toLowerCase();\r\n const originalSuccess = options['success'];\r\n if (!url.includes('/submitcaptcha/verifiedsubmit') || typeof originalSuccess !== 'function') {\r\n return originalAjax(options);\r\n }\r\n\r\n options['success'] = ((response: unknown, ...rest: unknown[]) => {\r\n const payload = response as { data?: unknown; Data?: unknown } | null;\r\n const maybeTokenRaw = payload?.data ?? payload?.Data;\r\n if (typeof maybeTokenRaw === 'string' && maybeTokenRaw.trim()) {\r\n globals.CyberSiaraToken = maybeTokenRaw.trim();\r\n }\r\n\r\n return (originalSuccess as (...fnArgs: unknown[]) => unknown)(response, ...rest);\r\n }) as unknown;\r\n\r\n return originalAjax(options);\r\n }) as typeof owner.ajax;\r\n };\r\n\r\n patchAjaxOwner(globals.$);\r\n patchAjaxOwner(globals.JQuryName);\r\n globals[VENDOR_TOKEN_BRIDGE_KEY] = true;\r\n}\r\n\r\nexport function installVendorChallengeRuntimePatch(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_RUNTIME_PATCH_KEY]?: boolean;\r\n };\r\n if (globals[VENDOR_RUNTIME_PATCH_KEY]) return;\r\n\r\n wrapVendorOpenFunction('Open_Pluin');\r\n wrapVendorOpenFunction('Open_Plugin');\r\n wrapVendorOpenFunction('Open_Plugin_');\r\n installVerifiedSubmitTokenBridge();\r\n globals[VENDOR_RUNTIME_PATCH_KEY] = true;\r\n}\r\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { loadScript, type ScriptLoadOptions } from './siara-shield-script-utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SiaraShieldLoaderService {\n constructor(@Inject(DOCUMENT) private readonly document: Document) {}\n\n loadScript(src: string, options?: ScriptLoadOptions): Promise<void> {\n return loadScript(this.document, src, options);\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { SiaraShieldLoaderService } from './siara-shield-loader.service';\nimport { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { prepareScriptNonce } from './siara-shield-script-utils';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nexport interface SiaraShieldInitOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /** Loads jQuery before SiaraShield script. Default is true for easier integration. Set to false only if your page already includes jQuery. */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\n@Component({\n selector: 'siara-shield',\n standalone: true,\n template: `<div class=\"SiaraShield\"></div>`,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SiaraShieldComponent implements AfterViewInit {\n @Input({ required: true }) publicKey!: string;\n @Input() loadJQuery = true;\n @Input() cspNonce?: string;\n @Input() allowVendorConsoleLogs = false;\n\n /**\n * Emits the current `CyberSiaraToken` right after a successful `checkCaptcha()`.\n */\n @Output() token = new EventEmitter<string>();\n\n private initialized = false;\n\n constructor(\n private readonly host: ElementRef<HTMLElement>,\n private readonly loader: SiaraShieldLoaderService,\n ) {}\n\n async ngAfterViewInit(): Promise<void> {\n await this.init({\n publicKey: this.publicKey,\n loadJQuery: this.loadJQuery,\n cspNonce: this.cspNonce,\n allowVendorConsoleLogs: this.allowVendorConsoleLogs,\n });\n }\n\n async init(options: SiaraShieldInitOptions): Promise<void> {\n if (this.initialized) return;\n\n // Ensure the host element is in DOM before scripts run.\n void this.host.nativeElement;\n installCaptchaSubmitGuard();\n\n if (!options.publicKey) {\n throw new Error('SiaraShieldComponent: publicKey is required.');\n }\n\n // Prepare CSP nonce propagation so any vendor-injected child scripts get the same nonce.\n const documentRef = this.host.nativeElement.ownerDocument;\n const nonce = prepareScriptNonce(documentRef, options.cspNonce);\n if ((options.loadJQuery ?? true) && !this.isJQueryAlreadyAvailable()) {\n await this.loader.loadScript(JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await this.loader.loadScript(CAPTCHA_SCRIPT_SRC, { nonce });\n await this.loader.loadScript(VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n this.preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await this.waitForCheckCaptchaApi();\n this.initialized = true;\n }\n\n /**\n * Detect preloaded jQuery from global object or an existing script tag.\n */\n private isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n 'script[src*=\"jquery\"]',\n );\n return Boolean(existingJqueryScript);\n }\n\n private preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n `script[src=\"${VALIDATION_SCRIPT_SRC}\"]`,\n );\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n }\n\n private async waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n }\n\n /**\n * Calls the global `CheckCaptcha()` from SiaraShield script.\n * Returns true when captcha is valid; emits token if available.\n */\n checkCaptcha(): boolean {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did init() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n this.token.emit(existingToken);\n return true;\n }\n\n if (!this.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n if (ok && typeof g.CyberSiaraToken === 'string') {\n this.token.emit(g.CyberSiaraToken);\n }\n return ok;\n }\n\n /**\n * Async-friendly captcha validation to avoid first-click timing issues.\n * Performs one validation call and waits for token propagation.\n */\n async checkCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n }): Promise<boolean> {\n const timeoutMs = options?.timeoutMs ?? 2000;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n this.token.emit(existingToken);\n return true;\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let ok = this.checkCaptcha();\n // Optional retry for integrations that observe late vendor-state settling.\n if (!ok && retryOnFalseMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n ok = this.checkCaptcha();\n }\n if (!ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n return false;\n }\n\n const g = getSiaraShieldGlobals();\n if (typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0) {\n return true;\n }\n\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n\n return true;\n }\n}\n\n","import { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { loadScript, prepareScriptNonce } from './siara-shield-script-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\n\nexport interface InitSiaraShieldOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /**\n * Loads jQuery before SiaraShield script.\n * Default is true for easier integration.\n * Set to false only if your site/app already loads jQuery.\n */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\nlet pending: Promise<void> | null = null;\nlet initialized = false;\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = document.querySelector<HTMLScriptElement>('script[src*=\"jquery\"]');\n return Boolean(existingJqueryScript);\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nfunction preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = document.querySelector<HTMLScriptElement>(`script[src=\"${VALIDATION_SCRIPT_SRC}\"]`);\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n}\n\nasync function waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n}\n\n/**\n * Drop-in initializer for SiaraShield.\n * - Loads required scripts (optionally jQuery)\n * - Calls global `initCaptcha(publicKey)`\n *\n * Requirements in your HTML/template:\n * - You must render: `<div class=\"SiaraShield\"></div>`\n */\nexport async function initSiaraShield(options: InitSiaraShieldOptions): Promise<void> {\n if (initialized) return;\n if (pending) return pending;\n\n if (!options?.publicKey) {\n throw new Error('initSiaraShield: publicKey is required.');\n }\n\n pending = (async () => {\n installCaptchaSubmitGuard();\n const nonce = prepareScriptNonce(document, options.cspNonce);\n if ((options.loadJQuery ?? true) && !isJQueryAlreadyAvailable()) {\n await loadScript(document, JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await loadScript(document, CAPTCHA_SCRIPT_SRC, { nonce });\n await loadScript(document, VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await waitForCheckCaptchaApi();\n initialized = true;\n })();\n\n try {\n await pending;\n } finally {\n // keep `pending` cached for subsequent callers\n }\n}\n\n/**\n * Calls global `CheckCaptcha()` and returns its boolean result.\n * If successful, returns `{ ok: true, token?: string }`.\n */\nexport function checkSiaraShieldCaptcha(options?: { allowVendorConsoleLogs?: boolean }): { ok: boolean; token?: string } {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did initSiaraShield() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n return { ok: true, token: existingToken };\n }\n\n if (!options?.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n const token = typeof g.CyberSiaraToken === 'string' ? g.CyberSiaraToken : undefined;\n return ok ? { ok: true, token } : { ok: false };\n}\n\n/**\n * Async-friendly captcha check to handle delayed token population.\n */\nexport async function checkSiaraShieldCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n}): Promise<{ ok: boolean; token?: string }> {\n const timeoutMs = options?.timeoutMs ?? 1200;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n return { ok: true, token: existingToken };\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let firstCheck = checkSiaraShieldCaptcha(); // one API call only\n if (!firstCheck.ok && retryOnFalseMs > 0) {\n // Optional retry for integrations that observe late vendor-state settling.\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n firstCheck = checkSiaraShieldCaptcha();\n }\n if (!firstCheck.ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n return firstCheck;\n }\n if (firstCheck.token) return firstCheck;\n\n const startedAt = Date.now();\n // Token can be assigned slightly after successful verification.\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n\n return { ok: true };\n}\n\n","export interface SiaraShieldCspOptions {\n /** Server-generated nonce value without the `'nonce-'` prefix. */\n nonce?: string;\n /** Optional if the customer still loads jQuery from Google's CDN. */\n includeGoogleApis?: boolean;\n /** Include `script-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineScript?: boolean;\n /** Include `style-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineStyle?: boolean;\n}\n\nexport type SiaraShieldCspDirectives = Record<string, string[]>;\n\nconst SELF = \"'self'\";\nconst DATA = 'data:';\nconst UNSAFE_INLINE = \"'unsafe-inline'\";\n\nconst SCRIPT_HOSTS = ['https://embedcdn.mycybersiara.com', 'https://embed.mycybersiara.com'] as const;\nconst OPTIONAL_SCRIPT_HOSTS = ['https://ajax.googleapis.com'] as const;\nconst CONNECT_HOSTS = ['https://embed.mycybersiara.com', 'https://embedcdn.mycybersiara.com'] as const;\nconst STYLE_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://mycybersiara.com',\n 'https://fonts.googleapis.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst FONT_HOSTS = [\n 'https://fonts.gstatic.com',\n 'https://mycybersiara.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst IMG_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://embedcdn.mycybersiara.com',\n 'https://mycybersiara.com',\n] as const;\n\nfunction unique(values: Array<string | undefined>): string[] {\n return [...new Set(values.filter((value): value is string => Boolean(value && value.trim())))];\n}\n\nfunction nonceSource(nonce?: string): string | undefined {\n return nonce ? `'nonce-${nonce}'` : undefined;\n}\n\nfunction serializeDirective(name: string, values: string[]): string {\n return values.length > 0 ? `${name} ${values.join(' ')}` : name;\n}\n\nfunction parsePolicy(policy: string): Map<string, string[]> {\n const directives = new Map<string, string[]>();\n\n for (const rawDirective of policy.split(';')) {\n const directive = rawDirective.trim();\n if (!directive) {\n continue;\n }\n\n const parts = directive.split(/\\s+/).filter(Boolean);\n const [name, ...values] = parts;\n if (!name) {\n continue;\n }\n\n directives.set(name, values);\n }\n\n return directives;\n}\n\nexport function getSiaraShieldCspDirectives(options?: SiaraShieldCspOptions): SiaraShieldCspDirectives {\n const includeGoogleApis = options?.includeGoogleApis ?? false;\n // Default to strict/safe CSP. Customers can explicitly opt-in if they accept the risk.\n const includeUnsafeInlineScript = options?.includeUnsafeInlineScript ?? false;\n const includeUnsafeInlineStyle = options?.includeUnsafeInlineStyle ?? false;\n const nonce = nonceSource(options?.nonce);\n const scriptHosts = includeGoogleApis ? [...SCRIPT_HOSTS, ...OPTIONAL_SCRIPT_HOSTS] : [...SCRIPT_HOSTS];\n const styleSources = unique([SELF, nonce, ...STYLE_HOSTS]);\n\n return {\n 'default-src': unique([SELF]),\n 'script-src': unique([SELF, nonce, ...scriptHosts, includeUnsafeInlineScript ? UNSAFE_INLINE : undefined]),\n 'script-src-elem': unique([SELF, nonce, ...scriptHosts]),\n 'connect-src': unique([SELF, ...CONNECT_HOSTS]),\n 'img-src': unique([SELF, DATA, ...IMG_HOSTS]),\n /**\n * CSP note:\n * - A nonce allows `<style nonce=\"...\">...</style>` but does NOT allow `style=\"\"` attributes / `element.style=...`.\n * - Vendor/jQuery uses style attributes in some flows, so we scope `'unsafe-inline'` to *attributes only*.\n * - This keeps scripts strict while restoring compatibility without requiring `style-src 'unsafe-inline'`.\n */\n 'style-src': unique([...styleSources, includeUnsafeInlineStyle ? UNSAFE_INLINE : undefined]),\n 'style-src-elem': unique(styleSources),\n 'style-src-attr': unique([SELF, includeUnsafeInlineStyle ? UNSAFE_INLINE : \"'unsafe-inline'\"]),\n 'font-src': unique([SELF, ...FONT_HOSTS, DATA]),\n };\n}\n\nexport function getSiaraShieldCspPolicy(options?: SiaraShieldCspOptions): string {\n return Object.entries(getSiaraShieldCspDirectives(options))\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n\nexport function mergeSiaraShieldCspPolicy(existingPolicy: string, options?: SiaraShieldCspOptions): string {\n const directives = parsePolicy(existingPolicy);\n const recommended = getSiaraShieldCspDirectives(options);\n\n for (const [name, values] of Object.entries(recommended)) {\n directives.set(name, unique([...(directives.get(name) ?? []), ...values]));\n }\n\n return [...directives.entries()]\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n","/*\n * Public API Surface of siarashield-workspace\n */\n\nexport * from './lib/siarashield-workspace';\nexport * from './lib/siara-shield.component';\nexport * from './lib/siara-shield-loader.service';\nexport * from './lib/siara-shield.globals';\nexport * from './lib/siara-shield';\nexport * from './lib/siara-shield-csp';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["JQUERY_FALLBACK_SRC","CAPTCHA_SCRIPT_SRC","VALIDATION_SCRIPT_SRC","CAPTCHA_READY_TIMEOUT_MS","ensureAccessibilityPopupAliases","runInRootZone","i1.SiaraShieldLoaderService"],"mappings":"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"}
1
+ {"version":3,"file":"siarashield_workspace.mjs","sources":["../../../projects/siarashield-workspace/src/lib/siara-shield.globals.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-log-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-submit-guard.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-script-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-vendor-runtime.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-loader.service.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.component.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-csp.ts","../../../projects/siarashield-workspace/src/public-api.ts","../../../projects/siarashield-workspace/src/siarashield_workspace.ts"],"sourcesContent":["export type InitCaptchaFn = (publicKey: string) => void;\nexport type CheckCaptchaFn = () => boolean;\n\nexport interface SiaraShieldGlobals {\n initCaptcha?: InitCaptchaFn;\n InitCaptcha?: InitCaptchaFn;\n CheckCaptcha?: CheckCaptchaFn;\n AppendValidationJS?: () => void;\n CyberSiaraToken?: string;\n jQuery?: unknown;\n $?: unknown;\n}\n\nexport function getSiaraShieldGlobals(): SiaraShieldGlobals {\n return (globalThis as unknown as { [k: string]: unknown }) as SiaraShieldGlobals;\n}\n\nexport function getInitCaptchaFn(g: SiaraShieldGlobals): InitCaptchaFn | undefined {\n return g.initCaptcha ?? g.InitCaptcha;\n}\n","interface ConsolePatchState {\n depth: number;\n originalLog: Console['log'];\n originalInfo: Console['info'];\n originalWarn: Console['warn'];\n originalDebug: Console['debug'];\n originalError: Console['error'];\n}\n\ninterface VendorRuntimeErrorPatchState {\n installed: boolean;\n originalOnError: OnErrorEventHandler | null;\n}\n\nconst CONSOLE_PATCH_STATE_KEY = '__siaraShieldConsolePatchState__';\nconst VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY = '__siaraShieldVendorRuntimeErrorPatchState__';\nconst DEFAULT_SUPPRESS_WINDOW_MS = 2000;\n\nfunction getConsolePatchState(): ConsolePatchState {\n const globalState = globalThis as typeof globalThis & {\n [CONSOLE_PATCH_STATE_KEY]?: ConsolePatchState;\n };\n\n if (!globalState[CONSOLE_PATCH_STATE_KEY]) {\n globalState[CONSOLE_PATCH_STATE_KEY] = {\n depth: 0,\n originalLog: console.log.bind(console),\n originalInfo: console.info.bind(console),\n originalWarn: console.warn.bind(console),\n originalDebug: console.debug.bind(console),\n originalError: console.error.bind(console),\n };\n }\n\n return globalState[CONSOLE_PATCH_STATE_KEY];\n}\n\nfunction muteConsole(): void {\n const patchState = getConsolePatchState();\n patchState.depth += 1;\n if (patchState.depth > 1) return;\n\n console.log = () => undefined;\n console.info = () => undefined;\n console.warn = () => undefined;\n console.debug = () => undefined;\n console.error = (...args: unknown[]) => {\n const normalized = args\n .map((arg) => (typeof arg === 'string' ? arg : arg instanceof Error ? arg.message : ''))\n .join(' ')\n .toLowerCase();\n\n // Known noisy upstream vendor runtime error path from CaptchaResources.js bootstrap.\n if (\n normalized.includes('an errorevent with no error occurred') ||\n normalized.includes('script error') ||\n normalized.includes('captcharesources.js') ||\n normalized.includes('getcybersiara')\n ) {\n return;\n }\n\n patchState.originalError(...args);\n };\n}\n\nfunction unmuteConsole(): void {\n const patchState = getConsolePatchState();\n if (patchState.depth === 0) return;\n patchState.depth -= 1;\n if (patchState.depth > 0) return;\n\n console.log = patchState.originalLog;\n console.info = patchState.originalInfo;\n console.warn = patchState.originalWarn;\n console.debug = patchState.originalDebug;\n console.error = patchState.originalError;\n}\n\nexport function suppressVendorConsoleWindow(windowMs = DEFAULT_SUPPRESS_WINDOW_MS): void {\n muteConsole();\n setTimeout(() => {\n unmuteConsole();\n }, windowMs);\n}\n\nfunction getVendorRuntimeErrorPatchState(): VendorRuntimeErrorPatchState {\n const globalState = globalThis as typeof globalThis & {\n [VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]?: VendorRuntimeErrorPatchState;\n };\n\n if (!globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]) {\n globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY] = {\n installed: false,\n originalOnError: globalThis.onerror ?? null,\n };\n }\n\n return globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY];\n}\n\nfunction isLikelyVendorScriptRuntimeError(message: unknown, source: unknown): boolean {\n const normalizedMessage = String(message ?? '').trim().toLowerCase();\n const normalizedSource = String(source ?? '').trim().toLowerCase();\n const fromSiaraHost =\n normalizedSource.includes('embed.mycybersiara.com') || normalizedSource.includes('embedcdn.mycybersiara.com');\n const isKnownVendorDomError =\n normalizedMessage.includes(\"cannot read properties of null (reading 'removechild')\") &&\n (normalizedSource.includes('jquery') || normalizedSource.includes('captcharesources'));\n\n if (fromSiaraHost) return true;\n if (isKnownVendorDomError) return true;\n return normalizedMessage === 'script error.' || normalizedMessage === 'script error';\n}\n\n/**\n * Suppresses noisy cross-origin vendor runtime script errors so Angular does not\n * surface them as unhandled `ErrorEvent` crashes in the console.\n */\nexport function installVendorRuntimeErrorSuppression(): void {\n const patchState = getVendorRuntimeErrorPatchState();\n if (patchState.installed) return;\n\n const previousOnError = patchState.originalOnError;\n globalThis.onerror = (message, source, lineno, colno, error) => {\n if (isLikelyVendorScriptRuntimeError(message, source)) {\n return true;\n }\n\n if (typeof previousOnError === 'function') {\n return previousOnError.call(globalThis, message, source, lineno, colno, error);\n }\n\n return false;\n };\n\n patchState.installed = true;\n}\n\n","const SUBMIT_GUARD_STATE_KEY = '__siaraShieldSubmitGuardInstalled__';\nconst SYNTHETIC_CLICK_GUARD_WINDOW_MS = 1200;\n\nexport function installCaptchaSubmitGuard(): void {\n const globalState = globalThis as typeof globalThis & {\n [SUBMIT_GUARD_STATE_KEY]?: boolean;\n };\n\n if (globalState[SUBMIT_GUARD_STATE_KEY]) return;\n\n const lastSyntheticClickByButton = new WeakMap<EventTarget, number>();\n\n document.addEventListener(\n 'click',\n (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n\n const submitButton = target.closest('.CaptchaSubmit');\n if (!submitButton) return;\n\n // Vendor runtime can emit synthetic clicks on .CaptchaSubmit.\n // Allow one synthetic click (needed for vendor auto-submit) but block rapid duplicates.\n if (!event.isTrusted) {\n const now = Date.now();\n const lastSyntheticClickAt = lastSyntheticClickByButton.get(submitButton) ?? 0;\n if (now - lastSyntheticClickAt < SYNTHETIC_CLICK_GUARD_WINDOW_MS) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n lastSyntheticClickByButton.set(submitButton, now);\n }\n },\n true,\n );\n\n globalState[SUBMIT_GUARD_STATE_KEY] = true;\n}\n\n","type ScriptStatus = 'loading' | 'loaded' | 'error';\n\nexport interface ScriptLoadOptions {\n nonce?: string;\n}\n\ninterface DynamicScriptNoncePatchState {\n nonceByDocument: WeakMap<Document, string>;\n observerByDocument: WeakMap<Document, MutationObserver>;\n inlineCaptchaScriptByDocument: WeakMap<Document, Set<string>>;\n patched: boolean;\n}\n\nconst SCRIPT_STATUS_BY_DOCUMENT = new WeakMap<Document, Map<string, ScriptStatus>>();\nconst SCRIPT_PENDING_BY_DOCUMENT = new WeakMap<Document, Map<string, Promise<void>>>();\nconst DYNAMIC_SCRIPT_NONCE_STATE_KEY = '__siaraShieldDynamicScriptNonceState__';\n\nfunction getStatusBySrc(documentRef: Document): Map<string, ScriptStatus> {\n let statusBySrc = SCRIPT_STATUS_BY_DOCUMENT.get(documentRef);\n if (!statusBySrc) {\n statusBySrc = new Map<string, ScriptStatus>();\n SCRIPT_STATUS_BY_DOCUMENT.set(documentRef, statusBySrc);\n }\n\n return statusBySrc;\n}\n\nfunction getPendingBySrc(documentRef: Document): Map<string, Promise<void>> {\n let pendingBySrc = SCRIPT_PENDING_BY_DOCUMENT.get(documentRef);\n if (!pendingBySrc) {\n pendingBySrc = new Map<string, Promise<void>>();\n SCRIPT_PENDING_BY_DOCUMENT.set(documentRef, pendingBySrc);\n }\n\n return pendingBySrc;\n}\n\nfunction getDynamicScriptNoncePatchState(): DynamicScriptNoncePatchState {\n const globalState = globalThis as typeof globalThis & {\n [DYNAMIC_SCRIPT_NONCE_STATE_KEY]?: DynamicScriptNoncePatchState;\n };\n\n if (!globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY]) {\n globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY] = {\n nonceByDocument: new WeakMap<Document, string>(),\n observerByDocument: new WeakMap<Document, MutationObserver>(),\n inlineCaptchaScriptByDocument: new WeakMap<Document, Set<string>>(),\n patched: false,\n };\n }\n\n return globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY];\n}\n\nfunction normalizeNonce(nonce?: string | null): string | undefined {\n const trimmed = nonce?.trim();\n return trimmed ? trimmed : undefined;\n}\n\nfunction isScriptElement(node: Node): node is HTMLScriptElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'script';\n}\n\nfunction isStyleElement(node: Node): node is HTMLStyleElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'style';\n}\n\nfunction isStylesheetLinkElement(node: Node): node is HTMLLinkElement {\n if (!(node instanceof Element) || node.tagName.toLowerCase() !== 'link') {\n return false;\n }\n const rel = (node.getAttribute('rel') ?? '').toLowerCase();\n return rel === 'stylesheet';\n}\n\nexport function applyScriptNonce(script: HTMLScriptElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n script.setAttribute('nonce', resolvedNonce);\n script.nonce = resolvedNonce;\n}\n\nfunction applyStyleNonce(style: HTMLStyleElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n style.setAttribute('nonce', resolvedNonce);\n style.nonce = resolvedNonce;\n}\n\nfunction applyLinkNonce(link: HTMLLinkElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n link.setAttribute('nonce', resolvedNonce);\n // `HTMLLinkElement.nonce` exists in modern browsers.\n (link as HTMLLinkElement & { nonce?: string }).nonce = resolvedNonce;\n}\n\nfunction applyNonceToNode(node: Node, nonce?: string): void {\n if (isScriptElement(node)) {\n applyScriptNonce(node, nonce);\n return;\n }\n if (isStyleElement(node)) {\n applyStyleNonce(node, nonce);\n return;\n }\n if (isStylesheetLinkElement(node)) {\n applyLinkNonce(node, nonce);\n }\n}\n\nfunction applyTrackedNonce(node: Node): void {\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return;\n }\n\n const nonce = getDynamicScriptNoncePatchState().nonceByDocument.get(documentRef);\n applyNonceToNode(node, nonce);\n}\n\nfunction getTrackedInlineCaptchaScripts(documentRef: Document): Set<string> {\n const patchState = getDynamicScriptNoncePatchState();\n let trackedScripts = patchState.inlineCaptchaScriptByDocument.get(documentRef);\n if (!trackedScripts) {\n trackedScripts = new Set<string>();\n patchState.inlineCaptchaScriptByDocument.set(documentRef, trackedScripts);\n }\n\n return trackedScripts;\n}\n\nfunction shouldSkipDuplicateInlineCaptchaScript(node: Node): boolean {\n if (!isScriptElement(node) || Boolean(node.src)) {\n return false;\n }\n\n const scriptBody = (node.textContent ?? '').trim();\n if (!scriptBody || !scriptBody.includes('currentLangCode')) {\n return false;\n }\n\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return false;\n }\n\n const trackedScripts = getTrackedInlineCaptchaScripts(documentRef);\n if (trackedScripts.has(scriptBody)) {\n return true;\n }\n\n trackedScripts.add(scriptBody);\n return false;\n}\n\nfunction walkAndApplyNonce(root: Node, nonce?: string): void {\n if (!nonce) return;\n\n // Fast path: root itself is nonceable.\n if (isScriptElement(root) || isStyleElement(root) || isStylesheetLinkElement(root)) {\n applyNonceToNode(root, nonce);\n return;\n }\n\n // Common path for jQuery: append DocumentFragment containing nodes created via HTML parsing.\n if (root instanceof Element || root instanceof DocumentFragment) {\n const nonceable = root.querySelectorAll?.('script,style,link[rel=\"stylesheet\"]') ?? [];\n for (const el of nonceable) {\n applyNonceToNode(el as unknown as Node, nonce);\n }\n }\n}\n\nfunction ensureNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.observerByDocument.get(documentRef)) {\n return;\n }\n\n const observer = new MutationObserver((records) => {\n const nonce = patchState.nonceByDocument.get(documentRef);\n if (!nonce) return;\n\n for (const record of records) {\n for (const node of record.addedNodes) {\n walkAndApplyNonce(node, nonce);\n }\n }\n });\n\n // Observe the full document because scripts can be injected into body/head by vendor/jQuery.\n const root = documentRef.documentElement ?? documentRef;\n observer.observe(root, { childList: true, subtree: true });\n patchState.observerByDocument.set(documentRef, observer);\n}\n\nfunction teardownNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n const observer = patchState.observerByDocument.get(documentRef);\n if (!observer) return;\n observer.disconnect();\n patchState.observerByDocument.delete(documentRef);\n}\n\nfunction injectNonceIntoHtml(html: string, nonce: string): string {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) return html;\n\n // If tag already includes nonce, leave it.\n const withNonceAttr = ` nonce=\"${resolvedNonce}\"`;\n\n const addNonceToTag = (tag: 'script' | 'style') => {\n const openTag = new RegExp(`<${tag}(\\\\s[^>]*?)?>`, 'gi');\n return (input: string) =>\n input.replace(openTag, (match) => {\n if (/[\\s\"']nonce\\s*=/.test(match)) return match;\n // Insert nonce before closing `>`\n return match.replace(/>$/, `${withNonceAttr}>`);\n });\n };\n\n // For link rel=stylesheet, add nonce when missing.\n const linkOpenTag = /<link\\b[^>]*>/gi;\n const addNonceToStylesheetLink = (input: string) =>\n input.replace(linkOpenTag, (match) => {\n if (/[\\s\"']nonce\\s*=/.test(match)) return match;\n if (!/\\brel\\s*=\\s*[\"']?stylesheet[\"']?/i.test(match)) return match;\n return match.replace(/>$/, `${withNonceAttr}>`);\n });\n\n return addNonceToStylesheetLink(addNonceToTag('style')(addNonceToTag('script')(html)));\n}\n\nfunction patchDynamicScriptInsertion(): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.patched) {\n return;\n }\n\n const originalAppendChild = Node.prototype.appendChild;\n const originalInsertBefore = Node.prototype.insertBefore;\n const originalReplaceChild = Node.prototype.replaceChild;\n const originalInsertAdjacentHTML = Element.prototype.insertAdjacentHTML;\n\n Node.prototype.appendChild = function <T extends Node>(node: T): T {\n // Vendor captcha injects an inline snippet with `currentLangCode` that crashes when appended twice.\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalAppendChild.call(this, node) as T;\n };\n\n Node.prototype.insertBefore = function <T extends Node>(node: T, child: Node | null): T {\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalInsertBefore.call(this, node, child) as T;\n };\n\n Node.prototype.replaceChild = function <T extends Node>(node: Node, child: T): T {\n applyTrackedNonce(node);\n return originalReplaceChild.call(this, node, child) as T;\n };\n\n Element.prototype.insertAdjacentHTML = function (position: InsertPosition, text: string): void {\n const documentRef = this.ownerDocument;\n const nonce = documentRef ? patchState.nonceByDocument.get(documentRef) : undefined;\n const patchedText = nonce ? injectNonceIntoHtml(text, nonce) : text;\n return originalInsertAdjacentHTML.call(this, position, patchedText);\n };\n\n patchState.patched = true;\n}\n\nexport function resolveCspNonce(documentRef: Document | null | undefined, explicitNonce?: string): string | undefined {\n const resolvedExplicitNonce = normalizeNonce(explicitNonce);\n if (resolvedExplicitNonce) {\n return resolvedExplicitNonce;\n }\n\n if (!documentRef) {\n return undefined;\n }\n\n const scriptWithNonce = documentRef.querySelector<HTMLScriptElement>('script[nonce]');\n const nonceFromScript = normalizeNonce(scriptWithNonce?.getAttribute('nonce') ?? scriptWithNonce?.nonce);\n if (nonceFromScript) {\n return nonceFromScript;\n }\n\n const nonceMeta = documentRef.querySelector<HTMLMetaElement>('meta[name=\"csp-nonce\"]');\n return normalizeNonce(nonceMeta?.content);\n}\n\nexport function prepareScriptNonce(documentRef: Document | null | undefined, explicitNonce?: string): string | undefined {\n const resolvedNonce = resolveCspNonce(documentRef, explicitNonce);\n const patchState = getDynamicScriptNoncePatchState();\n\n if (resolvedNonce) {\n // DOM patching is only needed when a CSP nonce must be propagated.\n patchDynamicScriptInsertion();\n const effectiveDocumentRef = documentRef ?? globalThis.document;\n if (effectiveDocumentRef) {\n patchState.nonceByDocument.set(effectiveDocumentRef, resolvedNonce);\n ensureNonceMutationObserver(effectiveDocumentRef);\n }\n } else {\n if (documentRef) {\n patchState.nonceByDocument.delete(documentRef);\n teardownNonceMutationObserver(documentRef);\n }\n }\n\n return resolvedNonce;\n}\n\nexport function loadScript(documentRef: Document, src: string, options?: ScriptLoadOptions): Promise<void> {\n const nonce = normalizeNonce(options?.nonce);\n const statusBySrc = getStatusBySrc(documentRef);\n const pendingBySrc = getPendingBySrc(documentRef);\n const existing = documentRef.querySelector<HTMLScriptElement>(`script[src=\"${src}\"]`);\n\n if (existing) {\n applyScriptNonce(existing, nonce);\n const status = statusBySrc.get(src);\n if (status === 'loaded') {\n return Promise.resolve();\n }\n\n const pending = pendingBySrc.get(src);\n if (pending) {\n return pending;\n }\n\n return Promise.resolve();\n }\n\n statusBySrc.set(src, 'loading');\n\n const pending = new Promise<void>((resolve, reject) => {\n const script = documentRef.createElement('script');\n script.src = src;\n script.async = true;\n applyScriptNonce(script, nonce);\n script.onload = () => {\n statusBySrc.set(src, 'loaded');\n pendingBySrc.delete(src);\n resolve();\n };\n script.onerror = () => {\n statusBySrc.set(src, 'error');\n pendingBySrc.delete(src);\n reject(new Error(`Failed to load script: ${src}. Check CSP allowlist and nonce configuration.`));\n };\n documentRef.head.appendChild(script);\n });\n\n pendingBySrc.set(src, pending);\n return pending;\n}\n","import { getSiaraShieldGlobals } from './siara-shield.globals';\r\n\r\nconst VENDOR_RUNTIME_PATCH_KEY = '__siaraShieldVendorRuntimePatchInstalled__';\r\nconst VENDOR_TOKEN_BRIDGE_KEY = '__siaraShieldVendorTokenBridgeInstalled__';\r\nconst WRAPPED_FN_PREFIX = '__siaraShieldWrappedVendorFn__';\r\n\r\ntype VendorFnName = 'Open_Pluin' | 'Open_Plugin' | 'Open_Plugin_';\r\ntype OptionalVendorFnName = VendorFnName | 'OpenCaptchaSlid' | 'GetCyberSiara';\r\ntype VendorFn = (...args: unknown[]) => unknown;\r\n\r\nfunction isKnownVendorNullDomError(error: unknown): boolean {\r\n const msg = error instanceof Error ? error.message.toLowerCase() : String(error ?? '').toLowerCase();\r\n return (\r\n msg.includes(\"cannot read properties of null (reading 'style')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'queryselector')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'removechild')\")\r\n );\r\n}\r\n\r\nfunction runFallbackChallengeOpen(excluding: OptionalVendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const candidates: OptionalVendorFnName[] = ['OpenCaptchaSlid', 'GetCyberSiara', 'Open_Pluin', 'Open_Plugin', 'Open_Plugin_'];\r\n\r\n for (const name of candidates) {\r\n if (name === excluding) continue;\r\n const fn = globals[name];\r\n if (typeof fn !== 'function') continue;\r\n try {\r\n (fn as VendorFn)();\r\n return;\r\n } catch {\r\n // Try next candidate.\r\n }\r\n }\r\n}\r\n\r\nfunction wrapVendorOpenFunction(name: VendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const marker = `${WRAPPED_FN_PREFIX}${name}`;\r\n if (globals[marker] === true) return;\r\n\r\n const candidate = globals[name];\r\n if (typeof candidate !== 'function') return;\r\n\r\n const original = candidate as VendorFn;\r\n globals[name] = ((...args: unknown[]) => {\r\n try {\r\n return original(...args);\r\n } catch (error) {\r\n if (!isKnownVendorNullDomError(error)) {\r\n throw error;\r\n }\r\n\r\n // Vendor challenge opener hit a missing DOM node.\r\n // Try alternative open functions so challenge can still render.\r\n runFallbackChallengeOpen(name);\r\n return undefined;\r\n }\r\n }) as unknown;\r\n globals[marker] = true;\r\n}\r\n\r\nfunction installVerifiedSubmitTokenBridge(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_TOKEN_BRIDGE_KEY]?: boolean;\r\n JQuryName?: { ajax?: (...args: unknown[]) => unknown };\r\n $?: { ajax?: (...args: unknown[]) => unknown };\r\n CyberSiaraToken?: string;\r\n };\r\n if (globals[VENDOR_TOKEN_BRIDGE_KEY]) return;\r\n\r\n const patchAjaxOwner = (owner: { ajax?: (...args: unknown[]) => unknown } | undefined): void => {\r\n if (!owner || typeof owner.ajax !== 'function') return;\r\n const originalAjax = owner.ajax.bind(owner);\r\n\r\n owner.ajax = ((...args: unknown[]) => {\r\n const firstArg = args[0];\r\n if (!firstArg || typeof firstArg !== 'object') {\r\n return originalAjax(...args);\r\n }\r\n\r\n const options = firstArg as Record<string, unknown>;\r\n const url = String(options['url'] ?? '').toLowerCase();\r\n const originalSuccess = options['success'];\r\n if (!url.includes('/submitcaptcha/verifiedsubmit') || typeof originalSuccess !== 'function') {\r\n return originalAjax(options);\r\n }\r\n\r\n options['success'] = ((response: unknown, ...rest: unknown[]) => {\r\n const payload = response as { data?: unknown; Data?: unknown } | null;\r\n const maybeTokenRaw = payload?.data ?? payload?.Data;\r\n if (typeof maybeTokenRaw === 'string' && maybeTokenRaw.trim()) {\r\n globals.CyberSiaraToken = maybeTokenRaw.trim();\r\n }\r\n\r\n return (originalSuccess as (...fnArgs: unknown[]) => unknown)(response, ...rest);\r\n }) as unknown;\r\n\r\n return originalAjax(options);\r\n }) as typeof owner.ajax;\r\n };\r\n\r\n patchAjaxOwner(globals.$);\r\n patchAjaxOwner(globals.JQuryName);\r\n globals[VENDOR_TOKEN_BRIDGE_KEY] = true;\r\n}\r\n\r\nexport function installVendorChallengeRuntimePatch(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_RUNTIME_PATCH_KEY]?: boolean;\r\n };\r\n if (globals[VENDOR_RUNTIME_PATCH_KEY]) return;\r\n\r\n wrapVendorOpenFunction('Open_Pluin');\r\n wrapVendorOpenFunction('Open_Plugin');\r\n wrapVendorOpenFunction('Open_Plugin_');\r\n installVerifiedSubmitTokenBridge();\r\n globals[VENDOR_RUNTIME_PATCH_KEY] = true;\r\n}\r\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { loadScript, type ScriptLoadOptions } from './siara-shield-script-utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SiaraShieldLoaderService {\n constructor(@Inject(DOCUMENT) private readonly document: Document) {}\n\n loadScript(src: string, options?: ScriptLoadOptions): Promise<void> {\n return loadScript(this.document, src, options);\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { SiaraShieldLoaderService } from './siara-shield-loader.service';\nimport { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { prepareScriptNonce } from './siara-shield-script-utils';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nexport interface SiaraShieldInitOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /** Loads jQuery before SiaraShield script. Default is true for easier integration. Set to false only if your page already includes jQuery. */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\n@Component({\n selector: 'siara-shield',\n standalone: true,\n template: `<div class=\"SiaraShield\"></div>`,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SiaraShieldComponent implements AfterViewInit {\n @Input({ required: true }) publicKey!: string;\n @Input() loadJQuery = true;\n @Input() cspNonce?: string;\n @Input() allowVendorConsoleLogs = false;\n\n /**\n * Emits the current `CyberSiaraToken` right after a successful `checkCaptcha()`.\n */\n @Output() token = new EventEmitter<string>();\n\n private initialized = false;\n\n constructor(\n private readonly host: ElementRef<HTMLElement>,\n private readonly loader: SiaraShieldLoaderService,\n ) {}\n\n async ngAfterViewInit(): Promise<void> {\n await this.init({\n publicKey: this.publicKey,\n loadJQuery: this.loadJQuery,\n cspNonce: this.cspNonce,\n allowVendorConsoleLogs: this.allowVendorConsoleLogs,\n });\n }\n\n async init(options: SiaraShieldInitOptions): Promise<void> {\n if (this.initialized) return;\n\n // Ensure the host element is in DOM before scripts run.\n void this.host.nativeElement;\n installCaptchaSubmitGuard();\n\n if (!options.publicKey) {\n throw new Error('SiaraShieldComponent: publicKey is required.');\n }\n\n // Prepare CSP nonce propagation so any vendor-injected child scripts get the same nonce.\n const documentRef = this.host.nativeElement.ownerDocument ?? globalThis.document ?? null;\n const nonce = prepareScriptNonce(documentRef, options.cspNonce);\n if ((options.loadJQuery ?? true) && !this.isJQueryAlreadyAvailable()) {\n await this.loader.loadScript(JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await this.loader.loadScript(CAPTCHA_SCRIPT_SRC, { nonce });\n await this.loader.loadScript(VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n this.preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await this.waitForCheckCaptchaApi();\n this.initialized = true;\n }\n\n /**\n * Detect preloaded jQuery from global object or an existing script tag.\n */\n private isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n 'script[src*=\"jquery\"]',\n );\n return Boolean(existingJqueryScript);\n }\n\n private preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n `script[src=\"${VALIDATION_SCRIPT_SRC}\"]`,\n );\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n }\n\n private async waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n }\n\n /**\n * Calls the global `CheckCaptcha()` from SiaraShield script.\n * Returns true when captcha is valid; emits token if available.\n */\n checkCaptcha(): boolean {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did init() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n this.token.emit(existingToken);\n return true;\n }\n\n if (!this.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n if (ok && typeof g.CyberSiaraToken === 'string') {\n this.token.emit(g.CyberSiaraToken);\n }\n return ok;\n }\n\n /**\n * Async-friendly captcha validation to avoid first-click timing issues.\n * Performs one validation call and waits for token propagation.\n */\n async checkCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n }): Promise<boolean> {\n const timeoutMs = options?.timeoutMs ?? 2000;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n this.token.emit(existingToken);\n return true;\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let ok = this.checkCaptcha();\n // Optional retry for integrations that observe late vendor-state settling.\n if (!ok && retryOnFalseMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n ok = this.checkCaptcha();\n }\n if (!ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n return false;\n }\n\n const g = getSiaraShieldGlobals();\n if (typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0) {\n return true;\n }\n\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n\n return true;\n }\n}\n\n","import { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { loadScript, prepareScriptNonce } from './siara-shield-script-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\n\nexport interface InitSiaraShieldOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /**\n * Loads jQuery before SiaraShield script.\n * Default is true for easier integration.\n * Set to false only if your site/app already loads jQuery.\n */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\nlet pending: Promise<void> | null = null;\nlet initialized = false;\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = document.querySelector<HTMLScriptElement>('script[src*=\"jquery\"]');\n return Boolean(existingJqueryScript);\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nfunction preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = document.querySelector<HTMLScriptElement>(`script[src=\"${VALIDATION_SCRIPT_SRC}\"]`);\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n}\n\nasync function waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n}\n\n/**\n * Drop-in initializer for SiaraShield.\n * - Loads required scripts (optionally jQuery)\n * - Calls global `initCaptcha(publicKey)`\n *\n * Requirements in your HTML/template:\n * - You must render: `<div class=\"SiaraShield\"></div>`\n */\nexport async function initSiaraShield(options: InitSiaraShieldOptions): Promise<void> {\n if (initialized) return;\n if (pending) return pending;\n\n if (!options?.publicKey) {\n throw new Error('initSiaraShield: publicKey is required.');\n }\n\n pending = (async () => {\n installCaptchaSubmitGuard();\n const nonce = prepareScriptNonce(document, options.cspNonce);\n if ((options.loadJQuery ?? true) && !isJQueryAlreadyAvailable()) {\n await loadScript(document, JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await loadScript(document, CAPTCHA_SCRIPT_SRC, { nonce });\n await loadScript(document, VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await waitForCheckCaptchaApi();\n initialized = true;\n })();\n\n try {\n await pending;\n } finally {\n // keep `pending` cached for subsequent callers\n }\n}\n\n/**\n * Calls global `CheckCaptcha()` and returns its boolean result.\n * If successful, returns `{ ok: true, token?: string }`.\n */\nexport function checkSiaraShieldCaptcha(options?: { allowVendorConsoleLogs?: boolean }): { ok: boolean; token?: string } {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did initSiaraShield() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n return { ok: true, token: existingToken };\n }\n\n if (!options?.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n const token = typeof g.CyberSiaraToken === 'string' ? g.CyberSiaraToken : undefined;\n return ok ? { ok: true, token } : { ok: false };\n}\n\n/**\n * Async-friendly captcha check to handle delayed token population.\n */\nexport async function checkSiaraShieldCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n}): Promise<{ ok: boolean; token?: string }> {\n const timeoutMs = options?.timeoutMs ?? 1200;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n return { ok: true, token: existingToken };\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let firstCheck = checkSiaraShieldCaptcha(); // one API call only\n if (!firstCheck.ok && retryOnFalseMs > 0) {\n // Optional retry for integrations that observe late vendor-state settling.\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n firstCheck = checkSiaraShieldCaptcha();\n }\n if (!firstCheck.ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n return firstCheck;\n }\n if (firstCheck.token) return firstCheck;\n\n const startedAt = Date.now();\n // Token can be assigned slightly after successful verification.\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n\n return { ok: true };\n}\n\n","export interface SiaraShieldCspOptions {\n /** Server-generated nonce value without the `'nonce-'` prefix. */\n nonce?: string;\n /** Optional if the customer still loads jQuery from Google's CDN. */\n includeGoogleApis?: boolean;\n /** Include `script-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineScript?: boolean;\n /** Include `style-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineStyle?: boolean;\n}\n\nexport type SiaraShieldCspDirectives = Record<string, string[]>;\n\nconst SELF = \"'self'\";\nconst DATA = 'data:';\nconst UNSAFE_INLINE = \"'unsafe-inline'\";\n\nconst SCRIPT_HOSTS = ['https://embedcdn.mycybersiara.com', 'https://embed.mycybersiara.com'] as const;\nconst OPTIONAL_SCRIPT_HOSTS = ['https://ajax.googleapis.com'] as const;\nconst CONNECT_HOSTS = ['https://embed.mycybersiara.com', 'https://embedcdn.mycybersiara.com'] as const;\nconst STYLE_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://mycybersiara.com',\n 'https://fonts.googleapis.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst FONT_HOSTS = [\n 'https://fonts.gstatic.com',\n 'https://mycybersiara.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst IMG_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://embedcdn.mycybersiara.com',\n 'https://mycybersiara.com',\n] as const;\n\nfunction unique(values: Array<string | undefined>): string[] {\n return [...new Set(values.filter((value): value is string => Boolean(value && value.trim())))];\n}\n\nfunction nonceSource(nonce?: string): string | undefined {\n return nonce ? `'nonce-${nonce}'` : undefined;\n}\n\nfunction serializeDirective(name: string, values: string[]): string {\n return values.length > 0 ? `${name} ${values.join(' ')}` : name;\n}\n\nfunction parsePolicy(policy: string): Map<string, string[]> {\n const directives = new Map<string, string[]>();\n\n for (const rawDirective of policy.split(';')) {\n const directive = rawDirective.trim();\n if (!directive) {\n continue;\n }\n\n const parts = directive.split(/\\s+/).filter(Boolean);\n const [name, ...values] = parts;\n if (!name) {\n continue;\n }\n\n directives.set(name, values);\n }\n\n return directives;\n}\n\nexport function getSiaraShieldCspDirectives(options?: SiaraShieldCspOptions): SiaraShieldCspDirectives {\n const includeGoogleApis = options?.includeGoogleApis ?? false;\n // Default to strict/safe CSP. Customers can explicitly opt-in if they accept the risk.\n const includeUnsafeInlineScript = options?.includeUnsafeInlineScript ?? false;\n const includeUnsafeInlineStyle = options?.includeUnsafeInlineStyle ?? false;\n const nonce = nonceSource(options?.nonce);\n const scriptHosts = includeGoogleApis ? [...SCRIPT_HOSTS, ...OPTIONAL_SCRIPT_HOSTS] : [...SCRIPT_HOSTS];\n const styleSources = unique([SELF, nonce, ...STYLE_HOSTS]);\n\n return {\n 'default-src': unique([SELF]),\n 'script-src': unique([SELF, nonce, ...scriptHosts, includeUnsafeInlineScript ? UNSAFE_INLINE : undefined]),\n 'script-src-elem': unique([SELF, nonce, ...scriptHosts]),\n 'connect-src': unique([SELF, ...CONNECT_HOSTS]),\n 'img-src': unique([SELF, DATA, ...IMG_HOSTS]),\n /**\n * CSP note:\n * - A nonce allows `<style nonce=\"...\">...</style>` but does NOT allow `style=\"\"` attributes / `element.style=...`.\n * - Vendor/jQuery uses style attributes in some flows, so we scope `'unsafe-inline'` to *attributes only*.\n * - This keeps scripts strict while restoring compatibility without requiring `style-src 'unsafe-inline'`.\n */\n 'style-src': unique([...styleSources, includeUnsafeInlineStyle ? UNSAFE_INLINE : undefined]),\n 'style-src-elem': unique(styleSources),\n 'style-src-attr': unique([SELF, includeUnsafeInlineStyle ? UNSAFE_INLINE : \"'unsafe-inline'\"]),\n 'font-src': unique([SELF, ...FONT_HOSTS, DATA]),\n };\n}\n\nexport function getSiaraShieldCspPolicy(options?: SiaraShieldCspOptions): string {\n return Object.entries(getSiaraShieldCspDirectives(options))\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n\nexport function mergeSiaraShieldCspPolicy(existingPolicy: string, options?: SiaraShieldCspOptions): string {\n const directives = parsePolicy(existingPolicy);\n const recommended = getSiaraShieldCspDirectives(options);\n\n for (const [name, values] of Object.entries(recommended)) {\n directives.set(name, unique([...(directives.get(name) ?? []), ...values]));\n }\n\n return [...directives.entries()]\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n","/*\n * Public API Surface of siarashield-workspace\n */\n\nexport * from './lib/siarashield-workspace';\nexport * from './lib/siara-shield.component';\nexport * from './lib/siara-shield-loader.service';\nexport * from './lib/siara-shield.globals';\nexport * from './lib/siara-shield';\nexport * from './lib/siara-shield-csp';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["JQUERY_FALLBACK_SRC","CAPTCHA_SCRIPT_SRC","VALIDATION_SCRIPT_SRC","CAPTCHA_READY_TIMEOUT_MS","ensureAccessibilityPopupAliases","runInRootZone","i1.SiaraShieldLoaderService"],"mappings":"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"}
@@ -2,6 +2,6 @@ export interface ScriptLoadOptions {
2
2
  nonce?: string;
3
3
  }
4
4
  export declare function applyScriptNonce(script: HTMLScriptElement, nonce?: string): void;
5
- export declare function resolveCspNonce(documentRef: Document, explicitNonce?: string): string | undefined;
6
- export declare function prepareScriptNonce(documentRef: Document, explicitNonce?: string): string | undefined;
5
+ export declare function resolveCspNonce(documentRef: Document | null | undefined, explicitNonce?: string): string | undefined;
6
+ export declare function prepareScriptNonce(documentRef: Document | null | undefined, explicitNonce?: string): string | undefined;
7
7
  export declare function loadScript(documentRef: Document, src: string, options?: ScriptLoadOptions): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siarashield_workspace",
3
- "version": "0.0.40",
3
+ "version": "0.0.41",
4
4
  "description": "Angular wrapper for CyberSiara SiaraShield captcha embed.",
5
5
  "keywords": [
6
6
  "cybersiara",