@pie-lib/mask-markup 3.1.6-beta.6 → 3.1.6-beta.8

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.
@@ -0,0 +1,344 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _react2 = require("@testing-library/react");
9
+ var _mask = _interopRequireDefault(require("../mask"));
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
11
+ 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; }
12
+ 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) { (0, _defineProperty2["default"])(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; }
13
+ describe('Mask', function () {
14
+ // Don't mock renderChildren - let the component render naturally
15
+ var onChange = jest.fn();
16
+ var defaultProps = {
17
+ onChange: onChange,
18
+ layout: {
19
+ nodes: [{
20
+ object: 'text',
21
+ leaves: [{
22
+ text: 'Foo'
23
+ }]
24
+ }]
25
+ },
26
+ value: {}
27
+ };
28
+ beforeEach(function () {
29
+ onChange.mockClear();
30
+ });
31
+ describe('rendering', function () {
32
+ it('renders with default props', function () {
33
+ var _render = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], defaultProps)),
34
+ container = _render.container;
35
+ expect(container.firstChild).toBeInTheDocument();
36
+ });
37
+ it('renders text content', function () {
38
+ (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], defaultProps));
39
+ expect(_react2.screen.getByText('Foo')).toBeInTheDocument();
40
+ });
41
+ it('renders a paragraph element', function () {
42
+ var _render2 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
43
+ layout: {
44
+ nodes: [{
45
+ type: 'p',
46
+ nodes: [{
47
+ object: 'text',
48
+ leaves: [{
49
+ text: 'Foo'
50
+ }]
51
+ }]
52
+ }]
53
+ }
54
+ }))),
55
+ container = _render2.container;
56
+
57
+ // Paragraph is rendered as a styled div, not a <p> tag
58
+ expect(_react2.screen.getByText('Foo')).toBeInTheDocument();
59
+ });
60
+ it('renders nested div and paragraph', function () {
61
+ var _render3 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
62
+ layout: {
63
+ nodes: [{
64
+ type: 'div',
65
+ data: {
66
+ attributes: {}
67
+ },
68
+ nodes: [{
69
+ type: 'p',
70
+ data: {
71
+ attributes: {}
72
+ },
73
+ nodes: [{
74
+ object: 'text',
75
+ leaves: [{
76
+ text: 'Foo'
77
+ }]
78
+ }]
79
+ }]
80
+ }]
81
+ }
82
+ }))),
83
+ container = _render3.container;
84
+ expect(container.querySelector('div')).toBeInTheDocument();
85
+ // Paragraph is rendered as a styled div, not a <p> tag
86
+ expect(_react2.screen.getByText('Foo')).toBeInTheDocument();
87
+ });
88
+ it('renders text with italic marks', function () {
89
+ var _render4 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
90
+ layout: {
91
+ nodes: [{
92
+ leaves: [{
93
+ text: 'Foo '
94
+ }],
95
+ object: 'text'
96
+ }, {
97
+ leaves: [{
98
+ marks: [{
99
+ data: undefined,
100
+ type: 'italic'
101
+ }],
102
+ text: 'x'
103
+ }],
104
+ object: 'text'
105
+ }, {
106
+ leaves: [{
107
+ text: ' bar'
108
+ }],
109
+ object: 'text'
110
+ }],
111
+ object: 'block',
112
+ type: 'div'
113
+ }
114
+ }))),
115
+ container = _render4.container;
116
+
117
+ // Text "Foo " is split with spaces, use regex
118
+ expect(_react2.screen.getByText(/Foo/)).toBeInTheDocument();
119
+ expect(_react2.screen.getByText('x')).toBeInTheDocument();
120
+ expect(_react2.screen.getByText(/bar/)).toBeInTheDocument();
121
+ // Check for italic/em element
122
+ var em = container.querySelector('em, i');
123
+ expect(em).toBeInTheDocument();
124
+ expect(em.textContent).toBe('x');
125
+ });
126
+ it('renders tbody without extra space', function () {
127
+ var da = function da() {
128
+ return {
129
+ data: {
130
+ attributes: {}
131
+ }
132
+ };
133
+ };
134
+ var _render5 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
135
+ layout: {
136
+ nodes: [_objectSpread(_objectSpread({
137
+ type: 'table'
138
+ }, da()), {}, {
139
+ nodes: [_objectSpread(_objectSpread({
140
+ type: 'tbody'
141
+ }, da()), {}, {
142
+ nodes: [{
143
+ object: 'text',
144
+ leaves: [{
145
+ text: ' '
146
+ }]
147
+ }, _objectSpread(_objectSpread({
148
+ type: 'tr'
149
+ }, da()), {}, {
150
+ nodes: []
151
+ })]
152
+ })]
153
+ })]
154
+ }
155
+ }))),
156
+ container = _render5.container;
157
+ expect(container.querySelector('table')).toBeInTheDocument();
158
+ expect(container.querySelector('tbody')).toBeInTheDocument();
159
+ expect(container.querySelector('tr')).toBeInTheDocument();
160
+ });
161
+ });
162
+ describe('spacer rendering for DnD components', function () {
163
+ it('adds spacers before and after DnD blank components', function () {
164
+ var mockRenderChildren = jest.fn(function (n) {
165
+ var _n$data;
166
+ if (((_n$data = n.data) === null || _n$data === void 0 || (_n$data = _n$data.dataset) === null || _n$data === void 0 ? void 0 : _n$data.component) === 'blank') {
167
+ return /*#__PURE__*/React.createElement("span", {
168
+ "data-testid": "blank-component"
169
+ }, "Blank");
170
+ }
171
+ return null;
172
+ });
173
+ var _render6 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
174
+ renderChildren: mockRenderChildren,
175
+ layout: {
176
+ nodes: [{
177
+ type: 'div',
178
+ data: {
179
+ dataset: {
180
+ component: 'blank'
181
+ },
182
+ attributes: {}
183
+ },
184
+ nodes: []
185
+ }]
186
+ }
187
+ }))),
188
+ container = _render6.container;
189
+
190
+ // Check that renderChildren was called and spacers are present
191
+ // Count all children in the container - should be: spacer + blank + spacer = 3 elements
192
+ var maskContainer = container.firstChild;
193
+ expect(maskContainer.childNodes.length).toBe(3);
194
+ expect(_react2.screen.getByTestId('blank-component')).toBeInTheDocument();
195
+ });
196
+ it('does not add spacers for non-DnD components', function () {
197
+ var mockRenderChildren = jest.fn(function (n) {
198
+ return /*#__PURE__*/React.createElement("span", {
199
+ "data-testid": "regular-component"
200
+ }, "Regular");
201
+ });
202
+ var _render7 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
203
+ renderChildren: mockRenderChildren,
204
+ layout: {
205
+ nodes: [{
206
+ type: 'div',
207
+ data: {
208
+ attributes: {}
209
+ },
210
+ nodes: []
211
+ }]
212
+ }
213
+ }))),
214
+ container = _render7.container;
215
+
216
+ // Should not have spacers - only the regular component
217
+ var maskContainer = container.firstChild;
218
+ expect(maskContainer.childNodes.length).toBe(1);
219
+ expect(_react2.screen.getByTestId('regular-component')).toBeInTheDocument();
220
+ });
221
+ it('adds spacers regardless of parent node type', function () {
222
+ var mockRenderChildren = jest.fn(function (n) {
223
+ var _n$data2;
224
+ if (((_n$data2 = n.data) === null || _n$data2 === void 0 || (_n$data2 = _n$data2.dataset) === null || _n$data2 === void 0 ? void 0 : _n$data2.component) === 'blank') {
225
+ return /*#__PURE__*/React.createElement("span", {
226
+ "data-testid": "blank-in-td"
227
+ }, "Blank in TD");
228
+ }
229
+ return null;
230
+ });
231
+ var _render8 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
232
+ renderChildren: mockRenderChildren,
233
+ elementType: "drag-in-the-blank",
234
+ layout: {
235
+ nodes: [{
236
+ type: 'table',
237
+ data: {
238
+ attributes: {}
239
+ },
240
+ nodes: [{
241
+ type: 'tbody',
242
+ data: {
243
+ attributes: {}
244
+ },
245
+ nodes: [{
246
+ type: 'tr',
247
+ data: {
248
+ attributes: {}
249
+ },
250
+ nodes: [{
251
+ type: 'td',
252
+ data: {
253
+ attributes: {}
254
+ },
255
+ nodes: [{
256
+ type: 'div',
257
+ data: {
258
+ dataset: {
259
+ component: 'blank'
260
+ },
261
+ attributes: {}
262
+ },
263
+ nodes: []
264
+ }]
265
+ }]
266
+ }]
267
+ }]
268
+ }]
269
+ }
270
+ }))),
271
+ container = _render8.container;
272
+
273
+ // Should have spacers even inside td element
274
+ var td = container.querySelector('td');
275
+ expect(td.childNodes.length).toBe(3); // spacer + blank + spacer
276
+ expect(_react2.screen.getByTestId('blank-in-td')).toBeInTheDocument();
277
+ });
278
+ it('does not add spacers for text content', function () {
279
+ var _render9 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
280
+ elementType: "drag-in-the-blank",
281
+ layout: {
282
+ nodes: [{
283
+ object: 'text',
284
+ leaves: [{
285
+ text: 'Some text'
286
+ }]
287
+ }]
288
+ }
289
+ }))),
290
+ container = _render9.container;
291
+
292
+ // Should not have spacers for plain text - just text node
293
+ var maskContainer = container.firstChild;
294
+ expect(maskContainer.childNodes.length).toBe(1);
295
+ expect(maskContainer.childNodes[0].nodeType).toBe(Node.TEXT_NODE);
296
+ expect(_react2.screen.getByText('Some text')).toBeInTheDocument();
297
+ });
298
+ it('handles multiple DnD components with correct spacer placement', function () {
299
+ var mockRenderChildren = jest.fn(function (n) {
300
+ var _n$data3;
301
+ if (((_n$data3 = n.data) === null || _n$data3 === void 0 || (_n$data3 = _n$data3.dataset) === null || _n$data3 === void 0 ? void 0 : _n$data3.component) === 'blank') {
302
+ return /*#__PURE__*/React.createElement("span", {
303
+ "data-testid": "blank-".concat(n.data.testId)
304
+ }, "Blank");
305
+ }
306
+ return null;
307
+ });
308
+ var _render0 = (0, _react2.render)(/*#__PURE__*/React.createElement(_mask["default"], (0, _extends2["default"])({}, defaultProps, {
309
+ renderChildren: mockRenderChildren,
310
+ layout: {
311
+ nodes: [{
312
+ type: 'div',
313
+ data: {
314
+ dataset: {
315
+ component: 'blank'
316
+ },
317
+ attributes: {},
318
+ testId: '1'
319
+ },
320
+ nodes: []
321
+ }, {
322
+ type: 'div',
323
+ data: {
324
+ dataset: {
325
+ component: 'blank'
326
+ },
327
+ attributes: {},
328
+ testId: '2'
329
+ },
330
+ nodes: []
331
+ }]
332
+ }
333
+ }))),
334
+ container = _render0.container;
335
+
336
+ // Should have 2 spacers per component = 4 spacers + 2 blanks = 6 total children
337
+ var maskContainer = container.firstChild;
338
+ expect(maskContainer.childNodes.length).toBe(6);
339
+ expect(_react2.screen.getByTestId('blank-1')).toBeInTheDocument();
340
+ expect(_react2.screen.getByTestId('blank-2')).toBeInTheDocument();
341
+ });
342
+ });
343
+ });
344
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfbWFzayIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVzY3JpYmUiLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsImRlZmF1bHRQcm9wcyIsImxheW91dCIsIm5vZGVzIiwib2JqZWN0IiwibGVhdmVzIiwidGV4dCIsInZhbHVlIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsIml0IiwiX3JlbmRlciIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJzY3JlZW4iLCJnZXRCeVRleHQiLCJfcmVuZGVyMiIsIl9leHRlbmRzMiIsInR5cGUiLCJfcmVuZGVyMyIsImRhdGEiLCJhdHRyaWJ1dGVzIiwicXVlcnlTZWxlY3RvciIsIl9yZW5kZXI0IiwibWFya3MiLCJ1bmRlZmluZWQiLCJlbSIsInRleHRDb250ZW50IiwidG9CZSIsImRhIiwiX3JlbmRlcjUiLCJtb2NrUmVuZGVyQ2hpbGRyZW4iLCJfbiRkYXRhIiwiZGF0YXNldCIsImNvbXBvbmVudCIsIl9yZW5kZXI2IiwicmVuZGVyQ2hpbGRyZW4iLCJtYXNrQ29udGFpbmVyIiwiY2hpbGROb2RlcyIsImdldEJ5VGVzdElkIiwiX3JlbmRlcjciLCJfbiRkYXRhMiIsIl9yZW5kZXI4IiwiZWxlbWVudFR5cGUiLCJ0ZCIsIl9yZW5kZXI5Iiwibm9kZVR5cGUiLCJOb2RlIiwiVEVYVF9OT0RFIiwiX24kZGF0YTMiLCJjb25jYXQiLCJ0ZXN0SWQiLCJfcmVuZGVyMCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbWFzay50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgTWFzayBmcm9tICcuLi9tYXNrJztcblxuZGVzY3JpYmUoJ01hc2snLCAoKSA9PiB7XG4gIC8vIERvbid0IG1vY2sgcmVuZGVyQ2hpbGRyZW4gLSBsZXQgdGhlIGNvbXBvbmVudCByZW5kZXIgbmF0dXJhbGx5XG4gIGNvbnN0IG9uQ2hhbmdlID0gamVzdC5mbigpO1xuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgb25DaGFuZ2UsXG4gICAgbGF5b3V0OiB7XG4gICAgICBub2RlczogW1xuICAgICAgICB7XG4gICAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgICAgbGVhdmVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRleHQ6ICdGb28nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHZhbHVlOiB7fSxcbiAgfTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZS5tb2NrQ2xlYXIoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcmluZycsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyB3aXRoIGRlZmF1bHQgcHJvcHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxNYXNrIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHRleHQgY29udGVudCcsICgpID0+IHtcbiAgICAgIHJlbmRlcig8TWFzayB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnRm9vJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBhIHBhcmFncmFwaCBlbGVtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIGxheW91dD17e1xuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdwJyxcbiAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgbGVhdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ0ZvbycsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBQYXJhZ3JhcGggaXMgcmVuZGVyZWQgYXMgYSBzdHlsZWQgZGl2LCBub3QgYSA8cD4gdGFnXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnRm9vJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBuZXN0ZWQgZGl2IGFuZCBwYXJhZ3JhcGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFza1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2RpdicsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAncCcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlYXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ0ZvbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdkaXYnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIC8vIFBhcmFncmFwaCBpcyByZW5kZXJlZCBhcyBhIHN0eWxlZCBkaXYsIG5vdCBhIDxwPiB0YWdcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdGb28nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHRleHQgd2l0aCBpdGFsaWMgbWFya3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFza1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGVhdmVzOiBbeyB0ZXh0OiAnRm9vICcgfV0sXG4gICAgICAgICAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZWF2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbWFya3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaXRhbGljJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAneCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZWF2ZXM6IFt7IHRleHQ6ICcgYmFyJyB9XSxcbiAgICAgICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBvYmplY3Q6ICdibG9jaycsXG4gICAgICAgICAgICB0eXBlOiAnZGl2JyxcbiAgICAgICAgICB9fVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIC8vIFRleHQgXCJGb28gXCIgaXMgc3BsaXQgd2l0aCBzcGFjZXMsIHVzZSByZWdleFxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoL0Zvby8pKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ3gnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KC9iYXIvKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIC8vIENoZWNrIGZvciBpdGFsaWMvZW0gZWxlbWVudFxuICAgICAgY29uc3QgZW0gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignZW0sIGknKTtcbiAgICAgIGV4cGVjdChlbSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChlbS50ZXh0Q29udGVudCkudG9CZSgneCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgdGJvZHkgd2l0aG91dCBleHRyYSBzcGFjZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhID0gKCkgPT4gKHsgZGF0YTogeyBhdHRyaWJ1dGVzOiB7fSB9IH0pO1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIGxheW91dD17e1xuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0YWJsZScsXG4gICAgICAgICAgICAgICAgLi4uZGEoKSxcbiAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGJvZHknLFxuICAgICAgICAgICAgICAgICAgICAuLi5kYSgpLFxuICAgICAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhdmVzOiBbeyB0ZXh0OiAnICcgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICd0cicsIC4uLmRhKCksIG5vZGVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9fVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcigndGFibGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcigndGJvZHknKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcigndHInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NwYWNlciByZW5kZXJpbmcgZm9yIERuRCBjb21wb25lbnRzJywgKCkgPT4ge1xuICAgIGl0KCdhZGRzIHNwYWNlcnMgYmVmb3JlIGFuZCBhZnRlciBEbkQgYmxhbmsgY29tcG9uZW50cycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vY2tSZW5kZXJDaGlsZHJlbiA9IGplc3QuZm4oKG4pID0+IHtcbiAgICAgICAgaWYgKG4uZGF0YT8uZGF0YXNldD8uY29tcG9uZW50ID09PSAnYmxhbmsnKSB7XG4gICAgICAgICAgcmV0dXJuIDxzcGFuIGRhdGEtdGVzdGlkPVwiYmxhbmstY29tcG9uZW50XCI+Qmxhbms8L3NwYW4+O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxNYXNrXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cbiAgICAgICAgICByZW5kZXJDaGlsZHJlbj17bW9ja1JlbmRlckNoaWxkcmVufVxuICAgICAgICAgIGxheW91dD17e1xuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkaXYnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IHsgY29tcG9uZW50OiAnYmxhbmsnIH0sXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBDaGVjayB0aGF0IHJlbmRlckNoaWxkcmVuIHdhcyBjYWxsZWQgYW5kIHNwYWNlcnMgYXJlIHByZXNlbnRcbiAgICAgIC8vIENvdW50IGFsbCBjaGlsZHJlbiBpbiB0aGUgY29udGFpbmVyIC0gc2hvdWxkIGJlOiBzcGFjZXIgKyBibGFuayArIHNwYWNlciA9IDMgZWxlbWVudHNcbiAgICAgIGNvbnN0IG1hc2tDb250YWluZXIgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgIGV4cGVjdChtYXNrQ29udGFpbmVyLmNoaWxkTm9kZXMubGVuZ3RoKS50b0JlKDMpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnYmxhbmstY29tcG9uZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgYWRkIHNwYWNlcnMgZm9yIG5vbi1EbkQgY29tcG9uZW50cycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vY2tSZW5kZXJDaGlsZHJlbiA9IGplc3QuZm4oKG4pID0+IHtcbiAgICAgICAgcmV0dXJuIDxzcGFuIGRhdGEtdGVzdGlkPVwicmVndWxhci1jb21wb25lbnRcIj5SZWd1bGFyPC9zcGFuPjtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8TWFza1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgcmVuZGVyQ2hpbGRyZW49e21vY2tSZW5kZXJDaGlsZHJlbn1cbiAgICAgICAgICBsYXlvdXQ9e3tcbiAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGl2JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBTaG91bGQgbm90IGhhdmUgc3BhY2VycyAtIG9ubHkgdGhlIHJlZ3VsYXIgY29tcG9uZW50XG4gICAgICBjb25zdCBtYXNrQ29udGFpbmVyID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICBleHBlY3QobWFza0NvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXN0SWQoJ3JlZ3VsYXItY29tcG9uZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkcyBzcGFjZXJzIHJlZ2FyZGxlc3Mgb2YgcGFyZW50IG5vZGUgdHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vY2tSZW5kZXJDaGlsZHJlbiA9IGplc3QuZm4oKG4pID0+IHtcbiAgICAgICAgaWYgKG4uZGF0YT8uZGF0YXNldD8uY29tcG9uZW50ID09PSAnYmxhbmsnKSB7XG4gICAgICAgICAgcmV0dXJuIDxzcGFuIGRhdGEtdGVzdGlkPVwiYmxhbmstaW4tdGRcIj5CbGFuayBpbiBURDwvc3Bhbj47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIHJlbmRlckNoaWxkcmVuPXttb2NrUmVuZGVyQ2hpbGRyZW59XG4gICAgICAgICAgZWxlbWVudFR5cGU9XCJkcmFnLWluLXRoZS1ibGFua1wiXG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7IGF0dHJpYnV0ZXM6IHt9IH0sXG4gICAgICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Rib2R5JyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBhdHRyaWJ1dGVzOiB7fSB9LFxuICAgICAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGF0dHJpYnV0ZXM6IHt9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGF0dHJpYnV0ZXM6IHt9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RpdicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0OiB7IGNvbXBvbmVudDogJ2JsYW5rJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgLy8gU2hvdWxkIGhhdmUgc3BhY2VycyBldmVuIGluc2lkZSB0ZCBlbGVtZW50XG4gICAgICBjb25zdCB0ZCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCd0ZCcpO1xuICAgICAgZXhwZWN0KHRkLmNoaWxkTm9kZXMubGVuZ3RoKS50b0JlKDMpOyAvLyBzcGFjZXIgKyBibGFuayArIHNwYWNlclxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnYmxhbmstaW4tdGQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBhZGQgc3BhY2VycyBmb3IgdGV4dCBjb250ZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIGVsZW1lbnRUeXBlPVwiZHJhZy1pbi10aGUtYmxhbmtcIlxuICAgICAgICAgIGxheW91dD17e1xuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9iamVjdDogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGxlYXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnU29tZSB0ZXh0JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBTaG91bGQgbm90IGhhdmUgc3BhY2VycyBmb3IgcGxhaW4gdGV4dCAtIGp1c3QgdGV4dCBub2RlXG4gICAgICBjb25zdCBtYXNrQ29udGFpbmVyID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICBleHBlY3QobWFza0NvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgIGV4cGVjdChtYXNrQ29udGFpbmVyLmNoaWxkTm9kZXNbMF0ubm9kZVR5cGUpLnRvQmUoTm9kZS5URVhUX05PREUpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ1NvbWUgdGV4dCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgbXVsdGlwbGUgRG5EIGNvbXBvbmVudHMgd2l0aCBjb3JyZWN0IHNwYWNlciBwbGFjZW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtb2NrUmVuZGVyQ2hpbGRyZW4gPSBqZXN0LmZuKChuKSA9PiB7XG4gICAgICAgIGlmIChuLmRhdGE/LmRhdGFzZXQ/LmNvbXBvbmVudCA9PT0gJ2JsYW5rJykge1xuICAgICAgICAgIHJldHVybiA8c3BhbiBkYXRhLXRlc3RpZD17YGJsYW5rLSR7bi5kYXRhLnRlc3RJZH1gfT5CbGFuazwvc3Bhbj47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPE1hc2tcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIHJlbmRlckNoaWxkcmVuPXttb2NrUmVuZGVyQ2hpbGRyZW59XG4gICAgICAgICAgbGF5b3V0PXt7XG4gICAgICAgICAgICBub2RlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2RpdicsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgZGF0YXNldDogeyBjb21wb25lbnQ6ICdibGFuaycgfSxcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgdGVzdElkOiAnMScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBub2RlczogW10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGl2JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBkYXRhc2V0OiB7IGNvbXBvbmVudDogJ2JsYW5rJyB9LFxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgICAgICAgICB0ZXN0SWQ6ICcyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICAvLyBTaG91bGQgaGF2ZSAyIHNwYWNlcnMgcGVyIGNvbXBvbmVudCA9IDQgc3BhY2VycyArIDIgYmxhbmtzID0gNiB0b3RhbCBjaGlsZHJlblxuICAgICAgY29uc3QgbWFza0NvbnRhaW5lciA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgZXhwZWN0KG1hc2tDb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGgpLnRvQmUoNik7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdibGFuay0xJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdibGFuay0yJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUEyQixTQUFBRCx3QkFBQUssQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQVAsdUJBQUEs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
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _serialization = require("../serialization");
4
+ describe('serialization', function () {
5
+ it('ignores comments', function () {
6
+ var out = (0, _serialization.deserialize)("<!-- hi -->");
7
+ expect(out.document.nodes[0]).toEqual(expect.objectContaining({
8
+ type: 'span'
9
+ }));
10
+ });
11
+ it('ignores comments', function () {
12
+ var out = (0, _serialization.deserialize)("<!-- hi --><div>foo</div>");
13
+ expect(out.document.nodes[0]).toEqual(expect.objectContaining({
14
+ type: 'div',
15
+ nodes: [expect.objectContaining({
16
+ object: 'text',
17
+ leaves: [{
18
+ text: 'foo'
19
+ }]
20
+ })]
21
+ }));
22
+ });
23
+ it('deserializes an em', function () {
24
+ var out = (0, _serialization.deserialize)("<!-- hi --><div> <em>x</em> </div>");
25
+ expect(out.document.nodes[0]).toEqual(expect.objectContaining({
26
+ type: 'div',
27
+ nodes: [expect.objectContaining({
28
+ object: 'text'
29
+ }), expect.objectContaining({
30
+ leaves: [{
31
+ marks: [{
32
+ data: undefined,
33
+ type: 'italic'
34
+ }],
35
+ text: 'x'
36
+ }],
37
+ object: 'text'
38
+ }), expect.objectContaining({
39
+ object: 'text'
40
+ })]
41
+ }));
42
+ });
43
+ });
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2VyaWFsaXphdGlvbiIsInJlcXVpcmUiLCJkZXNjcmliZSIsIml0Iiwib3V0IiwiZGVzZXJpYWxpemUiLCJleHBlY3QiLCJkb2N1bWVudCIsIm5vZGVzIiwidG9FcXVhbCIsIm9iamVjdENvbnRhaW5pbmciLCJ0eXBlIiwib2JqZWN0IiwibGVhdmVzIiwidGV4dCIsIm1hcmtzIiwiZGF0YSIsInVuZGVmaW5lZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vc2VyaWFsaXphdGlvbi50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2VyaWFsaXplIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbic7XG5cbmRlc2NyaWJlKCdzZXJpYWxpemF0aW9uJywgKCkgPT4ge1xuICBpdCgnaWdub3JlcyBjb21tZW50cycsICgpID0+IHtcbiAgICBjb25zdCBvdXQgPSBkZXNlcmlhbGl6ZShgPCEtLSBoaSAtLT5gKTtcbiAgICBleHBlY3Qob3V0LmRvY3VtZW50Lm5vZGVzWzBdKS50b0VxdWFsKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHsgdHlwZTogJ3NwYW4nIH0pKTtcbiAgfSk7XG5cbiAgaXQoJ2lnbm9yZXMgY29tbWVudHMnLCAoKSA9PiB7XG4gICAgY29uc3Qgb3V0ID0gZGVzZXJpYWxpemUoYDwhLS0gaGkgLS0+PGRpdj5mb288L2Rpdj5gKTtcbiAgICBleHBlY3Qob3V0LmRvY3VtZW50Lm5vZGVzWzBdKS50b0VxdWFsKFxuICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICB0eXBlOiAnZGl2JyxcbiAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgIGxlYXZlczogW3sgdGV4dDogJ2ZvbycgfV0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICApO1xuICB9KTtcblxuICBpdCgnZGVzZXJpYWxpemVzIGFuIGVtJywgKCkgPT4ge1xuICAgIGNvbnN0IG91dCA9IGRlc2VyaWFsaXplKGA8IS0tIGhpIC0tPjxkaXY+IDxlbT54PC9lbT4gPC9kaXY+YCk7XG4gICAgZXhwZWN0KG91dC5kb2N1bWVudC5ub2Rlc1swXSkudG9FcXVhbChcbiAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgdHlwZTogJ2RpdicsXG4gICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICAgICAgbGVhdmVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYXJrczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRleHQ6ICd4JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxPQUFBO0FBRUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsWUFBTTtFQUM5QkMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLFlBQU07SUFDM0IsSUFBTUMsR0FBRyxHQUFHLElBQUFDLDBCQUFXLGVBQWMsQ0FBQztJQUN0Q0MsTUFBTSxDQUFDRixHQUFHLENBQUNHLFFBQVEsQ0FBQ0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQ0gsTUFBTSxDQUFDSSxnQkFBZ0IsQ0FBQztNQUFFQyxJQUFJLEVBQUU7SUFBTyxDQUFDLENBQUMsQ0FBQztFQUNsRixDQUFDLENBQUM7RUFFRlIsRUFBRSxDQUFDLGtCQUFrQixFQUFFLFlBQU07SUFDM0IsSUFBTUMsR0FBRyxHQUFHLElBQUFDLDBCQUFXLDZCQUE0QixDQUFDO0lBQ3BEQyxNQUFNLENBQUNGLEdBQUcsQ0FBQ0csUUFBUSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUNuQ0gsTUFBTSxDQUFDSSxnQkFBZ0IsQ0FBQztNQUN0QkMsSUFBSSxFQUFFLEtBQUs7TUFDWEgsS0FBSyxFQUFFLENBQ0xGLE1BQU0sQ0FBQ0ksZ0JBQWdCLENBQUM7UUFDdEJFLE1BQU0sRUFBRSxNQUFNO1FBQ2RDLE1BQU0sRUFBRSxDQUFDO1VBQUVDLElBQUksRUFBRTtRQUFNLENBQUM7TUFDMUIsQ0FBQyxDQUFDO0lBRU4sQ0FBQyxDQUNILENBQUM7RUFDSCxDQUFDLENBQUM7RUFFRlgsRUFBRSxDQUFDLG9CQUFvQixFQUFFLFlBQU07SUFDN0IsSUFBTUMsR0FBRyxHQUFHLElBQUFDLDBCQUFXLHNDQUFxQyxDQUFDO0lBQzdEQyxNQUFNLENBQUNGLEdBQUcsQ0FBQ0csUUFBUSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUNuQ0gsTUFBTSxDQUFDSSxnQkFBZ0IsQ0FBQztNQUN0QkMsSUFBSSxFQUFFLEtBQUs7TUFDWEgsS0FBSyxFQUFFLENBQ0xGLE1BQU0sQ0FBQ0ksZ0JBQWdCLENBQUM7UUFDdEJFLE1BQU0sRUFBRTtNQUNWLENBQUMsQ0FBQyxFQUNGTixNQUFNLENBQUNJLGdCQUFnQixDQUFDO1FBQ3RCRyxNQUFNLEVBQUUsQ0FDTjtVQUNFRSxLQUFLLEVBQUUsQ0FDTDtZQUNFQyxJQUFJLEVBQUVDLFNBQVM7WUFDZk4sSUFBSSxFQUFFO1VBQ1IsQ0FBQyxDQUNGO1VBQ0RHLElBQUksRUFBRTtRQUNSLENBQUMsQ0FDRjtRQUNERixNQUFNLEVBQUU7TUFDVixDQUFDLENBQUMsRUFDRk4sTUFBTSxDQUFDSSxnQkFBZ0IsQ0FBQztRQUN0QkUsTUFBTSxFQUFFO01BQ1YsQ0FBQyxDQUFDO0lBRU4sQ0FBQyxDQUNILENBQUM7RUFDSCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.choice = void 0;
7
+ var choice = exports.choice = function choice(v, id) {
8
+ return {
9
+ label: v,
10
+ value: v,
11
+ id: id
12
+ };
13
+ };
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaG9pY2UiLCJleHBvcnRzIiwidiIsImlkIiwibGFiZWwiLCJ2YWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGNob2ljZSA9ICh2LCBpZCkgPT4gKHsgbGFiZWw6IHYsIHZhbHVlOiB2LCBpZCB9KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU8sSUFBTUEsTUFBTSxHQUFBQyxPQUFBLENBQUFELE1BQUEsR0FBRyxTQUFUQSxNQUFNQSxDQUFJRSxDQUFDLEVBQUVDLEVBQUU7RUFBQSxPQUFNO0lBQUVDLEtBQUssRUFBRUYsQ0FBQztJQUFFRyxLQUFLLEVBQUVILENBQUM7SUFBRUMsRUFBRSxFQUFGQTtFQUFHLENBQUM7QUFBQSxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _react2 = require("@testing-library/react");
9
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
+ var _withMask = require("../with-mask");
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
12
+ describe('WithMask', function () {
13
+ var onChange = jest.fn();
14
+ var defaultProps = {
15
+ markup: '<p>Foo bar {{0}} over the moon;</p>',
16
+ value: {
17
+ 0: 'blank'
18
+ },
19
+ onChange: onChange
20
+ };
21
+ var Masked = (0, _withMask.withMask)('foo', function (props) {
22
+ return function (node) {
23
+ var dataset = node.data ? node.data.dataset || {} : {};
24
+ if (dataset.component === 'foo') {
25
+ return /*#__PURE__*/React.createElement("input", {
26
+ type: "text",
27
+ "data-testid": "masked-input",
28
+ defaultValue: "Foo",
29
+ onChange: props.onChange
30
+ });
31
+ }
32
+ };
33
+ });
34
+ beforeEach(function () {
35
+ onChange.mockClear();
36
+ });
37
+ describe('rendering', function () {
38
+ it('renders with default props', function () {
39
+ var _render = (0, _react2.render)(/*#__PURE__*/React.createElement(Masked, defaultProps)),
40
+ container = _render.container;
41
+ expect(container.firstChild).toBeInTheDocument();
42
+ });
43
+ it('renders markup content', function () {
44
+ (0, _react2.render)(/*#__PURE__*/React.createElement(Masked, defaultProps));
45
+ expect(_react2.screen.getByText(/Foo bar/)).toBeInTheDocument();
46
+ });
47
+ it('renders paragraph content', function () {
48
+ var _render2 = (0, _react2.render)(/*#__PURE__*/React.createElement(Masked, defaultProps)),
49
+ container = _render2.container;
50
+ // Paragraph is rendered as a styled div, not a <p> tag
51
+ expect(container.firstChild).toBeInTheDocument();
52
+ expect(_react2.screen.getByText(/Foo bar/)).toBeInTheDocument();
53
+ });
54
+ });
55
+ describe('onChange handler', function () {
56
+ it('calls onChange when value changes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
57
+ var user, input;
58
+ return _regenerator["default"].wrap(function (_context) {
59
+ while (1) switch (_context.prev = _context.next) {
60
+ case 0:
61
+ user = _userEvent["default"].setup();
62
+ (0, _react2.render)(/*#__PURE__*/React.createElement(Masked, defaultProps));
63
+ input = _react2.screen.queryByTestId('masked-input');
64
+ if (!input) {
65
+ _context.next = 3;
66
+ break;
67
+ }
68
+ _context.next = 1;
69
+ return user.clear(input);
70
+ case 1:
71
+ _context.next = 2;
72
+ return user.type(input, 'ceva');
73
+ case 2:
74
+ expect(onChange).toHaveBeenCalled();
75
+ case 3:
76
+ case "end":
77
+ return _context.stop();
78
+ }
79
+ }, _callee);
80
+ })));
81
+ it('passes event to onChange', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
82
+ var user, input, lastCall;
83
+ return _regenerator["default"].wrap(function (_context2) {
84
+ while (1) switch (_context2.prev = _context2.next) {
85
+ case 0:
86
+ user = _userEvent["default"].setup();
87
+ (0, _react2.render)(/*#__PURE__*/React.createElement(Masked, defaultProps));
88
+ input = _react2.screen.queryByTestId('masked-input');
89
+ if (!input) {
90
+ _context2.next = 3;
91
+ break;
92
+ }
93
+ _context2.next = 1;
94
+ return user.clear(input);
95
+ case 1:
96
+ _context2.next = 2;
97
+ return user.type(input, 'test');
98
+ case 2:
99
+ expect(onChange).toHaveBeenCalled();
100
+ lastCall = onChange.mock.calls[onChange.mock.calls.length - 1][0];
101
+ expect(lastCall).toHaveProperty('target');
102
+ case 3:
103
+ case "end":
104
+ return _context2.stop();
105
+ }
106
+ }, _callee2);
107
+ })));
108
+ });
109
+ });
110
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl93aXRoTWFzayIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZGVzY3JpYmUiLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsImRlZmF1bHRQcm9wcyIsIm1hcmt1cCIsInZhbHVlIiwiTWFza2VkIiwid2l0aE1hc2siLCJwcm9wcyIsIm5vZGUiLCJkYXRhc2V0IiwiZGF0YSIsImNvbXBvbmVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsIml0IiwiX3JlbmRlciIsInJlbmRlciIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInNjcmVlbiIsImdldEJ5VGV4dCIsIl9yZW5kZXIyIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJ1c2VyIiwiaW5wdXQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInVzZXJFdmVudCIsInNldHVwIiwicXVlcnlCeVRlc3RJZCIsImNsZWFyIiwidG9IYXZlQmVlbkNhbGxlZCIsInN0b3AiLCJfY2FsbGVlMiIsImxhc3RDYWxsIiwiX2NvbnRleHQyIiwibW9jayIsImNhbGxzIiwibGVuZ3RoIiwidG9IYXZlUHJvcGVydHkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL3dpdGgtbWFzay50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgdXNlckV2ZW50IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvdXNlci1ldmVudCc7XG5pbXBvcnQgeyB3aXRoTWFzayB9IGZyb20gJy4uL3dpdGgtbWFzayc7XG5cbmRlc2NyaWJlKCdXaXRoTWFzaycsICgpID0+IHtcbiAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBtYXJrdXA6ICc8cD5Gb28gYmFyIHt7MH19IG92ZXIgdGhlIG1vb247PC9wPicsXG4gICAgdmFsdWU6IHtcbiAgICAgIDA6ICdibGFuaycsXG4gICAgfSxcbiAgICBvbkNoYW5nZSxcbiAgfTtcblxuICBjb25zdCBNYXNrZWQgPSB3aXRoTWFzaygnZm9vJywgKHByb3BzKSA9PiAobm9kZSkgPT4ge1xuICAgIGNvbnN0IGRhdGFzZXQgPSBub2RlLmRhdGEgPyBub2RlLmRhdGEuZGF0YXNldCB8fCB7fSA6IHt9O1xuXG4gICAgaWYgKGRhdGFzZXQuY29tcG9uZW50ID09PSAnZm9vJykge1xuICAgICAgcmV0dXJuIDxpbnB1dCB0eXBlPVwidGV4dFwiIGRhdGEtdGVzdGlkPVwibWFza2VkLWlucHV0XCIgZGVmYXVsdFZhbHVlPVwiRm9vXCIgb25DaGFuZ2U9e3Byb3BzLm9uQ2hhbmdlfSAvPjtcbiAgICB9XG4gIH0pO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uQ2hhbmdlLm1vY2tDbGVhcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggZGVmYXVsdCBwcm9wcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPE1hc2tlZCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBtYXJrdXAgY29udGVudCcsICgpID0+IHtcbiAgICAgIHJlbmRlcig8TWFza2VkIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KC9Gb28gYmFyLykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBwYXJhZ3JhcGggY29udGVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPE1hc2tlZCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICAvLyBQYXJhZ3JhcGggaXMgcmVuZGVyZWQgYXMgYSBzdHlsZWQgZGl2LCBub3QgYSA8cD4gdGFnXG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgvRm9vIGJhci8pKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnb25DaGFuZ2UgaGFuZGxlcicsICgpID0+IHtcbiAgICBpdCgnY2FsbHMgb25DaGFuZ2Ugd2hlbiB2YWx1ZSBjaGFuZ2VzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgcmVuZGVyKDxNYXNrZWQgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuXG4gICAgICBjb25zdCBpbnB1dCA9IHNjcmVlbi5xdWVyeUJ5VGVzdElkKCdtYXNrZWQtaW5wdXQnKTtcbiAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICBhd2FpdCB1c2VyLmNsZWFyKGlucHV0KTtcbiAgICAgICAgYXdhaXQgdXNlci50eXBlKGlucHV0LCAnY2V2YScpO1xuXG4gICAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Bhc3NlcyBldmVudCB0byBvbkNoYW5nZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIHJlbmRlcig8TWFza2VkIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcblxuICAgICAgY29uc3QgaW5wdXQgPSBzY3JlZW4ucXVlcnlCeVRlc3RJZCgnbWFza2VkLWlucHV0Jyk7XG4gICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgYXdhaXQgdXNlci5jbGVhcihpbnB1dCk7XG4gICAgICAgIGF3YWl0IHVzZXIudHlwZShpbnB1dCwgJ3Rlc3QnKTtcblxuICAgICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgICAgY29uc3QgbGFzdENhbGwgPSBvbkNoYW5nZS5tb2NrLmNhbGxzW29uQ2hhbmdlLm1vY2suY2FsbHMubGVuZ3RoIC0gMV1bMF07XG4gICAgICAgIGV4cGVjdChsYXN0Q2FsbCkudG9IYXZlUHJvcGVydHkoJ3RhcmdldCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFBd0MsU0FBQUQsd0JBQUFNLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFSLHVCQUFBLFlBQUFBLHdCQUFBTSxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFB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