@pie-lib/math-toolbar 1.11.31-next.134 → 1.13.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.13.0-beta.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-toolbar@1.11.30...@pie-lib/math-toolbar@1.13.0-beta.0) (2025-07-15)
7
+
8
+ **Note:** Version bump only for package @pie-lib/math-toolbar
9
+
10
+
11
+
12
+
13
+
14
+ # [1.12.0-beta.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-toolbar@1.11.30...@pie-lib/math-toolbar@1.12.0-beta.0) (2025-07-15)
15
+
16
+ **Note:** Version bump only for package @pie-lib/math-toolbar
17
+
18
+
19
+
20
+
21
+
6
22
  ## [1.11.30](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-toolbar@1.11.29...@pie-lib/math-toolbar@1.11.30) (2023-07-04)
7
23
 
8
24
  **Note:** Version bump only for package @pie-lib/math-toolbar
@@ -0,0 +1 @@
1
+ []
@@ -0,0 +1,37 @@
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 _editorAndPad = require("../editor-and-pad");
8
+
9
+ var _enzyme = require("enzyme");
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ 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; }
14
+
15
+ 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; }
16
+
17
+ describe('snapshot', function () {
18
+ var wrapper;
19
+ var onBlur = jest.fn();
20
+ beforeAll(function () {
21
+ wrapper = function wrapper(extras) {
22
+ var defaults = {
23
+ classes: {},
24
+ classNames: {},
25
+ onBlur: onBlur
26
+ };
27
+
28
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
29
+
30
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_editorAndPad.EditorAndPad, props));
31
+ };
32
+ });
33
+ it('renders', function () {
34
+ expect(wrapper()).toMatchSnapshot();
35
+ });
36
+ });
37
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vZWRpdG9yLWFuZC1wYWQudGVzdC5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIndyYXBwZXIiLCJvbkJsdXIiLCJqZXN0IiwiZm4iLCJiZWZvcmVBbGwiLCJleHRyYXMiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJjbGFzc05hbWVzIiwicHJvcHMiLCJpdCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekIsTUFBSUMsT0FBSjtBQUNBLE1BQUlDLE1BQU0sR0FBR0MsSUFBSSxDQUFDQyxFQUFMLEVBQWI7QUFFQUMsRUFBQUEsU0FBUyxDQUFDLFlBQU07QUFDZEosSUFBQUEsT0FBTyxHQUFHLGlCQUFDSyxNQUFELEVBQVk7QUFDcEIsVUFBTUMsUUFBUSxHQUFHO0FBQ2ZDLFFBQUFBLE9BQU8sRUFBRSxFQURNO0FBRWZDLFFBQUFBLFVBQVUsRUFBRSxFQUZHO0FBR2ZQLFFBQUFBLE1BQU0sRUFBTkE7QUFIZSxPQUFqQjs7QUFLQSxVQUFNUSxLQUFLLG1DQUFRSCxRQUFSLEdBQXFCRCxNQUFyQixDQUFYOztBQUVBLGFBQU8sbUNBQVEsZ0NBQUMsMEJBQUQsRUFBa0JJLEtBQWxCLENBQVIsQ0FBUDtBQUNELEtBVEQ7QUFVRCxHQVhRLENBQVQ7QUFhQUMsRUFBQUEsRUFBRSxDQUFDLFNBQUQsRUFBWSxZQUFNO0FBQ2xCQyxJQUFBQSxNQUFNLENBQUNYLE9BQU8sRUFBUixDQUFOLENBQWtCWSxlQUFsQjtBQUNELEdBRkMsQ0FBRjtBQUdELENBcEJPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3JBbmRQYWQgfSBmcm9tICcuLi9lZGl0b3ItYW5kLXBhZCc7XG5pbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmRlc2NyaWJlKCdzbmFwc2hvdCcsICgpID0+IHtcbiAgbGV0IHdyYXBwZXI7XG4gIGxldCBvbkJsdXIgPSBqZXN0LmZuKCk7XG5cbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICB3cmFwcGVyID0gKGV4dHJhcykgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgICBjbGFzc05hbWVzOiB7fSxcbiAgICAgICAgb25CbHVyLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG5cbiAgICAgIHJldHVybiBzaGFsbG93KDxFZGl0b3JBbmRQYWQgey4uLnByb3BzfSAvPik7XG4gICAgfTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgZXhwZWN0KHdyYXBwZXIoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,41 @@
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 _index = require("../index");
8
+
9
+ var _enzyme = require("enzyme");
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ 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; }
14
+
15
+ 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; }
16
+
17
+ describe('snapshot', function () {
18
+ var wrapper;
19
+ beforeAll(function () {
20
+ wrapper = function wrapper(extras) {
21
+ var defaults = {
22
+ classes: {},
23
+ controlledKeypad: true,
24
+ showKeypad: true
25
+ };
26
+
27
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
28
+
29
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_index.RawPureToolbar, props));
30
+ };
31
+ });
32
+ it('renders with DONE button if hideDoneButton is not defined', function () {
33
+ expect(wrapper()).toMatchSnapshot();
34
+ });
35
+ it('renders without DONE button if hideDoneButton value is true', function () {
36
+ expect(wrapper({
37
+ hideDoneButton: true
38
+ })).toMatchSnapshot();
39
+ });
40
+ });
41
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5kZXgudGVzdC5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIndyYXBwZXIiLCJiZWZvcmVBbGwiLCJleHRyYXMiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJjb250cm9sbGVkS2V5cGFkIiwic2hvd0tleXBhZCIsInByb3BzIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJoaWRlRG9uZUJ1dHRvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekIsTUFBSUMsT0FBSjtBQUVBQyxFQUFBQSxTQUFTLENBQUMsWUFBTTtBQUNkRCxJQUFBQSxPQUFPLEdBQUcsaUJBQUNFLE1BQUQsRUFBWTtBQUNwQixVQUFNQyxRQUFRLEdBQUc7QUFDZkMsUUFBQUEsT0FBTyxFQUFFLEVBRE07QUFFZkMsUUFBQUEsZ0JBQWdCLEVBQUUsSUFGSDtBQUdmQyxRQUFBQSxVQUFVLEVBQUU7QUFIRyxPQUFqQjs7QUFLQSxVQUFNQyxLQUFLLG1DQUFRSixRQUFSLEdBQXFCRCxNQUFyQixDQUFYOztBQUVBLGFBQU8sbUNBQVEsZ0NBQUMscUJBQUQsRUFBb0JLLEtBQXBCLENBQVIsQ0FBUDtBQUNELEtBVEQ7QUFVRCxHQVhRLENBQVQ7QUFhQUMsRUFBQUEsRUFBRSxDQUFDLDJEQUFELEVBQThELFlBQU07QUFDcEVDLElBQUFBLE1BQU0sQ0FBQ1QsT0FBTyxFQUFSLENBQU4sQ0FBa0JVLGVBQWxCO0FBQ0QsR0FGQyxDQUFGO0FBSUFGLEVBQUFBLEVBQUUsQ0FBQyw2REFBRCxFQUFnRSxZQUFNO0FBQ3RFQyxJQUFBQSxNQUFNLENBQUNULE9BQU8sQ0FBQztBQUFFVyxNQUFBQSxjQUFjLEVBQUU7QUFBbEIsS0FBRCxDQUFSLENBQU4sQ0FBMENELGVBQTFDO0FBQ0QsR0FGQyxDQUFGO0FBR0QsQ0F2Qk8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhd1B1cmVUb29sYmFyIH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5kZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gIGxldCB3cmFwcGVyO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgd3JhcHBlciA9IChleHRyYXMpID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgICBjbGFzc2VzOiB7fSxcbiAgICAgICAgY29udHJvbGxlZEtleXBhZDogdHJ1ZSxcbiAgICAgICAgc2hvd0tleXBhZDogdHJ1ZSxcbiAgICAgIH07XG4gICAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuXG4gICAgICByZXR1cm4gc2hhbGxvdyg8UmF3UHVyZVRvb2xiYXIgey4uLnByb3BzfSAvPik7XG4gICAgfTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgd2l0aCBET05FIGJ1dHRvbiBpZiBoaWRlRG9uZUJ1dHRvbiBpcyBub3QgZGVmaW5lZCcsICgpID0+IHtcbiAgICBleHBlY3Qod3JhcHBlcigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgd2l0aG91dCBET05FIGJ1dHRvbiBpZiBoaWRlRG9uZUJ1dHRvbiB2YWx1ZSBpcyB0cnVlJywgKCkgPT4ge1xuICAgIGV4cGVjdCh3cmFwcGVyKHsgaGlkZURvbmVCdXR0b246IHRydWUgfSkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,42 @@
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 _react = _interopRequireDefault(require("react"));
8
+
9
+ var _enzyme = require("enzyme");
10
+
11
+ var _mathPreview = _interopRequireDefault(require("../math-preview"));
12
+
13
+ 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; }
14
+
15
+ 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; }
16
+
17
+ describe('snapshot', function () {
18
+ var wrapper;
19
+ beforeAll(function () {
20
+ wrapper = function wrapper(extras) {
21
+ var defaults = {
22
+ node: {
23
+ data: {
24
+ get: jest.fn().mockReturnValue('sqrt(5)')
25
+ }
26
+ },
27
+ classes: {},
28
+ isSelected: false,
29
+ onFocus: jest.fn(),
30
+ onBlur: jest.fn()
31
+ };
32
+
33
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
34
+
35
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_mathPreview["default"], props));
36
+ };
37
+ });
38
+ it('renders', function () {
39
+ expect(wrapper()).toMatchSnapshot();
40
+ });
41
+ });
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbWF0aC1wcmV2aWV3LnRlc3QuanMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJ3cmFwcGVyIiwiYmVmb3JlQWxsIiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJub2RlIiwiZGF0YSIsImdldCIsImplc3QiLCJmbiIsIm1vY2tSZXR1cm5WYWx1ZSIsImNsYXNzZXMiLCJpc1NlbGVjdGVkIiwib25Gb2N1cyIsIm9uQmx1ciIsInByb3BzIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUVBOzs7Ozs7QUFFQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCLE1BQUlDLE9BQUo7QUFFQUMsRUFBQUEsU0FBUyxDQUFDLFlBQU07QUFDZEQsSUFBQUEsT0FBTyxHQUFHLGlCQUFDRSxNQUFELEVBQVk7QUFDcEIsVUFBTUMsUUFBUSxHQUFHO0FBQ2ZDLFFBQUFBLElBQUksRUFBRTtBQUNKQyxVQUFBQSxJQUFJLEVBQUU7QUFDSkMsWUFBQUEsR0FBRyxFQUFFQyxJQUFJLENBQUNDLEVBQUwsR0FBVUMsZUFBVixDQUEwQixTQUExQjtBQUREO0FBREYsU0FEUztBQU1mQyxRQUFBQSxPQUFPLEVBQUUsRUFOTTtBQU9mQyxRQUFBQSxVQUFVLEVBQUUsS0FQRztBQVFmQyxRQUFBQSxPQUFPLEVBQUVMLElBQUksQ0FBQ0MsRUFBTCxFQVJNO0FBU2ZLLFFBQUFBLE1BQU0sRUFBRU4sSUFBSSxDQUFDQyxFQUFMO0FBVE8sT0FBakI7O0FBV0EsVUFBTU0sS0FBSyxtQ0FBUVgsUUFBUixHQUFxQkQsTUFBckIsQ0FBWDs7QUFFQSxhQUFPLG1DQUFRLGdDQUFDLHVCQUFELEVBQWlCWSxLQUFqQixDQUFSLENBQVA7QUFDRCxLQWZEO0FBZ0JELEdBakJRLENBQVQ7QUFtQkFDLEVBQUFBLEVBQUUsQ0FBQyxTQUFELEVBQVksWUFBTTtBQUNsQkMsSUFBQUEsTUFBTSxDQUFDaEIsT0FBTyxFQUFSLENBQU4sQ0FBa0JpQixlQUFsQjtBQUNELEdBRkMsQ0FBRjtBQUdELENBekJPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5cbmltcG9ydCBNYXRoUHJldmlldyBmcm9tICcuLi9tYXRoLXByZXZpZXcnO1xuXG5kZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gIGxldCB3cmFwcGVyO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgd3JhcHBlciA9IChleHRyYXMpID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZ2V0OiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKCdzcXJ0KDUpJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBvbkZvY3VzOiBqZXN0LmZuKCksXG4gICAgICAgIG9uQmx1cjogamVzdC5mbigpLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG5cbiAgICAgIHJldHVybiBzaGFsbG93KDxNYXRoUHJldmlldyB7Li4ucHJvcHN9IC8+KTtcbiAgICB9O1xuICB9KTtcblxuICBpdCgncmVuZGVycycsICgpID0+IHtcbiAgICBleHBlY3Qod3JhcHBlcigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -65,4 +65,4 @@ var styles = function styles(theme) {
65
65
 
66
66
  var DoneButton = (0, _styles.withStyles)(styles)(RawDoneButton);
67
67
  exports.DoneButton = DoneButton;
68
- //# sourceMappingURL=done-button.js.map
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kb25lLWJ1dHRvbi5qc3giXSwibmFtZXMiOlsiUmF3RG9uZUJ1dHRvbiIsImNsYXNzZXMiLCJvbkNsaWNrIiwiaGlkZUJhY2tncm91bmQiLCJpY29uUm9vdCIsImxhYmVsIiwicm9vdCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJmdW5jIiwic3R5bGVzIiwidGhlbWUiLCJ2ZXJ0aWNhbEFsaWduIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsImJhY2tncm91bmRDb2xvciIsInBhbGV0dGUiLCJjb21tb24iLCJ3aGl0ZSIsImdyZXkiLCJwb3NpdGlvbiIsInRvcCIsIkRvbmVCdXR0b24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRU8sSUFBTUEsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQjtBQUFBLE1BQUdDLE9BQUgsUUFBR0EsT0FBSDtBQUFBLE1BQVlDLE9BQVosUUFBWUEsT0FBWjtBQUFBLE1BQXFCQyxjQUFyQixRQUFxQkEsY0FBckI7QUFBQSxzQkFDM0IsZ0NBQUMsc0JBQUQ7QUFDRSxrQkFBVyxNQURiO0FBRUUsSUFBQSxTQUFTLEVBQUVGLE9BQU8sQ0FBQ0csUUFGckI7QUFHRSxJQUFBLE9BQU8sRUFBRUYsT0FIWDtBQUlFLElBQUEsT0FBTyxFQUFFO0FBQ1BHLE1BQUFBLEtBQUssRUFBRUosT0FBTyxDQUFDSSxLQURSO0FBRVBDLE1BQUFBLElBQUksRUFBRSw0QkFBV0wsT0FBTyxDQUFDRyxRQUFuQix1Q0FBZ0NILE9BQU8sQ0FBQ0UsY0FBeEMsRUFBeURBLGNBQXpEO0FBRkM7QUFKWCxrQkFTRSxnQ0FBQyxpQkFBRCxPQVRGLENBRDJCO0FBQUEsQ0FBdEI7OztBQWNQSCxhQUFhLENBQUNPLFNBQWQsR0FBMEI7QUFDeEJOLEVBQUFBLE9BQU8sRUFBRU8sc0JBQVVDLE1BQVYsQ0FBaUJDLFVBREY7QUFFeEJSLEVBQUFBLE9BQU8sRUFBRU0sc0JBQVVHO0FBRkssQ0FBMUI7O0FBS0EsSUFBTUMsTUFBTSxHQUFHLFNBQVRBLE1BQVMsQ0FBQ0MsS0FBRDtBQUFBLFNBQVk7QUFDekJULElBQUFBLFFBQVEsRUFBRTtBQUNSVSxNQUFBQSxhQUFhLEVBQUUsS0FEUDtBQUVSQyxNQUFBQSxLQUFLLEVBQUUsTUFGQztBQUdSQyxNQUFBQSxNQUFNLEVBQUUsTUFIQTtBQUlSQyxNQUFBQSxLQUFLLEVBQUU7QUFKQyxLQURlO0FBT3pCZCxJQUFBQSxjQUFjLEVBQUU7QUFDZGUsTUFBQUEsZUFBZSxFQUFFTCxLQUFLLENBQUNNLE9BQU4sQ0FBY0MsTUFBZCxDQUFxQkMsS0FEeEI7QUFHZCxpQkFBVztBQUNUSCxRQUFBQSxlQUFlLEVBQUVMLEtBQUssQ0FBQ00sT0FBTixDQUFjRyxJQUFkLENBQW1CLEdBQW5CO0FBRFI7QUFIRyxLQVBTO0FBY3pCakIsSUFBQUEsS0FBSyxFQUFFO0FBQ0xrQixNQUFBQSxRQUFRLEVBQUUsVUFETDtBQUVMQyxNQUFBQSxHQUFHLEVBQUU7QUFGQTtBQWRrQixHQUFaO0FBQUEsQ0FBZjs7QUFtQk8sSUFBTUMsVUFBVSxHQUFHLHdCQUFXYixNQUFYLEVBQW1CWixhQUFuQixDQUFuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0ljb25CdXR0b24nO1xuaW1wb3J0IENoZWNrIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9DaGVjayc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuZXhwb3J0IGNvbnN0IFJhd0RvbmVCdXR0b24gPSAoeyBjbGFzc2VzLCBvbkNsaWNrLCBoaWRlQmFja2dyb3VuZCB9KSA9PiAoXG4gIDxJY29uQnV0dG9uXG4gICAgYXJpYS1sYWJlbD1cIkRvbmVcIlxuICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5pY29uUm9vdH1cbiAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgIGNsYXNzZXM9e3tcbiAgICAgIGxhYmVsOiBjbGFzc2VzLmxhYmVsLFxuICAgICAgcm9vdDogY2xhc3NOYW1lcyhjbGFzc2VzLmljb25Sb290LCB7IFtjbGFzc2VzLmhpZGVCYWNrZ3JvdW5kXTogaGlkZUJhY2tncm91bmQgfSksXG4gICAgfX1cbiAgPlxuICAgIDxDaGVjayAvPlxuICA8L0ljb25CdXR0b24+XG4pO1xuXG5SYXdEb25lQnV0dG9uLnByb3BUeXBlcyA9IHtcbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmNvbnN0IHN0eWxlcyA9ICh0aGVtZSkgPT4gKHtcbiAgaWNvblJvb3Q6IHtcbiAgICB2ZXJ0aWNhbEFsaWduOiAndG9wJyxcbiAgICB3aWR0aDogJzI4cHgnLFxuICAgIGhlaWdodDogJzI4cHgnLFxuICAgIGNvbG9yOiAnIzAwYmIwMCcsXG4gIH0sXG4gIGhpZGVCYWNrZ3JvdW5kOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmNvbW1vbi53aGl0ZSxcblxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmdyZXlbMjAwXSxcbiAgICB9LFxuICB9LFxuICBsYWJlbDoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogJzJweCcsXG4gIH0sXG59KTtcbmV4cG9ydCBjb25zdCBEb25lQnV0dG9uID0gd2l0aFN0eWxlcyhzdHlsZXMpKFJhd0RvbmVCdXR0b24pO1xuIl19
@@ -21,8 +21,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
21
21
 
22
22
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
23
 
24
- var _mathInput = require("@pie-lib/math-input");
25
-
26
24
  var _react = _interopRequireDefault(require("react"));
27
25
 
28
26
  var _debug = _interopRequireDefault(require("debug"));
@@ -35,14 +33,18 @@ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
35
33
 
36
34
  var _styles = require("@material-ui/core/styles");
37
35
 
38
- var _renderUi = require("@pie-lib/render-ui");
39
-
40
36
  var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
41
37
 
42
38
  var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
43
39
 
44
40
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
45
41
 
42
+ var _mathInput = require("@pie-lib/math-input");
43
+
44
+ var _renderUi = require("@pie-lib/render-ui");
45
+
46
+ var _utils = require("./utils");
47
+
46
48
  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); }; }
47
49
 
48
50
  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; } }
@@ -51,6 +53,11 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
51
53
 
52
54
  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; }
53
55
 
56
+ var _mq$CommonMqStyles = _mathInput.mq.CommonMqStyles,
57
+ commonMqFontStyles = _mq$CommonMqStyles.commonMqFontStyles,
58
+ commonMqKeyboardStyles = _mq$CommonMqStyles.commonMqKeyboardStyles,
59
+ longdivStyles = _mq$CommonMqStyles.longdivStyles,
60
+ supsubStyles = _mq$CommonMqStyles.supsubStyles;
54
61
  var log = (0, _debug["default"])('@pie-lib:math-toolbar:editor-and-pad');
55
62
  var decimalRegex = /\.|,/g;
56
63
 
@@ -151,6 +158,7 @@ var EditorAndPad = /*#__PURE__*/function (_React$Component) {
151
158
  onChange = _this$props2.onChange,
152
159
  noDecimal = _this$props2.noDecimal;
153
160
  (0, _mathInput.updateSpans)();
161
+ (0, _utils.markFractionBaseSuperscripts)();
154
162
 
155
163
  _this.updateDisable(true); // if no decimals are allowed and the last change is a decimal dot, discard the change
156
164
 
@@ -257,6 +265,7 @@ var EditorAndPad = /*#__PURE__*/function (_React$Component) {
257
265
  controlledKeypad = _this$props3.controlledKeypad,
258
266
  controlledKeypadMode = _this$props3.controlledKeypadMode,
259
267
  showKeypad = _this$props3.showKeypad,
268
+ setKeypadInteraction = _this$props3.setKeypadInteraction,
260
269
  noDecimal = _this$props3.noDecimal,
261
270
  hideInput = _this$props3.hideInput,
262
271
  layoutForKeyPad = _this$props3.layoutForKeyPad,
@@ -334,11 +343,13 @@ var EditorAndPad = /*#__PURE__*/function (_React$Component) {
334
343
  className: classes.hr
335
344
  }), shouldShowKeypad && /*#__PURE__*/_react["default"].createElement(_mathInput.HorizontalKeypad, {
336
345
  className: (0, _classnames["default"])(classes[keypadMode], classes.keyboard),
346
+ controlledKeypadMode: controlledKeypadMode,
337
347
  layoutForKeyPad: layoutForKeyPad,
338
348
  additionalKeys: additionalKeys,
339
349
  mode: controlledKeypadMode ? this.state.equationEditor : keypadMode,
340
350
  onClick: this.onClick,
341
- noDecimal: noDecimal
351
+ noDecimal: noDecimal,
352
+ setKeypadInteraction: setKeypadInteraction
342
353
  }));
343
354
  }
344
355
  }]);
@@ -361,12 +372,13 @@ exports.EditorAndPad = EditorAndPad;
361
372
  layoutForKeyPad: _propTypes["default"].object,
362
373
  maxResponseAreas: _propTypes["default"].number,
363
374
  additionalKeys: _propTypes["default"].array,
364
- latex: _propTypes["default"].string,
375
+ latex: _propTypes["default"].string.isRequired,
365
376
  onAnswerBlockAdd: _propTypes["default"].func,
366
377
  onFocus: _propTypes["default"].func,
367
378
  onBlur: _propTypes["default"].func,
368
379
  onChange: _propTypes["default"].func.isRequired,
369
- classes: _propTypes["default"].object
380
+ classes: _propTypes["default"].object,
381
+ setKeypadInteraction: _propTypes["default"].func
370
382
  });
371
383
 
372
384
  var styles = function styles(theme) {
@@ -396,7 +408,7 @@ var styles = function styles(theme) {
396
408
  left: '-1px'
397
409
  },
398
410
  '&:after': {
399
- position: 'absolute',
411
+ position: 'absolute !important',
400
412
  top: '0px !important',
401
413
  right: '-2px'
402
414
  },
@@ -410,20 +422,7 @@ var styles = function styles(theme) {
410
422
  right: '-1px'
411
423
  }
412
424
  },
413
- '& *': {
414
- fontFamily: 'MJXZERO, MJXTEX !important',
415
- '& .mq-math-mode > span > var': {
416
- fontFamily: 'MJXZERO, MJXTEX-I !important'
417
- },
418
- '& .mq-math-mode span var': {
419
- fontFamily: 'MJXZERO, MJXTEX-I !important'
420
- },
421
- '& .mq-math-mode .mq-nonSymbola': {
422
- fontFamily: 'MJXZERO, MJXTEX-I !important'
423
- },
424
- '& .mq-math-mode > span > var.mq-operator-name': {
425
- fontFamily: 'MJXZERO, MJXTEX !important'
426
- },
425
+ '& *': _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, commonMqFontStyles), supsubStyles), longdivStyles), {}, {
427
426
  '& .mq-math-mode .mq-sqrt-prefix': {
428
427
  verticalAlign: 'baseline !important',
429
428
  top: '1px !important',
@@ -432,11 +431,6 @@ var styles = function styles(theme) {
432
431
  '& .mq-math-mode .mq-overarc ': {
433
432
  paddingTop: '0.45em !important'
434
433
  },
435
- '& .mq-math-mode sup.mq-nthroot': {
436
- fontSize: '70% !important',
437
- verticalAlign: '0.5em !important',
438
- paddingRight: '0.15em'
439
- },
440
434
  '& .mq-math-mode .mq-empty': {
441
435
  padding: '9px 1px !important'
442
436
  },
@@ -446,26 +440,11 @@ var styles = function styles(theme) {
446
440
  '& .mq-scaled .mq-sqrt-prefix': {
447
441
  top: '0 !important'
448
442
  },
449
- '& .mq-longdiv-inner': {
450
- marginTop: '-1px',
451
- marginLeft: '5px !important;',
452
- '& > .mq-empty': {
453
- padding: '0 !important',
454
- marginLeft: '0px !important',
455
- marginTop: '2px'
456
- }
457
- },
458
- '& .mq-math-mode .mq-longdiv': {
459
- display: 'inline-flex !important'
460
- },
461
443
  '& .mq-math-mode .mq-longdiv .mq-longdiv-inner': {
462
444
  marginLeft: '4px !important',
463
445
  paddingTop: '6px !important',
464
446
  paddingLeft: '6px !important'
465
447
  },
466
- '& .mq-math-mode .mq-supsub': {
467
- fontSize: '70.7% !important'
468
- },
469
448
  '& .mq-math-mode .mq-paren': {
470
449
  verticalAlign: 'top !important',
471
450
  padding: '1px 0.1em !important'
@@ -476,15 +455,6 @@ var styles = function styles(theme) {
476
455
  marginTop: '-2px !important',
477
456
  paddingTop: '5px !important'
478
457
  },
479
- '& .mq-supsub ': {
480
- fontSize: '70.7%'
481
- },
482
- '& .mq-math-mode .mq-supsub.mq-sup-only': {
483
- verticalAlign: '-0.1em !important',
484
- '& .mq-sup': {
485
- marginBottom: '0px !important'
486
- }
487
- },
488
458
  '& .mq-math-mode .mq-denominator': {
489
459
  marginTop: '-5px !important',
490
460
  padding: '0.5em 0.1em 0.1em !important'
@@ -493,8 +463,10 @@ var styles = function styles(theme) {
493
463
  padding: '0 0.1em !important',
494
464
  paddingBottom: '0 !important',
495
465
  marginBottom: '-2px'
496
- },
497
- '-webkit-font-smoothing': 'antialiased !important'
466
+ }
467
+ }),
468
+ '& span[data-prime="true"]': {
469
+ fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
498
470
  }
499
471
  },
500
472
  hide: {
@@ -588,57 +560,7 @@ var styles = function styles(theme) {
588
560
  error: {
589
561
  border: '2px solid red'
590
562
  },
591
- keyboard: {
592
- '& *': {
593
- fontFamily: 'MJXZERO, MJXTEX !important',
594
- '& .mq-math-mode > span > var': {
595
- fontFamily: 'MJXZERO, MJXTEX-I !important'
596
- },
597
- '& .mq-math-mode span var': {
598
- fontFamily: 'MJXZERO, MJXTEX-I !important'
599
- },
600
- '& .mq-math-mode .mq-nonSymbola': {
601
- fontFamily: 'MJXZERO, MJXTEX-I !important'
602
- },
603
- '& .mq-math-mode > span > var.mq-operator-name': {
604
- fontFamily: 'MJXZERO, MJXTEX !important'
605
- },
606
- '& .mq-math-mode .mq-sqrt-prefix': {
607
- top: '0 !important'
608
- },
609
- '& .mq-math-mode .mq-empty': {
610
- padding: '9px 1px !important'
611
- },
612
- '& .mq-longdiv-inner': {
613
- marginTop: '-1px',
614
- marginLeft: '5px !important;',
615
- '& > .mq-empty': {
616
- padding: '0 !important',
617
- marginLeft: '0px !important',
618
- marginTop: '2px'
619
- }
620
- },
621
- '& .mq-math-mode .mq-longdiv': {
622
- display: 'inline-flex !important'
623
- },
624
- '& .mq-math-mode .mq-supsub': {
625
- fontSize: '70.7% !important'
626
- },
627
- '& .mq-math-mode .mq-sqrt-stem': {
628
- marginTop: '-5px',
629
- paddingTop: '4px'
630
- },
631
- '& .mq-math-mode .mq-paren': {
632
- verticalAlign: 'middle !important'
633
- },
634
- '& .mq-math-mode .mq-overarrow .mq-overarrow-inner .mq-empty': {
635
- padding: '0 !important'
636
- },
637
- '& .mq-math-mode .mq-overline .mq-overline-inner .mq-empty ': {
638
- padding: '0 !important'
639
- }
640
- }
641
- },
563
+ keyboard: commonMqKeyboardStyles,
642
564
  language: {
643
565
  '& *': {
644
566
  fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
@@ -650,4 +572,4 @@ var styles = function styles(theme) {
650
572
  var _default = (0, _styles.withStyles)(styles)(EditorAndPad);
651
573
 
652
574
  exports["default"] = _default;
653
- //# sourceMappingURL=editor-and-pad.js.map
575
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGl0b3ItYW5kLXBhZC5qc3giXSwibmFtZXMiOlsibXEiLCJDb21tb25NcVN0eWxlcyIsImNvbW1vbk1xRm9udFN0eWxlcyIsImNvbW1vbk1xS2V5Ym9hcmRTdHlsZXMiLCJsb25nZGl2U3R5bGVzIiwic3Vwc3ViU3R5bGVzIiwibG9nIiwiZGVjaW1hbFJlZ2V4IiwidG9Ob2RlRGF0YSIsImRhdGEiLCJ0eXBlIiwidmFsdWUiLCJFZGl0b3JBbmRQYWQiLCJwcm9wcyIsIm5vRGVjaW1hbCIsIm5vTGF0ZXhIYW5kbGluZyIsIm9uQ2hhbmdlIiwiYyIsImlucHV0IiwiY2xlYXIiLCJjb21tYW5kIiwia2V5c3Ryb2tlIiwid3JpdGUiLCJpc0VkaXQiLCJtYXhSZXNwb25zZUFyZWFzIiwic2hvdWxkRGlzYWJsZSIsImNoZWNrUmVzcG9uc2VBcmVhc051bWJlciIsInNldFN0YXRlIiwiYWRkRGlzYWJsZWQiLCJvbkFuc3dlckJsb2NrQWRkIiwib25DbGljayIsInVwZGF0ZURpc2FibGUiLCJsYXRleCIsImluZGV4T2YiLCJyZXBsYWNlIiwicmVnZXhNYXRjaCIsIm1hdGNoIiwibGVuZ3RoIiwibWF0aEZpZWxkIiwiX19jb250cm9sbGVyIiwiY3Vyc29yIiwiaW5zTGVmdE9mIiwicGFyZW50IiwiZWwiLCJkaXNwYXRjaEV2ZW50IiwiS2V5Ym9hcmRFdmVudCIsImtleUNvZGUiLCJlIiwiY29uc29sZSIsImVycm9yIiwidG9TdHJpbmciLCJldnQiLCJlcXVhdGlvbkVkaXRvciIsInRhcmdldCIsImNvdW50Iiwic3RhdGUiLCJhdXRvRm9jdXMiLCJmb2N1cyIsIm5leHRQcm9wcyIsIm5leHRTdGF0ZSIsImlucHV0SXNEaWZmZXJlbnQiLCJrZXlwYWRNb2RlIiwiY29udHJvbGxlZEtleXBhZCIsInNob3dLZXlwYWQiLCJjbGFzc05hbWVzIiwiYWxsb3dBbnN3ZXJCbG9jayIsImFkZGl0aW9uYWxLZXlzIiwiY29udHJvbGxlZEtleXBhZE1vZGUiLCJzZXRLZXlwYWRJbnRlcmFjdGlvbiIsImhpZGVJbnB1dCIsImxheW91dEZvcktleVBhZCIsIm9uRm9jdXMiLCJvbkJsdXIiLCJjbGFzc2VzIiwic2hvdWxkU2hvd0tleXBhZCIsIm1hdGhUb29sYmFyIiwiaW5wdXRBbmRUeXBlQ29udGFpbmVyIiwiaGlkZSIsInNlbGVjdENvbnRhaW5lciIsInNlbGVjdCIsIm9uRWRpdG9yVHlwZUNoYW5nZSIsImlucHV0Q29udGFpbmVyIiwiZXZlbnQiLCJtYXRoRWRpdG9yIiwiZWRpdG9yIiwibG9uZ01hdGhFZGl0b3IiLCJyIiwib25FZGl0b3JDaGFuZ2UiLCJhZGRBbnN3ZXJCbG9ja0J1dHRvbiIsImJvdHRvbSIsIm9uQW5zd2VyQmxvY2tDbGljayIsImhyIiwia2V5Ym9hcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsIm9uZU9mVHlwZSIsInN0cmluZyIsIm51bWJlciIsImJvb2wiLCJhcnJheSIsImlzUmVxdWlyZWQiLCJmdW5jIiwic3R5bGVzIiwidGhlbWUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsInRvcCIsInBhZGRpbmdUb3AiLCJmb250RmFtaWx5IiwibWluV2lkdGgiLCJsaW5lSGVpZ2h0IiwibGVmdCIsInBvc2l0aW9uIiwicmlnaHQiLCJ2ZXJ0aWNhbEFsaWduIiwicGFkZGluZyIsIm1hcmdpbkxlZnQiLCJwYWRkaW5nTGVmdCIsImJvcmRlclRvcCIsIm1hcmdpblRvcCIsInBhZGRpbmdCb3R0b20iLCJtYXJnaW5Cb3R0b20iLCJmbGV4Iiwid2lkdGgiLCJtYXJnaW5SaWdodCIsIm1heFdpZHRoIiwiY29sb3IiLCJ0ZXh0IiwiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZCIsImJvcmRlciIsIm1hcmdpbiIsImhlaWdodCIsImJvcmRlckJvdHRvbSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsInpJbmRleCIsInRleHRBbGlnbiIsIm91dGxpbmUiLCJib3hTaGFkb3ciLCJib3JkZXJSYWRpdXMiLCJtaW5IZWlnaHQiLCJzcGFjaW5nIiwidW5pdCIsImxhbmd1YWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEseUJBQW9GQSxjQUFHQyxjQUF2RjtBQUFBLElBQVFDLGtCQUFSLHNCQUFRQSxrQkFBUjtBQUFBLElBQTRCQyxzQkFBNUIsc0JBQTRCQSxzQkFBNUI7QUFBQSxJQUFvREMsYUFBcEQsc0JBQW9EQSxhQUFwRDtBQUFBLElBQW1FQyxZQUFuRSxzQkFBbUVBLFlBQW5FO0FBQ0EsSUFBTUMsR0FBRyxHQUFHLHVCQUFNLHNDQUFOLENBQVo7QUFFQSxJQUFNQyxZQUFZLEdBQUcsT0FBckI7O0FBRUEsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBQ0MsSUFBRCxFQUFVO0FBQzNCLE1BQUksQ0FBQ0EsSUFBTCxFQUFXO0FBQ1Q7QUFDRDs7QUFFRCxNQUFRQyxJQUFSLEdBQXdCRCxJQUF4QixDQUFRQyxJQUFSO0FBQUEsTUFBY0MsS0FBZCxHQUF3QkYsSUFBeEIsQ0FBY0UsS0FBZDs7QUFFQSxNQUFJRCxJQUFJLEtBQUssU0FBVCxJQUFzQkEsSUFBSSxLQUFLLFFBQW5DLEVBQTZDO0FBQzNDLFdBQU9ELElBQVA7QUFDRCxHQUZELE1BRU8sSUFBSUMsSUFBSSxLQUFLLFFBQWIsRUFBdUI7QUFDNUI7QUFBU0EsTUFBQUEsSUFBSSxFQUFFO0FBQWYsT0FBNEJELElBQTVCO0FBQ0QsR0FGTSxNQUVBLElBQUlFLEtBQUssS0FBSyxPQUFkLEVBQXVCO0FBQzVCLFdBQU87QUFBRUQsTUFBQUEsSUFBSSxFQUFFO0FBQVIsS0FBUDtBQUNELEdBRk0sTUFFQTtBQUNMLFdBQU87QUFBRUEsTUFBQUEsSUFBSSxFQUFFLE9BQVI7QUFBaUJDLE1BQUFBLEtBQUssRUFBTEE7QUFBakIsS0FBUDtBQUNEO0FBQ0YsQ0FoQkQ7O0lBa0JhQyxZOzs7OztBQXlCWCx3QkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBO0FBQ2pCLDhCQUFNQSxLQUFOO0FBRGlCLGdHQVlULFVBQUNKLElBQUQsRUFBVTtBQUNsQix3QkFBaUQsTUFBS0ksS0FBdEQ7QUFBQSxVQUFRQyxTQUFSLGVBQVFBLFNBQVI7QUFBQSxVQUFtQkMsZUFBbkIsZUFBbUJBLGVBQW5CO0FBQUEsVUFBb0NDLFFBQXBDLGVBQW9DQSxRQUFwQztBQUNBLFVBQU1DLENBQUMsR0FBR1QsVUFBVSxDQUFDQyxJQUFELENBQXBCO0FBQ0FILE1BQUFBLEdBQUcsQ0FBQyxjQUFELEVBQWlCVyxDQUFqQixDQUFIOztBQUVBLFVBQUlGLGVBQUosRUFBcUI7QUFDbkJDLFFBQUFBLFFBQVEsQ0FBQ0MsQ0FBQyxDQUFDTixLQUFILENBQVI7QUFDQTtBQUNELE9BUmlCLENBVWxCOzs7QUFDQSxVQUFJRyxTQUFTLEtBQUtHLENBQUMsQ0FBQ04sS0FBRixLQUFZLEdBQVosSUFBbUJNLENBQUMsQ0FBQ04sS0FBRixLQUFZLEdBQXBDLENBQWIsRUFBdUQ7QUFDckQ7QUFDRDs7QUFFRCxVQUFJLENBQUNNLENBQUwsRUFBUTtBQUNOO0FBQ0Q7O0FBRUQsVUFBSUEsQ0FBQyxDQUFDUCxJQUFGLEtBQVcsT0FBZixFQUF3QjtBQUN0QkosUUFBQUEsR0FBRyxDQUFDLGVBQUQsQ0FBSDs7QUFDQSxjQUFLWSxLQUFMLENBQVdDLEtBQVg7QUFDRCxPQUhELE1BR08sSUFBSUYsQ0FBQyxDQUFDUCxJQUFGLEtBQVcsU0FBZixFQUEwQjtBQUMvQixjQUFLUSxLQUFMLENBQVdFLE9BQVgsQ0FBbUJILENBQUMsQ0FBQ04sS0FBckI7QUFDRCxPQUZNLE1BRUEsSUFBSU0sQ0FBQyxDQUFDUCxJQUFGLEtBQVcsUUFBZixFQUF5QjtBQUM5QixjQUFLUSxLQUFMLENBQVdHLFNBQVgsQ0FBcUJKLENBQUMsQ0FBQ04sS0FBdkI7QUFDRCxPQUZNLE1BRUEsSUFBSU0sQ0FBQyxDQUFDUCxJQUFGLEtBQVcsUUFBZixFQUF5QjtBQUM5QixjQUFLUSxLQUFMLENBQVdJLEtBQVgsQ0FBaUIsWUFBakI7QUFDRCxPQUZNLE1BRUE7QUFDTCxjQUFLSixLQUFMLENBQVdJLEtBQVgsQ0FBaUJMLENBQUMsQ0FBQ04sS0FBbkI7QUFDRDtBQUNGLEtBM0NrQjtBQUFBLHNHQTZDSCxVQUFDWSxNQUFELEVBQVk7QUFDMUIsVUFBUUMsZ0JBQVIsR0FBNkIsTUFBS1gsS0FBbEMsQ0FBUVcsZ0JBQVI7O0FBRUEsVUFBSUEsZ0JBQUosRUFBc0I7QUFDcEIsWUFBTUMsYUFBYSxHQUFHLE1BQUtDLHdCQUFMLENBQThCRixnQkFBOUIsRUFBZ0RELE1BQWhELENBQXRCOztBQUVBLGNBQUtJLFFBQUwsQ0FBYztBQUFFQyxVQUFBQSxXQUFXLEVBQUVIO0FBQWYsU0FBZDtBQUNEO0FBQ0YsS0FyRGtCO0FBQUEsMkdBdURFLFlBQU07QUFDekIsWUFBS1osS0FBTCxDQUFXZ0IsZ0JBQVg7O0FBQ0EsWUFBS0MsT0FBTCxDQUFhO0FBQ1hwQixRQUFBQSxJQUFJLEVBQUU7QUFESyxPQUFiOztBQUlBLFlBQUtxQixhQUFMLENBQW1CLElBQW5CO0FBQ0QsS0E5RGtCO0FBQUEsdUdBZ0VGLFVBQUNDLEtBQUQsRUFBVztBQUMxQix5QkFBZ0MsTUFBS25CLEtBQXJDO0FBQUEsVUFBUUcsUUFBUixnQkFBUUEsUUFBUjtBQUFBLFVBQWtCRixTQUFsQixnQkFBa0JBLFNBQWxCO0FBRUE7QUFDQTs7QUFFQSxZQUFLaUIsYUFBTCxDQUFtQixJQUFuQixFQU4wQixDQVExQjs7O0FBQ0EsVUFBSWpCLFNBQVMsS0FBS2tCLEtBQUssQ0FBQ0MsT0FBTixDQUFjLEdBQWQsTUFBdUIsQ0FBQyxDQUF4QixJQUE2QkQsS0FBSyxDQUFDQyxPQUFOLENBQWMsR0FBZCxNQUF1QixDQUFDLENBQTFELENBQVQsSUFBeUUsTUFBS2YsS0FBbEYsRUFBeUY7QUFDdkYsY0FBS0EsS0FBTCxDQUFXQyxLQUFYOztBQUNBLGNBQUtELEtBQUwsQ0FBV0ksS0FBWCxDQUFpQlUsS0FBSyxDQUFDRSxPQUFOLENBQWMzQixZQUFkLEVBQTRCLEVBQTVCLENBQWpCOztBQUNBO0FBQ0QsT0FieUIsQ0FlMUI7OztBQUNBLFVBQU00QixVQUFVLEdBQUdILEtBQUssQ0FBQ0ksS0FBTixDQUFZLCtCQUFaLENBQW5COztBQUVBLFVBQUksTUFBS2xCLEtBQUwsSUFBY2lCLFVBQWQsSUFBNEJBLFVBQTVCLGFBQTRCQSxVQUE1QixlQUE0QkEsVUFBVSxDQUFFRSxNQUE1QyxFQUFvRDtBQUNsRCxZQUFJO0FBQ0YsZ0JBQUtuQixLQUFMLENBQVdvQixTQUFYLENBQXFCQyxZQUFyQixDQUFrQ0MsTUFBbEMsQ0FBeUNDLFNBQXpDLENBQW1ELE1BQUt2QixLQUFMLENBQVdvQixTQUFYLENBQXFCQyxZQUFyQixDQUFrQ0MsTUFBbEMsQ0FBeUNFLE1BQXpDLENBQWdELENBQUMsQ0FBakQsRUFBb0RBLE1BQXZHOztBQUNBLGdCQUFLeEIsS0FBTCxDQUFXb0IsU0FBWCxDQUFxQkssRUFBckIsR0FBMEJDLGFBQTFCLENBQXdDLElBQUlDLGFBQUosQ0FBa0IsU0FBbEIsRUFBNkI7QUFBRUMsWUFBQUEsT0FBTyxFQUFFO0FBQVgsV0FBN0IsQ0FBeEM7QUFDRCxTQUhELENBR0UsT0FBT0MsQ0FBUCxFQUFVO0FBQ1Y7QUFDQUMsVUFBQUEsT0FBTyxDQUFDQyxLQUFSLENBQWNGLENBQUMsQ0FBQ0csUUFBRixFQUFkO0FBQ0Q7O0FBRUQ7QUFDRDs7QUFFRGxDLE1BQUFBLFFBQVEsQ0FBQ2dCLEtBQUQsQ0FBUjtBQUNELEtBL0ZrQjtBQUFBLDJHQThIRSxVQUFDbUIsR0FBRCxFQUFTO0FBQzVCLFlBQUt4QixRQUFMLENBQWM7QUFBRXlCLFFBQUFBLGNBQWMsRUFBRUQsR0FBRyxDQUFDRSxNQUFKLENBQVcxQztBQUE3QixPQUFkO0FBQ0QsS0FoSWtCO0FBQUEsaUhBa0lRLFVBQUNhLGdCQUFELEVBQW1CRCxNQUFuQixFQUE4QjtBQUN2RCxpQkFBbUIsTUFBS0wsS0FBTCxJQUFjLE1BQUtBLEtBQUwsQ0FBV0wsS0FBMUIsSUFBb0MsRUFBdEQ7QUFBQSxVQUFRbUIsS0FBUixRQUFRQSxLQUFSOztBQUVBLFVBQUlBLEtBQUosRUFBVztBQUNULFlBQU1zQixLQUFLLEdBQUcsQ0FBQ3RCLEtBQUssQ0FBQ0ksS0FBTixDQUFZLGNBQVosS0FBK0IsRUFBaEMsRUFBb0NDLE1BQWxEO0FBRUEsZUFBT2QsTUFBTSxHQUFHK0IsS0FBSyxLQUFLOUIsZ0JBQWdCLEdBQUcsQ0FBaEMsR0FBb0M4QixLQUFLLEtBQUs5QixnQkFBM0Q7QUFDRDs7QUFFRCxhQUFPLEtBQVA7QUFDRCxLQTVJa0I7QUFHakIsVUFBSytCLEtBQUwsR0FBYTtBQUFFSCxNQUFBQSxjQUFjLEVBQUUsZ0JBQWxCO0FBQW9DeEIsTUFBQUEsV0FBVyxFQUFFO0FBQWpELEtBQWI7QUFIaUI7QUFJbEI7Ozs7V0FFRCw2QkFBb0I7QUFDbEIsVUFBSSxLQUFLVixLQUFMLElBQWMsS0FBS0wsS0FBTCxDQUFXMkMsU0FBN0IsRUFBd0M7QUFDdEMsYUFBS3RDLEtBQUwsQ0FBV3VDLEtBQVg7QUFDRDtBQUNGOzs7O0FBdUZEO0FBQ0Y7QUFDRSxtQ0FBc0JDLFNBQXRCLEVBQWlDQyxTQUFqQyxFQUE0QztBQUMxQyxVQUFNQyxnQkFBZ0IsR0FBRyxLQUFLMUMsS0FBTCxDQUFXb0IsU0FBWCxDQUFxQk4sS0FBckIsT0FBaUMwQixTQUFTLENBQUMxQixLQUFwRTtBQUNBMUIsTUFBQUEsR0FBRyxDQUFDLDBCQUFELEVBQTZCLG9CQUE3QixFQUFtRHNELGdCQUFuRCxDQUFIOztBQUVBLFVBQUksQ0FBQyx5QkFBUSxLQUFLL0MsS0FBTCxDQUFXb0MsS0FBbkIsRUFBMEJTLFNBQVMsQ0FBQ1QsS0FBcEMsQ0FBTCxFQUFpRDtBQUMvQyxlQUFPLElBQVA7QUFDRDs7QUFFRCxVQUFJLENBQUNXLGdCQUFELElBQXFCLEtBQUsvQyxLQUFMLENBQVdnRCxVQUFYLEtBQTBCSCxTQUFTLENBQUNHLFVBQTdELEVBQXlFO0FBQ3ZFLGVBQU8sSUFBUDtBQUNEOztBQUVELFVBQUksQ0FBQ0QsZ0JBQUQsSUFBcUIsS0FBSy9DLEtBQUwsQ0FBV0MsU0FBWCxLQUF5QjRDLFNBQVMsQ0FBQzVDLFNBQTVELEVBQXVFO0FBQ3JFLGVBQU8sSUFBUDtBQUNEOztBQUVELFVBQUksQ0FBQzhDLGdCQUFELElBQXFCLEtBQUtMLEtBQUwsQ0FBV0gsY0FBWCxLQUE4Qk8sU0FBUyxDQUFDUCxjQUFqRSxFQUFpRjtBQUMvRSxlQUFPLElBQVA7QUFDRDs7QUFFRCxVQUFJLENBQUNRLGdCQUFELElBQXFCLEtBQUsvQyxLQUFMLENBQVdpRCxnQkFBcEMsRUFBc0Q7QUFDcEQsZUFBTyxLQUFLakQsS0FBTCxDQUFXa0QsVUFBWCxLQUEwQkwsU0FBUyxDQUFDSyxVQUEzQztBQUNEOztBQUVELGFBQU9ILGdCQUFQO0FBQ0Q7OztXQWtCRCxrQkFBUztBQUFBOztBQUNQLHlCQWlCSSxLQUFLL0MsS0FqQlQ7QUFBQSxVQUNFbUQsVUFERixnQkFDRUEsVUFERjtBQUFBLFVBRUVILFVBRkYsZ0JBRUVBLFVBRkY7QUFBQSxVQUdFSSxnQkFIRixnQkFHRUEsZ0JBSEY7QUFBQSxVQUlFQyxjQUpGLGdCQUlFQSxjQUpGO0FBQUEsVUFLRUosZ0JBTEYsZ0JBS0VBLGdCQUxGO0FBQUEsVUFNRUssb0JBTkYsZ0JBTUVBLG9CQU5GO0FBQUEsVUFPRUosVUFQRixnQkFPRUEsVUFQRjtBQUFBLFVBUUVLLG9CQVJGLGdCQVFFQSxvQkFSRjtBQUFBLFVBU0V0RCxTQVRGLGdCQVNFQSxTQVRGO0FBQUEsVUFVRXVELFNBVkYsZ0JBVUVBLFNBVkY7QUFBQSxVQVdFQyxlQVhGLGdCQVdFQSxlQVhGO0FBQUEsVUFZRXRDLEtBWkYsZ0JBWUVBLEtBWkY7QUFBQSxVQWFFdUMsUUFiRixnQkFhRUEsT0FiRjtBQUFBLFVBY0VDLE9BZEYsZ0JBY0VBLE1BZEY7QUFBQSxVQWVFQyxPQWZGLGdCQWVFQSxPQWZGO0FBQUEsVUFnQkV4QixLQWhCRixnQkFnQkVBLEtBaEJGO0FBa0JBLFVBQU15QixnQkFBZ0IsR0FBRyxDQUFDWixnQkFBRCxJQUFzQkEsZ0JBQWdCLElBQUlDLFVBQW5FO0FBQ0EsVUFBUW5DLFdBQVIsR0FBd0IsS0FBSzJCLEtBQTdCLENBQVEzQixXQUFSO0FBRUF0QixNQUFBQSxHQUFHLENBQUMsVUFBRCxFQUFhMEIsS0FBYixDQUFIO0FBRUEsMEJBQ0U7QUFBSyxRQUFBLFNBQVMsRUFBRSw0QkFBR3lDLE9BQU8sQ0FBQ0UsV0FBWCxFQUF3QlgsVUFBVSxDQUFDVyxXQUFuQztBQUFoQixzQkFDRTtBQUFLLFFBQUEsU0FBUyxFQUFFLDRCQUFHRixPQUFPLENBQUNHLHFCQUFYLHVDQUFxQ0gsT0FBTyxDQUFDSSxJQUE3QyxFQUFvRFIsU0FBcEQ7QUFBaEIsU0FDR0Ysb0JBQW9CLGlCQUNuQixnQ0FBQyx3QkFBRDtBQUFnQixRQUFBLEtBQUssRUFBQyxpQkFBdEI7QUFBd0MsUUFBQSxTQUFTLEVBQUVNLE9BQU8sQ0FBQ0s7QUFBM0Qsc0JBQ0UsZ0NBQUMsa0JBQUQ7QUFBUSxRQUFBLFNBQVMsRUFBRUwsT0FBTyxDQUFDTSxNQUEzQjtBQUFtQyxRQUFBLFFBQVEsRUFBRSxLQUFLQyxrQkFBbEQ7QUFBc0UsUUFBQSxLQUFLLEVBQUUsS0FBS3pCLEtBQUwsQ0FBV0g7QUFBeEYsc0JBQ0UsZ0NBQUMsb0JBQUQ7QUFBVSxRQUFBLEtBQUssRUFBQztBQUFoQiwyQ0FERixlQUVFLGdDQUFDLG9CQUFEO0FBQVUsUUFBQSxLQUFLLEVBQUM7QUFBaEIsOEJBRkYsZUFHRSxnQ0FBQyxvQkFBRDtBQUFVLFFBQUEsS0FBSyxFQUFDO0FBQWhCLDhCQUhGLGVBSUUsZ0NBQUMsb0JBQUQ7QUFBVSxRQUFBLEtBQUssRUFBQztBQUFoQiwrQkFKRixlQUtFLGdDQUFDLG9CQUFEO0FBQVUsUUFBQSxLQUFLLEVBQUU7QUFBakIsdUJBTEYsZUFNRSxnQ0FBQyxvQkFBRDtBQUFVLFFBQUEsS0FBSyxFQUFFO0FBQWpCLHVCQU5GLGVBT0UsZ0NBQUMsb0JBQUQ7QUFBVSxRQUFBLEtBQUssRUFBRTtBQUFqQix1QkFQRixlQVFFLGdDQUFDLG9CQUFEO0FBQVUsUUFBQSxLQUFLLEVBQUU7QUFBakIsd0JBUkYsZUFTRSxnQ0FBQyxvQkFBRDtBQUFVLFFBQUEsS0FBSyxFQUFFO0FBQWpCLG9CQVRGLGVBVUUsZ0NBQUMsb0JBQUQ7QUFBVSxRQUFBLEtBQUssRUFBRTtBQUFqQiw0QkFWRixlQVdFLGdDQUFDLG9CQUFEO0FBQVUsUUFBQSxLQUFLLEVBQUU7QUFBakIsc0JBWEYsZUFZRSxnQ0FBQyxvQkFBRDtBQUFVLFFBQUEsS0FBSyxFQUFFO0FBQWpCLDBCQVpGLENBREYsQ0FGSixlQW1CRTtBQUFLLFFBQUEsU0FBUyxFQUFFLDRCQUFHcUIsT0FBTyxDQUFDUSxjQUFYLEVBQTJCaEMsS0FBSyxHQUFHd0IsT0FBTyxDQUFDeEIsS0FBWCxHQUFtQixFQUFuRDtBQUFoQixzQkFDRSxnQ0FBQyxhQUFELENBQUksS0FBSjtBQUNFLFFBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2JzQixVQUFBQSxRQUFPLElBQUlBLFFBQU8sRUFBbEI7O0FBQ0EsVUFBQSxNQUFJLENBQUN4QyxhQUFMLENBQW1CLEtBQW5CO0FBQ0QsU0FKSDtBQUtFLFFBQUEsTUFBTSxFQUFFLGdCQUFDbUQsS0FBRCxFQUFXO0FBQ2pCLFVBQUEsTUFBSSxDQUFDbkQsYUFBTCxDQUFtQixLQUFuQjs7QUFDQXlDLFVBQUFBLE9BQU0sSUFBSUEsT0FBTSxDQUFDVSxLQUFELENBQWhCO0FBQ0QsU0FSSDtBQVNFLFFBQUEsU0FBUyxFQUFFLDRCQUFHVCxPQUFPLENBQUNVLFVBQVgsRUFBdUJuQixVQUFVLENBQUNvQixNQUFsQyxFQUEwQyxDQUFDakIsb0JBQUQsR0FBd0JNLE9BQU8sQ0FBQ1ksY0FBaEMsR0FBaUQsRUFBM0YsQ0FUYjtBQVVFLFFBQUEsUUFBUSxFQUFFLGtCQUFDQyxDQUFEO0FBQUEsaUJBQVEsTUFBSSxDQUFDcEUsS0FBTCxHQUFhb0UsQ0FBckI7QUFBQSxTQVZaO0FBV0UsUUFBQSxLQUFLLEVBQUV0RCxLQVhUO0FBWUUsUUFBQSxRQUFRLEVBQUUsS0FBS3VEO0FBWmpCLFFBREYsQ0FuQkYsQ0FERixFQXFDR3RCLGdCQUFnQixpQkFDZixnQ0FBQyxrQkFBRDtBQUNFLFFBQUEsU0FBUyxFQUFFUSxPQUFPLENBQUNlLG9CQURyQjtBQUVFLFFBQUEsSUFBSSxFQUFDLFNBRlA7QUFHRSxRQUFBLEtBQUssRUFBRTtBQUFFQyxVQUFBQSxNQUFNLEVBQUVmLGdCQUFnQixHQUFHLE9BQUgsR0FBYTtBQUF2QyxTQUhUO0FBSUUsUUFBQSxPQUFPLEVBQUUsS0FBS2dCLGtCQUpoQjtBQUtFLFFBQUEsUUFBUSxFQUFFOUQ7QUFMWiwyQkF0Q0osZUFnREU7QUFBSSxRQUFBLFNBQVMsRUFBRTZDLE9BQU8sQ0FBQ2tCO0FBQXZCLFFBaERGLEVBaURHakIsZ0JBQWdCLGlCQUNmLGdDQUFDLDJCQUFEO0FBQ0UsUUFBQSxTQUFTLEVBQUUsNEJBQUdELE9BQU8sQ0FBQ1osVUFBRCxDQUFWLEVBQXdCWSxPQUFPLENBQUNtQixRQUFoQyxDQURiO0FBRUUsUUFBQSxvQkFBb0IsRUFBRXpCLG9CQUZ4QjtBQUdFLFFBQUEsZUFBZSxFQUFFRyxlQUhuQjtBQUlFLFFBQUEsY0FBYyxFQUFFSixjQUpsQjtBQUtFLFFBQUEsSUFBSSxFQUFFQyxvQkFBb0IsR0FBRyxLQUFLWixLQUFMLENBQVdILGNBQWQsR0FBK0JTLFVBTDNEO0FBTUUsUUFBQSxPQUFPLEVBQUUsS0FBSy9CLE9BTmhCO0FBT0UsUUFBQSxTQUFTLEVBQUVoQixTQVBiO0FBUUUsUUFBQSxvQkFBb0IsRUFBRXNEO0FBUnhCLFFBbERKLENBREY7QUFnRUQ7OztFQS9QK0J5QixrQkFBTUMsUzs7O2lDQUEzQmxGLFksZUFDUTtBQUNqQm9ELEVBQUFBLFVBQVUsRUFBRStCLHNCQUFVQyxNQURMO0FBRWpCbkMsRUFBQUEsVUFBVSxFQUFFa0Msc0JBQVVFLFNBQVYsQ0FBb0IsQ0FBQ0Ysc0JBQVVHLE1BQVgsRUFBbUJILHNCQUFVSSxNQUE3QixDQUFwQixDQUZLO0FBR2pCM0MsRUFBQUEsU0FBUyxFQUFFdUMsc0JBQVVLLElBSEo7QUFJakJuQyxFQUFBQSxnQkFBZ0IsRUFBRThCLHNCQUFVSyxJQUpYO0FBS2pCckMsRUFBQUEsVUFBVSxFQUFFZ0Msc0JBQVVLLElBTEw7QUFNakJ0QyxFQUFBQSxnQkFBZ0IsRUFBRWlDLHNCQUFVSyxJQU5YO0FBT2pCakMsRUFBQUEsb0JBQW9CLEVBQUU0QixzQkFBVUssSUFQZjtBQVFqQm5ELEVBQUFBLEtBQUssRUFBRThDLHNCQUFVRyxNQVJBO0FBU2pCcEYsRUFBQUEsU0FBUyxFQUFFaUYsc0JBQVVLLElBVEo7QUFVakIvQixFQUFBQSxTQUFTLEVBQUUwQixzQkFBVUssSUFWSjtBQVdqQnJGLEVBQUFBLGVBQWUsRUFBRWdGLHNCQUFVSyxJQVhWO0FBWWpCOUIsRUFBQUEsZUFBZSxFQUFFeUIsc0JBQVVDLE1BWlY7QUFhakJ4RSxFQUFBQSxnQkFBZ0IsRUFBRXVFLHNCQUFVSSxNQWJYO0FBY2pCakMsRUFBQUEsY0FBYyxFQUFFNkIsc0JBQVVNLEtBZFQ7QUFlakJyRSxFQUFBQSxLQUFLLEVBQUUrRCxzQkFBVUcsTUFBVixDQUFpQkksVUFmUDtBQWdCakJ6RSxFQUFBQSxnQkFBZ0IsRUFBRWtFLHNCQUFVUSxJQWhCWDtBQWlCakJoQyxFQUFBQSxPQUFPLEVBQUV3QixzQkFBVVEsSUFqQkY7QUFrQmpCL0IsRUFBQUEsTUFBTSxFQUFFdUIsc0JBQVVRLElBbEJEO0FBbUJqQnZGLEVBQUFBLFFBQVEsRUFBRStFLHNCQUFVUSxJQUFWLENBQWVELFVBbkJSO0FBb0JqQjdCLEVBQUFBLE9BQU8sRUFBRXNCLHNCQUFVQyxNQXBCRjtBQXFCakI1QixFQUFBQSxvQkFBb0IsRUFBRTJCLHNCQUFVUTtBQXJCZixDOztBQWlRckIsSUFBTUMsTUFBTSxHQUFHLFNBQVRBLE1BQVMsQ0FBQ0MsS0FBRDtBQUFBLFNBQVk7QUFDekI3QixJQUFBQSxxQkFBcUIsRUFBRTtBQUNyQjhCLE1BQUFBLE9BQU8sRUFBRSxNQURZO0FBRXJCQyxNQUFBQSxVQUFVLEVBQUUsUUFGUztBQUdyQix5Q0FBbUM7QUFDakNDLFFBQUFBLEdBQUcsRUFBRTtBQUQ0QixPQUhkO0FBTXJCLHlFQUFtRTtBQUNqRUMsUUFBQUEsVUFBVSxFQUFFO0FBRHFELE9BTjlDO0FBU3JCLHVDQUFpQztBQUMvQkMsUUFBQUEsVUFBVSxFQUFFO0FBRG1CLE9BVFo7QUFZckIseURBQW1EO0FBQ2pERCxRQUFBQSxVQUFVLEVBQUU7QUFEcUMsT0FaOUI7QUFlckIsdUNBQWlDO0FBQy9CRSxRQUFBQSxRQUFRLEVBQUUsUUFEcUI7QUFFL0IsZUFBTztBQUNMQyxVQUFBQSxVQUFVLEVBQUU7QUFEUCxTQUZ3QjtBQUsvQixvQkFBWTtBQUNWSixVQUFBQSxHQUFHLEVBQUUsU0FESztBQUVWSyxVQUFBQSxJQUFJLEVBQUU7QUFGSSxTQUxtQjtBQVMvQixtQkFBVztBQUNUQyxVQUFBQSxRQUFRLEVBQUUscUJBREQ7QUFFVE4sVUFBQUEsR0FBRyxFQUFFLGdCQUZJO0FBR1RPLFVBQUFBLEtBQUssRUFBRTtBQUhFLFNBVG9CO0FBYy9CLDRCQUFvQjtBQUNsQlAsVUFBQUEsR0FBRyxFQUFFO0FBRGE7QUFkVyxPQWZaO0FBaUNyQix3Q0FBa0M7QUFDaEMsb0JBQVk7QUFDVkEsVUFBQUEsR0FBRyxFQUFFLFFBREs7QUFFVk8sVUFBQUEsS0FBSyxFQUFFO0FBRkc7QUFEb0IsT0FqQ2I7QUF3Q3JCLHlFQUNLakgsa0JBREwsR0FFS0csWUFGTCxHQUdLRCxhQUhMO0FBSUUsMkNBQW1DO0FBQ2pDZ0gsVUFBQUEsYUFBYSxFQUFFLHFCQURrQjtBQUVqQ1IsVUFBQUEsR0FBRyxFQUFFLGdCQUY0QjtBQUdqQ0ssVUFBQUEsSUFBSSxFQUFFO0FBSDJCLFNBSnJDO0FBVUUsd0NBQWdDO0FBQzlCSixVQUFBQSxVQUFVLEVBQUU7QUFEa0IsU0FWbEM7QUFjRSxxQ0FBNkI7QUFDM0JRLFVBQUFBLE9BQU8sRUFBRTtBQURrQixTQWQvQjtBQWtCRSwwQ0FBa0M7QUFDaENSLFVBQUFBLFVBQVUsRUFBRTtBQURvQixTQWxCcEM7QUFzQkUsd0NBQWdDO0FBQzlCRCxVQUFBQSxHQUFHLEVBQUU7QUFEeUIsU0F0QmxDO0FBMEJFLHlEQUFpRDtBQUMvQ1UsVUFBQUEsVUFBVSxFQUFFLGdCQURtQztBQUUvQ1QsVUFBQUEsVUFBVSxFQUFFLGdCQUZtQztBQUcvQ1UsVUFBQUEsV0FBVyxFQUFFO0FBSGtDLFNBMUJuRDtBQWdDRSxxQ0FBNkI7QUFDM0JILFVBQUFBLGFBQWEsRUFBRSxnQkFEWTtBQUUzQkMsVUFBQUEsT0FBTyxFQUFFO0FBRmtCLFNBaEMvQjtBQXFDRSx5Q0FBaUM7QUFDL0JHLFVBQUFBLFNBQVMsRUFBRSxjQURvQjtBQUUvQkYsVUFBQUEsVUFBVSxFQUFFLFFBRm1CO0FBRy9CRyxVQUFBQSxTQUFTLEVBQUUsaUJBSG9CO0FBSS9CWixVQUFBQSxVQUFVLEVBQUU7QUFKbUIsU0FyQ25DO0FBNENFLDJDQUFtQztBQUNqQ1ksVUFBQUEsU0FBUyxFQUFFLGlCQURzQjtBQUVqQ0osVUFBQUEsT0FBTyxFQUFFO0FBRndCLFNBNUNyQztBQWlERSxpRUFBeUQ7QUFDdkRBLFVBQUFBLE9BQU8sRUFBRSxvQkFEOEM7QUFFdkRLLFVBQUFBLGFBQWEsRUFBRSxjQUZ3QztBQUd2REMsVUFBQUEsWUFBWSxFQUFFO0FBSHlDO0FBakQzRCxRQXhDcUI7QUFnR3JCLG1DQUE2QjtBQUMzQmIsUUFBQUEsVUFBVSxFQUFFO0FBRGU7QUFoR1IsS0FERTtBQXFHekJqQyxJQUFBQSxJQUFJLEVBQUU7QUFDSjZCLE1BQUFBLE9BQU8sRUFBRTtBQURMLEtBckdtQjtBQXdHekI1QixJQUFBQSxlQUFlLEVBQUU7QUFDZjhDLE1BQUFBLElBQUksRUFBRSxTQURTO0FBRWZDLE1BQUFBLEtBQUssRUFBRSxLQUZRO0FBR2ZkLE1BQUFBLFFBQVEsRUFBRSxPQUhLO0FBSWZPLE1BQUFBLFVBQVUsRUFBRSxNQUpHO0FBS2ZHLE1BQUFBLFNBQVMsRUFBRSxLQUxJO0FBTWZFLE1BQUFBLFlBQVksRUFBRSxLQU5DO0FBT2ZHLE1BQUFBLFdBQVcsRUFBRSxLQVBFO0FBU2YsaUJBQVc7QUFDVGhCLFFBQUFBLFVBQVUsRUFBRTtBQURILE9BVEk7QUFhZixlQUFTO0FBQ1BBLFFBQUFBLFVBQVUsRUFBRTtBQURMO0FBYk0sS0F4R1E7QUF5SHpCM0IsSUFBQUEsVUFBVSxFQUFFO0FBQ1Y0QyxNQUFBQSxRQUFRLEVBQUUsT0FEQTtBQUVWQyxNQUFBQSxLQUFLLEVBQUVBLGdCQUFNQyxJQUFOLEVBRkc7QUFHVkMsTUFBQUEsZUFBZSxFQUFFRixnQkFBTUcsVUFBTixFQUhQO0FBSVZkLE1BQUFBLE9BQU8sRUFBRTtBQUpDLEtBekhhO0FBK0h6QmhDLElBQUFBLGNBQWMsRUFBRTtBQUNkMEMsTUFBQUEsUUFBUSxFQUFFO0FBREksS0EvSFM7QUFrSXpCdkMsSUFBQUEsb0JBQW9CLEVBQUU7QUFDcEIwQixNQUFBQSxRQUFRLEVBQUUsVUFEVTtBQUVwQkMsTUFBQUEsS0FBSyxFQUFFLE1BRmE7QUFHcEJpQixNQUFBQSxNQUFNLEVBQUU7QUFIWSxLQWxJRztBQXVJekJ6QyxJQUFBQSxFQUFFLEVBQUU7QUFDRjBCLE1BQUFBLE9BQU8sRUFBRSxDQURQO0FBRUZnQixNQUFBQSxNQUFNLEVBQUUsQ0FGTjtBQUdGQyxNQUFBQSxNQUFNLEVBQUUsS0FITjtBQUlGRixNQUFBQSxNQUFNLEVBQUUsTUFKTjtBQUtGRyxNQUFBQSxZQUFZLHNCQUFlOUIsS0FBSyxDQUFDK0IsT0FBTixDQUFjQyxPQUFkLENBQXNCQyxJQUFyQztBQUxWLEtBdklxQjtBQThJekIvRCxJQUFBQSxXQUFXLEVBQUU7QUFDWGdFLE1BQUFBLE1BQU0sRUFBRSxDQURHO0FBRVh6QixNQUFBQSxRQUFRLEVBQUUsVUFGQztBQUdYMEIsTUFBQUEsU0FBUyxFQUFFLFFBSEE7QUFJWGYsTUFBQUEsS0FBSyxFQUFFLE1BSkk7QUFLWCwyQkFBcUI7QUFDbkJPLFFBQUFBLE1BQU0sRUFBRTtBQURXLE9BTFY7QUFRWCx5QkFBbUI7QUFDakJTLFFBQUFBLE9BQU8sRUFBRSxNQURRO0FBRWpCQyxRQUFBQSxTQUFTLEVBQUUsTUFGTTtBQUdqQlYsUUFBQUEsTUFBTSx1QkFBZ0IzQixLQUFLLENBQUMrQixPQUFOLENBQWNDLE9BQWQsQ0FBc0JDLElBQXRDLENBSFc7QUFJakJLLFFBQUFBLFlBQVksRUFBRTtBQUpHLE9BUlI7QUFjWCwrQkFBeUI7QUFDdkJYLFFBQUFBLE1BQU0sRUFBRSxpQkFEZTtBQUV2QnZCLFFBQUFBLFVBQVUsRUFBRTtBQUZXLE9BZGQ7QUFrQlgscUNBQStCO0FBQzdCSCxRQUFBQSxPQUFPLEVBQUU7QUFEb0IsT0FsQnBCO0FBcUJYLG9DQUE4QjtBQUM1QkEsUUFBQUEsT0FBTyxFQUFFO0FBRG1CLE9BckJuQjtBQXdCWCw2QkFBdUI7QUFDckJjLFFBQUFBLFNBQVMsRUFBRSxzQkFEVTtBQUVyQlgsUUFBQUEsVUFBVSxFQUFFO0FBRlMsT0F4Qlo7QUE0QlgsdUNBQWlDO0FBQy9CRCxRQUFBQSxHQUFHLEVBQUUsT0FEMEI7QUFFL0JhLFFBQUFBLFNBQVMsRUFBRSxLQUZvQjtBQUcvQlYsUUFBQUEsUUFBUSxFQUFFO0FBSHFCLE9BNUJ0QjtBQWlDWCw2QkFBdUI7QUFDckJDLFFBQUFBLFVBQVUsRUFBRTtBQURTO0FBakNaLEtBOUlZO0FBbUx6Qi9CLElBQUFBLGNBQWMsRUFBRTtBQUNkOEIsTUFBQUEsUUFBUSxFQUFFLE9BREk7QUFFZGdCLE1BQUFBLFFBQVEsRUFBRSxPQUZJO0FBR2RpQixNQUFBQSxTQUFTLEVBQUUsTUFIRztBQUlkbkIsTUFBQUEsS0FBSyxFQUFFLE1BSk87QUFLZG5CLE1BQUFBLE9BQU8sRUFBRSxNQUxLO0FBTWRlLE1BQUFBLFNBQVMsRUFBRWhCLEtBQUssQ0FBQ3dDLE9BQU4sQ0FBY0MsSUFOWDtBQU9kdkIsTUFBQUEsWUFBWSxFQUFFbEIsS0FBSyxDQUFDd0MsT0FBTixDQUFjQyxJQVBkO0FBU2Qsc0NBQWdDO0FBQzlCOUIsUUFBQUEsYUFBYSxFQUFFO0FBRGU7QUFUbEIsS0FuTFM7QUFnTXpCbkUsSUFBQUEsS0FBSyxFQUFFO0FBQ0xtRixNQUFBQSxNQUFNLEVBQUU7QUFESCxLQWhNa0I7QUFtTXpCeEMsSUFBQUEsUUFBUSxFQUFFekYsc0JBbk1lO0FBb016QmdKLElBQUFBLFFBQVEsRUFBRTtBQUNSLGFBQU87QUFDTHJDLFFBQUFBLFVBQVUsRUFBRTtBQURQO0FBREM7QUFwTWUsR0FBWjtBQUFBLENBQWY7O2VBMk1lLHdCQUFXTixNQUFYLEVBQW1CNUYsWUFBbkIsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvQnV0dG9uJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IE1lbnVJdGVtIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL01lbnVJdGVtJztcbmltcG9ydCBTZWxlY3QgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvU2VsZWN0JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcblxuaW1wb3J0IHsgSG9yaXpvbnRhbEtleXBhZCwgbXEsIHVwZGF0ZVNwYW5zIH0gZnJvbSAnQHBpZS1saWIvbWF0aC1pbnB1dCc7XG5pbXBvcnQgeyBjb2xvciwgSW5wdXRDb250YWluZXIgfSBmcm9tICdAcGllLWxpYi9yZW5kZXItdWknO1xuaW1wb3J0IHsgbWFya0ZyYWN0aW9uQmFzZVN1cGVyc2NyaXB0cyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCB7IGNvbW1vbk1xRm9udFN0eWxlcywgY29tbW9uTXFLZXlib2FyZFN0eWxlcywgbG9uZ2RpdlN0eWxlcywgc3Vwc3ViU3R5bGVzIH0gPSBtcS5Db21tb25NcVN0eWxlcztcbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjptYXRoLXRvb2xiYXI6ZWRpdG9yLWFuZC1wYWQnKTtcblxuY29uc3QgZGVjaW1hbFJlZ2V4ID0gL1xcLnwsL2c7XG5cbmNvbnN0IHRvTm9kZURhdGEgPSAoZGF0YSkgPT4ge1xuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBkYXRhO1xuXG4gIGlmICh0eXBlID09PSAnY29tbWFuZCcgfHwgdHlwZSA9PT0gJ2N1cnNvcicpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnYW5zd2VyJykge1xuICAgIHJldHVybiB7IHR5cGU6ICdhbnN3ZXInLCAuLi5kYXRhIH07XG4gIH0gZWxzZSBpZiAodmFsdWUgPT09ICdjbGVhcicpIHtcbiAgICByZXR1cm4geyB0eXBlOiAnY2xlYXInIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgdHlwZTogJ3dyaXRlJywgdmFsdWUgfTtcbiAgfVxufTtcblxuZXhwb3J0IGNsYXNzIEVkaXRvckFuZFBhZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NOYW1lczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBrZXlwYWRNb2RlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gICAgYXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBhbGxvd0Fuc3dlckJsb2NrOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzaG93S2V5cGFkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjb250cm9sbGVkS2V5cGFkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjb250cm9sbGVkS2V5cGFkTW9kZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgZXJyb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbm9EZWNpbWFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBoaWRlSW5wdXQ6IFByb3BUeXBlcy5ib29sLFxuICAgIG5vTGF0ZXhIYW5kbGluZzogUHJvcFR5cGVzLmJvb2wsXG4gICAgbGF5b3V0Rm9yS2V5UGFkOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG1heFJlc3BvbnNlQXJlYXM6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgYWRkaXRpb25hbEtleXM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBsYXRleDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIG9uQW5zd2VyQmxvY2tBZGQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBzZXRLZXlwYWRJbnRlcmFjdGlvbjogUHJvcFR5cGVzLmZ1bmMsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0geyBlcXVhdGlvbkVkaXRvcjogJ2l0ZW0tYXV0aG9yaW5nJywgYWRkRGlzYWJsZWQ6IGZhbHNlIH07XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBpZiAodGhpcy5pbnB1dCAmJiB0aGlzLnByb3BzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5pbnB1dC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2sgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHsgbm9EZWNpbWFsLCBub0xhdGV4SGFuZGxpbmcsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGMgPSB0b05vZGVEYXRhKGRhdGEpO1xuICAgIGxvZygnbWF0aENoYW5nZTogJywgYyk7XG5cbiAgICBpZiAobm9MYXRleEhhbmRsaW5nKSB7XG4gICAgICBvbkNoYW5nZShjLnZhbHVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBpZiBkZWNpbWFscyBhcmUgbm90IGFsbG93ZWQgZm9yIHRoaXMgcmVzcG9uc2UsIHdlIGRpc2NhcmQgdGhlIGlucHV0XG4gICAgaWYgKG5vRGVjaW1hbCAmJiAoYy52YWx1ZSA9PT0gJy4nIHx8IGMudmFsdWUgPT09ICcsJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoYy50eXBlID09PSAnY2xlYXInKSB7XG4gICAgICBsb2coJ2NhbGwgY2xlYXIuLi4nKTtcbiAgICAgIHRoaXMuaW5wdXQuY2xlYXIoKTtcbiAgICB9IGVsc2UgaWYgKGMudHlwZSA9PT0gJ2NvbW1hbmQnKSB7XG4gICAgICB0aGlzLmlucHV0LmNvbW1hbmQoYy52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChjLnR5cGUgPT09ICdjdXJzb3InKSB7XG4gICAgICB0aGlzLmlucHV0LmtleXN0cm9rZShjLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGMudHlwZSA9PT0gJ2Fuc3dlcicpIHtcbiAgICAgIHRoaXMuaW5wdXQud3JpdGUoJyVyZXNwb25zZSUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dC53cml0ZShjLnZhbHVlKTtcbiAgICB9XG4gIH07XG5cbiAgdXBkYXRlRGlzYWJsZSA9IChpc0VkaXQpID0+IHtcbiAgICBjb25zdCB7IG1heFJlc3BvbnNlQXJlYXMgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAobWF4UmVzcG9uc2VBcmVhcykge1xuICAgICAgY29uc3Qgc2hvdWxkRGlzYWJsZSA9IHRoaXMuY2hlY2tSZXNwb25zZUFyZWFzTnVtYmVyKG1heFJlc3BvbnNlQXJlYXMsIGlzRWRpdCk7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBhZGREaXNhYmxlZDogc2hvdWxkRGlzYWJsZSB9KTtcbiAgICB9XG4gIH07XG5cbiAgb25BbnN3ZXJCbG9ja0NsaWNrID0gKCkgPT4ge1xuICAgIHRoaXMucHJvcHMub25BbnN3ZXJCbG9ja0FkZCgpO1xuICAgIHRoaXMub25DbGljayh7XG4gICAgICB0eXBlOiAnYW5zd2VyJyxcbiAgICB9KTtcblxuICAgIHRoaXMudXBkYXRlRGlzYWJsZSh0cnVlKTtcbiAgfTtcblxuICBvbkVkaXRvckNoYW5nZSA9IChsYXRleCkgPT4ge1xuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG5vRGVjaW1hbCB9ID0gdGhpcy5wcm9wcztcblxuICAgIHVwZGF0ZVNwYW5zKCk7XG4gICAgbWFya0ZyYWN0aW9uQmFzZVN1cGVyc2NyaXB0cygpO1xuXG4gICAgdGhpcy51cGRhdGVEaXNhYmxlKHRydWUpO1xuXG4gICAgLy8gaWYgbm8gZGVjaW1hbHMgYXJlIGFsbG93ZWQgYW5kIHRoZSBsYXN0IGNoYW5nZSBpcyBhIGRlY2ltYWwgZG90LCBkaXNjYXJkIHRoZSBjaGFuZ2VcbiAgICBpZiAobm9EZWNpbWFsICYmIChsYXRleC5pbmRleE9mKCcuJykgIT09IC0xIHx8IGxhdGV4LmluZGV4T2YoJywnKSAhPT0gLTEpICYmIHRoaXMuaW5wdXQpIHtcbiAgICAgIHRoaXMuaW5wdXQuY2xlYXIoKTtcbiAgICAgIHRoaXMuaW5wdXQud3JpdGUobGF0ZXgucmVwbGFjZShkZWNpbWFsUmVnZXgsICcnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtZXNjYXBlXG4gICAgY29uc3QgcmVnZXhNYXRjaCA9IGxhdGV4Lm1hdGNoKC9bMC05XVxcXFwgXFxcXGZyYWNcXHtbXlxce10qXFx9XFx7IFxcfS8pO1xuXG4gICAgaWYgKHRoaXMuaW5wdXQgJiYgcmVnZXhNYXRjaCAmJiByZWdleE1hdGNoPy5sZW5ndGgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuaW5wdXQubWF0aEZpZWxkLl9fY29udHJvbGxlci5jdXJzb3IuaW5zTGVmdE9mKHRoaXMuaW5wdXQubWF0aEZpZWxkLl9fY29udHJvbGxlci5jdXJzb3IucGFyZW50Wy0xXS5wYXJlbnQpO1xuICAgICAgICB0aGlzLmlucHV0Lm1hdGhGaWVsZC5lbCgpLmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB7IGtleUNvZGU6IDggfSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKGUudG9TdHJpbmcoKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvbkNoYW5nZShsYXRleCk7XG4gIH07XG5cbiAgLyoqIE9ubHkgcmVuZGVyIGlmIHRoZSBtYXRocXVpbGwgaW5zdGFuY2UncyBsYXRleCBpcyBkaWZmZXJlbnRcbiAgICogb3IgdGhlIGtleXBhZCBzdGF0ZSBjaGFuZ2VkIGZyb20gb25lIHN0YXRlIHRvIHRoZSBvdGhlciAoc2hvd24gLyBoaWRkZW4pICovXG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSkge1xuICAgIGNvbnN0IGlucHV0SXNEaWZmZXJlbnQgPSB0aGlzLmlucHV0Lm1hdGhGaWVsZC5sYXRleCgpICE9PSBuZXh0UHJvcHMubGF0ZXg7XG4gICAgbG9nKCdbc2hvdWxkQ29tcG9uZW50VXBkYXRlXSAnLCAnaW5wdXRJc0RpZmZlcmVudDogJywgaW5wdXRJc0RpZmZlcmVudCk7XG5cbiAgICBpZiAoIWlzRXF1YWwodGhpcy5wcm9wcy5lcnJvciwgbmV4dFByb3BzLmVycm9yKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFpbnB1dElzRGlmZmVyZW50ICYmIHRoaXMucHJvcHMua2V5cGFkTW9kZSAhPT0gbmV4dFByb3BzLmtleXBhZE1vZGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghaW5wdXRJc0RpZmZlcmVudCAmJiB0aGlzLnByb3BzLm5vRGVjaW1hbCAhPT0gbmV4dFByb3BzLm5vRGVjaW1hbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFpbnB1dElzRGlmZmVyZW50ICYmIHRoaXMuc3RhdGUuZXF1YXRpb25FZGl0b3IgIT09IG5leHRTdGF0ZS5lcXVhdGlvbkVkaXRvcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFpbnB1dElzRGlmZmVyZW50ICYmIHRoaXMucHJvcHMuY29udHJvbGxlZEtleXBhZCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuc2hvd0tleXBhZCAhPT0gbmV4dFByb3BzLnNob3dLZXlwYWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlucHV0SXNEaWZmZXJlbnQ7XG4gIH1cblxuICBvbkVkaXRvclR5cGVDaGFuZ2UgPSAoZXZ0KSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGVxdWF0aW9uRWRpdG9yOiBldnQudGFyZ2V0LnZhbHVlIH0pO1xuICB9O1xuXG4gIGNoZWNrUmVzcG9uc2VBcmVhc051bWJlciA9IChtYXhSZXNwb25zZUFyZWFzLCBpc0VkaXQpID0+IHtcbiAgICBjb25zdCB7IGxhdGV4IH0gPSAodGhpcy5pbnB1dCAmJiB0aGlzLmlucHV0LnByb3BzKSB8fCB7fTtcblxuICAgIGlmIChsYXRleCkge1xuICAgICAgY29uc3QgY291bnQgPSAobGF0ZXgubWF0Y2goL2Fuc3dlckJsb2NrL2cpIHx8IFtdKS5sZW5ndGg7XG5cbiAgICAgIHJldHVybiBpc0VkaXQgPyBjb3VudCA9PT0gbWF4UmVzcG9uc2VBcmVhcyAtIDEgOiBjb3VudCA9PT0gbWF4UmVzcG9uc2VBcmVhcztcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZXMsXG4gICAgICBrZXlwYWRNb2RlLFxuICAgICAgYWxsb3dBbnN3ZXJCbG9jayxcbiAgICAgIGFkZGl0aW9uYWxLZXlzLFxuICAgICAgY29udHJvbGxlZEtleXBhZCxcbiAgICAgIGNvbnRyb2xsZWRLZXlwYWRNb2RlLFxuICAgICAgc2hvd0tleXBhZCxcbiAgICAgIHNldEtleXBhZEludGVyYWN0aW9uLFxuICAgICAgbm9EZWNpbWFsLFxuICAgICAgaGlkZUlucHV0LFxuICAgICAgbGF5b3V0Rm9yS2V5UGFkLFxuICAgICAgbGF0ZXgsXG4gICAgICBvbkZvY3VzLFxuICAgICAgb25CbHVyLFxuICAgICAgY2xhc3NlcyxcbiAgICAgIGVycm9yLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHNob3VsZFNob3dLZXlwYWQgPSAhY29udHJvbGxlZEtleXBhZCB8fCAoY29udHJvbGxlZEtleXBhZCAmJiBzaG93S2V5cGFkKTtcbiAgICBjb25zdCB7IGFkZERpc2FibGVkIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgbG9nKCdbcmVuZGVyXScsIGxhdGV4KTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y3goY2xhc3Nlcy5tYXRoVG9vbGJhciwgY2xhc3NOYW1lcy5tYXRoVG9vbGJhcil9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y3goY2xhc3Nlcy5pbnB1dEFuZFR5cGVDb250YWluZXIsIHsgW2NsYXNzZXMuaGlkZV06IGhpZGVJbnB1dCB9KX0+XG4gICAgICAgICAge2NvbnRyb2xsZWRLZXlwYWRNb2RlICYmIChcbiAgICAgICAgICAgIDxJbnB1dENvbnRhaW5lciBsYWJlbD1cIkVxdWF0aW9uIEVkaXRvclwiIGNsYXNzTmFtZT17Y2xhc3Nlcy5zZWxlY3RDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8U2VsZWN0IGNsYXNzTmFtZT17Y2xhc3Nlcy5zZWxlY3R9IG9uQ2hhbmdlPXt0aGlzLm9uRWRpdG9yVHlwZUNoYW5nZX0gdmFsdWU9e3RoaXMuc3RhdGUuZXF1YXRpb25FZGl0b3J9PlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSB2YWx1ZT1cIm5vbi1uZWdhdGl2ZS1pbnRlZ2Vyc1wiPk51bWVyaWMgLSBOb24tTmVnYXRpdmUgSW50ZWdlcnM8L01lbnVJdGVtPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSB2YWx1ZT1cImludGVnZXJzXCI+TnVtZXJpYyAtIEludGVnZXJzPC9NZW51SXRlbT5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gdmFsdWU9XCJkZWNpbWFsc1wiPk51bWVyaWMgLSBEZWNpbWFsczwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHZhbHVlPVwiZnJhY3Rpb25zXCI+TnVtZXJpYyAtIEZyYWN0aW9uczwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHZhbHVlPXsxfT5HcmFkZSAxIC0gMjwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHZhbHVlPXszfT5HcmFkZSAzIC0gNTwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHZhbHVlPXs2fT5HcmFkZSA2IC0gNzwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHZhbHVlPXs4fT5HcmFkZSA4IC0gSFM8L01lbnVJdGVtPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSB2YWx1ZT17J2dlb21ldHJ5J30+R2VvbWV0cnk8L01lbnVJdGVtPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSB2YWx1ZT17J2FkdmFuY2VkLWFsZ2VicmEnfT5BZHZhbmNlZCBBbGdlYnJhPC9NZW51SXRlbT5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gdmFsdWU9eydzdGF0aXN0aWNzJ30+U3RhdGlzdGljczwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHZhbHVlPXsnaXRlbS1hdXRob3JpbmcnfT5JdGVtIEF1dGhvcmluZzwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgIDwvU2VsZWN0PlxuICAgICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjeChjbGFzc2VzLmlucHV0Q29udGFpbmVyLCBlcnJvciA/IGNsYXNzZXMuZXJyb3IgOiAnJyl9PlxuICAgICAgICAgICAgPG1xLklucHV0XG4gICAgICAgICAgICAgIG9uRm9jdXM9eygpID0+IHtcbiAgICAgICAgICAgICAgICBvbkZvY3VzICYmIG9uRm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURpc2FibGUoZmFsc2UpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbkJsdXI9eyhldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRGlzYWJsZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgb25CbHVyICYmIG9uQmx1cihldmVudCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3Nlcy5tYXRoRWRpdG9yLCBjbGFzc05hbWVzLmVkaXRvciwgIWNvbnRyb2xsZWRLZXlwYWRNb2RlID8gY2xhc3Nlcy5sb25nTWF0aEVkaXRvciA6ICcnKX1cbiAgICAgICAgICAgICAgaW5uZXJSZWY9eyhyKSA9PiAodGhpcy5pbnB1dCA9IHIpfVxuICAgICAgICAgICAgICBsYXRleD17bGF0ZXh9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uRWRpdG9yQ2hhbmdlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHthbGxvd0Fuc3dlckJsb2NrICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYWRkQW5zd2VyQmxvY2tCdXR0b259XG4gICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzdHlsZT17eyBib3R0b206IHNob3VsZFNob3dLZXlwYWQgPyAnMzIwcHgnIDogJzIwcHgnIH19XG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uQW5zd2VyQmxvY2tDbGlja31cbiAgICAgICAgICAgIGRpc2FibGVkPXthZGREaXNhYmxlZH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICArIFJlc3BvbnNlIEFyZWFcbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgICAgPGhyIGNsYXNzTmFtZT17Y2xhc3Nlcy5ocn0gLz5cbiAgICAgICAge3Nob3VsZFNob3dLZXlwYWQgJiYgKFxuICAgICAgICAgIDxIb3Jpem9udGFsS2V5cGFkXG4gICAgICAgICAgICBjbGFzc05hbWU9e2N4KGNsYXNzZXNba2V5cGFkTW9kZV0sIGNsYXNzZXMua2V5Ym9hcmQpfVxuICAgICAgICAgICAgY29udHJvbGxlZEtleXBhZE1vZGU9e2NvbnRyb2xsZWRLZXlwYWRNb2RlfVxuICAgICAgICAgICAgbGF5b3V0Rm9yS2V5UGFkPXtsYXlvdXRGb3JLZXlQYWR9XG4gICAgICAgICAgICBhZGRpdGlvbmFsS2V5cz17YWRkaXRpb25hbEtleXN9XG4gICAgICAgICAgICBtb2RlPXtjb250cm9sbGVkS2V5cGFkTW9kZSA/IHRoaXMuc3RhdGUuZXF1YXRpb25FZGl0b3IgOiBrZXlwYWRNb2RlfVxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkNsaWNrfVxuICAgICAgICAgICAgbm9EZWNpbWFsPXtub0RlY2ltYWx9XG4gICAgICAgICAgICBzZXRLZXlwYWRJbnRlcmFjdGlvbj17c2V0S2V5cGFkSW50ZXJhY3Rpb259XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3Qgc3R5bGVzID0gKHRoZW1lKSA9PiAoe1xuICBpbnB1dEFuZFR5cGVDb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgJyYgLm1xLWVkaXRhYmxlLWZpZWxkIC5tcS1jdXJzb3InOiB7XG4gICAgICB0b3A6ICctNHB4JyxcbiAgICB9LFxuICAgICcmIC5tcS1tYXRoLW1vZGUgLm1xLXNlbGVjdGlvbiwgLm1xLWVkaXRhYmxlLWZpZWxkIC5tcS1zZWxlY3Rpb24nOiB7XG4gICAgICBwYWRkaW5nVG9wOiAnMThweCcsXG4gICAgfSxcbiAgICAnJiAubXEtbWF0aC1tb2RlIC5tcS1vdmVyYXJyb3cnOiB7XG4gICAgICBmb250RmFtaWx5OiAnUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQnLFxuICAgIH0sXG4gICAgJyYgLm1xLW1hdGgtbW9kZSAubXEtb3ZlcmxpbmUgLm1xLW92ZXJsaW5lLWlubmVyJzoge1xuICAgICAgcGFkZGluZ1RvcDogJzAuNGVtICFpbXBvcnRhbnQnLFxuICAgIH0sXG4gICAgJyYgLm1xLW92ZXJhcnJvdy5tcS1hcnJvdy1ib3RoJzoge1xuICAgICAgbWluV2lkdGg6ICcxLjIzZW0nLFxuICAgICAgJyYgKic6IHtcbiAgICAgICAgbGluZUhlaWdodDogJzEgIWltcG9ydGFudCcsXG4gICAgICB9LFxuICAgICAgJyY6YmVmb3JlJzoge1xuICAgICAgICB0b3A6ICctMC40NWVtJyxcbiAgICAgICAgbGVmdDogJy0xcHgnLFxuICAgICAgfSxcbiAgICAgICcmOmFmdGVyJzoge1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlICFpbXBvcnRhbnQnLFxuICAgICAgICB0b3A6ICcwcHggIWltcG9ydGFudCcsXG4gICAgICAgIHJpZ2h0OiAnLTJweCcsXG4gICAgICB9LFxuICAgICAgJyYubXEtZW1wdHk6YWZ0ZXInOiB7XG4gICAgICAgIHRvcDogJy0wLjQ1ZW0nLFxuICAgICAgfSxcbiAgICB9LFxuICAgICcmIC5tcS1vdmVyYXJyb3cubXEtYXJyb3ctcmlnaHQnOiB7XG4gICAgICAnJjpiZWZvcmUnOiB7XG4gICAgICAgIHRvcDogJy0wLjRlbScsXG4gICAgICAgIHJpZ2h0OiAnLTFweCcsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAnJiAqJzoge1xuICAgICAgLi4uY29tbW9uTXFGb250U3R5bGVzLFxuICAgICAgLi4uc3Vwc3ViU3R5bGVzLFxuICAgICAgLi4ubG9uZ2RpdlN0eWxlcyxcbiAgICAgICcmIC5tcS1tYXRoLW1vZGUgLm1xLXNxcnQtcHJlZml4Jzoge1xuICAgICAgICB2ZXJ0aWNhbEFsaWduOiAnYmFzZWxpbmUgIWltcG9ydGFudCcsXG4gICAgICAgIHRvcDogJzFweCAhaW1wb3J0YW50JyxcbiAgICAgICAgbGVmdDogJy0wLjFlbSAhaW1wb3J0YW50JyxcbiAgICAgIH0sXG5cbiAgICAgICcmIC5tcS1tYXRoLW1vZGUgLm1xLW92ZXJhcmMgJzoge1xuICAgICAgICBwYWRkaW5nVG9wOiAnMC40NWVtICFpbXBvcnRhbnQnLFxuICAgICAgfSxcblxuICAgICAgJyYgLm1xLW1hdGgtbW9kZSAubXEtZW1wdHknOiB7XG4gICAgICAgIHBhZGRpbmc6ICc5cHggMXB4ICFpbXBvcnRhbnQnLFxuICAgICAgfSxcblxuICAgICAgJyYgLm1xLW1hdGgtbW9kZSAubXEtcm9vdC1ibG9jayc6IHtcbiAgICAgICAgcGFkZGluZ1RvcDogJzEwcHgnLFxuICAgICAgfSxcblxuICAgICAgJyYgLm1xLXNjYWxlZCAubXEtc3FydC1wcmVmaXgnOiB7XG4gICAgICAgIHRvcDogJzAgIWltcG9ydGFudCcsXG4gICAgICB9LFxuXG4gICAgICAnJiAubXEtbWF0aC1tb2RlIC5tcS1sb25nZGl2IC5tcS1sb25nZGl2LWlubmVyJzoge1xuICAgICAgICBtYXJnaW5MZWZ0OiAnNHB4ICFpbXBvcnRhbnQnLFxuICAgICAgICBwYWRkaW5nVG9wOiAnNnB4ICFpbXBvcnRhbnQnLFxuICAgICAgICBwYWRkaW5nTGVmdDogJzZweCAhaW1wb3J0YW50JyxcbiAgICAgIH0sXG5cbiAgICAgICcmIC5tcS1tYXRoLW1vZGUgLm1xLXBhcmVuJzoge1xuICAgICAgICB2ZXJ0aWNhbEFsaWduOiAndG9wICFpbXBvcnRhbnQnLFxuICAgICAgICBwYWRkaW5nOiAnMXB4IDAuMWVtICFpbXBvcnRhbnQnLFxuICAgICAgfSxcblxuICAgICAgJyYgLm1xLW1hdGgtbW9kZSAubXEtc3FydC1zdGVtJzoge1xuICAgICAgICBib3JkZXJUb3A6ICcwLjA3ZW0gc29saWQnLFxuICAgICAgICBtYXJnaW5MZWZ0OiAnLTEuNXB4JyxcbiAgICAgICAgbWFyZ2luVG9wOiAnLTJweCAhaW1wb3J0YW50JyxcbiAgICAgICAgcGFkZGluZ1RvcDogJzVweCAhaW1wb3J0YW50JyxcbiAgICAgIH0sXG5cbiAgICAgICcmIC5tcS1tYXRoLW1vZGUgLm1xLWRlbm9taW5hdG9yJzoge1xuICAgICAgICBtYXJnaW5Ub3A6ICctNXB4ICFpbXBvcnRhbnQnLFxuICAgICAgICBwYWRkaW5nOiAnMC41ZW0gMC4xZW0gMC4xZW0gIWltcG9ydGFudCcsXG4gICAgICB9LFxuXG4gICAgICAnJiAubXEtbWF0aC1tb2RlIC5tcS1udW1lcmF0b3IsIC5tcS1tYXRoLW1vZGUgLm1xLW92ZXInOiB7XG4gICAgICAgIHBhZGRpbmc6ICcwIDAuMWVtICFpbXBvcnRhbnQnLFxuICAgICAgICBwYWRkaW5nQm90dG9tOiAnMCAhaW1wb3J0YW50JyxcbiAgICAgICAgbWFyZ2luQm90dG9tOiAnLTJweCcsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAnJiBzcGFuW2RhdGEtcHJpbWU9XCJ0cnVlXCJdJzoge1xuICAgICAgZm9udEZhbWlseTogJ1JvYm90bywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiAhaW1wb3J0YW50JyxcbiAgICB9LFxuICB9LFxuICBoaWRlOiB7XG4gICAgZGlzcGxheTogJ25vbmUnLFxuICB9LFxuICBzZWxlY3RDb250YWluZXI6IHtcbiAgICBmbGV4OiAnaW5pdGlhbCcsXG4gICAgd2lkdGg6ICcyNSUnLFxuICAgIG1pbldpZHRoOiAnMTAwcHgnLFxuICAgIG1hcmdpbkxlZnQ6ICcxNXB4JyxcbiAgICBtYXJnaW5Ub3A6ICc1cHgnLFxuICAgIG1hcmdpbkJvdHRvbTogJzVweCcsXG4gICAgbWFyZ2luUmlnaHQ6ICc1cHgnLFxuXG4gICAgJyYgbGFiZWwnOiB7XG4gICAgICBmb250RmFtaWx5OiAnUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQnLFxuICAgIH0sXG5cbiAgICAnJiBkaXYnOiB7XG4gICAgICBmb250RmFtaWx5OiAnUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQnLFxuICAgIH0sXG4gIH0sXG4gIG1hdGhFZGl0b3I6IHtcbiAgICBtYXhXaWR0aDogJzQwMHB4JyxcbiAgICBjb2xvcjogY29sb3IudGV4dCgpLFxuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuYmFja2dyb3VuZCgpLFxuICAgIHBhZGRpbmc6ICcycHgnLFxuICB9LFxuICBsb25nTWF0aEVkaXRvcjoge1xuICAgIG1heFdpZHRoOiAnNTAwcHgnLFxuICB9LFxuICBhZGRBbnN3ZXJCbG9ja0J1dHRvbjoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHJpZ2h0OiAnMTJweCcsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkIGxpZ2h0Z3JleScsXG4gIH0sXG4gIGhyOiB7XG4gICAgcGFkZGluZzogMCxcbiAgICBtYXJnaW46IDAsXG4gICAgaGVpZ2h0OiAnMXB4JyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBib3JkZXJCb3R0b206IGBzb2xpZCAxcHggJHt0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbn1gLFxuICB9LFxuICBtYXRoVG9vbGJhcjoge1xuICAgIHpJbmRleDogOSxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIHdpZHRoOiAnYXV0bycsXG4gICAgJyYgPiAubXEtbWF0aC1tb2RlJzoge1xuICAgICAgYm9yZGVyOiAnc29saWQgMXB4IGxpZ2h0Z3JleScsXG4gICAgfSxcbiAgICAnJiA+IC5tcS1mb2N1c2VkJzoge1xuICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgYm94U2hhZG93OiAnbm9uZScsXG4gICAgICBib3JkZXI6IGBkb3R0ZWQgMXB4ICR7dGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW59YCxcbiAgICAgIGJvcmRlclJhZGl1czogJzBweCcsXG4gICAgfSxcbiAgICAnJiAubXEtb3ZlcmFycm93LWlubmVyJzoge1xuICAgICAgYm9yZGVyOiAnbm9uZSAhaW1wb3J0YW50JyxcbiAgICAgIHBhZGRpbmdUb3A6ICcwICFpbXBvcnRhbnQnLFxuICAgIH0sXG4gICAgJyYgLm1xLW92ZXJhcnJvdy1pbm5lci1yaWdodCc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lICFpbXBvcnRhbnQnLFxuICAgIH0sXG4gICAgJyYgLm1xLW92ZXJhcnJvdy1pbm5lci1sZWZ0Jzoge1xuICAgICAgZGlzcGxheTogJ25vbmUgIWltcG9ydGFudCcsXG4gICAgfSxcbiAgICAnJiAubXEtbG9uZ2Rpdi1pbm5lcic6IHtcbiAgICAgIGJvcmRlclRvcDogJzFweCBzb2xpZCAhaW1wb3J0YW50JyxcbiAgICAgIHBhZGRpbmdUb3A6ICcxLjVweCAhaW1wb3J0YW50JyxcbiAgICB9LFxuICAgICcmIC5tcS1vdmVyYXJyb3cubXEtYXJyb3ctYm90aCc6IHtcbiAgICAgIHRvcDogJzcuOHB4JyxcbiAgICAgIG1hcmdpblRvcDogJzBweCcsXG4gICAgICBtaW5XaWR0aDogJzEuMjNlbScsXG4gICAgfSxcbiAgICAnJiAubXEtcGFyYWxsZWxvZ3JhbSc6IHtcbiAgICAgIGxpbmVIZWlnaHQ6IDAuODUsXG4gICAgfSxcbiAgfSxcbiAgaW5wdXRDb250YWluZXI6IHtcbiAgICBtaW5XaWR0aDogJzUwMHB4JyxcbiAgICBtYXhXaWR0aDogJzkwMHB4JyxcbiAgICBtaW5IZWlnaHQ6ICczMHB4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCxcblxuICAgICcmIC5tcS1zcXJ0LXByZWZpeCAubXEtc2NhbGVkJzoge1xuICAgICAgdmVydGljYWxBbGlnbjogJ21pZGRsZSAhaW1wb3J0YW50JyxcbiAgICB9LFxuICB9LFxuICBlcnJvcjoge1xuICAgIGJvcmRlcjogJzJweCBzb2xpZCByZWQnLFxuICB9LFxuICBrZXlib2FyZDogY29tbW9uTXFLZXlib2FyZFN0eWxlcyxcbiAgbGFuZ3VhZ2U6IHtcbiAgICAnJiAqJzoge1xuICAgICAgZm9udEZhbWlseTogJ1JvYm90bywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiAhaW1wb3J0YW50JyxcbiAgICB9LFxuICB9LFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzKShFZGl0b3JBbmRQYWQpO1xuIl19
package/lib/index.js CHANGED
@@ -97,6 +97,8 @@ var MathToolbar = /*#__PURE__*/function (_React$Component) {
97
97
  onBlur = _this$props.onBlur,
98
98
  hideDoneButton = _this$props.hideDoneButton,
99
99
  error = _this$props.error,
100
+ keyPadCharacterRef = _this$props.keyPadCharacterRef,
101
+ setKeypadInteraction = _this$props.setKeypadInteraction,
100
102
  maxResponseAreas = _this$props.maxResponseAreas;
101
103
  return /*#__PURE__*/_react["default"].createElement(PureToolbar, {
102
104
  autoFocus: autoFocus,
@@ -107,6 +109,8 @@ var MathToolbar = /*#__PURE__*/function (_React$Component) {
107
109
  additionalKeys: additionalKeys,
108
110
  noDecimal: noDecimal,
109
111
  keypadMode: keypadMode,
112
+ keyPadCharacterRef: keyPadCharacterRef,
113
+ setKeypadInteraction: setKeypadInteraction,
110
114
  onChange: this.onChange,
111
115
  onDone: this.done,
112
116
  onFocus: onFocus,
@@ -142,7 +146,9 @@ exports.MathToolbar = MathToolbar;
142
146
  onDone: _propTypes["default"].func.isRequired,
143
147
  onFocus: _propTypes["default"].func,
144
148
  onBlur: _propTypes["default"].func,
145
- hideDoneButton: _propTypes["default"].bool
149
+ hideDoneButton: _propTypes["default"].bool,
150
+ keyPadCharacterRef: _propTypes["default"].func,
151
+ setKeypadInteraction: _propTypes["default"].func
146
152
  });
147
153
  (0, _defineProperty2["default"])(MathToolbar, "defaultProps", {
148
154
  classNames: {},
@@ -187,6 +193,8 @@ var RawPureToolbar = /*#__PURE__*/function (_React$Component2) {
187
193
  hideInput = _this$props2.hideInput,
188
194
  noLatexHandling = _this$props2.noLatexHandling,
189
195
  layoutForKeyPad = _this$props2.layoutForKeyPad,
196
+ keyPadCharacterRef = _this$props2.keyPadCharacterRef,
197
+ setKeypadInteraction = _this$props2.setKeypadInteraction,
190
198
  latex = _this$props2.latex,
191
199
  onChange = _this$props2.onChange,
192
200
  onDone = _this$props2.onDone,
@@ -199,7 +207,7 @@ var RawPureToolbar = /*#__PURE__*/function (_React$Component2) {
199
207
  maxResponseAreas = _this$props2.maxResponseAreas;
200
208
  return /*#__PURE__*/_react["default"].createElement("div", {
201
209
  className: (0, _classnames["default"])(classes.pureToolbar, (classNames || {}).toolbar),
202
- contentEditable: false
210
+ ref: keyPadCharacterRef
203
211
  }, /*#__PURE__*/_react["default"].createElement("div", null), /*#__PURE__*/_react["default"].createElement(_editorAndPad["default"], {
204
212
  autoFocus: autoFocus,
205
213
  keypadMode: keypadMode,
@@ -219,7 +227,8 @@ var RawPureToolbar = /*#__PURE__*/function (_React$Component2) {
219
227
  onFocus: onFocus,
220
228
  onBlur: onBlur,
221
229
  error: error,
222
- maxResponseAreas: maxResponseAreas
230
+ maxResponseAreas: maxResponseAreas,
231
+ setKeypadInteraction: setKeypadInteraction
223
232
  }), (!controlledKeypad || controlledKeypad && showKeypad) && !hideDoneButton && /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
224
233
  hideBackground: hideDoneButtonBackground,
225
234
  onClick: onDone
@@ -232,7 +241,7 @@ var RawPureToolbar = /*#__PURE__*/function (_React$Component2) {
232
241
  exports.RawPureToolbar = RawPureToolbar;
233
242
  (0, _defineProperty2["default"])(RawPureToolbar, "propTypes", {
234
243
  classNames: _propTypes["default"].object,
235
- latex: _propTypes["default"].string,
244
+ latex: _propTypes["default"].string.isRequired,
236
245
  keypadMode: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
237
246
  hideInput: _propTypes["default"].bool,
238
247
  noLatexHandling: _propTypes["default"].bool,
@@ -253,7 +262,9 @@ exports.RawPureToolbar = RawPureToolbar;
253
262
  hideDoneButton: _propTypes["default"].bool,
254
263
  hideDoneButtonBackground: _propTypes["default"].bool,
255
264
  error: _propTypes["default"].any,
256
- maxResponseAreas: _propTypes["default"].number
265
+ maxResponseAreas: _propTypes["default"].number,
266
+ keyPadCharacterRef: _propTypes["default"].object,
267
+ setKeypadInteraction: _propTypes["default"].func
257
268
  });
258
269
  (0, _defineProperty2["default"])(RawPureToolbar, "defaultProps", {
259
270
  classNames: {},
@@ -273,4 +284,4 @@ var styles = function styles() {
273
284
 
274
285
  var PureToolbar = (0, _styles.withStyles)(styles)(RawPureToolbar);
275
286
  exports.PureToolbar = PureToolbar;
276
- //# sourceMappingURL=index.js.map
287
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qc3giXSwibmFtZXMiOlsiTWF0aFRvb2xiYXIiLCJwcm9wcyIsIm9uRG9uZSIsInN0YXRlIiwibGF0ZXgiLCJzZXRTdGF0ZSIsIm9uQ2hhbmdlIiwibmV4dFByb3BzIiwiY2xhc3NOYW1lcyIsImF1dG9Gb2N1cyIsImFsbG93QW5zd2VyQmxvY2siLCJvbkFuc3dlckJsb2NrQWRkIiwiY29udHJvbGxlZEtleXBhZCIsImNvbnRyb2xsZWRLZXlwYWRNb2RlIiwia2V5cGFkTW9kZSIsIm5vRGVjaW1hbCIsImFkZGl0aW9uYWxLZXlzIiwic2hvd0tleXBhZCIsIm9uRm9jdXMiLCJvbkJsdXIiLCJoaWRlRG9uZUJ1dHRvbiIsImVycm9yIiwia2V5UGFkQ2hhcmFjdGVyUmVmIiwic2V0S2V5cGFkSW50ZXJhY3Rpb24iLCJtYXhSZXNwb25zZUFyZWFzIiwiZG9uZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiYm9vbCIsIm9uZU9mVHlwZSIsInN0cmluZyIsIm51bWJlciIsIm9iamVjdCIsImFycmF5IiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJSYXdQdXJlVG9vbGJhciIsImhpZGVJbnB1dCIsIm5vTGF0ZXhIYW5kbGluZyIsImxheW91dEZvcktleVBhZCIsImhpZGVEb25lQnV0dG9uQmFja2dyb3VuZCIsImNsYXNzZXMiLCJwdXJlVG9vbGJhciIsInRvb2xiYXIiLCJhbnkiLCJzdHlsZXMiLCJkaXNwbGF5Iiwid2lkdGgiLCJ6SW5kZXgiLCJhbGlnbkl0ZW1zIiwiUHVyZVRvb2xiYXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztJQUlhQSxXOzs7OztBQXdDWCx1QkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBO0FBQ2pCLDhCQUFNQSxLQUFOO0FBRGlCLDZGQU9aLFlBQU07QUFDWCxZQUFLQSxLQUFMLENBQVdD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VUMsSUFuQkw7QUFvQmpCVCxFQUFBQSxjQUFjLEVBQUVRLHNCQUFVQyxJQXBCVDtBQXFCakJZLEVBQUFBLHdCQUF3QixFQUFFYixzQkFBVUMsSUFyQm5CO0FBc0JqQlIsRUFBQUEsS0FBSyxFQUFFTyxzQkFBVWlCLEdBdEJBO0FBdUJqQnJCLEVBQUFBLGdCQUFnQixFQUFFSSxzQkFBVUksTUF2Qlg7QUF3QmpCVixFQUFBQSxrQkFBa0IsRUFBRU0sc0JBQVVLLE1BeEJiO0FBeUJqQlYsRUFBQUEsb0JBQW9CLEVBQUVLLHNCQUFVUTtBQXpCZixDO2lDQURSQyxjLGtCQTZCVztBQUNwQjdCLEVBQUFBLFVBQVUsRUFBRSxFQURRO0FBRXBCaUMsRUFBQUEsd0JBQXdCLEVBQUU7QUFGTixDOztBQWtFeEIsSUFBTUssTUFBTSxHQUFHLFNBQVRBLE1BQVM7QUFBQSxTQUFPO0FBQ3BCSCxJQUFBQSxXQUFXLEVBQUU7QUFDWEksTUFBQUEsT0FBTyxFQUFFLE1BREU7QUFFWEMsTUFBQUEsS0FBSyxFQUFFLE1BRkk7QUFHWEMsTUFBQUEsTUFBTSxFQUFFLENBSEc7QUFJWEMsTUFBQUEsVUFBVSxFQUFFO0FBSkQ7QUFETyxHQUFQO0FBQUEsQ0FBZjs7QUFTTyxJQUFNQyxXQUFXLEdBQUcsd0JBQVdMLE1BQVgsRUFBbUJULGNBQW5CLENBQXBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgRWRpdG9yQW5kUGFkIGZyb20gJy4vZWRpdG9yLWFuZC1wYWQnO1xuaW1wb3J0IHsgRG9uZUJ1dHRvbiB9IGZyb20gJy4vZG9uZS1idXR0b24nO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgTWF0aFByZXZpZXcgZnJvbSAnLi9tYXRoLXByZXZpZXcnO1xuXG5leHBvcnQgeyBNYXRoUHJldmlldyB9O1xuXG5leHBvcnQgY2xhc3MgTWF0aFRvb2xiYXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGF1dG9Gb2N1czogUHJvcFR5cGVzLmJvb2wsXG4gICAgYWxsb3dBbnN3ZXJCbG9jazogUHJvcFR5cGVzLmJvb2wsXG4gICAgY29udHJvbGxlZEtleXBhZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgY29udHJvbGxlZEtleXBhZE1vZGU6IFByb3BUeXBlcy5ib29sLFxuICAgIGtleXBhZE1vZGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICBjbGFzc05hbWVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGVycm9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1heFJlc3BvbnNlQXJlYXM6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc2hvd0tleXBhZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbm9EZWNpbWFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBhZGRpdGlvbmFsS2V5czogUHJvcFR5cGVzLmFycmF5LFxuICAgIGxhdGV4OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb25BbnN3ZXJCbG9ja0FkZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uRG9uZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIGhpZGVEb25lQnV0dG9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBrZXlQYWRDaGFyYWN0ZXJSZWY6IFByb3BUeXBlcy5mdW5jLFxuICAgIHNldEtleXBhZEludGVyYWN0aW9uOiBQcm9wVHlwZXMuZnVuYyxcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGNsYXNzTmFtZXM6IHt9LFxuICAgIGtleXBhZE1vZGU6ICdpdGVtLWF1dGhvcmluZycsXG4gICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICBhbGxvd0Fuc3dlckJsb2NrOiBmYWxzZSxcbiAgICBjb250cm9sbGVkS2V5cGFkOiBmYWxzZSxcbiAgICBjb250cm9sbGVkS2V5cGFkTW9kZTogZmFsc2UsXG4gICAgbm9EZWNpbWFsOiBmYWxzZSxcbiAgICBzaG93S2V5cGFkOiB0cnVlLFxuICAgIGFkZGl0aW9uYWxLZXlzOiBbXSxcbiAgICBvbkNoYW5nZTogKCkgPT4ge30sXG4gICAgb25BbnN3ZXJCbG9ja0FkZDogKCkgPT4ge30sXG4gICAgb25Gb2N1czogKCkgPT4ge30sXG4gICAgaGlkZURvbmVCdXR0b246IGZhbHNlLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBsYXRleDogcHJvcHMubGF0ZXgsXG4gICAgfTtcbiAgfVxuXG4gIGRvbmUgPSAoKSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbkRvbmUodGhpcy5zdGF0ZS5sYXRleCk7XG4gIH07XG5cbiAgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxhdGV4OiBuZXh0UHJvcHMubGF0ZXggfSk7XG4gIH1cblxuICBvbkNoYW5nZSA9IChsYXRleCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBsYXRleCB9KTtcbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGxhdGV4KTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBsYXRleCB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7XG4gICAgICBjbGFzc05hbWVzLFxuICAgICAgYXV0b0ZvY3VzLFxuICAgICAgYWxsb3dBbnN3ZXJCbG9jayxcbiAgICAgIG9uQW5zd2VyQmxvY2tBZGQsXG4gICAgICBjb250cm9sbGVkS2V5cGFkLFxuICAgICAgY29udHJvbGxlZEtleXBhZE1vZGUsXG4gICAgICBrZXlwYWRNb2RlLFxuICAgICAgbm9EZWNpbWFsLFxuICAgICAgYWRkaXRpb25hbEtleXMsXG4gICAgICBzaG93S2V5cGFkLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIGhpZGVEb25lQnV0dG9uLFxuICAgICAgZXJyb3IsXG4gICAgICBrZXlQYWRDaGFyYWN0ZXJSZWYsXG4gICAgICBzZXRLZXlwYWRJbnRlcmFjdGlvbixcbiAgICAgIG1heFJlc3BvbnNlQXJlYXMsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFB1cmVUb29sYmFyXG4gICAgICAgIGF1dG9Gb2N1cz17YXV0b0ZvY3VzfVxuICAgICAgICBjbGFzc05hbWVzPXtjbGFzc05hbWVzfVxuICAgICAgICBvbkFuc3dlckJsb2NrQWRkPXtvbkFuc3dlckJsb2NrQWRkfVxuICAgICAgICBhbGxvd0Fuc3dlckJsb2NrPXthbGxvd0Fuc3dlckJsb2NrfVxuICAgICAgICBsYXRleD17bGF0ZXh9XG4gICAgICAgIGFkZGl0aW9uYWxLZXlzPXthZGRpdGlvbmFsS2V5c31cbiAgICAgICAgbm9EZWNpbWFsPXtub0RlY2ltYWx9XG4gICAgICAgIGtleXBhZE1vZGU9e2tleXBhZE1vZGV9XG4gICAgICAgIGtleVBhZENoYXJhY3RlclJlZj17a2V5UGFkQ2hhcmFjdGVyUmVmfVxuICAgICAgICBzZXRLZXlwYWRJbnRlcmFjdGlvbj17c2V0S2V5cGFkSW50ZXJhY3Rpb259XG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfVxuICAgICAgICBvbkRvbmU9e3RoaXMuZG9uZX1cbiAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgIHNob3dLZXlwYWQ9e3Nob3dLZXlwYWR9XG4gICAgICAgIGNvbnRyb2xsZWRLZXlwYWQ9e2NvbnRyb2xsZWRLZXlwYWR9XG4gICAgICAgIGNvbnRyb2xsZWRLZXlwYWRNb2RlPXtjb250cm9sbGVkS2V5cGFkTW9kZX1cbiAgICAgICAgaGlkZURvbmVCdXR0b249e2hpZGVEb25lQnV0dG9ufVxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgIG1heFJlc3BvbnNlQXJlYXM9e21heFJlc3BvbnNlQXJlYXN9XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhd1B1cmVUb29sYmFyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjbGFzc05hbWVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGxhdGV4OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAga2V5cGFkTW9kZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgIGhpZGVJbnB1dDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbm9MYXRleEhhbmRsaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBsYXlvdXRGb3JLZXlQYWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25Eb25lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25BbnN3ZXJCbG9ja0FkZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgYWRkaXRpb25hbEtleXM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgYXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBub0RlY2ltYWw6IFByb3BUeXBlcy5ib29sLFxuICAgIGFsbG93QW5zd2VyQmxvY2s6IFByb3BUeXBlcy5ib29sLFxuICAgIGNvbnRyb2xsZWRLZXlwYWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGNvbnRyb2xsZWRLZXlwYWRNb2RlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzaG93S2V5cGFkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBoaWRlRG9uZUJ1dHRvbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgaGlkZURvbmVCdXR0b25CYWNrZ3JvdW5kOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBlcnJvcjogUHJvcFR5cGVzLmFueSxcbiAgICBtYXhSZXNwb25zZUFyZWFzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGtleVBhZENoYXJhY3RlclJlZjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBzZXRLZXlwYWRJbnRlcmFjdGlvbjogUHJvcFR5cGVzLmZ1bmMsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjbGFzc05hbWVzOiB7fSxcbiAgICBoaWRlRG9uZUJ1dHRvbkJhY2tncm91bmQ6IGZhbHNlLFxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGFzc05hbWVzLFxuICAgICAgYXV0b0ZvY3VzLFxuICAgICAgYWxsb3dBbnN3ZXJCbG9jayxcbiAgICAgIG9uQW5zd2VyQmxvY2tBZGQsXG4gICAgICBjb250cm9sbGVkS2V5cGFkLFxuICAgICAgY29udHJvbGxlZEtleXBhZE1vZGUsXG4gICAgICBhZGRpdGlvbmFsS2V5cyxcbiAgICAgIHNob3dLZXlwYWQsXG4gICAgICBrZXlwYWRNb2RlLFxuICAgICAgbm9EZWNpbWFsLFxuICAgICAgaGlkZUlucHV0LFxuICAgICAgbm9MYXRleEhhbmRsaW5nLFxuICAgICAgbGF5b3V0Rm9yS2V5UGFkLFxuICAgICAga2V5UGFkQ2hhcmFjdGVyUmVmLFxuICAgICAgc2V0S2V5cGFkSW50ZXJhY3Rpb24sXG4gICAgICBsYXRleCxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Eb25lLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIGhpZGVEb25lQnV0dG9uLFxuICAgICAgaGlkZURvbmVCdXR0b25CYWNrZ3JvdW5kLFxuICAgICAgY2xhc3NlcyxcbiAgICAgIGVycm9yLFxuICAgICAgbWF4UmVzcG9uc2VBcmVhcyxcbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y3goY2xhc3Nlcy5wdXJlVG9vbGJhciwgKGNsYXNzTmFtZXMgfHwge30pLnRvb2xiYXIpfSByZWY9e2tleVBhZENoYXJhY3RlclJlZn0+XG4gICAgICAgIDxkaXYgLz5cbiAgICAgICAgPEVkaXRvckFuZFBhZFxuICAgICAgICAgIGF1dG9Gb2N1cz17YXV0b0ZvY3VzfVxuICAgICAgICAgIGtleXBhZE1vZGU9e2tleXBhZE1vZGV9XG4gICAgICAgICAgY2xhc3NOYW1lcz17Y2xhc3NOYW1lcyB8fCB7fX1cbiAgICAgICAgICBjb250cm9sbGVkS2V5cGFkPXtjb250cm9sbGVkS2V5cGFkfVxuICAgICAgICAgIGNvbnRyb2xsZWRLZXlwYWRNb2RlPXtjb250cm9sbGVkS2V5cGFkTW9kZX1cbiAgICAgICAgICBub0RlY2ltYWw9e25vRGVjaW1hbH1cbiAgICAgICAgICBoaWRlSW5wdXQ9e2hpZGVJbnB1dH1cbiAgICAgICAgICBub0xhdGV4SGFuZGxpbmc9e25vTGF0ZXhIYW5kbGluZ31cbiAgICAgICAgICBsYXlvdXRGb3JLZXlQYWQ9e2xheW91dEZvcktleVBhZH1cbiAgICAgICAgICBzaG93S2V5cGFkPXtzaG93S2V5cGFkfVxuICAgICAgICAgIGFkZGl0aW9uYWxLZXlzPXthZGRpdGlvbmFsS2V5c31cbiAgICAgICAgICBhbGxvd0Fuc3dlckJsb2NrPXthbGxvd0Fuc3dlckJsb2NrfVxuICAgICAgICAgIG9uQW5zd2VyQmxvY2tBZGQ9e29uQW5zd2VyQmxvY2tBZGR9XG4gICAgICAgICAgbGF0ZXg9e2xhdGV4fVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBvbkZvY3VzPXtvbkZvY3VzfVxuICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBtYXhSZXNwb25zZUFyZWFzPXttYXhSZXNwb25zZUFyZWFzfVxuICAgICAgICAgIHNldEtleXBhZEludGVyYWN0aW9uPXtzZXRLZXlwYWRJbnRlcmFjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgICAgeyghY29udHJvbGxlZEtleXBhZCB8fCAoY29udHJvbGxlZEtleXBhZCAmJiBzaG93S2V5cGFkKSkgJiYgIWhpZGVEb25lQnV0dG9uICYmIChcbiAgICAgICAgICA8RG9uZUJ1dHRvbiBoaWRlQmFja2dyb3VuZD17aGlkZURvbmVCdXR0b25CYWNrZ3JvdW5kfSBvbkNsaWNrPXtvbkRvbmV9IC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5jb25zdCBzdHlsZXMgPSAoKSA9PiAoe1xuICBwdXJlVG9vbGJhcjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHpJbmRleDogOCxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgUHVyZVRvb2xiYXIgPSB3aXRoU3R5bGVzKHN0eWxlcykoUmF3UHVyZVRvb2xiYXIpO1xuIl19