react-lightning-design-components
Version:
Salesforce Lightning Design System components built with React 16
255 lines (212 loc) • 19.3 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ModalFooter = exports.ModalContent = exports.ModalHeader = undefined;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _Button = require('./Button');
var _Button2 = _interopRequireDefault(_Button);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var ModalHeader = exports.ModalHeader = function (_Component) {
(0, _inherits3.default)(ModalHeader, _Component);
function ModalHeader() {
(0, _classCallCheck3.default)(this, ModalHeader);
return (0, _possibleConstructorReturn3.default)(this, (ModalHeader.__proto__ || (0, _getPrototypeOf2.default)(ModalHeader)).apply(this, arguments));
}
(0, _createClass3.default)(ModalHeader, [{
key: 'onClose',
value: function onClose() {
if (this.props.onClose) {
this.props.onClose();
}
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
className = _props.className,
title = _props.title,
tagline = _props.tagline,
closeButton = _props.closeButton,
props = (0, _objectWithoutProperties3.default)(_props, ['className', 'title', 'tagline', 'closeButton']);
var hdClassNames = (0, _classnames2.default)(className, 'slds-modal__header');
var pprops = props;
delete pprops.onClose;
delete pprops.iconSize;
delete pprops.inverse;
return _react2.default.createElement(
'div',
(0, _extends3.default)({ className: hdClassNames }, pprops),
_react2.default.createElement(
'h2',
{ className: 'slds-text-heading--medium' },
title
),
tagline ? _react2.default.createElement(
'p',
{ className: 'slds-m-top--x-small' },
tagline
) : null,
closeButton ? _react2.default.createElement(_Button2.default, {
className: 'slds-button--icon-inverse slds-modal__close',
icon: 'close',
iconSize: 'large',
size: 'large',
alt: 'Close',
inverse: true,
onClick: this.onClose.bind(this)
}) : null
);
}
}]);
return ModalHeader;
}(_react.Component);
ModalHeader.propTypes = {
className: _propTypes2.default.string,
closeButton: _propTypes2.default.bool,
isError: _propTypes2.default.bool,
onClose: _propTypes2.default.func,
tagline: _propTypes2.default.any,
title: _propTypes2.default.node
};
var ModalContent = function ModalContent(_ref) {
var className = _ref.className,
children = _ref.children,
props = (0, _objectWithoutProperties3.default)(_ref, ['className', 'children']);
var ctClassNames = (0, _classnames2.default)(className, 'slds-modal__content');
return _react2.default.createElement(
'div',
(0, _extends3.default)({ className: ctClassNames }, props),
children
);
};
exports.ModalContent = ModalContent;
ModalContent.propTypes = {
className: _propTypes2.default.string,
children: _propTypes2.default.node
};
var Modal = function (_Component2) {
(0, _inherits3.default)(Modal, _Component2);
function Modal() {
(0, _classCallCheck3.default)(this, Modal);
return (0, _possibleConstructorReturn3.default)(this, (Modal.__proto__ || (0, _getPrototypeOf2.default)(Modal)).apply(this, arguments));
}
(0, _createClass3.default)(Modal, [{
key: 'hide',
value: function hide() {
if (this.props.onHide) {
this.props.onHide();
}
}
}, {
key: 'renderChildComponent',
value: function renderChildComponent(comp) {
if (comp.type === ModalHeader) {
var className = comp.props.className;
if (this.props.isError) {
className = (0, _classnames2.default)(className, 'slds-theme--error', 'slds-theme--alert-texture');
}
return _react2.default.cloneElement(comp, { onClose: this.hide.bind(this), className: className });
}
if (comp.type === ModalContent) {
var _className = comp.props.className;
if (this.props.isError) {
_className = (0, _classnames2.default)(_className, 'slds-p-around--medium');
}
return _react2.default.cloneElement(comp, { className: _className });
}
return comp;
}
}, {
key: 'render',
value: function render() {
var _props2 = this.props,
className = _props2.className,
opened = _props2.opened,
children = _props2.children,
size = _props2.size,
isError = _props2.isError,
props = (0, _objectWithoutProperties3.default)(_props2, ['className', 'opened', 'children', 'size', 'isError']);
var pprops = (0, _extends3.default)({}, props);
delete pprops.onHide;
var modalClassNames = (0, _classnames2.default)(className, 'slds-modal', {
'slds-fade-in-open': opened,
'slds-modal--large': size === 'large',
'slds-modal--prompt': isError
});
var backdropClassNames = (0, _classnames2.default)(className, 'slds-modal-backdrop', {
'slds-modal-backdrop--open': opened
});
return _react2.default.createElement(
'div',
null,
_react2.default.createElement(
'div',
(0, _extends3.default)({
className: modalClassNames,
'aria-hidden': !opened,
role: 'dialog'
}, pprops),
_react2.default.createElement(
'div',
{ className: 'slds-modal__container' },
_react2.default.Children.map(children, this.renderChildComponent.bind(this))
)
),
_react2.default.createElement('div', { className: backdropClassNames })
);
}
}]);
return Modal;
}(_react.Component);
var MODAL_SIZES = ['large'];
Modal.propTypes = {
children: _propTypes2.default.node,
className: _propTypes2.default.string,
isError: _propTypes2.default.bool,
onHide: _propTypes2.default.func,
opened: _propTypes2.default.bool,
size: _propTypes2.default.oneOf(MODAL_SIZES)
};
var ModalFooter = function ModalFooter(_ref2) {
var className = _ref2.className,
directional = _ref2.directional,
children = _ref2.children,
props = (0, _objectWithoutProperties3.default)(_ref2, ['className', 'directional', 'children']);
var ftClassNames = (0, _classnames2.default)(className, 'slds-modal__footer', { 'slds-modal__footer--directional': directional });
return _react2.default.createElement(
'div',
(0, _extends3.default)({ className: ftClassNames }, props),
children
);
};
exports.ModalFooter = ModalFooter;
ModalFooter.propTypes = {
className: _propTypes2.default.string,
directional: _propTypes2.default.bool,
children: _propTypes2.default.node
};
Modal.Header = ModalHeader;
Modal.Content = ModalContent;
Modal.Footer = ModalFooter;
exports.default = Modal;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL01vZGFsLmpzIl0sIm5hbWVzIjpbIk1vZGFsSGVhZGVyIiwicHJvcHMiLCJvbkNsb3NlIiwiY2xhc3NOYW1lIiwidGl0bGUiLCJ0YWdsaW5lIiwiY2xvc2VCdXR0b24iLCJoZENsYXNzTmFtZXMiLCJwcHJvcHMiLCJpY29uU2l6ZSIsImludmVyc2UiLCJiaW5kIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsImlzRXJyb3IiLCJmdW5jIiwiYW55Iiwibm9kZSIsIk1vZGFsQ29udGVudCIsImNoaWxkcmVuIiwiY3RDbGFzc05hbWVzIiwiTW9kYWwiLCJvbkhpZGUiLCJjb21wIiwidHlwZSIsImNsb25lRWxlbWVudCIsImhpZGUiLCJvcGVuZWQiLCJzaXplIiwibW9kYWxDbGFzc05hbWVzIiwiYmFja2Ryb3BDbGFzc05hbWVzIiwiQ2hpbGRyZW4iLCJtYXAiLCJyZW5kZXJDaGlsZENvbXBvbmVudCIsIk1PREFMX1NJWkVTIiwib25lT2YiLCJNb2RhbEZvb3RlciIsImRpcmVjdGlvbmFsIiwiZnRDbGFzc05hbWVzIiwiSGVhZGVyIiwiQ29udGVudCIsIkZvb3RlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0lBRWFBLFcsV0FBQUEsVzs7Ozs7Ozs7Ozs4QkFDRDtBQUNSLFVBQUksS0FBS0MsS0FBTCxDQUFXQyxPQUFmLEVBQXdCO0FBQ3RCLGFBQUtELEtBQUwsQ0FBV0MsT0FBWDtBQUNEO0FBQ0Y7Ozs2QkFFUTtBQUFBLG1CQUNzRCxLQUFLRCxLQUQzRDtBQUFBLFVBQ0NFLFNBREQsVUFDQ0EsU0FERDtBQUFBLFVBQ1lDLEtBRFosVUFDWUEsS0FEWjtBQUFBLFVBQ21CQyxPQURuQixVQUNtQkEsT0FEbkI7QUFBQSxVQUM0QkMsV0FENUIsVUFDNEJBLFdBRDVCO0FBQUEsVUFDNENMLEtBRDVDOztBQUVQLFVBQU1NLGVB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QUFBQSxNQUF0Q21DLFdBQXNDLFNBQXRDQSxXQUFzQztBQUFBLE1BQXpCbEIsUUFBeUIsU0FBekJBLFFBQXlCO0FBQUEsTUFBWm5CLEtBQVk7O0FBQzdFLE1BQU1zQyxlQUFlLDBCQUNuQnBDLFNBRG1CLEVBRW5CLG9CQUZtQixFQUduQixFQUFFLG1DQUFtQ21DLFdBQXJDLEVBSG1CLENBQXJCO0FBS0EsU0FDRTtBQUFBO0FBQUEsNkJBQUssV0FBWUMsWUFBakIsSUFBcUN0QyxLQUFyQztBQUErQ21CO0FBQS9DLEdBREY7QUFHRCxDQVRNOzs7QUFXUGlCLFlBQVl6QixTQUFaLEdBQXdCO0FBQ3RCVCxhQUFXLG9CQUFVVSxNQURDO0FBRXRCeUIsZUFBYSxvQkFBVXhCLElBRkQ7QUFHdEJNLFlBQVUsb0JBQVVGO0FBSEUsQ0FBeEI7O0FBT0FJLE1BQU1rQixNQUFOLEdBQWV4QyxXQUFmO0FBQ0FzQixNQUFNbUIsT0FBTixHQUFnQnRCLFlBQWhCO0FBQ0FHLE1BQU1vQixNQUFOLEdBQWVMLFdBQWY7O2tCQUVlZixLIiwiZmlsZSI6Ik1vZGFsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgTW9kYWxIZWFkZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICBvbkNsb3NlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLm9uQ2xvc2UpIHtcbiAgICAgIHRoaXMucHJvcHMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgdGl0bGUsIHRhZ2xpbmUsIGNsb3NlQnV0dG9uLCAuLi5wcm9wcyB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBoZENsYXNzTmFtZXMgPSBjbGFzc25hbWVzKGNsYXNzTmFtZSwgJ3NsZHMtbW9kYWxfX2hlYWRlcicpO1xuICAgIGNvbnN0IHBwcm9wcyA9IHByb3BzO1xuICAgIGRlbGV0ZSBwcHJvcHMub25DbG9zZTtcbiAgICBkZWxldGUgcHByb3BzLmljb25TaXplO1xuICAgIGRlbGV0ZSBwcHJvcHMuaW52ZXJzZTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9eyBoZENsYXNzTmFtZXMgfSB7IC4uLnBwcm9wcyB9PlxuICAgICAgICA8aDIgY2xhc3NOYW1lPSdzbGRzLXRleHQtaGVhZGluZy0tbWVkaXVtJz57IHRpdGxlIH08L2gyPlxuICAgICAgICB7XG4gICAgICAgICAgdGFnbGluZSA/XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9J3NsZHMtbS10b3AtLXgtc21hbGwnPnsgdGFnbGluZSB9PC9wPiA6XG4gICAgICAgICAgICBudWxsXG4gICAgICAgIH1cbiAgICAgICAge1xuICAgICAgICAgIGNsb3NlQnV0dG9uID9cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPSdzbGRzLWJ1dHRvbi0taWNvbi1pbnZlcnNlIHNsZHMtbW9kYWxfX2Nsb3NlJ1xuICAgICAgICAgICAgICBpY29uPSdjbG9zZSdcbiAgICAgICAgICAgICAgaWNvblNpemU9J2xhcmdlJ1xuICAgICAgICAgICAgICBzaXplPSdsYXJnZSdcbiAgICAgICAgICAgICAgYWx0PSdDbG9zZSdcbiAgICAgICAgICAgICAgaW52ZXJzZVxuICAgICAgICAgICAgICBvbkNsaWNrPXsgdGhpcy5vbkNsb3NlLmJpbmQodGhpcykgfVxuICAgICAgICAgICAgLz4gOlxuICAgICAgICAgICAgbnVsbFxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbn1cblxuTW9kYWxIZWFkZXIucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNsb3NlQnV0dG9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNFcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICB0YWdsaW5lOiBQcm9wVHlwZXMuYW55LFxuICB0aXRsZTogUHJvcFR5cGVzLm5vZGUsXG59O1xuXG5leHBvcnQgY29uc3QgTW9kYWxDb250ZW50ID0gKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBjdENsYXNzTmFtZXMgPSBjbGFzc25hbWVzKGNsYXNzTmFtZSwgJ3NsZHMtbW9kYWxfX2NvbnRlbnQnKTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17IGN0Q2xhc3NOYW1lcyB9IHsgLi4ucHJvcHMgfT57IGNoaWxkcmVuIH08L2Rpdj5cbiAgKTtcbn07XG5cbk1vZGFsQ29udGVudC5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxufTtcblxuY2xhc3MgTW9kYWwgZXh0ZW5kcyBDb21wb25lbnQge1xuICBoaWRlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLm9uSGlkZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkhpZGUoKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJDaGlsZENvbXBvbmVudChjb21wKSB7XG4gICAgaWYgKGNvbXAudHlwZSA9PT0gTW9kYWxIZWFkZXIpIHtcbiAgICAgIGxldCBjbGFzc05hbWUgPSBjb21wLnByb3BzLmNsYXNzTmFtZTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmlzRXJyb3IpIHtcbiAgICAgICAgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhjbGFzc05hbWUsICdzbGRzLXRoZW1lLS1lcnJvcicsICdzbGRzLXRoZW1lLS1hbGVydC10ZXh0dXJlJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNvbXAsIHsgb25DbG9zZTogdGhpcy5oaWRlLmJpbmQodGhpcyksIGNsYXNzTmFtZSB9KTtcbiAgICB9XG4gICAgaWYgKGNvbXAudHlwZSA9PT0gTW9kYWxDb250ZW50KSB7XG4gICAgICBsZXQgY2xhc3NOYW1lID0gY29tcC5wcm9wcy5jbGFzc05hbWU7XG4gICAgICBpZiAodGhpcy5wcm9wcy5pc0Vycm9yKSB7XG4gICAgICAgIGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoY2xhc3NOYW1lLCAnc2xkcy1wLWFyb3VuZC0tbWVkaXVtJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNvbXAsIHsgY2xhc3NOYW1lIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29tcDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgb3BlbmVkLCBjaGlsZHJlbiwgc2l6ZSwgaXNFcnJvciwgLi4ucHJvcHMgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgcHByb3BzID0geyAuLi5wcm9wcyB9O1xuICAgIGRlbGV0ZSBwcHJvcHMub25IaWRlO1xuICAgIGNvbnN0IG1vZGFsQ2xhc3NOYW1lcyA9IGNsYXNzbmFtZXMoY2xhc3NOYW1lLCAnc2xkcy1tb2RhbCcsIHtcbiAgICAgICdzbGRzLWZhZGUtaW4tb3Blbic6IG9wZW5lZCxcbiAgICAgICdzbGRzLW1vZGFsLS1sYXJnZSc6IHNpemUgPT09ICdsYXJnZScsXG4gICAgICAnc2xkcy1tb2RhbC0tcHJvbXB0JzogaXNFcnJvcixcbiAgICB9KTtcbiAgICBjb25zdCBiYWNrZHJvcENsYXNzTmFtZXMgPSBjbGFzc25hbWVzKGNsYXNzTmFtZSwgJ3NsZHMtbW9kYWwtYmFja2Ryb3AnLCB7XG4gICAgICAnc2xkcy1tb2RhbC1iYWNrZHJvcC0tb3Blbic6IG9wZW5lZCxcbiAgICB9KTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17IG1vZGFsQ2xhc3NOYW1lcyB9XG4gICAgICAgICAgYXJpYS1oaWRkZW49eyAhb3BlbmVkIH1cbiAgICAgICAgICByb2xlPSdkaWFsb2cnXG4gICAgICAgICAgeyAuLi5wcHJvcHMgfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3NsZHMtbW9kYWxfX2NvbnRhaW5lcic+XG4gICAgICAgICAgICB7IFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgdGhpcy5yZW5kZXJDaGlsZENvbXBvbmVudC5iaW5kKHRoaXMpKSB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGJhY2tkcm9wQ2xhc3NOYW1lcyB9PjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBNT0RBTF9TSVpFUyA9IFsnbGFyZ2UnXTtcblxuTW9kYWwucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNFcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uSGlkZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW5lZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihNT0RBTF9TSVpFUyksXG59O1xuXG5leHBvcnQgY29uc3QgTW9kYWxGb290ZXIgPSAoeyBjbGFzc05hbWUsIGRpcmVjdGlvbmFsLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBmdENsYXNzTmFtZXMgPSBjbGFzc25hbWVzKFxuICAgIGNsYXNzTmFtZSxcbiAgICAnc2xkcy1tb2RhbF9fZm9vdGVyJyxcbiAgICB7ICdzbGRzLW1vZGFsX19mb290ZXItLWRpcmVjdGlvbmFsJzogZGlyZWN0aW9uYWwgfVxuICApO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXsgZnRDbGFzc05hbWVzIH0geyAuLi5wcm9wcyB9PnsgY2hpbGRyZW4gfTwvZGl2PlxuICApO1xufTtcblxuTW9kYWxGb290ZXIucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRpcmVjdGlvbmFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxufTtcblxuXG5Nb2RhbC5IZWFkZXIgPSBNb2RhbEhlYWRlcjtcbk1vZGFsLkNvbnRlbnQgPSBNb2RhbENvbnRlbnQ7XG5Nb2RhbC5Gb290ZXIgPSBNb2RhbEZvb3RlcjtcblxuZXhwb3J0IGRlZmF1bHQgTW9kYWw7XG4iXX0=