@comet/brevo-admin 8.17.1 → 9.0.0-beta.0

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.
Files changed (110) hide show
  1. package/lib/blocks/NewsletterImageBlock.d.ts +7 -3
  2. package/lib/blocks/NewsletterImageBlock.d.ts.map +1 -1
  3. package/lib/blocks/NewsletterImageBlock.js +8 -14
  4. package/lib/blocks.generated.js +1 -5
  5. package/lib/brevoConfiguration/BrevoConfigForm.generated.js +1 -5
  6. package/lib/brevoConfiguration/BrevoConfigForm.gql.d.ts +7 -7
  7. package/lib/brevoConfiguration/BrevoConfigForm.gql.d.ts.map +1 -1
  8. package/lib/brevoConfiguration/BrevoConfigForm.gql.generated.js +1 -7
  9. package/lib/brevoConfiguration/BrevoConfigForm.gql.js +8 -14
  10. package/lib/brevoConfiguration/BrevoConfigForm.js +53 -59
  11. package/lib/brevoConfiguration/BrevoConfigPage.d.ts +1 -0
  12. package/lib/brevoConfiguration/BrevoConfigPage.d.ts.map +1 -1
  13. package/lib/brevoConfiguration/BrevoConfigPage.js +8 -14
  14. package/lib/brevoContacts/BrevoContactsGrid.generated.js +1 -7
  15. package/lib/brevoContacts/BrevoContactsGrid.js +45 -51
  16. package/lib/brevoContacts/BrevoContactsPage.d.ts +1 -1
  17. package/lib/brevoContacts/BrevoContactsPage.d.ts.map +1 -1
  18. package/lib/brevoContacts/BrevoContactsPage.js +24 -29
  19. package/lib/brevoContacts/form/BrevoContactForm.generated.js +1 -7
  20. package/lib/brevoContacts/form/BrevoContactForm.gql.generated.js +1 -7
  21. package/lib/brevoContacts/form/BrevoContactForm.gql.js +7 -13
  22. package/lib/brevoContacts/form/BrevoContactForm.js +58 -64
  23. package/lib/brevoTestContacts/BrevoTestContactsGrid.generated.js +1 -7
  24. package/lib/brevoTestContacts/BrevoTestContactsGrid.js +40 -46
  25. package/lib/brevoTestContacts/BrevoTestContactsPage.d.ts +1 -1
  26. package/lib/brevoTestContacts/BrevoTestContactsPage.d.ts.map +1 -1
  27. package/lib/brevoTestContacts/BrevoTestContactsPage.js +24 -29
  28. package/lib/brevoTestContacts/form/BrevoTestContactForm.generated.js +1 -7
  29. package/lib/brevoTestContacts/form/BrevoTestContactForm.gql.generated.js +1 -7
  30. package/lib/brevoTestContacts/form/BrevoTestContactForm.gql.js +7 -13
  31. package/lib/brevoTestContacts/form/BrevoTestContactForm.js +42 -48
  32. package/lib/common/BrevoConfigProvider.js +9 -15
  33. package/lib/common/contactImport/useContactImportFromCsv.gql.d.ts +1 -1
  34. package/lib/common/contactImport/useContactImportFromCsv.gql.d.ts.map +1 -1
  35. package/lib/common/contactImport/useContactImportFromCsv.gql.generated.js +1 -7
  36. package/lib/common/contactImport/useContactImportFromCsv.gql.js +2 -8
  37. package/lib/common/contactImport/useContactImportFromCsv.js +80 -87
  38. package/lib/configVerification/ConfigVerification.d.ts +1 -1
  39. package/lib/configVerification/ConfigVerification.d.ts.map +1 -1
  40. package/lib/configVerification/ConfigVerification.gql.d.ts +1 -1
  41. package/lib/configVerification/ConfigVerification.gql.d.ts.map +1 -1
  42. package/lib/configVerification/ConfigVerification.gql.generated.js +1 -7
  43. package/lib/configVerification/ConfigVerification.gql.js +2 -8
  44. package/lib/configVerification/ConfigVerification.js +12 -18
  45. package/lib/emailCampaigns/EmailCampaignsGrid.generated.js +1 -7
  46. package/lib/emailCampaigns/EmailCampaignsGrid.js +47 -53
  47. package/lib/emailCampaigns/EmailCampaignsPage.d.ts +1 -0
  48. package/lib/emailCampaigns/EmailCampaignsPage.d.ts.map +1 -1
  49. package/lib/emailCampaigns/EmailCampaignsPage.js +29 -35
  50. package/lib/emailCampaigns/SendingStateColumn.js +24 -30
  51. package/lib/emailCampaigns/form/ConfigFields.js +11 -17
  52. package/lib/emailCampaigns/form/EmailCampaignForm.gql.d.ts +5 -5
  53. package/lib/emailCampaigns/form/EmailCampaignForm.gql.d.ts.map +1 -1
  54. package/lib/emailCampaigns/form/EmailCampaignForm.gql.generated.js +1 -7
  55. package/lib/emailCampaigns/form/EmailCampaignForm.gql.js +6 -12
  56. package/lib/emailCampaigns/form/EmailCampaignForm.js +65 -71
  57. package/lib/emailCampaigns/form/SendEmailCampaignNowDialog.js +16 -21
  58. package/lib/emailCampaigns/form/SendManagerFields.gql.d.ts +2 -2
  59. package/lib/emailCampaigns/form/SendManagerFields.gql.d.ts.map +1 -1
  60. package/lib/emailCampaigns/form/SendManagerFields.gql.generated.js +1 -7
  61. package/lib/emailCampaigns/form/SendManagerFields.gql.js +4 -10
  62. package/lib/emailCampaigns/form/SendManagerFields.js +37 -43
  63. package/lib/emailCampaigns/form/SendManagerWrapper.gql.d.ts +1 -1
  64. package/lib/emailCampaigns/form/SendManagerWrapper.gql.d.ts.map +1 -1
  65. package/lib/emailCampaigns/form/SendManagerWrapper.gql.generated.js +1 -7
  66. package/lib/emailCampaigns/form/SendManagerWrapper.gql.js +2 -8
  67. package/lib/emailCampaigns/form/SendManagerWrapper.js +13 -19
  68. package/lib/emailCampaigns/form/TestEmailCampaignForm.generated.js +1 -7
  69. package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.d.ts +1 -1
  70. package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.d.ts.map +1 -1
  71. package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.generated.js +1 -7
  72. package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.js +2 -8
  73. package/lib/emailCampaigns/form/TestEmailCampaignForm.js +33 -39
  74. package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.d.ts +1 -1
  75. package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.d.ts.map +1 -1
  76. package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.generated.js +1 -7
  77. package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.js +2 -8
  78. package/lib/emailCampaigns/statistics/EmailCampaignStatistics.js +40 -46
  79. package/lib/emailCampaigns/statistics/PercentageCard.js +29 -35
  80. package/lib/emailCampaigns/view/EmailCampaignView.gql.d.ts +1 -1
  81. package/lib/emailCampaigns/view/EmailCampaignView.gql.d.ts.map +1 -1
  82. package/lib/emailCampaigns/view/EmailCampaignView.gql.generated.js +1 -7
  83. package/lib/emailCampaigns/view/EmailCampaignView.gql.js +2 -8
  84. package/lib/emailCampaigns/view/EmailCampaignView.js +31 -37
  85. package/lib/graphql.generated.js +1 -5
  86. package/lib/index.js +7 -60
  87. package/lib/targetGroups/TargetGroupDialog.gql.d.ts +1 -1
  88. package/lib/targetGroups/TargetGroupDialog.gql.d.ts.map +1 -1
  89. package/lib/targetGroups/TargetGroupDialog.gql.generated.js +1 -7
  90. package/lib/targetGroups/TargetGroupDialog.gql.js +2 -8
  91. package/lib/targetGroups/TargetGroupDialog.js +13 -19
  92. package/lib/targetGroups/TargetGroupForm.gql.generated.js +1 -7
  93. package/lib/targetGroups/TargetGroupForm.gql.js +8 -14
  94. package/lib/targetGroups/TargetGroupForm.js +49 -61
  95. package/lib/targetGroups/TargetGroupsGrid.generated.js +1 -7
  96. package/lib/targetGroups/TargetGroupsGrid.js +41 -48
  97. package/lib/targetGroups/TargetGroupsPage.d.ts +1 -1
  98. package/lib/targetGroups/TargetGroupsPage.d.ts.map +1 -1
  99. package/lib/targetGroups/TargetGroupsPage.js +21 -27
  100. package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.d.ts +4 -4
  101. package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.d.ts.map +1 -1
  102. package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.generated.js +1 -7
  103. package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.js +6 -12
  104. package/lib/targetGroups/addContacts/AddContactsGridSelect.js +64 -70
  105. package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.d.ts +1 -1
  106. package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.d.ts.map +1 -1
  107. package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.generated.js +1 -7
  108. package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.js +3 -9
  109. package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.js +17 -23
  110. package/package.json +20 -15
@@ -1,23 +1,4 @@
1
- "use strict";
2
-
3
1
  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); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useContactImportFromCsv = void 0;
8
- var _client = require("@apollo/client");
9
- var _admin = require("@comet/admin");
10
- var _adminIcons = require("@comet/admin-icons");
11
- var _material = require("@mui/material");
12
- var _styles = require("@mui/material/styles");
13
- var _fileSaver = _interopRequireDefault(require("file-saver"));
14
- var _react = require("react");
15
- var _reactDropzone = require("react-dropzone");
16
- var _reactIntl = require("react-intl");
17
- var _BrevoConfigProvider = require("../BrevoConfigProvider");
18
- var _useContactImportFromCsv = require("./useContactImportFromCsv.gql");
19
- var _jsxRuntime = require("react/jsx-runtime");
20
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
21
2
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
22
3
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
23
4
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
@@ -34,29 +15,41 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
34
15
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
35
16
  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; } }
36
17
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
37
- var useContactImportFromCsv = exports.useContactImportFromCsv = function useContactImportFromCsv(_ref) {
18
+ import { useApolloClient } from "@apollo/client";
19
+ import { Alert, Button, CheckboxField, Dialog, FinalForm, Loading, messages, useErrorDialog } from "@comet/admin";
20
+ import { Upload } from "@comet/admin-icons";
21
+ import { Box, DialogActions, DialogContent, DialogTitle } from "@mui/material";
22
+ import { styled } from "@mui/material/styles";
23
+ import saveAs from "file-saver";
24
+ import { useMemo, useRef, useState } from "react";
25
+ import { useDropzone } from "react-dropzone";
26
+ import { FormattedMessage, useIntl } from "react-intl";
27
+ import { useBrevoConfig } from "../BrevoConfigProvider";
28
+ import { startBrevoContactImportMutation } from "./useContactImportFromCsv.gql";
29
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
30
+ export var useContactImportFromCsv = function useContactImportFromCsv(_ref) {
38
31
  var scope = _ref.scope,
39
32
  targetGroupId = _ref.targetGroupId,
40
33
  refetchQueries = _ref.refetchQueries;
41
- var fileInputRef = (0, _react.useRef)(null);
42
- var _useState = (0, _react.useState)(false),
34
+ var fileInputRef = useRef(null);
35
+ var _useState = useState(false),
43
36
  _useState2 = _slicedToArray(_useState, 2),
44
37
  open = _useState2[0],
45
38
  setOpen = _useState2[1];
46
- var _useState3 = (0, _react.useState)(true),
39
+ var _useState3 = useState(true),
47
40
  _useState4 = _slicedToArray(_useState3, 2),
48
41
  sendDoubleOptIn = _useState4[0],
49
42
  setSendDoubleOptIn = _useState4[1];
50
- var _useBrevoConfig = (0, _BrevoConfigProvider.useBrevoConfig)(),
43
+ var _useBrevoConfig = useBrevoConfig(),
51
44
  allowAddingContactsWithoutDoi = _useBrevoConfig.allowAddingContactsWithoutDoi;
52
- var moreActionsMenuItem = (0, _react.useMemo)(function () {
45
+ var moreActionsMenuItem = useMemo(function () {
53
46
  return {
54
47
  type: "action",
55
- label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
48
+ label: /*#__PURE__*/_jsx(FormattedMessage, {
56
49
  id: "cometBrevoModule.targetGroup.assignedContacts.actions.importFromCsv",
57
50
  defaultMessage: "Import contacts from CSV"
58
51
  }),
59
- startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Upload, {}),
52
+ startAdornment: /*#__PURE__*/_jsx(Upload, {}),
60
53
  onClick: function onClick() {
61
54
  return setOpen(true);
62
55
  }
@@ -65,16 +58,16 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
65
58
  var handleClose = function handleClose() {
66
59
  return setOpen(false);
67
60
  };
68
- var dialog = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_admin.Dialog, {
61
+ var dialog = /*#__PURE__*/_jsxs(Dialog, {
69
62
  open: open,
70
63
  onClose: handleClose,
71
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.DialogTitle, {
72
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
64
+ children: [/*#__PURE__*/_jsx(DialogTitle, {
65
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
73
66
  id: "cometBrevoModule.contactImport.title",
74
67
  defaultMessage: "Importing contacts from CSV"
75
68
  })
76
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.DialogContent, {
77
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.FinalForm, {
69
+ }), /*#__PURE__*/_jsx(DialogContent, {
70
+ children: /*#__PURE__*/_jsx(FinalForm, {
78
71
  onSubmit: function onSubmit(values) {
79
72
  var _fileInputRef$current;
80
73
  (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 || _fileInputRef$current.click();
@@ -86,28 +79,28 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
86
79
  children: function children(_ref2) {
87
80
  var values = _ref2.values;
88
81
  setSendDoubleOptIn(values.sendDoubleOptIn);
89
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
90
- children: [values.sendDoubleOptIn ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
82
+ return /*#__PURE__*/_jsxs(_Fragment, {
83
+ children: [values.sendDoubleOptIn ? /*#__PURE__*/_jsx(Alert, {
91
84
  severity: "warning",
92
85
  sx: {
93
86
  marginBottom: 5
94
87
  },
95
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
88
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
96
89
  id: "cometBrevoModule.contactImport.contactAddAlert",
97
90
  defaultMessage: "The contact will get a double opt-in email to confirm the subscription. After the contact's confirmation, the contact will be added to the corresponding target groups in this scope depending on the contact's attributes. Before the confirmation the contact will not be shown on the contacts page."
98
91
  })
99
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
92
+ }) : /*#__PURE__*/_jsx(Alert, {
100
93
  severity: "error",
101
94
  sx: {
102
95
  marginBottom: 5
103
96
  },
104
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
97
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
105
98
  id: "cometBrevoModule.contactImport.contactNoOptInAlert",
106
99
  defaultMessage: "No Double Opt-In email will be sent. Please ensure recipients have given their consent before proceeding."
107
100
  })
108
- }), allowAddingContactsWithoutDoi && /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.CheckboxField, {
101
+ }), allowAddingContactsWithoutDoi && /*#__PURE__*/_jsx(CheckboxField, {
109
102
  name: "sendDoubleOptIn",
110
- label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
103
+ label: /*#__PURE__*/_jsx(FormattedMessage, {
111
104
  id: "cometBrevoModule.contactImport.sendDoubleOptInMail",
112
105
  defaultMessage: "Send double opt-in email"
113
106
  }),
@@ -116,25 +109,25 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
116
109
  });
117
110
  }
118
111
  })
119
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogActions, {
120
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Button, {
112
+ }), /*#__PURE__*/_jsxs(DialogActions, {
113
+ children: [/*#__PURE__*/_jsx(Button, {
121
114
  onClick: handleClose,
122
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, _objectSpread({}, _admin.messages.cancel))
123
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Button, {
115
+ children: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.cancel))
116
+ }), /*#__PURE__*/_jsx(Button, {
124
117
  variant: "primary",
125
118
  onClick: function onClick() {
126
119
  var _fileInputRef$current2;
127
120
  return (_fileInputRef$current2 = fileInputRef.current) === null || _fileInputRef$current2 === void 0 ? void 0 : _fileInputRef$current2.click();
128
121
  },
129
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
122
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
130
123
  id: "cometBrevoModule.contactImport.importContacts",
131
124
  defaultMessage: "Import Contacts"
132
125
  })
133
126
  })]
134
127
  })]
135
128
  });
136
- var component = (0, _react.useMemo)(function () {
137
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(ContactImportComponent, {
129
+ var component = useMemo(function () {
130
+ return /*#__PURE__*/_jsx(ContactImportComponent, {
138
131
  scope: scope,
139
132
  targetGroupId: targetGroupId,
140
133
  fileInputRef: fileInputRef,
@@ -142,7 +135,7 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
142
135
  refetchQueries: refetchQueries
143
136
  });
144
137
  }, [refetchQueries, scope, targetGroupId, sendDoubleOptIn]);
145
- return [moreActionsMenuItem, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
138
+ return [moreActionsMenuItem, /*#__PURE__*/_jsxs(_Fragment, {
146
139
  children: [dialog, component]
147
140
  })];
148
141
  };
@@ -152,20 +145,20 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
152
145
  fileInputRef = _ref3.fileInputRef,
153
146
  sendDoubleOptIn = _ref3.sendDoubleOptIn,
154
147
  refetchQueries = _ref3.refetchQueries;
155
- var apolloClient = (0, _client.useApolloClient)();
156
- var _useState5 = (0, _react.useState)(false),
148
+ var apolloClient = useApolloClient();
149
+ var _useState5 = useState(false),
157
150
  _useState6 = _slicedToArray(_useState5, 2),
158
151
  importingCsv = _useState6[0],
159
152
  setImportingCsv = _useState6[1];
160
- var _useState7 = (0, _react.useState)(null),
153
+ var _useState7 = useState(null),
161
154
  _useState8 = _slicedToArray(_useState7, 2),
162
155
  importInformation = _useState8[0],
163
156
  setImportInformation = _useState8[1];
164
157
  var dialogOpen = importingCsv || !!importInformation;
165
- var errorDialog = (0, _admin.useErrorDialog)();
166
- var config = (0, _BrevoConfigProvider.useBrevoConfig)();
167
- var intl = (0, _reactIntl.useIntl)();
168
- var client = (0, _client.useApolloClient)();
158
+ var errorDialog = useErrorDialog();
159
+ var config = useBrevoConfig();
160
+ var intl = useIntl();
161
+ var client = useApolloClient();
169
162
  function upload(_x, _x2, _x3) {
170
163
  return _upload.apply(this, arguments);
171
164
  }
@@ -199,7 +192,7 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
199
192
  fileUploadId = _context2.v.id;
200
193
  _context2.n = 4;
201
194
  return client.mutate({
202
- mutation: _useContactImportFromCsv.startBrevoContactImportMutation,
195
+ mutation: startBrevoContactImportMutation,
203
196
  variables: {
204
197
  fileId: fileUploadId,
205
198
  scope: scope,
@@ -263,7 +256,7 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
263
256
  var file = new Blob([errorData], {
264
257
  type: "text/csv;charset=utf-8"
265
258
  });
266
- (0, _fileSaver["default"])(file, "error-log-".concat(new Date().toISOString(), ".csv"));
259
+ saveAs(file, "error-log-".concat(new Date().toISOString(), ".csv"));
267
260
  };
268
261
  var saveBlacklistedContactsFile = function saveBlacklistedContactsFile() {
269
262
  var blacklistedContactsColumns = importInformation === null || importInformation === void 0 ? void 0 : importInformation.blacklistedColumns;
@@ -303,9 +296,9 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
303
296
  var file = new Blob([blacklistedContactsData], {
304
297
  type: "text/csv;charset=utf-8"
305
298
  });
306
- (0, _fileSaver["default"])(file, "blacklisted-contact-log-".concat(new Date().toISOString(), ".csv"));
299
+ saveAs(file, "blacklisted-contact-log-".concat(new Date().toISOString(), ".csv"));
307
300
  };
308
- var _useDropzone = (0, _reactDropzone.useDropzone)({
301
+ var _useDropzone = useDropzone({
309
302
  accept: {
310
303
  "text/csv": []
311
304
  },
@@ -333,7 +326,7 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
333
326
  setImportingCsv(false);
334
327
  if (data.errorMessage) {
335
328
  errorDialog === null || errorDialog === void 0 || errorDialog.showError({
336
- title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, _objectSpread({}, _admin.messages.error)),
329
+ title: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.error)),
337
330
  userMessage: data.errorMessage,
338
331
  error: data.errorMessage
339
332
  });
@@ -351,12 +344,12 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
351
344
  _context.p = 5;
352
345
  _t = _context.v;
353
346
  setImportingCsv(false);
354
- userMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
347
+ userMessage = /*#__PURE__*/_jsx(FormattedMessage, {
355
348
  id: "cometBrevoModule.useContactImport.error.defaultMessage",
356
349
  defaultMessage: "An error occured during the import. Please try again in a while or contact your administrator if the error persists."
357
350
  });
358
351
  errorDialog === null || errorDialog === void 0 || errorDialog.showError({
359
- title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, _objectSpread({}, _admin.messages.error)),
352
+ title: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.error)),
360
353
  userMessage: userMessage,
361
354
  error: String(_t)
362
355
  });
@@ -372,47 +365,47 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
372
365
  }()
373
366
  }),
374
367
  getInputProps = _useDropzone.getInputProps;
375
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
376
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", _objectSpread(_objectSpread({
368
+ return /*#__PURE__*/_jsxs(_Fragment, {
369
+ children: [/*#__PURE__*/_jsx("input", _objectSpread(_objectSpread({
377
370
  type: "file",
378
371
  hidden: true
379
372
  }, getInputProps()), {}, {
380
373
  ref: fileInputRef
381
- })), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_admin.Dialog, {
374
+ })), /*#__PURE__*/_jsxs(Dialog, {
382
375
  open: dialogOpen,
383
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogTitle, {
384
- children: [importingCsv && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
376
+ children: [/*#__PURE__*/_jsxs(DialogTitle, {
377
+ children: [importingCsv && /*#__PURE__*/_jsx(FormattedMessage, {
385
378
  id: "cometBrevoModule.useContactImport.importing.title",
386
379
  defaultMessage: "Importing contacts from CSV..."
387
- }), importInformation && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
380
+ }), importInformation && /*#__PURE__*/_jsx(FormattedMessage, {
388
381
  id: "cometBrevoModule.useContactImport.importSuccessful.title",
389
382
  defaultMessage: "Import successful"
390
383
  })]
391
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogContent, {
392
- children: [importingCsv && /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Loading, {}), importInformation && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
393
- children: [importInformation.created > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
384
+ }), /*#__PURE__*/_jsxs(DialogContent, {
385
+ children: [importingCsv && /*#__PURE__*/_jsx(Loading, {}), importInformation && /*#__PURE__*/_jsxs(_Fragment, {
386
+ children: [importInformation.created > 0 && /*#__PURE__*/_jsx(FormattedMessage, {
394
387
  id: "cometBrevoModule.useContactImport.importSuccessful.contactsImported",
395
388
  defaultMessage: "{amount} contact(s) have been created successfully.",
396
389
  values: {
397
390
  amount: importInformation.created
398
391
  }
399
- }), importInformation.updated > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
392
+ }), importInformation.updated > 0 && /*#__PURE__*/_jsx(FormattedMessage, {
400
393
  id: "cometBrevoModule.useContactImport.importSuccessful.contactsUpdated",
401
394
  defaultMessage: "{amount} contact(s) have been updated.",
402
395
  values: {
403
396
  amount: importInformation.updated
404
397
  }
405
- }), importInformation.failed > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
398
+ }), importInformation.failed > 0 && /*#__PURE__*/_jsx(Box, {
406
399
  mt: 2,
407
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
400
+ children: /*#__PURE__*/_jsx(Alert, {
408
401
  severity: "error",
409
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
402
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
410
403
  id: "cometBrevoModule.useContactImport.error.contactsCouldNotBeImported",
411
404
  defaultMessage: "{amount} contact(s) could not be imported. <link>Download this file</link> to get the failing row(s).",
412
405
  values: {
413
406
  amount: importInformation.failed,
414
407
  link: function link(chunks) {
415
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(CsvDownloadLink, {
408
+ return /*#__PURE__*/_jsx(CsvDownloadLink, {
416
409
  onClick: saveErrorFile,
417
410
  children: chunks
418
411
  });
@@ -420,17 +413,17 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
420
413
  }
421
414
  })
422
415
  })
423
- }), importInformation.blacklisted > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
416
+ }), importInformation.blacklisted > 0 && /*#__PURE__*/_jsx(Box, {
424
417
  mt: 2,
425
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
418
+ children: /*#__PURE__*/_jsx(Alert, {
426
419
  severity: "error",
427
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
420
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
428
421
  id: "cometBrevoModule.useContactImport.error.contactsAreBlacklisted",
429
422
  defaultMessage: "{amount} contacts could not be imported as they are blacklisted. <link>Download this file</link> to get the blacklisted contact(s).",
430
423
  values: {
431
424
  amount: importInformation.blacklisted,
432
425
  link: function link(chunks) {
433
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(CsvDownloadLink, {
426
+ return /*#__PURE__*/_jsx(CsvDownloadLink, {
434
427
  onClick: saveBlacklistedContactsFile,
435
428
  children: chunks
436
429
  });
@@ -438,30 +431,30 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
438
431
  }
439
432
  })
440
433
  })
441
- }), (importInformation.created > 0 || importInformation.updated > 0) && sendDoubleOptIn && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
434
+ }), (importInformation.created > 0 || importInformation.updated > 0) && sendDoubleOptIn && /*#__PURE__*/_jsx(Box, {
442
435
  mt: 2,
443
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
436
+ children: /*#__PURE__*/_jsx(Alert, {
444
437
  severity: "warning",
445
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
438
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
446
439
  id: "cometBrevoModule.useContactImport.importSuccessful.doiNotice",
447
440
  defaultMessage: "Contacts who have not yet confirmed their subscription will receive a double opt-in email to complete the process. These contacts will not appear in this list until they confirm their subscription. Once confirmed, they will automatically be added to the appropriate target group(s)."
448
441
  })
449
442
  })
450
443
  })]
451
444
  })]
452
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.DialogActions, {
453
- children: importInformation && /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Button, {
445
+ }), /*#__PURE__*/_jsx(DialogActions, {
446
+ children: importInformation && /*#__PURE__*/_jsx(Button, {
454
447
  onClick: function onClick() {
455
448
  return setImportInformation(null);
456
449
  },
457
450
  variant: "primary",
458
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, _objectSpread({}, _admin.messages.ok))
451
+ children: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.ok))
459
452
  })
460
453
  })]
461
454
  })]
462
455
  });
463
456
  };
464
- var CsvDownloadLink = /*#__PURE__*/(0, _styles.styled)("span", process.env.NODE_ENV === "production" ? {
457
+ var CsvDownloadLink = /*#__PURE__*/styled("span", process.env.NODE_ENV === "production" ? {
465
458
  target: "e157iusb0"
466
459
  } : {
467
460
  target: "e157iusb0",
@@ -469,4 +462,4 @@ var CsvDownloadLink = /*#__PURE__*/(0, _styles.styled)("span", process.env.NODE_
469
462
  })("color:", function (_ref4) {
470
463
  var theme = _ref4.theme;
471
464
  return theme.palette.info.main;
472
- }, ";text-decoration:underline;cursor:pointer;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vY29udGFjdEltcG9ydC91c2VDb250YWN0SW1wb3J0RnJvbUNzdi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNlhzQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbnRhY3RJbXBvcnQvdXNlQ29udGFjdEltcG9ydEZyb21Dc3YudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXBvbGxvQ2xpZW50IH0gZnJvbSBcIkBhcG9sbG8vY2xpZW50XCI7XG5pbXBvcnQgeyB0eXBlIFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB9IGZyb20gXCJAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzXCI7XG5pbXBvcnQgeyBBbGVydCwgQnV0dG9uLCBDaGVja2JveEZpZWxkLCBEaWFsb2csIEZpbmFsRm9ybSwgTG9hZGluZywgbWVzc2FnZXMsIHVzZUVycm9yRGlhbG9nIH0gZnJvbSBcIkBjb21ldC9hZG1pblwiO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBEaWFsb2dBY3Rpb25zLCBEaWFsb2dDb250ZW50LCBEaWFsb2dUaXRsZSwgdHlwZSBNZW51SXRlbSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBzYXZlQXMgZnJvbSBcImZpbGUtc2F2ZXJcIjtcbmltcG9ydCB7IHR5cGUgQ29tcG9uZW50UHJvcHMsIHR5cGUgUmVhY3ROb2RlLCB0eXBlIFJlZk9iamVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRHJvcHpvbmUgfSBmcm9tIFwicmVhY3QtZHJvcHpvbmVcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHVzZUludGwgfSBmcm9tIFwicmVhY3QtaW50bFwiO1xuXG5pbXBvcnQgeyB0eXBlIEdRTENzdkltcG9ydEluZm9ybWF0aW9uLCB0eXBlIEdRTEVtYWlsQ2FtcGFpZ25Db250ZW50U2NvcGVJbnB1dCB9IGZyb20gXCIuLi8uLi9ncmFwaHFsLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgdXNlQnJldm9Db25maWcgfSBmcm9tIFwiLi4vQnJldm9Db25maWdQcm92aWRlclwiO1xuaW1wb3J0IHsgc3RhcnRCcmV2b0NvbnRhY3RJbXBvcnRNdXRhdGlvbiB9IGZyb20gXCIuL3VzZUNvbnRhY3RJbXBvcnRGcm9tQ3N2LmdxbFwiO1xuaW1wb3J0IHsgdHlwZSBHUUxTdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLCB0eXBlIEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb25WYXJpYWJsZXMgfSBmcm9tIFwiLi91c2VDb250YWN0SW1wb3J0RnJvbUNzdi5ncWwuZ2VuZXJhdGVkXCI7XG5cbmludGVyZmFjZSBVc2VDb250YWN0SW1wb3J0UHJvcHMge1xuICAgIHNjb3BlOiBHUUxFbWFpbENhbXBhaWduQ29udGVudFNjb3BlSW5wdXQ7XG4gICAgc2VuZERvdWJsZU9wdEluOiBib29sZWFuO1xuICAgIHRhcmdldEdyb3VwSWQ/OiBzdHJpbmc7XG4gICAgcmVmZXRjaFF1ZXJpZXM/OiBSZWZldGNoUXVlcmllc0luY2x1ZGU7XG59XG5cbnR5cGUgQ29udGFjdEltcG9ydEZyb21Dc3ZGb3JtID0ge1xuICAgIHNlbmREb3VibGVPcHRJbjogYm9vbGVhbjtcbn07XG5cbmludGVyZmFjZSBBY3Rpb25JdGVtIGV4dGVuZHMgQ29tcG9uZW50UHJvcHM8dHlwZW9mIE1lbnVJdGVtPiB7XG4gICAgdHlwZTogXCJhY3Rpb25cIjtcbiAgICBsYWJlbDogUmVhY3ROb2RlO1xuICAgIHN0YXJ0QWRvcm5tZW50PzogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgY29uc3QgdXNlQ29udGFjdEltcG9ydEZyb21Dc3YgPSAoeyBzY29wZSwgdGFyZ2V0R3JvdXBJZCwgcmVmZXRjaFF1ZXJpZXMgfTogVXNlQ29udGFjdEltcG9ydFByb3BzKTogW0FjdGlvbkl0ZW0sIFJlYWN0Tm9kZV0gPT4ge1xuICAgIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NlbmREb3VibGVPcHRJbiwgc2V0U2VuZERvdWJsZU9wdEluXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IHsgYWxsb3dBZGRpbmdDb250YWN0c1dpdGhvdXREb2kgfSA9IHVzZUJyZXZvQ29uZmlnKCk7XG5cbiAgICBjb25zdCBtb3JlQWN0aW9uc01lbnVJdGVtOiBBY3Rpb25JdGVtID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICBsYWJlbDogKFxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS50YXJnZXRHcm91cC5hc3NpZ25lZENvbnRhY3RzLmFjdGlvbnMuaW1wb3J0RnJvbUNzdlwiXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IGNvbnRhY3RzIGZyb20gQ1NWXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXJ0QWRvcm5tZW50OiA8VXBsb2FkIC8+LFxuICAgICAgICAgICAgb25DbGljazogKCkgPT4gc2V0T3Blbih0cnVlKSxcbiAgICAgICAgfSksXG4gICAgICAgIFtdLFxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHNldE9wZW4oZmFsc2UpO1xuXG4gICAgY29uc3QgZGlhbG9nID0gKFxuICAgICAgICA8RGlhbG9nIG9wZW49e29wZW59IG9uQ2xvc2U9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgIDxEaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC50aXRsZVwiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0aW5nIGNvbnRhY3RzIGZyb20gQ1NWXCIgLz5cbiAgICAgICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICA8RmluYWxGb3JtPENvbnRhY3RJbXBvcnRGcm9tQ3N2Rm9ybT5cbiAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWx1ZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBtb2RlPVwiYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlcz17eyBzZW5kRG91YmxlT3B0SW46IHRydWUgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHsoeyB2YWx1ZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VuZERvdWJsZU9wdEluKHZhbHVlcy5zZW5kRG91YmxlT3B0SW4pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZXMuc2VuZERvdWJsZU9wdEluID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwid2FybmluZ1wiIHN4PXt7IG1hcmdpbkJvdHRvbTogNSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5jb250YWN0QWRkQWxlcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIlRoZSBjb250YWN0IHdpbGwgZ2V0IGEgZG91YmxlIG9wdC1pbiBlbWFpbCB0byBjb25maXJtIHRoZSBzdWJzY3JpcHRpb24uIEFmdGVyIHRoZSBjb250YWN0J3MgY29uZmlybWF0aW9uLCB0aGUgY29udGFjdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldCBncm91cHMgaW4gdGhpcyBzY29wZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRhY3QncyBhdHRyaWJ1dGVzLiBCZWZvcmUgdGhlIGNvbmZpcm1hdGlvbiB0aGUgY29udGFjdCB3aWxsIG5vdCBiZSBzaG93biBvbiB0aGUgY29udGFjdHMgcGFnZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwiZXJyb3JcIiBzeD17eyBtYXJnaW5Cb3R0b206IDUgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLmNvbnRhY3RJbXBvcnQuY29udGFjdE5vT3B0SW5BbGVydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTm8gRG91YmxlIE9wdC1JbiBlbWFpbCB3aWxsIGJlIHNlbnQuIFBsZWFzZSBlbnN1cmUgcmVjaXBpZW50cyBoYXZlIGdpdmVuIHRoZWlyIGNvbnNlbnQgYmVmb3JlIHByb2NlZWRpbmcuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FsbG93QWRkaW5nQ29udGFjdHNXaXRob3V0RG9pICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbmREb3VibGVPcHRJblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLmNvbnRhY3RJbXBvcnQuc2VuZERvdWJsZU9wdEluTWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIlNlbmQgZG91YmxlIG9wdC1pbiBlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9GaW5hbEZvcm0+XG4gICAgICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLmNhbmNlbH0gLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJwcmltYXJ5XCIgb25DbGljaz17KCkgPT4gZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKCl9PlxuICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5pbXBvcnRDb250YWN0c1wiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IENvbnRhY3RzXCIgLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICAgICAgPC9EaWFsb2c+XG4gICAgKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHVzZU1lbW8oXG4gICAgICAgICgpID0+IChcbiAgICAgICAgICAgIDxDb250YWN0SW1wb3J0Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgc2NvcGU9e3Njb3BlfVxuICAgICAgICAgICAgICAgIHRhcmdldEdyb3VwSWQ9e3RhcmdldEdyb3VwSWR9XG4gICAgICAgICAgICAgICAgZmlsZUlucHV0UmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgc2VuZERvdWJsZU9wdEluPXtzZW5kRG91YmxlT3B0SW59XG4gICAgICAgICAgICAgICAgcmVmZXRjaFF1ZXJpZXM9e3JlZmV0Y2hRdWVyaWVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKSxcbiAgICAgICAgW3JlZmV0Y2hRdWVyaWVzLCBzY29wZSwgdGFyZ2V0R3JvdXBJZCwgc2VuZERvdWJsZU9wdEluXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgICAgbW9yZUFjdGlvbnNNZW51SXRlbSxcbiAgICAgICAgPD5cbiAgICAgICAgICAgIHtkaWFsb2d9XG4gICAgICAgICAgICB7Y29tcG9uZW50fVxuICAgICAgICA8Lz4sXG4gICAgXTtcbn07XG5cbmludGVyZmFjZSBVc2VDb250YWN0Q29tcG9uZW50UHJvcHMgZXh0ZW5kcyBVc2VDb250YWN0SW1wb3J0UHJvcHMge1xuICAgIGZpbGVJbnB1dFJlZjogUmVmT2JqZWN0PEhUTUxJbnB1dEVsZW1lbnQ+O1xufVxuXG5jb25zdCBDb250YWN0SW1wb3J0Q29tcG9uZW50ID0gKHsgc2NvcGUsIHRhcmdldEdyb3VwSWQsIGZpbGVJbnB1dFJlZiwgc2VuZERvdWJsZU9wdEluLCByZWZldGNoUXVlcmllcyB9OiBVc2VDb250YWN0Q29tcG9uZW50UHJvcHMpID0+IHtcbiAgICBjb25zdCBhcG9sbG9DbGllbnQgPSB1c2VBcG9sbG9DbGllbnQoKTtcbiAgICBjb25zdCBbaW1wb3J0aW5nQ3N2LCBzZXRJbXBvcnRpbmdDc3ZdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpbXBvcnRJbmZvcm1hdGlvbiwgc2V0SW1wb3J0SW5mb3JtYXRpb25dID0gdXNlU3RhdGU8R1FMQ3N2SW1wb3J0SW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBkaWFsb2dPcGVuID0gaW1wb3J0aW5nQ3N2IHx8ICEhaW1wb3J0SW5mb3JtYXRpb247XG4gICAgY29uc3QgZXJyb3JEaWFsb2cgPSB1c2VFcnJvckRpYWxvZygpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHVzZUJyZXZvQ29uZmlnKCk7XG4gICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgICBjb25zdCBjbGllbnQgPSB1c2VBcG9sbG9DbGllbnQoKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHVwbG9hZChmaWxlOiBGaWxlLCBzY29wZTogR1FMRW1haWxDYW1wYWlnbkNvbnRlbnRTY29wZUlucHV0LCBsaXN0SWRzPzogc3RyaW5nW10pOiBQcm9taXNlPEdRTENzdkltcG9ydEluZm9ybWF0aW9uPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVcIiwgZmlsZSk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtjb25maWcuYXBpVXJsfS9maWxlLXVwbG9hZHMvdXBsb2FkYCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgaW50bC5mb3JtYXRNZXNzYWdlKHsgaWQ6IFwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmZpbGVVcGxvYWRcIiwgZGVmYXVsdE1lc3NhZ2U6IFwiQ291bGQgbm90IHVwbG9hZCBmaWxlXCIgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVVwbG9hZElkID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkuaWQ7XG5cbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBjbGllbnQubXV0YXRlPEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb24sIEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb25WYXJpYWJsZXM+KHtcbiAgICAgICAgICAgIG11dGF0aW9uOiBzdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgICAgZmlsZUlkOiBmaWxlVXBsb2FkSWQsXG4gICAgICAgICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgICAgICAgc2VuZERvdWJsZU9wdEluLFxuICAgICAgICAgICAgICAgIHRhcmdldEdyb3VwSWRzOiBsaXN0SWRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgaW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmRlZmF1bHRNZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyB0aGUgaW1wb3J0LiBQbGVhc2UgdHJ5IGFnYWluIGluIGEgd2hpbGUgb3IgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgaWYgdGhlIGVycm9yIHBlcnNpc3RzLlwiLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YS5zdGFydEJyZXZvQ29udGFjdEltcG9ydDtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlRXJyb3JGaWxlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBmYWlsZWRDb2x1bW5zID0gaW1wb3J0SW5mb3JtYXRpb24/LmZhaWxlZENvbHVtbnM7XG4gICAgICAgIGlmICghZmFpbGVkQ29sdW1ucyB8fCBmYWlsZWRDb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImV4cG9ydFwiLCBkZWZhdWx0TWVzc2FnZTogXCJObyBmYWlsZWQgY29sdW1ucyB0byBzYXZlXCIgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVycm9yRGF0YSA9IFwiXCI7XG5cbiAgICAgICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIGZpbGUgd2l0aG91dCB0cmFpbGluZyBzZW1pY29sb25cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IE9iamVjdC5rZXlzKGZhaWxlZENvbHVtbnNbMF0pO1xuICAgICAgICBjb25zdCBoZWFkZXJTdHIgPSBoZWFkZXJzLmpvaW4oXCI7XCIpO1xuICAgICAgICBlcnJvckRhdGEgPSBgJHtoZWFkZXJTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDsgLy8gUmVtb3ZlIHRyYWlsaW5nIHNlbWljb2xvbiBmcm9tIHRoZSBoZWFkZXJcblxuICAgICAgICAvLyBBZGQgZWFjaCByb3cgb2YgZmFpbGVkIGNvbHVtbnMgZGF0YVxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBmYWlsZWRDb2x1bW5zKSB7XG4gICAgICAgICAgICAvLyBVc2UgT2JqZWN0LnZhbHVlcyB0byBnZXQgdGhlIHZhbHVlcyBvZiBlYWNoIGNvbHVtblxuICAgICAgICAgICAgY29uc3Qgcm93ID0gT2JqZWN0LnZhbHVlcyhjb2x1bW4pOyAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciB1bmRlZmluZWQvbnVsbFxuXG4gICAgICAgICAgICAvLyBKb2luIHJvdyB2YWx1ZXMgYW5kIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uIGlmIG5vdCBuZWVkZWRcbiAgICAgICAgICAgIGNvbnN0IHJvd1N0ciA9IHJvdy5qb2luKFwiO1wiKTtcbiAgICAgICAgICAgIGVycm9yRGF0YSArPSBgJHtyb3dTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhbmQgZG93bmxvYWQgdGhlIGZpbGVcbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtlcnJvckRhdGFdLCB7IHR5cGU6IFwidGV4dC9jc3Y7Y2hhcnNldD11dGYtOFwiIH0pO1xuICAgICAgICBzYXZlQXMoZmlsZSwgYGVycm9yLWxvZy0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0uY3N2YCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNhdmVCbGFja2xpc3RlZENvbnRhY3RzRmlsZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgYmxhY2tsaXN0ZWRDb250YWN0c0NvbHVtbnMgPSBpbXBvcnRJbmZvcm1hdGlvbj8uYmxhY2tsaXN0ZWRDb2x1bW5zO1xuICAgICAgICBpZiAoIWJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zIHx8IGJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImV4cG9ydFwiLCBkZWZhdWx0TWVzc2FnZTogXCJObyBmYWlsZWQgY29sdW1ucyB0byBzYXZlXCIgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJsYWNrbGlzdGVkQ29udGFjdHNEYXRhID0gXCJcIjtcblxuICAgICAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgZmlsZSB3aXRob3V0IHRyYWlsaW5nIHNlbWljb2xvblxuICAgICAgICBjb25zdCBoZWFkZXJzID0gT2JqZWN0LmtleXMoYmxhY2tsaXN0ZWRDb250YWN0c0NvbHVtbnNbMF0pO1xuICAgICAgICBjb25zdCBoZWFkZXJTdHIgPSBoZWFkZXJzLmpvaW4oXCI7XCIpO1xuICAgICAgICBibGFja2xpc3RlZENvbnRhY3RzRGF0YSA9IGAke2hlYWRlclN0ci5yZXBsYWNlKC87KyQvLCBcIlwiKX1cXG5gOyAvLyBSZW1vdmUgdHJhaWxpbmcgc2VtaWNvbG9uIGZyb20gdGhlIGhlYWRlclxuXG4gICAgICAgIC8vIEFkZCBlYWNoIHJvdyBvZiBmYWlsZWQgY29sdW1ucyBkYXRhXG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zKSB7XG4gICAgICAgICAgICAvLyBVc2UgT2JqZWN0LnZhbHVlcyB0byBnZXQgdGhlIHZhbHVlcyBvZiBlYWNoIGNvbHVtblxuICAgICAgICAgICAgY29uc3Qgcm93ID0gT2JqZWN0LnZhbHVlcyhjb2x1bW4pOyAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciB1bmRlZmluZWQvbnVsbFxuXG4gICAgICAgICAgICAvLyBKb2luIHJvdyB2YWx1ZXMgYW5kIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uIGlmIG5vdCBuZWVkZWRcbiAgICAgICAgICAgIGNvbnN0IHJvd1N0ciA9IHJvdy5qb2luKFwiO1wiKTtcbiAgICAgICAgICAgIGJsYWNrbGlzdGVkQ29udGFjdHNEYXRhICs9IGAke3Jvd1N0ci5yZXBsYWNlKC87KyQvLCBcIlwiKX1cXG5gO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGFuZCBkb3dubG9hZCB0aGUgZmlsZVxuICAgICAgICBjb25zdCBmaWxlID0gbmV3IEJsb2IoW2JsYWNrbGlzdGVkQ29udGFjdHNEYXRhXSwgeyB0eXBlOiBcInRleHQvY3N2O2NoYXJzZXQ9dXRmLThcIiB9KTtcbiAgICAgICAgc2F2ZUFzKGZpbGUsIGBibGFja2xpc3RlZC1jb250YWN0LWxvZy0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0uY3N2YCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHsgZ2V0SW5wdXRQcm9wcyB9ID0gdXNlRHJvcHpvbmUoe1xuICAgICAgICBhY2NlcHQ6IHsgXCJ0ZXh0L2NzdlwiOiBbXSB9LFxuICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgIG9uRHJvcDogYXN5bmMgKGFjY2VwdGVkRmlsZXM6IEZpbGVbXSkgPT4ge1xuICAgICAgICAgICAgc2V0SW1wb3J0aW5nQ3N2KHRydWUpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhY2NlcHRlZEZpbGVzWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB1cGxvYWQoZmlsZSwgc2NvcGUsIHRhcmdldEdyb3VwSWQgPyBbdGFyZ2V0R3JvdXBJZF0gOiBbXSk7XG4gICAgICAgICAgICAgICAgYXBvbGxvQ2xpZW50LnJlZmV0Y2hRdWVyaWVzKHsgaW5jbHVkZTogcmVmZXRjaFF1ZXJpZXMgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRJbXBvcnRpbmdDc3YoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEaWFsb2c/LnNob3dFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5lcnJvcn0gLz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1lc3NhZ2U6IGRhdGEuZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBkYXRhLmVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW1wb3J0SW5mb3JtYXRpb24oZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBzZXRJbXBvcnRpbmdDc3YoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdXNlck1lc3NhZ2UgPSAoXG4gICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5kZWZhdWx0TWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHRoZSBpbXBvcnQuIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSB3aGlsZSBvciBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvciBpZiB0aGUgZXJyb3IgcGVyc2lzdHMuXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZXJyb3JEaWFsb2c/LnNob3dFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMuZXJyb3J9IC8+LFxuICAgICAgICAgICAgICAgICAgICB1c2VyTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IFN0cmluZyhlKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBoaWRkZW4gey4uLmdldElucHV0UHJvcHMoKX0gcmVmPXtmaWxlSW5wdXRSZWZ9IC8+XG4gICAgICAgICAgICA8RGlhbG9nIG9wZW49e2RpYWxvZ09wZW59PlxuICAgICAgICAgICAgICAgIDxEaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydGluZ0NzdiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRpbmcudGl0bGVcIiBkZWZhdWx0TWVzc2FnZT1cIkltcG9ydGluZyBjb250YWN0cyBmcm9tIENTVi4uLlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRTdWNjZXNzZnVsLnRpdGxlXCIgZGVmYXVsdE1lc3NhZ2U9XCJJbXBvcnQgc3VjY2Vzc2Z1bFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydGluZ0NzdiAmJiA8TG9hZGluZyAvPn1cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uLmNyZWF0ZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmltcG9ydFN1Y2Nlc3NmdWwuY29udGFjdHNJbXBvcnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cInthbW91bnR9IGNvbnRhY3QocykgaGF2ZSBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5jcmVhdGVkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24udXBkYXRlZCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnVzZUNvbnRhY3RJbXBvcnQuaW1wb3J0U3VjY2Vzc2Z1bC5jb250YWN0c1VwZGF0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0KHMpIGhhdmUgYmVlbiB1cGRhdGVkLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi51cGRhdGVkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbi5mYWlsZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBtdD17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgc2V2ZXJpdHk9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmNvbnRhY3RzQ291bGROb3RCZUltcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0KHMpIGNvdWxkIG5vdCBiZSBpbXBvcnRlZC4gPGxpbms+RG93bmxvYWQgdGhpcyBmaWxlPC9saW5rPiB0byBnZXQgdGhlIGZhaWxpbmcgcm93KHMpLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5mYWlsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiAoY2h1bmtzOiBSZWFjdE5vZGUpID0+IDxDc3ZEb3dubG9hZExpbmsgb25DbGljaz17c2F2ZUVycm9yRmlsZX0+e2NodW5rc308L0NzdkRvd25sb2FkTGluaz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24uYmxhY2tsaXN0ZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBtdD17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgc2V2ZXJpdHk9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmNvbnRhY3RzQXJlQmxhY2tsaXN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cInthbW91bnR9IGNvbnRhY3RzIGNvdWxkIG5vdCBiZSBpbXBvcnRlZCBhcyB0aGV5IGFyZSBibGFja2xpc3RlZC4gIDxsaW5rPkRvd25sb2FkIHRoaXMgZmlsZTwvbGluaz4gdG8gZ2V0IHRoZSBibGFja2xpc3RlZCBjb250YWN0KHMpLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5ibGFja2xpc3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IChjaHVua3M6IFJlYWN0Tm9kZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDc3ZEb3dubG9hZExpbmsgb25DbGljaz17c2F2ZUJsYWNrbGlzdGVkQ29udGFjdHNGaWxlfT57Y2h1bmtzfTwvQ3N2RG93bmxvYWRMaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoaW1wb3J0SW5mb3JtYXRpb24uY3JlYXRlZCA+IDAgfHwgaW1wb3J0SW5mb3JtYXRpb24udXBkYXRlZCA+IDApICYmIHNlbmREb3VibGVPcHRJbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3ggbXQ9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwid2FybmluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmltcG9ydFN1Y2Nlc3NmdWwuZG9pTm90aWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJDb250YWN0cyB3aG8gaGF2ZSBub3QgeWV0IGNvbmZpcm1lZCB0aGVpciBzdWJzY3JpcHRpb24gd2lsbCByZWNlaXZlIGEgZG91YmxlIG9wdC1pbiBlbWFpbCB0byBjb21wbGV0ZSB0aGUgcHJvY2Vzcy4gVGhlc2UgY29udGFjdHMgd2lsbCBub3QgYXBwZWFyIGluIHRoaXMgbGlzdCB1bnRpbCB0aGV5IGNvbmZpcm0gdGhlaXIgc3Vic2NyaXB0aW9uLiBPbmNlIGNvbmZpcm1lZCwgdGhleSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYWRkZWQgdG8gdGhlIGFwcHJvcHJpYXRlIHRhcmdldCBncm91cChzKS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dDb250ZW50PlxuICAgICAgICAgICAgICAgIDxEaWFsb2dBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRJbXBvcnRJbmZvcm1hdGlvbihudWxsKX0gdmFyaWFudD1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMub2t9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgICAgICAgICA8L0RpYWxvZz5cbiAgICAgICAgPC8+XG4gICAgKTtcbn07XG5cbmNvbnN0IENzdkRvd25sb2FkTGluayA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucGFsZXR0ZS5pbmZvLm1haW59O1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbmA7XG4iXX0= */"));
465
+ }, ";text-decoration:underline;cursor:pointer;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vY29udGFjdEltcG9ydC91c2VDb250YWN0SW1wb3J0RnJvbUNzdi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNlhzQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbnRhY3RJbXBvcnQvdXNlQ29udGFjdEltcG9ydEZyb21Dc3YudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXBvbGxvQ2xpZW50IH0gZnJvbSBcIkBhcG9sbG8vY2xpZW50XCI7XG5pbXBvcnQgeyB0eXBlIFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB9IGZyb20gXCJAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzXCI7XG5pbXBvcnQgeyBBbGVydCwgQnV0dG9uLCBDaGVja2JveEZpZWxkLCBEaWFsb2csIEZpbmFsRm9ybSwgTG9hZGluZywgbWVzc2FnZXMsIHVzZUVycm9yRGlhbG9nIH0gZnJvbSBcIkBjb21ldC9hZG1pblwiO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBEaWFsb2dBY3Rpb25zLCBEaWFsb2dDb250ZW50LCBEaWFsb2dUaXRsZSwgdHlwZSBNZW51SXRlbSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBzYXZlQXMgZnJvbSBcImZpbGUtc2F2ZXJcIjtcbmltcG9ydCB7IHR5cGUgQ29tcG9uZW50UHJvcHMsIHR5cGUgUmVhY3ROb2RlLCB0eXBlIFJlZk9iamVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRHJvcHpvbmUgfSBmcm9tIFwicmVhY3QtZHJvcHpvbmVcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHVzZUludGwgfSBmcm9tIFwicmVhY3QtaW50bFwiO1xuXG5pbXBvcnQgeyB0eXBlIEdRTENzdkltcG9ydEluZm9ybWF0aW9uLCB0eXBlIEdRTEVtYWlsQ2FtcGFpZ25Db250ZW50U2NvcGVJbnB1dCB9IGZyb20gXCIuLi8uLi9ncmFwaHFsLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgdXNlQnJldm9Db25maWcgfSBmcm9tIFwiLi4vQnJldm9Db25maWdQcm92aWRlclwiO1xuaW1wb3J0IHsgc3RhcnRCcmV2b0NvbnRhY3RJbXBvcnRNdXRhdGlvbiB9IGZyb20gXCIuL3VzZUNvbnRhY3RJbXBvcnRGcm9tQ3N2LmdxbFwiO1xuaW1wb3J0IHsgdHlwZSBHUUxTdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLCB0eXBlIEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb25WYXJpYWJsZXMgfSBmcm9tIFwiLi91c2VDb250YWN0SW1wb3J0RnJvbUNzdi5ncWwuZ2VuZXJhdGVkXCI7XG5cbmludGVyZmFjZSBVc2VDb250YWN0SW1wb3J0UHJvcHMge1xuICAgIHNjb3BlOiBHUUxFbWFpbENhbXBhaWduQ29udGVudFNjb3BlSW5wdXQ7XG4gICAgc2VuZERvdWJsZU9wdEluOiBib29sZWFuO1xuICAgIHRhcmdldEdyb3VwSWQ/OiBzdHJpbmc7XG4gICAgcmVmZXRjaFF1ZXJpZXM/OiBSZWZldGNoUXVlcmllc0luY2x1ZGU7XG59XG5cbnR5cGUgQ29udGFjdEltcG9ydEZyb21Dc3ZGb3JtID0ge1xuICAgIHNlbmREb3VibGVPcHRJbjogYm9vbGVhbjtcbn07XG5cbmludGVyZmFjZSBBY3Rpb25JdGVtIGV4dGVuZHMgQ29tcG9uZW50UHJvcHM8dHlwZW9mIE1lbnVJdGVtPiB7XG4gICAgdHlwZTogXCJhY3Rpb25cIjtcbiAgICBsYWJlbDogUmVhY3ROb2RlO1xuICAgIHN0YXJ0QWRvcm5tZW50PzogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgY29uc3QgdXNlQ29udGFjdEltcG9ydEZyb21Dc3YgPSAoeyBzY29wZSwgdGFyZ2V0R3JvdXBJZCwgcmVmZXRjaFF1ZXJpZXMgfTogVXNlQ29udGFjdEltcG9ydFByb3BzKTogW0FjdGlvbkl0ZW0sIFJlYWN0Tm9kZV0gPT4ge1xuICAgIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NlbmREb3VibGVPcHRJbiwgc2V0U2VuZERvdWJsZU9wdEluXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IHsgYWxsb3dBZGRpbmdDb250YWN0c1dpdGhvdXREb2kgfSA9IHVzZUJyZXZvQ29uZmlnKCk7XG5cbiAgICBjb25zdCBtb3JlQWN0aW9uc01lbnVJdGVtOiBBY3Rpb25JdGVtID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICBsYWJlbDogKFxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS50YXJnZXRHcm91cC5hc3NpZ25lZENvbnRhY3RzLmFjdGlvbnMuaW1wb3J0RnJvbUNzdlwiXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IGNvbnRhY3RzIGZyb20gQ1NWXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXJ0QWRvcm5tZW50OiA8VXBsb2FkIC8+LFxuICAgICAgICAgICAgb25DbGljazogKCkgPT4gc2V0T3Blbih0cnVlKSxcbiAgICAgICAgfSksXG4gICAgICAgIFtdLFxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHNldE9wZW4oZmFsc2UpO1xuXG4gICAgY29uc3QgZGlhbG9nID0gKFxuICAgICAgICA8RGlhbG9nIG9wZW49e29wZW59IG9uQ2xvc2U9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgIDxEaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC50aXRsZVwiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0aW5nIGNvbnRhY3RzIGZyb20gQ1NWXCIgLz5cbiAgICAgICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICA8RmluYWxGb3JtPENvbnRhY3RJbXBvcnRGcm9tQ3N2Rm9ybT5cbiAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWx1ZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBtb2RlPVwiYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlcz17eyBzZW5kRG91YmxlT3B0SW46IHRydWUgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHsoeyB2YWx1ZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VuZERvdWJsZU9wdEluKHZhbHVlcy5zZW5kRG91YmxlT3B0SW4pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZXMuc2VuZERvdWJsZU9wdEluID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwid2FybmluZ1wiIHN4PXt7IG1hcmdpbkJvdHRvbTogNSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5jb250YWN0QWRkQWxlcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIlRoZSBjb250YWN0IHdpbGwgZ2V0IGEgZG91YmxlIG9wdC1pbiBlbWFpbCB0byBjb25maXJtIHRoZSBzdWJzY3JpcHRpb24uIEFmdGVyIHRoZSBjb250YWN0J3MgY29uZmlybWF0aW9uLCB0aGUgY29udGFjdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldCBncm91cHMgaW4gdGhpcyBzY29wZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRhY3QncyBhdHRyaWJ1dGVzLiBCZWZvcmUgdGhlIGNvbmZpcm1hdGlvbiB0aGUgY29udGFjdCB3aWxsIG5vdCBiZSBzaG93biBvbiB0aGUgY29udGFjdHMgcGFnZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwiZXJyb3JcIiBzeD17eyBtYXJnaW5Cb3R0b206IDUgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLmNvbnRhY3RJbXBvcnQuY29udGFjdE5vT3B0SW5BbGVydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTm8gRG91YmxlIE9wdC1JbiBlbWFpbCB3aWxsIGJlIHNlbnQuIFBsZWFzZSBlbnN1cmUgcmVjaXBpZW50cyBoYXZlIGdpdmVuIHRoZWlyIGNvbnNlbnQgYmVmb3JlIHByb2NlZWRpbmcuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FsbG93QWRkaW5nQ29udGFjdHNXaXRob3V0RG9pICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbmREb3VibGVPcHRJblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLmNvbnRhY3RJbXBvcnQuc2VuZERvdWJsZU9wdEluTWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIlNlbmQgZG91YmxlIG9wdC1pbiBlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9GaW5hbEZvcm0+XG4gICAgICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLmNhbmNlbH0gLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJwcmltYXJ5XCIgb25DbGljaz17KCkgPT4gZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKCl9PlxuICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5pbXBvcnRDb250YWN0c1wiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IENvbnRhY3RzXCIgLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICAgICAgPC9EaWFsb2c+XG4gICAgKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHVzZU1lbW8oXG4gICAgICAgICgpID0+IChcbiAgICAgICAgICAgIDxDb250YWN0SW1wb3J0Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgc2NvcGU9e3Njb3BlfVxuICAgICAgICAgICAgICAgIHRhcmdldEdyb3VwSWQ9e3RhcmdldEdyb3VwSWR9XG4gICAgICAgICAgICAgICAgZmlsZUlucHV0UmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgc2VuZERvdWJsZU9wdEluPXtzZW5kRG91YmxlT3B0SW59XG4gICAgICAgICAgICAgICAgcmVmZXRjaFF1ZXJpZXM9e3JlZmV0Y2hRdWVyaWVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKSxcbiAgICAgICAgW3JlZmV0Y2hRdWVyaWVzLCBzY29wZSwgdGFyZ2V0R3JvdXBJZCwgc2VuZERvdWJsZU9wdEluXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgICAgbW9yZUFjdGlvbnNNZW51SXRlbSxcbiAgICAgICAgPD5cbiAgICAgICAgICAgIHtkaWFsb2d9XG4gICAgICAgICAgICB7Y29tcG9uZW50fVxuICAgICAgICA8Lz4sXG4gICAgXTtcbn07XG5cbmludGVyZmFjZSBVc2VDb250YWN0Q29tcG9uZW50UHJvcHMgZXh0ZW5kcyBVc2VDb250YWN0SW1wb3J0UHJvcHMge1xuICAgIGZpbGVJbnB1dFJlZjogUmVmT2JqZWN0PEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPjtcbn1cblxuY29uc3QgQ29udGFjdEltcG9ydENvbXBvbmVudCA9ICh7IHNjb3BlLCB0YXJnZXRHcm91cElkLCBmaWxlSW5wdXRSZWYsIHNlbmREb3VibGVPcHRJbiwgcmVmZXRjaFF1ZXJpZXMgfTogVXNlQ29udGFjdENvbXBvbmVudFByb3BzKSA9PiB7XG4gICAgY29uc3QgYXBvbGxvQ2xpZW50ID0gdXNlQXBvbGxvQ2xpZW50KCk7XG4gICAgY29uc3QgW2ltcG9ydGluZ0Nzdiwgc2V0SW1wb3J0aW5nQ3N2XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaW1wb3J0SW5mb3JtYXRpb24sIHNldEltcG9ydEluZm9ybWF0aW9uXSA9IHVzZVN0YXRlPEdRTENzdkltcG9ydEluZm9ybWF0aW9uIHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgZGlhbG9nT3BlbiA9IGltcG9ydGluZ0NzdiB8fCAhIWltcG9ydEluZm9ybWF0aW9uO1xuICAgIGNvbnN0IGVycm9yRGlhbG9nID0gdXNlRXJyb3JEaWFsb2coKTtcbiAgICBjb25zdCBjb25maWcgPSB1c2VCcmV2b0NvbmZpZygpO1xuICAgIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG4gICAgY29uc3QgY2xpZW50ID0gdXNlQXBvbGxvQ2xpZW50KCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB1cGxvYWQoZmlsZTogRmlsZSwgc2NvcGU6IEdRTEVtYWlsQ2FtcGFpZ25Db250ZW50U2NvcGVJbnB1dCwgbGlzdElkcz86IHN0cmluZ1tdKTogUHJvbWlzZTxHUUxDc3ZJbXBvcnRJbmZvcm1hdGlvbj4ge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlXCIsIGZpbGUpO1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7Y29uZmlnLmFwaVVybH0vZmlsZS11cGxvYWRzL3VwbG9hZGAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5maWxlVXBsb2FkXCIsIGRlZmF1bHRNZXNzYWdlOiBcIkNvdWxkIG5vdCB1cGxvYWQgZmlsZVwiIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVVcGxvYWRJZCA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpLmlkO1xuXG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgY2xpZW50Lm11dGF0ZTxHUUxTdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLCBHUUxTdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uVmFyaWFibGVzPih7XG4gICAgICAgICAgICBtdXRhdGlvbjogc3RhcnRCcmV2b0NvbnRhY3RJbXBvcnRNdXRhdGlvbixcbiAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgIGZpbGVJZDogZmlsZVVwbG9hZElkLFxuICAgICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICAgIHNlbmREb3VibGVPcHRJbixcbiAgICAgICAgICAgICAgICB0YXJnZXRHcm91cElkczogbGlzdElkcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5kZWZhdWx0TWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgdGhlIGltcG9ydC4gUGxlYXNlIHRyeSBhZ2FpbiBpbiBhIHdoaWxlIG9yIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yIGlmIHRoZSBlcnJvciBwZXJzaXN0cy5cIixcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGEuc3RhcnRCcmV2b0NvbnRhY3RJbXBvcnQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc2F2ZUVycm9yRmlsZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZmFpbGVkQ29sdW1ucyA9IGltcG9ydEluZm9ybWF0aW9uPy5mYWlsZWRDb2x1bW5zO1xuICAgICAgICBpZiAoIWZhaWxlZENvbHVtbnMgfHwgZmFpbGVkQ29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpbnRsLmZvcm1hdE1lc3NhZ2UoeyBpZDogXCJleHBvcnRcIiwgZGVmYXVsdE1lc3NhZ2U6IFwiTm8gZmFpbGVkIGNvbHVtbnMgdG8gc2F2ZVwiIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlcnJvckRhdGEgPSBcIlwiO1xuXG4gICAgICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSBmaWxlIHdpdGhvdXQgdHJhaWxpbmcgc2VtaWNvbG9uXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBPYmplY3Qua2V5cyhmYWlsZWRDb2x1bW5zWzBdKTtcbiAgICAgICAgY29uc3QgaGVhZGVyU3RyID0gaGVhZGVycy5qb2luKFwiO1wiKTtcbiAgICAgICAgZXJyb3JEYXRhID0gYCR7aGVhZGVyU3RyLnJlcGxhY2UoLzsrJC8sIFwiXCIpfVxcbmA7IC8vIFJlbW92ZSB0cmFpbGluZyBzZW1pY29sb24gZnJvbSB0aGUgaGVhZGVyXG5cbiAgICAgICAgLy8gQWRkIGVhY2ggcm93IG9mIGZhaWxlZCBjb2x1bW5zIGRhdGFcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgZmFpbGVkQ29sdW1ucykge1xuICAgICAgICAgICAgLy8gVXNlIE9iamVjdC52YWx1ZXMgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgZWFjaCBjb2x1bW5cbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IE9iamVjdC52YWx1ZXMoY29sdW1uKTsgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgdW5kZWZpbmVkL251bGxcblxuICAgICAgICAgICAgLy8gSm9pbiByb3cgdmFsdWVzIGFuZCByZW1vdmUgdGhlIHRyYWlsaW5nIHNlbWljb2xvbiBpZiBub3QgbmVlZGVkXG4gICAgICAgICAgICBjb25zdCByb3dTdHIgPSByb3cuam9pbihcIjtcIik7XG4gICAgICAgICAgICBlcnJvckRhdGEgKz0gYCR7cm93U3RyLnJlcGxhY2UoLzsrJC8sIFwiXCIpfVxcbmA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYW5kIGRvd25sb2FkIHRoZSBmaWxlXG4gICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgQmxvYihbZXJyb3JEYXRhXSwgeyB0eXBlOiBcInRleHQvY3N2O2NoYXJzZXQ9dXRmLThcIiB9KTtcbiAgICAgICAgc2F2ZUFzKGZpbGUsIGBlcnJvci1sb2ctJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9LmNzdmApO1xuICAgIH07XG5cbiAgICBjb25zdCBzYXZlQmxhY2tsaXN0ZWRDb250YWN0c0ZpbGUgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zID0gaW1wb3J0SW5mb3JtYXRpb24/LmJsYWNrbGlzdGVkQ29sdW1ucztcbiAgICAgICAgaWYgKCFibGFja2xpc3RlZENvbnRhY3RzQ29sdW1ucyB8fCBibGFja2xpc3RlZENvbnRhY3RzQ29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpbnRsLmZvcm1hdE1lc3NhZ2UoeyBpZDogXCJleHBvcnRcIiwgZGVmYXVsdE1lc3NhZ2U6IFwiTm8gZmFpbGVkIGNvbHVtbnMgdG8gc2F2ZVwiIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBibGFja2xpc3RlZENvbnRhY3RzRGF0YSA9IFwiXCI7XG5cbiAgICAgICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIGZpbGUgd2l0aG91dCB0cmFpbGluZyBzZW1pY29sb25cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IE9iamVjdC5rZXlzKGJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zWzBdKTtcbiAgICAgICAgY29uc3QgaGVhZGVyU3RyID0gaGVhZGVycy5qb2luKFwiO1wiKTtcbiAgICAgICAgYmxhY2tsaXN0ZWRDb250YWN0c0RhdGEgPSBgJHtoZWFkZXJTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDsgLy8gUmVtb3ZlIHRyYWlsaW5nIHNlbWljb2xvbiBmcm9tIHRoZSBoZWFkZXJcblxuICAgICAgICAvLyBBZGQgZWFjaCByb3cgb2YgZmFpbGVkIGNvbHVtbnMgZGF0YVxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBibGFja2xpc3RlZENvbnRhY3RzQ29sdW1ucykge1xuICAgICAgICAgICAgLy8gVXNlIE9iamVjdC52YWx1ZXMgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgZWFjaCBjb2x1bW5cbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IE9iamVjdC52YWx1ZXMoY29sdW1uKTsgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgdW5kZWZpbmVkL251bGxcblxuICAgICAgICAgICAgLy8gSm9pbiByb3cgdmFsdWVzIGFuZCByZW1vdmUgdGhlIHRyYWlsaW5nIHNlbWljb2xvbiBpZiBub3QgbmVlZGVkXG4gICAgICAgICAgICBjb25zdCByb3dTdHIgPSByb3cuam9pbihcIjtcIik7XG4gICAgICAgICAgICBibGFja2xpc3RlZENvbnRhY3RzRGF0YSArPSBgJHtyb3dTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhbmQgZG93bmxvYWQgdGhlIGZpbGVcbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtibGFja2xpc3RlZENvbnRhY3RzRGF0YV0sIHsgdHlwZTogXCJ0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04XCIgfSk7XG4gICAgICAgIHNhdmVBcyhmaWxlLCBgYmxhY2tsaXN0ZWQtY29udGFjdC1sb2ctJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9LmNzdmApO1xuICAgIH07XG5cbiAgICBjb25zdCB7IGdldElucHV0UHJvcHMgfSA9IHVzZURyb3B6b25lKHtcbiAgICAgICAgYWNjZXB0OiB7IFwidGV4dC9jc3ZcIjogW10gfSxcbiAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICBvbkRyb3A6IGFzeW5jIChhY2NlcHRlZEZpbGVzOiBGaWxlW10pID0+IHtcbiAgICAgICAgICAgIHNldEltcG9ydGluZ0Nzdih0cnVlKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYWNjZXB0ZWRGaWxlc1swXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdXBsb2FkKGZpbGUsIHNjb3BlLCB0YXJnZXRHcm91cElkID8gW3RhcmdldEdyb3VwSWRdIDogW10pO1xuICAgICAgICAgICAgICAgIGFwb2xsb0NsaWVudC5yZWZldGNoUXVlcmllcyh7IGluY2x1ZGU6IHJlZmV0Y2hRdWVyaWVzIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SW1wb3J0aW5nQ3N2KGZhbHNlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5lcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGlhbG9nPy5zaG93RXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMuZXJyb3J9IC8+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJNZXNzYWdlOiBkYXRhLmVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZGF0YS5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEltcG9ydEluZm9ybWF0aW9uKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgc2V0SW1wb3J0aW5nQ3N2KGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJNZXNzYWdlID0gKFxuICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnVzZUNvbnRhY3RJbXBvcnQuZXJyb3IuZGVmYXVsdE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyB0aGUgaW1wb3J0LiBQbGVhc2UgdHJ5IGFnYWluIGluIGEgd2hpbGUgb3IgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgaWYgdGhlIGVycm9yIHBlcnNpc3RzLlwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGVycm9yRGlhbG9nPy5zaG93RXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLmVycm9yfSAvPixcbiAgICAgICAgICAgICAgICAgICAgdXNlck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBTdHJpbmcoZSksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgaGlkZGVuIHsuLi5nZXRJbnB1dFByb3BzKCl9IHJlZj17ZmlsZUlucHV0UmVmfSAvPlxuICAgICAgICAgICAgPERpYWxvZyBvcGVuPXtkaWFsb2dPcGVufT5cbiAgICAgICAgICAgICAgICA8RGlhbG9nVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIHtpbXBvcnRpbmdDc3YgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnVzZUNvbnRhY3RJbXBvcnQuaW1wb3J0aW5nLnRpdGxlXCIgZGVmYXVsdE1lc3NhZ2U9XCJJbXBvcnRpbmcgY29udGFjdHMgZnJvbSBDU1YuLi5cIiAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnVzZUNvbnRhY3RJbXBvcnQuaW1wb3J0U3VjY2Vzc2Z1bC50aXRsZVwiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IHN1Y2Nlc3NmdWxcIiAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgICAgICAgICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIHtpbXBvcnRpbmdDc3YgJiYgPExvYWRpbmcgLz59XG4gICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbi5jcmVhdGVkID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRTdWNjZXNzZnVsLmNvbnRhY3RzSW1wb3J0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0KHMpIGhhdmUgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGFtb3VudDogaW1wb3J0SW5mb3JtYXRpb24uY3JlYXRlZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uLnVwZGF0ZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmltcG9ydFN1Y2Nlc3NmdWwuY29udGFjdHNVcGRhdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwie2Ftb3VudH0gY29udGFjdChzKSBoYXZlIGJlZW4gdXBkYXRlZC5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGFtb3VudDogaW1wb3J0SW5mb3JtYXRpb24udXBkYXRlZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24uZmFpbGVkID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3ggbXQ9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwiZXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5jb250YWN0c0NvdWxkTm90QmVJbXBvcnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwie2Ftb3VudH0gY29udGFjdChzKSBjb3VsZCBub3QgYmUgaW1wb3J0ZWQuIDxsaW5rPkRvd25sb2FkIHRoaXMgZmlsZTwvbGluaz4gdG8gZ2V0IHRoZSBmYWlsaW5nIHJvdyhzKS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogaW1wb3J0SW5mb3JtYXRpb24uZmFpbGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluazogKGNodW5rczogUmVhY3ROb2RlKSA9PiA8Q3N2RG93bmxvYWRMaW5rIG9uQ2xpY2s9e3NhdmVFcnJvckZpbGV9PntjaHVua3N9PC9Dc3ZEb3dubG9hZExpbms+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uLmJsYWNrbGlzdGVkID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3ggbXQ9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwiZXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5jb250YWN0c0FyZUJsYWNrbGlzdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0cyBjb3VsZCBub3QgYmUgaW1wb3J0ZWQgYXMgdGhleSBhcmUgYmxhY2tsaXN0ZWQuICA8bGluaz5Eb3dubG9hZCB0aGlzIGZpbGU8L2xpbms+IHRvIGdldCB0aGUgYmxhY2tsaXN0ZWQgY29udGFjdChzKS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogaW1wb3J0SW5mb3JtYXRpb24uYmxhY2tsaXN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiAoY2h1bmtzOiBSZWFjdE5vZGUpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q3N2RG93bmxvYWRMaW5rIG9uQ2xpY2s9e3NhdmVCbGFja2xpc3RlZENvbnRhY3RzRmlsZX0+e2NodW5rc308L0NzdkRvd25sb2FkTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGltcG9ydEluZm9ybWF0aW9uLmNyZWF0ZWQgPiAwIHx8IGltcG9ydEluZm9ybWF0aW9uLnVwZGF0ZWQgPiAwKSAmJiBzZW5kRG91YmxlT3B0SW4gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94IG10PXsyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbGVydCBzZXZlcml0eT1cIndhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRTdWNjZXNzZnVsLmRvaU5vdGljZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQ29udGFjdHMgd2hvIGhhdmUgbm90IHlldCBjb25maXJtZWQgdGhlaXIgc3Vic2NyaXB0aW9uIHdpbGwgcmVjZWl2ZSBhIGRvdWJsZSBvcHQtaW4gZW1haWwgdG8gY29tcGxldGUgdGhlIHByb2Nlc3MuIFRoZXNlIGNvbnRhY3RzIHdpbGwgbm90IGFwcGVhciBpbiB0aGlzIGxpc3QgdW50aWwgdGhleSBjb25maXJtIHRoZWlyIHN1YnNjcmlwdGlvbi4gT25jZSBjb25maXJtZWQsIHRoZXkgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGFkZGVkIHRvIHRoZSBhcHByb3ByaWF0ZSB0YXJnZXQgZ3JvdXAocykuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gc2V0SW1wb3J0SW5mb3JtYXRpb24obnVsbCl9IHZhcmlhbnQ9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9rfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dBY3Rpb25zPlxuICAgICAgICAgICAgPC9EaWFsb2c+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5jb25zdCBDc3ZEb3dubG9hZExpbmsgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnBhbGV0dGUuaW5mby5tYWlufTtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5gO1xuIl19 */"));
@@ -1,5 +1,5 @@
1
1
  import { type ContentScope } from "@comet/cms-admin";
2
- import { type PropsWithChildren } from "react";
2
+ import { type JSX, type PropsWithChildren } from "react";
3
3
  interface ConfigCheckProps {
4
4
  scope: ContentScope;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigVerification.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAM/C,UAAU,gBAAgB;IACtB,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,OAAO,CA0BxG"}
1
+ {"version":3,"file":"ConfigVerification.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAMzD,UAAU,gBAAgB;IACtB,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,OAAO,CA0BxG"}
@@ -1,2 +1,2 @@
1
- export declare const brevoConfigCheckQuery: import("@apollo/client").DocumentNode;
1
+ export declare const brevoConfigCheckQuery: import("graphql").DocumentNode;
2
2
  //# sourceMappingURL=ConfigVerification.gql.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigVerification.gql.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.gql.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,uCAMjC,CAAC"}
1
+ {"version":3,"file":"ConfigVerification.gql.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.gql.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,gCAMjC,CAAC"}
@@ -1,10 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.namedOperations = void 0;
7
- var namedOperations = exports.namedOperations = {
1
+ export var namedOperations = {
8
2
  Query: {
9
3
  BrevoConfigCheck: 'BrevoConfigCheck'
10
4
  }
@@ -1,10 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.brevoConfigCheckQuery = void 0;
7
- var _client = require("@apollo/client");
8
1
  var _templateObject;
9
2
  function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
10
- var brevoConfigCheckQuery = exports.brevoConfigCheckQuery = (0, _client.gql)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query BrevoConfigCheck($scope: EmailCampaignContentScopeInput!) {\n brevoConfig(scope: $scope) {\n id\n }\n }\n"])));
3
+ import { gql } from "@apollo/client";
4
+ export var brevoConfigCheckQuery = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query BrevoConfigCheck($scope: EmailCampaignContentScopeInput!) {\n brevoConfig(scope: $scope) {\n id\n }\n }\n"])));
@@ -1,19 +1,13 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ConfigVerification = ConfigVerification;
7
- var _client = require("@apollo/client");
8
- var _admin = require("@comet/admin");
9
- var _reactIntl = require("react-intl");
10
- var _ConfigVerification = require("./ConfigVerification.gql");
11
- var _jsxRuntime = require("react/jsx-runtime");
12
- function ConfigVerification(_ref) {
1
+ import { useQuery } from "@apollo/client";
2
+ import { Alert, Loading, MainContent } from "@comet/admin";
3
+ import { FormattedMessage } from "react-intl";
4
+ import { brevoConfigCheckQuery } from "./ConfigVerification.gql";
5
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
6
+ export function ConfigVerification(_ref) {
13
7
  var _data$brevoConfig;
14
8
  var scope = _ref.scope,
15
9
  children = _ref.children;
16
- var _useQuery = (0, _client.useQuery)(_ConfigVerification.brevoConfigCheckQuery, {
10
+ var _useQuery = useQuery(brevoConfigCheckQuery, {
17
11
  variables: {
18
12
  scope: scope
19
13
  },
@@ -24,22 +18,22 @@ function ConfigVerification(_ref) {
24
18
  loading = _useQuery.loading;
25
19
  if (error) throw error;
26
20
  if (loading) {
27
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Loading, {
21
+ return /*#__PURE__*/_jsx(Loading, {
28
22
  behavior: "fillPageHeight"
29
23
  });
30
24
  }
31
25
  if (!(data !== null && data !== void 0 && (_data$brevoConfig = data.brevoConfig) !== null && _data$brevoConfig !== void 0 && _data$brevoConfig.id)) {
32
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.MainContent, {
33
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
26
+ return /*#__PURE__*/_jsx(MainContent, {
27
+ children: /*#__PURE__*/_jsx(Alert, {
34
28
  severity: "error",
35
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
29
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
36
30
  id: "cometBrevoModule.missingConfig",
37
31
  defaultMessage: "Missing brevo config! Configure brevo via the config page."
38
32
  })
39
33
  })
40
34
  });
41
35
  }
42
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
36
+ return /*#__PURE__*/_jsx(_Fragment, {
43
37
  children: children
44
38
  });
45
39
  }
@@ -1,10 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.namedOperations = void 0;
7
- var namedOperations = exports.namedOperations = {
1
+ export var namedOperations = {
8
2
  Query: {
9
3
  EmailCampaignsGrid: 'EmailCampaignsGrid'
10
4
  },