UNPKG

@getopenpay/openpay-js

Version:

Accept payments through OpenPay, right on your site

148 lines (147 loc) 30.4 kB
import { c as M, t as p, i as P, T as o, b as D, d as b } from "./index-B_XmW797.js"; import { i as A } from "./suppress-tracing-BllHYdAl.js"; var l = M("OpenTelemetry Context Key B3 Debug Flag"), f = "b3", v = "x-b3-traceid", g = "x-b3-spanid", c = "x-b3-sampled", B = "x-b3-parentspanid", S = "x-b3-flags", F = /* @__PURE__ */ new Set([!0, "true", "True", "1", 1]), N = /* @__PURE__ */ new Set([!1, "false", "False", "0", 0]); function V(r) { return r === o.SAMPLED || r === o.NONE; } function m(r) { return Array.isArray(r) ? r[0] : r; } function d(r, t, a) { var n = t.get(r, a); return m(n); } function C(r, t) { var a = d(r, t, v); return typeof a == "string" ? a.padStart(32, "0") : ""; } function x(r, t) { var a = d(r, t, g); return typeof a == "string" ? a : ""; } function h(r, t) { var a = d(r, t, S); return a === "1" ? "1" : void 0; } function R(r, t) { var a = d(r, t, c), n = h(r, t); if (n === "1" || F.has(a)) return o.SAMPLED; if (a === void 0 || N.has(a)) return o.NONE; } var U = ( /** @class */ (function() { function r() { } return r.prototype.inject = function(t, a, n) { var e = p.getSpanContext(t); if (!(!e || !P(e) || A(t))) { var i = t.getValue(l); n.set(a, v, e.traceId), n.set(a, g, e.spanId), i === "1" ? n.set(a, S, i) : e.traceFlags !== void 0 && n.set(a, c, (o.SAMPLED & e.traceFlags) === o.SAMPLED ? "1" : "0"); } }, r.prototype.extract = function(t, a, n) { var e = C(a, n), i = x(a, n), u = R(a, n), s = h(a, n); return D(e) && b(i) && V(u) ? (t = t.setValue(l, s), p.setSpanContext(t, { traceId: e, spanId: i, isRemote: !0, traceFlags: u })) : t; }, r.prototype.fields = function() { return [ v, g, S, c, B ]; }, r; })() ), G = function(r, t) { var a = typeof Symbol == "function" && r[Symbol.iterator]; if (!a) return r; var n = a.call(r), e, i = [], u; try { for (; (t === void 0 || t-- > 0) && !(e = n.next()).done; ) i.push(e.value); } catch (s) { u = { error: s }; } finally { try { e && !e.done && (a = n.return) && a.call(n); } finally { if (u) throw u.error; } } return i; }, H = /((?:[0-9a-f]{16}){1,2})-([0-9a-f]{16})(?:-([01d](?![0-9a-f])))?(?:-([0-9a-f]{16}))?/, X = "0".repeat(16), j = /* @__PURE__ */ new Set(["d", "1"]), w = "d"; function O(r) { return r.length === 32 ? r : "" + X + r; } function K(r) { return r && j.has(r) ? o.SAMPLED : o.NONE; } var Y = ( /** @class */ (function() { function r() { } return r.prototype.inject = function(t, a, n) { var e = p.getSpanContext(t); if (!(!e || !P(e) || A(t))) { var i = t.getValue(l) || e.traceFlags & 1, u = e.traceId + "-" + e.spanId + "-" + i; n.set(a, f, u); } }, r.prototype.extract = function(t, a, n) { var e = n.get(a, f), i = Array.isArray(e) ? e[0] : e; if (typeof i != "string") return t; var u = i.match(H); if (!u) return t; var s = G(u, 4), T = s[1], y = s[2], _ = s[3], I = O(T); if (!D(I) || !b(y)) return t; var L = K(_); return _ === w && (t = t.setValue(l, _)), p.setSpanContext(t, { traceId: I, spanId: y, isRemote: !0, traceFlags: L }); }, r.prototype.fields = function() { return [f]; }, r; })() ), E; (function(r) { r[r.SINGLE_HEADER = 0] = "SINGLE_HEADER", r[r.MULTI_HEADER = 1] = "MULTI_HEADER"; })(E || (E = {})); var z = ( /** @class */ (function() { function r(t) { t === void 0 && (t = {}), this._b3MultiPropagator = new U(), this._b3SinglePropagator = new Y(), t.injectEncoding === E.MULTI_HEADER ? (this._inject = this._b3MultiPropagator.inject, this._fields = this._b3MultiPropagator.fields()) : (this._inject = this._b3SinglePropagator.inject, this._fields = this._b3SinglePropagator.fields()); } return r.prototype.inject = function(t, a, n) { A(t) || this._inject(t, a, n); }, r.prototype.extract = function(t, a, n) { var e = n.get(a, f), i = Array.isArray(e) ? e[0] : e; return i ? this._b3SinglePropagator.extract(t, a, n) : this._b3MultiPropagator.extract(t, a, n); }, r.prototype.fields = function() { return this._fields; }, r; })() ); export { E as B3InjectEncoding, z as B3Propagator, f as B3_CONTEXT_HEADER, S as X_B3_FLAGS, B as X_B3_PARENT_SPAN_ID, c as X_B3_SAMPLED, g as X_B3_SPAN_ID, v as X_B3_TRACE_ID }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDBsfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGMgYXMgY3JlYXRlQ29udGV4dEtleSwgdCBhcyB0cmFjZSwgaSBhcyBpc1NwYW5Db250ZXh0VmFsaWQsIFQgYXMgVHJhY2VGbGFncywgYiBhcyBpc1ZhbGlkVHJhY2VJZCwgZCBhcyBpc1ZhbGlkU3BhbklkIH0gZnJvbSAnLi9pbmRleC0hfnswMDl9fi5qcyc7XG5pbXBvcnQgeyBpIGFzIGlzVHJhY2luZ1N1cHByZXNzZWQgfSBmcm9tICcuL3N1cHByZXNzLXRyYWNpbmctIX57MDBhfX4uanMnO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqIHNoYXJlZCBjb250ZXh0IGZvciBzdG9yaW5nIGFuIGV4dHJhY3RlZCBiMyBkZWJ1ZyBmbGFnICovXG52YXIgQjNfREVCVUdfRkxBR19LRVkgPSBjcmVhdGVDb250ZXh0S2V5KCdPcGVuVGVsZW1ldHJ5IENvbnRleHQgS2V5IEIzIERlYnVnIEZsYWcnKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKiBCMyBzaW5nbGUtaGVhZGVyIGtleSAqL1xudmFyIEIzX0NPTlRFWFRfSEVBREVSID0gJ2IzJztcbi8qIGIzIG11bHRpLWhlYWRlciBrZXlzICovXG52YXIgWF9CM19UUkFDRV9JRCA9ICd4LWIzLXRyYWNlaWQnO1xudmFyIFhfQjNfU1BBTl9JRCA9ICd4LWIzLXNwYW5pZCc7XG52YXIgWF9CM19TQU1QTEVEID0gJ3gtYjMtc2FtcGxlZCc7XG52YXIgWF9CM19QQVJFTlRfU1BBTl9JRCA9ICd4LWIzLXBhcmVudHNwYW5pZCc7XG52YXIgWF9CM19GTEFHUyA9ICd4LWIzLWZsYWdzJztcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBWQUxJRF9TQU1QTEVEX1ZBTFVFUyA9IG5ldyBTZXQoW3RydWUsICd0cnVlJywgJ1RydWUnLCAnMScsIDFdKTtcbnZhciBWQUxJRF9VTlNBTVBMRURfVkFMVUVTID0gbmV3IFNldChbZmFsc2UsICdmYWxzZScsICdGYWxzZScsICcwJywgMF0pO1xuZnVuY3Rpb24gaXNWYWxpZFNhbXBsZWRWYWx1ZShzYW1wbGVkKSB7XG4gICAgcmV0dXJuIHNhbXBsZWQgPT09IFRyYWNlRmxhZ3MuU0FNUExFRCB8fCBzYW1wbGVkID09PSBUcmFjZUZsYWdzLk5PTkU7XG59XG5mdW5jdGlvbiBwYXJzZUhlYWRlcihoZWFkZXIpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyWzBdIDogaGVhZGVyO1xufVxuZnVuY3Rpb24gZ2V0SGVhZGVyVmFsdWUoY2FycmllciwgZ2V0dGVyLCBrZXkpIHtcbiAgICB2YXIgaGVhZGVyID0gZ2V0dGVyLmdldChjYXJyaWVyLCBrZXkpO1xuICAgIHJldHVybiBwYXJzZUhlYWRlcihoZWFkZXIpO1xufVxuZnVuY3Rpb24gZ2V0VHJhY2VJZChjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICB2YXIgdHJhY2VJZCA9IGdldEhlYWRlclZhbHVlKGNhcnJpZXIsIGdldHRlciwgWF9CM19UUkFDRV9JRCk7XG4gICAgaWYgKHR5cGVvZiB0cmFjZUlkID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdHJhY2VJZC5wYWRTdGFydCgzMiwgJzAnKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuZnVuY3Rpb24gZ2V0U3BhbklkKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciBzcGFuSWQgPSBnZXRIZWFkZXJWYWx1ZShjYXJyaWVyLCBnZXR0ZXIsIFhfQjNfU1BBTl9JRCk7XG4gICAgaWYgKHR5cGVvZiBzcGFuSWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBzcGFuSWQ7XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cbmZ1bmN0aW9uIGdldERlYnVnKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciBkZWJ1ZyA9IGdldEhlYWRlclZhbHVlKGNhcnJpZXIsIGdldHRlciwgWF9CM19GTEFHUyk7XG4gICAgcmV0dXJuIGRlYnVnID09PSAnMScgPyAnMScgOiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBnZXRUcmFjZUZsYWdzKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciB0cmFjZUZsYWdzID0gZ2V0SGVhZGVyVmFsdWUoY2FycmllciwgZ2V0dGVyLCBYX0IzX1NBTVBMRUQpO1xuICAgIHZhciBkZWJ1ZyA9IGdldERlYnVnKGNhcnJpZXIsIGdldHRlcik7XG4gICAgaWYgKGRlYnVnID09PSAnMScgfHwgVkFMSURfU0FNUExFRF9WQUxVRVMuaGFzKHRyYWNlRmxhZ3MpKSB7XG4gICAgICAgIHJldHVybiBUcmFjZUZsYWdzLlNBTVBMRUQ7XG4gICAgfVxuICAgIGlmICh0cmFjZUZsYWdzID09PSB1bmRlZmluZWQgfHwgVkFMSURfVU5TQU1QTEVEX1ZBTFVFUy5oYXModHJhY2VGbGFncykpIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlRmxhZ3MuTk9ORTtcbiAgICB9XG4gICAgLy8gVGhpcyBpbmRpY2F0ZXMgdG8gaXNWYWxpZFNhbXBsZWRWYWx1ZSB0aGF0IHRoaXMgaXMgbm90IHZhbGlkXG4gICAgcmV0dXJuO1xufVxuLyoqXG4gKiBQcm9wYWdhdG9yIGZvciB0aGUgQjMgbXVsdGlwbGUtaGVhZGVyIEhUVFAgZm9ybWF0LlxuICogQmFzZWQgb246IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuemlwa2luL2IzLXByb3BhZ2F0aW9uXG4gKi9cbnZhciBCM011bHRpUHJvcGFnYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCM011bHRpUHJvcGFnYXRvcigpIHtcbiAgICB9XG4gICAgQjNNdWx0aVByb3BhZ2F0b3IucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIHNwYW5Db250ZXh0ID0gdHJhY2UuZ2V0U3BhbkNvbnRleHQoY29udGV4dCk7XG4gICAgICAgIGlmICghc3BhbkNvbnRleHQgfHxcbiAgICAgICAgICAgICFpc1NwYW5Db250ZXh0VmFsaWQoc3BhbkNvbnRleHQpIHx8XG4gICAgICAgICAgICBpc1RyYWNpbmdTdXBwcmVzc2VkKGNvbnRleHQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB2YXIgZGVidWcgPSBjb250ZXh0LmdldFZhbHVlKEIzX0RFQlVHX0ZMQUdfS0VZKTtcbiAgICAgICAgc2V0dGVyLnNldChjYXJyaWVyLCBYX0IzX1RSQUNFX0lELCBzcGFuQ29udGV4dC50cmFjZUlkKTtcbiAgICAgICAgc2V0dGVyLnNldChjYXJyaWVyLCBYX0IzX1NQQU5fSUQsIHNwYW5Db250ZXh0LnNwYW5JZCk7XG4gICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgQjMgc3BlYywgaWYgdGhlIGRlYnVnIGZsYWcgaXMgc2V0LFxuICAgICAgICAvLyB0aGUgc2FtcGxlZCBmbGFnIHNob3VsZG4ndCBiZSBwcm9wYWdhdGVkIGFzIHdlbGwuXG4gICAgICAgIGlmIChkZWJ1ZyA9PT0gJzEnKSB7XG4gICAgICAgICAgICBzZXR0ZXIuc2V0KGNhcnJpZXIsIFhfQjNfRkxBR1MsIGRlYnVnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzcGFuQ29udGV4dC50cmFjZUZsYWdzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIFdlIHNldCB0aGUgaGVhZGVyIG9ubHkgaWYgdGhlcmUgaXMgYW4gZXhpc3Rpbmcgc2FtcGxpbmcgZGVjaXNpb24uXG4gICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2Ugd2lsbCBvbWl0IGl0ID0+IEFic2VudC5cbiAgICAgICAgICAgIHNldHRlci5zZXQoY2FycmllciwgWF9CM19TQU1QTEVELCAoVHJhY2VGbGFncy5TQU1QTEVEICYgc3BhbkNvbnRleHQudHJhY2VGbGFncykgPT09IFRyYWNlRmxhZ3MuU0FNUExFRFxuICAgICAgICAgICAgICAgID8gJzEnXG4gICAgICAgICAgICAgICAgOiAnMCcpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBCM011bHRpUHJvcGFnYXRvci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICAgICAgdmFyIHRyYWNlSWQgPSBnZXRUcmFjZUlkKGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIHZhciBzcGFuSWQgPSBnZXRTcGFuSWQoY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgdmFyIHRyYWNlRmxhZ3MgPSBnZXRUcmFjZUZsYWdzKGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIHZhciBkZWJ1ZyA9IGdldERlYnVnKGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIGlmIChpc1ZhbGlkVHJhY2VJZCh0cmFjZUlkKSAmJlxuICAgICAgICAgICAgaXNWYWxpZFNwYW5JZChzcGFuSWQpICYmXG4gICAgICAgICAgICBpc1ZhbGlkU2FtcGxlZFZhbHVlKHRyYWNlRmxhZ3MpKSB7XG4gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5zZXRWYWx1ZShCM19ERUJVR19GTEFHX0tFWSwgZGVidWcpO1xuICAgICAgICAgICAgcmV0dXJuIHRyYWNlLnNldFNwYW5Db250ZXh0KGNvbnRleHQsIHtcbiAgICAgICAgICAgICAgICB0cmFjZUlkOiB0cmFjZUlkLFxuICAgICAgICAgICAgICAgIHNwYW5JZDogc3BhbklkLFxuICAgICAgICAgICAgICAgIGlzUmVtb3RlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRyYWNlRmxhZ3M6IHRyYWNlRmxhZ3MsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICB9O1xuICAgIEIzTXVsdGlQcm9wYWdhdG9yLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBYX0IzX1RSQUNFX0lELFxuICAgICAgICAgICAgWF9CM19TUEFOX0lELFxuICAgICAgICAgICAgWF9CM19GTEFHUyxcbiAgICAgICAgICAgIFhfQjNfU0FNUExFRCxcbiAgICAgICAgICAgIFhfQjNfUEFSRU5UX1NQQU5fSUQsXG4gICAgICAgIF07XG4gICAgfTtcbiAgICByZXR1cm4gQjNNdWx0aVByb3BhZ2F0b3I7XG59KCkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fcmVhZCA9ICh1bmRlZmluZWQgJiYgdW5kZWZpbmVkLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBCM19DT05URVhUX1JFR0VYID0gLygoPzpbMC05YS1mXXsxNn0pezEsMn0pLShbMC05YS1mXXsxNn0pKD86LShbMDFkXSg/IVswLTlhLWZdKSkpPyg/Oi0oWzAtOWEtZl17MTZ9KSk/LztcbnZhciBQQURESU5HID0gJzAnLnJlcGVhdCgxNik7XG52YXIgU0FNUExFRF9WQUxVRVMgPSBuZXcgU2V0KFsnZCcsICcxJ10pO1xudmFyIERFQlVHX1NUQVRFID0gJ2QnO1xuZnVuY3Rpb24gY29udmVydFRvVHJhY2VJZDEyOCh0cmFjZUlkKSB7XG4gICAgcmV0dXJuIHRyYWNlSWQubGVuZ3RoID09PSAzMiA/IHRyYWNlSWQgOiBcIlwiICsgUEFERElORyArIHRyYWNlSWQ7XG59XG5mdW5jdGlvbiBjb252ZXJ0VG9UcmFjZUZsYWdzKHNhbXBsaW5nU3RhdGUpIHtcbiAgICBpZiAoc2FtcGxpbmdTdGF0ZSAmJiBTQU1QTEVEX1ZBTFVFUy5oYXMoc2FtcGxpbmdTdGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlRmxhZ3MuU0FNUExFRDtcbiAgICB9XG4gICAgcmV0dXJuIFRyYWNlRmxhZ3MuTk9ORTtcbn1cbi8qKlxuICogUHJvcGFnYXRvciBmb3IgdGhlIEIzIHNpbmdsZS1oZWFkZXIgSFRUUCBmb3JtYXQuXG4gKiBCYXNlZCBvbjogaHR0cHM6Ly9naXRodWIuY29tL29wZW56aXBraW4vYjMtcHJvcGFnYXRpb25cbiAqL1xudmFyIEIzU2luZ2xlUHJvcGFnYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCM1NpbmdsZVByb3BhZ2F0b3IoKSB7XG4gICAgfVxuICAgIEIzU2luZ2xlUHJvcGFnYXRvci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIHNldHRlcikge1xuICAgICAgICB2YXIgc3BhbkNvbnRleHQgPSB0cmFjZS5nZXRTcGFuQ29udGV4dChjb250ZXh0KTtcbiAgICAgICAgaWYgKCFzcGFuQ29udGV4dCB8fFxuICAgICAgICAgICAgIWlzU3BhbkNvbnRleHRWYWxpZChzcGFuQ29udGV4dCkgfHxcbiAgICAgICAgICAgIGlzVHJhY2luZ1N1cHByZXNzZWQoY29udGV4dCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBzYW1wbGluZ1N0YXRlID0gY29udGV4dC5nZXRWYWx1ZShCM19ERUJVR19GTEFHX0tFWSkgfHwgc3BhbkNvbnRleHQudHJhY2VGbGFncyAmIDB4MTtcbiAgICAgICAgdmFyIHZhbHVlID0gc3BhbkNvbnRleHQudHJhY2VJZCArIFwiLVwiICsgc3BhbkNvbnRleHQuc3BhbklkICsgXCItXCIgKyBzYW1wbGluZ1N0YXRlO1xuICAgICAgICBzZXR0ZXIuc2V0KGNhcnJpZXIsIEIzX0NPTlRFWFRfSEVBREVSLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBCM1NpbmdsZVByb3BhZ2F0b3IucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbiAoY29udGV4dCwgY2FycmllciwgZ2V0dGVyKSB7XG4gICAgICAgIHZhciBoZWFkZXIgPSBnZXR0ZXIuZ2V0KGNhcnJpZXIsIEIzX0NPTlRFWFRfSEVBREVSKTtcbiAgICAgICAgdmFyIGIzQ29udGV4dCA9IEFycmF5LmlzQXJyYXkoaGVhZGVyKSA/IGhlYWRlclswXSA6IGhlYWRlcjtcbiAgICAgICAgaWYgKHR5cGVvZiBiM0NvbnRleHQgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIHZhciBtYXRjaCA9IGIzQ29udGV4dC5tYXRjaChCM19DT05URVhUX1JFR0VYKTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB2YXIgX2EgPSBfX3JlYWQobWF0Y2gsIDQpLCBleHRyYWN0ZWRUcmFjZUlkID0gX2FbMV0sIHNwYW5JZCA9IF9hWzJdLCBzYW1wbGluZ1N0YXRlID0gX2FbM107XG4gICAgICAgIHZhciB0cmFjZUlkID0gY29udmVydFRvVHJhY2VJZDEyOChleHRyYWN0ZWRUcmFjZUlkKTtcbiAgICAgICAgaWYgKCFpc1ZhbGlkVHJhY2VJZCh0cmFjZUlkKSB8fCAhaXNWYWxpZFNwYW5JZChzcGFuSWQpKVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIHZhciB0cmFjZUZsYWdzID0gY29udmVydFRvVHJhY2VGbGFncyhzYW1wbGluZ1N0YXRlKTtcbiAgICAgICAgaWYgKHNhbXBsaW5nU3RhdGUgPT09IERFQlVHX1NUQVRFKSB7XG4gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5zZXRWYWx1ZShCM19ERUJVR19GTEFHX0tFWSwgc2FtcGxpbmdTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyYWNlLnNldFNwYW5Db250ZXh0KGNvbnRleHQsIHtcbiAgICAgICAgICAgIHRyYWNlSWQ6IHRyYWNlSWQsXG4gICAgICAgICAgICBzcGFuSWQ6IHNwYW5JZCxcbiAgICAgICAgICAgIGlzUmVtb3RlOiB0cnVlLFxuICAgICAgICAgICAgdHJhY2VGbGFnczogdHJhY2VGbGFncyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBCM1NpbmdsZVByb3BhZ2F0b3IucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFtCM19DT05URVhUX0hFQURFUl07XG4gICAgfTtcbiAgICByZXR1cm4gQjNTaW5nbGVQcm9wYWdhdG9yO1xufSgpKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKiBFbnVtZXJhdGlvbiBvZiBCMyBpbmplY3QgZW5jb2RpbmdzICovXG52YXIgQjNJbmplY3RFbmNvZGluZztcbihmdW5jdGlvbiAoQjNJbmplY3RFbmNvZGluZykge1xuICAgIEIzSW5qZWN0RW5jb2RpbmdbQjNJbmplY3RFbmNvZGluZ1tcIlNJTkdMRV9IRUFERVJcIl0gPSAwXSA9IFwiU0lOR0xFX0hFQURFUlwiO1xuICAgIEIzSW5qZWN0RW5jb2RpbmdbQjNJbmplY3RFbmNvZGluZ1tcIk1VTFRJX0hFQURFUlwiXSA9IDFdID0gXCJNVUxUSV9IRUFERVJcIjtcbn0pKEIzSW5qZWN0RW5jb2RpbmcgfHwgKEIzSW5qZWN0RW5jb2RpbmcgPSB7fSkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBQcm9wYWdhdG9yIHRoYXQgZXh0cmFjdHMgQjMgY29udGV4dCBpbiBib3RoIHNpbmdsZSBhbmQgbXVsdGktaGVhZGVyIHZhcmlhbnRzLFxuICogd2l0aCBjb25maWd1cmFibGUgaW5qZWN0aW9uIGZvcm1hdCBkZWZhdWx0aW5nIHRvIEIzIHNpbmdsZS1oZWFkZXIuIER1ZSB0b1xuICogdGhlIGFzeW1tZXRyeSBpbiBpbmplY3Rpb24gYW5kIGV4dHJhY3Rpb24gZm9ybWF0cyB0aGlzIGlzIG5vdCBzdWl0YWJsZSB0b1xuICogYmUgaW1wbGVtZW50ZWQgYXMgYSBjb21wb3NpdGUgcHJvcGFnYXRvci5cbiAqIEJhc2VkIG9uOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbnppcGtpbi9iMy1wcm9wYWdhdGlvblxuICovXG52YXIgQjNQcm9wYWdhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEIzUHJvcGFnYXRvcihjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gdm9pZCAwKSB7IGNvbmZpZyA9IHt9OyB9XG4gICAgICAgIHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yID0gbmV3IEIzTXVsdGlQcm9wYWdhdG9yKCk7XG4gICAgICAgIHRoaXMuX2IzU2luZ2xlUHJvcGFnYXRvciA9IG5ldyBCM1NpbmdsZVByb3BhZ2F0b3IoKTtcbiAgICAgICAgaWYgKGNvbmZpZy5pbmplY3RFbmNvZGluZyA9PT0gQjNJbmplY3RFbmNvZGluZy5NVUxUSV9IRUFERVIpIHtcbiAgICAgICAgICAgIHRoaXMuX2luamVjdCA9IHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmluamVjdDtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5qZWN0ID0gdGhpcy5fYjNTaW5nbGVQcm9wYWdhdG9yLmluamVjdDtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2IzU2luZ2xlUHJvcGFnYXRvci5maWVsZHMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBCM1Byb3BhZ2F0b3IucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpIHtcbiAgICAgICAgaWYgKGlzVHJhY2luZ1N1cHByZXNzZWQoY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbmplY3QoY29udGV4dCwgY2Fycmllciwgc2V0dGVyKTtcbiAgICB9O1xuICAgIEIzUHJvcGFnYXRvci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICAgICAgdmFyIGhlYWRlciA9IGdldHRlci5nZXQoY2FycmllciwgQjNfQ09OVEVYVF9IRUFERVIpO1xuICAgICAgICB2YXIgYjNDb250ZXh0ID0gQXJyYXkuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyWzBdIDogaGVhZGVyO1xuICAgICAgICBpZiAoYjNDb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYjNTaW5nbGVQcm9wYWdhdG9yLmV4dHJhY3QoY29udGV4dCwgY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9iM011bHRpUHJvcGFnYXRvci5leHRyYWN0KGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEIzUHJvcGFnYXRvci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH07XG4gICAgcmV0dXJuIEIzUHJvcGFnYXRvcjtcbn0oKSk7XG5cbmV4cG9ydCB7IEIzSW5qZWN0RW5jb2RpbmcsIEIzUHJvcGFnYXRvciwgQjNfQ09OVEVYVF9IRUFERVIsIFhfQjNfRkxBR1MsIFhfQjNfUEFSRU5UX1NQQU5fSUQsIFhfQjNfU0FNUExFRCwgWF9CM19TUEFOX0lELCBYX0IzX1RSQUNFX0lEIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFLQSxHQUFr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QUFVLFNBQVMsU0FBVTFCLEdBQVNaLEdBQVNhLEdBQVE7QUFDaEUsTUFBSTVCLEVBQW9CMkIsQ0FBTyxLQUcvQixLQUFLLFFBQVFBLEdBQVNaLEdBQVNhLENBQU07QUFBQSxJQUN6QyxHQUNBeUIsRUFBYSxVQUFVLFVBQVUsU0FBVTFCLEdBQVNaLEdBQVNDLEdBQVE7QUFDakUsVUFBSUgsSUFBU0csRUFBTyxJQUFJRCxHQUFTYixDQUFpQixHQUM5QzhDLElBQVksTUFBTSxRQUFRbkMsQ0FBTSxJQUFJQSxFQUFPLENBQUMsSUFBSUE7QUFDcEQsYUFBSW1DLElBQ08sS0FBSyxvQkFBb0IsUUFBUXJCLEdBQVNaLEdBQVNDLENBQU0sSUFHekQsS0FBSyxtQkFBbUIsUUFBUVcsR0FBU1osR0FBU0MsQ0FBTTtBQUFBLElBRXZFLEdBQ0FxQyxFQUFhLFVBQVUsU0FBUyxXQUFZO0FBQ3hDLGFBQU8sS0FBSztBQUFBLElBQ2hCLEdBQ09BO0FBQUEsRUFDWCxHQUFFO0FBQUE7IiwKICAibmFtZXMiOiBbImNyZWF0ZUNvbnRleHRLZXkiLCAidHJhY2UiLCAiaXNTcGFuQ29udGV4dFZhbGlkIiwgIlRyYWNlRmxhZ3MiLCAiaXNWYWxpZFRyYWNlSWQiLCAiaXNWYWxpZFNwYW5JZCIsICJpc1RyYWNpbmdTdXBwcmVzc2VkIiwgIkIzX0RFQlVHX0ZMQUdfS0VZIiwgIkIzX0NPTlRFWFRfSEVBREVSIiwgIlhfQjNfVFJBQ0VfSUQiLCAiWF9CM19TUEFOX0lEIiwgIlhfQjNfU0FNUExFRCIsICJYX0IzX1BBUkVOVF9TUEFOX0lEIiwgIlhfQjNfRkxBR1MiLCAiVkFMSURfU0FNUExFRF9WQUxVRVMiLCAiVkFMSURfVU5TQU1QTEVEX1ZBTFVFUyIsICJpc1ZhbGlkU2FtcGxlZFZhbHVlIiwgInNhbXBsZWQiLCAicGFyc2VIZWFkZXIiLCAiaGVhZGVyIiwgImdldEhlYWRlclZhbHVlIiwgImNhcnJpZXIiLCAiZ2V0dGVyIiwgImtleSIsICJnZXRUcmFjZUlkIiwgInRyYWNlSWQiLCAiZ2V0U3BhbklkIiwgInNwYW5JZCIsICJnZXREZWJ1ZyIsICJkZWJ1ZyIsICJnZXRUcmFjZUZsYWdzIiwgInRyYWNlRmxhZ3MiLCAiQjNNdWx0aVByb3BhZ2F0b3IiLCAiY29udGV4dCIsICJzZXR0ZXIiLCAic3BhbkNvbnRleHQiLCAiX19yZWFkIiwgIm8iLCAibiIsICJtIiwgImkiLCAiciIsICJhciIsICJlIiwgImVycm9yIiwgIkIzX0NPTlRFWFRfUkVHRVgiLCAiUEFERElORyIsICJTQU1QTEVEX1ZBTFVFUyIsICJERUJVR19TVEFURSIsICJjb252ZXJ0VG9UcmFjZUlkMTI4IiwgImNvbnZlcnRUb1RyYWNlRmxhZ3MiLCAic2FtcGxpbmdTdGF0ZSIsICJCM1NpbmdsZVByb3BhZ2F0b3IiLCAidmFsdWUiLCAiYjNDb250ZXh0IiwgIm1hdGNoIiwgIl9hIiwgImV4dHJhY3RlZFRyYWNlSWQiLCAiQjNJbmplY3RFbmNvZGluZyIsICJCM1Byb3BhZ2F0b3IiLCAiY29uZmlnIl0KfQo=