merchi_checkout
Version:
Merchi's custom checkout step form
198 lines (197 loc) • 53.8 kB
JavaScript
'use client';
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
import { useState } from 'react';
import { useForm } from 'react-hook-form';
import InputAcceptUserTermsAndConditions from './InputAcceptUserTermsAndConditions';
import { createNewCustomer } from '../../actions/customer';
import InputSelect from './InputSelect';
import InputText from './InputText';
import { useMerchiCheckboutContext } from '../MerchiCheckoutProvider';
import { phoneOptions } from '../../utils';
import InputError from './InputError';
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
export var emailValidation = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]/i;
export function FormCustomerNew() {
var _useMerchiCheckboutCo = useMerchiCheckboutContext(),
classNameMerchiCheckoutButtonPrimary = _useMerchiCheckboutCo.classNameMerchiCheckoutButtonPrimary,
classNameMerchiCheckoutFormGroup = _useMerchiCheckboutCo.classNameMerchiCheckoutFormGroup,
includeDomainSignup = _useMerchiCheckboutCo.includeDomainSignup,
nextTab = _useMerchiCheckboutCo.nextTab,
setCustomer = _useMerchiCheckboutCo.setCustomer,
showUserTermsAndConditions = _useMerchiCheckboutCo.showUserTermsAndConditions,
urlApi = _useMerchiCheckboutCo.urlApi;
var _useState = useState(null),
_useState2 = _slicedToArray(_useState, 2),
error = _useState2[0],
setError = _useState2[1];
var _useState3 = useState(false),
_useState4 = _slicedToArray(_useState3, 2),
loading = _useState4[0],
setLoading = _useState4[1];
var _useState5 = useState(true),
_useState6 = _slicedToArray(_useState5, 2),
acceptConditions = _useState6[0],
setAcceptConditions = _useState6[1];
var _useForm = useForm({
defaultValues: {
emailAddresses: [{
emailAddress: ''
}],
name: '',
phoneNumbers: [{
code: 'AU',
number: ''
}],
registeredAsGuest: false
}
}),
control = _useForm.control,
handleSubmit = _useForm.handleSubmit,
watch = _useForm.watch;
function onSubmit(_x) {
return _onSubmit.apply(this, arguments);
} // Basic validation for phone. Checking that phone is a number. Can make more complex if we want.
function _onSubmit() {
_onSubmit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(values) {
var r, userJson, _error;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
setLoading(true);
_context.prev = 1;
_context.next = 4;
return createNewCustomer(urlApi, _objectSpread({}, values));
case 4:
r = _context.sent;
if (!r.ok) {
_context.next = 14;
break;
}
_context.next = 8;
return r.json();
case 8:
userJson = _context.sent;
setCustomer(userJson.user);
if (!includeDomainSignup) {
nextTab();
}
setLoading(false);
_context.next = 19;
break;
case 14:
_context.next = 16;
return r.json();
case 16:
_error = _context.sent;
setError(_error);
setLoading(false);
case 19:
_context.next = 25;
break;
case 21:
_context.prev = 21;
_context.t0 = _context["catch"](1);
setError(_context.t0);
setLoading(false);
case 25:
case "end":
return _context.stop();
}
}, _callee, null, [[1, 21]]);
}));
return _onSubmit.apply(this, arguments);
}
function validatePhone() {
var phone = watch('phoneNumbers.0.number');
if (isNaN(phone)) return 'Phone number must be a number';else return true;
}
return /*#__PURE__*/_jsxs("form", {
onSubmit: handleSubmit(onSubmit),
children: [/*#__PURE__*/_jsx(InputText, {
control: control,
label: "Full Name",
name: "name",
placeholder: "John Smith",
rules: {
required: 'Full name is required.'
}
}), /*#__PURE__*/_jsx(InputText, {
control: control,
label: "Email",
name: "emailAddresses[0].emailAddress",
placeholder: "john@example.com",
rules: {
required: 'Email is required.',
validate: emailValidation
}
}), /*#__PURE__*/_jsxs("div", {
style: {
display: 'flex',
gap: '1rem'
},
children: [/*#__PURE__*/_jsx("div", {
style: {
flexGrow: 1
},
children: /*#__PURE__*/_jsx(InputSelect, {
control: control,
label: "Country Code",
name: "phoneNumbers[0].code",
options: phoneOptions
})
}), /*#__PURE__*/_jsx("div", {
style: {
flexGrow: 1
},
children: /*#__PURE__*/_jsx(InputText, {
control: control,
label: "Phone Number",
name: "phoneNumbers[0].number",
placeholder: "0400 000 000",
rules: {
required: 'Phone number is required',
validate: validatePhone
},
type: "phone"
})
})]
}), showUserTermsAndConditions && /*#__PURE__*/_jsxs("div", {
className: classNameMerchiCheckoutFormGroup,
children: [/*#__PURE__*/_jsx(InputAcceptUserTermsAndConditions, {
isChecked: acceptConditions,
setIsChecked: setAcceptConditions
}), !acceptConditions && /*#__PURE__*/_jsx(InputError, {
error: {
message: 'You must agree to the user profile terms and conditions to proceed.'
}
})]
}), /*#__PURE__*/_jsx(InputError, {
error: error || {}
}), /*#__PURE__*/_jsx("div", {
className: classNameMerchiCheckoutFormGroup,
children: /*#__PURE__*/_jsx("button", {
className: classNameMerchiCheckoutButtonPrimary,
disabled: loading,
type: "submit",
children: loading ? 'Loading...' : 'Submit'
})
})]
});
}
export default FormCustomerNew;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwibiIsImhhc093blByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImkiLCJhIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwia2V5IiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIk51bWJlciIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiZXJyIiwidW5kZWZpbmVkIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiaXNBcnJheSIsInVzZVN0YXRlIiwidXNlRm9ybSIsIklucHV0QWNjZXB0VXNlclRlcm1zQW5kQ29uZGl0aW9ucyIsImNyZWF0ZU5ld0N1c3RvbWVyIiwiSW5wdXRTZWxlY3QiLCJJbnB1dFRleHQiLCJ1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0IiwicGhvbmVPcHRpb25zIiwiSW5wdXRFcnJvciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJlbWFpbFZhbGlkYXRpb24iLCJGb3JtQ3VzdG9tZXJOZXciLCJfdXNlTWVyY2hpQ2hlY2tib3V0Q28iLCJjbGFzc05hbWVNZXJjaGlDaGVja291dEJ1dHRvblByaW1hcnkiLCJjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1Hcm91cCIsImluY2x1ZGVEb21haW5TaWdudXAiLCJuZXh0VGFiIiwic2V0Q3VzdG9tZXIiLCJzaG93VXNlclRlcm1zQW5kQ29uZGl0aW9ucyIsInVybEFwaSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImFjY2VwdENvbmRpdGlvbnMiLCJzZXRBY2NlcHRDb25kaXRpb25zIiwiX3VzZUZvcm0iLCJkZWZhdWx0VmFsdWVzIiwiZW1haWxBZGRyZXNzZXMiLCJlbWFpbEFkZHJlc3MiLCJwaG9uZU51bWJlcnMiLCJjb2RlIiwibnVtYmVyIiwicmVnaXN0ZXJlZEFzR3Vlc3QiLCJjb250cm9sIiwiaGFuZGxlU3VibWl0Iiwid2F0Y2giLCJvblN1Ym1pdCIsIl94IiwiX29uU3VibWl0IiwiX2NhbGxlZSIsInVzZXJKc29uIiwiX2Vycm9yIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIm9rIiwianNvbiIsInVzZXIiLCJ0MCIsInZhbGlkYXRlUGhvbmUiLCJwaG9uZSIsImNoaWxkcmVuIiwibGFiZWwiLCJwbGFjZWhvbGRlciIsInJ1bGVzIiwicmVxdWlyZWQiLCJ2YWxpZGF0ZSIsInN0eWxlIiwiZGlzcGxheSIsImdhcCIsImZsZXhHcm93Iiwib3B0aW9ucyIsImNsYXNzTmFtZSIsImlzQ2hlY2tlZCIsInNldElzQ2hlY2tlZCIsIm1lc3NhZ2UiLCJkaXNhYmxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Zvcm1zL0Zvcm1DdXN0b21lck5ldy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSAncmVhY3QtaG9vay1mb3JtJztcbmltcG9ydCBJbnB1dEFjY2VwdFVzZXJUZXJtc0FuZENvbmRpdGlvbnMgZnJvbSAnLi9JbnB1dEFjY2VwdFVzZXJUZXJtc0FuZENvbmRpdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlTmV3Q3VzdG9tZXIgfSBmcm9tICcuLi8uLi9hY3Rpb25zL2N1c3RvbWVyJztcbmltcG9ydCBJbnB1dFNlbGVjdCBmcm9tICcuL0lucHV0U2VsZWN0JztcbmltcG9ydCBJbnB1dFRleHQgZnJvbSAnLi9JbnB1dFRleHQnO1xuaW1wb3J0IHsgdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCB9IGZyb20gJy4uL01lcmNoaUNoZWNrb3V0UHJvdmlkZXInO1xuaW1wb3J0IHsgcGhvbmVPcHRpb25zIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IElucHV0RXJyb3IgZnJvbSAnLi9JbnB1dEVycm9yJztcblxuZXhwb3J0IGNvbnN0IGVtYWlsVmFsaWRhdGlvbiA9IC9eW0EtWjAtOS5fJSstXStAW0EtWjAtOS4tXStcXC5bQS1aXS9pO1xuXG5leHBvcnQgZnVuY3Rpb24gRm9ybUN1c3RvbWVyTmV3KCkge1xuICBjb25zdCB7XG4gICAgY2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25QcmltYXJ5LFxuICAgIGNsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUdyb3VwLFxuICAgIGluY2x1ZGVEb21haW5TaWdudXAsXG4gICAgbmV4dFRhYixcbiAgICBzZXRDdXN0b21lcixcbiAgICBzaG93VXNlclRlcm1zQW5kQ29uZGl0aW9ucyxcbiAgICB1cmxBcGksXG4gIH0gPSB1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0KCk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2FjY2VwdENvbmRpdGlvbnMsIHNldEFjY2VwdENvbmRpdGlvbnNdID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgY29uc3QgeyBjb250cm9sLCBoYW5kbGVTdWJtaXQsIHdhdGNoIH0gPSB1c2VGb3JtKHtcbiAgICBkZWZhdWx0VmFsdWVzOiB7XG4gICAgICBlbWFpbEFkZHJlc3NlczogW3sgZW1haWxBZGRyZXNzOiAnJyB9XSxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgcGhvbmVOdW1iZXJzOiBbeyBjb2RlOiAnQVUnLCBudW1iZXI6ICcnIH1dLFxuICAgICAgcmVnaXN0ZXJlZEFzR3Vlc3Q6IGZhbHNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIG9uU3VibWl0KHZhbHVlczogYW55KSB7XG4gICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgciA9IGF3YWl0IGNyZWF0ZU5ld0N1c3RvbWVyKCh1cmxBcGkgYXMgc3RyaW5nKSwgeyAuLi52YWx1ZXMgfSk7XG4gICAgICBpZiAoci5vaykge1xuICAgICAgICBjb25zdCB1c2VySnNvbiA9IGF3YWl0IHIuanNvbigpO1xuICAgICAgICBzZXRDdXN0b21lcih1c2VySnNvbi51c2VyKTtcbiAgICAgICAgaWYgKCFpbmNsdWRlRG9tYWluU2lnbnVwKSB7XG4gICAgICAgICAgbmV4dFRhYigpO1xuICAgICAgICB9XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCByLmpzb24oKTtcbiAgICAgICAgc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHNldEVycm9yKGUpO1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQmFzaWMgdmFsaWRhdGlvbiBmb3IgcGhvbmUuIENoZWNraW5nIHRoYXQgcGhvbmUgaXMgYSBudW1iZXIuIENhbiBtYWtlIG1vcmUgY29tcGxleCBpZiB3ZSB3YW50LlxuICBmdW5jdGlvbiB2YWxpZGF0ZVBob25lKCkge1xuICAgIGNvbnN0IHBob25lID0gd2F0Y2goJ3Bob25lTnVtYmVycy4wLm51bWJlcicpO1xuICAgIGlmIChpc05hTihwaG9uZSBhcyBhbnkpKSByZXR1cm4gJ1Bob25lIG51bWJlciBtdXN0IGJlIGEgbnVtYmVyJztcbiAgICBlbHNlIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdChvblN1Ym1pdCl9PlxuICAgICAgPElucHV0VGV4dFxuICAgICAgICBjb250cm9sPXtjb250cm9sfVxuICAgICAgICBsYWJlbD0nRnVsbCBOYW1lJ1xuICAgICAgICBuYW1lPSduYW1lJ1xuICAgICAgICBwbGFjZWhvbGRlcj0nSm9obiBTbWl0aCdcbiAgICAgICAgcnVsZXM9e3sgcmVxdWlyZWQ6ICdGdWxsIG5hbWUgaXMgcmVxdWlyZWQuJyB9fVxuICAgICAgLz5cbiAgICAgIDxJbnB1dFRleHRcbiAgICAgICAgY29udHJvbD17Y29udHJvbH1cbiAgICAgICAgbGFiZWw9J0VtYWlsJ1xuICAgICAgICBuYW1lPSdlbWFpbEFkZHJlc3Nlc1swXS5lbWFpbEFkZHJlc3MnXG4gICAgICAgIHBsYWNlaG9sZGVyPSdqb2huQGV4YW1wbGUuY29tJ1xuICAgICAgICBydWxlcz17e1xuICAgICAgICAgIHJlcXVpcmVkOiAnRW1haWwgaXMgcmVxdWlyZWQuJyxcbiAgICAgICAgICB2YWxpZGF0ZTogZW1haWxWYWxpZGF0aW9uLFxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6ICcxcmVtJyB9fT5cbiAgICAgICAgPGRpdiBzdHlsZT17eyBmbGV4R3JvdzogMSB9fT5cbiAgICAgICAgICA8SW5wdXRTZWxlY3RcbiAgICAgICAgICAgIGNvbnRyb2w9e2NvbnRyb2x9XG4gICAgICAgICAgICBsYWJlbD0nQ291bnRyeSBDb2RlJ1xuICAgICAgICAgICAgbmFtZT0ncGhvbmVOdW1iZXJzWzBdLmNvZGUnXG4gICAgICAgICAgICBvcHRpb25zPXtwaG9uZU9wdGlvbnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0+XG4gICAgICAgICAgPElucHV0VGV4dFxuICAgICAgICAgICAgY29udHJvbD17Y29udHJvbH1cbiAgICAgICAgICAgIGxhYmVsPSdQaG9uZSBOdW1iZXInXG4gICAgICAgICAgICBuYW1lPSdwaG9uZU51bWJlcnNbMF0ubnVtYmVyJ1xuICAgICAgICAgICAgcGxhY2Vob2xkZXI9JzA0MDAgMDAwIDAwMCdcbiAgICAgICAgICAgIHJ1bGVzPXt7XG4gICAgICAgICAgICAgIHJlcXVpcmVkOiAnUGhvbmUgbnVtYmVyIGlzIHJlcXVpcmVkJyxcbiAgICAgICAgICAgICAgdmFsaWRhdGU6IHZhbGlkYXRlUGhvbmUsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdHlwZT0ncGhvbmUnXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtzaG93VXNlclRlcm1zQW5kQ29uZGl0aW9ucyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVNZXJjaGlDaGVja291dEZvcm1Hcm91cH0+XG4gICAgICAgICAgPElucHV0QWNjZXB0VXNlclRlcm1zQW5kQ29uZGl0aW9uc1xuICAgICAgICAgICAgaXNDaGVja2VkPXthY2NlcHRDb25kaXRpb25zfVxuICAgICAgICAgICAgc2V0SXNDaGVja2VkPXtzZXRBY2NlcHRDb25kaXRpb25zfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyFhY2NlcHRDb25kaXRpb25zICYmIChcbiAgICAgICAgICAgIDxJbnB1dEVycm9yXG4gICAgICAgICAgICAgIGVycm9yPXt7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICdZb3UgbXVzdCBhZ3JlZSB0byB0aGUgdXNlciBwcm9maWxlIHRlcm1zIGFuZCBjb25kaXRpb25zIHRvIHByb2NlZWQuJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPElucHV0RXJyb3IgZXJyb3I9e2Vycm9yIHx8IHt9fSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZU1lcmNoaUNoZWNrb3V0Rm9ybUdyb3VwfT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lTWVyY2hpQ2hlY2tvdXRCdXR0b25QcmltYXJ5fVxuICAgICAgICAgIGRpc2FibGVkPXtsb2FkaW5nfVxuICAgICAgICAgIHR5cGU9J3N1Ym1pdCdcbiAgICAgICAgPlxuICAgICAgICAgIHtsb2FkaW5nID8gJ0xvYWRpbmcuLi4nIDogJ1N1Ym1pdCd9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBGb3JtQ3VzdG9tZXJOZXc7XG4iXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7O0FBQUMsU0FBQUEsUUFBQUMsQ0FBQSxzQ0FBQUQsT0FBQSx3QkFBQUUsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLENBQUEsa0JBQUFBLENBQUEsZ0JBQUFBLENBQUEsV0FBQUEsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBRCxDQUFBLENBQUFHLFdBQUEsS0FBQUYsTUFBQSxJQUFBRCxDQUFBLEtBQUFDLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQUosQ0FBQSxLQUFBRCxPQUFBLENBQUFDLENBQUE7QUFBQSxTQUFBSyxvQkFBQSxrQkFD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