pagy 43.5.1 → 43.5.2
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.
- checksums.yaml +4 -4
- data/apps/calendar.ru +1 -1
- data/apps/demo.ru +1 -1
- data/apps/keynav+root_key.ru +1 -1
- data/apps/keynav.ru +1 -1
- data/apps/keyset.ru +1 -1
- data/apps/keyset_sequel.ru +1 -1
- data/apps/rails.ru +1 -1
- data/apps/repro.ru +1 -1
- data/config/pagy.rb +1 -1
- data/javascripts/pagy.js +9 -11
- data/javascripts/pagy.min.js +1 -1
- data/javascripts/pagy.mjs +7 -9
- data/lib/pagy/toolbox/helpers/support/wrap_series_nav_js.rb +1 -4
- data/lib/pagy.rb +10 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b48e670962e285cc9f2899ed7e427ea0e5fc2d4e2e6c96a83c17d9564b680870
|
|
4
|
+
data.tar.gz: 46add94a1b0842b9871fbdf88938ebdd61ad97a47f677abd6c06d77c18fe7e6d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a1f7b39fb645a43f66aac3aa0c9574397f7b08929cb4c15ea351367b7d0c89a7130e36f0186eff55cf0e58b596c078ad64f9eda199c630c8d0731310c265a494
|
|
7
|
+
data.tar.gz: 7dfe4a5014fe49762de693a64398f7282444d25dcb0131af88fdd626ba0bf7e517b631b0f143843cb760e83c995cdc4f3839bbf764f6b5d0de98de9d5ce671d3
|
data/apps/calendar.ru
CHANGED
data/apps/demo.ru
CHANGED
data/apps/keynav+root_key.ru
CHANGED
data/apps/keynav.ru
CHANGED
data/apps/keyset.ru
CHANGED
data/apps/keyset_sequel.ru
CHANGED
data/apps/rails.ru
CHANGED
data/apps/repro.ru
CHANGED
data/config/pagy.rb
CHANGED
data/javascripts/pagy.js
CHANGED
|
@@ -21,7 +21,7 @@ var pagy_default = (() => {
|
|
|
21
21
|
}
|
|
22
22
|
const rjsObserver = new ResizeObserver((entries) => {
|
|
23
23
|
entries.forEach((e) => {
|
|
24
|
-
e.target.querySelectorAll(".
|
|
24
|
+
e.target.querySelectorAll(".series-nav-js").forEach((el) => {
|
|
25
25
|
el.render();
|
|
26
26
|
});
|
|
27
27
|
});
|
|
@@ -77,11 +77,11 @@ var pagy_default = (() => {
|
|
|
77
77
|
[widths, series, labels],
|
|
78
78
|
keynavArgs
|
|
79
79
|
]) => {
|
|
80
|
-
const parent = nav.parentElement;
|
|
81
80
|
let lastWidth = -1;
|
|
82
|
-
|
|
81
|
+
const parent = nav.parentElement;
|
|
82
|
+
nav.render = () => {
|
|
83
83
|
const index = widths.findIndex((w) => w < parent.clientWidth);
|
|
84
|
-
if (widths[index] === lastWidth) {
|
|
84
|
+
if (index === -1 || widths[index] === lastWidth) {
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
87
|
let html = before;
|
|
@@ -95,10 +95,8 @@ var pagy_default = (() => {
|
|
|
95
95
|
if (keynavArgs && storageSupport) {
|
|
96
96
|
augmentKeynav(nav, keynavArgs);
|
|
97
97
|
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
rjsObserver.observe(parent);
|
|
101
|
-
}
|
|
98
|
+
};
|
|
99
|
+
rjsObserver.observe(parent);
|
|
102
100
|
};
|
|
103
101
|
const initInputNavJs = async (nav, [url_token, pageToken, keynavArgs]) => {
|
|
104
102
|
const augment = keynavArgs && storageSupport ? await augmentKeynav(nav, keynavArgs) : (page) => page;
|
|
@@ -137,7 +135,7 @@ var pagy_default = (() => {
|
|
|
137
135
|
});
|
|
138
136
|
};
|
|
139
137
|
return {
|
|
140
|
-
version: "43.5.
|
|
138
|
+
version: "43.5.2",
|
|
141
139
|
init(arg) {
|
|
142
140
|
const target = arg instanceof HTMLElement ? arg : document, elements = target.querySelectorAll("[data-pagy]");
|
|
143
141
|
for (const element of elements) {
|
|
@@ -164,5 +162,5 @@ var pagy_default = (() => {
|
|
|
164
162
|
// pagy-shim.ts
|
|
165
163
|
window.Pagy = pagy_default;
|
|
166
164
|
|
|
167
|
-
//# debugId=
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFneS50cyIsICJwYWd5LXNoaW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW50ZXJmYWNlIFN5bmNEYXRhIHtcbiAgZnJvbT86IG51bWJlclxuICB0bz8gIDogbnVtYmVyXG4gIGtleSAgOiBzdHJpbmdcbiAgc3RyPyA6IHN0cmluZ1xufVxudHlwZSBJbml0QXJncyA9IFtcImtcIiwgIEtleW5hdkFyZ3NdIHwgICAgICAgICAgLy8gc2VyaWVzX25hdltfanNdIHdpdGgga2V5bmF2IGluc3RhbmNlXG4gICAgICAgICAgICAgICAgW1wic25qXCIsIFNlcmllc05hdkpzQXJnc10gfCAgICAvLyBzZXJpZXNfbmF2X2pzXG4gICAgICAgICAgICAgICAgW1wiaW5qXCIsIElucHV0TmF2SnNBcmdzXSB8ICAgICAvLyBpbnB1dF9uYXZfanNcbiAgICAgICAgICAgICAgICBbXCJsdGpcIiwgTGltaXRUYWdKc0FyZ3NdOyAgICAgIC8vIGxpbWl0X3RhZ19qc1xudHlwZSBBdWdtZW50S2V5bmF2ID0gKG5hdjpIVE1MRWxlbWVudCwga2V5bmF2QXJnczpLZXluYXZBcmdzKSA9PiBQcm9taXNlPCgocGFnZTogc3RyaW5nKSA9PiBzdHJpbmcpPjtcbnR5cGUgS2V5bmF2QXJncyA9IHJlYWRvbmx5IFtzdG9yYWdlS2V5IDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290S2V5ICAgIDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlS2V5ICAgIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlQXJncz86IFNwbGljZUFyZ3NdO1xudHlwZSBTcGxpY2VBcmdzID0gcmVhZG9ubHkgW3N0YXJ0ICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ291bnQ6IG51bWJlciwgICAgIC8vIGl0IHdvdWxkIGJlIG9wdGlvbmFsLCBidXQgdHMgY29tcGxhaW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXM6ICAgIEN1dG9mZltdXTtcbnR5cGUgQ3V0b2ZmID0gcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pW107XG50eXBlIEF1Z21lbnRlZFBhZ2UgPSBbYnJvd3NlcklkICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlS2V5IDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXIgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZXMgICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICBwcmlvckN1dG9mZjogQ3V0b2ZmIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlQ3V0b2ZmIDogQ3V0b2ZmIHwgbnVsbF07XG50eXBlIFNlcmllc05hdkpzQXJncyA9IHJlYWRvbmx5IFtOYXZKc1Rva2VucywgcGFnZVRva2VuOiBzdHJpbmcsIE5hdkpzU2VyaWVzLCBLZXluYXZBcmdzP107XG50eXBlIE5hdkpzU2VyaWVzID0gcmVhZG9ubHkgW3dpZHRoczogbnVtYmVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogKHN0cmluZyB8IG51bWJlcilbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHN0cmluZ1tdW10gfCBudWxsXTtcbnR5cGUgSW5wdXROYXZKc0FyZ3MgPSByZWFkb25seSBbdXJsVG9rZW46ICBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUb2tlbjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXluYXZBcmdzP107XG50eXBlIExpbWl0VGFnSnNBcmdzID0gcmVhZG9ubHkgW2Zyb20gICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsVG9rZW4gIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVG9rZW4gOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VG9rZW46IHN0cmluZ107XG50eXBlIE5hdkpzVG9rZW5zID0gcmVhZG9ubHkgW2JlZm9yZSA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcCAgICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgIDogc3RyaW5nXTtcbmludGVyZmFjZSBOYXZKc0VsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIHJlbmRlcigpOiB2b2lkXG59XG5cbi8vIFRoZSBzeW50YXggdXNlZCBpbiB0aGlzIGZpbGUgaGFzIGJlZW4gY2FyZWZ1bGx5IGNvbXBvc2VkIHRvIG1pbmltaXplXG4vLyB0aGUgcGFneS5taW4uanMgc2l6ZSBhbmQgYXZvaWQgcG9sbHV0aW9uIGluIHRoZSB3aW5kb3cgb2JqZWN0LlxuZXhwb3J0IGRlZmF1bHQgKCgpID0+IHtcbiAgY29uc3Qgc3RvcmFnZVN1cHBvcnQgPSAnc2Vzc2lvblN0b3JhZ2UnIGluIHdpbmRvdyAmJiAnQnJvYWRjYXN0Q2hhbm5lbCcgaW4gd2luZG93O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCBwYWd5ID0gXCJwYWd5XCIsIHN0b3JhZ2U6IFN0b3JhZ2UsIHN5bmM6IEJyb2FkY2FzdENoYW5uZWwsIHRhYklkOiBudW1iZXI7XG4gIGlmIChzdG9yYWdlU3VwcG9ydCkge1xuICAgIHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZTsgLy8gc2hvcnRlbiB0aGUgY29tcGlsZWQgc2l6ZVxuICAgIHN5bmMgICAgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChwYWd5KTtcbiAgICB0YWJJZCAgID0gRGF0ZS5ub3coKTtcblxuICAgIC8vIFN5bmMgdGhlIHNlc3Npb25TdG9yYWdlIGtleXMgZm9yIHRoZSBjdXRvZmZzIG9wZW5lZCBpbiBhIG5ldyB0YWIvd2luZG93XG4gICAgc3luYy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoZTpNZXNzYWdlRXZlbnQ8U3luY0RhdGE+KSA9PiB7XG4gICAgICBpZiAoZS5kYXRhLmZyb20pIHsgLy8gcmVxdWVzdCBjdXRvZmZzXG4gICAgICAgIGNvbnN0IGN1dG9mZnMgPSBzdG9yYWdlLmdldEl0ZW0oZS5kYXRhLmtleSk7XG4gICAgICAgIGlmIChjdXRvZmZzKSB7XG4gICAgICAgICAgc3luYy5wb3N0TWVzc2FnZSg8U3luY0RhdGE+e3RvOiBlLmRhdGEuZnJvbSwga2V5OiBlLmRhdGEua2V5LCBzdHI6IGN1dG9mZnN9KTtcbiAgICAgICAgfSAvLyBzZW5kIHJlc3BvbnNlXG4gICAgICB9IGVsc2UgaWYgKGUuZGF0YS50bykgeyAgLy8gcmVjZWl2ZSBjdXRvZmZzXG4gICAgICAgIGlmIChlLmRhdGEudG8gPT0gdGFiSWQpIHtcbiAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oZS5kYXRhLmtleSwgPHN0cmluZz5lLmRhdGEuc3RyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8vIFRoZSBvYnNlcnZlciBpbnN0YW5jZSBmb3IgcmVzcG9uc2l2ZSBuYXZzXG4gIGNvbnN0IHJqc09ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgIGVudHJpZXMuZm9yRWFjaChlID0+IHtcbiAgICAgIGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2SnNFbGVtZW50PihcIi5wYWd5LXJqc1wiKS5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgZWwucmVuZGVyKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLyogRnVsbCBzZXQgb2YgQjY0IGZ1bmN0aW9uc1xuICBjb25zdCBCNjRFbmNvZGUgICAgID0gKHVuaWNvZGU6c3RyaW5nKSA9PiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKHVuaWNvZGUpKSksXG4gICAgICAgIEI2NFNhZmUgICAgICAgPSAodW5zYWZlOnN0cmluZykgID0+IHVuc2FmZS5yZXBsYWNlKC9bKy89XS9nLCAobSkgPT4gbSA9PSBcIitcIiA/IFwiLVwiIDogbSA9PSBcIi9cIiA/IFwiX1wiIDogXCJcIiksXG4gICAgICAgIEI2NFNhZmVFbmNvZGUgPSAodW5pY29kZTpzdHJpbmcpID0+IEI2NFNhZmUoQjY0RW5jb2RlKHVuaWNvZGUpKSxcbiAgICAgICAgQjY0RGVjb2RlICAgICA9IChiYXNlNjQ6c3RyaW5nKSAgPT4gKG5ldyBUZXh0RGVjb2RlcigpKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IoYmFzZTY0KSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpKSxcbiAgICAgICAgQjY0VW5zYWZlICAgICA9IChzYWZlOnN0cmluZykgICAgPT4gc2FmZS5yZXBsYWNlKC9bLV9dL2csIChtYXRjaCkgPT4gbWF0Y2ggPT0gXCItXCIgPyBcIitcIiA6IFwiL1wiKSxcbiAgICAgICAgQjY0U2FmZURlY29kZSA9IChiYXNlNjQ6c3RyaW5nKSAgPT4gQjY0RGVjb2RlKEI2NFVuc2FmZShiYXNlNjQpKVxuICAqL1xuICBjb25zdCBCNjRTYWZlRW5jb2RlID0gKHVuaWNvZGU6c3RyaW5nKSA9PiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKHVuaWNvZGUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bKy89XS9nLCAobSkgPT4gbSA9PSBcIitcIiA/IFwiLVwiIDogbSA9PSBcIi9cIiA/IFwiX1wiIDogXCJcIiksXG4gICAgICAgIEI2NERlY29kZSAgICAgPSAoYmFzZTY0OnN0cmluZykgID0+IChuZXcgVGV4dERlY29kZXIoKSkuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKGJhc2U2NCksIGMgPT4gYy5jaGFyQ29kZUF0KDApKSk7XG5cbiAgLy8gUmV0dXJuIGEgcmFuZG9tIGtleTogMyBjaGFycyBtYXgsIGJhc2UtMzYgbnVtYmVyIDwgMzYqKjNcbiAgY29uc3QgcmFuZEtleSA9ICgpID0+IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDM2ICoqIDMpLnRvU3RyaW5nKDM2KTtcblxuICAvLyBNYW5hZ2UgdGhlIHBhZ2UgYXVnbWVudGF0aW9uIGZvciBLZXluYXYsIGNhbGxlZCBvbmx5IGlmIHN0b3JhZ2VTdXBwb3J0XG4gIGNvbnN0IGF1Z21lbnRLZXluYXY6IEF1Z21lbnRLZXluYXYgPSBhc3luYyAobmF2LCBbc3RvcmFnZUtleSwgcm9vdEtleSwgcGFnZUtleSwgbGFzdCwgc3BsaWNlQXJnc10pID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYWxpZ24tYXNzaWdubWVudHMvYWxpZ24tYXNzaWdubWVudHNcbiAgICBsZXQgYXVnbWVudFBhZ2U6IChwYWdlOiBzdHJpbmcpID0+IHN0cmluZztcbiAgICBjb25zdCBicm93c2VyS2V5ID0gZG9jdW1lbnQuY29va2llLnNwbGl0KC87XFxzKy8pICAvLyBpdCB3b3JrcyBldmVuIGlmIG1hbGZvcm1lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKChyb3cpID0+IHJvdy5zdGFydHNXaXRoKHBhZ3kgKyBcIj1cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdChcIj1cIilbMV0gPz8gcmFuZEtleSgpO1xuICAgIGRvY3VtZW50LmNvb2tpZSAgPSBgJHtwYWd5fT0ke2Jyb3dzZXJLZXl9YDsgIC8vIFNtYWxsZXIgLm1pbiBzaXplOiBzZXQgdGhlIGNvb2tpZSB3aXRob3V0IGNoZWNraW5nXG4gICAgaWYgKHN0b3JhZ2VLZXkgJiYgIShzdG9yYWdlS2V5IGluIHN0b3JhZ2UpKSB7XG4gICAgICAvLyBTeW5jIHRoZSBzZXNzaW9uZ1N0b3JhZ2UgZnJvbSBvdGhlciB0YWJzL3dpbmRvd3MgKGUuZy4sIG9wZW4gcGFnZSBpbiB0aGUgbmV3IHRhYi93aW5kb3cpXG4gICAgICBzeW5jLnBvc3RNZXNzYWdlKDxTeW5jRGF0YT57IGZyb206IHRhYklkLCBrZXk6IHN0b3JhZ2VLZXkgfSk7XG4gICAgICAvLyBXYWl0IGZvciB0aGUgbGlzdGVuZXIgdG8gY29weSB0aGUgY3V0b2ZmcyBpbiB0aGUgY3VycmVudCBzZXNzaW9uU3RvcmFnZVxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8c3RyaW5nfG51bGw+KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHsgcmVzb2x2ZShcIlwiKSB9LCAxMDApKTtcbiAgICAgIGlmICghKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkpIHsgLy8gdGhlIHN0b3JhZ2VLZXkgZGlkbid0IGdldCBjb3BpZWQ6IGZhbGxiYWNrIHRvIGNvdW50bGVzcyBwYWdpbmF0aW9uXG4gICAgICAgIGF1Z21lbnRQYWdlID0gKHBhZ2U6IHN0cmluZykgPT4gYCR7cGFnZX0rJHtTdHJpbmcobGFzdCl9YDsgICAgICB9XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgSWYgaXQgaXMgbm90IGFzc2lnbmVkIGl0IG1lYW5zIGl0IHN1cHBvcnRzIGtleW5hdlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgaWYgKCFhdWdtZW50UGFnZSkgeyAvLyByZWd1bGFyIGtleW5hdiBwYWdpbmF0aW9uXG4gICAgICBpZiAoIXN0b3JhZ2VLZXkpIHsgZG8geyBzdG9yYWdlS2V5ID0gcmFuZEtleSgpIH0gd2hpbGUgKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkgfSAvLyBubyBkdXAga2V5c1xuICAgICAgY29uc3QgZGF0YSA9IHN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KSxcbiAgICAgICAgICBjdXRvZmZzID0gPEN1dG9mZltdPihkYXRhID8gSlNPTi5wYXJzZShkYXRhKSA6IFt1bmRlZmluZWRdKTtcbiAgICAgIGlmIChzcGxpY2VBcmdzKSB7XG4gICAgICAgIGN1dG9mZnMuc3BsaWNlKC4uLnNwbGljZUFyZ3MpO1xuICAgICAgICBzdG9yYWdlLnNldEl0ZW0oc3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoY3V0b2ZmcykpO1xuICAgICAgfVxuICAgICAgLy8gQXVnbWVudCBmdW5jdGlvblxuICAgICAgYXVnbWVudFBhZ2UgPSAocGFnZTpzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcGFnZU51bSA9IHBhcnNlSW50KHBhZ2UpO1xuICAgICAgICByZXR1cm4gQjY0U2FmZUVuY29kZShKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIDxBdWdtZW50ZWRQYWdlPlticm93c2VyS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXRvZmZzLmxlbmd0aCwgICAgICAgLy8gcGFnZXMvbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnNbcGFnZU51bSAtIDFdLCAvLyBwcmlvckN1dG9mZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnNbcGFnZU51bV1dKSk7ICAvLyBwYWdlQ3V0b2ZmXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBzZWFyY2ggPSAocm9vdEtleSkgPyBgJHtyb290S2V5fSU1QiR7cGFnZUtleX0lNURgIDogcGFnZUtleTtcbiAgICBjb25zdCByZSAgICAgPSBuZXcgUmVnRXhwKGAoPzw9XFxcXD8uKikoXFxcXGIke3NlYXJjaH09KShcXFxcZCspYCk7XG4gICAgLy8gQXVnbWVudCB0aGUgcGFnZSBwYXJhbSBvZiBlYWNoIGhyZWZcbiAgICBmb3IgKGNvbnN0IGEgb2YgPE5vZGVMaXN0T2Y8SFRNTEFuY2hvckVsZW1lbnQ+Pjx1bmtub3duPm5hdi5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWZdJykpIHtcbiAgICAgIGEuaHJlZiA9IGEuaHJlZi5yZXBsYWNlKHJlLCAoX21hdGNoLCBwcmVmaXgsIGRpZ2l0KTogc3RyaW5nID0+IGAke1N0cmluZyhwcmVmaXgpfSR7YXVnbWVudFBhZ2UoPHN0cmluZz5kaWdpdCl9YCk7XG4gICAgfVxuICAgIC8vIFJldHVybiB0aGUgYXVnbWVudCBmdW5jdGlvbiBmb3IgZnVydGhlciBhdWdtZW50YXRpb24gKGkuZS4sIHVybCB0b2tlbiBpbiBpbnB1dF9uYXZfanMpXG4gICAgcmV0dXJuIGF1Z21lbnRQYWdlO1xuICB9O1xuXG4gIC8vIEJ1aWxkIHRoZSBzZXJpZXNfbmF2X2pzIGhlbHBlclxuICBjb25zdCBidWlsZE5hdkpzID0gKG5hdjpOYXZKc0VsZW1lbnQsIFtbYmVmb3JlLCBhbmNob3IsIGN1cnJlbnQsIGdhcCwgYWZ0ZXJdLCBwYWdlVG9rZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRocywgc2VyaWVzLCBsYWJlbHNdLCBrZXluYXZBcmdzXTpTZXJpZXNOYXZKc0FyZ3MpID0+IHtcbiAgICBjb25zdCAgcGFyZW50ID0gPEhUTUxFbGVtZW50Pm5hdi5wYXJlbnRFbGVtZW50O1xuICAgIGxldCBsYXN0V2lkdGggPSAtMTtcbiAgICAobmF2LnJlbmRlciA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gd2lkdGhzLmZpbmRJbmRleCh3ID0+IHcgPCBwYXJlbnQuY2xpZW50V2lkdGgpO1xuICAgICAgaWYgKHdpZHRoc1tpbmRleF0gPT09IGxhc3RXaWR0aCkgeyByZXR1cm4gfSAvLyBubyBjaGFuZ2U6IGFib3J0XG5cbiAgICAgIGxldCBodG1sID0gYmVmb3JlO1xuICAgICAgc2VyaWVzW2luZGV4XS5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICAgIC8vIEF2b2lkIHRoZSBpZiBibG9ja3MgYW5kIGNoYWluIHRoZSByZXN1bHRzIChzaG9ydGVyIHBhZ3kubWluLmpzIGFuZCBlYXNpZXIgcmVhZGluZylcbiAgICAgICAgaHRtbCArPSBpdGVtID09IFwiZ2FwXCIgPyBnYXAgOlxuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdGhlIGl0ZW0gbWF5IGJlIGEgbnVtYmVyLCBidXQgdGhlICdyZXBsYWNlJyBjb252ZXJ0cyBpdCB0byBzdHJpbmcgKHNob3J0ZXIgcGFneS5taW4uanMpXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBpdGVtID09IFwibnVtYmVyXCIgPyBhbmNob3IucmVwbGFjZShwYWdlVG9rZW4sIGl0ZW0pIDogY3VycmVudClcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoXCJMPFwiLCBsYWJlbHM/LltpbmRleF1baV0gPz8gYCR7U3RyaW5nKGl0ZW0pfTxgKTtcbiAgICAgIH0pO1xuICAgICAgaHRtbCAgICAgICAgICs9IGFmdGVyO1xuICAgICAgbmF2LmlubmVySFRNTCA9IFwiXCI7XG4gICAgICBuYXYuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYWZ0ZXJiZWdpblwiLCBodG1sKTtcbiAgICAgIGxhc3RXaWR0aCA9IHdpZHRoc1tpbmRleF07XG4gICAgICBpZiAoa2V5bmF2QXJncyAmJiBzdG9yYWdlU3VwcG9ydCkgeyB2b2lkIGF1Z21lbnRLZXluYXYobmF2LCBrZXluYXZBcmdzKSB9XG4gICAgfSkoKTtcbiAgICBpZiAobmF2LmNsYXNzTGlzdC5jb250YWlucyhwYWd5ICsgXCItcmpzXCIpKSB7IHJqc09ic2VydmVyLm9ic2VydmUocGFyZW50KSB9XG4gIH07XG5cbiAgLy8gSW5pdCB0aGUgaW5wdXRfbmF2X2pzIGhlbHBlcnNcbiAgY29uc3QgaW5pdElucHV0TmF2SnMgPSBhc3luYyAobmF2OkhUTUxFbGVtZW50LCBbdXJsX3Rva2VuLCBwYWdlVG9rZW4sIGtleW5hdkFyZ3NdOklucHV0TmF2SnNBcmdzKSA9PiB7XG4gICAgY29uc3QgYXVnbWVudCA9IGtleW5hdkFyZ3MgJiYgc3RvcmFnZVN1cHBvcnRcbiAgICAgICAgICAgICAgICAgICAgPyBhd2FpdCBhdWdtZW50S2V5bmF2KG5hdiwga2V5bmF2QXJncylcbiAgICAgICAgICAgICAgICAgICAgOiAocGFnZTogc3RyaW5nKSA9PiBwYWdlO1xuICAgIGluaXRJbnB1dChuYXYsIGlucHV0VmFsdWUgPT4gdXJsX3Rva2VuLnJlcGxhY2UocGFnZVRva2VuLCBhdWdtZW50KGlucHV0VmFsdWUpKSk7XG4gIH07XG5cbiAgLy8gSW5pdCB0aGUgbGltaXRfdGFnX2pzIGhlbHBlclxuICBjb25zdCBpbml0TGltaXRUYWdKcyA9IChzcGFuOkhUTUxTcGFuRWxlbWVudCwgW2Zyb20sIHVybF90b2tlbiwgcGFnZV90b2tlbiwgbGltaXRUb2tlbl06TGltaXRUYWdKc0FyZ3MpID0+IHtcbiAgICBpbml0SW5wdXQoc3BhbiwgaW5wdXRWYWx1ZSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoZSBwYWdlIGlzIGEgbnVtYmVyLCBidXQgdGhlICdyZXBsYWNlJyBjb252ZXJ0cyBpdCB0byBzdHJpbmcgKHNob3J0ZXIgcGFneS5taW4uanMpXG4gICAgICByZXR1cm4gdXJsX3Rva2VuLnJlcGxhY2UocGFnZV90b2tlbiwgTWF0aC5tYXgoTWF0aC5jZWlsKGZyb20gLyBwYXJzZUludChpbnB1dFZhbHVlKSksIDEpKVxuICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGxpbWl0VG9rZW4sIGlucHV0VmFsdWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGlucHV0IGVsZW1lbnRcbiAgY29uc3QgaW5pdElucHV0ID0gKGVsZW1lbnQ6SFRNTEVsZW1lbnQsIGdldFVybDoodjpzdHJpbmcpID0+IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGlucHV0ICAgPSA8SFRNTElucHV0RWxlbWVudD5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKSxcbiAgICAgICAgICBsaW5rICAgID0gPEhUTUxBbmNob3JFbGVtZW50PmVsZW1lbnQucXVlcnlTZWxlY3RvcihcImFcIik7XG4gICAgbGV0ICAgaW5pdGlhbCA9IGlucHV0LnZhbHVlO1xuICAgIGNvbnN0IGFjdGlvbiAgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnZhbHVlID09PSBpbml0aWFsKSB7IHJldHVybiB9ICAvLyBub3QgY2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFttaW4sIHZhbCwgbWF4XSA9IFtpbnB1dC5taW4sIGlucHV0LnZhbHVlLCBpbnB1dC5tYXhdLm1hcChuID0+IHBhcnNlSW50KG4pIHx8IDApO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwgPCBtaW4gfHwgdmFsID4gbWF4KSB7ICAvLyByZXNldCBpbnZhbGlkL291dC1vZi1yYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgICA9IGlucHV0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IGdldFVybChpbnB1dC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCAoKSA9PiB7IGlucHV0LnNlbGVjdCgpIH0pO1xuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBhY3Rpb24pO1xuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCBlID0+IHsgaWYgKGUua2V5ID09IFwiRW50ZXJcIikgeyBhY3Rpb24oKSB9IH0pO1xuICB9O1xuXG4gIC8vIFB1YmxpYyBpbnRlcmZhY2VcbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiBcIjQzLjUuMVwiLFxuXG4gICAgLy8gU2NhbiBmb3IgZWxlbWVudHMgd2l0aCBhIFwiZGF0YS1wYWd5XCIgYXR0cmlidXRlIGFuZCBjYWxsIHRoZWlyIGluaXQgZnVuY3Rpb25zIHdpdGggdGhlIGRlY29kZWQgYXJnc1xuICAgIGluaXQoYXJnPzpIVE1MRWxlbWVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gYXJnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudCxcbiAgICAgICAgICAgIGVsZW1lbnRzID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1wYWd5XVwiKTtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiA8Tm9kZUxpc3RPZjxIVE1MRWxlbWVudD4+ZWxlbWVudHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBbaGVscGVySWQsIC4uLmFyZ3NdID0gPEluaXRBcmdzPkpTT04ucGFyc2UoQjY0RGVjb2RlKDxzdHJpbmc+ZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXBhZ3lcIikpKTtcbiAgICAgICAgICBpZiAoaGVscGVySWQgPT0gXCJrXCIpIHtcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igc3ByZWFkIDIgYXJndW1lbnRzLCBub3QgMyBhcyBpdCBjb21wbGFpbnMgYWJvdXRcbiAgICAgICAgICAgIHZvaWQgYXVnbWVudEtleW5hdihlbGVtZW50LCAuLi48S2V5bmF2QXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwic25qXCIpIHtcbiAgICAgICAgICAgIGJ1aWxkTmF2SnMoPE5hdkpzRWxlbWVudD5lbGVtZW50LCA8U2VyaWVzTmF2SnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaGVscGVySWQgPT0gXCJpbmpcIikge1xuICAgICAgICAgICAgdm9pZCBpbml0SW5wdXROYXZKcyhlbGVtZW50LCA8SW5wdXROYXZKc0FyZ3M+PHVua25vd24+YXJncyk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGVscGVySWQgPT0gXCJsdGpcIikge1xuICAgICAgICAgICAgaW5pdExpbWl0VGFnSnMoZWxlbWVudCwgPExpbWl0VGFnSnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlbHNlIHsgY29uc29sZS53YXJuKFwiUGFneS5pbml0OiAlb1xcblVua25vd24gaGVscGVySWQgJyVzJ1wiLCBlbGVtZW50LCBoZWxwZXJJZCkgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHsgY29uc29sZS53YXJuKFwiUGFneS5pbml0OiAlb1xcbiVzXCIsIGVsZW1lbnQsIGVycikgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn0pKCk7XG4iLAogICAgImltcG9ydCBQYWd5IGZyb20gXCIuL3BhZ3kudHNcIlxud2luZG93LlBhZ3kgPSBQYWd5XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBZ0RBLElBQWdCLHNCQUFNO0FBQUEsRUFDcEIsTUFBTSxpQkFBaUIsb0JBQW9CLFVBQVUsc0JBQXNCO0FBQUEsRUFFM0UsSUFBSSxPQUFPLFFBQVEsU0FBa0IsTUFBd0I7QUFBQSxFQUM3RCxJQUFJLGdCQUFnQjtBQUFBLElBQ2xCLFVBQVU7QUFBQSxJQUNWLE9BQVUsSUFBSSxpQkFBaUIsSUFBSTtBQUFBLElBQ25DLFFBQVUsS0FBSyxJQUFJO0FBQUEsSUFHbkIsS0FB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
|
|
165
|
+
//# debugId=D70BFA6D1186E95464756E2164756E21
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFneS50cyIsICJwYWd5LXNoaW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW50ZXJmYWNlIFN5bmNEYXRhIHtcbiAgZnJvbT86IG51bWJlclxuICB0bz8gIDogbnVtYmVyXG4gIGtleSAgOiBzdHJpbmdcbiAgc3RyPyA6IHN0cmluZ1xufVxudHlwZSBJbml0QXJncyA9IFtcImtcIiwgIEtleW5hdkFyZ3NdIHwgICAgICAgICAgLy8gc2VyaWVzX25hdltfanNdIHdpdGgga2V5bmF2IGluc3RhbmNlXG4gICAgICAgICAgICAgICAgW1wic25qXCIsIFNlcmllc05hdkpzQXJnc10gfCAgICAvLyBzZXJpZXNfbmF2X2pzXG4gICAgICAgICAgICAgICAgW1wiaW5qXCIsIElucHV0TmF2SnNBcmdzXSB8ICAgICAvLyBpbnB1dF9uYXZfanNcbiAgICAgICAgICAgICAgICBbXCJsdGpcIiwgTGltaXRUYWdKc0FyZ3NdOyAgICAgIC8vIGxpbWl0X3RhZ19qc1xudHlwZSBBdWdtZW50S2V5bmF2ID0gKG5hdjpIVE1MRWxlbWVudCwga2V5bmF2QXJnczpLZXluYXZBcmdzKSA9PiBQcm9taXNlPCgocGFnZTogc3RyaW5nKSA9PiBzdHJpbmcpPjtcbnR5cGUgS2V5bmF2QXJncyA9IHJlYWRvbmx5IFtzdG9yYWdlS2V5IDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290S2V5ICAgIDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlS2V5ICAgIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlQXJncz86IFNwbGljZUFyZ3NdO1xudHlwZSBTcGxpY2VBcmdzID0gcmVhZG9ubHkgW3N0YXJ0ICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ291bnQ6IG51bWJlciwgICAgIC8vIGl0IHdvdWxkIGJlIG9wdGlvbmFsLCBidXQgdHMgY29tcGxhaW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXM6ICAgIEN1dG9mZltdXTtcbnR5cGUgQ3V0b2ZmID0gcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pW107XG50eXBlIEF1Z21lbnRlZFBhZ2UgPSBbYnJvd3NlcklkICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlS2V5IDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXIgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZXMgICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICBwcmlvckN1dG9mZjogQ3V0b2ZmIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlQ3V0b2ZmIDogQ3V0b2ZmIHwgbnVsbF07XG50eXBlIFNlcmllc05hdkpzQXJncyA9IHJlYWRvbmx5IFtOYXZKc1Rva2VucywgcGFnZVRva2VuOiBzdHJpbmcsIE5hdkpzU2VyaWVzLCBLZXluYXZBcmdzP107XG50eXBlIE5hdkpzU2VyaWVzID0gcmVhZG9ubHkgW3dpZHRoczogbnVtYmVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogKHN0cmluZyB8IG51bWJlcilbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHN0cmluZ1tdW10gfCBudWxsXTtcbnR5cGUgSW5wdXROYXZKc0FyZ3MgPSByZWFkb25seSBbdXJsVG9rZW46ICBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUb2tlbjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXluYXZBcmdzP107XG50eXBlIExpbWl0VGFnSnNBcmdzID0gcmVhZG9ubHkgW2Zyb20gICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsVG9rZW4gIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVG9rZW4gOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VG9rZW46IHN0cmluZ107XG50eXBlIE5hdkpzVG9rZW5zID0gcmVhZG9ubHkgW2JlZm9yZSA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcCAgICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgIDogc3RyaW5nXTtcbmludGVyZmFjZSBOYXZKc0VsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIHJlbmRlcigpOiB2b2lkXG59XG5cbi8vIFRoZSBzeW50YXggdXNlZCBpbiB0aGlzIGZpbGUgaGFzIGJlZW4gY2FyZWZ1bGx5IGNvbXBvc2VkIHRvIG1pbmltaXplXG4vLyB0aGUgcGFneS5taW4uanMgc2l6ZSBhbmQgYXZvaWQgcG9sbHV0aW9uIGluIHRoZSB3aW5kb3cgb2JqZWN0LlxuZXhwb3J0IGRlZmF1bHQgKCgpID0+IHtcbiAgY29uc3Qgc3RvcmFnZVN1cHBvcnQgPSAnc2Vzc2lvblN0b3JhZ2UnIGluIHdpbmRvdyAmJiAnQnJvYWRjYXN0Q2hhbm5lbCcgaW4gd2luZG93O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCBwYWd5ID0gXCJwYWd5XCIsIHN0b3JhZ2U6IFN0b3JhZ2UsIHN5bmM6IEJyb2FkY2FzdENoYW5uZWwsIHRhYklkOiBudW1iZXI7XG4gIGlmIChzdG9yYWdlU3VwcG9ydCkge1xuICAgIHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZTsgLy8gc2hvcnRlbiB0aGUgY29tcGlsZWQgc2l6ZVxuICAgIHN5bmMgICAgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChwYWd5KTtcbiAgICB0YWJJZCAgID0gRGF0ZS5ub3coKTtcblxuICAgIC8vIFN5bmMgdGhlIHNlc3Npb25TdG9yYWdlIGtleXMgZm9yIHRoZSBjdXRvZmZzIG9wZW5lZCBpbiBhIG5ldyB0YWIvd2luZG93XG4gICAgc3luYy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoZTpNZXNzYWdlRXZlbnQ8U3luY0RhdGE+KSA9PiB7XG4gICAgICBpZiAoZS5kYXRhLmZyb20pIHsgLy8gcmVxdWVzdCBjdXRvZmZzXG4gICAgICAgIGNvbnN0IGN1dG9mZnMgPSBzdG9yYWdlLmdldEl0ZW0oZS5kYXRhLmtleSk7XG4gICAgICAgIGlmIChjdXRvZmZzKSB7XG4gICAgICAgICAgc3luYy5wb3N0TWVzc2FnZSg8U3luY0RhdGE+e3RvOiBlLmRhdGEuZnJvbSwga2V5OiBlLmRhdGEua2V5LCBzdHI6IGN1dG9mZnN9KTtcbiAgICAgICAgfSAvLyBzZW5kIHJlc3BvbnNlXG4gICAgICB9IGVsc2UgaWYgKGUuZGF0YS50bykgeyAgLy8gcmVjZWl2ZSBjdXRvZmZzXG4gICAgICAgIGlmIChlLmRhdGEudG8gPT0gdGFiSWQpIHtcbiAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oZS5kYXRhLmtleSwgPHN0cmluZz5lLmRhdGEuc3RyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8vIFRoZSBvYnNlcnZlciBpbnN0YW5jZSBmb3IgcmVzcG9uc2l2ZSBuYXZzXG4gIGNvbnN0IHJqc09ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgIGVudHJpZXMuZm9yRWFjaChlID0+IHtcbiAgICAgIGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2SnNFbGVtZW50PihcIi5zZXJpZXMtbmF2LWpzXCIpLmZvckVhY2goZWwgPT4ge1xuICAgICAgICBlbC5yZW5kZXIoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICAvKiBGdWxsIHNldCBvZiBCNjQgZnVuY3Rpb25zXG4gIGNvbnN0IEI2NEVuY29kZSAgICAgPSAodW5pY29kZTpzdHJpbmcpID0+IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi4obmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodW5pY29kZSkpKSxcbiAgICAgICAgQjY0U2FmZSAgICAgICA9ICh1bnNhZmU6c3RyaW5nKSAgPT4gdW5zYWZlLnJlcGxhY2UoL1srLz1dL2csIChtKSA9PiBtID09IFwiK1wiID8gXCItXCIgOiBtID09IFwiL1wiID8gXCJfXCIgOiBcIlwiKSxcbiAgICAgICAgQjY0U2FmZUVuY29kZSA9ICh1bmljb2RlOnN0cmluZykgPT4gQjY0U2FmZShCNjRFbmNvZGUodW5pY29kZSkpLFxuICAgICAgICBCNjREZWNvZGUgICAgID0gKGJhc2U2NDpzdHJpbmcpICA9PiAobmV3IFRleHREZWNvZGVyKCkpLmRlY29kZShVaW50OEFycmF5LmZyb20oYXRvYihiYXNlNjQpLCBjID0+IGMuY2hhckNvZGVBdCgwKSkpLFxuICAgICAgICBCNjRVbnNhZmUgICAgID0gKHNhZmU6c3RyaW5nKSAgICA9PiBzYWZlLnJlcGxhY2UoL1stX10vZywgKG1hdGNoKSA9PiBtYXRjaCA9PSBcIi1cIiA/IFwiK1wiIDogXCIvXCIpLFxuICAgICAgICBCNjRTYWZlRGVjb2RlID0gKGJhc2U2NDpzdHJpbmcpICA9PiBCNjREZWNvZGUoQjY0VW5zYWZlKGJhc2U2NCkpXG4gICovXG4gIGNvbnN0IEI2NFNhZmVFbmNvZGUgPSAodW5pY29kZTpzdHJpbmcpID0+IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi4obmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodW5pY29kZSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1srLz1dL2csIChtKSA9PiBtID09IFwiK1wiID8gXCItXCIgOiBtID09IFwiL1wiID8gXCJfXCIgOiBcIlwiKSxcbiAgICAgICAgQjY0RGVjb2RlICAgICA9IChiYXNlNjQ6c3RyaW5nKSAgPT4gKG5ldyBUZXh0RGVjb2RlcigpKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IoYmFzZTY0KSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpKTtcblxuICAvLyBSZXR1cm4gYSByYW5kb20ga2V5OiAzIGNoYXJzIG1heCwgYmFzZS0zNiBudW1iZXIgPCAzNioqM1xuICBjb25zdCByYW5kS2V5ID0gKCkgPT4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMzYgKiogMykudG9TdHJpbmcoMzYpO1xuXG4gIC8vIE1hbmFnZSB0aGUgcGFnZSBhdWdtZW50YXRpb24gZm9yIEtleW5hdiwgY2FsbGVkIG9ubHkgaWYgc3RvcmFnZVN1cHBvcnRcbiAgY29uc3QgYXVnbWVudEtleW5hdjogQXVnbWVudEtleW5hdiA9IGFzeW5jIChuYXYsIFtzdG9yYWdlS2V5LCByb290S2V5LCBwYWdlS2V5LCBsYXN0LCBzcGxpY2VBcmdzXSkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhbGlnbi1hc3NpZ25tZW50cy9hbGlnbi1hc3NpZ25tZW50c1xuICAgIGxldCBhdWdtZW50UGFnZTogKHBhZ2U6IHN0cmluZykgPT4gc3RyaW5nO1xuICAgIGNvbnN0IGJyb3dzZXJLZXkgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoLztcXHMrLykgIC8vIGl0IHdvcmtzIGV2ZW4gaWYgbWFsZm9ybWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKHJvdykgPT4gcm93LnN0YXJ0c1dpdGgocGFneSArIFwiPVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KFwiPVwiKVsxXSA/PyByYW5kS2V5KCk7XG4gICAgZG9jdW1lbnQuY29va2llICA9IGAke3BhZ3l9PSR7YnJvd3NlcktleX1gOyAgLy8gU21hbGxlciAubWluIHNpemU6IHNldCB0aGUgY29va2llIHdpdGhvdXQgY2hlY2tpbmdcbiAgICBpZiAoc3RvcmFnZUtleSAmJiAhKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkpIHtcbiAgICAgIC8vIFN5bmMgdGhlIHNlc3Npb25nU3RvcmFnZSBmcm9tIG90aGVyIHRhYnMvd2luZG93cyAoZS5nLiwgb3BlbiBwYWdlIGluIHRoZSBuZXcgdGFiL3dpbmRvdylcbiAgICAgIHN5bmMucG9zdE1lc3NhZ2UoPFN5bmNEYXRhPnsgZnJvbTogdGFiSWQsIGtleTogc3RvcmFnZUtleSB9KTtcbiAgICAgIC8vIFdhaXQgZm9yIHRoZSBsaXN0ZW5lciB0byBjb3B5IHRoZSBjdXRvZmZzIGluIHRoZSBjdXJyZW50IHNlc3Npb25TdG9yYWdlXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZTxzdHJpbmd8bnVsbD4oKHJlc29sdmUpID0+IHNldFRpbWVvdXQoKCkgPT4geyByZXNvbHZlKFwiXCIpIH0sIDEwMCkpO1xuICAgICAgaWYgKCEoc3RvcmFnZUtleSBpbiBzdG9yYWdlKSkgeyAvLyB0aGUgc3RvcmFnZUtleSBkaWRuJ3QgZ2V0IGNvcGllZDogZmFsbGJhY2sgdG8gY291bnRsZXNzIHBhZ2luYXRpb25cbiAgICAgICAgYXVnbWVudFBhZ2UgPSAocGFnZTogc3RyaW5nKSA9PiBgJHtwYWdlfSske1N0cmluZyhsYXN0KX1gOyAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBJZiBpdCBpcyBub3QgYXNzaWduZWQgaXQgbWVhbnMgaXQgc3VwcG9ydHMga2V5bmF2XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICBpZiAoIWF1Z21lbnRQYWdlKSB7IC8vIHJlZ3VsYXIga2V5bmF2IHBhZ2luYXRpb25cbiAgICAgIGlmICghc3RvcmFnZUtleSkgeyBkbyB7IHN0b3JhZ2VLZXkgPSByYW5kS2V5KCkgfSB3aGlsZSAoc3RvcmFnZUtleSBpbiBzdG9yYWdlKSB9IC8vIG5vIGR1cCBrZXlzXG4gICAgICBjb25zdCBkYXRhID0gc3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkpLFxuICAgICAgICAgIGN1dG9mZnMgPSA8Q3V0b2ZmW10+KGRhdGEgPyBKU09OLnBhcnNlKGRhdGEpIDogW3VuZGVmaW5lZF0pO1xuICAgICAgaWYgKHNwbGljZUFyZ3MpIHtcbiAgICAgICAgY3V0b2Zmcy5zcGxpY2UoLi4uc3BsaWNlQXJncyk7XG4gICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShjdXRvZmZzKSk7XG4gICAgICB9XG4gICAgICAvLyBBdWdtZW50IGZ1bmN0aW9uXG4gICAgICBhdWdtZW50UGFnZSA9IChwYWdlOnN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBwYWdlTnVtID0gcGFyc2VJbnQocGFnZSk7XG4gICAgICAgIHJldHVybiBCNjRTYWZlRW5jb2RlKEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgPEF1Z21lbnRlZFBhZ2U+W2Jyb3dzZXJLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlTnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnMubGVuZ3RoLCAgICAgICAvLyBwYWdlcy9sYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3V0b2Zmc1twYWdlTnVtIC0gMV0sIC8vIHByaW9yQ3V0b2ZmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3V0b2Zmc1twYWdlTnVtXV0pKTsgIC8vIHBhZ2VDdXRvZmZcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaCA9IChyb290S2V5KSA/IGAke3Jvb3RLZXl9JTVCJHtwYWdlS2V5fSU1RGAgOiBwYWdlS2V5O1xuICAgIGNvbnN0IHJlICAgICA9IG5ldyBSZWdFeHAoYCg/PD1cXFxcPy4qKShcXFxcYiR7c2VhcmNofT0pKFxcXFxkKylgKTtcbiAgICAvLyBBdWdtZW50IHRoZSBwYWdlIHBhcmFtIG9mIGVhY2ggaHJlZlxuICAgIGZvciAoY29uc3QgYSBvZiA8Tm9kZUxpc3RPZjxIVE1MQW5jaG9yRWxlbWVudD4+PHVua25vd24+bmF2LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl0nKSkge1xuICAgICAgYS5ocmVmID0gYS5ocmVmLnJlcGxhY2UocmUsIChfbWF0Y2gsIHByZWZpeCwgZGlnaXQpOiBzdHJpbmcgPT4gYCR7U3RyaW5nKHByZWZpeCl9JHthdWdtZW50UGFnZSg8c3RyaW5nPmRpZ2l0KX1gKTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIHRoZSBhdWdtZW50IGZ1bmN0aW9uIGZvciBmdXJ0aGVyIGF1Z21lbnRhdGlvbiAoaS5lLiwgdXJsIHRva2VuIGluIGlucHV0X25hdl9qcylcbiAgICByZXR1cm4gYXVnbWVudFBhZ2U7XG4gIH07XG5cbiAgLy8gQnVpbGQgdGhlIHNlcmllc19uYXZfanMgaGVscGVyXG4gIGNvbnN0IGJ1aWxkTmF2SnMgPSAobmF2Ok5hdkpzRWxlbWVudCwgW1tiZWZvcmUsIGFuY2hvciwgY3VycmVudCwgZ2FwLCBhZnRlcl0sIHBhZ2VUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2lkdGhzLCBzZXJpZXMsIGxhYmVsc10sIGtleW5hdkFyZ3NdOlNlcmllc05hdkpzQXJncykgPT4ge1xuICAgIGxldCBsYXN0V2lkdGggPSAtMTtcbiAgICBjb25zdCBwYXJlbnQgID0gPEhUTUxFbGVtZW50Pm5hdi5wYXJlbnRFbGVtZW50O1xuXG4gICAgbmF2LnJlbmRlciA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gd2lkdGhzLmZpbmRJbmRleCh3ID0+IHcgPCBwYXJlbnQuY2xpZW50V2lkdGgpO1xuICAgICAgaWYgKGluZGV4ID09PSAtMSB8fCB3aWR0aHNbaW5kZXhdID09PSBsYXN0V2lkdGgpIHsgcmV0dXJuIH1cblxuICAgICAgbGV0IGh0bWwgPSBiZWZvcmU7XG4gICAgICBzZXJpZXNbaW5kZXhdLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgLy8gQXZvaWQgdGhlIGlmIGJsb2NrcyBhbmQgY2hhaW4gdGhlIHJlc3VsdHMgKHNob3J0ZXIgcGFneS5taW4uanMgYW5kIGVhc2llciByZWFkaW5nKVxuICAgICAgICBodG1sICs9IGl0ZW0gPT0gXCJnYXBcIiA/IGdhcCA6XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgaXRlbSBtYXkgYmUgYSBudW1iZXIsIGJ1dCB0aGUgJ3JlcGxhY2UnIGNvbnZlcnRzIGl0IHRvIHN0cmluZyAoc2hvcnRlciBwYWd5Lm1pbi5qcylcbiAgICAgICAgICAgICAgICAodHlwZW9mIGl0ZW0gPT0gXCJudW1iZXJcIiA/IGFuY2hvci5yZXBsYWNlKHBhZ2VUb2tlbiwgaXRlbSkgOiBjdXJyZW50KVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIkw8XCIsIGxhYmVscz8uW2luZGV4XVtpXSA/PyBgJHtTdHJpbmcoaXRlbSl9PGApO1xuICAgICAgfSk7XG4gICAgICBodG1sICAgICAgICAgKz0gYWZ0ZXI7XG4gICAgICBuYXYuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgIG5hdi5pbnNlcnRBZGphY2VudEhUTUwoXCJhZnRlcmJlZ2luXCIsIGh0bWwpO1xuICAgICAgbGFzdFdpZHRoID0gd2lkdGhzW2luZGV4XTtcbiAgICAgIGlmIChrZXluYXZBcmdzICYmIHN0b3JhZ2VTdXBwb3J0KSB7IHZvaWQgYXVnbWVudEtleW5hdihuYXYsIGtleW5hdkFyZ3MpIH1cbiAgICB9O1xuXG4gICAgcmpzT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnQpO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGlucHV0X25hdl9qcyBoZWxwZXJzXG4gIGNvbnN0IGluaXRJbnB1dE5hdkpzID0gYXN5bmMgKG5hdjpIVE1MRWxlbWVudCwgW3VybF90b2tlbiwgcGFnZVRva2VuLCBrZXluYXZBcmdzXTpJbnB1dE5hdkpzQXJncykgPT4ge1xuICAgIGNvbnN0IGF1Z21lbnQgPSBrZXluYXZBcmdzICYmIHN0b3JhZ2VTdXBwb3J0XG4gICAgICAgICAgICAgICAgICAgID8gYXdhaXQgYXVnbWVudEtleW5hdihuYXYsIGtleW5hdkFyZ3MpXG4gICAgICAgICAgICAgICAgICAgIDogKHBhZ2U6IHN0cmluZykgPT4gcGFnZTtcbiAgICBpbml0SW5wdXQobmF2LCBpbnB1dFZhbHVlID0+IHVybF90b2tlbi5yZXBsYWNlKHBhZ2VUb2tlbiwgYXVnbWVudChpbnB1dFZhbHVlKSkpO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGxpbWl0X3RhZ19qcyBoZWxwZXJcbiAgY29uc3QgaW5pdExpbWl0VGFnSnMgPSAoc3BhbjpIVE1MU3BhbkVsZW1lbnQsIFtmcm9tLCB1cmxfdG9rZW4sIHBhZ2VfdG9rZW4sIGxpbWl0VG9rZW5dOkxpbWl0VGFnSnNBcmdzKSA9PiB7XG4gICAgaW5pdElucHV0KHNwYW4sIGlucHV0VmFsdWUgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgcGFnZSBpcyBhIG51bWJlciwgYnV0IHRoZSAncmVwbGFjZScgY29udmVydHMgaXQgdG8gc3RyaW5nIChzaG9ydGVyIHBhZ3kubWluLmpzKVxuICAgICAgcmV0dXJuIHVybF90b2tlbi5yZXBsYWNlKHBhZ2VfdG9rZW4sIE1hdGgubWF4KE1hdGguY2VpbChmcm9tIC8gcGFyc2VJbnQoaW5wdXRWYWx1ZSkpLCAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShsaW1pdFRva2VuLCBpbnB1dFZhbHVlKTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBJbml0IHRoZSBpbnB1dCBlbGVtZW50XG4gIGNvbnN0IGluaXRJbnB1dCA9IChlbGVtZW50OkhUTUxFbGVtZW50LCBnZXRVcmw6KHY6c3RyaW5nKSA9PiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBpbnB1dCAgID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIiksXG4gICAgICAgICAgbGluayAgICA9IDxIVE1MQW5jaG9yRWxlbWVudD5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJhXCIpO1xuICAgIGxldCAgIGluaXRpYWwgPSBpbnB1dC52YWx1ZTtcbiAgICBjb25zdCBhY3Rpb24gID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gaW5pdGlhbCkgeyByZXR1cm4gfSAgLy8gbm90IGNoYW5nZWRcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbbWluLCB2YWwsIG1heF0gPSBbaW5wdXQubWluLCBpbnB1dC52YWx1ZSwgaW5wdXQubWF4XS5tYXAobiA9PiBwYXJzZUludChuKSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsIDwgbWluIHx8IHZhbCA+IG1heCkgeyAgLy8gcmVzZXQgaW52YWxpZC9vdXQtb2YtcmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsICAgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSBnZXRVcmwoaW5wdXQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgKCkgPT4geyBpbnB1dC5zZWxlY3QoKSB9KTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgYWN0aW9uKTtcbiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZSA9PiB7IGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHsgYWN0aW9uKCkgfSB9KTtcbiAgfTtcblxuICAvLyBQdWJsaWMgaW50ZXJmYWNlXG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogXCI0My41LjJcIixcblxuICAgIC8vIFNjYW4gZm9yIGVsZW1lbnRzIHdpdGggYSBcImRhdGEtcGFneVwiIGF0dHJpYnV0ZSBhbmQgY2FsbCB0aGVpciBpbml0IGZ1bmN0aW9ucyB3aXRoIHRoZSBkZWNvZGVkIGFyZ3NcbiAgICBpbml0KGFyZz86SFRNTEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGFyZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gYXJnIDogZG9jdW1lbnQsXG4gICAgICAgICAgICBlbGVtZW50cyA9IHRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtcGFneV1cIik7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgPE5vZGVMaXN0T2Y8SFRNTEVsZW1lbnQ+PmVsZW1lbnRzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgW2hlbHBlcklkLCAuLi5hcmdzXSA9IDxJbml0QXJncz5KU09OLnBhcnNlKEI2NERlY29kZSg8c3RyaW5nPmVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1wYWd5XCIpKSk7XG4gICAgICAgICAgaWYgKGhlbHBlcklkID09IFwia1wiKSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHNwcmVhZCAyIGFyZ3VtZW50cywgbm90IDMgYXMgaXQgY29tcGxhaW5zIGFib3V0XG4gICAgICAgICAgICB2b2lkIGF1Z21lbnRLZXluYXYoZWxlbWVudCwgLi4uPEtleW5hdkFyZ3M+PHVua25vd24+YXJncyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChoZWxwZXJJZCA9PSBcInNualwiKSB7XG4gICAgICAgICAgICBidWlsZE5hdkpzKDxOYXZKc0VsZW1lbnQ+ZWxlbWVudCwgPFNlcmllc05hdkpzQXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwiaW5qXCIpIHtcbiAgICAgICAgICAgIHZvaWQgaW5pdElucHV0TmF2SnMoZWxlbWVudCwgPElucHV0TmF2SnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwibHRqXCIpIHtcbiAgICAgICAgICAgIGluaXRMaW1pdFRhZ0pzKGVsZW1lbnQsIDxMaW1pdFRhZ0pzQXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZWxzZSB7IGNvbnNvbGUud2FybihcIlBhZ3kuaW5pdDogJW9cXG5Vbmtub3duIGhlbHBlcklkICclcydcIiwgZWxlbWVudCwgaGVscGVySWQpIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7IGNvbnNvbGUud2FybihcIlBhZ3kuaW5pdDogJW9cXG4lc1wiLCBlbGVtZW50LCBlcnIpIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59KSgpO1xuIiwKICAgICJpbXBvcnQgUGFneSBmcm9tIFwiLi9wYWd5LnRzXCJcbndpbmRvdy5QYWd5ID0gUGFneVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjtBQWdEQSxJQUFnQixzQkFBTTtBQUFBLEVBQ3BCLE1BQU0saUJBQWlCLG9CQUFvQixVQUFVLHNCQUFzQjtBQUFBLEVBRTNFLElBQUksT0FBTyxRQUFRLFNBQWtCLE1BQXdCO0FBQUEsRUFDN0QsSUFBSSxnQkFBZ0I7QUFBQSxJQUNsQixVQUFVO0FBQUEsSUFDVixPQUFVLElBQUksaUJBQWlCLElBQUk7QUFBQSxJQUNuQyxRQUFVLEtBQUssSUFBSTtBQUFBLElBR25CLEtBQUssaUJBQWlCLFdBQVcsQ0FBQyxNQUE2QjtBQUFBLE1BQzdELElBQUksRUFBRSxL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
|
data/javascripts/pagy.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
window.Pagy=(()=>{let
|
|
1
|
+
window.Pagy=(()=>{let O="sessionStorage"in window&&"BroadcastChannel"in window,B="pagy",Z,L,W;if(O)Z=sessionStorage,L=new BroadcastChannel(B),W=Date.now(),L.addEventListener("message",(q)=>{if(q.data.from){let z=Z.getItem(q.data.key);if(z)L.postMessage({to:q.data.from,key:q.data.key,str:z})}else if(q.data.to){if(q.data.to==W)Z.setItem(q.data.key,q.data.str)}});let V=new ResizeObserver((q)=>{q.forEach((z)=>{z.target.querySelectorAll(".series-nav-js").forEach((C)=>{C.render()})})}),_=(q)=>btoa(String.fromCharCode(...new TextEncoder().encode(q))).replace(/[+/=]/g,(z)=>z=="+"?"-":z=="/"?"_":""),T=(q)=>new TextDecoder().decode(Uint8Array.from(atob(q),(z)=>z.charCodeAt(0))),P=()=>Math.floor(Math.random()*46656).toString(36),J=async(q,[z,C,F,H,G])=>{let Q,X=document.cookie.split(/;\s+/).find((M)=>M.startsWith(B+"="))?.split("=")[1]??P();if(document.cookie=`${B}=${X}`,z&&!(z in Z)){if(L.postMessage({from:W,key:z}),await new Promise((M)=>setTimeout(()=>{M("")},100)),!(z in Z))Q=(M)=>`${M}+${String(H)}`}if(!Q){if(!z)do z=P();while(z in Z);let M=Z.getItem(z),Y=M?JSON.parse(M):[void 0];if(G)Y.splice(...G),Z.setItem(z,JSON.stringify(Y));Q=($)=>{let R=parseInt($);return _(JSON.stringify([X,z,R,Y.length,Y[R-1],Y[R]]))}}let D=C?`${C}%5B${F}%5D`:F,E=new RegExp(`(?<=\\?.*)(\\b${D}=)(\\d+)`);for(let M of q.querySelectorAll("a[href]"))M.href=M.href.replace(E,(Y,$,R)=>`${String($)}${Q(R)}`);return Q},x=(q,[[z,C,F,H,G],Q,[X,D,E],M])=>{let Y=-1,$=q.parentElement;q.render=()=>{let R=X.findIndex((j)=>j<$.clientWidth);if(R===-1||X[R]===Y)return;let U=z;if(D[R].forEach((j,I)=>{U+=j=="gap"?H:(typeof j=="number"?C.replace(Q,j):F).replace("L<",E?.[R][I]??`${String(j)}<`)}),U+=G,q.innerHTML="",q.insertAdjacentHTML("afterbegin",U),Y=X[R],M&&O)J(q,M)},V.observe($)},w=async(q,[z,C,F])=>{let H=F&&O?await J(q,F):(G)=>G;S(q,(G)=>z.replace(C,H(G)))},A=(q,[z,C,F,H])=>{S(q,(G)=>{return C.replace(F,Math.max(Math.ceil(z/parseInt(G)),1)).replace(H,G)})},S=(q,z)=>{let C=q.querySelector("input"),F=q.querySelector("a"),H=C.value,G=()=>{if(C.value===H)return;let[Q,X,D]=[C.min,C.value,C.max].map((E)=>parseInt(E)||0);if(X<Q||X>D){C.value=H,C.select();return}H=C.value,F.href=z(C.value),F.click()};C.addEventListener("focus",()=>{C.select()}),C.addEventListener("focusout",G),C.addEventListener("keypress",(Q)=>{if(Q.key=="Enter")G()})};return{version:"43.5.2",init(q){let z=q instanceof HTMLElement?q:document,C=z.querySelectorAll("[data-pagy]");for(let F of C)try{let[H,...G]=JSON.parse(T(F.getAttribute("data-pagy")));if(H=="k")J(F,...G);else if(H=="snj")x(F,G);else if(H=="inj")w(F,G);else if(H=="ltj")A(F,G)}catch(H){console.warn(`Pagy.init: %o
|
|
2
2
|
%s`,F,H)}}}})();
|
data/javascripts/pagy.mjs
CHANGED
|
@@ -20,7 +20,7 @@ export default (() => {
|
|
|
20
20
|
}
|
|
21
21
|
const rjsObserver = new ResizeObserver((entries) => {
|
|
22
22
|
entries.forEach((e) => {
|
|
23
|
-
e.target.querySelectorAll(".
|
|
23
|
+
e.target.querySelectorAll(".series-nav-js").forEach((el) => {
|
|
24
24
|
el.render();
|
|
25
25
|
});
|
|
26
26
|
});
|
|
@@ -76,11 +76,11 @@ export default (() => {
|
|
|
76
76
|
[widths, series, labels],
|
|
77
77
|
keynavArgs
|
|
78
78
|
]) => {
|
|
79
|
-
const parent = nav.parentElement;
|
|
80
79
|
let lastWidth = -1;
|
|
81
|
-
|
|
80
|
+
const parent = nav.parentElement;
|
|
81
|
+
nav.render = () => {
|
|
82
82
|
const index = widths.findIndex((w) => w < parent.clientWidth);
|
|
83
|
-
if (widths[index] === lastWidth) {
|
|
83
|
+
if (index === -1 || widths[index] === lastWidth) {
|
|
84
84
|
return;
|
|
85
85
|
}
|
|
86
86
|
let html = before;
|
|
@@ -94,10 +94,8 @@ export default (() => {
|
|
|
94
94
|
if (keynavArgs && storageSupport) {
|
|
95
95
|
augmentKeynav(nav, keynavArgs);
|
|
96
96
|
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
rjsObserver.observe(parent);
|
|
100
|
-
}
|
|
97
|
+
};
|
|
98
|
+
rjsObserver.observe(parent);
|
|
101
99
|
};
|
|
102
100
|
const initInputNavJs = async (nav, [url_token, pageToken, keynavArgs]) => {
|
|
103
101
|
const augment = keynavArgs && storageSupport ? await augmentKeynav(nav, keynavArgs) : (page) => page;
|
|
@@ -136,7 +134,7 @@ export default (() => {
|
|
|
136
134
|
});
|
|
137
135
|
};
|
|
138
136
|
return {
|
|
139
|
-
version: "43.5.
|
|
137
|
+
version: "43.5.2",
|
|
140
138
|
init(arg) {
|
|
141
139
|
const target = arg instanceof HTMLElement ? arg : document, elements = target.querySelectorAll("[data-pagy]");
|
|
142
140
|
for (const element of elements) {
|
|
@@ -29,12 +29,9 @@ class Pagy
|
|
|
29
29
|
|
|
30
30
|
# Common series_nav_js logic
|
|
31
31
|
def wrap_series_nav_js(tokens, nav_classes, id: nil, aria_label: nil, **)
|
|
32
|
-
sequels = sequels(**)
|
|
33
|
-
nav_classes = "pagy-rjs #{nav_classes}" if sequels[0].size > 1
|
|
34
|
-
|
|
35
32
|
%(<nav#{%( id="#{id}") if id} class="#{nav_classes}" #{
|
|
36
33
|
nav_aria_label_attribute(aria_label:)} #{
|
|
37
|
-
data = [:snj, tokens.values, PAGE_TOKEN, sequels]
|
|
34
|
+
data = [:snj, tokens.values, PAGE_TOKEN, sequels(**)]
|
|
38
35
|
data.push(@update) if keynav?
|
|
39
36
|
data_pagy_attribute(*data)
|
|
40
37
|
}></nav>)
|
data/lib/pagy.rb
CHANGED
|
@@ -9,7 +9,7 @@ require_relative 'pagy/toolbox/helpers/loaders'
|
|
|
9
9
|
|
|
10
10
|
# Top superclass
|
|
11
11
|
class Pagy
|
|
12
|
-
VERSION = '43.5.
|
|
12
|
+
VERSION = '43.5.2'
|
|
13
13
|
ROOT = Pathname.new(__dir__).parent.freeze
|
|
14
14
|
DEFAULT = { limit: 20, limit_key: 'limit', page_key: 'page' }.freeze
|
|
15
15
|
PAGE_TOKEN = EscapedValue.new('P ')
|
|
@@ -62,9 +62,18 @@ class Pagy
|
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
+
def validate_string_values(options)
|
|
66
|
+
(options.keys & %i[page_key limit_key]).each do |key|
|
|
67
|
+
raise OptionError.new(self, key, 'to be String', options[key]) \
|
|
68
|
+
unless options[key].is_a?(String)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
65
72
|
# Merge all the DEFAULT constants of the class hierarchy with the options
|
|
66
73
|
def assign_options(**options)
|
|
67
74
|
@request = options.delete(:request) # internal object
|
|
75
|
+
validate_string_values(options)
|
|
76
|
+
|
|
68
77
|
default = {}
|
|
69
78
|
current = self.class
|
|
70
79
|
|