@pie-lib/config-ui 11.9.25-next.0 → 11.11.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/NEXT.CHANGELOG.json +1 -0
  3. package/lib/__tests__/choice-utils.test.js +16 -0
  4. package/lib/__tests__/langs.test.js +55 -0
  5. package/lib/__tests__/number-text-field.test.js +128 -0
  6. package/lib/__tests__/settings-panel.test.js +201 -0
  7. package/lib/__tests__/two-choice.test.js +33 -0
  8. package/lib/alert-dialog.js +39 -8
  9. package/lib/checkbox.js +7 -2
  10. package/lib/choice-configuration/__tests__/feedback-menu.test.js +20 -0
  11. package/lib/choice-configuration/__tests__/index.test.js +119 -0
  12. package/lib/choice-configuration/feedback-menu.js +1 -1
  13. package/lib/choice-configuration/index.js +20 -9
  14. package/lib/choice-utils.js +1 -1
  15. package/lib/feedback-config/__tests__/feedback-config.test.js +78 -0
  16. package/lib/feedback-config/__tests__/feedback-selector.test.js +71 -0
  17. package/lib/feedback-config/feedback-selector.js +1 -1
  18. package/lib/feedback-config/group.js +1 -1
  19. package/lib/feedback-config/index.js +1 -1
  20. package/lib/form-section.js +1 -1
  21. package/lib/help.js +1 -1
  22. package/lib/index.js +1 -1
  23. package/lib/input.js +1 -1
  24. package/lib/inputs.js +9 -3
  25. package/lib/langs.js +1 -1
  26. package/lib/layout/__tests__/config.layout.test.js +33 -0
  27. package/lib/layout/__tests__/layout-content.test.js +6 -0
  28. package/lib/layout/config-layout.js +28 -11
  29. package/lib/layout/index.js +1 -1
  30. package/lib/layout/layout-contents.js +1 -1
  31. package/lib/layout/settings-box.js +1 -1
  32. package/lib/mui-box/index.js +1 -1
  33. package/lib/number-text-field-custom.js +135 -44
  34. package/lib/number-text-field.js +18 -19
  35. package/lib/radio-with-label.js +10 -2
  36. package/lib/settings/display-size.js +1 -1
  37. package/lib/settings/index.js +4 -2
  38. package/lib/settings/panel.js +8 -5
  39. package/lib/settings/settings-radio-label.js +10 -2
  40. package/lib/settings/toggle.js +19 -1
  41. package/lib/tabs/index.js +1 -1
  42. package/lib/tags-input/__tests__/index.test.js +88 -0
  43. package/lib/tags-input/index.js +1 -1
  44. package/lib/two-choice.js +1 -1
  45. package/lib/with-stateful-model.js +1 -1
  46. package/package.json +5 -5
  47. package/src/__tests__/__snapshots__/langs.test.jsx.snap +32 -0
  48. package/src/__tests__/__snapshots__/settings-panel.test.js.snap +115 -0
  49. package/src/__tests__/__snapshots__/two-choice.test.js.snap +171 -0
  50. package/src/__tests__/choice-utils.test.js +12 -0
  51. package/src/__tests__/langs.test.jsx +37 -0
  52. package/src/__tests__/number-text-field.test.jsx +148 -0
  53. package/src/__tests__/settings-panel.test.js +204 -0
  54. package/src/__tests__/two-choice.test.js +24 -0
  55. package/src/alert-dialog.jsx +27 -7
  56. package/src/checkbox.jsx +12 -1
  57. package/src/choice-configuration/__tests__/__snapshots__/feedback-menu.test.jsx.snap +51 -0
  58. package/src/choice-configuration/__tests__/__snapshots__/index.test.jsx.snap +519 -0
  59. package/src/choice-configuration/__tests__/feedback-menu.test.jsx +10 -0
  60. package/src/choice-configuration/__tests__/index.test.jsx +92 -0
  61. package/src/choice-configuration/index.jsx +14 -3
  62. package/src/feedback-config/__tests__/__snapshots__/feedback-config.test.jsx.snap +27 -0
  63. package/src/feedback-config/__tests__/__snapshots__/feedback-selector.test.jsx.snap +38 -0
  64. package/src/feedback-config/__tests__/feedback-config.test.jsx +71 -0
  65. package/src/feedback-config/__tests__/feedback-selector.test.jsx +60 -0
  66. package/src/feedback-config/feedback-selector.jsx +0 -0
  67. package/src/inputs.jsx +9 -2
  68. package/src/layout/__tests__/__snapshots__/config.layout.test.jsx.snap +59 -0
  69. package/src/layout/__tests__/config.layout.test.jsx +42 -0
  70. package/src/layout/__tests__/layout-content.test.jsx +3 -0
  71. package/src/layout/config-layout.jsx +16 -8
  72. package/src/number-text-field-custom.jsx +86 -28
  73. package/src/number-text-field.jsx +6 -5
  74. package/src/radio-with-label.jsx +12 -2
  75. package/src/settings/index.js +2 -1
  76. package/src/settings/panel.jsx +5 -2
  77. package/src/settings/settings-radio-label.jsx +12 -2
  78. package/src/settings/toggle.jsx +20 -2
  79. package/src/tags-input/__tests__/__snapshots__/index.test.jsx.snap +170 -0
  80. package/src/tags-input/__tests__/index.test.jsx +62 -0
  81. package/README.md +0 -12
  82. package/lib/alert-dialog.js.map +0 -1
  83. package/lib/checkbox.js.map +0 -1
  84. package/lib/choice-configuration/feedback-menu.js.map +0 -1
  85. package/lib/choice-configuration/index.js.map +0 -1
  86. package/lib/choice-utils.js.map +0 -1
  87. package/lib/feedback-config/feedback-selector.js.map +0 -1
  88. package/lib/feedback-config/group.js.map +0 -1
  89. package/lib/feedback-config/index.js.map +0 -1
  90. package/lib/form-section.js.map +0 -1
  91. package/lib/help.js.map +0 -1
  92. package/lib/index.js.map +0 -1
  93. package/lib/input.js.map +0 -1
  94. package/lib/inputs.js.map +0 -1
  95. package/lib/langs.js.map +0 -1
  96. package/lib/layout/config-layout.js.map +0 -1
  97. package/lib/layout/index.js.map +0 -1
  98. package/lib/layout/layout-contents.js.map +0 -1
  99. package/lib/layout/settings-box.js.map +0 -1
  100. package/lib/mui-box/index.js.map +0 -1
  101. package/lib/number-text-field-custom.js.map +0 -1
  102. package/lib/number-text-field.js.map +0 -1
  103. package/lib/radio-with-label.js.map +0 -1
  104. package/lib/settings/display-size.js.map +0 -1
  105. package/lib/settings/index.js.map +0 -1
  106. package/lib/settings/panel.js.map +0 -1
  107. package/lib/settings/settings-radio-label.js.map +0 -1
  108. package/lib/settings/toggle.js.map +0 -1
  109. package/lib/tabs/index.js.map +0 -1
  110. package/lib/tags-input/index.js.map +0 -1
  111. package/lib/two-choice.js.map +0 -1
  112. package/lib/with-stateful-model.js.map +0 -1
@@ -2,11 +2,15 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports["default"] = exports.NumberTextFieldCustom = void 0;
9
11
 
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
10
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
15
 
12
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -41,6 +45,12 @@ var _Remove = _interopRequireDefault(require("@material-ui/icons/Remove"));
41
45
 
42
46
  var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
43
47
 
48
+ var math = _interopRequireWildcard(require("mathjs"));
49
+
50
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
51
+
52
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
53
+
44
54
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
45
55
 
46
56
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -90,16 +100,17 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
90
100
 
91
101
  (0, _classCallCheck2["default"])(this, NumberTextFieldCustom);
92
102
  _this = _super.call(this, props);
93
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "normalizeValueAndIndex", function (customValues, number) {
94
- var value = _this.clamp(number);
103
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "normalizeValueAndIndex", function (customValues, number, min, max) {
104
+ var type = _this.props.type;
105
+
106
+ var value = _this.clamp(number, min, max);
95
107
 
96
108
  var currentIndex = (customValues || []).findIndex(function (val) {
97
109
  return val === value;
98
110
  });
99
111
 
100
112
  if ((customValues || []).length > 0 && currentIndex === -1) {
101
- var closestValue = _this.getClosestValue(customValues, value);
102
-
113
+ var closestValue = type === 'text' ? _this.getClosestFractionValue(customValues, value) : _this.getClosestValue(customValues, value);
103
114
  return {
104
115
  value: closestValue.value,
105
116
  currentIndex: closestValue.index
@@ -122,25 +133,84 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
122
133
  index: 0
123
134
  });
124
135
  });
136
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getClosestFractionValue", function (customValues, number) {
137
+ return customValues.reduce(function (closest, value, index) {
138
+ return Math.abs(math.number(math.fraction(value)) - math.number(math.fraction(number))) < Math.abs(math.number(math.fraction(closest.value)) - math.number(math.fraction(number))) ? {
139
+ value: value,
140
+ index: index
141
+ } : closest;
142
+ }, {
143
+ value: customValues[0],
144
+ index: 0
145
+ });
146
+ });
147
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getValidFraction", function (value) {
148
+ if (_this.isPositiveInteger(value.trim())) {
149
+ return value.trim();
150
+ }
151
+
152
+ if (value.trim() === '' || value.trim().split('/').length !== 2) {
153
+ return false;
154
+ }
155
+
156
+ var _value$trim$split = value.trim().split('/'),
157
+ _value$trim$split2 = (0, _slicedToArray2["default"])(_value$trim$split, 2),
158
+ numerator = _value$trim$split2[0],
159
+ denominator = _value$trim$split2[1];
160
+
161
+ if (isNaN(numerator) || isNaN(denominator)) {
162
+ return false;
163
+ }
164
+
165
+ numerator = parseFloat(numerator);
166
+ denominator = parseFloat(denominator);
167
+
168
+ if (!Number.isInteger(numerator) || !Number.isInteger(denominator)) {
169
+ return false;
170
+ }
171
+
172
+ if (numerator < 0 || denominator < 1) {
173
+ return false;
174
+ }
175
+
176
+ return numerator + '/' + denominator;
177
+ });
178
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "isPositiveInteger", function (n) {
179
+ return n >>> 0 === parseFloat(n);
180
+ });
125
181
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onBlur", function (event) {
126
182
  var _this$props = _this.props,
127
183
  customValues = _this$props.customValues,
128
- onlyIntegersAllowed = _this$props.onlyIntegersAllowed;
184
+ onlyIntegersAllowed = _this$props.onlyIntegersAllowed,
185
+ type = _this$props.type;
129
186
  var value = event.target.value;
130
- var rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);
187
+
188
+ if (type === 'text') {
189
+ var tempValue = _this.getValidFraction(value);
190
+
191
+ if (tempValue) {
192
+ value = tempValue;
193
+ } else {
194
+ value = _this.props.value;
195
+ }
196
+ }
197
+
198
+ var rawNumber = onlyIntegersAllowed ? Math.round(parseFloat(value)) : parseFloat(value);
199
+
200
+ if (type === 'text') {
201
+ rawNumber = value.trim();
202
+ }
131
203
 
132
204
  var _this$normalizeValueA = _this.normalizeValueAndIndex(customValues, rawNumber),
133
205
  number = _this$normalizeValueA.value,
134
206
  currentIndex = _this$normalizeValueA.currentIndex;
135
207
 
136
- if (number !== _this.state.value) {
137
- _this.setState({
138
- value: number.toString(),
139
- currentIndex: currentIndex
140
- }, function () {
141
- return _this.props.onChange(event, number);
142
- });
143
- }
208
+ _this.setState({
209
+ value: number.toString(),
210
+ currentIndex: currentIndex
211
+ }, function () {
212
+ return _this.props.onChange(event, number);
213
+ });
144
214
  });
145
215
 
146
216
  var _this$normalizeValueA2 = _this.normalizeValueAndIndex(props.customValues, props.value),
@@ -163,7 +233,7 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
163
233
  (0, _createClass2["default"])(NumberTextFieldCustom, [{
164
234
  key: "UNSAFE_componentWillReceiveProps",
165
235
  value: function UNSAFE_componentWillReceiveProps(props) {
166
- var _this$normalizeValueA3 = this.normalizeValueAndIndex(props.customValues, props.value),
236
+ var _this$normalizeValueA3 = this.normalizeValueAndIndex(props.customValues, props.value, props.min, props.max),
167
237
  value = _this$normalizeValueA3.value,
168
238
  currentIndex = _this$normalizeValueA3.currentIndex;
169
239
 
@@ -175,10 +245,9 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
175
245
  }, {
176
246
  key: "clamp",
177
247
  value: function clamp(value) {
178
- var _this$props2 = this.props,
179
- min = _this$props2.min,
180
- max = _this$props2.max,
181
- customValues = _this$props2.customValues;
248
+ var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props.min;
249
+ var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.props.max;
250
+ var customValues = this.props.customValues;
182
251
 
183
252
  if ((customValues || []).length > 0) {
184
253
  return value;
@@ -201,7 +270,13 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
201
270
  }, {
202
271
  key: "onChange",
203
272
  value: function onChange(event) {
273
+ var type = this.props.type;
204
274
  var value = event.target.value;
275
+
276
+ if (type !== 'text' && typeof value === 'string' && value.trim() === '') {
277
+ return;
278
+ }
279
+
205
280
  this.setState({
206
281
  value: value
207
282
  });
@@ -212,11 +287,11 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
212
287
  var sign = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
213
288
  var shouldUpdate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
214
289
  event.preventDefault();
215
- var _this$props3 = this.props,
216
- customValues = _this$props3.customValues,
217
- step = _this$props3.step,
218
- onlyIntegersAllowed = _this$props3.onlyIntegersAllowed,
219
- onChange = _this$props3.onChange;
290
+ var _this$props2 = this.props,
291
+ customValues = _this$props2.customValues,
292
+ step = _this$props2.step,
293
+ onlyIntegersAllowed = _this$props2.onlyIntegersAllowed,
294
+ onChange = _this$props2.onChange;
220
295
  var _this$state = this.state,
221
296
  currentIndex = _this$state.currentIndex,
222
297
  value = _this$state.value;
@@ -249,21 +324,36 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
249
324
  value: function render() {
250
325
  var _this2 = this;
251
326
 
252
- var _this$props4 = this.props,
253
- className = _this$props4.className,
254
- classes = _this$props4.classes,
255
- label = _this$props4.label,
256
- disabled = _this$props4.disabled,
257
- error = _this$props4.error,
258
- min = _this$props4.min,
259
- max = _this$props4.max,
260
- inputClassName = _this$props4.inputClassName,
261
- disableUnderline = _this$props4.disableUnderline,
262
- helperText = _this$props4.helperText,
263
- variant = _this$props4.variant,
264
- textAlign = _this$props4.textAlign;
327
+ var _this$props3 = this.props,
328
+ className = _this$props3.className,
329
+ classes = _this$props3.classes,
330
+ label = _this$props3.label,
331
+ disabled = _this$props3.disabled,
332
+ error = _this$props3.error,
333
+ min = _this$props3.min,
334
+ max = _this$props3.max,
335
+ customValues = _this$props3.customValues,
336
+ inputClassName = _this$props3.inputClassName,
337
+ disableUnderline = _this$props3.disableUnderline,
338
+ helperText = _this$props3.helperText,
339
+ variant = _this$props3.variant,
340
+ textAlign = _this$props3.textAlign,
341
+ _this$props3$type = _this$props3.type,
342
+ type = _this$props3$type === void 0 ? 'number' : _this$props3$type;
265
343
  var value = this.state.value;
266
- var names = (0, _classnames["default"])(className, classes.input);
344
+ var names = (0, _classnames["default"])(className, classes.input); //Logic to disable the increment and decrement buttons
345
+
346
+ var disabledStart = false;
347
+ var disabledEnd = false;
348
+
349
+ if (customValues.length > 0) {
350
+ disabledStart = value === customValues[0];
351
+ disabledEnd = value === customValues[customValues.length - 1];
352
+ } else if ((0, _isFinite["default"])(min) && (0, _isFinite["default"])(max)) {
353
+ disabledStart = value === min;
354
+ disabledEnd = value === max;
355
+ }
356
+
267
357
  return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
268
358
  variant: variant,
269
359
  inputRef: function inputRef(ref) {
@@ -292,7 +382,7 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
292
382
  }
293
383
  },
294
384
  title: '',
295
- type: "number",
385
+ type: type,
296
386
  className: names,
297
387
  InputProps: {
298
388
  className: inputClassName,
@@ -301,7 +391,7 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
301
391
  position: "start"
302
392
  }, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
303
393
  className: classes.iconButton,
304
- disabled: disabled,
394
+ disabled: disabled ? disabled : disabledStart,
305
395
  onClick: function onClick(e) {
306
396
  return _this2.changeValue(e, -1, true);
307
397
  }
@@ -312,7 +402,7 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
312
402
  position: "end"
313
403
  }, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
314
404
  className: classes.iconButton,
315
- disabled: disabled,
405
+ disabled: disabled ? disabled : disabledEnd,
316
406
  onClick: function onClick(e) {
317
407
  return _this2.changeValue(e, 1, true);
318
408
  }
@@ -344,14 +434,15 @@ exports.NumberTextFieldCustom = NumberTextFieldCustom;
344
434
  helperText: _propTypes["default"].string,
345
435
  onChange: _propTypes["default"].func.isRequired,
346
436
  onlyIntegersAllowed: _propTypes["default"].bool,
347
- value: _propTypes["default"].number,
437
+ value: _propTypes["default"].any,
348
438
  min: _propTypes["default"].number,
349
439
  max: _propTypes["default"].number,
350
440
  step: _propTypes["default"].number,
351
441
  label: _propTypes["default"].string,
352
442
  disableUnderline: _propTypes["default"].bool,
353
443
  textAlign: _propTypes["default"].string,
354
- variant: _propTypes["default"].string
444
+ variant: _propTypes["default"].string,
445
+ type: _propTypes["default"].string
355
446
  });
356
447
  (0, _defineProperty2["default"])(NumberTextFieldCustom, "defaultProps", {
357
448
  step: 1,
@@ -364,4 +455,4 @@ exports.NumberTextFieldCustom = NumberTextFieldCustom;
364
455
  var _default = (0, _styles.withStyles)(styles)(NumberTextFieldCustom);
365
456
 
366
457
  exports["default"] = _default;
367
- //# sourceMappingURL=number-text-field-custom.js.map
458
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9udW1iZXItdGV4dC1maWVsZC1jdXN0b20uanN4Il0sIm5hbWVzIjpbInN0eWxlcyIsImlucHV0IiwibWFyZ2luIiwiaWNvbkJ1dHRvbiIsInBhZGRpbmciLCJmYWxsYmFja051bWJlciIsIm1pbiIsIm1heCIsIk51bWJlclRleHRGaWVsZEN1c3RvbSIsInByb3BzIiwiY3VzdG9tVmFsdWVzIiwibnVtYmVyIiwidHlwZSIsInZhbHVlIiwiY2xhbXAiLCJjdXJyZW50SW5kZXgiLCJmaW5kSW5kZXgiLCJ2YWwiLCJsZW5ndGgiLCJjbG9zZXN0VmFsdWUiLCJnZXRDbG9zZXN0RnJhY3Rpb25WYWx1ZSIsImdldENsb3Nlc3RWYWx1ZSIsImluZGV4IiwicmVkdWNlIiwiY2xvc2VzdCIsIk1hdGgiLCJhYnMiLCJtYXRoIiwiZnJhY3Rpb24iLCJpc1Bvc2l0aXZlSW50ZWdlciIsInRyaW0iLCJzcGxpdCIsIm51bWVyYXRvciIsImRlbm9taW5hdG9yIiwiaXNOYU4iLCJwYXJzZUZsb2F0IiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwibiIsImV2ZW50Iiwib25seUludGVnZXJzQWxsb3dlZCIsInRhcmdldCIsInRlbXBWYWx1ZSIsImdldFZhbGlkRnJhY3Rpb24iLCJyYXdOdW1iZXIiLCJyb3VuZCIsIm5vcm1hbGl6ZVZhbHVlQW5kSW5kZXgiLCJzZXRTdGF0ZSIsInRvU3RyaW5nIiwib25DaGFuZ2UiLCJzdGF0ZSIsImJpbmQiLCJzaWduIiwic2hvdWxkVXBkYXRlIiwicHJldmVudERlZmF1bHQiLCJzdGVwIiwidXBkYXRlZEluZGV4IiwicGFyc2VJbnQiLCJ1cGRhdGVkVmFsdWUiLCJjbGFzc05hbWUiLCJjbGFzc2VzIiwibGFiZWwiLCJkaXNhYmxlZCIsImVycm9yIiwiaW5wdXRDbGFzc05hbWUiLCJkaXNhYmxlVW5kZXJsaW5lIiwiaGVscGVyVGV4dCIsInZhcmlhbnQiLCJ0ZXh0QWxpZ24iLCJuYW1lcyIsImRpc2FibGVkU3RhcnQiLCJkaXNhYmxlZEVuZCIsInJlZiIsImlucHV0UmVmIiwib25CbHVyIiwiZSIsImtleSIsImJsdXIiLCJjaGFuZ2VWYWx1ZSIsInN0YXJ0QWRvcm5tZW50IiwiZW5kQWRvcm5tZW50Iiwic3R5bGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJhcnJheSIsImJvb2wiLCJmdW5jIiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQU1BLE1BQU0sR0FBRyxTQUFUQSxNQUFTO0FBQUEsU0FBTztBQUNwQkMsSUFBQUEsS0FBSyxFQUFFO0FBQ0wsOEJBQXdCO0FBQ3RCLDJCQUFtQjtBQURHLE9BRG5CO0FBSUwseURBQW1EO0FBQ2pELDhCQUFzQixNQUQyQjtBQUVqREMsUUFBQUEsTUFBTSxFQUFFO0FBRnlDLE9BSjlDO0FBUUwseURBQW1EO0FBQ2pELDhCQUFzQixNQUQyQjtBQUVqREEsUUFBQUEsTUFBTSxFQUFFO0FBRnlDO0FBUjlDLEtBRGE7QUFjcEJDLElBQUFBLFVBQVUsRUFBRTtBQUNWQyxNQUFBQSxPQUFPLEVBQUU7QUFEQztBQWRRLEdBQVA7QUFBQSxDQUFmOztBQW1CQSxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFjO0FBQ25DLE1BQUksQ0FBQywwQkFBU0QsR0FBVCxDQUFELElBQWtCLENBQUMsMEJBQVNDLEdBQVQsQ0FBdkIsRUFBc0M7QUFDcEMsV0FBTyxDQUFQO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDLDBCQUFTRCxHQUFULENBQUQsSUFBa0IsMEJBQVNDLEdBQVQsQ0FBdEIsRUFBcUM7QUFDbkMsV0FBT0EsR0FBUDtBQUNEOztBQUVELE1BQUksMEJBQVNELEdBQVQsQ0FBSixFQUFtQjtBQUNqQixXQUFPQSxHQUFQ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QUFBQSxtQkFBbUIsRUFBRTtBQUxELEM7O2VBNlFULHdCQUFXeEMsTUFBWCxFQUFtQlEscUJBQW5CLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBUZXh0RmllbGQgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvVGV4dEZpZWxkJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgaXNGaW5pdGUgZnJvbSAnbG9kYXNoL2lzRmluaXRlJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0ljb25CdXR0b24nO1xuaW1wb3J0IElucHV0QWRvcm5tZW50IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0lucHV0QWRvcm5tZW50JztcbmltcG9ydCBSZW1vdmUgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1JlbW92ZSc7XG5pbXBvcnQgQWRkIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9BZGQnO1xuaW1wb3J0ICogYXMgbWF0aCBmcm9tICdtYXRoanMnO1xuXG5jb25zdCBzdHlsZXMgPSAoKSA9PiAoe1xuICBpbnB1dDoge1xuICAgICcmIGlucHV0W3R5cGU9bnVtYmVyXSc6IHtcbiAgICAgICctbW96LWFwcGVhcmFuY2UnOiAndGV4dGZpZWxkJyxcbiAgICB9LFxuICAgICcmIGlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbic6IHtcbiAgICAgICctd2Via2l0LWFwcGVhcmFuY2UnOiAnbm9uZScsXG4gICAgICBtYXJnaW46IDAsXG4gICAgfSxcbiAgICAnJiBpbnB1dFt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24nOiB7XG4gICAgICAnLXdlYmtpdC1hcHBlYXJhbmNlJzogJ25vbmUnLFxuICAgICAgbWFyZ2luOiAwLFxuICAgIH0sXG4gIH0sXG4gIGljb25CdXR0b246IHtcbiAgICBwYWRkaW5nOiAnMnB4JyxcbiAgfSxcbn0pO1xuXG5jb25zdCBmYWxsYmFja051bWJlciA9IChtaW4sIG1heCkgPT4ge1xuICBpZiAoIWlzRmluaXRlKG1pbikgJiYgIWlzRmluaXRlKG1heCkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmICghaXNGaW5pdGUobWluKSAmJiBpc0Zpbml0ZShtYXgpKSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIGlmIChpc0Zpbml0ZShtaW4pKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxufTtcblxuZXhwb3J0IGNsYXNzIE51bWJlclRleHRGaWVsZEN1c3RvbSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjdXN0b21WYWx1ZXM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICAgIGlucHV0Q2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25seUludGVnZXJzQWxsb3dlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdmFsdWU6IFByb3BUeXBlcy5hbnksXG4gICAgbWluOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG1heDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGVwOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVVbmRlcmxpbmU6IFByb3BUeXBlcy5ib29sLFxuICAgIHRleHRBbGlnbjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB2YXJpYW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBzdGVwOiAxLFxuICAgIGN1c3RvbVZhbHVlczogW10sXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICB2YXJpYW50OiAnc3RhbmRhcmQnLFxuICAgIG9ubHlJbnRlZ2Vyc0FsbG93ZWQ6IGZhbHNlLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgY29uc3QgeyB2YWx1ZSwgY3VycmVudEluZGV4IH0gPSB0aGlzLm5vcm1hbGl6ZVZhbHVlQW5kSW5kZXgocHJvcHMuY3VzdG9tVmFsdWVzLCBwcm9wcy52YWx1ZSk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgdmFsdWUsXG4gICAgICBjdXJyZW50SW5kZXgsXG4gICAgfTtcblxuICAgIGlmICh2YWx1ZSAhPT0gcHJvcHMudmFsdWUpIHtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2Uoe30sIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMocHJvcHMpIHtcbiAgICBjb25zdCB7IHZhbHVlLCBjdXJyZW50SW5kZXggfSA9IHRoaXMubm9ybWFsaXplVmFsdWVBbmRJbmRleChwcm9wcy5jdXN0b21WYWx1ZXMsIHByb3BzLnZhbHVlLCBwcm9wcy5taW4sIHByb3BzLm1heCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWUsIGN1cnJlbnRJbmRleCB9KTtcbiAgfVxuXG4gIGNsYW1wKHZhbHVlLCBtaW4gPSB0aGlzLnByb3BzLm1pbiwgbWF4ID0gdGhpcy5wcm9wcy5tYXgpIHtcbiAgICBjb25zdCB7IGN1c3RvbVZhbHVlcyB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICgoY3VzdG9tVmFsdWVzIHx8IFtdKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKCFpc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxsYmFja051bWJlcihtaW4sIG1heCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRmluaXRlKG1heCkpIHtcbiAgICAgIHZhbHVlID0gTWF0aC5taW4odmFsdWUsIG1heCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRmluaXRlKG1pbikpIHtcbiAgICAgIHZhbHVlID0gTWF0aC5tYXgodmFsdWUsIG1pbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbm9ybWFsaXplVmFsdWVBbmRJbmRleCA9IChjdXN0b21WYWx1ZXMsIG51bWJlciwgbWluLCBtYXgpID0+IHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNsYW1wKG51bWJlciwgbWluLCBtYXgpO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IChjdXN0b21WYWx1ZXMgfHwgW10pLmZpbmRJbmRleCgodmFsKSA9PiB2YWwgPT09IHZhbHVlKTtcblxuICAgIGlmICgoY3VzdG9tVmFsdWVzIHx8IFtdKS5sZW5ndGggPiAwICYmIGN1cnJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgIGNvbnN0IGNsb3Nlc3RWYWx1ZSA9XG4gICAgICAgIHR5cGUgPT09ICd0ZXh0JyA/IHRoaXMuZ2V0Q2xvc2VzdEZyYWN0aW9uVmFsdWUoY3VzdG9tVmFsdWVzLCB2YWx1ZSkgOiB0aGlzLmdldENsb3Nlc3RWYWx1ZShjdXN0b21WYWx1ZXMsIHZhbHVlKTtcblxuICAgICAgcmV0dXJuIHsgdmFsdWU6IGNsb3Nlc3RWYWx1ZS52YWx1ZSwgY3VycmVudEluZGV4OiBjbG9zZXN0VmFsdWUuaW5kZXggfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyB2YWx1ZSwgY3VycmVudEluZGV4IH07XG4gIH07XG5cbiAgZ2V0Q2xvc2VzdFZhbHVlID0gKGN1c3RvbVZhbHVlcywgbnVtYmVyKSA9PlxuICAgIGN1c3RvbVZhbHVlcy5yZWR1Y2UoXG4gICAgICAoY2xvc2VzdCwgdmFsdWUsIGluZGV4KSA9PlxuICAgICAgICBNYXRoLmFicyh2YWx1ZSAtIG51bWJlcikgPCBNYXRoLmFicyhjbG9zZXN0LnZhbHVlIC0gbnVtYmVyKSA/IHsgdmFsdWUsIGluZGV4IH0gOiBjbG9zZXN0LFxuICAgICAgeyB2YWx1ZTogY3VzdG9tVmFsdWVzWzBdLCBpbmRleDogMCB9LFxuICAgICk7XG5cbiAgZ2V0Q2xvc2VzdEZyYWN0aW9uVmFsdWUgPSAoY3VzdG9tVmFsdWVzLCBudW1iZXIpID0+XG4gICAgY3VzdG9tVmFsdWVzLnJlZHVjZShcbiAgICAgIChjbG9zZXN0LCB2YWx1ZSwgaW5kZXgpID0+XG4gICAgICAgIE1hdGguYWJzKG1hdGgubnVtYmVyKG1hdGguZnJhY3Rpb24odmFsdWUpKSAtIG1hdGgubnVtYmVyKG1hdGguZnJhY3Rpb24obnVtYmVyKSkpIDxcbiAgICAgICAgTWF0aC5hYnMobWF0aC5udW1iZXIobWF0aC5mcmFjdGlvbihjbG9zZXN0LnZhbHVlKSkgLSBtYXRoLm51bWJlcihtYXRoLmZyYWN0aW9uKG51bWJlcikpKVxuICAgICAgICAgID8geyB2YWx1ZSwgaW5kZXggfVxuICAgICAgICAgIDogY2xvc2VzdCxcbiAgICAgIHsgdmFsdWU6IGN1c3RvbVZhbHVlc1swXSwgaW5kZXg6IDAgfSxcbiAgICApO1xuXG4gIGdldFZhbGlkRnJhY3Rpb24gPSAodmFsdWUpID0+IHtcbiAgICBpZiAodGhpcy5pc1Bvc2l0aXZlSW50ZWdlcih2YWx1ZS50cmltKCkpKSB7XG4gICAgICByZXR1cm4gdmFsdWUudHJpbSgpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudHJpbSgpID09PSAnJyB8fCB2YWx1ZS50cmltKCkuc3BsaXQoJy8nKS5sZW5ndGggIT09IDIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IFtudW1lcmF0b3IsIGRlbm9taW5hdG9yXSA9IHZhbHVlLnRyaW0oKS5zcGxpdCgnLycpO1xuICAgIGlmIChpc05hTihudW1lcmF0b3IpIHx8IGlzTmFOKGRlbm9taW5hdG9yKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBudW1lcmF0b3IgPSBwYXJzZUZsb2F0KG51bWVyYXRvcik7XG4gICAgZGVub21pbmF0b3IgPSBwYXJzZUZsb2F0KGRlbm9taW5hdG9yKTtcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobnVtZXJhdG9yKSB8fCAhTnVtYmVyLmlzSW50ZWdlcihkZW5vbWluYXRvcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG51bWVyYXRvciA8IDAgfHwgZGVub21pbmF0b3IgPCAxKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBudW1lcmF0b3IgKyAnLycgKyBkZW5vbWluYXRvcjtcbiAgfTtcblxuICBpc1Bvc2l0aXZlSW50ZWdlciA9IChuKSA9PiB7XG4gICAgcmV0dXJuIG4gPj4+IDAgPT09IHBhcnNlRmxvYXQobik7XG4gIH07XG5cbiAgb25CbHVyID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBjdXN0b21WYWx1ZXMsIG9ubHlJbnRlZ2Vyc0FsbG93ZWQsIHR5cGUgfSA9IHRoaXMucHJvcHM7XG4gICAgbGV0IHsgdmFsdWUgfSA9IGV2ZW50LnRhcmdldDtcbiAgICBpZiAodHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBsZXQgdGVtcFZhbHVlID0gdGhpcy5nZXRWYWxpZEZyYWN0aW9uKHZhbHVlKTtcbiAgICAgIGlmICh0ZW1wVmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSB0ZW1wVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHRoaXMucHJvcHMudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCByYXdOdW1iZXIgPSBvbmx5SW50ZWdlcnNBbGxvd2VkID8gTWF0aC5yb3VuZChwYXJzZUZsb2F0KHZhbHVlKSkgOiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBpZiAodHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICByYXdOdW1iZXIgPSB2YWx1ZS50cmltKCk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmFsdWU6IG51bWJlciwgY3VycmVudEluZGV4IH0gPSB0aGlzLm5vcm1hbGl6ZVZhbHVlQW5kSW5kZXgoY3VzdG9tVmFsdWVzLCByYXdOdW1iZXIpO1xuICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBudW1iZXIudG9TdHJpbmcoKSxcbiAgICAgICAgY3VycmVudEluZGV4LFxuICAgICAgfSxcbiAgICAgICgpID0+IHRoaXMucHJvcHMub25DaGFuZ2UoZXZlbnQsIG51bWJlciksXG4gICAgKTtcbiAgfTtcblxuICBvbkNoYW5nZShldmVudCkge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBldmVudC50YXJnZXQ7XG4gICAgaWYgKHR5cGUgIT09ICd0ZXh0JyAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlIH0pO1xuICB9XG5cbiAgY2hhbmdlVmFsdWUoZXZlbnQsIHNpZ24gPSAxLCBzaG91bGRVcGRhdGUgPSBmYWxzZSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgeyBjdXN0b21WYWx1ZXMsIHN0ZXAsIG9ubHlJbnRlZ2Vyc0FsbG93ZWQsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgY3VycmVudEluZGV4LCB2YWx1ZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB1cGRhdGVkSW5kZXggPSBjdXJyZW50SW5kZXggKyBzaWduICogMTtcbiAgICBsZXQgbnVtYmVyO1xuICAgIGlmIChjdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHVwZGF0ZWRJbmRleCA8IDAgfHwgdXBkYXRlZEluZGV4ID49IGN1c3RvbVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbnVtYmVyID0gY3VzdG9tVmFsdWVzW3VwZGF0ZWRJbmRleF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJhd051bWJlciA9IG9ubHlJbnRlZ2Vyc0FsbG93ZWQgPyBwYXJzZUludCh2YWx1ZSkgOiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IChyYXdOdW1iZXIgKiAxMDAwMCArIHN0ZXAgKiBzaWduICogMTAwMDApIC8gMTAwMDA7XG4gICAgICBudW1iZXIgPSB0aGlzLmNsYW1wKHVwZGF0ZWRWYWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBudW1iZXIudG9TdHJpbmcoKSxcbiAgICAgICAgY3VycmVudEluZGV4OiB1cGRhdGVkSW5kZXgsXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlKSB7XG4gICAgICAgICAgb25DaGFuZ2UoZXZlbnQsIG51bWJlcik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjbGFzc2VzLFxuICAgICAgbGFiZWwsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGVycm9yLFxuICAgICAgbWluLFxuICAgICAgbWF4LFxuICAgICAgY3VzdG9tVmFsdWVzLFxuICAgICAgaW5wdXRDbGFzc05hbWUsXG4gICAgICBkaXNhYmxlVW5kZXJsaW5lLFxuICAgICAgaGVscGVyVGV4dCxcbiAgICAgIHZhcmlhbnQsXG4gICAgICB0ZXh0QWxpZ24sXG4gICAgICB0eXBlID0gJ251bWJlcicsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBuYW1lcyA9IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBjbGFzc2VzLmlucHV0KTtcbiAgICAvL0xvZ2ljIHRvIGRpc2FibGUgdGhlIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnNcbiAgICBsZXQgZGlzYWJsZWRTdGFydCA9IGZhbHNlO1xuICAgIGxldCBkaXNhYmxlZEVuZCA9IGZhbHNlO1xuICAgIGlmIChjdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgZGlzYWJsZWRTdGFydCA9IHZhbHVlID09PSBjdXN0b21WYWx1ZXNbMF07XG4gICAgICBkaXNhYmxlZEVuZCA9IHZhbHVlID09PSBjdXN0b21WYWx1ZXNbY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDFdO1xuICAgIH0gZWxzZSBpZiAoaXNGaW5pdGUobWluKSAmJiBpc0Zpbml0ZShtYXgpKSB7XG4gICAgICBkaXNhYmxlZFN0YXJ0ID0gdmFsdWUgPT09IG1pbjtcbiAgICAgIGRpc2FibGVkRW5kID0gdmFsdWUgPT09IG1heDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICB2YXJpYW50PXt2YXJpYW50fVxuICAgICAgICBpbnB1dFJlZj17KHJlZikgPT4gKHRoaXMuaW5wdXRSZWYgPSByZWYpfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e3RoaXMub25CbHVyfVxuICAgICAgICBvbktleVByZXNzPXsoZSkgPT4ge1xuICAgICAgICAgIC8vIG9uY2UgdGhlIEVudGVyIGtleSBpcyBwcmVzc2VkLCB3ZSBmb3JjZSBpbnB1dCBibHVyXG4gICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInICYmIHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuYmx1cigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVZhbHVlKGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVmFsdWUoZSwgLTEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgdGl0bGU9eycnfVxuICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICBjbGFzc05hbWU9e25hbWVzfVxuICAgICAgICBJbnB1dFByb3BzPXt7XG4gICAgICAgICAgY2xhc3NOYW1lOiBpbnB1dENsYXNzTmFtZSxcbiAgICAgICAgICBkaXNhYmxlVW5kZXJsaW5lOiBkaXNhYmxlVW5kZXJsaW5lLFxuICAgICAgICAgIHN0YXJ0QWRvcm5tZW50OiAoXG4gICAgICAgICAgICA8SW5wdXRBZG9ybm1lbnQgcG9zaXRpb249XCJzdGFydFwiPlxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5pY29uQnV0dG9ufVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZCA/IGRpc2FibGVkIDogZGlzYWJsZWRTdGFydH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gdGhpcy5jaGFuZ2VWYWx1ZShlLCAtMSwgdHJ1ZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UmVtb3ZlIGZvbnRTaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICA8L0lucHV0QWRvcm5tZW50PlxuICAgICAgICAgICksXG4gICAgICAgICAgZW5kQWRvcm5tZW50OiAoXG4gICAgICAgICAgICA8SW5wdXRBZG9ybm1lbnQgcG9zaXRpb249XCJlbmRcIj5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuaWNvbkJ1dHRvbn1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgPyBkaXNhYmxlZCA6IGRpc2FibGVkRW5kfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB0aGlzLmNoYW5nZVZhbHVlKGUsIDEsIHRydWUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEFkZCBmb250U2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgPC9JbnB1dEFkb3JubWVudD5cbiAgICAgICAgICApLFxuICAgICAgICB9fVxuICAgICAgICBpbnB1dFByb3BzPXt7XG4gICAgICAgICAgc3R5bGU6IHsgdGV4dEFsaWduIH0sXG4gICAgICAgICAgbWluLFxuICAgICAgICAgIG1heCxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcykoTnVtYmVyVGV4dEZpZWxkQ3VzdG9tKTtcbiJdfQ==
@@ -143,7 +143,7 @@ var NumberTextField = /*#__PURE__*/function (_React$Component) {
143
143
  (0, _createClass2["default"])(NumberTextField, [{
144
144
  key: "UNSAFE_componentWillReceiveProps",
145
145
  value: function UNSAFE_componentWillReceiveProps(props) {
146
- var value = this.clamp(props.value);
146
+ var value = this.clamp(props.value, props.min, props.max);
147
147
  this.setState({
148
148
  value: value
149
149
  });
@@ -151,14 +151,13 @@ var NumberTextField = /*#__PURE__*/function (_React$Component) {
151
151
  }, {
152
152
  key: "clamp",
153
153
  value: function clamp(value) {
154
+ var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props.min;
155
+ var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.props.max;
156
+
154
157
  if (!(0, _isFinite["default"])(value)) {
155
- return fallbackNumber(this.props.min, this.props.max);
158
+ return fallbackNumber(min, max);
156
159
  }
157
160
 
158
- var _this$props2 = this.props,
159
- min = _this$props2.min,
160
- max = _this$props2.max;
161
-
162
161
  if ((0, _isFinite["default"])(max)) {
163
162
  value = Math.min(value, max);
164
163
  }
@@ -187,18 +186,18 @@ var NumberTextField = /*#__PURE__*/function (_React$Component) {
187
186
  value: function render() {
188
187
  var _this2 = this;
189
188
 
190
- var _this$props3 = this.props,
191
- className = _this$props3.className,
192
- classes = _this$props3.classes,
193
- label = _this$props3.label,
194
- disabled = _this$props3.disabled,
195
- suffix = _this$props3.suffix,
196
- min = _this$props3.min,
197
- max = _this$props3.max,
198
- inputClassName = _this$props3.inputClassName,
199
- disableUnderline = _this$props3.disableUnderline,
200
- showErrorWhenOutsideRange = _this$props3.showErrorWhenOutsideRange,
201
- variant = _this$props3.variant;
189
+ var _this$props2 = this.props,
190
+ className = _this$props2.className,
191
+ classes = _this$props2.classes,
192
+ label = _this$props2.label,
193
+ disabled = _this$props2.disabled,
194
+ suffix = _this$props2.suffix,
195
+ min = _this$props2.min,
196
+ max = _this$props2.max,
197
+ inputClassName = _this$props2.inputClassName,
198
+ disableUnderline = _this$props2.disableUnderline,
199
+ showErrorWhenOutsideRange = _this$props2.showErrorWhenOutsideRange,
200
+ variant = _this$props2.variant;
202
201
  var names = (0, _classnames["default"])(classes.root, className);
203
202
  var error = showErrorWhenOutsideRange && this.getError();
204
203
  return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
@@ -265,4 +264,4 @@ exports.NumberTextField = NumberTextField;
265
264
  var _default = (0, _styles.withStyles)(styles)(NumberTextField);
266
265
 
267
266
  exports["default"] = _default;
268
- //# sourceMappingURL=number-text-field.js.map
267
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9udW1iZXItdGV4dC1maWVsZC5qc3giXSwibmFtZXMiOlsibG9nIiwic3R5bGVzIiwidGhlbWUiLCJyb290IiwibWFyZ2luUmlnaHQiLCJzcGFjaW5nIiwidW5pdCIsIndpZHRoIiwiZmFsbGJhY2tOdW1iZXIiLCJtaW4iLCJtYXgiLCJOdW1iZXJUZXh0RmllbGQiLCJwcm9wcyIsImV2ZW50IiwidmFsdWUiLCJ0YXJnZXQiLCJyYXdOdW1iZXIiLCJwYXJzZUZsb2F0IiwibnVtYmVyIiwiY2xhbXAiLCJzdGF0ZSIsInNldFN0YXRlIiwidG9TdHJpbmciLCJvbkNoYW5nZSIsImZsb2F0IiwiY2xhbXBlZCIsImVycm9yTWVzc2FnZSIsImJpbmQiLCJNYXRoIiwiY2xhc3NOYW1lIiwiY2xhc3NlcyIsImxhYmVsIiwiZGlzYWJsZWQiLCJzdWZmaXgiLCJpbnB1dENsYXNzTmFtZSIsImRpc2FibGVVbmRlcmxpbmUiLCJzaG93RXJyb3JXaGVuT3V0c2lkZVJhbmdlIiwidmFyaWFudCIsIm5hbWVzIiwiZXJyb3IiLCJnZXRFcnJvciIsInJlZiIsImlucHV0UmVmIiwib25CbHVyIiwiZSIsImtleSIsImJsdXIiLCJzaHJpbmsiLCJlbmRBZG9ybm1lbnQiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsImJvb2wiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiZnVuYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBQ0EsSUFBTUEsR0FBRyxHQUFHLHVCQUFNLHNDQUFOLENBQVo7O0FBRUEsSUFBTUMsTUFBTSxHQUFHLFNBQVRBLE1BQVMsQ0FBQ0MsS0FBRDtBQUFBLFNBQVk7QUFDekJDLElBQUFBLElBQUksRUFBRTtBQUNKQyxNQUFBQSxXQUFXLEVBQUVGLEtBQUssQ0FBQ0csT0FBTixDQUFjQyxJQUR2QjtBQUVKLGlC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QUFiRixDO2lDQURSNUMsZSxrQkFpQlc7QUFDcEJ5QixFQUFBQSx5QkFBeUIsRUFBRTtBQURQLEM7O2VBd0pULHdCQUFXbkMsTUFBWCxFQUFtQlUsZUFBbkIsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRleHRGaWVsZCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UZXh0RmllbGQnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgaXNGaW5pdGUgZnJvbSAnbG9kYXNoL2lzRmluaXRlJztcbmltcG9ydCBJbnB1dEFkb3JubWVudCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9JbnB1dEFkb3JubWVudCc7XG5jb25zdCBsb2cgPSBkZWJ1ZygnQHBpZS1saWI6Y29uZmlnLXVpOm51bWJlci10ZXh0LWZpZWxkJyk7XG5cbmNvbnN0IHN0eWxlcyA9ICh0aGVtZSkgPT4gKHtcbiAgcm9vdDoge1xuICAgIG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgJyYgbGFiZWwnOiB7XG4gICAgICB3aWR0aDogJ21heC1jb250ZW50JyxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IGZhbGxiYWNrTnVtYmVyID0gKG1pbiwgbWF4KSA9PiB7XG4gIGlmICghaXNGaW5pdGUobWluKSAmJiAhaXNGaW5pdGUobWF4KSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICghaXNGaW5pdGUobWluKSAmJiBpc0Zpbml0ZShtYXgpKSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIGlmIChpc0Zpbml0ZShtaW4pKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxufTtcblxuZXhwb3J0IGNsYXNzIE51bWJlclRleHRGaWVsZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaW5wdXRDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgbWluOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG1heDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzdWZmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2hvd0Vycm9yV2hlbk91dHNpZGVSYW5nZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGlzYWJsZVVuZGVybGluZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgdmFyaWFudDogUHJvcFR5cGVzLnN0cmluZyxcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHNob3dFcnJvcldoZW5PdXRzaWRlUmFuZ2U6IGZhbHNlLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNsYW1wKHByb3BzLnZhbHVlKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICB2YWx1ZSxcbiAgICB9O1xuXG4gICAgaWYgKHZhbHVlICE9PSBwcm9wcy52YWx1ZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh7fSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XG4gIH1cblxuICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhwcm9wcykge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jbGFtcChwcm9wcy52YWx1ZSwgcHJvcHMubWluLCBwcm9wcy5tYXgpO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlIH0pO1xuICB9XG5cbiAgY2xhbXAodmFsdWUsIG1pbiA9IHRoaXMucHJvcHMubWluLCBtYXggPSB0aGlzLnByb3BzLm1heCkge1xuICAgIGlmICghaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2tOdW1iZXIobWluLCBtYXgpO1xuICAgIH1cblxuICAgIGlmIChpc0Zpbml0ZShtYXgpKSB7XG4gICAgICB2YWx1ZSA9IE1hdGgubWluKHZhbHVlLCBtYXgpO1xuICAgIH1cblxuICAgIGlmIChpc0Zpbml0ZShtaW4pKSB7XG4gICAgICB2YWx1ZSA9IE1hdGgubWF4KHZhbHVlLCBtaW4pO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvbiBCbHVyICh0aGlzIGNhbiBiZSB0cmlnZ2VyZWQgYnkgcHJlc3NpbmcgRW50ZXIsIHNlZSBiZWxvdylcbiAgICogd2UgY2hlY2sgdGhlIGVudGVyZWQgdmFsdWUgYW5kIHJlc2V0IGl0IGlmIG5lZWRlZFxuICAgKi9cbiAgb25CbHVyID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICBjb25zdCByYXdOdW1iZXIgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBsb2coJ3Jhd051bWJlcjogJywgcmF3TnVtYmVyKTtcblxuICAgIGNvbnN0IG51bWJlciA9IHRoaXMuY2xhbXAocmF3TnVtYmVyKTtcbiAgICBsb2coJ251bWJlcjogJywgbnVtYmVyKTtcblxuICAgIGlmIChudW1iZXIgIT09IHRoaXMuc3RhdGUudmFsdWUpIHtcbiAgICAgIGxvZygndHJpZ2dlciB1cGRhdGUuLi4nKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogbnVtYmVyLnRvU3RyaW5nKCkgfSwgKCkgPT4ge1xuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGV2ZW50LCBudW1iZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIG9uQ2hhbmdlKGV2ZW50KSB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlIH0pO1xuICB9XG5cbiAgZXJyb3JNZXNzYWdlID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgbWluLCBtYXggfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKG1pbiAmJiBtYXgpIHtcbiAgICAgIHJldHVybiBgVGhlIHZhbHVlIG11c3QgYmUgYmV0d2VlbiAke21pbn0gYW5kICR7bWF4fWA7XG4gICAgfVxuICAgIGlmIChtaW4pIHtcbiAgICAgIHJldHVybiBgVGhlIHZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICR7bWlufWA7XG4gICAgfVxuICAgIGlmIChtYXgpIHtcbiAgICAgIHJldHVybiBgVGhlIHZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICR7bWF4fWA7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBpZiB0aGUgaW5wdXQgaGFzIHRvIHNob3cgZXJyb3Igd2hlbiBvdXRzaWRlIHJhbmdlLFxuICAgKiBhbmQgdGhlIGVudGVyZWQgdmFsdWUgaXMgbm90IG1hdGNoaW5nIHRoZSByZXF1aXJlbWVudHNcbiAgICogd2UgZGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAqL1xuXG4gIGdldEVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgZmxvYXQgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBjb25zdCBjbGFtcGVkID0gdGhpcy5jbGFtcChmbG9hdCk7XG4gICAgaWYgKGNsYW1wZWQgIT09IGZsb2F0KSB7XG4gICAgICByZXR1cm4gdGhpcy5lcnJvck1lc3NhZ2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNsYXNzZXMsXG4gICAgICBsYWJlbCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgc3VmZml4LFxuICAgICAgbWluLFxuICAgICAgbWF4LFxuICAgICAgaW5wdXRDbGFzc05hbWUsXG4gICAgICBkaXNhYmxlVW5kZXJsaW5lLFxuICAgICAgc2hvd0Vycm9yV2hlbk91dHNpZGVSYW5nZSxcbiAgICAgIHZhcmlhbnQsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbmFtZXMgPSBjbGFzc05hbWVzKGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKTtcblxuICAgIGNvbnN0IGVycm9yID0gc2hvd0Vycm9yV2hlbk91dHNpZGVSYW5nZSAmJiB0aGlzLmdldEVycm9yKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgdmFyaWFudD17dmFyaWFudCB8fCAnc3RhbmRhcmQnfVxuICAgICAgICBpbnB1dFJlZj17KHJlZikgPT4ge1xuICAgICAgICAgIHRoaXMuaW5wdXRSZWYgPSByZWY7XG4gICAgICAgIH19XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS52YWx1ZX1cbiAgICAgICAgZXJyb3I9eyEhZXJyb3J9XG4gICAgICAgIGhlbHBlclRleHQ9e2Vycm9yfVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX1cbiAgICAgICAgb25CbHVyPXt0aGlzLm9uQmx1cn1cbiAgICAgICAgb25LZXlQcmVzcz17KGUpID0+IHtcbiAgICAgICAgICAvLyBvbmNlIHRoZSBFbnRlciBrZXkgaXMgcHJlc3NlZCwgd2UgZm9yY2UgaW5wdXQgYmx1clxuICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiB0aGlzLmlucHV0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmJsdXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICBjbGFzc05hbWU9e25hbWVzfVxuICAgICAgICBJbnB1dExhYmVsUHJvcHM9e3tcbiAgICAgICAgICBzaHJpbms6IHRydWUsXG4gICAgICAgIH19XG4gICAgICAgIElucHV0UHJvcHM9e3tcbiAgICAgICAgICBlbmRBZG9ybm1lbnQ6IHN1ZmZpeCAmJiA8SW5wdXRBZG9ybm1lbnQgcG9zaXRpb249XCJlbmRcIj57c3VmZml4fTwvSW5wdXRBZG9ybm1lbnQ+LFxuICAgICAgICAgIGNsYXNzTmFtZTogaW5wdXRDbGFzc05hbWUsXG4gICAgICAgICAgZGlzYWJsZVVuZGVybGluZTogZGlzYWJsZVVuZGVybGluZSxcbiAgICAgICAgfX1cbiAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgIG1pbixcbiAgICAgICAgICBtYXgsXG4gICAgICAgIH19XG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMpKE51bWJlclRleHRGaWVsZCk7XG4iXX0=
@@ -15,10 +15,15 @@ var _react = _interopRequireDefault(require("react"));
15
15
 
16
16
  var _styles = require("@material-ui/core/styles");
17
17
 
18
+ var _renderUi = require("@pie-lib/render-ui");
19
+
18
20
  var _default = (0, _styles.withStyles)({
19
21
  label: {
20
22
  left: '-5px',
21
23
  position: 'relative'
24
+ },
25
+ customColor: {
26
+ color: "".concat(_renderUi.color.tertiary(), " !important")
22
27
  }
23
28
  })(function (_ref) {
24
29
  var label = _ref.label,
@@ -28,8 +33,11 @@ var _default = (0, _styles.withStyles)({
28
33
  classes = _ref.classes;
29
34
  return /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
30
35
  value: value,
31
- classes: classes,
36
+ classes: {
37
+ label: classes.label
38
+ },
32
39
  control: /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
40
+ className: classes.customColor,
33
41
  checked: checked,
34
42
  onChange: onChange
35
43
  }),
@@ -38,4 +46,4 @@ var _default = (0, _styles.withStyles)({
38
46
  });
39
47
 
40
48
  exports["default"] = _default;
41
- //# sourceMappingURL=radio-with-label.js.map
49
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yYWRpby13aXRoLWxhYmVsLmpzeCJdLCJuYW1lcyI6WyJsYWJlbCIsImxlZnQiLCJwb3NpdGlvbiIsImN1c3RvbUNvbG9yIiwiY29sb3IiLCJ0ZXJ0aWFyeSIsInZhbHVlIiwiY2hlY2tlZCIsIm9uQ2hhbmdlIiwiY2xhc3NlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O2VBRWUsd0JBQVc7QUFDeEJBLEVBQUFBLEtBQUssRUFBRTtBQUNMQyxJQUFBQSxJQUFJLEVBQUUsTUFERDtBQUVMQyxJQUFBQSxRQUFRLEVBQUU7QUFGTCxHQURpQjtBQUt4QkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1hDLElBQUFBLEtBQUssWUFBS0EsZ0JBQU1DLFFBQU4sRUFBTDtBQURNO0FBTFcsQ0FBWCxFQVFaO0FBQUEsTUFBR0wsS0FBSCxRQUFHQSxLQUFIO0FBQUEsTUFBVU0sS0FBVixRQUFVQSxLQUFWO0FBQUEsTUFBaUJDLE9BQWpCLFFBQWlCQSxPQUFqQjtBQUFBLE1BQTBCQyxRQUExQixRQUEwQkEsUUFBMUI7QUFBQSxNQUFvQ0MsT0FBcEMsUUFBb0NBLE9BQXBDO0FBQUEsc0JBQ0QsZ0NBQUMsNEJBQUQ7QUFDRSxJQUFBLEtBQUssRUFBRUgsS0FEVDtBQUVFLElBQUEsT0FBTyxFQUFFO0FBQUVOLE1BQUFBLEtBQUssRUFBRVMsT0FBTyxDQUFDVDtBQUFqQixLQUZYO0FBR0UsSUFBQSxPQUFPLGVBQ1AsZ0NBQUMsaUJBQUQ7QUFDSSxNQUFBLFNBQVMsRUFBRVMsT0FBTyxDQUFDTixXQUR2QjtBQUVJLE1BQUEsT0FBTyxFQUFFSSxPQUZiO0FBR0ksTUFBQSxRQUFRLEVBQUVDO0FBSGQsTUFKRjtBQVVFLElBQUEsS0FBSyxFQUFFUjtBQVZULElBREM7QUFBQSxDQVJZLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRm9ybUNvbnRyb2xMYWJlbCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9Gb3JtQ29udHJvbExhYmVsJztcbmltcG9ydCBSYWRpbyBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9SYWRpbyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgeyBjb2xvciB9IGZyb20gXCJAcGllLWxpYi9yZW5kZXItdWlcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHtcbiAgbGFiZWw6IHtcbiAgICBsZWZ0OiAnLTVweCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIH0sXG4gIGN1c3RvbUNvbG9yOiB7XG4gICAgY29sb3I6IGAke2NvbG9yLnRlcnRpYXJ5KCl9ICFpbXBvcnRhbnRgXG4gIH0sXG59KSgoeyBsYWJlbCwgdmFsdWUsIGNoZWNrZWQsIG9uQ2hhbmdlLCBjbGFzc2VzIH0pID0+IChcbiAgPEZvcm1Db250cm9sTGFiZWxcbiAgICB2YWx1ZT17dmFsdWV9XG4gICAgY2xhc3Nlcz17eyBsYWJlbDogY2xhc3Nlcy5sYWJlbCB9fVxuICAgIGNvbnRyb2w9e1xuICAgIDxSYWRpb1xuICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuY3VzdG9tQ29sb3J9XG4gICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAvPlxuICB9XG4gICAgbGFiZWw9e2xhYmVsfVxuICAvPlxuKSk7XG4iXX0=
@@ -74,4 +74,4 @@ DisplaySize.propTypes = {
74
74
  };
75
75
  var _default = DisplaySize;
76
76
  exports["default"] = _default;
77
- //# sourceMappingURL=display-size.js.map
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXR0aW5ncy9kaXNwbGF5LXNpemUuanN4Il0sIm5hbWVzIjpbIkRpc3BsYXlTaXplIiwidGhlbWUiLCJkaXNwbGF5U2l6ZSIsImRpc3BsYXkiLCJwYWRkaW5nVG9wIiwic3BhY2luZyIsInVuaXQiLCJzaXplIiwibGFiZWwiLCJjbGFzc2VzIiwib25DaGFuZ2UiLCJ1cGRhdGVTaXplIiwia2V5IiwidiIsIndpZHRoIiwiZSIsImhlaWdodCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInNoYXBlIiwibnVtYmVyIiwiaXNSZXF1aXJlZCIsInN0cmluZyIsImZ1bmMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLFdBQVcsR0FBRyx3QkFBVyxVQUFDQyxLQUFEO0FBQUEsU0FBWTtBQUN6Q0MsSUFBQUEsV0FBVyxFQUFFO0FBQ1hDLE1BQUFBLE9BQU8sRUFBRSxNQURFO0FBRVhDLE1BQUFBLFVBQVUsRUFBRUgsS0FBSyxDQUFDSSxPQUFOLENBQWNDO0FBRmY7QUFENEIsR0FBWjtBQUFBLENBQVgsRUFLaEIsZ0JBQXdDO0FBQUEsTUFBckNDLElBQXFDLFFBQXJDQSxJQUFxQztBQUFBLE1BQS9CQyxLQUErQixRQUEvQkEsS0FBK0I7QUFBQSxNQUF4QkMsT0FBd0IsUUFBeEJBLE9BQXdCO0FBQUEsTUFBZkMsUUFBZSxRQUFmQSxRQUFlOztBQUMxQyxNQUFNQyxVQUFVLEdBQUcsU0FBYkEsVUFBYSxDQUFDQyxHQUFELEVBQU1DLENBQU4sRUFBWTtBQUM3QkgsSUFBQUEsUUFBUSxpQ0FBTUgsSUFBTiw0Q0FBYUssR0FBYixFQUFtQkMsQ0FBbkIsR0FBUjtBQUNELEdBRkQ7O0FBR0Esc0JBQ0UsMERBQ0UsZ0NBQUMsc0JBQUQsUUFBYUwsS0FBYixDQURGLGVBRUU7QUFBSyxJQUFBLFNBQVMsRUFBRUMsT0FBTyxDQUFDUDtBQUF4QixrQkFDRSxnQ0FBQywyQkFBRDtBQUNFLElBQUEsS0FBSyxFQUFDLE9BRFI7QUFFRSxJQUFBLElBQUksRUFBQyxRQUZQO0FBR0UsSUFBQSxPQUFPLEVBQUMsVUFIVjtBQUlFLElBQUEsS0FBSyxFQUFFSyxJQUFJLENBQUNPLEtBSmQ7QUFLRSxJQUFBLEdBQUcsRUFBRSxHQUxQO0FBTUUsSUFBQSxHQUFHLEVBQUUsSUFOUDtBQU9FLElBQUEsUUFBUSxFQUFFLGtCQUFDQyxDQUFELEVBQUlGLENBQUo7QUFBQSxhQUFVRixVQUFVLENBQUMsT0FBRCxFQUFVRSxDQUFWLENBQXBCO0FBQUE7QUFQWixJQURGLGVBVUUsZ0NBQUMsMkJBQUQ7QUFDRSxJQUFBLEtBQUssRUFBQyxRQURSO0FBRUUsSUFBQSxJQUFJLEVBQUMsUUFGUDtBQUdFLElBQUEsT0FBTyxFQUFDLFVBSFY7QUFJRSxJQUFBLEdBQUcsRUFBRSxHQUpQO0FBS0UsSUFBQSxHQUFHLEVBQUUsSUFMUDtBQU1FLElBQUEsS0FBSyxFQUFFTixJQUFJLENBQUNTLE1BTmQ7QUFPRSxJQUFBLFFBQVEsRUFBRSxrQkFBQ0QsQ0FBRCxFQUFJRixDQUFKO0FBQUEsYUFBVUYsVUFBVSxDQUFDLFFBQUQsRUFBV0UsQ0FBWCxDQUFwQjtBQUFBO0FBUFosSUFWRixDQUZGLENBREY7QUF5QkQsQ0FsQ21CLENBQXBCO0FBb0NBYixXQUFXLENBQUNpQixTQUFaLEdBQXdCO0FBQ3RCVixFQUFBQSxJQUFJLEVBQUVXLHNCQUFVQyxLQUFWLENBQWdCO0FBQ3BCTCxJQUFBQSxLQUFLLEVBQUVJLHNCQUFVRSxNQUFWLENBQWlCQyxVQURKO0FBRXBCTCxJQUFBQSxNQUFNLEVBQUVFLHNCQUFVRSxNQUFWLENBQWlCQztBQUZMLEdBQWhCLEVBR0hBLFVBSm1CO0FBS3RCYixFQUFBQSxLQUFLLEVBQUVVLHNCQUFVSSxNQUFWLENBQWlCRCxVQUxGO0FBTXRCWCxFQUFBQSxRQUFRLEVBQUVRLHNCQUFVSztBQU5FLENBQXhCO2VBU2V2QixXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgVHlwb2dyYXBoeSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IE51bWJlclRleHRGaWVsZCBmcm9tICcuLi9udW1iZXItdGV4dC1maWVsZCc7XG5cbmNvbnN0IERpc3BsYXlTaXplID0gd2l0aFN0eWxlcygodGhlbWUpID0+ICh7XG4gIGRpc3BsYXlTaXplOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgfSxcbn0pKSgoeyBzaXplLCBsYWJlbCwgY2xhc3Nlcywgb25DaGFuZ2UgfSkgPT4ge1xuICBjb25zdCB1cGRhdGVTaXplID0gKGtleSwgdikgPT4ge1xuICAgIG9uQ2hhbmdlKHsgLi4uc2l6ZSwgW2tleV06IHYgfSk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxUeXBvZ3JhcGh5PntsYWJlbH08L1R5cG9ncmFwaHk+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5kaXNwbGF5U2l6ZX0+XG4gICAgICAgIDxOdW1iZXJUZXh0RmllbGRcbiAgICAgICAgICBsYWJlbD1cIldpZHRoXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHZhbHVlPXtzaXplLndpZHRofVxuICAgICAgICAgIG1pbj17MTUwfVxuICAgICAgICAgIG1heD17MTAwMH1cbiAgICAgICAgICBvbkNoYW5nZT17KGUsIHYpID0+IHVwZGF0ZVNpemUoJ3dpZHRoJywgdil9XG4gICAgICAgIC8+XG4gICAgICAgIDxOdW1iZXJUZXh0RmllbGRcbiAgICAgICAgICBsYWJlbD1cIkhlaWdodFwiXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBtaW49ezE1MH1cbiAgICAgICAgICBtYXg9ezEwMDB9XG4gICAgICAgICAgdmFsdWU9e3NpemUuaGVpZ2h0fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSwgdikgPT4gdXBkYXRlU2l6ZSgnaGVpZ2h0Jywgdil9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuXG5EaXNwbGF5U2l6ZS5wcm9wVHlwZXMgPSB7XG4gIHNpemU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBoZWlnaHQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgfSkuaXNSZXF1aXJlZCxcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGlzcGxheVNpemU7XG4iXX0=
@@ -36,10 +36,12 @@ exports.textField = textField;
36
36
 
37
37
  var toggle = function toggle(label) {
38
38
  var isConfigProperty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
39
+ var disabled = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
39
40
  return {
40
41
  type: 'toggle',
41
42
  label: label,
42
- isConfigProperty: isConfigProperty
43
+ isConfigProperty: isConfigProperty,
44
+ disabled: disabled
43
45
  };
44
46
  };
45
47
 
@@ -138,4 +140,4 @@ var checkboxes = function checkboxes(label, choices) {
138
140
  };
139
141
 
140
142
  exports.checkboxes = checkboxes;
141
- //# sourceMappingURL=index.js.map
143
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXR0aW5ncy9pbmRleC5qcyJdLCJuYW1lcyI6WyJ0ZXh0RmllbGQiLCJsYWJlbCIsImlzQ29uZmlnUHJvcGVydHkiLCJ0eXBlIiwidG9nZ2xlIiwiZGlzYWJsZWQiLCJ0b0Nob2ljZSIsIm9wdCIsInZhbHVlIiwicmFkaW8iLCJhcmdzIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImNhbGwiLCJhcmd1bWVudHMiLCJjaG9pY2VzIiwibWFwIiwibyIsImRyb3Bkb3duIiwibnVtYmVyRmllbGQiLCJvcHRpb25zIiwibnVtYmVyRmllbGRzIiwiZmllbGRzIiwiT2JqZWN0Iiwia2V5cyIsImtleSIsImNoZWNrYm94Iiwic2V0dGluZ3MiLCJjaGVja2JveGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7OztBQUlPLElBQU1BLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQUNDLEtBQUQ7QUFBQSxNQUFRQyxnQkFBUix1RUFBMkIsSUFBM0I7QUFBQSxTQUFxQztBQUM1REQsSUFBQUEsS0FBSyxFQUFMQSxLQUQ0RDtBQUU1REUsSUFBQUEsSUFBSSxFQUFFLFdBRnNEO0FBRzVERCxJQUFBQSxnQkFBZ0IsRUFBaEJBO0FBSDRELEdBQXJDO0FBQUEsQ0FBbEI7Ozs7QUFNQSxJQUFNRSxNQUFNLEdBQUcsU0FBVEEsTUFBUyxDQUFDSCxLQUFEO0FBQUEsTUFBUUMsZ0JBQVIsdUVBQTJCLEtBQTNCO0FBQUEsTUFBa0NHLFFBQWxDLHVFQUE2QyxLQUE3QztBQUFBLFNBQXdEO0FBQzVFRixJQUFBQSxJQUFJLEVBQUUsUUFEc0U7QUFFNUVGLElBQUFBLEtBQUssRUFBTEEsS0FGNEU7QUFHNUVDLElBQUFBLGdCQUFnQixFQUFoQkEsZ0JBSDRFO0FBSTVFRyxJQUFBQSxRQUFRLEVBQVJBO0FBSjRFLEdBQXhEO0FBQUEsQ0FBZjs7OztBQU9QLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQUNDLEdBQUQsRUFBUztBQUN4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QUFDQyxJQUFQLENBQVlULE9BQVosRUFBcUJDLEdBQXJCLENBQXlCLFVBQUNTLEdBQUQsRUFBUztBQUNoQ1YsSUFBQUEsT0FBTyxDQUFDVSxHQUFELENBQVAsR0FBZUMsUUFBUSxDQUFDWCxPQUFPLENBQUNVLEdBQUQsQ0FBUCxDQUFhekIsS0FBZCxFQUFxQmUsT0FBTyxDQUFDVSxHQUFELENBQTVCLEVBQW1DeEIsZ0JBQW5DLENBQXZCO0FBQ0QsR0FGRDtBQUlBLFNBQU87QUFDTEMsSUFBQUEsSUFBSSxFQUFFLFlBREQ7QUFFTEYsSUFBQUEsS0FBSyxFQUFMQSxLQUZLO0FBR0xlLElBQUFBLE9BQU8sRUFBUEE7QUFISyxHQUFQO0FBS0QsQ0FWTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYW5lbCBmcm9tICcuL3BhbmVsJztcblxuZXhwb3J0IHsgUGFuZWwgfTtcblxuZXhwb3J0IGNvbnN0IHRleHRGaWVsZCA9IChsYWJlbCwgaXNDb25maWdQcm9wZXJ0eSA9IHRydWUpID0+ICh7XG4gIGxhYmVsLFxuICB0eXBlOiAndGV4dEZpZWxkJyxcbiAgaXNDb25maWdQcm9wZXJ0eSxcbn0pO1xuXG5leHBvcnQgY29uc3QgdG9nZ2xlID0gKGxhYmVsLCBpc0NvbmZpZ1Byb3BlcnR5ID0gZmFsc2UsIGRpc2FibGVkID0gZmFsc2UpID0+ICh7XG4gIHR5cGU6ICd0b2dnbGUnLFxuICBsYWJlbCxcbiAgaXNDb25maWdQcm9wZXJ0eSxcbiAgZGlzYWJsZWQsXG59KTtcblxuY29uc3QgdG9DaG9pY2UgPSAob3B0KSA9PiB7XG4gIGlmICh0eXBlb2Ygb3B0ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7IGxhYmVsOiBvcHQsIHZhbHVlOiBvcHQgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gb3B0O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmFkaW8gPSBmdW5jdGlvbigpIHtcbiAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gIGNvbnN0IFtsYWJlbCwgY2hvaWNlcywgaXNDb25maWdQcm9wZXJ0eSA9IGZhbHNlXSA9IGFyZ3M7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAncmFkaW8nLFxuICAgIGxhYmVsLFxuICAgIGNob2ljZXM6IGNob2ljZXMgJiYgY2hvaWNlcy5tYXAoKG8pID0+IHRvQ2hvaWNlKG8pKSxcbiAgICBpc0NvbmZpZ1Byb3BlcnR5LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duID0gKGxhYmVsLCBjaG9pY2VzLCBpc0NvbmZpZ1Byb3BlcnR5ID0gZmFsc2UpID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZHJvcGRvd24nLFxuICAgIGxhYmVsLFxuICAgIGNob2ljZXMsXG4gICAgaXNDb25maWdQcm9wZXJ0eSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBudW1iZXJGaWVsZCA9IChsYWJlbCwgb3B0aW9ucywgaXNDb25maWdQcm9wZXJ0eSA9IGZhbHNlKSA9PiAoe1xuICAuLi5vcHRpb25zLFxuICBsYWJlbCxcbiAgdHlwZTogJ251bWJlckZpZWxkJyxcbiAgaXNDb25maWdQcm9wZXJ0eSxcbn0pO1xuXG5leHBvcnQgY29uc3QgbnVtYmVyRmllbGRzID0gKGxhYmVsLCBmaWVsZHMsIGlzQ29uZmlnUHJvcGVydHkgPSBmYWxzZSkgPT4ge1xuICBPYmplY3Qua2V5cyhmaWVsZHMpLm1hcCgoa2V5KSA9PiB7XG4gICAgZmllbGRzW2tleV0gPSBudW1iZXJGaWVsZChmaWVsZHNba2V5XS5sYWJlbCwgZmllbGRzW2tleV0sIGlzQ29uZmlnUHJvcGVydHkpO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdudW1iZXJGaWVsZHMnLFxuICAgIGxhYmVsLFxuICAgIGZpZWxkcyxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja2JveCA9IChsYWJlbCwgc2V0dGluZ3MsIGlzQ29uZmlnUHJvcGVydHkgPSBmYWxzZSkgPT4gKHtcbiAgLi4uc2V0dGluZ3MsXG4gIGxhYmVsLFxuICB0eXBlOiAnY2hlY2tib3gnLFxuICBpc0NvbmZpZ1Byb3BlcnR5LFxufSk7XG5cbmV4cG9ydCBjb25zdCBjaGVja2JveGVzID0gKGxhYmVsLCBjaG9pY2VzLCBpc0NvbmZpZ1Byb3BlcnR5ID0gZmFsc2UpID0+IHtcbiAgT2JqZWN0LmtleXMoY2hvaWNlcykubWFwKChrZXkpID0+IHtcbiAgICBjaG9pY2VzW2tleV0gPSBjaGVja2JveChjaG9pY2VzW2tleV0ubGFiZWwsIGNob2ljZXNba2V5XSwgaXNDb25maWdQcm9wZXJ0eSk7XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ2NoZWNrYm94ZXMnLFxuICAgIGxhYmVsLFxuICAgIGNob2ljZXMsXG4gIH07XG59O1xuIl19