@pie-lib/graphing 2.15.0-beta.3 → 2.15.0-beta.5

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 (36) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/lib/__tests__/graph-with-controls.test.js +215 -0
  3. package/lib/__tests__/graph.test.js +290 -0
  4. package/lib/__tests__/grid.test.js +40 -0
  5. package/lib/__tests__/labels.test.js +59 -0
  6. package/lib/__tests__/mark-label.test.js +154 -0
  7. package/lib/__tests__/toggle-bar.test.js +54 -0
  8. package/lib/__tests__/tool-menu.test.js +43 -0
  9. package/lib/__tests__/undo-redo.test.js +42 -0
  10. package/lib/__tests__/use-debounce.test.js +28 -0
  11. package/lib/__tests__/utils.js +72 -0
  12. package/lib/__tests__/utils.test.js +133 -0
  13. package/lib/axis/__tests__/arrow.test.js +68 -0
  14. package/lib/axis/__tests__/axes.test.js +214 -0
  15. package/lib/tools/absolute/__tests__/component.test.js +74 -0
  16. package/lib/tools/circle/__tests__/bg-circle.test.js +46 -0
  17. package/lib/tools/circle/__tests__/component.test.js +259 -0
  18. package/lib/tools/exponential/__tests__/component.test.js +73 -0
  19. package/lib/tools/line/__tests__/component.test.js +56 -0
  20. package/lib/tools/parabola/__tests__/component.test.js +73 -0
  21. package/lib/tools/point/__tests__/component.test.js +97 -0
  22. package/lib/tools/polygon/__tests__/component.test.js +255 -0
  23. package/lib/tools/polygon/__tests__/index.test.js +95 -0
  24. package/lib/tools/polygon/__tests__/line.test.js +43 -0
  25. package/lib/tools/polygon/__tests__/polygon.test.js +73 -0
  26. package/lib/tools/ray/__tests__/component.test.js +48 -0
  27. package/lib/tools/segment/__tests__/component.test.js +48 -0
  28. package/lib/tools/shared/__tests__/arrow-head.test.js +62 -0
  29. package/lib/tools/shared/line/__tests__/index.test.js +301 -0
  30. package/lib/tools/shared/line/__tests__/line-path.test.js +78 -0
  31. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +122 -0
  32. package/lib/tools/shared/point/__tests__/arrow-point.test.js +137 -0
  33. package/lib/tools/shared/point/__tests__/base-point.test.js +134 -0
  34. package/lib/tools/sine/__tests__/component.test.js +81 -0
  35. package/lib/tools/vector/__tests__/component.test.js +45 -0
  36. package/package.json +8 -9
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _utils = require("../../../__tests__/utils");
12
+
13
+ var _component = require("../component");
14
+
15
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
+
17
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
+
19
+ var xyLabel = function xyLabel(x, y, index, label) {
20
+ return _objectSpread(_objectSpread({}, (0, _utils.xy)(x, y, index)), {}, {
21
+ label: label
22
+ });
23
+ };
24
+
25
+ describe('buildLines', function () {
26
+ var defaultPoints = [(0, _utils.xy)(0, 0), (0, _utils.xy)(1, 1), (0, _utils.xy)(1, 0)];
27
+
28
+ var assertBuildLines = function assertBuildLines(points, closed, expected) {
29
+ it("builds points and lines for ".concat(points, " = ").concat(expected), function () {
30
+ var result = (0, _component.buildLines)(points);
31
+ expect(result).toMatchObject([{
32
+ from: (0, _utils.xy)(0, 0, 0),
33
+ to: (0, _utils.xy)(1, 1, 1)
34
+ }, {
35
+ from: (0, _utils.xy)(1, 1, 1),
36
+ to: (0, _utils.xy)(1, 0, 2)
37
+ }]);
38
+ });
39
+ };
40
+
41
+ assertBuildLines(defaultPoints, true, []);
42
+ });
43
+ describe('swap', function () {
44
+ it('swaps pairs', function () {
45
+ var result = (0, _component.swap)([(0, _utils.xy)(0, 0, 0), (0, _utils.xy)(1, 1, 1), (0, _utils.xy)(2, 2, 2)], (0, _utils.xy)(0, 0, 0), (0, _utils.xy)(3, 3, 0));
46
+ expect(result).toEqual([(0, _utils.xy)(3, 3, 0), (0, _utils.xy)(1, 1, 1), (0, _utils.xy)(2, 2, 2)]);
47
+ });
48
+ });
49
+ describe('RawBaseComponent', function () {
50
+ var w;
51
+ var onChange = jest.fn();
52
+ var onChangeProps = jest.fn();
53
+
54
+ var wrapper = function wrapper(extras) {
55
+ var defaults = {
56
+ classes: {},
57
+ className: 'className',
58
+ onChange: onChange,
59
+ onChangeProps: onChangeProps,
60
+ onClosePolygon: jest.fn(),
61
+ graphProps: (0, _utils.graphProps)(),
62
+ points: []
63
+ };
64
+
65
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
66
+
67
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_component.RawBaseComponent, props));
68
+ }; // used to test items that have labels attached to points
69
+
70
+
71
+ var labelNode = document.createElement('foreignObject');
72
+ var points = [xyLabel(0, 0, 0, 'A'), xyLabel(2, 2, 1, 'B'), xyLabel(0, 2, 2, 'C')];
73
+
74
+ var wrapperWithLabels = function wrapperWithLabels(extras) {
75
+ return wrapper(_objectSpread({
76
+ labelNode: labelNode,
77
+ points: points
78
+ }, extras));
79
+ };
80
+
81
+ describe('snapshot', function () {
82
+ it('renders', function () {
83
+ w = wrapper();
84
+ expect(w).toMatchSnapshot();
85
+ });
86
+ it('renders with labels', function () {
87
+ w = wrapperWithLabels();
88
+ expect(w).toMatchSnapshot();
89
+ });
90
+ });
91
+ describe('logic', function () {
92
+ describe('dragPoint', function () {
93
+ it('calls onChange', function () {
94
+ onChange = jest.fn();
95
+ w = wrapper({
96
+ points: [(0, _utils.xy)(1, 1)],
97
+ onChange: onChange
98
+ });
99
+ w.instance().dragPoint(0, (0, _utils.xy)(1, 1), (0, _utils.xy)(2, 2));
100
+ expect(onChange).toHaveBeenCalledWith([(0, _utils.xy)(2, 2)]);
101
+ });
102
+ it('calls onChange keeping label property from point', function () {
103
+ onChange = jest.fn();
104
+ w = wrapperWithLabels(onChange);
105
+ w.instance().dragPoint(0, (0, _utils.xy)(0, 0), (0, _utils.xy)(0, 1));
106
+ expect(onChange).toHaveBeenCalledWith([{
107
+ x: 0,
108
+ y: 1,
109
+ label: 'A'
110
+ }, points[1], points[2]]);
111
+ });
112
+ });
113
+ describe('dragLine', function () {
114
+ it('calls onChange', function () {
115
+ w = wrapper({
116
+ points: [(0, _utils.xy)(1, 1, 0), (0, _utils.xy)(2, 2, 1)],
117
+ onChange: onChange
118
+ });
119
+ w.instance().dragLine({
120
+ from: (0, _utils.xy)(1, 1, 0),
121
+ to: (0, _utils.xy)(2, 2, 1)
122
+ }, {
123
+ from: (0, _utils.xy)(2, 2, 0),
124
+ to: (0, _utils.xy)(4, 4, 1)
125
+ });
126
+ expect(onChange).toHaveBeenCalledWith([(0, _utils.xy)(2, 2, 0), (0, _utils.xy)(4, 4, 1)]);
127
+ });
128
+ it('calls onChange keeping label property from both points', function () {
129
+ onChange = jest.fn();
130
+ w = wrapperWithLabels(onChange);
131
+ w.instance().dragLine({
132
+ from: points[0],
133
+ to: points[1]
134
+ }, {
135
+ from: (0, _utils.xy)(0, 1, 0),
136
+ to: (0, _utils.xy)(2, 3, 1)
137
+ });
138
+ expect(onChange).toHaveBeenCalledWith([xyLabel(0, 1, 0, 'A'), xyLabel(2, 3, 1, 'B'), points[2]]);
139
+ });
140
+ });
141
+ describe('dragPoly', function () {
142
+ it('calls onChange', function () {
143
+ w = wrapper({
144
+ onChange: onChange
145
+ });
146
+ var existing = [(0, _utils.xy)(1, 1)];
147
+ var next = [(0, _utils.xy)(2, 2)];
148
+ w.instance().dragPoly(existing, next);
149
+ expect(onChange).toHaveBeenCalledWith([(0, _utils.xy)(2, 2)]);
150
+ });
151
+ it('calls onChange keeping label property from all points', function () {
152
+ onChange = jest.fn();
153
+ w = wrapperWithLabels(onChange);
154
+ w.instance().dragPoly(points, [(0, _utils.xy)(0, 1, 0), (0, _utils.xy)(2, 3, 1), (0, _utils.xy)(0, 3, 2)]);
155
+ expect(onChange).toHaveBeenCalledWith([xyLabel(0, 1, 0, 'A'), xyLabel(2, 3, 1, 'B'), xyLabel(0, 3, 2, 'C')]);
156
+ });
157
+ });
158
+ describe('labelChange', function () {
159
+ it('updates "label" property for point', function () {
160
+ w = wrapperWithLabels();
161
+ w.instance().labelChange(_objectSpread(_objectSpread({}, points[0]), {}, {
162
+ label: 'Label A'
163
+ }), 0);
164
+ expect(onChangeProps).toBeCalledWith([_objectSpread(_objectSpread({}, points[0]), {}, {
165
+ label: 'Label A'
166
+ }), points[1], points[2]]);
167
+ w.instance().labelChange(_objectSpread(_objectSpread({}, points[1]), {}, {
168
+ label: 'Label B'
169
+ }), 1);
170
+ expect(onChangeProps).toBeCalledWith([points[0], _objectSpread(_objectSpread({}, points[1]), {}, {
171
+ label: 'Label B'
172
+ }), points[2]]);
173
+ });
174
+ it('removes "label" property if the field is empty', function () {
175
+ w = wrapperWithLabels();
176
+ w.instance().labelChange(_objectSpread(_objectSpread({}, points[0]), {}, {
177
+ label: ''
178
+ }), 0);
179
+ expect(onChangeProps).toBeCalledWith([(0, _utils.xy)(0, 0, 0), points[1], points[2]]);
180
+ w.instance().labelChange(_objectSpread(_objectSpread({}, points[1]), {}, {
181
+ label: ''
182
+ }), 1);
183
+ expect(onChangeProps).toBeCalledWith([points[0], (0, _utils.xy)(2, 2, 1), points[2]]);
184
+ });
185
+ });
186
+ });
187
+ describe('close', function () {
188
+ it('calls onClosePolygon', function () {
189
+ var onClosePolygon = jest.fn();
190
+ w = wrapper({
191
+ onClosePolygon: onClosePolygon,
192
+ points: [(0, _utils.xy)(1, 1), (0, _utils.xy)(2, 2), (0, _utils.xy)(3, 3)]
193
+ });
194
+ w.instance().close();
195
+ expect(onClosePolygon).toHaveBeenCalled();
196
+ });
197
+ });
198
+ describe('clickPoint', function () {
199
+ var onClick = jest.fn();
200
+ var onClosePolygon = jest.fn();
201
+ beforeEach(function () {
202
+ onClosePolygon.mockClear();
203
+ onClick.mockClear();
204
+ });
205
+
206
+ var assertCallback = function assertCallback(isToolActive, closed, index, mock) {
207
+ it('calls onClosePolygon', function () {
208
+ var w = wrapper({
209
+ points: [(0, _utils.xy)(1, 1), (0, _utils.xy)(2, 2), (0, _utils.xy)(3, 3)],
210
+ onClosePolygon: onClosePolygon,
211
+ onClick: onClick,
212
+ isToolActive: isToolActive,
213
+ closed: closed
214
+ });
215
+ w.instance().clickPoint((0, _utils.xy)(1, 1, 0), index, {});
216
+ expect(mock).toHaveBeenCalled();
217
+ });
218
+ };
219
+
220
+ assertCallback(true, false, 0, onClosePolygon);
221
+ assertCallback(true, false, 1, onClick);
222
+ assertCallback(false, false, 0, onClick);
223
+ assertCallback(true, true, 0, onClick);
224
+ it('adds "label" property to a point', function () {
225
+ var onChangeProps = jest.fn();
226
+ var w = wrapperWithLabels({
227
+ labelModeEnabled: true,
228
+ onChangeProps: onChangeProps,
229
+ points: [(0, _utils.xy)(0, 0, 0), (0, _utils.xy)(2, 2, 1), (0, _utils.xy)(0, 2, 2)]
230
+ });
231
+ w.instance().clickPoint((0, _utils.xy)(0, 0, 0), 0, {});
232
+ expect(onChangeProps).toHaveBeenCalledWith([xyLabel(0, 0, 0, ''), (0, _utils.xy)(2, 2, 1), (0, _utils.xy)(0, 2, 2)]);
233
+ });
234
+ it('adds "label" property to a point when limit labeling', function () {
235
+ var onChangeProps = jest.fn();
236
+ var w = wrapperWithLabels({
237
+ labelModeEnabled: true,
238
+ onChangeProps: onChangeProps,
239
+ limitLabeling: true
240
+ });
241
+ w.instance().clickPoint((0, _utils.xy)(0, 0, 0), 0, {});
242
+ expect(onChangeProps).toHaveBeenCalledTimes(0);
243
+ });
244
+ it('if point already has label, keeps that value', function () {
245
+ var onChangeProps = jest.fn();
246
+ var w = wrapperWithLabels({
247
+ labelModeEnabled: true,
248
+ onChangeProps: onChangeProps
249
+ });
250
+ w.instance().clickPoint(points[0], 0, {});
251
+ expect(onChangeProps).toHaveBeenCalledWith(points);
252
+ });
253
+ });
254
+ });
255
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL19fdGVzdHNfXy9jb21wb25lbnQudGVzdC5qc3giXSwibmFtZXMiOlsieHlMYWJlbCIsIngiLCJ5IiwiaW5kZXgiLCJsYWJlbCIsImRlc2NyaWJlIiwiZGVmYXVsdFBvaW50cyIsImFzc2VydEJ1aWxkTGluZXMiLCJwb2ludHMiLCJjbG9zZWQiLCJleHBlY3RlZCIsIml0IiwicmVzdWx0IiwiZXhwZWN0IiwidG9NYXRjaE9iamVjdCIsImZyb20iLCJ0byIsInRvRXF1YWwiLCJ3Iiwib25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJvbkNoYW5nZVByb3BzIiwid3JhcHBlciIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsIm9uQ2xvc2VQb2x5Z29uIiwiZ3JhcGhQcm9wcyIsInByb3BzIiwibGFiZWxOb2RlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwid3JhcHBlcldpdGhMYWJlbHMiLCJ0b01hdGNoU25hcHNob3QiLCJpbnN0YW5jZSIsImRyYWdQb2ludCIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiZHJhZ0xpbmUiLCJleGlzdGluZyIsIm5leHQiLCJkcmFnUG9seSIsImxhYmVsQ2hhbmdlIiwidG9CZUNhbGxlZFdpdGgiLCJjbG9zZSIsInRvSGF2ZUJlZW5DYWxsZWQiLCJvbkNsaWNrIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsImFzc2VydENhbGxiYWNrIiwiaXNUb29sQWN0aXZlIiwibW9jayIsImNsaWNrUG9pbnQiLCJsYWJlbE1vZGVFbmFibGVkIiwibGltaXRMYWJlbGluZyIsInRvSGF2ZUJlZW5DYWxsZWRUaW1lcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7OztBQUVBLElBQU1BLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQUNDLENBQUQsRUFBSUMsQ0FBSixFQUFPQyxLQUFQLEVBQWNDLEtBQWQ7QUFBQSx5Q0FDWCxlQUFHSCxDQUFILEVBQU1DLENBQU4sRUFBU0MsS0FBVCxDQURXO0FBRWRDLElBQUFBLEtBQUssRUFBTEE7QUFGYztBQUFBLENBQWhCOztBQUtBQyxRQUFRLENBQUMsWUFBRCxFQUFlLFlBQU07QUFDM0IsTUFBTUMsYUFBYSxHQUFHLENBQUMsZUFBRyxDQUFILEVBQU0sQ0FBTixDQUFELEVBQVcsZUFBRyxDQUFILEVBQU0sQ0FBTixDQUFYLEVBQXFCLGVBQUcsQ0FBSCxFQUFNLENBQU4sQ0FBckIsQ0FBdEI7O0FBRUEsTUFBTUMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFDQyxNQUFELEVBQVNDLE1BQVQsRUFBaUJDLFFBQWpCLEVBQThCO0FBQ3JEQyxJQUFBQSxFQUFFLHVDQUFnQ0gsTUFBaEMsZ0JBQTRDRSxRQUE1QyxHQUF3RCxZQUFNO0FBQzlELFVBQU1FLE1BQU0sR0FBRywyQkFBV0osTUFBWCxDQUFmO0FBQ0FLLE1BQUFBLE1BQU0sQ0FBQ0QsTUFBRCxDQUFOLENBQWVFLGFBQWYsQ0FBNkIsQ0FDM0I7QUFBRUMsUUFBQUEsSUFBSSxFQUFFLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQVI7QUFBcUJDLFFBQUFBLEVBQUUsRUFBRSxlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVDtBQUF6QixPQUQyQixFQUUzQjtBQUFFRCxRQUFBQSxJQUFJLEVBQUUsZUFBRyxDQUFILEVBQU0sQ0FBTixFQUFTLENBQVQsQ0FBUjtBQUFxQkMsUUFBQUEsRUFBRSxFQUFFLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFUO0FBQXpCLE9BRjJCLENBQTdCO0FBSUQsS0FOQyxDQUFGO0FBT0QsR0FSRDs7QUFVQVQsRUFBQUEsZ0JBQWdCLENBQUNELGFBQUQsRUFBZ0IsSUFBaEIsRUFBc0IsRUFBdEIsQ0FBaEI7QUFDRCxDQWRPLENBQVI7QUFnQkFELFFBQVEsQ0FBQyxNQUFELEVBQVMsWUFBTTtBQUNyQk0sRUFBQUEsRUFBRSxDQUFDLGFBQUQsRUFBZ0IsWUFBTTtBQUN0QixRQUFNQyxNQUFNLEdBQUcscUJBQUssQ0FBQyxlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVCxDQUFELEVBQWMsZUFBRyxDQUFILEVBQU0sQ0FBTixFQUFTLENBQVQsQ0FBZCxFQUEyQixlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVCxDQUEzQixDQUFMLEVBQThDLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQTlDLEVBQTJELGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQTNELENBQWY7QUFDQUMsSUFBQUEsTUFBTSxDQUFDRCxNQUFELENBQU4sQ0FBZUssT0FBZixDQUF1QixDQUFDLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQUQsRUFBYyxlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVCxDQUFkLEVBQTJCLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQTNCLENBQXZCO0FBQ0QsR0FIQyxDQUFGO0FBSUQsQ0FMTyxDQUFSO0FBT0FaLFFBQVEsQ0FBQyxrQkFBRCxFQUFxQixZQUFNO0FBQ2pDLE1BQUlhLENBQUo7QUFDQSxNQUFJQyxRQUFRLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUFmO0FBQ0EsTUFBSUMsYUFBYSxHQUFHRixJQUFJLENBQUNDLEVBQUwsRUFBcEI7O0FBQ0EsTUFBTUUsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ0MsTUFBRCxFQUFZO0FBQzFCLFFBQU1DLFFBQVEsR0FBRztBQUNmQyxNQUFBQSxPQUFPLEVBQUUsRUFETTtBQUVmQyxNQUFBQSxTQUFTLEVBQUUsV0FGSTtBQUdmUixNQUFBQSxRQUFRLEVBQVJBLFFBSGU7QUFJZkcsTUFBQUEsYUFBYSxFQUFiQSxhQUplO0FBS2ZNLE1BQUFBLGNBQWMsRUFBRVIsSUFBSSxDQUFDQyxFQUFMLEVBTEQ7QUFNZlEsTUFBQUEsVUFBVSxFQUFFLHdCQU5HO0FBT2ZyQixNQUFBQSxNQUFNLEVBQUU7QUFQTyxLQUFqQjs7QUFTQSxRQUFNc0IsS0FBSyxtQ0FBUUwsUUFBUixHQUFxQkQsTUFBckIsQ0FBWDs7QUFFQSxXQUFPLG1DQUFRLGdDQUFDLDJCQUFELEVBQXNCTSxLQUF0QixDQUFSLENBQVA7QUFDRCxHQWJELENBSmlDLENBbUJqQzs7O0FBQ0EsTUFBTUMsU0FBUyxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsZUFBdkIsQ0FBbEI7QUFDQSxNQUFNekIsTUFBTSxHQUFHLENBQUNSLE9BQU8sQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxHQUFWLENBQVIsRUFBd0JBLE9BQU8sQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxHQUFWLENBQS9CLEVBQStDQSxPQUFPLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsR0FBVixDQUF0RCxDQUFmOztBQUNBLE1BQU1rQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLENBQUNWLE1BQUQ7QUFBQSxXQUN4QkQsT0FBTztBQUNMUSxNQUFBQSxTQUFTLEVBQUVBLFNBRE47QUFFTHZCLE1BQUFBLE1BQU0sRUFBRUE7QUFGSCxPQUdGZ0IsTUFIRSxFQURpQjtBQUFBLEdBQTFCOztBQU9BbkIsRUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCTSxJQUFBQSxFQUFFLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDbEJPLE1BQUFBLENBQUMsR0FBR0ssT0FBTyxFQUFYO0FBQ0FWLE1BQUFBLE1BQU0sQ0FBQ0ssQ0FBRCxDQUFOLENBQVVpQixlQUFWO0FBQ0QsS0FIQyxDQUFGO0FBS0F4QixJQUFBQSxFQUFFLENBQUMscUJBQUQsRUFBd0IsWUFBTTtBQUM5Qk8sTUFBQUEsQ0FBQyxHQUFHZ0IsaUJBQWlCLEVBQXJCO0FBQ0FyQixNQUFBQSxNQUFNLENBQUNLLENBQUQsQ0FBTixDQUFVaUIsZUFBVjtBQUNELEtBSEMsQ0FBRjtBQUlELEdBVk8sQ0FBUjtBQVlBOUIsRUFBQUEsUUFBUSxDQUFDLE9BQUQsRUFBVSxZQUFNO0FBQ3RCQSxJQUFBQSxRQUFRLENBQUMsV0FBRCxFQUFjLFlBQU07QUFDMUJNLE1BQUFBLEVBQUUsQ0FBQyxnQkFBRCxFQUFtQixZQUFNO0FBQ3pCUSxRQUFBQSxRQUFRLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUFYO0FBQ0FILFFBQUFBLENBQUMsR0FBR0ssT0FBTyxDQUFDO0FBQUVmLFVBQUFBLE1BQU0sRUFBRSxDQUFDLGVBQUcsQ0FBSCxFQUFNLENBQU4sQ0FBRCxDQUFWO0FBQXNCVyxVQUFBQSxRQUFRLEVBQVJBO0FBQXRCLFNBQUQsQ0FBWDtBQUNBRCxRQUFBQSxDQUFDLENBQUNrQixRQUFGLEdBQWFDLFNBQWIsQ0FBdUIsQ0FBdkIsRUFBMEIsZUFBRyxDQUFILEVBQU0sQ0FBTixDQUExQixFQUFvQyxlQUFHLENBQUgsRUFBTSxDQUFOLENBQXBDO0FBQ0F4QixRQUFBQSxNQUFNLENBQUNNLFFBQUQsQ0FBTixDQUFpQm1CLG9CQUFqQixDQUFzQyxDQUFDLGVBQUcsQ0FBSCxFQUFNLENBQU4sQ0FBRCxDQUF0QztBQUNELE9BTEMsQ0FBRjtBQU9BM0IsTUFBQUEsRUFBRSxDQUFDLGtEQUFELEVBQXFELFlBQU07QUFDM0RRLFFBQUFBLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxFQUFMLEVBQVg7QUFDQUgsUUFBQUEsQ0FBQyxHQUFHZ0IsaUJBQWlCLENBQUNmLFFBQUQsQ0FBckI7QUFFQUQsUUFBQUEsQ0FBQyxDQUFDa0IsUUFBRixHQUFhQyxTQUFiLENBQXVCLENBQXZCLEVBQTBCLGVBQUcsQ0FBSCxFQUFNLENBQU4sQ0FBMUIsRUFBb0MsZUFBRyxDQUFILEVBQU0sQ0FBTixDQUFwQztBQUNBeEIsUUFBQUEsTUFBTSxDQUFDTSxRQUFELENBQU4sQ0FBaUJtQixvQkFBakIsQ0FBc0MsQ0FBQztBQUFFckMsVUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsVUFBQUEsQ0FBQyxFQUFFLENBQVg7QUFBY0UsVUFBQUEsS0FBSyxFQUFFO0FBQXJCLFNBQUQsRUFBNkJJLE1BQU0sQ0FBQyxDQUFELENBQW5DLEVBQXdDQSxNQUFNLENBQUMsQ0FBRCxDQUE5QyxDQUF0QztBQUNELE9BTkMsQ0FBRjtBQU9ELEtBZk8sQ0FBUjtBQWlCQUgsSUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCTSxNQUFBQSxFQUFFLENBQUMsZ0JBQUQsRUFBbUIsWUFBTTtBQUN6Qk8sUUFBQUEsQ0FBQyxHQUFHSyxPQUFPLENBQUM7QUFBRWYsVUFBQUEsTUFBTSxFQUFFLENBQUMsZUFBRyxDQUFILEVBQU0sQ0FBTixFQUFTLENBQVQsQ0FBRCxFQUFjLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQWQsQ0FBVjtBQUFzQ1csVUFBQUEsUUFBUSxFQUFSQTtBQUF0QyxTQUFELENBQVg7QUFDQUQsUUFBQUEsQ0FBQyxDQUFDa0IsUUFBRixHQUFhRyxRQUFiLENBQXNCO0FBQUV4QixVQUFBQSxJQUFJLEVBQUUsZUFBRyxDQUFILEVBQU0sQ0FBTixFQUFTLENBQVQsQ0FBUjtBQUFxQkMsVUFBQUEsRUFBRSxFQUFFLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFUO0FBQXpCLFNBQXRCLEVBQThEO0FBQUVELFVBQUFBLElBQUksRUFBRSxlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVCxDQUFSO0FBQXFCQyxVQUFBQSxFQUFFLEVBQUUsZUFBRyxDQUFILEVBQU0sQ0FBTixFQUFTLENBQVQ7QUFBekIsU0FBOUQ7QUFDQUgsUUFBQUEsTUFBTSxDQUFDTSxRQUFELENBQU4sQ0FBaUJtQixvQkFBakIsQ0FBc0MsQ0FBQyxlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVCxDQUFELEVBQWMsZUFBRyxDQUFILEVBQU0sQ0FBTixFQUFTLENBQVQsQ0FBZCxDQUF0QztBQUNELE9BSkMsQ0FBRjtBQU1BM0IsTUFBQUEsRUFBRSxDQUFDLHdEQUFELEVBQTJELFlBQU07QUFDakVRLFFBQUFBLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxFQUFMLEVBQVg7QUFDQUgsUUFBQUEsQ0FBQyxHQUFHZ0IsaUJBQWlCLENBQUNmLFFBQUQsQ0FBckI7QUFFQUQsUUFBQUEsQ0FBQyxDQUFDa0IsUUFBRixHQUFhRyxRQUFiLENBQ0U7QUFBRXhCLFVBQUFBLElBQUksRUFBRVAsTUFBTSxDQUFDLENBQUQsQ0FBZDtBQUFtQlEsVUFBQUEsRUFBRSxFQUFFUixNQUFNLENBQUMsQ0FBRDtBQUE3QixTQURGLEVBRUU7QUFDRU8sVUFBQUEsSUFBSSxFQUFFLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBRFI7QUFFRUMsVUFBQUEsRUFBRSxFQUFFLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFUO0FBRk4sU0FGRjtBQU9BSCxRQUFBQSxNQUFNLENBQUNNLFFBQUQsQ0FBTixDQUFpQm1CLG9CQUFqQixDQUFzQyxDQUFDdEMsT0FBTyxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLEdBQVYsQ0FBUixFQUF3QkEsT0FBTyxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLEdBQVYsQ0FBL0IsRUFBK0NRLE1BQU0sQ0FBQyxDQUFELENBQXJELENBQXRDO0FBQ0QsT0FaQyxDQUFGO0FBYUQsS0FwQk8sQ0FBUjtBQXNCQUgsSUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCTSxNQUFBQSxFQUFFLENBQUMsZ0JBQUQsRUFBbUIsWUFBTTtBQUN6Qk8sUUFBQUEsQ0FBQyxHQUFHSyxPQUFPLENBQUM7QUFBRUosVUFBQUEsUUFBUSxFQUFSQTtBQUFGLFNBQUQsQ0FBWDtBQUNBLFlBQU1xQixRQUFRLEdBQUcsQ0FBQyxlQUFHLENBQUgsRUFBTSxDQUFOLENBQUQsQ0FBakI7QUFDQSxZQUFNQyxJQUFJLEdBQUcsQ0FBQyxlQUFHLENBQUgsRUFBTSxDQUFOLENBQUQsQ0FBYjtBQUNBdkIsUUFBQUEsQ0FBQyxDQUFDa0IsUUFBRixHQUFhTSxRQUFiLENBQXNCRixRQUF0QixFQUFnQ0MsSUFBaEM7QUFDQTVCLFFBQUFBLE1BQU0sQ0FBQ00sUUFBRCxDQUFOLENBQWlCbUIsb0JBQWpCLENBQXNDLENBQUMsZUFBRyxDQUFILEVBQU0sQ0FBTixDQUFELENBQXRDO0FBQ0QsT0FOQyxDQUFGO0FBUUEzQixNQUFBQSxFQUFFLENBQUMsdURBQUQsRUFBMEQsWUFBTTtBQUNoRVEsUUFBQUEsUUFBUSxHQUFHQyxJQUFJLENBQUNDLEVBQUwsRUFBWDtBQUNBSCxRQUFBQSxDQUFDLEdBQUdnQixpQkFBaUIsQ0FBQ2YsUUFBRCxDQUFyQjtBQUVBRCxRQUFBQSxDQUFDLENBQUNrQixRQUFGLEdBQWFNLFFBQWIsQ0FBc0JsQyxNQUF0QixFQUE4QixDQUFDLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQUQsRUFBYyxlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVCxDQUFkLEVBQTJCLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQTNCLENBQTlCO0FBQ0FLLFFBQUFBLE1BQU0sQ0FBQ00sUUFBRCxDQUFOLENBQWlCbUIsb0JBQWpCLENBQXNDLENBQUN0QyxPQUFPLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsR0FBVixDQUFSLEVBQXdCQSxPQUFPLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsR0FBVixDQUEvQixFQUErQ0EsT0FBTyxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLEdBQVYsQ0FBdEQsQ0FBdEM7QUFDRCxPQU5DLENBQUY7QUFPRCxLQWhCTyxDQUFSO0FBa0JBSyxJQUFBQSxRQUFRLENBQUMsYUFBRCxFQUFnQixZQUFNO0FBQzVCTSxNQUFBQSxFQUFFLENBQUMsb0NBQUQsRUFBdUMsWUFBTTtBQUM3Q08sUUFBQUEsQ0FBQyxHQUFHZ0IsaUJBQWlCLEVBQXJCO0FBRUFoQixRQUFBQSxDQUFDLENBQUNrQixRQUFGLEdBQWFPLFdBQWIsaUNBQThCbkMsTUFBTSxDQUFDLENBQUQsQ0FBcEM7QUFBeUNKLFVBQUFBLEtBQUssRUFBRTtBQUFoRCxZQUE2RCxDQUE3RDtBQUNBUyxRQUFBQSxNQUFNLENBQUNTLGFBQUQsQ0FBTixDQUFzQnNCLGNBQXRCLENBQXFDLGlDQUFNcEMsTUFBTSxDQUFDLENBQUQsQ0FBWjtBQUFpQkosVUFBQUEsS0FBSyxFQUFFO0FBQXhCLFlBQXFDSSxNQUFNLENBQUMsQ0FBRCxDQUEzQyxFQUFnREEsTUFBTSxDQUFDLENBQUQsQ0FBdEQsQ0FBckM7QUFFQVUsUUFBQUEsQ0FBQyxDQUFDa0IsUUFBRixHQUFhTyxXQUFiLGlDQUE4Qm5DLE1BQU0sQ0FBQyxDQUFELENBQXBDO0FBQXlDSixVQUFBQSxLQUFLLEVBQUU7QUFBaEQsWUFBNkQsQ0FBN0Q7QUFDQVMsUUFBQUEsTUFBTSxDQUFDUyxhQUFELENBQU4sQ0FBc0JzQixjQUF0QixDQUFxQyxDQUFDcEMsTUFBTSxDQUFDLENBQUQsQ0FBUCxrQ0FBaUJBLE1BQU0sQ0FBQyxDQUFELENBQXZCO0FBQTRCSixVQUFBQSxLQUFLLEVBQUU7QUFBbkMsWUFBZ0RJLE1BQU0sQ0FBQyxDQUFELENBQXRELENBQXJDO0FBQ0QsT0FSQyxDQUFGO0FBVUFHLE1BQUFBLEVBQUUsQ0FBQyxnREFBRCxFQUFtRCxZQUFNO0FBQ3pETyxRQUFBQSxDQUFDLEdBQUdnQixpQkFBaUIsRUFBckI7QUFFQWhCLFFBQUFBLENBQUMsQ0FBQ2tCLFFBQUYsR0FBYU8sV0FBYixpQ0FBOEJuQyxNQUFNLENBQUMsQ0FBRCxDQUFwQztBQUF5Q0osVUFBQUEsS0FBSyxFQUFFO0FBQWhELFlBQXNELENBQXREO0FBQ0FTLFFBQUFBLE1BQU0sQ0FBQ1MsYUFBRCxDQUFOLENBQXNCc0IsY0FBdEIsQ0FBcUMsQ0FBQyxlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVCxDQUFELEVBQWNwQyxNQUFNLENBQUMsQ0FBRCxDQUFwQixFQUF5QkEsTUFBTSxDQUFDLENBQUQsQ0FBL0IsQ0FBckM7QUFFQVUsUUFBQUEsQ0FBQyxDQUFDa0IsUUFBRixHQUFhTyxXQUFiLGlDQUE4Qm5DLE1BQU0sQ0FBQyxDQUFELENBQXBDO0FBQXlDSixVQUFBQSxLQUFLLEVBQUU7QUFBaEQsWUFBc0QsQ0FBdEQ7QUFDQVMsUUFBQUEsTUFBTSxDQUFDUyxhQUFELENBQU4sQ0FBc0JzQixjQUF0QixDQUFxQyxDQUFDcEMsTUFBTSxDQUFDLENBQUQsQ0FBUCxFQUFZLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQVosRUFBeUJBLE1BQU0sQ0FBQyxDQUFELENBQS9CLENBQXJDO0FBQ0QsT0FSQyxDQUFGO0FBU0QsS0FwQk8sQ0FBUjtBQXFCRCxHQS9FTyxDQUFSO0FBaUZBSCxFQUFBQSxRQUFRLENBQUMsT0FBRCxFQUFVLFlBQU07QUFDdEJNLElBQUFBLEVBQUUsQ0FBQyxzQkFBRCxFQUF5QixZQUFNO0FBQy9CLFVBQU1pQixjQUFjLEdBQUdSLElBQUksQ0FBQ0MsRUFBTCxFQUF2QjtBQUNBSCxNQUFBQSxDQUFDLEdBQUdLLE9BQU8sQ0FBQztBQUFFSyxRQUFBQSxjQUFjLEVBQWRBLGNBQUY7QUFBa0JwQixRQUFBQSxNQUFNLEVBQUUsQ0FBQyxlQUFHLENBQUgsRUFBTSxDQUFOLENBQUQsRUFBVyxlQUFHLENBQUgsRUFBTSxDQUFOLENBQVgsRUFBcUIsZUFBRyxDQUFILEVBQU0sQ0FBTixDQUFyQjtBQUExQixPQUFELENBQVg7QUFDQVUsTUFBQUEsQ0FBQyxDQUFDa0IsUUFBRixHQUFhUyxLQUFiO0FBQ0FoQyxNQUFBQSxNQUFNLENBQUNlLGNBQUQsQ0FBTixDQUF1QmtCLGdCQUF2QjtBQUNELEtBTEMsQ0FBRjtBQU1ELEdBUE8sQ0FBUjtBQVNBekMsRUFBQUEsUUFBUSxDQUFDLFlBQUQsRUFBZSxZQUFNO0FBQzNCLFFBQUkwQyxPQUFPLEdBQUczQixJQUFJLENBQUNDLEVBQUwsRUFBZDtBQUNBLFFBQUlPLGNBQWMsR0FBR1IsSUFBSSxDQUFDQyxFQUFMLEVBQXJCO0FBQ0EyQixJQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmcEIsTUFBQUEsY0FBYyxDQUFDcUIsU0FBZjtBQUNBRixNQUFBQSxPQUFPLENBQUNFLFNBQVI7QUFDRCxLQUhTLENBQVY7O0FBS0EsUUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFDQyxZQUFELEVBQWUxQyxNQUFmLEVBQXVCTixLQUF2QixFQUE4QmlELElBQTlCLEVBQXVDO0FBQzVEekMsTUFBQUEsRUFBRSxDQUFDLHNCQUFELEVBQXlCLFlBQU07QUFDL0IsWUFBTU8sQ0FBQyxHQUFHSyxPQUFPLENBQUM7QUFDaEJmLFVBQUFBLE1BQU0sRUFBRSxDQUFDLGVBQUcsQ0FBSCxFQUFNLENBQU4sQ0FBRCxFQUFXLGVBQUcsQ0FBSCxFQUFNLENBQU4sQ0FBWCxFQUFxQixlQUFHLENBQUgsRUFBTSxDQUFOLENBQXJCLENBRFE7QUFFaEJvQixVQUFBQSxjQUFjLEVBQWRBLGNBRmdCO0FBR2hCbUIsVUFBQUEsT0FBTyxFQUFQQSxPQUhnQjtBQUloQkksVUFBQUEsWUFBWSxFQUFaQSxZQUpnQjtBQUtoQjFDLFVBQUFBLE1BQU0sRUFBTkE7QUFMZ0IsU0FBRCxDQUFqQjtBQVFBUyxRQUFBQSxDQUFDLENBQUNrQixRQUFGLEdBQWFpQixVQUFiLENBQXdCLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQXhCLEVBQXFDbEQsS0FBckMsRUFBNEMsRUFBNUM7QUFDQVUsUUFBQUEsTUFBTSxDQUFDdUMsSUFBRCxDQUFOLENBQWFOLGdCQUFiO0FBQ0QsT0FYQyxDQUFGO0FBWUQsS0FiRDs7QUFlQUksSUFBQUEsY0FBYyxDQUFDLElBQUQsRUFBTyxLQUFQLEVBQWMsQ0FBZCxFQUFpQnRCLGNBQWpCLENBQWQ7QUFDQXNCLElBQUFBLGNBQWMsQ0FBQyxJQUFELEVBQU8sS0FBUCxFQUFjLENBQWQsRUFBaUJILE9BQWpCLENBQWQ7QUFDQUcsSUFBQUEsY0FBYyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsQ0FBZixFQUFrQkgsT0FBbEIsQ0FBZDtBQUNBRyxJQUFBQSxjQUFjLENBQUMsSUFBRCxFQUFPLElBQVAsRUFBYSxDQUFiLEVBQWdCSCxPQUFoQixDQUFkO0FBRUFwQyxJQUFBQSxFQUFFLENBQUMsa0NBQUQsRUFBcUMsWUFBTTtBQUMzQyxVQUFNVyxhQUFhLEdBQUdGLElBQUksQ0FBQ0MsRUFBTCxFQUF0QjtBQUNBLFVBQU1ILENBQUMsR0FBR2dCLGlCQUFpQixDQUFDO0FBQzFCb0IsUUFBQUEsZ0JBQWdCLEVBQUUsSUFEUTtBQUUxQmhDLFFBQUFBLGFBQWEsRUFBYkEsYUFGMEI7QUFHMUJkLFFBQUFBLE1BQU0sRUFBRSxDQUFDLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQUQsRUFBYyxlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVCxDQUFkLEVBQTJCLGVBQUcsQ0FBSCxFQUFNLENBQU4sRUFBUyxDQUFULENBQTNCO0FBSGtCLE9BQUQsQ0FBM0I7QUFNQVUsTUFBQUEsQ0FBQyxDQUFDa0IsUUFBRixHQUFhaUIsVUFBYixDQUF3QixlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVCxDQUF4QixFQUFxQyxDQUFyQyxFQUF3QyxFQUF4QztBQUNBeEMsTUFBQUEsTUFBTSxDQUFDUyxhQUFELENBQU4sQ0FBc0JnQixvQkFBdEIsQ0FBMkMsQ0FBQ3RDLE9BQU8sQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxFQUFWLENBQVIsRUFBdUIsZUFBRyxDQUFILEVBQU0sQ0FBTixFQUFTLENBQVQsQ0FBdkIsRUFBb0MsZUFBRyxDQUFILEVBQU0sQ0FBTixFQUFTLENBQVQsQ0FBcEMsQ0FBM0M7QUFDRCxLQVZDLENBQUY7QUFZQVcsSUFBQUEsRUFBRSxDQUFDLHNEQUFELEVBQXlELFlBQU07QUFDL0QsVUFBTVcsYUFBYSxHQUFHRixJQUFJLENBQUNDLEVBQUwsRUFBdEI7QUFDQSxVQUFNSCxDQUFDLEdBQUdnQixpQkFBaUIsQ0FBQztBQUMxQm9CLFFBQUFBLGdCQUFnQixFQUFFLElBRFE7QUFFMUJoQyxRQUFBQSxhQUFhLEVBQWJBLGFBRjBCO0FBRzFCaUMsUUFBQUEsYUFBYSxFQUFFO0FBSFcsT0FBRCxDQUEzQjtBQU1BckMsTUFBQUEsQ0FBQyxDQUFDa0IsUUFBRixHQUFhaUIsVUFBYixDQUF3QixlQUFHLENBQUgsRUFBTSxDQUFOLEVBQVMsQ0FBVCxDQUF4QixFQUFxQyxDQUFyQyxFQUF3QyxFQUF4QztBQUNBeEMsTUFBQUEsTUFBTSxDQUFDUyxhQUFELENBQU4sQ0FBc0JrQyxxQkFBdEIsQ0FBNEMsQ0FBNUM7QUFDRCxLQVZDLENBQUY7QUFZQTdDLElBQUFBLEVBQUUsQ0FBQyw4Q0FBRCxFQUFpRCxZQUFNO0FBQ3ZELFVBQU1XLGFBQWEsR0FBR0YsSUFBSSxDQUFDQyxFQUFMLEVBQXRCO0FBQ0EsVUFBTUgsQ0FBQyxHQUFHZ0IsaUJBQWlCLENBQUM7QUFBRW9CLFFBQUFBLGdCQUFnQixFQUFFLElBQXBCO0FBQTBCaEMsUUFBQUEsYUFBYSxFQUFiQTtBQUExQixPQUFELENBQTNCO0FBRUFKLE1BQUFBLENBQUMsQ0FBQ2tCLFFBQUYsR0FBYWlCLFVBQWIsQ0FBd0I3QyxNQUFNLENBQUMsQ0FBRCxDQUE5QixFQUFtQyxDQUFuQyxFQUFzQyxFQUF0QztBQUNBSyxNQUFBQSxNQUFNLENBQUNTLGFBQUQsQ0FBTixDQUFzQmdCLG9CQUF0QixDQUEyQzlCLE1BQTNDO0FBQ0QsS0FOQyxDQUFGO0FBT0QsR0EzRE8sQ0FBUjtBQTRERCxDQS9MTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ3JhcGhQcm9wcywgeHkgfSBmcm9tICcuLi8uLi8uLi9fX3Rlc3RzX18vdXRpbHMnO1xuXG5pbXBvcnQgeyBSYXdCYXNlQ29tcG9uZW50LCBidWlsZExpbmVzLCBzd2FwIH0gZnJvbSAnLi4vY29tcG9uZW50JztcblxuY29uc3QgeHlMYWJlbCA9ICh4LCB5LCBpbmRleCwgbGFiZWwpID0+ICh7XG4gIC4uLnh5KHgsIHksIGluZGV4KSxcbiAgbGFiZWwsXG59KTtcblxuZGVzY3JpYmUoJ2J1aWxkTGluZXMnLCAoKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRQb2ludHMgPSBbeHkoMCwgMCksIHh5KDEsIDEpLCB4eSgxLCAwKV07XG5cbiAgY29uc3QgYXNzZXJ0QnVpbGRMaW5lcyA9IChwb2ludHMsIGNsb3NlZCwgZXhwZWN0ZWQpID0+IHtcbiAgICBpdChgYnVpbGRzIHBvaW50cyBhbmQgbGluZXMgZm9yICR7cG9pbnRzfSA9ICR7ZXhwZWN0ZWR9YCwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYnVpbGRMaW5lcyhwb2ludHMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaE9iamVjdChbXG4gICAgICAgIHsgZnJvbTogeHkoMCwgMCwgMCksIHRvOiB4eSgxLCAxLCAxKSB9LFxuICAgICAgICB7IGZyb206IHh5KDEsIDEsIDEpLCB0bzogeHkoMSwgMCwgMikgfSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9O1xuXG4gIGFzc2VydEJ1aWxkTGluZXMoZGVmYXVsdFBvaW50cywgdHJ1ZSwgW10pO1xufSk7XG5cbmRlc2NyaWJlKCdzd2FwJywgKCkgPT4ge1xuICBpdCgnc3dhcHMgcGFpcnMnLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gc3dhcChbeHkoMCwgMCwgMCksIHh5KDEsIDEsIDEpLCB4eSgyLCAyLCAyKV0sIHh5KDAsIDAsIDApLCB4eSgzLCAzLCAwKSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbeHkoMywgMywgMCksIHh5KDEsIDEsIDEpLCB4eSgyLCAyLCAyKV0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnUmF3QmFzZUNvbXBvbmVudCcsICgpID0+IHtcbiAgbGV0IHc7XG4gIGxldCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgbGV0IG9uQ2hhbmdlUHJvcHMgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ2hhbmdlUHJvcHMsXG4gICAgICBvbkNsb3NlUG9seWdvbjogamVzdC5mbigpLFxuICAgICAgZ3JhcGhQcm9wczogZ3JhcGhQcm9wcygpLFxuICAgICAgcG9pbnRzOiBbXSxcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG5cbiAgICByZXR1cm4gc2hhbGxvdyg8UmF3QmFzZUNvbXBvbmVudCB7Li4ucHJvcHN9IC8+KTtcbiAgfTtcblxuICAvLyB1c2VkIHRvIHRlc3QgaXRlbXMgdGhhdCBoYXZlIGxhYmVscyBhdHRhY2hlZCB0byBwb2ludHNcbiAgY29uc3QgbGFiZWxOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZm9yZWlnbk9iamVjdCcpO1xuICBjb25zdCBwb2ludHMgPSBbeHlMYWJlbCgwLCAwLCAwLCAnQScpLCB4eUxhYmVsKDIsIDIsIDEsICdCJyksIHh5TGFiZWwoMCwgMiwgMiwgJ0MnKV07XG4gIGNvbnN0IHdyYXBwZXJXaXRoTGFiZWxzID0gKGV4dHJhcykgPT5cbiAgICB3cmFwcGVyKHtcbiAgICAgIGxhYmVsTm9kZTogbGFiZWxOb2RlLFxuICAgICAgcG9pbnRzOiBwb2ludHMsXG4gICAgICAuLi5leHRyYXMsXG4gICAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoKTtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggbGFiZWxzJywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXJXaXRoTGFiZWxzKCk7XG4gICAgICBleHBlY3QodykudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBkZXNjcmliZSgnZHJhZ1BvaW50JywgKCkgPT4ge1xuICAgICAgaXQoJ2NhbGxzIG9uQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgICBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgICAgICAgdyA9IHdyYXBwZXIoeyBwb2ludHM6IFt4eSgxLCAxKV0sIG9uQ2hhbmdlIH0pO1xuICAgICAgICB3Lmluc3RhbmNlKCkuZHJhZ1BvaW50KDAsIHh5KDEsIDEpLCB4eSgyLCAyKSk7XG4gICAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW3h5KDIsIDIpXSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIGtlZXBpbmcgbGFiZWwgcHJvcGVydHkgZnJvbSBwb2ludCcsICgpID0+IHtcbiAgICAgICAgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gICAgICAgIHcgPSB3cmFwcGVyV2l0aExhYmVscyhvbkNoYW5nZSk7XG5cbiAgICAgICAgdy5pbnN0YW5jZSgpLmRyYWdQb2ludCgwLCB4eSgwLCAwKSwgeHkoMCwgMSkpO1xuICAgICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFt7IHg6IDAsIHk6IDEsIGxhYmVsOiAnQScgfSwgcG9pbnRzWzFdLCBwb2ludHNbMl1dKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2RyYWdMaW5lJywgKCkgPT4ge1xuICAgICAgaXQoJ2NhbGxzIG9uQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgICB3ID0gd3JhcHBlcih7IHBvaW50czogW3h5KDEsIDEsIDApLCB4eSgyLCAyLCAxKV0sIG9uQ2hhbmdlIH0pO1xuICAgICAgICB3Lmluc3RhbmNlKCkuZHJhZ0xpbmUoeyBmcm9tOiB4eSgxLCAxLCAwKSwgdG86IHh5KDIsIDIsIDEpIH0sIHsgZnJvbTogeHkoMiwgMiwgMCksIHRvOiB4eSg0LCA0LCAxKSB9KTtcbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChbeHkoMiwgMiwgMCksIHh5KDQsIDQsIDEpXSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIGtlZXBpbmcgbGFiZWwgcHJvcGVydHkgZnJvbSBib3RoIHBvaW50cycsICgpID0+IHtcbiAgICAgICAgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gICAgICAgIHcgPSB3cmFwcGVyV2l0aExhYmVscyhvbkNoYW5nZSk7XG5cbiAgICAgICAgdy5pbnN0YW5jZSgpLmRyYWdMaW5lKFxuICAgICAgICAgIHsgZnJvbTogcG9pbnRzWzBdLCB0bzogcG9pbnRzWzFdIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJvbTogeHkoMCwgMSwgMCksXG4gICAgICAgICAgICB0bzogeHkoMiwgMywgMSksXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChbeHlMYWJlbCgwLCAxLCAwLCAnQScpLCB4eUxhYmVsKDIsIDMsIDEsICdCJyksIHBvaW50c1syXV0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZHJhZ1BvbHknLCAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgb25DaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgIHcgPSB3cmFwcGVyKHsgb25DaGFuZ2UgfSk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gW3h5KDEsIDEpXTtcbiAgICAgICAgY29uc3QgbmV4dCA9IFt4eSgyLCAyKV07XG4gICAgICAgIHcuaW5zdGFuY2UoKS5kcmFnUG9seShleGlzdGluZywgbmV4dCk7XG4gICAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW3h5KDIsIDIpXSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIGtlZXBpbmcgbGFiZWwgcHJvcGVydHkgZnJvbSBhbGwgcG9pbnRzJywgKCkgPT4ge1xuICAgICAgICBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgICAgICAgdyA9IHdyYXBwZXJXaXRoTGFiZWxzKG9uQ2hhbmdlKTtcblxuICAgICAgICB3Lmluc3RhbmNlKCkuZHJhZ1BvbHkocG9pbnRzLCBbeHkoMCwgMSwgMCksIHh5KDIsIDMsIDEpLCB4eSgwLCAzLCAyKV0pO1xuICAgICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFt4eUxhYmVsKDAsIDEsIDAsICdBJyksIHh5TGFiZWwoMiwgMywgMSwgJ0InKSwgeHlMYWJlbCgwLCAzLCAyLCAnQycpXSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdsYWJlbENoYW5nZScsICgpID0+IHtcbiAgICAgIGl0KCd1cGRhdGVzIFwibGFiZWxcIiBwcm9wZXJ0eSBmb3IgcG9pbnQnLCAoKSA9PiB7XG4gICAgICAgIHcgPSB3cmFwcGVyV2l0aExhYmVscygpO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5sYWJlbENoYW5nZSh7IC4uLnBvaW50c1swXSwgbGFiZWw6ICdMYWJlbCBBJyB9LCAwKTtcbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlUHJvcHMpLnRvQmVDYWxsZWRXaXRoKFt7IC4uLnBvaW50c1swXSwgbGFiZWw6ICdMYWJlbCBBJyB9LCBwb2ludHNbMV0sIHBvaW50c1syXV0pO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5sYWJlbENoYW5nZSh7IC4uLnBvaW50c1sxXSwgbGFiZWw6ICdMYWJlbCBCJyB9LCAxKTtcbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlUHJvcHMpLnRvQmVDYWxsZWRXaXRoKFtwb2ludHNbMF0sIHsgLi4ucG9pbnRzWzFdLCBsYWJlbDogJ0xhYmVsIEInIH0sIHBvaW50c1syXV0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZW1vdmVzIFwibGFiZWxcIiBwcm9wZXJ0eSBpZiB0aGUgZmllbGQgaXMgZW1wdHknLCAoKSA9PiB7XG4gICAgICAgIHcgPSB3cmFwcGVyV2l0aExhYmVscygpO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5sYWJlbENoYW5nZSh7IC4uLnBvaW50c1swXSwgbGFiZWw6ICcnIH0sIDApO1xuICAgICAgICBleHBlY3Qob25DaGFuZ2VQcm9wcykudG9CZUNhbGxlZFdpdGgoW3h5KDAsIDAsIDApLCBwb2ludHNbMV0sIHBvaW50c1syXV0pO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5sYWJlbENoYW5nZSh7IC4uLnBvaW50c1sxXSwgbGFiZWw6ICcnIH0sIDEpO1xuICAgICAgICBleHBlY3Qob25DaGFuZ2VQcm9wcykudG9CZUNhbGxlZFdpdGgoW3BvaW50c1swXSwgeHkoMiwgMiwgMSksIHBvaW50c1syXV0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjbG9zZScsICgpID0+IHtcbiAgICBpdCgnY2FsbHMgb25DbG9zZVBvbHlnb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNsb3NlUG9seWdvbiA9IGplc3QuZm4oKTtcbiAgICAgIHcgPSB3cmFwcGVyKHsgb25DbG9zZVBvbHlnb24sIHBvaW50czogW3h5KDEsIDEpLCB4eSgyLCAyKSwgeHkoMywgMyldIH0pO1xuICAgICAgdy5pbnN0YW5jZSgpLmNsb3NlKCk7XG4gICAgICBleHBlY3Qob25DbG9zZVBvbHlnb24pLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NsaWNrUG9pbnQnLCAoKSA9PiB7XG4gICAgbGV0IG9uQ2xpY2sgPSBqZXN0LmZuKCk7XG4gICAgbGV0IG9uQ2xvc2VQb2x5Z29uID0gamVzdC5mbigpO1xuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgb25DbG9zZVBvbHlnb24ubW9ja0NsZWFyKCk7XG4gICAgICBvbkNsaWNrLm1vY2tDbGVhcigpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgYXNzZXJ0Q2FsbGJhY2sgPSAoaXNUb29sQWN0aXZlLCBjbG9zZWQsIGluZGV4LCBtb2NrKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgb25DbG9zZVBvbHlnb24nLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHcgPSB3cmFwcGVyKHtcbiAgICAgICAgICBwb2ludHM6IFt4eSgxLCAxKSwgeHkoMiwgMiksIHh5KDMsIDMpXSxcbiAgICAgICAgICBvbkNsb3NlUG9seWdvbixcbiAgICAgICAgICBvbkNsaWNrLFxuICAgICAgICAgIGlzVG9vbEFjdGl2ZSxcbiAgICAgICAgICBjbG9zZWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5jbGlja1BvaW50KHh5KDEsIDEsIDApLCBpbmRleCwge30pO1xuICAgICAgICBleHBlY3QobW9jaykudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydENhbGxiYWNrKHRydWUsIGZhbHNlLCAwLCBvbkNsb3NlUG9seWdvbik7XG4gICAgYXNzZXJ0Q2FsbGJhY2sodHJ1ZSwgZmFsc2UsIDEsIG9uQ2xpY2spO1xuICAgIGFzc2VydENhbGxiYWNrKGZhbHNlLCBmYWxzZSwgMCwgb25DbGljayk7XG4gICAgYXNzZXJ0Q2FsbGJhY2sodHJ1ZSwgdHJ1ZSwgMCwgb25DbGljayk7XG5cbiAgICBpdCgnYWRkcyBcImxhYmVsXCIgcHJvcGVydHkgdG8gYSBwb2ludCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlUHJvcHMgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCB3ID0gd3JhcHBlcldpdGhMYWJlbHMoe1xuICAgICAgICBsYWJlbE1vZGVFbmFibGVkOiB0cnVlLFxuICAgICAgICBvbkNoYW5nZVByb3BzLFxuICAgICAgICBwb2ludHM6IFt4eSgwLCAwLCAwKSwgeHkoMiwgMiwgMSksIHh5KDAsIDIsIDIpXSxcbiAgICAgIH0pO1xuXG4gICAgICB3Lmluc3RhbmNlKCkuY2xpY2tQb2ludCh4eSgwLCAwLCAwKSwgMCwge30pO1xuICAgICAgZXhwZWN0KG9uQ2hhbmdlUHJvcHMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFt4eUxhYmVsKDAsIDAsIDAsICcnKSwgeHkoMiwgMiwgMSksIHh5KDAsIDIsIDIpXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkcyBcImxhYmVsXCIgcHJvcGVydHkgdG8gYSBwb2ludCB3aGVuIGxpbWl0IGxhYmVsaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaGFuZ2VQcm9wcyA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHcgPSB3cmFwcGVyV2l0aExhYmVscyh7XG4gICAgICAgIGxhYmVsTW9kZUVuYWJsZWQ6IHRydWUsXG4gICAgICAgIG9uQ2hhbmdlUHJvcHMsXG4gICAgICAgIGxpbWl0TGFiZWxpbmc6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgdy5pbnN0YW5jZSgpLmNsaWNrUG9pbnQoeHkoMCwgMCwgMCksIDAsIHt9KTtcbiAgICAgIGV4cGVjdChvbkNoYW5nZVByb3BzKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaWYgcG9pbnQgYWxyZWFkeSBoYXMgbGFiZWwsIGtlZXBzIHRoYXQgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZVByb3BzID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgdyA9IHdyYXBwZXJXaXRoTGFiZWxzKHsgbGFiZWxNb2RlRW5hYmxlZDogdHJ1ZSwgb25DaGFuZ2VQcm9wcyB9KTtcblxuICAgICAgdy5pbnN0YW5jZSgpLmNsaWNrUG9pbnQocG9pbnRzWzBdLCAwLCB7fSk7XG4gICAgICBleHBlY3Qob25DaGFuZ2VQcm9wcykudG9IYXZlQmVlbkNhbGxlZFdpdGgocG9pbnRzKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ var _index = require("../index");
4
+
5
+ var xy = function xy(x, y) {
6
+ return {
7
+ x: x,
8
+ y: y
9
+ };
10
+ };
11
+
12
+ describe('polygon', function () {
13
+ describe('addPointToArray', function () {
14
+ var assertAddPoint = function assertAddPoint(point, arr, expected) {
15
+ it("returns ".concat(expected, " when adding ").concat(point, " to ").concat(arr), function () {
16
+ var result = (0, _index.addPointToArray)(point, arr);
17
+ expect(result).toEqual(expected);
18
+ });
19
+ };
20
+
21
+ assertAddPoint(xy(0, 0), [], {
22
+ closed: false,
23
+ points: [xy(0, 0)]
24
+ });
25
+ assertAddPoint(xy(0, 0), [xy(0, 0)], {
26
+ closed: false,
27
+ points: [xy(0, 0)]
28
+ });
29
+ assertAddPoint(xy(1, 1), [xy(0, 0)], {
30
+ closed: false,
31
+ points: [xy(0, 0), xy(1, 1)]
32
+ });
33
+ assertAddPoint(xy(1, 1), [xy(0, 0)], {
34
+ closed: false,
35
+ points: [xy(0, 0), xy(1, 1)]
36
+ });
37
+ });
38
+ });
39
+ describe('tool', function () {
40
+ var t;
41
+ beforeEach(function () {
42
+ t = (0, _index.tool)();
43
+ });
44
+ it('creates polygon type', function () {
45
+ expect(t.type).toEqual('polygon');
46
+ });
47
+ describe('complete', function () {
48
+ it('closes polygon', function () {
49
+ expect(t.complete()).toEqual({
50
+ building: false,
51
+ closed: true
52
+ });
53
+ });
54
+ });
55
+ describe('addPoint', function () {
56
+ it('creates new point', function () {
57
+ var mark = t.addPoint({
58
+ x: 0,
59
+ y: 0
60
+ });
61
+ expect(mark).toEqual({
62
+ type: 'polygon',
63
+ points: [{
64
+ x: 0,
65
+ y: 0
66
+ }],
67
+ closed: false,
68
+ building: true
69
+ });
70
+ });
71
+ it('adds the point', function () {
72
+ var mark = t.addPoint({
73
+ x: 0,
74
+ y: 0
75
+ }, {
76
+ points: [{
77
+ x: 1,
78
+ y: 1
79
+ }]
80
+ });
81
+ expect(mark).toEqual({
82
+ building: true,
83
+ closed: false,
84
+ points: [{
85
+ x: 1,
86
+ y: 1
87
+ }, {
88
+ x: 0,
89
+ y: 0
90
+ }]
91
+ });
92
+ });
93
+ });
94
+ });
95
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL19fdGVzdHNfXy9pbmRleC50ZXN0LmpzIl0sIm5hbWVzIjpbInh5IiwieCIsInkiLCJkZXNjcmliZSIsImFzc2VydEFkZFBvaW50IiwicG9pbnQiLCJhcnIiLCJleHBlY3RlZCIsIml0IiwicmVzdWx0IiwiZXhwZWN0IiwidG9FcXVhbCIsImNsb3NlZCIsInBvaW50cyIsInQiLCJiZWZvcmVFYWNoIiwidHlwZSIsImNvbXBsZXRlIiwiYnVpbGRpbmciLCJtYXJrIiwiYWRkUG9pbnQiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBRUEsSUFBTUEsRUFBRSxHQUFHLFNBQUxBLEVBQUssQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKO0FBQUEsU0FBVztBQUFFRCxJQUFBQSxDQUFDLEVBQURBLENBQUY7QUFBS0MsSUFBQUEsQ0FBQyxFQUFEQTtBQUFMLEdBQVg7QUFBQSxDQUFYOztBQUVBQyxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDeEJBLEVBQUFBLFFBQVEsQ0FBQyxpQkFBRCxFQUFvQixZQUFNO0FBQ2hDLFFBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQ0MsS0FBRCxFQUFRQyxHQUFSLEVBQWFDLFFBQWIsRUFBMEI7QUFDL0NDLE1BQUFBLEVBQUUsbUJBQVlELFFBQVosMEJBQW9DRixLQUFwQyxpQkFBZ0RDLEdBQWhELEdBQXVELFlBQU07QUFDN0QsWUFBTUcsTUFBTSxHQUFHLDRCQUFnQkosS0FBaEIsRUFBdUJDLEdBQXZCLENBQWY7QUFDQUksUUFBQUEsTUFBTSxDQUFDRCxNQUFELENBQU4sQ0FBZUUsT0FBZixDQUF1QkosUUFBdkI7QUFDRCxPQUhDLENBQUY7QUFJRCxLQUxEOztBQU1BSCxJQUFBQSxjQUFjLENBQUNKLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUFILEVBQVcsRUFBWCxFQUFlO0FBQUVZLE1BQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCQyxNQUFBQSxNQUFNLEVBQUUsQ0FBQ2IsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUg7QUFBekIsS0FBZixDQUFkO0FBQ0FJLElBQUFBLGNBQWMsQ0FBQ0osRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUgsRUFBVyxDQUFDQSxFQUFFLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBSCxDQUFYLEVBQXVCO0FBQUVZLE1BQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCQyxNQUFBQSxNQUFNLEVBQUUsQ0FBQ2IsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUg7QUFBekIsS0FBdkIsQ0FBZDtBQUNBSSxJQUFBQSxjQUFjLENBQUNKLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUFILEVBQVcsQ0FBQ0EsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUgsQ0FBWCxFQUF1QjtBQUNuQ1ksTUFBQUEsTUFBTSxFQUFFLEtBRDJCO0FBRW5DQyxNQUFBQSxNQUFNLEVBQUUsQ0FBQ2IsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUgsRUFBV0EsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQWI7QUFGMkIsS0FBdkIsQ0FBZDtBQUlBSSxJQUFBQSxjQUFjLENBQUNKLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUFILEVBQVcsQ0FBQ0EsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUgsQ0FBWCxFQUF1QjtBQUNuQ1ksTUFBQUEsTUFBTSxFQUFFLEtBRDJCO0FBRW5DQyxNQUFBQSxNQUFNLEVBQUUsQ0FBQ2IsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUgsRUFBV0EsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQWI7QUFGMkIsS0FBdkIsQ0FBZDtBQUlELEdBakJPLENBQVI7QUFrQkQsQ0FuQk8sQ0FBUjtBQXFCQUcsUUFBUSxDQUFDLE1BQUQsRUFBUyxZQUFNO0FBQ3JCLE1BQUlXLENBQUo7QUFDQUMsRUFBQUEsVUFBVSxDQUFDLFlBQU07QUFDZkQsSUFBQUEsQ0FBQyxHQUFHLGtCQUFKO0FBQ0QsR0FGUyxDQUFWO0FBSUFOLEVBQUFBLEVBQUUsQ0FBQyxzQkFBRCxFQUF5QixZQUFNO0FBQy9CRSxJQUFBQSxNQUFNLENBQUNJLENBQUMsQ0FBQ0UsSUFBSCxDQUFOLENBQWVMLE9BQWYsQ0FBdUIsU0FBdkI7QUFDRCxHQUZDLENBQUY7QUFJQVIsRUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCSyxJQUFBQSxFQUFFLENBQUMsZ0JBQUQsRUFBbUIsWUFBTTtBQUN6QkUsTUFBQUEsTUFBTSxDQUFDSSxDQUFDLENBQUNHLFFBQUYsRUFBRCxDQUFOLENBQXFCTixPQUFyQixDQUE2QjtBQUFFTyxRQUFBQSxRQUFRLEVBQUUsS0FBWjtBQUFtQk4sUUFBQUEsTUFBTSxFQUFFO0FBQTNCLE9BQTdCO0FBQ0QsS0FGQyxDQUFGO0FBR0QsR0FKTyxDQUFSO0FBTUFULEVBQUFBLFFBQVEsQ0FBQyxVQUFELEVBQWEsWUFBTTtBQUN6QkssSUFBQUEsRUFBRSxDQUFDLG1CQUFELEVBQXNCLFlBQU07QUFDNUIsVUFBTVcsSUFBSSxHQUFHTCxDQUFDLENBQUNNLFFBQUYsQ0FBVztBQUFFbkIsUUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsUUFBQUEsQ0FBQyxFQUFFO0FBQVgsT0FBWCxDQUFiO0FBQ0FRLE1BQUFBLE1BQU0sQ0FBQ1MsSUFBRCxDQUFOLENBQWFSLE9BQWIsQ0FBcUI7QUFDbkJLLFFBQUFBLElBQUksRUFBRSxTQURhO0FBRW5CSCxRQUFBQSxNQUFNLEVBQUUsQ0FBQztBQUFFWixVQUFBQSxDQUFDLEVBQUUsQ0FBTDtBQUFRQyxVQUFBQSxDQUFDLEVBQUU7QUFBWCxTQUFELENBRlc7QUFHbkJVLFFBQUFBLE1BQU0sRUFBRSxLQUhXO0FBSW5CTSxRQUFBQSxRQUFRLEVBQUU7QUFKUyxPQUFyQjtBQU1ELEtBUkMsQ0FBRjtBQVVBVixJQUFBQSxFQUFFLENBQUMsZ0JBQUQsRUFBbUIsWUFBTTtBQUN6QixVQUFNVyxJQUFJLEdBQUdMLENBQUMsQ0FBQ00sUUFBRixDQUFXO0FBQUVuQixRQUFBQSxDQUFDLEVBQUUsQ0FBTDtBQUFRQyxRQUFBQSxDQUFDLEVBQUU7QUFBWCxPQUFYLEVBQTJCO0FBQUVXLFFBQUFBLE1BQU0sRUFBRSxDQUFDO0FBQUVaLFVBQUFBLENBQUMsRUFBRSxDQUFMO0FBQVFDLFVBQUFBLENBQUMsRUFBRTtBQUFYLFNBQUQ7QUFBVixPQUEzQixDQUFiO0FBQ0FRLE1BQUFBLE1BQU0sQ0FBQ1MsSUFBRCxDQUFOLENBQWFSLE9BQWIsQ0FBcUI7QUFDbkJPLFFBQUFBLFFBQVEsRUFBRSxJQURTO0FBRW5CTixRQUFBQSxNQUFNLEVBQUUsS0FGVztBQUduQkMsUUFBQUEsTUFBTSxFQUFFLENBQ047QUFBRVosVUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsVUFBQUEsQ0FBQyxFQUFFO0FBQVgsU0FETSxFQUVOO0FBQUVELFVBQUFBLENBQUMsRUFBRSxDQUFMO0FBQVFDLFVBQUFBLENBQUMsRUFBRTtBQUFYLFNBRk07QUFIVyxPQUFyQjtBQVFELEtBVkMsQ0FBRjtBQVdELEdBdEJPLENBQVI7QUF1QkQsQ0F2Q08sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZFBvaW50VG9BcnJheSwgdG9vbCB9IGZyb20gJy4uL2luZGV4JztcblxuY29uc3QgeHkgPSAoeCwgeSkgPT4gKHsgeCwgeSB9KTtcblxuZGVzY3JpYmUoJ3BvbHlnb24nLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdhZGRQb2ludFRvQXJyYXknLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0QWRkUG9pbnQgPSAocG9pbnQsIGFyciwgZXhwZWN0ZWQpID0+IHtcbiAgICAgIGl0KGByZXR1cm5zICR7ZXhwZWN0ZWR9IHdoZW4gYWRkaW5nICR7cG9pbnR9IHRvICR7YXJyfWAsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYWRkUG9pbnRUb0FycmF5KHBvaW50LCBhcnIpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgYXNzZXJ0QWRkUG9pbnQoeHkoMCwgMCksIFtdLCB7IGNsb3NlZDogZmFsc2UsIHBvaW50czogW3h5KDAsIDApXSB9KTtcbiAgICBhc3NlcnRBZGRQb2ludCh4eSgwLCAwKSwgW3h5KDAsIDApXSwgeyBjbG9zZWQ6IGZhbHNlLCBwb2ludHM6IFt4eSgwLCAwKV0gfSk7XG4gICAgYXNzZXJ0QWRkUG9pbnQoeHkoMSwgMSksIFt4eSgwLCAwKV0sIHtcbiAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgICBwb2ludHM6IFt4eSgwLCAwKSwgeHkoMSwgMSldLFxuICAgIH0pO1xuICAgIGFzc2VydEFkZFBvaW50KHh5KDEsIDEpLCBbeHkoMCwgMCldLCB7XG4gICAgICBjbG9zZWQ6IGZhbHNlLFxuICAgICAgcG9pbnRzOiBbeHkoMCwgMCksIHh5KDEsIDEpXSxcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3Rvb2wnLCAoKSA9PiB7XG4gIGxldCB0O1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICB0ID0gdG9vbCgpO1xuICB9KTtcblxuICBpdCgnY3JlYXRlcyBwb2x5Z29uIHR5cGUnLCAoKSA9PiB7XG4gICAgZXhwZWN0KHQudHlwZSkudG9FcXVhbCgncG9seWdvbicpO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29tcGxldGUnLCAoKSA9PiB7XG4gICAgaXQoJ2Nsb3NlcyBwb2x5Z29uJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHQuY29tcGxldGUoKSkudG9FcXVhbCh7IGJ1aWxkaW5nOiBmYWxzZSwgY2xvc2VkOiB0cnVlIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWRkUG9pbnQnLCAoKSA9PiB7XG4gICAgaXQoJ2NyZWF0ZXMgbmV3IHBvaW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFyayA9IHQuYWRkUG9pbnQoeyB4OiAwLCB5OiAwIH0pO1xuICAgICAgZXhwZWN0KG1hcmspLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiAncG9seWdvbicsXG4gICAgICAgIHBvaW50czogW3sgeDogMCwgeTogMCB9XSxcbiAgICAgICAgY2xvc2VkOiBmYWxzZSxcbiAgICAgICAgYnVpbGRpbmc6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGRzIHRoZSBwb2ludCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmsgPSB0LmFkZFBvaW50KHsgeDogMCwgeTogMCB9LCB7IHBvaW50czogW3sgeDogMSwgeTogMSB9XSB9KTtcbiAgICAgIGV4cGVjdChtYXJrKS50b0VxdWFsKHtcbiAgICAgICAgYnVpbGRpbmc6IHRydWUsXG4gICAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgICAgIHBvaW50czogW1xuICAgICAgICAgIHsgeDogMSwgeTogMSB9LFxuICAgICAgICAgIHsgeDogMCwgeTogMCB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _line = require("../line");
12
+
13
+ var _utils = require("../../../__tests__/utils");
14
+
15
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
+
17
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
+
19
+ describe('Line', function () {
20
+ var w;
21
+ var onChange = jest.fn();
22
+
23
+ var wrapper = function wrapper(extras) {
24
+ var defaults = {
25
+ classes: {},
26
+ className: 'className',
27
+ graphProps: (0, _utils.graphProps)()
28
+ };
29
+
30
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
31
+
32
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_line.Line, props));
33
+ };
34
+
35
+ describe('snapshot', function () {
36
+ it('renders', function () {
37
+ w = wrapper();
38
+ expect(w).toMatchSnapshot();
39
+ });
40
+ });
41
+ describe('logic', function () {});
42
+ });
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL19fdGVzdHNfXy9saW5lLnRlc3QuanN4Il0sIm5hbWVzIjpbImRlc2NyaWJlIiwidyIsIm9uQ2hhbmdlIiwiamVzdCIsImZuIiwid3JhcHBlciIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsImdyYXBoUHJvcHMiLCJwcm9wcyIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUFBLFFBQVEsQ0FBQyxNQUFELEVBQVMsWUFBTTtBQUNyQixNQUFJQyxDQUFKO0FBQ0EsTUFBSUMsUUFBUSxHQUFHQyxJQUFJLENBQUNDLEVBQUwsRUFBZjs7QUFDQSxNQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFDQyxNQUFELEVBQVk7QUFDMUIsUUFBTUMsUUFBUSxHQUFHO0FBQ2ZDLE1BQUFBLE9BQU8sRUFBRSxFQURNO0FBRWZDLE1BQUFBLFNBQVMsRUFBRSxXQUZJO0FBR2ZDLE1BQUFBLFVBQVUsRUFBRTtBQUhHLEtBQWpCOztBQUtBLFFBQU1DLEtBQUssbUNBQVFKLFFBQVIsR0FBcUJELE1BQXJCLENBQVg7O0FBQ0EsV0FBTyxtQ0FBUSxnQ0FBQyxVQUFELEVBQVVLLEtBQVYsQ0FBUixDQUFQO0FBQ0QsR0FSRDs7QUFTQVgsRUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCWSxJQUFBQSxFQUFFLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDbEJYLE1BQUFBLENBQUMsR0FBR0ksT0FBTyxFQUFYO0FBQ0FRLE1BQUFBLE1BQU0sQ0FBQ1osQ0FBRCxDQUFOLENBQVVhLGVBQVY7QUFDRCxLQUhDLENBQUY7QUFJRCxHQUxPLENBQVI7QUFNQWQsRUFBQUEsUUFBUSxDQUFDLE9BQUQsRUFBVSxZQUFNLENBQUUsQ0FBbEIsQ0FBUjtBQUNELENBbkJPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMaW5lIH0gZnJvbSAnLi4vbGluZSc7XG5pbXBvcnQgeyBncmFwaFByb3BzIH0gZnJvbSAnLi4vLi4vLi4vX190ZXN0c19fL3V0aWxzJztcblxuZGVzY3JpYmUoJ0xpbmUnLCAoKSA9PiB7XG4gIGxldCB3O1xuICBsZXQgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBncmFwaFByb3BzOiBncmFwaFByb3BzKCksXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiBzaGFsbG93KDxMaW5lIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge30pO1xufSk7XG4iXX0=
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _polygon = require("../polygon");
12
+
13
+ var _utils = require("../../../__tests__/utils");
14
+
15
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
+
17
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
+
19
+ var xy = function xy(x, y) {
20
+ return {
21
+ x: x,
22
+ y: y
23
+ };
24
+ };
25
+
26
+ describe('Polygon', function () {
27
+ var w;
28
+
29
+ var wrapper = function wrapper(extras) {
30
+ var defaults = {
31
+ classes: {},
32
+ className: 'className',
33
+ graphProps: (0, _utils.graphProps)(),
34
+ closed: false
35
+ };
36
+
37
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
38
+
39
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_polygon.Polygon, props));
40
+ };
41
+
42
+ describe('snapshot', function () {
43
+ it('renders', function () {
44
+ w = wrapper({
45
+ points: [{
46
+ x: 1,
47
+ y: 1
48
+ }]
49
+ });
50
+ expect(w).toMatchSnapshot();
51
+ });
52
+ });
53
+ });
54
+ describe('getPointString', function () {
55
+ var assertString = function assertString(arr, expected) {
56
+ it('creates: ', function () {
57
+ var result = (0, _polygon.getPointString)(arr, {
58
+ x: jest.fn(function (n) {
59
+ return n;
60
+ }),
61
+ y: jest.fn(function (n) {
62
+ return n;
63
+ })
64
+ });
65
+ expect(result).toEqual(expected);
66
+ });
67
+ };
68
+
69
+ assertString([xy(1, 1)], '1,1');
70
+ assertString([xy(1, 1), xy(2, 1)], '1,1 2,1');
71
+ assertString([xy(1, 1), xy(2, 1), xy(4, 4)], '1,1 2,1 4,4');
72
+ });
73
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL19fdGVzdHNfXy9wb2x5Z29uLnRlc3QuanN4Il0sIm5hbWVzIjpbInh5IiwieCIsInkiLCJkZXNjcmliZSIsInciLCJ3cmFwcGVyIiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJjbGFzc2VzIiwiY2xhc3NOYW1lIiwiZ3JhcGhQcm9wcyIsImNsb3NlZCIsInByb3BzIiwiaXQiLCJwb2ludHMiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJhc3NlcnRTdHJpbmciLCJhcnIiLCJleHBlY3RlZCIsInJlc3VsdCIsImplc3QiLCJmbiIsIm4iLCJ0b0VxdWFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsRUFBRSxHQUFHLFNBQUxBLEVBQUssQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKO0FBQUEsU0FBVztBQUFFRCxJQUFBQSxDQUFDLEVBQURBLENBQUY7QUFBS0MsSUFBQUEsQ0FBQyxFQUFEQTtBQUFMLEdBQVg7QUFBQSxDQUFYOztBQUVBQyxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDeEIsTUFBSUMsQ0FBSjs7QUFDQSxNQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFDQyxNQUFELEVBQVk7QUFDMUIsUUFBTUMsUUFBUSxHQUFHO0FBQ2ZDLE1BQUFBLE9BQU8sRUFBRSxFQURNO0FBRWZDLE1BQUFBLFNBQVMsRUFBRSxXQUZJO0FBR2ZDLE1BQUFBLFVBQVUsRUFBRSx3QkFIRztBQUlmQyxNQUFBQSxNQUFNLEVBQUU7QUFKTyxLQUFqQjs7QUFNQSxRQUFNQyxLQUFLLG1DQUFRTCxRQUFSLEdBQXFCRCxNQUFyQixDQUFYOztBQUNBLFdBQU8sbUNBQVEsZ0NBQUMsZ0JBQUQsRUFBYU0sS0FBYixDQUFSLENBQVA7QUFDRCxHQVREOztBQVdBVCxFQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekJVLElBQUFBLEVBQUUsQ0FBQyxTQUFELEVBQVksWUFBTTtBQUNsQlQsTUFBQUEsQ0FBQyxHQUFHQyxPQUFPLENBQUM7QUFBRVMsUUFBQUEsTUFBTSxFQUFFLENBQUM7QUFBRWIsVUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsVUFBQUEsQ0FBQyxFQUFFO0FBQVgsU0FBRDtBQUFWLE9BQUQsQ0FBWDtBQUNBYSxNQUFBQSxNQUFNLENBQUNYLENBQUQsQ0FBTixDQUFVWSxlQUFWO0FBQ0QsS0FIQyxDQUFGO0FBSUQsR0FMTyxDQUFSO0FBTUQsQ0FuQk8sQ0FBUjtBQXFCQWIsUUFBUSxDQUFDLGdCQUFELEVBQW1CLFlBQU07QUFDL0IsTUFBTWMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQ0MsR0FBRCxFQUFNQyxRQUFOLEVBQW1CO0FBQ3RDTixJQUFBQSxFQUFFLENBQUMsV0FBRCxFQUFjLFlBQU07QUFDcEIsVUFBTU8sTUFBTSxHQUFHLDZCQUFlRixHQUFmLEVBQW9CO0FBQ2pDakIsUUFBQUEsQ0FBQyxFQUFFb0IsSUFBSSxDQUFDQyxFQUFMLENBQVEsVUFBQ0MsQ0FBRDtBQUFBLGlCQUFPQSxDQUFQO0FBQUEsU0FBUixDQUQ4QjtBQUVqQ3JCLFFBQUFBLENBQUMsRUFBRW1CLElBQUksQ0FBQ0MsRUFBTCxDQUFRLFVBQUNDLENBQUQ7QUFBQSxpQkFBT0EsQ0FBUDtBQUFBLFNBQVI7QUFGOEIsT0FBcEIsQ0FBZjtBQUtBUixNQUFBQSxNQUFNLENBQUNLLE1BQUQsQ0FBTixDQUFlSSxPQUFmLENBQXVCTCxRQUF2QjtBQUNELEtBUEMsQ0FBRjtBQVFELEdBVEQ7O0FBV0FGLEVBQUFBLFlBQVksQ0FBQyxDQUFDakIsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUgsQ0FBRCxFQUFhLEtBQWIsQ0FBWjtBQUNBaUIsRUFBQUEsWUFBWSxDQUFDLENBQUNqQixFQUFFLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBSCxFQUFXQSxFQUFFLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBYixDQUFELEVBQXVCLFNBQXZCLENBQVo7QUFDQWlCLEVBQUFBLFlBQVksQ0FBQyxDQUFDakIsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUgsRUFBV0EsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQWIsRUFBcUJBLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUF2QixDQUFELEVBQWlDLGFBQWpDLENBQVo7QUFDRCxDQWZPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBQb2x5Z29uLCBnZXRQb2ludFN0cmluZyB9IGZyb20gJy4uL3BvbHlnb24nO1xuaW1wb3J0IHsgZ3JhcGhQcm9wcyB9IGZyb20gJy4uLy4uLy4uL19fdGVzdHNfXy91dGlscyc7XG5cbmNvbnN0IHh5ID0gKHgsIHkpID0+ICh7IHgsIHkgfSk7XG5cbmRlc2NyaWJlKCdQb2x5Z29uJywgKCkgPT4ge1xuICBsZXQgdztcbiAgY29uc3Qgd3JhcHBlciA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICAgIGdyYXBoUHJvcHM6IGdyYXBoUHJvcHMoKSxcbiAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiBzaGFsbG93KDxQb2x5Z29uIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdzbmFwc2hvdCcsICgpID0+IHtcbiAgICBpdCgncmVuZGVycycsICgpID0+IHtcbiAgICAgIHcgPSB3cmFwcGVyKHsgcG9pbnRzOiBbeyB4OiAxLCB5OiAxIH1dIH0pO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnZ2V0UG9pbnRTdHJpbmcnLCAoKSA9PiB7XG4gIGNvbnN0IGFzc2VydFN0cmluZyA9IChhcnIsIGV4cGVjdGVkKSA9PiB7XG4gICAgaXQoJ2NyZWF0ZXM6ICcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFBvaW50U3RyaW5nKGFyciwge1xuICAgICAgICB4OiBqZXN0LmZuKChuKSA9PiBuKSxcbiAgICAgICAgeTogamVzdC5mbigobikgPT4gbiksXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgYXNzZXJ0U3RyaW5nKFt4eSgxLCAxKV0sICcxLDEnKTtcbiAgYXNzZXJ0U3RyaW5nKFt4eSgxLCAxKSwgeHkoMiwgMSldLCAnMSwxIDIsMScpO1xuICBhc3NlcnRTdHJpbmcoW3h5KDEsIDEpLCB4eSgyLCAxKSwgeHkoNCwgNCldLCAnMSwxIDIsMSA0LDQnKTtcbn0pO1xuIl19
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _component = require("../component");
12
+
13
+ var _utils = require("../../../__tests__/utils");
14
+
15
+ var _plot = require("@pie-lib/plot");
16
+
17
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
+
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+
21
+ describe('RayLine', function () {
22
+ var w;
23
+ var onChange = jest.fn();
24
+
25
+ var wrapper = function wrapper(extras) {
26
+ var defaults = {
27
+ classes: {},
28
+ className: 'className',
29
+ onChange: onChange,
30
+ markerId: '1',
31
+ graphProps: (0, _utils.graphProps)(),
32
+ from: _plot.utils.xy(0, 0),
33
+ to: _plot.utils.xy(1, 1)
34
+ };
35
+
36
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
37
+
38
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_component.RayLine, props));
39
+ };
40
+
41
+ describe('snapshot', function () {
42
+ it('renders', function () {
43
+ var w = wrapper();
44
+ expect(w).toMatchSnapshot();
45
+ });
46
+ });
47
+ });
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9yYXkvX190ZXN0c19fL2NvbXBvbmVudC50ZXN0LmpzeCJdLCJuYW1lcyI6WyJkZXNjcmliZSIsInciLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsIndyYXBwZXIiLCJleHRyYXMiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJjbGFzc05hbWUiLCJtYXJrZXJJZCIsImdyYXBoUHJvcHMiLCJmcm9tIiwidXRpbHMiLCJ4eSIsInRvIiwicHJvcHMiLCJpdCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUNBQSxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDeEIsTUFBSUMsQ0FBSjtBQUNBLE1BQUlDLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxFQUFMLEVBQWY7O0FBQ0EsTUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ0MsTUFBRCxFQUFZO0FBQzFCLFFBQU1DLFFBQVEsR0FBRztBQUNmQyxNQUFBQSxPQUFPLEVBQUUsRUFETTtBQUVmQyxNQUFBQSxTQUFTLEVBQUUsV0FGSTtBQUdmUCxNQUFBQSxRQUFRLEVBQVJBLFFBSGU7QUFJZlEsTUFBQUEsUUFBUSxFQUFFLEdBSks7QUFLZkMsTUFBQUEsVUFBVSxFQUFFLHdCQUxHO0FBTWZDLE1BQUFBLElBQUksRUFBRUMsWUFBTUMsRUFBTixDQUFTLENBQVQsRUFBWSxDQUFaLENBTlM7QUFPZkMsTUFBQUEsRUFBRSxFQUFFRixZQUFNQyxFQUFOLENBQVMsQ0FBVCxFQUFZLENBQVo7QUFQVyxLQUFqQjs7QUFTQSxRQUFNRSxLQUFLLG1DQUFRVCxRQUFSLEdBQXFCRCxNQUFyQixDQUFYOztBQUNBLFdBQU8sbUNBQVEsZ0NBQUMsa0JBQUQsRUFBYVUsS0FBYixDQUFSLENBQVA7QUFDRCxHQVpEOztBQWNBaEIsRUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCaUIsSUFBQUEsRUFBRSxDQUFDLFNBQUQsRUFBWSxZQUFNO0FBQ2xCLFVBQU1oQixDQUFDLEdBQUdJLE9BQU8sRUFBakI7QUFDQWEsTUFBQUEsTUFBTSxDQUFDakIsQ0FBRCxDQUFOLENBQVVrQixlQUFWO0FBQ0QsS0FIQyxDQUFGO0FBSUQsR0FMTyxDQUFSO0FBTUQsQ0F2Qk8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNoYWxsb3cgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJheUxpbmUgfSBmcm9tICcuLi9jb21wb25lbnQnO1xuaW1wb3J0IHsgZ3JhcGhQcm9wcyBhcyBnZXRHcmFwaFByb3BzIH0gZnJvbSAnLi4vLi4vLi4vX190ZXN0c19fL3V0aWxzJztcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnQHBpZS1saWIvcGxvdCc7XG5kZXNjcmliZSgnUmF5TGluZScsICgpID0+IHtcbiAgbGV0IHc7XG4gIGxldCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgY29uc3Qgd3JhcHBlciA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgbWFya2VySWQ6ICcxJyxcbiAgICAgIGdyYXBoUHJvcHM6IGdldEdyYXBoUHJvcHMoKSxcbiAgICAgIGZyb206IHV0aWxzLnh5KDAsIDApLFxuICAgICAgdG86IHV0aWxzLnh5KDEsIDEpLFxuICAgIH07XG4gICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRzLCAuLi5leHRyYXMgfTtcbiAgICByZXR1cm4gc2hhbGxvdyg8UmF5TGluZSB7Li4ucHJvcHN9IC8+KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB3ID0gd3JhcHBlcigpO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _component = require("../component");
12
+
13
+ var _utils = require("../../../__tests__/utils");
14
+
15
+ var _plot = require("@pie-lib/plot");
16
+
17
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
+
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+
21
+ var xy = _plot.utils.xy;
22
+ describe('Line', function () {
23
+ var w;
24
+ var onChange = jest.fn();
25
+
26
+ var wrapper = function wrapper(extras) {
27
+ var defaults = {
28
+ classes: {},
29
+ className: 'className',
30
+ onChange: onChange,
31
+ graphProps: (0, _utils.graphProps)(),
32
+ from: xy(0, 0),
33
+ to: xy(1, 1)
34
+ };
35
+
36
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
37
+
38
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_component.Line, props));
39
+ };
40
+
41
+ describe('snapshot', function () {
42
+ it('renders', function () {
43
+ var w = wrapper();
44
+ expect(w).toMatchSnapshot();
45
+ });
46
+ });
47
+ });
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9zZWdtZW50L19fdGVzdHNfXy9jb21wb25lbnQudGVzdC5qc3giXSwibmFtZXMiOlsieHkiLCJ1dGlscyIsImRlc2NyaWJlIiwidyIsIm9uQ2hhbmdlIiwiamVzdCIsImZuIiwid3JhcHBlciIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsImdyYXBoUHJvcHMiLCJmcm9tIiwidG8iLCJwcm9wcyIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBQ0EsSUFBUUEsRUFBUixHQUFlQyxXQUFmLENBQVFELEVBQVI7QUFDQUUsUUFBUSxDQUFDLE1BQUQsRUFBUyxZQUFNO0FBQ3JCLE1BQUlDLENBQUo7QUFDQSxNQUFJQyxRQUFRLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUFmOztBQUNBLE1BQU1DLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQUNDLE1BQUQsRUFBWTtBQUMxQixRQUFNQyxRQUFRLEdBQUc7QUFDZkMsTUFBQUEsT0FBTyxFQUFFLEVBRE07QUFFZkMsTUFBQUEsU0FBUyxFQUFFLFdBRkk7QUFHZlAsTUFBQUEsUUFBUSxFQUFSQSxRQUhlO0FBSWZRLE1BQUFBLFVBQVUsRUFBRSx3QkFKRztBQUtmQyxNQUFBQSxJQUFJLEVBQUViLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUxPO0FBTWZjLE1BQUFBLEVBQUUsRUFBRWQsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKO0FBTlMsS0FBakI7O0FBUUEsUUFBTWUsS0FBSyxtQ0FBUU4sUUFBUixHQUFxQkQsTUFBckIsQ0FBWDs7QUFDQSxXQUFPLG1DQUFRLGdDQUFDLGVBQUQsRUFBVU8sS0FBVixDQUFSLENBQVA7QUFDRCxHQVhEOztBQVlBYixFQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekJjLElBQUFBLEVBQUUsQ0FBQyxTQUFELEVBQVksWUFBTTtBQUNsQixVQUFNYixDQUFDLEdBQUdJLE9BQU8sRUFBakI7QUFDQVUsTUFBQUEsTUFBTSxDQUFDZCxDQUFELENBQU4sQ0FBVWUsZUFBVjtBQUNELEtBSEMsQ0FBRjtBQUlELEdBTE8sQ0FBUjtBQU1ELENBckJPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMaW5lIH0gZnJvbSAnLi4vY29tcG9uZW50JztcbmltcG9ydCB7IGdyYXBoUHJvcHMgYXMgZ2V0R3JhcGhQcm9wcyB9IGZyb20gJy4uLy4uLy4uL19fdGVzdHNfXy91dGlscyc7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJ0BwaWUtbGliL3Bsb3QnO1xuY29uc3QgeyB4eSB9ID0gdXRpbHM7XG5kZXNjcmliZSgnTGluZScsICgpID0+IHtcbiAgbGV0IHc7XG4gIGxldCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgY29uc3Qgd3JhcHBlciA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgZ3JhcGhQcm9wczogZ2V0R3JhcGhQcm9wcygpLFxuICAgICAgZnJvbTogeHkoMCwgMCksXG4gICAgICB0bzogeHkoMSwgMSksXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiBzaGFsbG93KDxMaW5lIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB3ID0gd3JhcHBlcigpO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19