suitescript-mocks
Version:
Set of mocks for unit testing Netsuite Suitescript 2.*
109 lines • 23.4 kB
JavaScript
var _initClass, _dec, _dec2, _dec3, _init_addButton, _dec4, _dec5, _init_addCredentialField, _dec6, _dec7, _init_addField, _dec8, _dec9, _init_addFieldGroup, _dec10, _dec11, _init_addPageLink, _dec12, _init_addResetButton, _dec13, _dec14, _init_addSecretKeyField, _dec15, _dec16, _init_addSublist, _dec17, _init_addSubmitButton, _dec18, _dec19, _init_addSubtab, _dec20, _dec21, _init_addTab, _dec22, _dec23, _init_getButton, _dec24, _dec25, _init_getField, _dec26, _dec27, _init_getSublist, _dec28, _dec29, _init_getSubtab, _dec30, _dec31, _init_getTab, _dec32, _dec33, _init_insertField, _dec34, _dec35, _init_insertSublist, _dec36, _dec37, _init_insertSubtab, _dec38, _dec39, _init_insertTab, _dec40, _dec41, _init_removeButton;
function applyDecs2203RFactory() { function createAddInitializerMethod(e, t) { return function (r) { !function (e, t) { if (e.v) throw new Error("attempted to call " + t + " after decoration was finished"); }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r); }; } function memberDec(e, t, r, n, a, i, s, o) { var c; switch (a) { case 1: c = "accessor"; break; case 2: c = "method"; break; case 3: c = "getter"; break; case 4: c = "setter"; break; default: c = "field"; } var l, u, f = { kind: c, name: s ? "#" + t : t, static: i, private: s }, p = { v: !1 }; 0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? s ? (l = r.get, u = r.set) : (l = function () { return this[t]; }, u = function (e) { this[t] = e; }) : 2 === a ? l = function () { return r.value; } : (1 !== a && 3 !== a || (l = function () { return r.get.call(this); }), 1 !== a && 4 !== a || (u = function (e) { r.set.call(this, e); })), f.access = l && u ? { get: l, set: u } : l ? { get: l } : { set: u }; try { return e(o, f); } finally { p.v = !0; } } function assertCallable(e, t) { if ("function" != typeof e) throw new TypeError(t + " must be a function"); } function assertValidReturnValue(e, t) { var r = typeof t; if (1 === e) { if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init"); } else if ("function" !== r) { var n; throw n = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0"); } } function applyMemberDec(e, t, r, n, a, i, s, o) { var c, l, u, f, p, d, h = r[0]; if (s ? c = 0 === a || 1 === a ? { get: r[3], set: r[4] } : 3 === a ? { get: r[3] } : 4 === a ? { set: r[3] } : { value: r[3] } : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? u = { get: c.get, set: c.set } : 2 === a ? u = c.value : 3 === a ? u = c.get : 4 === a && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, n, c, o, a, i, s, u)) && (assertValidReturnValue(a, f), 0 === a ? l = f : 1 === a ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = { get: p, set: d }) : u = f);else for (var v = h.length - 1; v >= 0; v--) { var g; if (void 0 !== (f = memberDec(h[v], n, c, o, a, i, s, u))) assertValidReturnValue(a, f), 0 === a ? g = f : 1 === a ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = { get: p, set: d }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g)); } if (0 === a || 1 === a) { if (void 0 === l) l = function (e, t) { return t; };else if ("function" != typeof l) { var y = l; l = function (e, t) { for (var r = t, n = 0; n < y.length; n++) r = y[n].call(e, r); return r; }; } else { var m = l; l = function (e, t) { return m.call(e, t); }; } e.push(l); } 0 !== a && (1 === a ? (c.get = u.get, c.set = u.set) : 2 === a ? c.value = u : 3 === a ? c.get = u : 4 === a && (c.set = u), s ? 1 === a ? (e.push(function (e, t) { return u.get.call(e, t); }), e.push(function (e, t) { return u.set.call(e, t); })) : 2 === a ? e.push(u) : e.push(function (e, t) { return u.call(e, t); }) : Object.defineProperty(t, n, c)); } function applyMemberDecs(e, t) { for (var r, n, a = [], i = new Map(), s = new Map(), o = 0; o < t.length; o++) { var c = t[o]; if (Array.isArray(c)) { var l, u, f = c[1], p = c[2], d = c.length > 3, h = f >= 5; if (h ? (l = e, 0 !== (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) { var v = h ? s : i, g = v.get(p) || 0; if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p); !g && f > 2 ? v.set(p, f) : v.set(p, !0); } applyMemberDec(a, l, c, p, f, h, d, u); } } return pushInitializers(a, r), pushInitializers(a, n), a; } function pushInitializers(e, t) { t && e.push(function (e) { for (var r = 0; r < t.length; r++) t[r].call(e); return e; }); } return function (e, t, r) { return { e: applyMemberDecs(e, t), get c() { return function (e, t) { if (t.length > 0) { for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) { var s = { v: !1 }; try { var o = t[i](n, { kind: "class", name: a, addInitializer: createAddInitializerMethod(r, s) }); } finally { s.v = !0; } void 0 !== o && (assertValidReturnValue(10, o), n = o); } return [n, function () { for (var e = 0; e < r.length; e++) r[e].call(n); }]; } }(e, r); } }; }; }
function _applyDecs2203R(e, t, r) { return (_applyDecs2203R = applyDecs2203RFactory())(e, t, r); }
const {
options,
required,
assignConstructor
} = require("../../../helpers.cjs");
const Field = require("./Field.cjs");
const Button = require("./Button.cjs");
let _Form;
_dec = assignConstructor();
_dec2 = options("id", "label", "functionName");
_dec3 = required("id", "label");
_dec4 = options("id", "label", "restrictToDomains", "restrictToScriptIds", "restrictToCurrentUser", "container");
_dec5 = required("id", "label", "restrictToDomains", "restrictToScriptIds");
_dec6 = options("id", "label", "type", "source", "container");
_dec7 = required("id", "label", "type");
_dec8 = options("id", "label", "tab");
_dec9 = required("id", "label");
_dec10 = options("title", "type", "url");
_dec11 = required("title", "type", "url");
_dec12 = options("label");
_dec13 = options("id", "restrictToScriptIds", "label", "restrictToCurrentUser", "container");
_dec14 = required("id", "restrictToScriptIds", "label");
_dec15 = options("id", "label", "type", "tab");
_dec16 = required("id", "label", "type");
_dec17 = options("label");
_dec18 = options("id", "label", "tab");
_dec19 = required("id", "label");
_dec20 = options("id", "label");
_dec21 = required("id", "label");
_dec22 = options("id");
_dec23 = required("id");
_dec24 = options("id");
_dec25 = required("id");
_dec26 = options("id");
_dec27 = required("id");
_dec28 = options("id");
_dec29 = required("id");
_dec30 = options("id");
_dec31 = required("id");
_dec32 = options("field", "nextfield");
_dec33 = required("field", "nextfield");
_dec34 = options("sublist", "nextsublist");
_dec35 = required("sublist", "nextsublist");
_dec36 = options("subtab", "nextsub");
_dec37 = required("subtab", "nextsub");
_dec38 = options("tab", "nexttab");
_dec39 = required("tab", "nexttab");
_dec40 = options("id");
_dec41 = required("id");
class Form {
static {
({
e: [_init_addButton, _init_addCredentialField, _init_addField, _init_addFieldGroup, _init_addPageLink, _init_addResetButton, _init_addSecretKeyField, _init_addSublist, _init_addSubmitButton, _init_addSubtab, _init_addTab, _init_getButton, _init_getField, _init_getSublist, _init_getSubtab, _init_getTab, _init_insertField, _init_insertSublist, _init_insertSubtab, _init_insertTab, _init_removeButton],
c: [_Form, _initClass]
} = _applyDecs2203R(this, [[[_dec2, _dec3], 0, "addButton"], [[_dec4, _dec5], 0, "addCredentialField"], [[_dec6, _dec7], 0, "addField"], [[_dec8, _dec9], 0, "addFieldGroup"], [[_dec10, _dec11], 0, "addPageLink"], [_dec12, 0, "addResetButton"], [[_dec13, _dec14], 0, "addSecretKeyField"], [[_dec15, _dec16], 0, "addSublist"], [_dec17, 0, "addSubmitButton"], [[_dec18, _dec19], 0, "addSubtab"], [[_dec20, _dec21], 0, "addTab"], [[_dec22, _dec23], 0, "getButton"], [[_dec24, _dec25], 0, "getField"], [[_dec26, _dec27], 0, "getSublist"], [[_dec28, _dec29], 0, "getSubtab"], [[_dec30, _dec31], 0, "getTab"], [[_dec32, _dec33], 0, "insertField"], [[_dec34, _dec35], 0, "insertSublist"], [[_dec36, _dec37], 0, "insertSubtab"], [[_dec38, _dec39], 0, "insertTab"], [[_dec40, _dec41], 0, "removeButton"]], [_dec]));
}
buttons = {};
fields = {};
title;
clientScriptFileId;
clientScriptModulePath;
addButton = _init_addButton(this, options => {
const button = new Button(options);
this.buttons[options.id] = button;
return button;
});
addCredentialField = _init_addCredentialField(this, options => {});
addField = _init_addField(this, options => {
if (!options.id.startsWith("custpage")) {
throw new Error("Field id must begin with custpage");
}
const field = new Field(options);
this.fields[options.id] = field;
return field;
});
addFieldGroup = _init_addFieldGroup(this, options => {});
addPageInitMessage = options => {};
addPageLink = _init_addPageLink(this, options => {});
addResetButton = _init_addResetButton(this, options => {});
addSecretKeyField = _init_addSecretKeyField(this, options => {});
addSublist = _init_addSublist(this, options => {});
addSubmitButton = _init_addSubmitButton(this, options => {});
addSubtab = _init_addSubtab(this, options => {});
addTab = _init_addTab(this, options => {});
getButton = _init_getButton(this, options => {
return this.buttons[options.id];
});
getField = _init_getField(this, options => {
return this.fields[options.id];
});
getSublist = _init_getSublist(this, options => {});
getSubtab = _init_getSubtab(this, options => {});
getTab = _init_getTab(this, options => {});
getTabs = () => {};
insertField = _init_insertField(this, options => {});
insertSublist = _init_insertSublist(this, options => {});
insertSubtab = _init_insertSubtab(this, options => {});
insertTab = _init_insertTab(this, options => {});
removeButton = _init_removeButton(this, options => {});
updateDefaultValues = values => {};
static {
_initClass();
}
}
module.exports = _Form;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zIiwicmVxdWlyZWQiLCJhc3NpZ25Db25zdHJ1Y3RvciIsInJlcXVpcmUiLCJGaWVsZCIsIkJ1dHRvbiIsIl9Gb3JtIiwiX2RlYyIsIl9kZWMyIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJfZGVjMjUiLCJfZGVjMjYiLCJfZGVjMjciLCJfZGVjMjgiLCJfZGVjMjkiLCJfZGVjMzAiLCJfZGVjMzEiLCJfZGVjMzIiLCJfZGVjMzMiLCJfZGVjMzQiLCJfZGVjMzUiLCJfZGVjMzYiLCJfZGVjMzciLCJfZGVjMzgiLCJfZGVjMzkiLCJfZGVjNDAiLCJfZGVjNDEiLCJGb3JtIiwiZSIsIl9pbml0X2FkZEJ1dHRvbiIsIl9pbml0X2FkZENyZWRlbnRpYWxGaWVsZCIsIl9pbml0X2FkZEZpZWxkIiwiX2luaXRfYWRkRmllbGRHcm91cCIsIl9pbml0X2FkZFBhZ2VMaW5rIiwiX2luaXRfYWRkUmVzZXRCdXR0b24iLCJfaW5pdF9hZGRTZWNyZXRLZXlGaWVsZCIsIl9pbml0X2FkZFN1Ymxpc3QiLCJfaW5pdF9hZGRTdWJtaXRCdXR0b24iLCJfaW5pdF9hZGRTdWJ0YWIiLCJfaW5pdF9hZGRUYWIiLCJfaW5pdF9nZXRCdXR0b24iLCJfaW5pdF9nZXRGaWVsZCIsIl9pbml0X2dldFN1Ymxpc3QiLCJfaW5pdF9nZXRTdWJ0YWIiLCJfaW5pdF9nZXRUYWIiLCJfaW5pdF9pbnNlcnRGaWVsZCIsIl9pbml0X2luc2VydFN1Ymxpc3QiLCJfaW5pdF9pbnNlcnRTdWJ0YWIiLCJfaW5pdF9pbnNlcnRUYWIiLCJfaW5pdF9yZW1vdmVCdXR0b24iLCJjIiwiX2luaXRDbGFzcyIsIl9hcHBseURlY3MyMjAzUiIsImJ1dHRvbnMiLCJmaWVsZHMiLCJ0aXRsZSIsImNsaWVudFNjcmlwdEZpbGVJZCIsImNsaWVudFNjcmlwdE1vZHVsZVBhdGgiLCJhZGRCdXR0b24iLCJidXR0b24iLCJpZCIsImFkZENyZWRlbnRpYWxGaWVsZCIsImFkZEZpZWxkIiwic3RhcnRzV2l0aCIsIkVycm9yIiwiZmllbGQiLCJhZGRGaWVsZEdyb3VwIiwiYWRkUGFnZUluaXRNZXNzYWdlIiwiYWRkUGFnZUxpbmsiLCJhZGRSZXNldEJ1dHRvbiIsImFkZFNlY3JldEtleUZpZWxkIiwiYWRkU3VibGlzdCIsImFkZFN1Ym1pdEJ1dHRvbiIsImFkZFN1YnRhYiIsImFkZFRhYiIsImdldEJ1dHRvbiIsImdldEZpZWxkIiwiZ2V0U3VibGlzdCIsImdldFN1YnRhYiIsImdldFRhYiIsImdldFRhYnMiLCJpbnNlcnRGaWVsZCIsImluc2VydFN1Ymxpc3QiLCJpbnNlcnRTdWJ0YWIiLCJpbnNlcnRUYWIiLCJyZW1vdmVCdXR0b24iLCJ1cGRhdGVEZWZhdWx0VmFsdWVzIiwidmFsdWVzIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2Nrcy91aS9zZXJ2ZXJXaWRnZXQvRm9ybS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBvcHRpb25zLCByZXF1aXJlZCwgYXNzaWduQ29uc3RydWN0b3IgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9oZWxwZXJzLmNqc1wiKTtcbmNvbnN0IEZpZWxkID0gcmVxdWlyZShcIi4vRmllbGQuY2pzXCIpO1xuY29uc3QgQnV0dG9uID0gcmVxdWlyZShcIi4vQnV0dG9uLmNqc1wiKTtcblxuQGFzc2lnbkNvbnN0cnVjdG9yKClcbmNsYXNzIEZvcm0ge1xuXHRidXR0b25zID0ge307XG5cdGZpZWxkcyA9IHt9O1xuXHR0aXRsZTtcblx0Y2xpZW50U2NyaXB0RmlsZUlkO1xuXHRjbGllbnRTY3JpcHRNb2R1bGVQYXRoO1xuXG5cdEBvcHRpb25zKFwiaWRcIiwgXCJsYWJlbFwiLCBcImZ1bmN0aW9uTmFtZVwiKVxuXHRAcmVxdWlyZWQoXCJpZFwiLCBcImxhYmVsXCIpXG5cdGFkZEJ1dHRvbiA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3QgYnV0dG9uID0gbmV3IEJ1dHRvbihvcHRpb25zKTtcblx0XHR0aGlzLmJ1dHRvbnNbb3B0aW9ucy5pZF0gPSBidXR0b247XG5cdFx0cmV0dXJuIGJ1dHRvbjtcblx0fTtcblxuXHRAb3B0aW9ucyhcImlkXCIsIFwibGFiZWxcIiwgXCJyZXN0cmljdFRvRG9tYWluc1wiLCBcInJlc3RyaWN0VG9TY3JpcHRJZHNcIiwgXCJyZXN0cmljdFRvQ3VycmVudFVzZXJcIiwgXCJjb250YWluZXJcIilcblx0QHJlcXVpcmVkKFwiaWRcIiwgXCJsYWJlbFwiLCBcInJlc3RyaWN0VG9Eb21haW5zXCIsIFwicmVzdHJpY3RUb1NjcmlwdElkc1wiKVxuXHRhZGRDcmVkZW50aWFsRmllbGQgPSAob3B0aW9ucykgPT4ge307XG5cblx0QG9wdGlvbnMoXCJpZFwiLCBcImxhYmVsXCIsIFwidHlwZVwiLCBcInNvdXJjZVwiLCBcImNvbnRhaW5lclwiKVxuXHRAcmVxdWlyZWQoXCJpZFwiLCBcImxhYmVsXCIsIFwidHlwZVwiKVxuXHRhZGRGaWVsZCA9IChvcHRpb25zKSA9PiB7XG5cdFx0aWYgKCFvcHRpb25zLmlkLnN0YXJ0c1dpdGgoXCJjdXN0cGFnZVwiKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiRmllbGQgaWQgbXVzdCBiZWdpbiB3aXRoIGN1c3RwYWdlXCIpO1xuXHRcdH1cblx0XHRjb25zdCBmaWVsZCA9IG5ldyBGaWVsZChvcHRpb25zKTtcblx0XHR0aGlzLmZpZWxkc1tvcHRpb25zLmlkXSA9IGZpZWxkO1xuXHRcdHJldHVybiBmaWVsZDtcblx0fTtcblxuXHRAb3B0aW9ucyhcImlkXCIsIFwibGFiZWxcIiwgXCJ0YWJcIilcblx0QHJlcXVpcmVkKFwiaWRcIiwgXCJsYWJlbFwiKVxuXHRhZGRGaWVsZEdyb3VwID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGFkZFBhZ2VJbml0TWVzc2FnZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAb3B0aW9ucyhcInRpdGxlXCIsIFwidHlwZVwiLCBcInVybFwiKVxuXHRAcmVxdWlyZWQoXCJ0aXRsZVwiLCBcInR5cGVcIiwgXCJ1cmxcIilcblx0YWRkUGFnZUxpbmsgPSAob3B0aW9ucykgPT4ge307XG5cblx0QG9wdGlvbnMoXCJsYWJlbFwiKVxuXHRhZGRSZXNldEJ1dHRvbiA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAb3B0aW9ucyhcImlkXCIsIFwicmVzdHJpY3RUb1NjcmlwdElkc1wiLCBcImxhYmVsXCIsIFwicmVzdHJpY3RUb0N1cnJlbnRVc2VyXCIsIFwiY29udGFpbmVyXCIpXG5cdEByZXF1aXJlZChcImlkXCIsIFwicmVzdHJpY3RUb1NjcmlwdElkc1wiLCBcImxhYmVsXCIpXG5cdGFkZFNlY3JldEtleUZpZWxkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdEBvcHRpb25zKFwiaWRcIiwgXCJsYWJlbFwiLCBcInR5cGVcIiwgXCJ0YWJcIilcblx0QHJlcXVpcmVkKFwiaWRcIiwgXCJsYWJlbFwiLCBcInR5cGVcIilcblx0YWRkU3VibGlzdCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAb3B0aW9ucyhcImxhYmVsXCIpXG5cdGFkZFN1Ym1pdEJ1dHRvbiA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAb3B0aW9ucyhcImlkXCIsIFwibGFiZWxcIiwgXCJ0YWJcIilcblx0QHJlcXVpcmVkKFwiaWRcIiwgXCJsYWJlbFwiKVxuXHRhZGRTdWJ0YWIgPSAob3B0aW9ucykgPT4ge307XG5cblx0QG9wdGlvbnMoXCJpZFwiLCBcImxhYmVsXCIpXG5cdEByZXF1aXJlZChcImlkXCIsIFwibGFiZWxcIilcblx0YWRkVGFiID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdEBvcHRpb25zKFwiaWRcIilcblx0QHJlcXVpcmVkKFwiaWRcIilcblx0Z2V0QnV0dG9uID0gKG9wdGlvbnMpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5idXR0b25zW29wdGlvbnMuaWRdO1xuXHR9O1xuXG5cdEBvcHRpb25zKFwiaWRcIilcblx0QHJlcXVpcmVkKFwiaWRcIilcblx0Z2V0RmllbGQgPSAob3B0aW9ucykgPT4ge1xuXHRcdHJldHVybiB0aGlzLmZpZWxkc1tvcHRpb25zLmlkXTtcblx0fTtcblxuXHRAb3B0aW9ucyhcImlkXCIpXG5cdEByZXF1aXJlZChcImlkXCIpXG5cdGdldFN1Ymxpc3QgPSAob3B0aW9ucykgPT4ge307XG5cblx0QG9wdGlvbnMoXCJpZFwiKVxuXHRAcmVxdWlyZWQoXCJpZFwiKVxuXHRnZXRTdWJ0YWIgPSAob3B0aW9ucykgPT4ge307XG5cblx0QG9wdGlvbnMoXCJpZFwiKVxuXHRAcmVxdWlyZWQoXCJpZFwiKVxuXHRnZXRUYWIgPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0VGFicyA9ICgpID0+IHt9O1xuXG5cdEBvcHRpb25zKFwiZmllbGRcIiwgXCJuZXh0ZmllbGRcIilcblx0QHJlcXVpcmVkKFwiZmllbGRcIiwgXCJuZXh0ZmllbGRcIilcblx0aW5zZXJ0RmllbGQgPSAob3B0aW9ucykgPT4ge307XG5cblx0QG9wdGlvbnMoXCJzdWJsaXN0XCIsIFwibmV4dHN1Ymxpc3RcIilcblx0QHJlcXVpcmVkKFwic3VibGlzdFwiLCBcIm5leHRzdWJsaXN0XCIpXG5cdGluc2VydFN1Ymxpc3QgPSAob3B0aW9ucykgPT4ge307XG5cblx0QG9wdGlvbnMoXCJzdWJ0YWJcIiwgXCJuZXh0c3ViXCIpXG5cdEByZXF1aXJlZChcInN1YnRhYlwiLCBcIm5leHRzdWJcIilcblx0aW5zZXJ0U3VidGFiID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdEBvcHRpb25zKFwidGFiXCIsIFwibmV4dHRhYlwiKVxuXHRAcmVxdWlyZWQoXCJ0YWJcIiwgXCJuZXh0dGFiXCIpXG5cdGluc2VydFRhYiA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAb3B0aW9ucyhcImlkXCIpXG5cdEByZXF1aXJlZChcImlkXCIpXG5cdHJlbW92ZUJ1dHRvbiA9IChvcHRpb25zKSA9PiB7fTtcblxuXHR1cGRhdGVEZWZhdWx0VmFsdWVzID0gKHZhbHVlcykgPT4ge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRm9ybTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTTtFQUFFQSxPQUFPO0VBQUVDLFFBQVE7RUFBRUM7QUFBa0IsQ0FBQyxHQUFHQyxPQUFPLENBQUMsc0JBQXNCLENBQUM7QUFDaEYsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3BDLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUFDLElBQUFHLEtBQUE7QUFBQUMsSUFBQSxHQUV0Q0wsaUJBQWlCLENBQUMsQ0FBQztBQUFBTSxLQUFBLEdBUWxCUixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUM7QUFBQVMsS0FBQSxHQUN0Q1IsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7QUFBQVMsS0FBQSxHQU92QlYsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxDQUFDO0FBQUFXLEtBQUEsR0FDeEdWLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixDQUFDO0FBQUFXLEtBQUEsR0FHbkVaLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDO0FBQUFhLEtBQUEsR0FDckRaLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQztBQUFBYSxLQUFBLEdBVS9CZCxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUM7QUFBQWUsS0FBQSxHQUM3QmQsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7QUFBQWUsTUFBQSxHQUt2QmhCLE9BQU8sQ0FBQyxPQUFP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