tc-ui-toolkit
Version:
React components used to develop tools for the desktop app translationCore
208 lines (170 loc) • 23.9 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactBootstrap = require("react-bootstrap");
require("./VerseRow.styles.css");
var _Verse = _interopRequireDefault(require("../../../Verse"));
var _verseHelpers = require("../../../helpers/verseHelpers");
var _fontUtils = require("../../../../common/fontUtils");
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); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
var VerseRow = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(VerseRow, _Component);
var _super = _createSuper(VerseRow);
function VerseRow(props) {
var _this;
(0, _classCallCheck2["default"])(this, VerseRow);
_this = _super.call(this, props);
_this.handleEdit = _this.handleEdit.bind((0, _assertThisInitialized2["default"])(_this));
return _this;
}
(0, _createClass2["default"])(VerseRow, [{
key: "handleEdit",
value: function handleEdit(bibleId, chapter, verse, verseText) {
var onEditTargetVerse = this.props.onEditTargetVerse;
if (bibleId === 'targetBible' && typeof onEditTargetVerse === 'function') {
onEditTargetVerse(bibleId, chapter, verse, verseText);
}
}
}, {
key: "render",
value: function render() {
var _this$props = this.props,
bibles = _this$props.bibles,
chapter = _this$props.chapter,
translate = _this$props.translate,
contextId = _this$props.contextId,
selections = _this$props.selections,
showPopover = _this$props.showPopover,
getLexiconData = _this$props.getLexiconData,
targetLanguageFont = _this$props.targetLanguageFont,
currentVerseNumber = _this$props.currentVerseNumber,
currentPaneSettings = _this$props.currentPaneSettings,
evenVerse = _this$props.evenVerse,
showTargetUsfm = _this$props.showTargetUsfm;
var verseCells = [];
var rowStyle = {
display: 'flex',
margin: '0',
color: 'var(--text-color-dark)',
width: '100%'
};
if (evenVerse) {
rowStyle.backgroundColor = 'var(--background-color-light)';
}
if (currentPaneSettings.length > 0) {
for (var i = 0, len = currentPaneSettings.length; i < len; i++) {
var paneSetting = currentPaneSettings[i];
try {
var _bible$manifest;
var font = paneSetting.font,
bibleId = paneSetting.bibleId,
fontSize = paneSetting.fontSize,
languageId = paneSetting.languageId,
owner = paneSetting.owner;
var bible = (0, _verseHelpers.getBibleElement)(bibles, languageId, bibleId, owner);
var direction = (bible === null || bible === void 0 ? void 0 : (_bible$manifest = bible.manifest) === null || _bible$manifest === void 0 ? void 0 : _bible$manifest.direction) || 'ltr';
var verseElements = [];
var verseText = '';
var verseLabel = '';
var verseData = '';
var blankVerse = false;
if (bible) {
var verseDataFromBible = (0, _verseHelpers.getVerseDataFromBible)(bible, chapter, currentVerseNumber);
verseData = verseDataFromBible.verseData;
verseLabel = verseDataFromBible.verseLabel;
var _isVerseInSpan = (0, _verseHelpers.isVerseInSpan)(verseLabel, currentVerseNumber),
isVerseSpan = _isVerseInSpan.isVerseSpan,
isFirstVerse = _isVerseInSpan.isFirstVerse;
blankVerse = isVerseSpan && !isFirstVerse;
verseText = verseData;
}
var colStyle = {
minWidth: '240px',
alignItems: 'stretch',
padding: '10px',
paddingTop: '20px',
borderRight: '1px solid var(--border-color)'
};
var isTargetBible = bibleId === 'targetBible';
var fontClass = '';
var showUsfm = false;
if (isTargetBible) {
font = targetLanguageFont;
fontClass = (0, _fontUtils.getFontClassName)(targetLanguageFont);
showUsfm = showTargetUsfm;
} else if (font) {
fontClass = (0, _fontUtils.getFontClassName)(font);
}
if (typeof verseData === 'string') {
// if the verse content is string.
verseElements = (0, _verseHelpers.verseString)(verseData, selections, translate, null, isTargetBible, fontClass, showUsfm);
} else if (verseData) {
// else the verse content is an array of verse objects.
verseElements = (0, _verseHelpers.verseArray)(verseData, bibleId, contextId, getLexiconData, showPopover, translate, {}, fontClass);
}
if (fontSize) {
colStyle.fontSize = "".concat(fontSize, "%");
}
verseCells.push( /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Col, {
key: i.toString(),
md: 4,
sm: 4,
xs: 4,
lg: 4,
style: colStyle
}, blankVerse ? /*#__PURE__*/_react["default"].createElement("div", null) : /*#__PURE__*/_react["default"].createElement(_Verse["default"], {
chapter: chapter,
bibleId: bibleId,
translate: translate,
verseText: verseText,
direction: direction,
fontClass: fontClass,
onEdit: this.handleEdit,
verse: verseLabel || currentVerseNumber,
verseElements: verseElements
})));
} catch (error) {
console.error("VerseRow: error rendering verse ".concat(JSON.stringify(paneSetting)), error);
}
}
}
return /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Row, {
style: rowStyle
}, verseCells);
}
}]);
return VerseRow;
}(_react.Component);
VerseRow.propTypes = {
chapter: _propTypes["default"].number.isRequired,
verse: _propTypes["default"].oneOfType([_propTypes["default"].string.isRequired, _propTypes["default"].number.isRequired]),
currentVerseNumber: _propTypes["default"].oneOfType([_propTypes["default"].string.isRequired, _propTypes["default"].number.isRequired]),
currentPaneSettings: _propTypes["default"].array.isRequired,
verseElements: _propTypes["default"].oneOfType([_propTypes["default"].string.isRequired, _propTypes["default"].array.isRequired]),
onEditTargetVerse: _propTypes["default"].func.isRequired,
bibles: _propTypes["default"].object.isRequired,
translate: _propTypes["default"].func.isRequired,
contextId: _propTypes["default"].object.isRequired,
selections: _propTypes["default"].array.isRequired,
getLexiconData: _propTypes["default"].func.isRequired,
showPopover: _propTypes["default"].func.isRequired,
targetLanguageFont: _propTypes["default"].string,
evenVerse: _propTypes["default"].bool,
showTargetUsfm: _propTypes["default"].bool
};
var _default = VerseRow;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9TY3JpcHR1cmVQYW5lL0V4cGFuZGVkU2NyaXB0dXJlUGFuZU1vZGFsL0NoYXB0ZXJWaWV3L1ZlcnNlUm93L2luZGV4LmpzIl0sIm5hbWVzIjpbIlZlcnNlUm93IiwicHJvcHMiLCJoYW5kbGVFZGl0IiwiYmluZCIsImJpYmxlSWQiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZVRleHQiLCJvbkVkaXRUYXJnZXRWZXJzZSIsImJpYmxlcyIsInRyYW5zbGF0ZSIsImNvbnRleHRJZCIsInNlbGVjdGlvbnMiLCJzaG93UG9wb3ZlciIsImdldExleGljb25EYXRhIiwidGFyZ2V0TGFuZ3VhZ2VGb250IiwiY3VycmVudFZlcnNlTnVtYmVyIiwiY3VycmVudFBhbmVTZXR0aW5ncyIsImV2ZW5WZXJzZSIsInNob3dUYXJnZXRVc2ZtIiwidmVyc2VDZWxscyIsInJvd1N0eWxlIiwiZGlzcGxheSIsIm1hcmdpbiIsImNvbG9yIiwid2lkdGgiLCJiYWNrZ3JvdW5kQ29sb3IiLCJsZW5ndGgiLCJpIiwibGVuIiwicGFuZVNldHRpbmciLCJmb250IiwiZm9udFNpemUiLCJsYW5ndWFnZUlkIiwib3duZXIiLCJiaWJsZSIsImRpcmVjdGlvbiIsIm1hbmlmZXN0IiwidmVyc2VFbGVtZW50cyIsInZlcnNlTGFiZWwiLCJ2ZXJzZURhdGEiLCJibGFua1ZlcnNlIiwidmVyc2VEYXRhRnJvbUJpYmxlIiwiaXNWZXJzZVNwYW4iLCJpc0ZpcnN0VmVyc2UiLCJjb2xTdHlsZSIsIm1pbldpZHRoIiwiYWxpZ25JdGVtcyIsInBhZGRpbmciLCJwYWRkaW5nVG9wIiwiYm9yZGVyUmlnaHQiLCJpc1RhcmdldEJpYmxlIiwiZm9udENsYXNzIiwic2hvd1VzZm0iLCJwdXNoIiwidG9TdHJpbmciLCJlcnJvciIsImNvbnNvbGUiLCJKU09OIiwic3RyaW5naWZ5IiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibnVtYmVyIiwiaXNSZXF1aXJl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QUFrQm5CckQsRUFBQUEsU0FBUyxFQUFFbUQsc0JBQVVPLE1BQVYsQ0FBaUJMLFVBbEJUO0FBbUJuQnBELEVBQUFBLFVBQVUsRUFBRWtELHNCQUFVSyxLQUFWLENBQWdCSCxVQW5CVDtBQW9CbkJsRCxFQUFBQSxjQUFjLEVBQUVnRCxzQkFBVU0sSUFBVixDQUFlSixVQXBCWjtBQXFCbkJuRCxFQUFBQSxXQUFXLEVBQUVpRCxzQkFBVU0sSUFBVixDQUFlSixVQXJCVDtBQXNCbkJqRCxFQUFBQSxrQkFBa0IsRUFBRStDLHNCQUFVSSxNQXRCWDtBQXVCbkJoRCxFQUFBQSxTQUFTLEVBQUU0QyxzQkFBVVEsSUF2QkY7QUF3Qm5CbkQsRUFBQUEsY0FBYyxFQUFFMkMsc0JBQVVRO0FBeEJQLENBQXJCO2VBMkJldEUsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgQ29sLCBSb3cgfSBmcm9tICdyZWFjdC1ib290c3RyYXAnO1xuaW1wb3J0ICcuL1ZlcnNlUm93LnN0eWxlcy5jc3MnO1xuLy8gY29tcG9uZW50c1xuaW1wb3J0IFZlcnNlIGZyb20gJy4uLy4uLy4uL1ZlcnNlJztcbi8vIGhlbHBlcnNcbmltcG9ydCB7XG4gIGdldEJpYmxlRWxlbWVudCxcbiAgZ2V0VmVyc2VEYXRhRnJvbUJpYmxlLFxuICBpc1ZlcnNlSW5TcGFuLFxuICB2ZXJzZVN0cmluZyxcbiAgdmVyc2VBcnJheSxcbn0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy92ZXJzZUhlbHBlcnMnO1xuaW1wb3J0IHsgZ2V0Rm9udENsYXNzTmFtZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9mb250VXRpbHMnO1xuXG5jbGFzcyBWZXJzZVJvdyBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuaGFuZGxlRWRpdCA9IHRoaXMuaGFuZGxlRWRpdC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgaGFuZGxlRWRpdChiaWJsZUlkLCBjaGFwdGVyLCB2ZXJzZSwgdmVyc2VUZXh0KSB7XG4gICAgY29uc3QgeyBvbkVkaXRUYXJnZXRWZXJzZSB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmIChiaWJsZUlkID09PSAndGFyZ2V0QmlibGUnICYmIHR5cGVvZiBvbkVkaXRUYXJnZXRWZXJzZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb25FZGl0VGFyZ2V0VmVyc2UoYmlibGVJZCwgY2hhcHRlciwgdmVyc2UsIHZlcnNlVGV4dCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGJpYmxlcyxcbiAgICAgIGNoYXB0ZXIsXG4gICAgICB0cmFuc2xhdGUsXG4gICAgICBjb250ZXh0SWQsXG4gICAgICBzZWxlY3Rpb25zLFxuICAgICAgc2hvd1BvcG92ZXIsXG4gICAgICBnZXRMZXhpY29uRGF0YSxcbiAgICAgIHRhcmdldExhbmd1YWdlRm9udCxcbiAgICAgIGN1cnJlbnRWZXJzZU51bWJlcixcbiAgICAgIGN1cnJlbnRQYW5lU2V0dGluZ3MsXG4gICAgICBldmVuVmVyc2UsXG4gICAgICBzaG93VGFyZ2V0VXNmbSxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBsZXQgdmVyc2VDZWxscyA9IFtdO1xuXG4gICAgbGV0IHJvd1N0eWxlID0ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgbWFyZ2luOiAnMCcsXG4gICAgICBjb2xvcjogJ3ZhcigtLXRleHQtY29sb3ItZGFyayknLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICB9O1xuXG4gICAgaWYgKGV2ZW5WZXJzZSkge1xuICAgICAgcm93U3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3ZhcigtLWJhY2tncm91bmQtY29sb3ItbGlnaHQpJztcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFBhbmVTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gY3VycmVudFBhbmVTZXR0aW5ncy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjb25zdCBwYW5lU2V0dGluZyA9IGN1cnJlbnRQYW5lU2V0dGluZ3NbaV07XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgZm9udCxcbiAgICAgICAgICAgIGJpYmxlSWQsXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgICBvd25lcixcbiAgICAgICAgICB9ID0gcGFuZVNldHRpbmc7XG4gICAgICAgICAgY29uc3QgYmlibGUgPSBnZXRCaWJsZUVsZW1lbnQoYmlibGVzLCBsYW5ndWFnZUlkLCBiaWJsZUlkLCBvd25lcik7XG4gICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gYmlibGU/Lm1hbmlmZXN0Py5kaXJlY3Rpb24gfHwgJ2x0cic7XG4gICAgICAgICAgbGV0IHZlcnNlRWxlbWVudHMgPSBbXTtcbiAgICAgICAgICBsZXQgdmVyc2VUZXh0ID0gJyc7XG4gICAgICAgICAgbGV0IHZlcnNlTGFiZWwgPSAnJztcbiAgICAgICAgICBsZXQgdmVyc2VEYXRhID0gJyc7XG4gICAgICAgICAgbGV0IGJsYW5rVmVyc2UgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChiaWJsZSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VEYXRhRnJvbUJpYmxlID0gZ2V0VmVyc2VEYXRhRnJvbUJpYmxlKGJpYmxlLCBjaGFwdGVyLCBjdXJyZW50VmVyc2VOdW1iZXIpO1xuICAgICAgICAgICAgdmVyc2VEYXRhID0gdmVyc2VEYXRhRnJvbUJpYmxlLnZlcnNlRGF0YTtcbiAgICAgICAgICAgIHZlcnNlTGFiZWwgPSB2ZXJzZURhdGFGcm9tQmlibGUudmVyc2VMYWJlbDtcbiAgICAgICAgICAgIGNvbnN0IHsgaXNWZXJzZVNwYW4sIGlzRmlyc3RWZXJzZSB9ID0gaXNWZXJzZUluU3Bhbih2ZXJzZUxhYmVsLCBjdXJyZW50VmVyc2VOdW1iZXIpO1xuICAgICAgICAgICAgYmxhbmtWZXJzZSA9IGlzVmVyc2VTcGFuICYmICFpc0ZpcnN0VmVyc2U7XG4gICAgICAgICAgICB2ZXJzZVRleHQgPSB2ZXJzZURhdGE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGNvbFN0eWxlID0ge1xuICAgICAgICAgICAgbWluV2lkdGg6ICcyNDBweCcsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICBwYWRkaW5nOiAnMTBweCcsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiAnMjBweCcsXG4gICAgICAgICAgICBib3JkZXJSaWdodDogJzFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpJyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGlzVGFyZ2V0QmlibGUgPSBiaWJsZUlkID09PSAndGFyZ2V0QmlibGUnO1xuICAgICAgICAgIGxldCBmb250Q2xhc3MgPSAnJztcbiAgICAgICAgICBsZXQgc2hvd1VzZm0gPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChpc1RhcmdldEJpYmxlKSB7XG4gICAgICAgICAgICBmb250ID0gdGFyZ2V0TGFuZ3VhZ2VGb250O1xuICAgICAgICAgICAgZm9udENsYXNzID0gZ2V0Rm9udENsYXNzTmFtZSAodGFyZ2V0TGFuZ3VhZ2VGb250KTtcbiAgICAgICAgICAgIHNob3dVc2ZtID0gc2hvd1RhcmdldFVzZm07XG4gICAgICAgICAgfSBlbHNlIGlmIChmb250KSB7XG4gICAgICAgICAgICBmb250Q2xhc3MgPSBnZXRGb250Q2xhc3NOYW1lKGZvbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgdmVyc2VEYXRhID09PSAnc3RyaW5nJykgeyAvLyBpZiB0aGUgdmVyc2UgY29udGVudCBpcyBzdHJpbmcuXG4gICAgICAgICAgICB2ZXJzZUVsZW1lbnRzID0gdmVyc2VTdHJpbmcodmVyc2VEYXRhLCBzZWxlY3Rpb25zLCB0cmFuc2xhdGUsIG51bGwsIGlzVGFyZ2V0QmlibGUsIGZvbnRDbGFzcywgc2hvd1VzZm0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAodmVyc2VEYXRhKSB7IC8vIGVsc2UgdGhlIHZlcnNlIGNvbnRlbnQgaXMgYW4gYXJyYXkgb2YgdmVyc2Ugb2JqZWN0cy5cbiAgICAgICAgICAgIHZlcnNlRWxlbWVudHMgPSB2ZXJzZUFycmF5KHZlcnNlRGF0YSwgYmlibGVJZCwgY29udGV4dElkLCBnZXRMZXhpY29uRGF0YSwgc2hvd1BvcG92ZXIsIHRyYW5zbGF0ZSwge30sIGZvbnRDbGFzcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZvbnRTaXplKSB7XG4gICAgICAgICAgICBjb2xTdHlsZS5mb250U2l6ZSA9IGAke2ZvbnRTaXplfSVgO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZlcnNlQ2VsbHMucHVzaChcbiAgICAgICAgICAgIDxDb2wga2V5PXtpLnRvU3RyaW5nKCl9IG1kPXs0fSBzbT17NH0geHM9ezR9IGxnPXs0fSBzdHlsZT17Y29sU3R5bGV9PlxuICAgICAgICAgICAgICB7YmxhbmtWZXJzZSA/XG4gICAgICAgICAgICAgICAgPGRpdi8+XG4gICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgIDxWZXJzZVxuICAgICAgICAgICAgICAgICAgY2hhcHRlcj17Y2hhcHRlcn1cbiAgICAgICAgICAgICAgICAgIGJpYmxlSWQ9e2JpYmxlSWR9XG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgICAgICAgIHZlcnNlVGV4dD17dmVyc2VUZXh0fVxuICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBmb250Q2xhc3M9e2ZvbnRDbGFzc31cbiAgICAgICAgICAgICAgICAgIG9uRWRpdD17dGhpcy5oYW5kbGVFZGl0fVxuICAgICAgICAgICAgICAgICAgdmVyc2U9e3ZlcnNlTGFiZWwgfHwgY3VycmVudFZlcnNlTnVtYmVyfVxuICAgICAgICAgICAgICAgICAgdmVyc2VFbGVtZW50cz17dmVyc2VFbGVtZW50c31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L0NvbD4sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBWZXJzZVJvdzogZXJyb3IgcmVuZGVyaW5nIHZlcnNlICR7SlNPTi5zdHJpbmdpZnkocGFuZVNldHRpbmcpfWAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Um93IHN0eWxlPXtyb3dTdHlsZX0+XG4gICAgICAgIHt2ZXJzZUNlbGxzfVxuICAgICAgPC9Sb3c+XG4gICAgKTtcbiAgfVxufVxuXG5WZXJzZVJvdy5wcm9wVHlwZXMgPSB7XG4gIGNoYXB0ZXI6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIF0pLFxuICBjdXJyZW50VmVyc2VOdW1iZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIF0pLFxuICBjdXJyZW50UGFuZVNldHRpbmdzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgdmVyc2VFbGVtZW50czogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBdKSxcbiAgb25FZGl0VGFyZ2V0VmVyc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGJpYmxlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNvbnRleHRJZDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzZWxlY3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNob3dQb3BvdmVyOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0YXJnZXRMYW5ndWFnZUZvbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGV2ZW5WZXJzZTogUHJvcFR5cGVzLmJvb2wsXG4gIHNob3dUYXJnZXRVc2ZtOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZlcnNlUm93O1xuIl19