@discordeno/utils 21.0.0-next.ebbb5f5 → 21.0.0-next.ef5cf54
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.
- package/README.md +1 -1
- package/dist/cjs/images.cjs +2 -2
- package/dist/cjs/utils.cjs +13 -1
- package/dist/esm/images.js +2 -2
- package/dist/esm/utils.js +10 -1
- package/dist/types/utils.d.ts +2 -0
- package/dist/types/utils.d.ts.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Utilities useful when using Discordeno.
|
|
|
13
13
|
## Links
|
|
14
14
|
|
|
15
15
|
- [Website](https://discordeno.js.org/)
|
|
16
|
-
- [Documentation](https://
|
|
16
|
+
- [Documentation](https://discordeno.js.org)
|
|
17
17
|
- [Discord](https://discord.com/invite/5vBgXk3UcZ)
|
package/dist/cjs/images.cjs
CHANGED
|
@@ -73,7 +73,7 @@ _export(exports, {
|
|
|
73
73
|
const _types = require("@discordeno/types");
|
|
74
74
|
const _hash = require("./hash.cjs");
|
|
75
75
|
function formatImageUrl(url, size = 128, format) {
|
|
76
|
-
return `${url}.${format ?? (url.includes('/a_') ? 'gif' : '
|
|
76
|
+
return `${url}.${format ?? (url.includes('/a_') ? 'gif' : 'webp')}?size=${size}`;
|
|
77
77
|
}
|
|
78
78
|
function emojiUrl(emojiId, animated = false) {
|
|
79
79
|
return `https://cdn.discordapp.com/emojis/${emojiId}.${animated ? 'gif' : 'png'}`;
|
|
@@ -139,4 +139,4 @@ function roleIconUrl(roleId, iconHash, options) {
|
|
|
139
139
|
return iconHash ? formatImageUrl(`https://cdn.discordapp.com/role-icons/${roleId}/${typeof iconHash === 'string' ? iconHash : (0, _hash.iconBigintToHash)(iconHash)}`, options?.size ?? 128, options?.format) : undefined;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbWFnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBCaWdTdHJpbmcsIHR5cGUgR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5LCB0eXBlIEltYWdlRm9ybWF0LCB0eXBlIEltYWdlU2l6ZSwgU3RpY2tlckZvcm1hdFR5cGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBpY29uQmlnaW50VG9IYXNoIH0gZnJvbSAnLi9oYXNoLmpzJ1xuXG4vKiogSGVscCBmb3JtYXQgYW4gaW1hZ2UgdXJsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEltYWdlVXJsKHVybDogc3RyaW5nLCBzaXplOiBJbWFnZVNpemUgPSAxMjgsIGZvcm1hdD86IEltYWdlRm9ybWF0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3VybH0uJHtmb3JtYXQgPz8gKHVybC5pbmNsdWRlcygnL2FfJykgPyAnZ2lmJyA6ICdqcGcnKX0/c2l6ZT0ke3NpemV9YFxufVxuXG4vKipcbiAqIEdldCB0aGUgdXJsIGZvciBhbiBlbW9qaS5cbiAqXG4gKiBAcGFyYW0gZW1vamlJZCBUaGUgaWQgb2YgdGhlIGVtb2ppXG4gKiBAcGFyYW0gYW5pbWF0ZWQgV2hldGhlciBvciBub3QgdGhlIGVtb2ppIGlzIGFuaW1hdGVkXG4gKiBAcmV0dXJucyBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtb2ppVXJsKGVtb2ppSWQ6IEJpZ1N0cmluZywgYW5pbWF0ZWQgPSBmYWxzZSk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZW1vamlzLyR7ZW1vamlJZH0uJHthbmltYXRlZCA/ICdnaWYnIDogJ3BuZyd9YFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIHVzZXIncyBhdmF0YXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYXZhdGFyIG9mLlxuICogQHBhcmFtIGRpc2NyaW1pbmF0b3IgLSBUaGUgdXNlcidzIGRpc2NyaW1pbmF0b3IuICg0LWRpZ2l0IHRhZyBhZnRlciB0aGUgaGFzaHRhZy4pXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF2YXRhclVybChcbiAgdXNlcklkOiBCaWdTdHJpbmcsXG4gIGRpc2NyaW1pbmF0b3I6IHN0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBhdmF0YXI6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZFxuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmF2YXRhclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXJzLyR7dXNlcklkfS8ke3R5cGVvZiBvcHRpb25zLmF2YXRhciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmF2YXRhciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5hdmF0YXIpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZW1iZWQvYXZhdGFycy8ke2Rpc2NyaW1pbmF0b3IgPT09ICcwJyA/IChCaWdJbnQodXNlcklkKSA+PiBCaWdJbnQoMjIpKSAlIEJpZ0ludCg2KSA6IE51bWJlcihkaXNjcmltaW5hdG9yKSAlIDV9LnBuZ2Bcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF2YXRhckRlY29yYXRpb25VcmwoYXZhdGFyRGVjb3JhdGlvbjogQmlnU3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXItZGVjb3JhdGlvbi1wcmVzZXRzLyR7XG4gICAgdHlwZW9mIGF2YXRhckRlY29yYXRpb24gPT09ICdzdHJpbmcnID8gYXZhdGFyRGVjb3JhdGlvbiA6IGljb25CaWdpbnRUb0hhc2goYXZhdGFyRGVjb3JhdGlvbilcbiAgfS5wbmdgXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgdXNlcidzIGJhbm5lciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBiYW5uZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIG5vdCBiZWVuIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhbm5lclVybChcbiAgdXNlcklkOiBCaWdTdHJpbmcsXG4gIG9wdGlvbnM/OiB7XG4gICAgYmFubmVyPzogQmlnU3RyaW5nXG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucz8uYmFubmVyXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2Jhbm5lcnMvJHt1c2VySWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgYmFubmVyIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEJhbm5lclVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zOiB7XG4gICAgYmFubmVyPzogQmlnU3RyaW5nXG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucy5iYW5uZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYmFubmVycy8ke2d1aWxkSWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaW5rIHRvIHRoZSBiYW5uZXIgZm9yLlxuICogQHBhcmFtIGltYWdlSGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBldmVudCBjb3ZlciBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEljb25VcmwoXG4gIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgaW1hZ2VIYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaW1hZ2VIYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2ljb25zLyR7Z3VpbGRJZH0vJHt0eXBlb2YgaW1hZ2VIYXNoID09PSAnc3RyaW5nJyA/IGltYWdlSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaW1hZ2VIYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSBndWlsZCBzcGxhc2ggc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzcGxhc2ggb2YuXG4gKiBAcGFyYW0gaW1hZ2VIYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHNwbGFzaCBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc3BsYXNoIGltYWdlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkU3BsYXNoVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9zcGxhc2hlcy8ke2d1aWxkSWR9LyR7dHlwZW9mIGltYWdlSGFzaCA9PT0gJ3N0cmluZycgPyBpbWFnZUhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGltYWdlSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgZ3VpbGQgZGlzY292ZXJ5IHNwbGFzaCBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHNwbGFzaCBvZi5cbiAqIEBwYXJhbSBpbWFnZUhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgZGlzY292ZXJ5IHNwbGFzaCBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc3BsYXNoIGltYWdlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkRGlzY292ZXJ5U3BsYXNoVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9kaXNjb3Zlcnktc3BsYXNoZXMvJHtndWlsZElkfS8ke3R5cGVvZiBpbWFnZUhhc2ggPT09ICdzdHJpbmcnID8gaW1hZ2VIYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpbWFnZUhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIGd1aWxkIHNjaGVkdWxlZCBldmVudCBjb3ZlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBldmVudElkIC0gVGhlIElEIG9mIHRoZSBzY2hlZHVsZWQgZXZlbnQgdG8gZ2V0IHRoZSBjb3ZlciBvZi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3VpbGRTY2hlZHVsZWRFdmVudENvdmVyVXJsKFxuICBldmVudElkOiBCaWdTdHJpbmcsXG4gIG9wdGlvbnM6IHtcbiAgICBjb3Zlcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnMuY292ZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZ3VpbGQtZXZlbnRzLyR7ZXZlbnRJZH0vJHt0eXBlb2Ygb3B0aW9ucy5jb3ZlciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmNvdmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmNvdmVyKX1gLFxuICAgICAgICBvcHRpb25zLnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zLmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgd2lkZ2V0IGltYWdlIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgd2lkZ2V0IGltYWdlIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2lkZ2V0SW1hZ2VVcmwoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5KTogc3RyaW5nIHtcbiAgbGV0IHVybCA9IGBodHRwczovL2Rpc2NvcmRhcHAuY29tL2FwaS9ndWlsZHMvJHtndWlsZElkfS93aWRnZXQucG5nYFxuXG4gIGlmIChvcHRpb25zPy5zdHlsZSkge1xuICAgIHVybCArPSBgP3N0eWxlPSR7b3B0aW9ucy5zdHlsZX1gXG4gIH1cblxuICByZXR1cm4gdXJsXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgbWVtYmVyJ3MgYXZhdGFyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdoZXJlIHRoZSBtZW1iZXIgaXNcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBhdmF0YXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyQXZhdGFyVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGF2YXRhcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmF2YXRhclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9ndWlsZHMvJHtndWlsZElkfS91c2Vycy8ke3VzZXJJZH0vYXZhdGFycy8ke1xuICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmF2YXRhciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmF2YXRhciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5hdmF0YXIpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgbWVtYmVyJ3MgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdoZXJlIHRoZSBtZW1iZXIgaXNcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBiYW5uZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyQmFubmVyVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGJhbm5lcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmJhbm5lclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9ndWlsZHMvJHtndWlsZElkfS91c2Vycy8ke3VzZXJJZH0vYmFubmVycy8ke1xuICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmJhbm5lciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmJhbm5lciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5iYW5uZXIpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gaWNvbiBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGljb24gb2YuXG4gKiBAcGFyYW0gaWNvbkhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgYXBwbGljYXRpb24gaWNvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBsaWNhdGlvbkljb25VcmwoXG4gIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hcHAtaWNvbnMvJHthcHBsaWNhdGlvbklkfS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhbiBhcHBsaWNhdGlvbiBjb3ZlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGNvdmVyIG9mLlxuICogQHBhcmFtIGNvdmVySGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBhcHBsaWNhdGlvbiBjb3Zlci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25Db3ZlclVybChcbiAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICBjb3Zlckhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBjb3Zlckhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWljb25zLyR7YXBwbGljYXRpb25JZH0vJHt0eXBlb2YgY292ZXJIYXNoID09PSAnc3RyaW5nJyA/IGNvdmVySGFzaCA6IGljb25CaWdpbnRUb0hhc2goY292ZXJIYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gYXNzZXQgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBhc3NldCBvZi5cbiAqIEBwYXJhbSBhc3NldElkIC0gVGhlIGlkIGlkZW50aWZ5aW5nIHRoZSBhcHBsaWNhdGlvbiBhc3NldC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25Bc3NldFVybChcbiAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICBhc3NldElkOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYXNzZXRJZFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hcHAtaWNvbnMvJHthcHBsaWNhdGlvbklkfS8ke3R5cGVvZiBhc3NldElkID09PSAnc3RyaW5nJyA/IGFzc2V0SWQgOiBpY29uQmlnaW50VG9IYXNoKGFzc2V0SWQpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHN0aWNrZXIgcGFjayBiYW5uZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYmFubmVyQXNzZXRJZCAtIFRoZSBJRCBvZiB0aGUgYmFubmVyIGFzc2V0IGZvciB0aGUgc3RpY2tlciBwYWNrLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGlja2VyUGFja0Jhbm5lclVybChcbiAgYmFubmVyQXNzZXRJZDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGJhbm5lckFzc2V0SWRcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWFzc2V0cy83MTA5ODI0MTQzMDE3OTAyMTYvc3RvcmUvJHtcbiAgICAgICAgICB0eXBlb2YgYmFubmVyQXNzZXRJZCA9PT0gJ3N0cmluZycgPyBiYW5uZXJBc3NldElkIDogaWNvbkJpZ2ludFRvSGFzaChiYW5uZXJBc3NldElkKVxuICAgICAgICB9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgc3RpY2tlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBzdGlja2VySWQgLSBUaGUgSUQgb2YgdGhlIHN0aWNrZXIgdG8gZ2V0IHRoZSBpY29uIG9mXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0aWNrZXJVcmwoXG4gIHN0aWNrZXJJZDogQmlnU3RyaW5nIHwgbnVtYmVyLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICAgIHR5cGU/OiBTdGlja2VyRm9ybWF0VHlwZXNcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghc3RpY2tlcklkKSByZXR1cm5cblxuICBjb25zdCB1cmwgPVxuICAgIG9wdGlvbnM/LnR5cGUgPT09IFN0aWNrZXJGb3JtYXRUeXBlcy5HaWZcbiAgICAgID8gYGh0dHBzOi8vbWVkaWEuZGlzY29yZGFwcC5uZXQvc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuICAgICAgOiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuXG4gIHJldHVybiBmb3JtYXRJbWFnZVVybCh1cmwsIG9wdGlvbnM/LnNpemUgPz8gMTI4LCBvcHRpb25zPy5mb3JtYXQpXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSB0ZWFtIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdGVhbUlkIC0gVGhlIElEIG9mIHRoZSB0ZWFtIHRvIGdldCB0aGUgaWNvbiBvZlxuICogQHBhcmFtIGljb25IYXNoIC0gVGhlIGhhc2ggb2YgdGhlIHRlYW0gaWNvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVhbUljb25VcmwoXG4gIHRlYW1JZDogQmlnU3RyaW5nLFxuICBpY29uSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGljb25IYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL3RlYW0taWNvbnMvJHt0ZWFtSWR9L3N0b3JlLyR7dHlwZW9mIGljb25IYXNoID09PSAnc3RyaW5nJyA/IGljb25IYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpY29uSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgcm9sZSBpY29uIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHJvbGVJZCAtIFRoZSBJRCBvZiB0aGUgcm9sZSB0byBnZXQgdGhlIGljb24gb2ZcbiAqIEBwYXJhbSBpY29uSGFzaCAtIFRoZSBoYXNoIG9mIHRoZSByb2xlIGljb24uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVJY29uVXJsKFxuICByb2xlSWQ6IEJpZ1N0cmluZyxcbiAgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9yb2xlLWljb25zLyR7cm9sZUlkfS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cbiJdLCJuYW1lcyI6WyJhcHBsaWNhdGlvbkFzc2V0VXJsIiwiYXBwbGljYXRpb25Db3ZlclVybCIsImFwcGxpY2F0aW9uSWNvblVybCIsImF2YXRhckRlY29yYXRpb25VcmwiLCJhdmF0YXJVcmwiLCJiYW5uZXJVcmwiLCJlbW9qaVVybCIsImZvcm1hdEltYWdlVXJsIiwiZ2V0V2lkZ2V0SW1hZ2VVcmwiLCJndWlsZEJhbm5lclVybCIsImd1aWxkRGlzY292ZXJ5U3BsYXNoVXJsIiwiZ3VpbGRJY29uVXJsIiwiZ3VpbGRTY2hlZHVsZWRFdmVudENvdmVyVXJsIiwiZ3VpbGRTcGxhc2hVcmwiLCJtZW1iZXJBdmF0YXJVcmwiLCJtZW1iZXJCYW5uZXJVcmwiLCJyb2xlSWNvblVybCIsInN0aWNrZXJQYWNrQmFubmVyVXJsIiwic3RpY2tlclVybCIsInRlYW1JY29uVXJsIiwidXJsIiwic2l6ZSIsImZvcm1hdCIsImluY2x1ZGVzIiwiZW1vamlJZCIsImFuaW1hdGVkIiwidXNlcklkIiwiZGlzY3JpbWluYXRvciIsIm9wdGlvbnMiLCJhdmF0YXIiLCJpY29uQmlnaW50VG9IYXNoIiwiQmlnSW50IiwiTnVtYmVyIiwiYXZhdGFyRGVjb3JhdGlvbiIsImJhbm5lciIsInVuZGVmaW5lZCIsImd1aWxkSWQiLCJpbWFnZUhhc2giLCJldmVudElkIiwiY292ZXIiLCJzdHlsZSIsImFwcGxpY2F0aW9uSWQiLCJpY29uSGFzaCIsImNvdmVySGFzaCIsImFzc2V0SWQiLCJiYW5uZXJBc3NldElkIiwic3RpY2tlcklkIiwidHlwZSIsIlN0aWNrZXJGb3JtYXRUeXBlcyIsIkdpZiIsInRlYW1JZCIsInJvbGVJZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUF5VWdCQSxtQkFBbUI7ZUFBbkJBOztJQXpCQUMsbUJBQW1CO2VBQW5CQTs7SUF6QkFDLGtCQUFrQjtlQUFsQkE7O0lBMU9BQyxtQkFBbUI7ZUFBbkJBOztJQWxCQUMsU0FBUztlQUFUQTs7SUErQkFDLFNBQVM7ZUFBVEE7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
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbWFnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBCaWdTdHJpbmcsIHR5cGUgR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5LCB0eXBlIEltYWdlRm9ybWF0LCB0eXBlIEltYWdlU2l6ZSwgU3RpY2tlckZvcm1hdFR5cGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBpY29uQmlnaW50VG9IYXNoIH0gZnJvbSAnLi9oYXNoLmpzJ1xuXG4vKiogSGVscCBmb3JtYXQgYW4gaW1hZ2UgdXJsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEltYWdlVXJsKHVybDogc3RyaW5nLCBzaXplOiBJbWFnZVNpemUgPSAxMjgsIGZvcm1hdD86IEltYWdlRm9ybWF0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3VybH0uJHtmb3JtYXQgPz8gKHVybC5pbmNsdWRlcygnL2FfJykgPyAnZ2lmJyA6ICd3ZWJwJyl9P3NpemU9JHtzaXplfWBcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHVybCBmb3IgYW4gZW1vamkuXG4gKlxuICogQHBhcmFtIGVtb2ppSWQgVGhlIGlkIG9mIHRoZSBlbW9qaVxuICogQHBhcmFtIGFuaW1hdGVkIFdoZXRoZXIgb3Igbm90IHRoZSBlbW9qaSBpcyBhbmltYXRlZFxuICogQHJldHVybnMgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbW9qaVVybChlbW9qaUlkOiBCaWdTdHJpbmcsIGFuaW1hdGVkID0gZmFsc2UpOiBzdHJpbmcge1xuICByZXR1cm4gYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2Vtb2ppcy8ke2Vtb2ppSWR9LiR7YW5pbWF0ZWQgPyAnZ2lmJyA6ICdwbmcnfWBcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gYSB1c2VyJ3MgYXZhdGFyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBnZXQgdGhlIGF2YXRhciBvZi5cbiAqIEBwYXJhbSBkaXNjcmltaW5hdG9yIC0gVGhlIHVzZXIncyBkaXNjcmltaW5hdG9yLiAoNC1kaWdpdCB0YWcgYWZ0ZXIgdGhlIGhhc2h0YWcuKVxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdmF0YXJVcmwoXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBkaXNjcmltaW5hdG9yOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiB7XG4gICAgYXZhdGFyOiBCaWdTdHJpbmcgfCB1bmRlZmluZWRcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB7XG4gIHJldHVybiBvcHRpb25zPy5hdmF0YXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXZhdGFycy8ke3VzZXJJZH0vJHt0eXBlb2Ygb3B0aW9ucy5hdmF0YXIgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5hdmF0YXIgOiBpY29uQmlnaW50VG9IYXNoKG9wdGlvbnMuYXZhdGFyKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2VtYmVkL2F2YXRhcnMvJHtkaXNjcmltaW5hdG9yID09PSAnMCcgPyAoQmlnSW50KHVzZXJJZCkgPj4gQmlnSW50KDIyKSkgJSBCaWdJbnQoNikgOiBOdW1iZXIoZGlzY3JpbWluYXRvcikgJSA1fS5wbmdgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdmF0YXJEZWNvcmF0aW9uVXJsKGF2YXRhckRlY29yYXRpb246IEJpZ1N0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXZhdGFyLWRlY29yYXRpb24tcHJlc2V0cy8ke1xuICAgIHR5cGVvZiBhdmF0YXJEZWNvcmF0aW9uID09PSAnc3RyaW5nJyA/IGF2YXRhckRlY29yYXRpb24gOiBpY29uQmlnaW50VG9IYXNoKGF2YXRhckRlY29yYXRpb24pXG4gIH0ucG5nYFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIHVzZXIncyBiYW5uZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYmFubmVyIG9mLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAgaWYgbm8gYmFubmVyIGhhcyBub3QgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYW5uZXJVcmwoXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGJhbm5lcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmJhbm5lclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9iYW5uZXJzLyR7dXNlcklkfS8ke3R5cGVvZiBvcHRpb25zLmJhbm5lciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmJhbm5lciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5iYW5uZXIpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIGJhbm5lciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpbmsgdG8gdGhlIGJhbm5lciBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3VpbGRCYW5uZXJVcmwoXG4gIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIGJhbm5lcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnMuYmFubmVyXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2Jhbm5lcnMvJHtndWlsZElkfS8ke3R5cGVvZiBvcHRpb25zLmJhbm5lciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmJhbm5lciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5iYW5uZXIpfWAsXG4gICAgICAgIG9wdGlvbnMuc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnMuZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIHRoZSBndWlsZCBpY29uIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgYmFubmVyIGZvci5cbiAqIEBwYXJhbSBpbWFnZUhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgZXZlbnQgY292ZXIgaW1hZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3VpbGRJY29uVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9pY29ucy8ke2d1aWxkSWR9LyR7dHlwZW9mIGltYWdlSGFzaCA9PT0gJ3N0cmluZycgPyBpbWFnZUhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGltYWdlSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgZ3VpbGQgc3BsYXNoIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgc3BsYXNoIG9mLlxuICogQHBhcmFtIGltYWdlSGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBzcGxhc2ggaW1hZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiB0aGUgZ3VpbGQgZG9lcyBub3QgaGF2ZSBhIHNwbGFzaCBpbWFnZSBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZFNwbGFzaFVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBpbWFnZUhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpbWFnZUhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vc3BsYXNoZXMvJHtndWlsZElkfS8ke3R5cGVvZiBpbWFnZUhhc2ggPT09ICdzdHJpbmcnID8gaW1hZ2VIYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpbWFnZUhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIGd1aWxkIGRpc2NvdmVyeSBzcGxhc2ggc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzcGxhc2ggb2YuXG4gKiBAcGFyYW0gaW1hZ2VIYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIGRpc2NvdmVyeSBzcGxhc2ggaW1hZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiB0aGUgZ3VpbGQgZG9lcyBub3QgaGF2ZSBhIHNwbGFzaCBpbWFnZSBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZERpc2NvdmVyeVNwbGFzaFVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBpbWFnZUhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpbWFnZUhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZGlzY292ZXJ5LXNwbGFzaGVzLyR7Z3VpbGRJZH0vJHt0eXBlb2YgaW1hZ2VIYXNoID09PSAnc3RyaW5nJyA/IGltYWdlSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaW1hZ2VIYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSBndWlsZCBzY2hlZHVsZWQgZXZlbnQgY292ZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZXZlbnRJZCAtIFRoZSBJRCBvZiB0aGUgc2NoZWR1bGVkIGV2ZW50IHRvIGdldCB0aGUgY292ZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkU2NoZWR1bGVkRXZlbnRDb3ZlclVybChcbiAgZXZlbnRJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zOiB7XG4gICAgY292ZXI/OiBCaWdTdHJpbmdcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvcHRpb25zLmNvdmVyXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2d1aWxkLWV2ZW50cy8ke2V2ZW50SWR9LyR7dHlwZW9mIG9wdGlvbnMuY292ZXIgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5jb3ZlciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5jb3Zlcil9YCxcbiAgICAgICAgb3B0aW9ucy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIHdpZGdldCBpbWFnZSBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpbmsgdG8gdGhlIHdpZGdldCBpbWFnZSBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdpZGdldEltYWdlVXJsKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEd1aWxkV2lkZ2V0SW1hZ2VRdWVyeSk6IHN0cmluZyB7XG4gIGxldCB1cmwgPSBgaHR0cHM6Ly9kaXNjb3JkYXBwLmNvbS9hcGkvZ3VpbGRzLyR7Z3VpbGRJZH0vd2lkZ2V0LnBuZ2BcblxuICBpZiAob3B0aW9ucz8uc3R5bGUpIHtcbiAgICB1cmwgKz0gYD9zdHlsZT0ke29wdGlvbnMuc3R5bGV9YFxuICB9XG5cbiAgcmV0dXJuIHVybFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIG1lbWJlcidzIGF2YXRhciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB3aGVyZSB0aGUgbWVtYmVyIGlzXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYXZhdGFyIG9mLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAgaWYgbm8gYmFubmVyIGhhcyBiZWVuIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlckF2YXRhclVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICB1c2VySWQ6IEJpZ1N0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBhdmF0YXI/OiBCaWdTdHJpbmdcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvcHRpb25zPy5hdmF0YXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZ3VpbGRzLyR7Z3VpbGRJZH0vdXNlcnMvJHt1c2VySWR9L2F2YXRhcnMvJHtcbiAgICAgICAgICB0eXBlb2Ygb3B0aW9ucy5hdmF0YXIgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5hdmF0YXIgOiBpY29uQmlnaW50VG9IYXNoKG9wdGlvbnMuYXZhdGFyKVxuICAgICAgICB9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIG1lbWJlcidzIGJhbm5lciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB3aGVyZSB0aGUgbWVtYmVyIGlzXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYmFubmVyIG9mLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAgaWYgbm8gYmFubmVyIGhhcyBiZWVuIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlckJhbm5lclVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICB1c2VySWQ6IEJpZ1N0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBiYW5uZXI/OiBCaWdTdHJpbmdcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvcHRpb25zPy5iYW5uZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZ3VpbGRzLyR7Z3VpbGRJZH0vdXNlcnMvJHt1c2VySWR9L2Jhbm5lcnMvJHtcbiAgICAgICAgICB0eXBlb2Ygb3B0aW9ucy5iYW5uZXIgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5iYW5uZXIgOiBpY29uQmlnaW50VG9IYXNoKG9wdGlvbnMuYmFubmVyKVxuICAgICAgICB9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGFuIGFwcGxpY2F0aW9uIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBpY29uIG9mLlxuICogQHBhcmFtIGljb25IYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIGFwcGxpY2F0aW9uIGljb24uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25JY29uVXJsKFxuICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gIGljb25IYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaWNvbkhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWljb25zLyR7YXBwbGljYXRpb25JZH0vJHt0eXBlb2YgaWNvbkhhc2ggPT09ICdzdHJpbmcnID8gaWNvbkhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGljb25IYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gY292ZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBjb3ZlciBvZi5cbiAqIEBwYXJhbSBjb3Zlckhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgYXBwbGljYXRpb24gY292ZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGxpY2F0aW9uQ292ZXJVcmwoXG4gIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgY292ZXJIYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gY292ZXJIYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2FwcC1pY29ucy8ke2FwcGxpY2F0aW9uSWR9LyR7dHlwZW9mIGNvdmVySGFzaCA9PT0gJ3N0cmluZycgPyBjb3Zlckhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGNvdmVySGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGFuIGFwcGxpY2F0aW9uIGFzc2V0IHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgSUQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgYXNzZXQgb2YuXG4gKiBAcGFyYW0gYXNzZXRJZCAtIFRoZSBpZCBpZGVudGlmeWluZyB0aGUgYXBwbGljYXRpb24gYXNzZXQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGxpY2F0aW9uQXNzZXRVcmwoXG4gIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgYXNzZXRJZDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGFzc2V0SWRcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWljb25zLyR7YXBwbGljYXRpb25JZH0vJHt0eXBlb2YgYXNzZXRJZCA9PT0gJ3N0cmluZycgPyBhc3NldElkIDogaWNvbkJpZ2ludFRvSGFzaChhc3NldElkKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSBzdGlja2VyIHBhY2sgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGJhbm5lckFzc2V0SWQgLSBUaGUgSUQgb2YgdGhlIGJhbm5lciBhc3NldCBmb3IgdGhlIHN0aWNrZXIgcGFjay5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RpY2tlclBhY2tCYW5uZXJVcmwoXG4gIGJhbm5lckFzc2V0SWQ6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBiYW5uZXJBc3NldElkXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2FwcC1hc3NldHMvNzEwOTgyNDE0MzAxNzkwMjE2L3N0b3JlLyR7XG4gICAgICAgICAgdHlwZW9mIGJhbm5lckFzc2V0SWQgPT09ICdzdHJpbmcnID8gYmFubmVyQXNzZXRJZCA6IGljb25CaWdpbnRUb0hhc2goYmFubmVyQXNzZXRJZClcbiAgICAgICAgfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHN0aWNrZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gc3RpY2tlcklkIC0gVGhlIElEIG9mIHRoZSBzdGlja2VyIHRvIGdldCB0aGUgaWNvbiBvZlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGlja2VyVXJsKFxuICBzdGlja2VySWQ6IEJpZ1N0cmluZyB8IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgICB0eXBlPzogU3RpY2tlckZvcm1hdFR5cGVzXG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXN0aWNrZXJJZCkgcmV0dXJuXG5cbiAgY29uc3QgdXJsID1cbiAgICBvcHRpb25zPy50eXBlID09PSBTdGlja2VyRm9ybWF0VHlwZXMuR2lmXG4gICAgICA/IGBodHRwczovL21lZGlhLmRpc2NvcmRhcHAubmV0L3N0aWNrZXJzLyR7c3RpY2tlcklkfWBcbiAgICAgIDogYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL3N0aWNrZXJzLyR7c3RpY2tlcklkfWBcblxuICByZXR1cm4gZm9ybWF0SW1hZ2VVcmwodXJsLCBvcHRpb25zPy5zaXplID8/IDEyOCwgb3B0aW9ucz8uZm9ybWF0KVxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgdGVhbSBpY29uIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHRlYW1JZCAtIFRoZSBJRCBvZiB0aGUgdGVhbSB0byBnZXQgdGhlIGljb24gb2ZcbiAqIEBwYXJhbSBpY29uSGFzaCAtIFRoZSBoYXNoIG9mIHRoZSB0ZWFtIGljb24uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlYW1JY29uVXJsKFxuICB0ZWFtSWQ6IEJpZ1N0cmluZyxcbiAgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS90ZWFtLWljb25zLyR7dGVhbUlkfS9zdG9yZS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHJvbGUgaWNvbiBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSByb2xlSWQgLSBUaGUgSUQgb2YgdGhlIHJvbGUgdG8gZ2V0IHRoZSBpY29uIG9mXG4gKiBAcGFyYW0gaWNvbkhhc2ggLSBUaGUgaGFzaCBvZiB0aGUgcm9sZSBpY29uLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb2xlSWNvblVybChcbiAgcm9sZUlkOiBCaWdTdHJpbmcsXG4gIGljb25IYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaWNvbkhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vcm9sZS1pY29ucy8ke3JvbGVJZH0vJHt0eXBlb2YgaWNvbkhhc2ggPT09ICdzdHJpbmcnID8gaWNvbkhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGljb25IYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG4iXSwibmFtZXMiOlsiYXBwbGljYXRpb25Bc3NldFVybCIsImFwcGxpY2F0aW9uQ292ZXJVcmwiLCJhcHBsaWNhdGlvbkljb25VcmwiLCJhdmF0YXJEZWNvcmF0aW9uVXJsIiwiYXZhdGFyVXJsIiwiYmFubmVyVXJsIiwiZW1vamlVcmwiLCJmb3JtYXRJbWFnZVVybCIsImdldFdpZGdldEltYWdlVXJsIiwiZ3VpbGRCYW5uZXJVcmwiLCJndWlsZERpc2NvdmVyeVNwbGFzaFVybCIsImd1aWxkSWNvblVybCIsImd1aWxkU2NoZWR1bGVkRXZlbnRDb3ZlclVybCIsImd1aWxkU3BsYXNoVXJsIiwibWVtYmVyQXZhdGFyVXJsIiwibWVtYmVyQmFubmVyVXJsIiwicm9sZUljb25VcmwiLCJzdGlja2VyUGFja0Jhbm5lclVybCIsInN0aWNrZXJVcmwiLCJ0ZWFtSWNvblVybCIsInVybCIsInNpemUiLCJmb3JtYXQiLCJpbmNsdWRlcyIsImVtb2ppSWQiLCJhbmltYXRlZCIsInVzZXJJZCIsImRpc2NyaW1pbmF0b3IiLCJvcHRpb25zIiwiYXZhdGFyIiwiaWNvbkJpZ2ludFRvSGFzaCIsIkJpZ0ludCIsIk51bWJlciIsImF2YXRhckRlY29yYXRpb24iLCJiYW5uZXIiLCJ1bmRlZmluZWQiLCJndWlsZElkIiwiaW1hZ2VIYXNoIiwiZXZlbnRJZCIsImNvdmVyIiwic3R5bGUiLCJhcHBsaWNhdGlvbklkIiwiaWNvbkhhc2giLCJjb3Zlckhhc2giLCJhc3NldElkIiwiYmFubmVyQXNzZXRJZCIsInN0aWNrZXJJZCIsInR5cGUiLCJTdGlja2VyRm9ybWF0VHlwZXMiLCJHaWYiLCJ0ZWFtSWQiLCJyb2xlSWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBeVVnQkEsbUJBQW1CO2VBQW5CQTs7SUF6QkFDLG1CQUFtQjtlQUFuQkE7O0lBekJBQyxrQkFBa0I7ZUFBbEJBOztJQTFPQUMsbUJBQW1CO2VBQW5CQTs7SUFsQkFDLFNBQVM7ZUFBVEE7O0lBK0JBQyxTQUFTO2VBQVRB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
|
package/dist/cjs/utils.cjs
CHANGED
|
@@ -14,6 +14,9 @@ _export(exports, {
|
|
|
14
14
|
},
|
|
15
15
|
hasProperty: function() {
|
|
16
16
|
return hasProperty;
|
|
17
|
+
},
|
|
18
|
+
jsonSafeReplacer: function() {
|
|
19
|
+
return jsonSafeReplacer;
|
|
17
20
|
}
|
|
18
21
|
});
|
|
19
22
|
async function delay(ms) {
|
|
@@ -24,5 +27,14 @@ async function delay(ms) {
|
|
|
24
27
|
function hasProperty(obj, prop) {
|
|
25
28
|
return obj.hasOwnProperty(prop);
|
|
26
29
|
}
|
|
30
|
+
function jsonSafeReplacer(_key, value) {
|
|
31
|
+
switch(typeof value){
|
|
32
|
+
case 'bigint':
|
|
33
|
+
// Bigints are unserializable by `JSON.stringify`.
|
|
34
|
+
return String(value);
|
|
35
|
+
default:
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
27
39
|
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUGF1c2UgdGhlIGV4ZWN1dGlvbiBmb3IgYSBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUGF1c2UgdGhlIGV4ZWN1dGlvbiBmb3IgYSBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKTogTm9kZUpTLlRpbWVvdXQgPT5cbiAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICByZXNvbHZlKClcbiAgICAgIH0sIG1zKSxcbiAgKVxufVxuXG4vLyBUeXBlc2NyaXB0IGlzIG5vdCBzbyBnb29kIGFzIHdlIGRldmVsb3BlcnMgc28gd2UgbmVlZCB0aGlzIGxpdHRsZSB1dGlsaXR5IGZ1bmN0aW9uIHRvIGhlbHAgaXQgb3V0XG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZmV0dGJsb2cuZXUvdHlwZXNjcmlwdC1oYXNvd25wcm9wZXJ0eS9cbi8qKiBUUyBzYXZlIHdheSB0byBjaGVjayBpZiBhIHByb3BlcnR5IGV4aXN0cyBpbiBhbiBvYmplY3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQcm9wZXJ0eTxUIGV4dGVuZHMge30sIFkgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IHN0cmluZz4ob2JqOiBULCBwcm9wOiBZKTogb2JqIGlzIFQgJiBSZWNvcmQ8WSwgdW5rbm93bj4ge1xuICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KHByb3ApXG59XG5cbi8qKiBDb252ZXJ0IGBKU09OLnN0cmluZ2lmeWAtdW5zZXJpYWxpemFibGUgcmVjb3JkIHZhbHVlcyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25TYWZlUmVwbGFjZXIoX2tleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgICAvLyBCaWdpbnRzIGFyZSB1bnNlcmlhbGl6YWJsZSBieSBgSlNPTi5zdHJpbmdpZnlgLlxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgICBkZWZhdWx0OiAvLyBBbnkgb3RoZXIgdW5oYW5kbGVkIHR5cGUgdGhhdCBpc24ndCBzdXBwb3NlZCB0byByZXF1aXJlIGNvbnZlcnNpb24uXG4gICAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuIl0sIm5hbWVzIjpbImRlbGF5IiwiaGFzUHJvcGVydHkiLCJqc29uU2FmZVJlcGxhY2VyIiwibXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJvYmoiLCJwcm9wIiwiaGFzT3duUHJvcGVydHkiLCJfa2V5IiwidmFsdWUiLCJTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDs7Ozs7Ozs7Ozs7SUFDdENBLEtBQUs7ZUFBTEE7O0lBWU5DLFdBQVc7ZUFBWEE7O0lBS0FDLGdCQUFnQjtlQUFoQkE7OztBQWpCVCxlQUFlRixNQUFNRyxFQUFVO0lBQ3BDLE9BQU8sSUFBSUMsUUFDVCxDQUFDQyxVQUNDQyxXQUFXO1lBQ1REO1FBQ0YsR0FBR0Y7QUFFVDtBQUtPLFNBQVNGLFlBQTBETSxHQUFNLEVBQUVDLElBQU87SUFDdkYsT0FBT0QsSUFBSUUsY0FBYyxDQUFDRDtBQUM1QjtBQUdPLFNBQVNOLGlCQUFpQlEsSUFBWSxFQUFFQyxLQUFjO0lBQzNELE9BQVEsT0FBT0E7UUFDYixLQUFLO1lBQ0gsa0RBQWtEO1lBQ2xELE9BQU9DLE9BQU9EO1FBQ2hCO1lBQ0UsT0FBT0E7SUFDWDtBQUNGIn0=
|
package/dist/esm/images.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StickerFormatTypes } from '@discordeno/types';
|
|
2
2
|
import { iconBigintToHash } from './hash.js';
|
|
3
3
|
/** Help format an image url. */ export function formatImageUrl(url, size = 128, format) {
|
|
4
|
-
return `${url}.${format ?? (url.includes('/a_') ? 'gif' : '
|
|
4
|
+
return `${url}.${format ?? (url.includes('/a_') ? 'gif' : 'webp')}?size=${size}`;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
7
|
* Get the url for an emoji.
|
|
@@ -186,4 +186,4 @@ export function avatarDecorationUrl(avatarDecoration) {
|
|
|
186
186
|
return iconHash ? formatImageUrl(`https://cdn.discordapp.com/role-icons/${roleId}/${typeof iconHash === 'string' ? iconHash : iconBigintToHash(iconHash)}`, options?.size ?? 128, options?.format) : undefined;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbWFnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBCaWdTdHJpbmcsIHR5cGUgR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5LCB0eXBlIEltYWdlRm9ybWF0LCB0eXBlIEltYWdlU2l6ZSwgU3RpY2tlckZvcm1hdFR5cGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBpY29uQmlnaW50VG9IYXNoIH0gZnJvbSAnLi9oYXNoLmpzJ1xuXG4vKiogSGVscCBmb3JtYXQgYW4gaW1hZ2UgdXJsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEltYWdlVXJsKHVybDogc3RyaW5nLCBzaXplOiBJbWFnZVNpemUgPSAxMjgsIGZvcm1hdD86IEltYWdlRm9ybWF0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3VybH0uJHtmb3JtYXQgPz8gKHVybC5pbmNsdWRlcygnL2FfJykgPyAnZ2lmJyA6ICdqcGcnKX0/c2l6ZT0ke3NpemV9YFxufVxuXG4vKipcbiAqIEdldCB0aGUgdXJsIGZvciBhbiBlbW9qaS5cbiAqXG4gKiBAcGFyYW0gZW1vamlJZCBUaGUgaWQgb2YgdGhlIGVtb2ppXG4gKiBAcGFyYW0gYW5pbWF0ZWQgV2hldGhlciBvciBub3QgdGhlIGVtb2ppIGlzIGFuaW1hdGVkXG4gKiBAcmV0dXJucyBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtb2ppVXJsKGVtb2ppSWQ6IEJpZ1N0cmluZywgYW5pbWF0ZWQgPSBmYWxzZSk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZW1vamlzLyR7ZW1vamlJZH0uJHthbmltYXRlZCA/ICdnaWYnIDogJ3BuZyd9YFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIHVzZXIncyBhdmF0YXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYXZhdGFyIG9mLlxuICogQHBhcmFtIGRpc2NyaW1pbmF0b3IgLSBUaGUgdXNlcidzIGRpc2NyaW1pbmF0b3IuICg0LWRpZ2l0IHRhZyBhZnRlciB0aGUgaGFzaHRhZy4pXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF2YXRhclVybChcbiAgdXNlcklkOiBCaWdTdHJpbmcsXG4gIGRpc2NyaW1pbmF0b3I6IHN0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBhdmF0YXI6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZFxuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmF2YXRhclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXJzLyR7dXNlcklkfS8ke3R5cGVvZiBvcHRpb25zLmF2YXRhciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmF2YXRhciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5hdmF0YXIpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZW1iZWQvYXZhdGFycy8ke2Rpc2NyaW1pbmF0b3IgPT09ICcwJyA/IChCaWdJbnQodXNlcklkKSA+PiBCaWdJbnQoMjIpKSAlIEJpZ0ludCg2KSA6IE51bWJlcihkaXNjcmltaW5hdG9yKSAlIDV9LnBuZ2Bcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF2YXRhckRlY29yYXRpb25VcmwoYXZhdGFyRGVjb3JhdGlvbjogQmlnU3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXItZGVjb3JhdGlvbi1wcmVzZXRzLyR7XG4gICAgdHlwZW9mIGF2YXRhckRlY29yYXRpb24gPT09ICdzdHJpbmcnID8gYXZhdGFyRGVjb3JhdGlvbiA6IGljb25CaWdpbnRUb0hhc2goYXZhdGFyRGVjb3JhdGlvbilcbiAgfS5wbmdgXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgdXNlcidzIGJhbm5lciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBiYW5uZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIG5vdCBiZWVuIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhbm5lclVybChcbiAgdXNlcklkOiBCaWdTdHJpbmcsXG4gIG9wdGlvbnM/OiB7XG4gICAgYmFubmVyPzogQmlnU3RyaW5nXG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucz8uYmFubmVyXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2Jhbm5lcnMvJHt1c2VySWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgYmFubmVyIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEJhbm5lclVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zOiB7XG4gICAgYmFubmVyPzogQmlnU3RyaW5nXG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucy5iYW5uZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYmFubmVycy8ke2d1aWxkSWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaW5rIHRvIHRoZSBiYW5uZXIgZm9yLlxuICogQHBhcmFtIGltYWdlSGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBldmVudCBjb3ZlciBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEljb25VcmwoXG4gIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgaW1hZ2VIYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaW1hZ2VIYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2ljb25zLyR7Z3VpbGRJZH0vJHt0eXBlb2YgaW1hZ2VIYXNoID09PSAnc3RyaW5nJyA/IGltYWdlSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaW1hZ2VIYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSBndWlsZCBzcGxhc2ggc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzcGxhc2ggb2YuXG4gKiBAcGFyYW0gaW1hZ2VIYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHNwbGFzaCBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc3BsYXNoIGltYWdlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkU3BsYXNoVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9zcGxhc2hlcy8ke2d1aWxkSWR9LyR7dHlwZW9mIGltYWdlSGFzaCA9PT0gJ3N0cmluZycgPyBpbWFnZUhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGltYWdlSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgZ3VpbGQgZGlzY292ZXJ5IHNwbGFzaCBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHNwbGFzaCBvZi5cbiAqIEBwYXJhbSBpbWFnZUhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgZGlzY292ZXJ5IHNwbGFzaCBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc3BsYXNoIGltYWdlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkRGlzY292ZXJ5U3BsYXNoVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9kaXNjb3Zlcnktc3BsYXNoZXMvJHtndWlsZElkfS8ke3R5cGVvZiBpbWFnZUhhc2ggPT09ICdzdHJpbmcnID8gaW1hZ2VIYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpbWFnZUhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIGd1aWxkIHNjaGVkdWxlZCBldmVudCBjb3ZlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBldmVudElkIC0gVGhlIElEIG9mIHRoZSBzY2hlZHVsZWQgZXZlbnQgdG8gZ2V0IHRoZSBjb3ZlciBvZi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3VpbGRTY2hlZHVsZWRFdmVudENvdmVyVXJsKFxuICBldmVudElkOiBCaWdTdHJpbmcsXG4gIG9wdGlvbnM6IHtcbiAgICBjb3Zlcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnMuY292ZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZ3VpbGQtZXZlbnRzLyR7ZXZlbnRJZH0vJHt0eXBlb2Ygb3B0aW9ucy5jb3ZlciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmNvdmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmNvdmVyKX1gLFxuICAgICAgICBvcHRpb25zLnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zLmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgd2lkZ2V0IGltYWdlIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgd2lkZ2V0IGltYWdlIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2lkZ2V0SW1hZ2VVcmwoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5KTogc3RyaW5nIHtcbiAgbGV0IHVybCA9IGBodHRwczovL2Rpc2NvcmRhcHAuY29tL2FwaS9ndWlsZHMvJHtndWlsZElkfS93aWRnZXQucG5nYFxuXG4gIGlmIChvcHRpb25zPy5zdHlsZSkge1xuICAgIHVybCArPSBgP3N0eWxlPSR7b3B0aW9ucy5zdHlsZX1gXG4gIH1cblxuICByZXR1cm4gdXJsXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgbWVtYmVyJ3MgYXZhdGFyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdoZXJlIHRoZSBtZW1iZXIgaXNcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBhdmF0YXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyQXZhdGFyVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGF2YXRhcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmF2YXRhclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9ndWlsZHMvJHtndWlsZElkfS91c2Vycy8ke3VzZXJJZH0vYXZhdGFycy8ke1xuICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmF2YXRhciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmF2YXRhciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5hdmF0YXIpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgbWVtYmVyJ3MgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdoZXJlIHRoZSBtZW1iZXIgaXNcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBiYW5uZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyQmFubmVyVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGJhbm5lcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmJhbm5lclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9ndWlsZHMvJHtndWlsZElkfS91c2Vycy8ke3VzZXJJZH0vYmFubmVycy8ke1xuICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmJhbm5lciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmJhbm5lciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5iYW5uZXIpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gaWNvbiBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGljb24gb2YuXG4gKiBAcGFyYW0gaWNvbkhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgYXBwbGljYXRpb24gaWNvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBsaWNhdGlvbkljb25VcmwoXG4gIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hcHAtaWNvbnMvJHthcHBsaWNhdGlvbklkfS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhbiBhcHBsaWNhdGlvbiBjb3ZlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGNvdmVyIG9mLlxuICogQHBhcmFtIGNvdmVySGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBhcHBsaWNhdGlvbiBjb3Zlci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25Db3ZlclVybChcbiAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICBjb3Zlckhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBjb3Zlckhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWljb25zLyR7YXBwbGljYXRpb25JZH0vJHt0eXBlb2YgY292ZXJIYXNoID09PSAnc3RyaW5nJyA/IGNvdmVySGFzaCA6IGljb25CaWdpbnRUb0hhc2goY292ZXJIYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gYXNzZXQgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBhc3NldCBvZi5cbiAqIEBwYXJhbSBhc3NldElkIC0gVGhlIGlkIGlkZW50aWZ5aW5nIHRoZSBhcHBsaWNhdGlvbiBhc3NldC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25Bc3NldFVybChcbiAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICBhc3NldElkOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYXNzZXRJZFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hcHAtaWNvbnMvJHthcHBsaWNhdGlvbklkfS8ke3R5cGVvZiBhc3NldElkID09PSAnc3RyaW5nJyA/IGFzc2V0SWQgOiBpY29uQmlnaW50VG9IYXNoKGFzc2V0SWQpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHN0aWNrZXIgcGFjayBiYW5uZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYmFubmVyQXNzZXRJZCAtIFRoZSBJRCBvZiB0aGUgYmFubmVyIGFzc2V0IGZvciB0aGUgc3RpY2tlciBwYWNrLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGlja2VyUGFja0Jhbm5lclVybChcbiAgYmFubmVyQXNzZXRJZDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGJhbm5lckFzc2V0SWRcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWFzc2V0cy83MTA5ODI0MTQzMDE3OTAyMTYvc3RvcmUvJHtcbiAgICAgICAgICB0eXBlb2YgYmFubmVyQXNzZXRJZCA9PT0gJ3N0cmluZycgPyBiYW5uZXJBc3NldElkIDogaWNvbkJpZ2ludFRvSGFzaChiYW5uZXJBc3NldElkKVxuICAgICAgICB9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgc3RpY2tlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBzdGlja2VySWQgLSBUaGUgSUQgb2YgdGhlIHN0aWNrZXIgdG8gZ2V0IHRoZSBpY29uIG9mXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0aWNrZXJVcmwoXG4gIHN0aWNrZXJJZDogQmlnU3RyaW5nIHwgbnVtYmVyLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICAgIHR5cGU/OiBTdGlja2VyRm9ybWF0VHlwZXNcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghc3RpY2tlcklkKSByZXR1cm5cblxuICBjb25zdCB1cmwgPVxuICAgIG9wdGlvbnM/LnR5cGUgPT09IFN0aWNrZXJGb3JtYXRUeXBlcy5HaWZcbiAgICAgID8gYGh0dHBzOi8vbWVkaWEuZGlzY29yZGFwcC5uZXQvc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuICAgICAgOiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuXG4gIHJldHVybiBmb3JtYXRJbWFnZVVybCh1cmwsIG9wdGlvbnM/LnNpemUgPz8gMTI4LCBvcHRpb25zPy5mb3JtYXQpXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSB0ZWFtIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdGVhbUlkIC0gVGhlIElEIG9mIHRoZSB0ZWFtIHRvIGdldCB0aGUgaWNvbiBvZlxuICogQHBhcmFtIGljb25IYXNoIC0gVGhlIGhhc2ggb2YgdGhlIHRlYW0gaWNvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVhbUljb25VcmwoXG4gIHRlYW1JZDogQmlnU3RyaW5nLFxuICBpY29uSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGljb25IYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL3RlYW0taWNvbnMvJHt0ZWFtSWR9L3N0b3JlLyR7dHlwZW9mIGljb25IYXNoID09PSAnc3RyaW5nJyA/IGljb25IYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpY29uSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgcm9sZSBpY29uIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHJvbGVJZCAtIFRoZSBJRCBvZiB0aGUgcm9sZSB0byBnZXQgdGhlIGljb24gb2ZcbiAqIEBwYXJhbSBpY29uSGFzaCAtIFRoZSBoYXNoIG9mIHRoZSByb2xlIGljb24uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVJY29uVXJsKFxuICByb2xlSWQ6IEJpZ1N0cmluZyxcbiAgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9yb2xlLWljb25zLyR7cm9sZUlkfS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cbiJdLCJuYW1lcyI6WyJTdGlja2VyRm9ybWF0VHlwZXMiLCJpY29uQmlnaW50VG9IYXNoIiwiZm9ybWF0SW1hZ2VVcmwiLCJ1cmwiLCJzaXplIiwiZm9ybWF0IiwiaW5jbHVkZXMiLCJlbW9qaVVybCIsImVtb2ppSWQiLCJhbmltYXRlZCIsImF2YXRhclVybCIsInVzZXJJZCIsImRpc2NyaW1pbmF0b3IiLCJvcHRpb25zIiwiYXZhdGFyIiwiQmlnSW50IiwiTnVtYmVyIiwiYXZhdGFyRGVjb3JhdGlvblVybCIsImF2YXRhckRlY29yYXRpb24iLCJiYW5uZXJVcmwiLCJiYW5uZXIiLCJ1bmRlZmluZWQiLCJndWlsZEJhbm5lclVybCIsImd1aWxkSWQiLCJndWlsZEljb25VcmwiLCJpbWFnZUhhc2giLCJndWlsZFNwbGFzaFVybCIsImd1aWxkRGlzY292ZXJ5U3BsYXNoVXJsIiwiZ3VpbGRTY2hlZHVsZWRFdmVudENvdmVyVXJsIiwiZXZlbnRJZCIsImNvdmVyIiwiZ2V0V2lkZ2V0SW1hZ2VVcmwiLCJzdHlsZSIsIm1lbWJlckF2YXRhclVybCIsIm1lbWJlckJhbm5lclVybCIsImFwcGxpY2F0aW9uSWNvblVybCIsImFwcGxpY2F0aW9uSWQiLCJpY29uSGFzaCIsImFwcGxpY2F0aW9uQ292ZXJVcmwiLCJjb3Zlckhhc2giLCJhcHBsaWNhdGlvbkFzc2V0VXJsIiwiYXNzZXRJZCIsInN0aWNrZXJQYWNrQmFubmVyVXJsIiwiYmFubmVyQXNzZXRJZCIsInN0aWNrZXJVcmwiLCJzdGlja2VySWQiLCJ0eXBlIiwiR2lmIiwidGVhbUljb25VcmwiLCJ0ZWFtSWQiLCJyb2xlSWNvblVybCIsInJvbGVJZCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBMEZBLGtCQUFrQixRQUFRLG9CQUFtQjtBQUN2SSxTQUFTQyxnQkFBZ0IsUUFBUSxZQUFXO0FBRTVDLDhCQUE4QixHQUM5QixPQUFPLFNBQVNDLGVBQWVDLEdBQVcsRUFBRUMsT0FBa0IsR0FBRyxFQUFFQyxNQUFvQjtJQUNyRixP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
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbWFnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBCaWdTdHJpbmcsIHR5cGUgR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5LCB0eXBlIEltYWdlRm9ybWF0LCB0eXBlIEltYWdlU2l6ZSwgU3RpY2tlckZvcm1hdFR5cGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBpY29uQmlnaW50VG9IYXNoIH0gZnJvbSAnLi9oYXNoLmpzJ1xuXG4vKiogSGVscCBmb3JtYXQgYW4gaW1hZ2UgdXJsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEltYWdlVXJsKHVybDogc3RyaW5nLCBzaXplOiBJbWFnZVNpemUgPSAxMjgsIGZvcm1hdD86IEltYWdlRm9ybWF0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3VybH0uJHtmb3JtYXQgPz8gKHVybC5pbmNsdWRlcygnL2FfJykgPyAnZ2lmJyA6ICd3ZWJwJyl9P3NpemU9JHtzaXplfWBcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHVybCBmb3IgYW4gZW1vamkuXG4gKlxuICogQHBhcmFtIGVtb2ppSWQgVGhlIGlkIG9mIHRoZSBlbW9qaVxuICogQHBhcmFtIGFuaW1hdGVkIFdoZXRoZXIgb3Igbm90IHRoZSBlbW9qaSBpcyBhbmltYXRlZFxuICogQHJldHVybnMgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbW9qaVVybChlbW9qaUlkOiBCaWdTdHJpbmcsIGFuaW1hdGVkID0gZmFsc2UpOiBzdHJpbmcge1xuICByZXR1cm4gYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2Vtb2ppcy8ke2Vtb2ppSWR9LiR7YW5pbWF0ZWQgPyAnZ2lmJyA6ICdwbmcnfWBcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gYSB1c2VyJ3MgYXZhdGFyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBnZXQgdGhlIGF2YXRhciBvZi5cbiAqIEBwYXJhbSBkaXNjcmltaW5hdG9yIC0gVGhlIHVzZXIncyBkaXNjcmltaW5hdG9yLiAoNC1kaWdpdCB0YWcgYWZ0ZXIgdGhlIGhhc2h0YWcuKVxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdmF0YXJVcmwoXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBkaXNjcmltaW5hdG9yOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiB7XG4gICAgYXZhdGFyOiBCaWdTdHJpbmcgfCB1bmRlZmluZWRcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB7XG4gIHJldHVybiBvcHRpb25zPy5hdmF0YXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXZhdGFycy8ke3VzZXJJZH0vJHt0eXBlb2Ygb3B0aW9ucy5hdmF0YXIgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5hdmF0YXIgOiBpY29uQmlnaW50VG9IYXNoKG9wdGlvbnMuYXZhdGFyKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2VtYmVkL2F2YXRhcnMvJHtkaXNjcmltaW5hdG9yID09PSAnMCcgPyAoQmlnSW50KHVzZXJJZCkgPj4gQmlnSW50KDIyKSkgJSBCaWdJbnQoNikgOiBOdW1iZXIoZGlzY3JpbWluYXRvcikgJSA1fS5wbmdgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdmF0YXJEZWNvcmF0aW9uVXJsKGF2YXRhckRlY29yYXRpb246IEJpZ1N0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXZhdGFyLWRlY29yYXRpb24tcHJlc2V0cy8ke1xuICAgIHR5cGVvZiBhdmF0YXJEZWNvcmF0aW9uID09PSAnc3RyaW5nJyA/IGF2YXRhckRlY29yYXRpb24gOiBpY29uQmlnaW50VG9IYXNoKGF2YXRhckRlY29yYXRpb24pXG4gIH0ucG5nYFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIHVzZXIncyBiYW5uZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYmFubmVyIG9mLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAgaWYgbm8gYmFubmVyIGhhcyBub3QgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYW5uZXJVcmwoXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGJhbm5lcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmJhbm5lclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9iYW5uZXJzLyR7dXNlcklkfS8ke3R5cGVvZiBvcHRpb25zLmJhbm5lciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmJhbm5lciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5iYW5uZXIpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIGJhbm5lciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpbmsgdG8gdGhlIGJhbm5lciBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3VpbGRCYW5uZXJVcmwoXG4gIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIGJhbm5lcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnMuYmFubmVyXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2Jhbm5lcnMvJHtndWlsZElkfS8ke3R5cGVvZiBvcHRpb25zLmJhbm5lciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmJhbm5lciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5iYW5uZXIpfWAsXG4gICAgICAgIG9wdGlvbnMuc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnMuZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIHRoZSBndWlsZCBpY29uIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgYmFubmVyIGZvci5cbiAqIEBwYXJhbSBpbWFnZUhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgZXZlbnQgY292ZXIgaW1hZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3VpbGRJY29uVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9pY29ucy8ke2d1aWxkSWR9LyR7dHlwZW9mIGltYWdlSGFzaCA9PT0gJ3N0cmluZycgPyBpbWFnZUhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGltYWdlSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgZ3VpbGQgc3BsYXNoIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgc3BsYXNoIG9mLlxuICogQHBhcmFtIGltYWdlSGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBzcGxhc2ggaW1hZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiB0aGUgZ3VpbGQgZG9lcyBub3QgaGF2ZSBhIHNwbGFzaCBpbWFnZSBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZFNwbGFzaFVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBpbWFnZUhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpbWFnZUhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vc3BsYXNoZXMvJHtndWlsZElkfS8ke3R5cGVvZiBpbWFnZUhhc2ggPT09ICdzdHJpbmcnID8gaW1hZ2VIYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpbWFnZUhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIGd1aWxkIGRpc2NvdmVyeSBzcGxhc2ggc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzcGxhc2ggb2YuXG4gKiBAcGFyYW0gaW1hZ2VIYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIGRpc2NvdmVyeSBzcGxhc2ggaW1hZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiB0aGUgZ3VpbGQgZG9lcyBub3QgaGF2ZSBhIHNwbGFzaCBpbWFnZSBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZERpc2NvdmVyeVNwbGFzaFVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBpbWFnZUhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpbWFnZUhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZGlzY292ZXJ5LXNwbGFzaGVzLyR7Z3VpbGRJZH0vJHt0eXBlb2YgaW1hZ2VIYXNoID09PSAnc3RyaW5nJyA/IGltYWdlSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaW1hZ2VIYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSBndWlsZCBzY2hlZHVsZWQgZXZlbnQgY292ZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZXZlbnRJZCAtIFRoZSBJRCBvZiB0aGUgc2NoZWR1bGVkIGV2ZW50IHRvIGdldCB0aGUgY292ZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkU2NoZWR1bGVkRXZlbnRDb3ZlclVybChcbiAgZXZlbnRJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zOiB7XG4gICAgY292ZXI/OiBCaWdTdHJpbmdcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvcHRpb25zLmNvdmVyXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2d1aWxkLWV2ZW50cy8ke2V2ZW50SWR9LyR7dHlwZW9mIG9wdGlvbnMuY292ZXIgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5jb3ZlciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5jb3Zlcil9YCxcbiAgICAgICAgb3B0aW9ucy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIHdpZGdldCBpbWFnZSBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpbmsgdG8gdGhlIHdpZGdldCBpbWFnZSBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdpZGdldEltYWdlVXJsKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEd1aWxkV2lkZ2V0SW1hZ2VRdWVyeSk6IHN0cmluZyB7XG4gIGxldCB1cmwgPSBgaHR0cHM6Ly9kaXNjb3JkYXBwLmNvbS9hcGkvZ3VpbGRzLyR7Z3VpbGRJZH0vd2lkZ2V0LnBuZ2BcblxuICBpZiAob3B0aW9ucz8uc3R5bGUpIHtcbiAgICB1cmwgKz0gYD9zdHlsZT0ke29wdGlvbnMuc3R5bGV9YFxuICB9XG5cbiAgcmV0dXJuIHVybFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIG1lbWJlcidzIGF2YXRhciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB3aGVyZSB0aGUgbWVtYmVyIGlzXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYXZhdGFyIG9mLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAgaWYgbm8gYmFubmVyIGhhcyBiZWVuIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlckF2YXRhclVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICB1c2VySWQ6IEJpZ1N0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBhdmF0YXI/OiBCaWdTdHJpbmdcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvcHRpb25zPy5hdmF0YXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZ3VpbGRzLyR7Z3VpbGRJZH0vdXNlcnMvJHt1c2VySWR9L2F2YXRhcnMvJHtcbiAgICAgICAgICB0eXBlb2Ygb3B0aW9ucy5hdmF0YXIgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5hdmF0YXIgOiBpY29uQmlnaW50VG9IYXNoKG9wdGlvbnMuYXZhdGFyKVxuICAgICAgICB9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIG1lbWJlcidzIGJhbm5lciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB3aGVyZSB0aGUgbWVtYmVyIGlzXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYmFubmVyIG9mLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAgaWYgbm8gYmFubmVyIGhhcyBiZWVuIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlckJhbm5lclVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICB1c2VySWQ6IEJpZ1N0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBiYW5uZXI/OiBCaWdTdHJpbmdcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvcHRpb25zPy5iYW5uZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZ3VpbGRzLyR7Z3VpbGRJZH0vdXNlcnMvJHt1c2VySWR9L2Jhbm5lcnMvJHtcbiAgICAgICAgICB0eXBlb2Ygb3B0aW9ucy5iYW5uZXIgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5iYW5uZXIgOiBpY29uQmlnaW50VG9IYXNoKG9wdGlvbnMuYmFubmVyKVxuICAgICAgICB9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGFuIGFwcGxpY2F0aW9uIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBpY29uIG9mLlxuICogQHBhcmFtIGljb25IYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIGFwcGxpY2F0aW9uIGljb24uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25JY29uVXJsKFxuICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gIGljb25IYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaWNvbkhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWljb25zLyR7YXBwbGljYXRpb25JZH0vJHt0eXBlb2YgaWNvbkhhc2ggPT09ICdzdHJpbmcnID8gaWNvbkhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGljb25IYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gY292ZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBjb3ZlciBvZi5cbiAqIEBwYXJhbSBjb3Zlckhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgYXBwbGljYXRpb24gY292ZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGxpY2F0aW9uQ292ZXJVcmwoXG4gIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgY292ZXJIYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gY292ZXJIYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2FwcC1pY29ucy8ke2FwcGxpY2F0aW9uSWR9LyR7dHlwZW9mIGNvdmVySGFzaCA9PT0gJ3N0cmluZycgPyBjb3Zlckhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGNvdmVySGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGFuIGFwcGxpY2F0aW9uIGFzc2V0IHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgSUQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgYXNzZXQgb2YuXG4gKiBAcGFyYW0gYXNzZXRJZCAtIFRoZSBpZCBpZGVudGlmeWluZyB0aGUgYXBwbGljYXRpb24gYXNzZXQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGxpY2F0aW9uQXNzZXRVcmwoXG4gIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgYXNzZXRJZDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGFzc2V0SWRcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWljb25zLyR7YXBwbGljYXRpb25JZH0vJHt0eXBlb2YgYXNzZXRJZCA9PT0gJ3N0cmluZycgPyBhc3NldElkIDogaWNvbkJpZ2ludFRvSGFzaChhc3NldElkKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSBzdGlja2VyIHBhY2sgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGJhbm5lckFzc2V0SWQgLSBUaGUgSUQgb2YgdGhlIGJhbm5lciBhc3NldCBmb3IgdGhlIHN0aWNrZXIgcGFjay5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RpY2tlclBhY2tCYW5uZXJVcmwoXG4gIGJhbm5lckFzc2V0SWQ6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBiYW5uZXJBc3NldElkXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2FwcC1hc3NldHMvNzEwOTgyNDE0MzAxNzkwMjE2L3N0b3JlLyR7XG4gICAgICAgICAgdHlwZW9mIGJhbm5lckFzc2V0SWQgPT09ICdzdHJpbmcnID8gYmFubmVyQXNzZXRJZCA6IGljb25CaWdpbnRUb0hhc2goYmFubmVyQXNzZXRJZClcbiAgICAgICAgfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHN0aWNrZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gc3RpY2tlcklkIC0gVGhlIElEIG9mIHRoZSBzdGlja2VyIHRvIGdldCB0aGUgaWNvbiBvZlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGlja2VyVXJsKFxuICBzdGlja2VySWQ6IEJpZ1N0cmluZyB8IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgICB0eXBlPzogU3RpY2tlckZvcm1hdFR5cGVzXG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXN0aWNrZXJJZCkgcmV0dXJuXG5cbiAgY29uc3QgdXJsID1cbiAgICBvcHRpb25zPy50eXBlID09PSBTdGlja2VyRm9ybWF0VHlwZXMuR2lmXG4gICAgICA/IGBodHRwczovL21lZGlhLmRpc2NvcmRhcHAubmV0L3N0aWNrZXJzLyR7c3RpY2tlcklkfWBcbiAgICAgIDogYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL3N0aWNrZXJzLyR7c3RpY2tlcklkfWBcblxuICByZXR1cm4gZm9ybWF0SW1hZ2VVcmwodXJsLCBvcHRpb25zPy5zaXplID8/IDEyOCwgb3B0aW9ucz8uZm9ybWF0KVxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgdGVhbSBpY29uIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHRlYW1JZCAtIFRoZSBJRCBvZiB0aGUgdGVhbSB0byBnZXQgdGhlIGljb24gb2ZcbiAqIEBwYXJhbSBpY29uSGFzaCAtIFRoZSBoYXNoIG9mIHRoZSB0ZWFtIGljb24uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlYW1JY29uVXJsKFxuICB0ZWFtSWQ6IEJpZ1N0cmluZyxcbiAgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS90ZWFtLWljb25zLyR7dGVhbUlkfS9zdG9yZS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHJvbGUgaWNvbiBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSByb2xlSWQgLSBUaGUgSUQgb2YgdGhlIHJvbGUgdG8gZ2V0IHRoZSBpY29uIG9mXG4gKiBAcGFyYW0gaWNvbkhhc2ggLSBUaGUgaGFzaCBvZiB0aGUgcm9sZSBpY29uLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb2xlSWNvblVybChcbiAgcm9sZUlkOiBCaWdTdHJpbmcsXG4gIGljb25IYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaWNvbkhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vcm9sZS1pY29ucy8ke3JvbGVJZH0vJHt0eXBlb2YgaWNvbkhhc2ggPT09ICdzdHJpbmcnID8gaWNvbkhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGljb25IYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG4iXSwibmFtZXMiOlsiU3RpY2tlckZvcm1hdFR5cGVzIiwiaWNvbkJpZ2ludFRvSGFzaCIsImZvcm1hdEltYWdlVXJsIiwidXJsIiwic2l6ZSIsImZvcm1hdCIsImluY2x1ZGVzIiwiZW1vamlVcmwiLCJlbW9qaUlkIiwiYW5pbWF0ZWQiLCJhdmF0YXJVcmwiLCJ1c2VySWQiLCJkaXNjcmltaW5hdG9yIiwib3B0aW9ucyIsImF2YXRhciIsIkJpZ0ludCIsIk51bWJlciIsImF2YXRhckRlY29yYXRpb25VcmwiLCJhdmF0YXJEZWNvcmF0aW9uIiwiYmFubmVyVXJsIiwiYmFubmVyIiwidW5kZWZpbmVkIiwiZ3VpbGRCYW5uZXJVcmwiLCJndWlsZElkIiwiZ3VpbGRJY29uVXJsIiwiaW1hZ2VIYXNoIiwiZ3VpbGRTcGxhc2hVcmwiLCJndWlsZERpc2NvdmVyeVNwbGFzaFVybCIsImd1aWxkU2NoZWR1bGVkRXZlbnRDb3ZlclVybCIsImV2ZW50SWQiLCJjb3ZlciIsImdldFdpZGdldEltYWdlVXJsIiwic3R5bGUiLCJtZW1iZXJBdmF0YXJVcmwiLCJtZW1iZXJCYW5uZXJVcmwiLCJhcHBsaWNhdGlvbkljb25VcmwiLCJhcHBsaWNhdGlvbklkIiwiaWNvbkhhc2giLCJhcHBsaWNhdGlvbkNvdmVyVXJsIiwiY292ZXJIYXNoIiwiYXBwbGljYXRpb25Bc3NldFVybCIsImFzc2V0SWQiLCJzdGlja2VyUGFja0Jhbm5lclVybCIsImJhbm5lckFzc2V0SWQiLCJzdGlja2VyVXJsIiwic3RpY2tlcklkIiwidHlwZSIsIkdpZiIsInRlYW1JY29uVXJsIiwidGVhbUlkIiwicm9sZUljb25VcmwiLCJyb2xlSWQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQTBGQSxrQkFBa0IsUUFBUSxvQkFBbUI7QUFDdkksU0FBU0MsZ0JBQWdCLFFBQVEsWUFBVztBQUU1Qyw4QkFBOEIsR0FDOUIsT0FBTyxTQUFTQyxlQUFlQyxHQUFXLEVBQUVDLE9BQWtCLEdBQUcsRUFBRUMsTUFBb0I7SUFDckYs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
|
package/dist/esm/utils.js
CHANGED
|
@@ -8,5 +8,14 @@
|
|
|
8
8
|
/** TS save way to check if a property exists in an object */ export function hasProperty(obj, prop) {
|
|
9
9
|
return obj.hasOwnProperty(prop);
|
|
10
10
|
}
|
|
11
|
+
/** Convert `JSON.stringify`-unserializable record values for debugging purposes. */ export function jsonSafeReplacer(_key, value) {
|
|
12
|
+
switch(typeof value){
|
|
13
|
+
case 'bigint':
|
|
14
|
+
// Bigints are unserializable by `JSON.stringify`.
|
|
15
|
+
return String(value);
|
|
16
|
+
default:
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
11
20
|
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUGF1c2UgdGhlIGV4ZWN1dGlvbiBmb3IgYSBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUGF1c2UgdGhlIGV4ZWN1dGlvbiBmb3IgYSBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKTogTm9kZUpTLlRpbWVvdXQgPT5cbiAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICByZXNvbHZlKClcbiAgICAgIH0sIG1zKSxcbiAgKVxufVxuXG4vLyBUeXBlc2NyaXB0IGlzIG5vdCBzbyBnb29kIGFzIHdlIGRldmVsb3BlcnMgc28gd2UgbmVlZCB0aGlzIGxpdHRsZSB1dGlsaXR5IGZ1bmN0aW9uIHRvIGhlbHAgaXQgb3V0XG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZmV0dGJsb2cuZXUvdHlwZXNjcmlwdC1oYXNvd25wcm9wZXJ0eS9cbi8qKiBUUyBzYXZlIHdheSB0byBjaGVjayBpZiBhIHByb3BlcnR5IGV4aXN0cyBpbiBhbiBvYmplY3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQcm9wZXJ0eTxUIGV4dGVuZHMge30sIFkgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IHN0cmluZz4ob2JqOiBULCBwcm9wOiBZKTogb2JqIGlzIFQgJiBSZWNvcmQ8WSwgdW5rbm93bj4ge1xuICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KHByb3ApXG59XG5cbi8qKiBDb252ZXJ0IGBKU09OLnN0cmluZ2lmeWAtdW5zZXJpYWxpemFibGUgcmVjb3JkIHZhbHVlcyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25TYWZlUmVwbGFjZXIoX2tleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgICAvLyBCaWdpbnRzIGFyZSB1bnNlcmlhbGl6YWJsZSBieSBgSlNPTi5zdHJpbmdpZnlgLlxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgICBkZWZhdWx0OiAvLyBBbnkgb3RoZXIgdW5oYW5kbGVkIHR5cGUgdGhhdCBpc24ndCBzdXBwb3NlZCB0byByZXF1aXJlIGNvbnZlcnNpb24uXG4gICAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuIl0sIm5hbWVzIjpbImRlbGF5IiwibXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJoYXNQcm9wZXJ0eSIsIm9iaiIsInByb3AiLCJoYXNPd25Qcm9wZXJ0eSIsImpzb25TYWZlUmVwbGFjZXIiLCJfa2V5IiwidmFsdWUiLCJTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RCxHQUM1RCxPQUFPLGVBQWVBLE1BQU1DLEVBQVU7SUFDcEMsT0FBTyxJQUFJQyxRQUNULENBQUNDLFVBQ0NDLFdBQVc7WUFDVEQ7UUFDRixHQUFHRjtBQUVUO0FBRUEsb0dBQW9HO0FBQ3BHLDREQUE0RDtBQUM1RCwyREFBMkQsR0FDM0QsT0FBTyxTQUFTSSxZQUEwREMsR0FBTSxFQUFFQyxJQUFPO0lBQ3ZGLE9BQU9ELElBQUlFLGNBQWMsQ0FBQ0Q7QUFDNUI7QUFFQSxrRkFBa0YsR0FDbEYsT0FBTyxTQUFTRSxpQkFBaUJDLElBQVksRUFBRUMsS0FBYztJQUMzRCxPQUFRLE9BQU9BO1FBQ2IsS0FBSztZQUNILGtEQUFrRDtZQUNsRCxPQUFPQyxPQUFPRDtRQUNoQjtZQUNFLE9BQU9BO0lBQ1g7QUFDRiJ9
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -2,4 +2,6 @@
|
|
|
2
2
|
export declare function delay(ms: number): Promise<void>;
|
|
3
3
|
/** TS save way to check if a property exists in an object */
|
|
4
4
|
export declare function hasProperty<T extends {}, Y extends PropertyKey = string>(obj: T, prop: Y): obj is T & Record<Y, unknown>;
|
|
5
|
+
/** Convert `JSON.stringify`-unserializable record values for debugging purposes. */
|
|
6
|
+
export declare function jsonSafeReplacer(_key: string, value: unknown): unknown;
|
|
5
7
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrD;AAID,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,WAAW,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAExH"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrD;AAID,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,WAAW,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAExH;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAQtE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@discordeno/utils",
|
|
3
|
-
"version": "21.0.0-next.
|
|
3
|
+
"version": "21.0.0-next.ef5cf54",
|
|
4
4
|
"main": "./dist/esm/index.js",
|
|
5
5
|
"types": "./dist/types/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -33,15 +33,15 @@
|
|
|
33
33
|
"test:test-type": "tsc --project tests/tsconfig.json"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@discordeno/types": "21.0.0-next.
|
|
36
|
+
"@discordeno/types": "21.0.0-next.ef5cf54"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@biomejs/biome": "^1.9.4",
|
|
40
40
|
"@swc/cli": "^0.5.2",
|
|
41
|
-
"@swc/core": "^1.10.
|
|
41
|
+
"@swc/core": "^1.10.12",
|
|
42
42
|
"@types/chai": "^5.0.1",
|
|
43
43
|
"@types/mocha": "^10.0.10",
|
|
44
|
-
"@types/node": "^22.
|
|
44
|
+
"@types/node": "^22.13.0",
|
|
45
45
|
"@types/sinon": "^17.0.3",
|
|
46
46
|
"c8": "^10.1.3",
|
|
47
47
|
"chai": "^5.1.2",
|
|
@@ -49,6 +49,6 @@
|
|
|
49
49
|
"sinon": "^19.0.2",
|
|
50
50
|
"ts-node": "^10.9.2",
|
|
51
51
|
"tsconfig": "*",
|
|
52
|
-
"typescript": "^5.7.
|
|
52
|
+
"typescript": "^5.7.3"
|
|
53
53
|
}
|
|
54
54
|
}
|