apeman-react-sign
Version:
apeman react package for sign components
358 lines (308 loc) • 27.9 kB
JavaScript
/**
* Form for signin
* @class ApSigninForm
*/
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ApSigninForm = undefined;
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
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 _apemanReactForm = require('apeman-react-form');
var _apemanReactField = require('apeman-react-field');
var _apemanReactButton = require('apeman-react-button');
var _apemanReactText = require('apeman-react-text');
var _apemanReactPassword = require('apeman-react-password');
var _apemanReactCheckbox = require('apeman-react-checkbox');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var noop = function noop(e) {
return console.log(e);
};
/** @lends ApSigninForm */
var ApSigninForm = function (_Component) {
(0, _inherits3.default)(ApSigninForm, _Component);
function ApSigninForm(props) {
(0, _classCallCheck3.default)(this, ApSigninForm);
var _this = (0, _possibleConstructorReturn3.default)(this, (ApSigninForm.__proto__ || (0, _getPrototypeOf2.default)(ApSigninForm)).call(this, props));
var s = _this;
s.state = {};
return _this;
}
(0, _createClass3.default)(ApSigninForm, [{
key: 'render',
value: function render() {
var s = this;
var props = s.props;
var id = props.id,
values = props.values,
labels = props.labels,
icons = props.icons,
idOf = props.idOf,
onUpdate = props.onUpdate,
_onSubmit = props.onSubmit,
spinning = props.spinning,
errorList = props.errorList,
errorStyle = props.errorStyle,
actions = props.actions,
centered = props.centered,
rememberEnabled = props.rememberEnabled;
return _react2.default.createElement(
_apemanReactForm.ApForm,
{ id: id,
centered: centered,
spinning: spinning,
className: (0, _classnames2.default)('ap-signin-form', props.className),
style: (0, _assign2.default)({}, props.style)
},
_react2.default.createElement(
_apemanReactField.ApFieldSet,
{ plain: true },
errorList,
errorStyle,
_react2.default.createElement(ApSigninForm.KeyField, { values: values, labels: labels, idOf: idOf, onUpdate: onUpdate }),
_react2.default.createElement(ApSigninForm.PasswordField, { values: values, labels: labels, idOf: idOf, onUpdate: onUpdate }),
_react2.default.createElement(ApSigninForm.RememberField, (0, _extends3.default)({ labels: labels, idOf: idOf }, {
enabled: rememberEnabled,
onToggle: actions.toggleRemember
})),
props.children,
_react2.default.createElement(ApSigninForm.ButtonField, (0, _extends3.default)({ labels: labels, idOf: idOf }, {
onSubmit: function onSubmit() {
return _onSubmit(s.props.values);
} }))
),
_react2.default.createElement(ApSigninForm.MenuFieldSet, { actions: props.menu,
labels: labels,
idOf: idOf
}),
_react2.default.createElement(ApSigninForm.ButtonFieldSet, { actions: props.buttons,
labels: labels,
icons: icons,
idOf: idOf })
);
}
}]);
return ApSigninForm;
}(_react.Component);
(0, _assign2.default)(ApSigninForm, {
// --------------------
// Specs
// --------------------
propTypes: {
labels: _react.PropTypes.object,
icons: _react.PropTypes.object,
menu: _react.PropTypes.objectOf(_react.PropTypes.func),
buttons: _react.PropTypes.objectOf(_react.PropTypes.func),
rememberEnabled: _react.PropTypes.bool
},
defaultProps: {
labels: {
key: 'Username or Email',
password: 'Password',
remember: 'Remember Me',
submit: 'Sign In',
signup: 'Sign Up',
recover: 'Forget Password?',
twitter: 'Sign in with Twitter',
google: 'Sign in with Google',
facebook: 'Sign in with Facebook'
},
icons: {
facebook: 'fa fa-facebook',
twitter: 'fa fa-twitter',
google: 'fa fa-google'
},
actions: {
toggleRemember: noop
},
menu: null,
buttons: null,
rememberEnabled: false
},
// ------------------
// Sub Components
// ------------------
KeyField: function KeyField(_ref) {
var values = _ref.values,
labels = _ref.labels,
idOf = _ref.idOf,
onUpdate = _ref.onUpdate;
var name = 'key';
return _react2.default.createElement(
_apemanReactField.ApField,
null,
_react2.default.createElement(
_apemanReactField.ApFieldLabel,
{ htmlFor: idOf(name) },
labels[[name]]
),
_react2.default.createElement(
_apemanReactField.ApFieldValue,
null,
_react2.default.createElement(_apemanReactText.ApText, { autoFocus: true,
id: idOf(name),
name: name,
value: values[name],
onChange: function onChange(e) {
return onUpdate((0, _defineProperty3.default)({}, name, e.target.value));
}
})
)
);
},
PasswordField: function PasswordField(_ref2) {
var values = _ref2.values,
labels = _ref2.labels,
idOf = _ref2.idOf,
onUpdate = _ref2.onUpdate;
var name = 'password';
return _react2.default.createElement(
_apemanReactField.ApField,
null,
_react2.default.createElement(
_apemanReactField.ApFieldLabel,
{ htmlFor: idOf(name) },
labels[name]
),
_react2.default.createElement(
_apemanReactField.ApFieldValue,
null,
_react2.default.createElement(_apemanReactPassword.ApPassword, { id: idOf(name),
value: values[name],
name: name,
onChange: function onChange(e) {
return onUpdate((0, _defineProperty3.default)({}, name, e.target.value));
}
})
)
);
},
RememberField: function RememberField(_ref3) {
var labels = _ref3.labels,
idOf = _ref3.idOf,
enabled = _ref3.enabled,
onToggle = _ref3.onToggle;
var name = 'remember';
return _react2.default.createElement(
_apemanReactField.ApField,
{ className: 'ap-signin-form-sub-field' },
_react2.default.createElement(_apemanReactField.ApFieldLabel, { htmlFor: idOf(name) }),
_react2.default.createElement(
_apemanReactField.ApFieldValue,
null,
_react2.default.createElement(_apemanReactCheckbox.ApCheckbox, { id: idOf(name),
value: 'YES',
checked: enabled,
title: labels[name],
name: name,
onChange: function onChange() {
return onToggle(!enabled);
}
})
)
);
},
ButtonField: function ButtonField(_ref4) {
var labels = _ref4.labels,
idOf = _ref4.idOf,
onSubmit = _ref4.onSubmit;
var name = 'submit';
return _react2.default.createElement(
_apemanReactField.ApField,
{ center: true,
className: 'ap-signin-form-button-field' },
_react2.default.createElement(
_apemanReactButton.ApButton,
{ wide: true,
primary: true,
onTap: onSubmit,
id: idOf(name)
},
labels[name]
)
);
},
MenuFieldSet: function MenuFieldSet(_ref5) {
var actions = _ref5.actions,
labels = _ref5.labels,
idOf = _ref5.idOf;
if (!actions) {
return null;
}
return _react2.default.createElement(
_apemanReactField.ApFieldSet,
{ plain: true },
_react2.default.createElement(
_apemanReactField.ApField,
{ center: true,
className: 'ap-signin-form-action-field' },
_react2.default.createElement(
_apemanReactButton.ApCellButtonRow,
{ className: 'ap-signin-form-action-button-row' },
(0, _keys2.default)(actions).map(function (name) {
return _react2.default.createElement(_apemanReactButton.ApCellButton, { id: idOf(name),
key: name,
onTap: function onTap(e) {
return actions[name]();
},
text: labels[name] });
})
)
)
);
},
ButtonFieldSet: function ButtonFieldSet(_ref6) {
var actions = _ref6.actions,
labels = _ref6.labels,
icons = _ref6.icons,
idOf = _ref6.idOf;
if (!actions) {
return null;
}
return _react2.default.createElement(
_apemanReactField.ApFieldSet,
{ plain: true },
_react2.default.createElement(
_apemanReactField.ApField,
{ className: 'ap-signin-form-action-field' },
_react2.default.createElement(
_apemanReactButton.ApIconButtonRow,
{ className: 'ap-signin-form-action-button-row' },
(0, _keys2.default)(actions).map(function (name) {
return _react2.default.createElement(_apemanReactButton.ApIconButton, { id: idOf(name),
key: name,
onTap: function onTap(e) {
return actions[name]();
},
icon: icons[name],
text: labels[name] });
})
)
)
);
}
});
exports.ApSigninForm = ApSigninForm;
exports.default = (0, _apemanReactForm.withForm)(ApSigninForm);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3NpZ25pbl9mb3JtLmpzeCJdLCJuYW1lcyI6WyJub29wIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJBcFNpZ25pbkZvcm0iLCJwcm9wcyIsInMiLCJzdGF0ZSIsImlkIiwidmFsdWVzIiwibGFiZWxzIiwiaWNvbnMiLCJpZE9mIiwib25VcGRhdGUiLCJvblN1Ym1pdCIsInNwaW5uaW5nIiwiZXJyb3JMaXN0IiwiZXJyb3JTdHlsZSIsImFjdGlvbnMiLCJjZW50ZXJlZCIsInJlbWVtYmVyRW5hYmxlZCIsImNsYXNzTmFtZSIsInN0eWxlIiwidG9nZ2xlUmVtZW1iZXIiLCJjaGlsZHJlbiIsIm1lbnUiLCJidXR0b25zIiwicHJvcFR5cGVzIiwib2JqZWN0Iiwib2JqZWN0T2YiLCJmdW5jIiwiYm9vbCIsImRlZmF1bHRQcm9wcyIsImtleSIsInBhc3N3b3JkIiwicmVtZW1iZXIiLCJzdWJtaXQiLCJzaWdudXAiLCJyZWNvdmVyIiwidHdpdHRlciIsImdvb2dsZSIsImZhY2Vib29rIiwiS2V5RmllbGQiLCJuYW1lIiwidGFyZ2V0IiwidmFsdWUiLCJQYXNzd29yZEZpZWxkIiwiUmVtZW1iZXJGaWVsZCIsImVuYWJsZWQiLCJvblRvZ2dsZSIsIkJ1dHRvbkZpZWxkIiwiTWVudUZpZWxkU2V0IiwibWFwIiwiQnV0dG9uRmllbGRTZXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUtBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOztBQUdBOztBQUdBOztBQUdBOztBQUNBOztBQUNBOzs7O0FBRUEsSUFBTUEsT0FBTyxTQUFQQSxJQUFPLENBQUNDLENBQUQ7QUFBQSxTQUFPQyxRQUFRQyxHQUFSLENBQVlGLENBQVosQ0FBUDtBQUFBLENBQWI7O0FBRUE7O0lBQ01HLFk7OztBQUNKLHdCQUFhQyxLQUFiLEVBQW9CO0FBQUE7O0FBQUEsa0pBQ1pBLEtBRFk7O0FBRWxCLFFBQU1DLFNBQU47QUFDQUEs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QWZDLEtBQWUsU0FBZkEsS0FBZTtBQUFBLFFBQVJDLElBQVEsU0FBUkEsSUFBUTs7QUFDaEQsUUFBSSxDQUFDTSxPQUFMLEVBQWM7QUFDWixhQUFPLElBQVA7QUFDRDtBQUNELFdBQ0U7QUFBQTtBQUFBLFFBQVksV0FBWjtBQUNFO0FBQUE7QUFBQSxVQUFTLFdBQVUsNkJBQW5CO0FBQ0U7QUFBQTtBQUFBLFlBQWlCLFdBQVUsa0NBQTNCO0FBRUksOEJBQVlBLE9BQVosRUFBcUJrQyxHQUFyQixDQUF5QixVQUFDVCxJQUFEO0FBQUEsbUJBQ3ZCLGlFQUFjLElBQUsvQixLQUFLK0IsSUFBTCxDQUFuQjtBQUNjLG1CQUFNQSxJQURwQjtBQUVjLHFCQUFRLGVBQUMxQyxDQUFEO0FBQUEsdUJBQU9pQixRQUFTeUIsSUFBVCxHQUFQO0FBQUEsZUFGdEI7QUFHYyxvQkFBT2hDLE1BQU9nQyxJQUFQLENBSHJCO0FBSWMsb0JBQU9qQyxPQUFRaUMsSUFBUixDQUpyQixHQUR1QjtBQUFBLFdBQXpCO0FBRko7QUFERjtBQURGLEtBREY7QUFpQkQ7QUEzSnlCLENBQTVCOztRQThKU3ZDLFksR0FBQUEsWTtrQkFDTSwrQkFBU0EsWUFBVCxDIiwiZmlsZSI6ImFwX3NpZ25pbl9mb3JtLmpzeCIsInNvdXJjZVJvb3QiOiJsaWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvcm0gZm9yIHNpZ25pblxuICogQGNsYXNzIEFwU2lnbmluRm9ybVxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50LCBQcm9wVHlwZXMgYXMgdHlwZXMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQge1xuICBBcEZvcm0sIHdpdGhGb3JtXG59IGZyb20gJ2FwZW1hbi1yZWFjdC1mb3JtJ1xuaW1wb3J0IHtcbiAgQXBGaWVsZFNldCwgQXBGaWVsZCwgQXBGaWVsZExhYmVsLCBBcEZpZWxkVmFsdWVcbn0gZnJvbSAnYXBlbWFuLXJlYWN0LWZpZWxkJ1xuaW1wb3J0IHtcbiAgQXBCdXR0b24sIEFwQ2VsbEJ1dHRvbiwgQXBDZWxsQnV0dG9uUm93LCBBcEljb25CdXR0b24sIEFwSWNvbkJ1dHRvblJvd1xufSBmcm9tICdhcGVtYW4tcmVhY3QtYnV0dG9uJ1xuaW1wb3J0IHsgQXBUZXh0IH0gZnJvbSAnYXBlbWFuLXJlYWN0LXRleHQnXG5pbXBvcnQgeyBBcFBhc3N3b3JkIH0gZnJvbSAnYXBlbWFuLXJlYWN0LXBhc3N3b3JkJ1xuaW1wb3J0IHsgQXBDaGVja2JveCB9IGZyb20gJ2FwZW1hbi1yZWFjdC1jaGVja2JveCdcblxuY29uc3Qgbm9vcCA9IChlKSA9PiBjb25zb2xlLmxvZyhlKVxuXG4vKiogQGxlbmRzIEFwU2lnbmluRm9ybSAqL1xuY2xhc3MgQXBTaWduaW5Gb3JtIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IgKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBzLnN0YXRlID0ge31cbiAgfVxuXG4gIHJlbmRlciAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIGxldCB7XG4gICAgICBpZCxcbiAgICAgIHZhbHVlcyxcbiAgICAgIGxhYmVscyxcbiAgICAgIGljb25zLFxuICAgICAgaWRPZixcbiAgICAgIG9uVXBkYXRlLFxuICAgICAgb25TdWJtaXQsXG4gICAgICBzcGlubmluZyxcbiAgICAgIGVycm9yTGlzdCxcbiAgICAgIGVycm9yU3R5bGUsXG4gICAgICBhY3Rpb25zLFxuICAgICAgY2VudGVyZWQsXG4gICAgICByZW1lbWJlckVuYWJsZWRcbiAgICB9ID0gcHJvcHNcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRm9ybSBpZD17IGlkIH1cbiAgICAgICAgICAgICAgY2VudGVyZWQ9eyBjZW50ZXJlZCB9XG4gICAgICAgICAgICAgIHNwaW5uaW5nPXsgc3Bpbm5pbmcgfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc25hbWVzKCdhcC1zaWduaW4tZm9ybScsIHByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgICAgICAgIHN0eWxlPXsgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMuc3R5bGUpIH1cbiAgICAgID5cbiAgICAgICAgPEFwRmllbGRTZXQgcGxhaW4+XG4gICAgICAgICAgeyBlcnJvckxpc3QgfVxuICAgICAgICAgIHsgZXJyb3JTdHlsZSB9XG4gICAgICAgICAgPEFwU2lnbmluRm9ybS5LZXlGaWVsZCB7IC4uLnsgdmFsdWVzLCBsYWJlbHMsIGlkT2YsIG9uVXBkYXRlIH0gfS8+XG4gICAgICAgICAgPEFwU2lnbmluRm9ybS5QYXNzd29yZEZpZWxkIHsgLi4ueyB2YWx1ZXMsIGxhYmVscywgaWRPZiwgb25VcGRhdGUgfSB9Lz5cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLlJlbWVtYmVyRmllbGQgeyAuLi57IGxhYmVscywgaWRPZiB9IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD17IHJlbWVtYmVyRW5hYmxlZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVG9nZ2xlPXsgYWN0aW9ucy50b2dnbGVSZW1lbWJlciB9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7IHByb3BzLmNoaWxkcmVuIH1cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLkJ1dHRvbkZpZWxkIHsgLi4ueyBsYWJlbHMsIGlkT2YgfSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17ICgpID0+IG9uU3VibWl0KHMucHJvcHMudmFsdWVzKSB9Lz5cbiAgICAgICAgPC9BcEZpZWxkU2V0PlxuICAgICAgICA8QXBTaWduaW5Gb3JtLk1lbnVGaWVsZFNldCBhY3Rpb25zPXsgcHJvcHMubWVudSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscz17IGxhYmVscyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkT2Y9eyBpZE9mIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEFwU2lnbmluRm9ybS5CdXR0b25GaWVsZFNldCBhY3Rpb25zPXsgcHJvcHMuYnV0dG9ucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzPXsgbGFiZWxzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29ucz17IGljb25zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZE9mPXsgaWRPZiB9Lz5cbiAgICAgIDwvQXBGb3JtPlxuICAgIClcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKEFwU2lnbmluRm9ybSwge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwcm9wVHlwZXM6IHtcbiAgICBsYWJlbHM6IHR5cGVzLm9iamVjdCxcbiAgICBpY29uczogdHlwZXMub2JqZWN0LFxuICAgIG1lbnU6IHR5cGVzLm9iamVjdE9mKHR5cGVzLmZ1bmMpLFxuICAgIGJ1dHRvbnM6IHR5cGVzLm9iamVjdE9mKHR5cGVzLmZ1bmMpLFxuICAgIHJlbWVtYmVyRW5hYmxlZDogdHlwZXMuYm9vbFxuICB9LFxuXG4gIGRlZmF1bHRQcm9wczoge1xuICAgIGxhYmVsczoge1xuICAgICAga2V5OiAnVXNlcm5hbWUgb3IgRW1haWwnLFxuICAgICAgcGFzc3dvcmQ6ICdQYXNzd29yZCcsXG4gICAgICByZW1lbWJlcjogJ1JlbWVtYmVyIE1lJyxcbiAgICAgIHN1Ym1pdDogJ1NpZ24gSW4nLFxuICAgICAgc2lnbnVwOiAnU2lnbiBVcCcsXG4gICAgICByZWNvdmVyOiAnRm9yZ2V0IFBhc3N3b3JkPycsXG4gICAgICB0d2l0dGVyOiAnU2lnbiBpbiB3aXRoIFR3aXR0ZXInLFxuICAgICAgZ29vZ2xlOiAnU2lnbiBpbiB3aXRoIEdvb2dsZScsXG4gICAgICBmYWNlYm9vazogJ1NpZ24gaW4gd2l0aCBGYWNlYm9vaydcbiAgICB9LFxuICAgIGljb25zOiB7XG4gICAgICBmYWNlYm9vazogJ2ZhIGZhLWZhY2Vib29rJyxcbiAgICAgIHR3aXR0ZXI6ICdmYSBmYS10d2l0dGVyJyxcbiAgICAgIGdvb2dsZTogJ2ZhIGZhLWdvb2dsZSdcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHRvZ2dsZVJlbWVtYmVyOiBub29wXG4gICAgfSxcbiAgICBtZW51OiBudWxsLFxuICAgIGJ1dHRvbnM6IG51bGwsXG4gICAgcmVtZW1iZXJFbmFibGVkOiBmYWxzZVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTdWIgQ29tcG9uZW50c1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cblxuICBLZXlGaWVsZCAoeyB2YWx1ZXMsIGxhYmVscywgaWRPZiwgb25VcGRhdGUgfSkge1xuICAgIGxldCBuYW1lID0gJ2tleSdcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRmllbGQ+XG4gICAgICAgIDxBcEZpZWxkTGFiZWwgaHRtbEZvcj17IGlkT2YobmFtZSkgfT5cbiAgICAgICAgICB7IGxhYmVsc1sgWyBuYW1lIF0gXSB9XG4gICAgICAgIDwvQXBGaWVsZExhYmVsPlxuICAgICAgICA8QXBGaWVsZFZhbHVlPlxuICAgICAgICAgIDxBcFRleHQgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICBpZD17IGlkT2YobmFtZSkgfVxuICAgICAgICAgICAgICAgICAgbmFtZT17IG5hbWUgfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9eyB2YWx1ZXNbIG5hbWUgXSB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IChlKSA9PiBvblVwZGF0ZSh7IFtuYW1lXTogZS50YXJnZXQudmFsdWUgfSkgfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQXBGaWVsZFZhbHVlPlxuICAgICAgPC9BcEZpZWxkPlxuICAgIClcbiAgfSxcblxuICBQYXNzd29yZEZpZWxkICh7IHZhbHVlcywgbGFiZWxzLCBpZE9mLCBvblVwZGF0ZSB9KSB7XG4gICAgbGV0IG5hbWUgPSAncGFzc3dvcmQnXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEZpZWxkPlxuICAgICAgICA8QXBGaWVsZExhYmVsIGh0bWxGb3I9eyBpZE9mKG5hbWUpIH0+XG4gICAgICAgICAgeyBsYWJlbHNbIG5hbWUgXSB9XG4gICAgICAgIDwvQXBGaWVsZExhYmVsPlxuICAgICAgICA8QXBGaWVsZFZhbHVlPlxuICAgICAgICAgIDxBcFBhc3N3b3JkIGlkPXsgaWRPZihuYW1lKSB9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyB2YWx1ZXNbIG5hbWUgXSB9XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT17IG5hbWUgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKGUpID0+IG9uVXBkYXRlKHsgW25hbWVdOiBlLnRhcmdldC52YWx1ZSB9KSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIFJlbWVtYmVyRmllbGQgKHsgbGFiZWxzLCBpZE9mLCBlbmFibGVkLCBvblRvZ2dsZSB9KSB7XG4gICAgbGV0IG5hbWUgPSAncmVtZW1iZXInXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEZpZWxkIGNsYXNzTmFtZT0nYXAtc2lnbmluLWZvcm0tc3ViLWZpZWxkJz5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZihuYW1lKSB9PlxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBDaGVja2JveCBpZD17IGlkT2YobmFtZSkgfVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSdZRVMnXG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17IGVuYWJsZWQgfVxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgbGFiZWxzWyBuYW1lIF0gfVxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9eyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICgpID0+IG9uVG9nZ2xlKCFlbmFibGVkKSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIEJ1dHRvbkZpZWxkICh7IGxhYmVscywgaWRPZiwgb25TdWJtaXQgfSkge1xuICAgIGxldCBuYW1lID0gJ3N1Ym1pdCdcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRmllbGQgY2VudGVyXG4gICAgICAgICAgICAgICBjbGFzc05hbWU9J2FwLXNpZ25pbi1mb3JtLWJ1dHRvbi1maWVsZCc+XG4gICAgICAgIDxBcEJ1dHRvbiB3aWRlXG4gICAgICAgICAgICAgICAgICBwcmltYXJ5XG4gICAgICAgICAgICAgICAgICBvblRhcD17IG9uU3VibWl0IH1cbiAgICAgICAgICAgICAgICAgIGlkPXsgaWRPZihuYW1lKSB9XG4gICAgICAgID57IGxhYmVsc1sgbmFtZSBdIH08L0FwQnV0dG9uPlxuICAgICAgPC9BcEZpZWxkPlxuICAgIClcbiAgfSxcblxuICBNZW51RmllbGRTZXQgKHsgYWN0aW9ucywgbGFiZWxzLCBpZE9mIH0pIHtcbiAgICBpZiAoIWFjdGlvbnMpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgPEFwRmllbGQgY2VudGVyXG4gICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYXAtc2lnbmluLWZvcm0tYWN0aW9uLWZpZWxkJz5cbiAgICAgICAgICA8QXBDZWxsQnV0dG9uUm93IGNsYXNzTmFtZT0nYXAtc2lnbmluLWZvcm0tYWN0aW9uLWJ1dHRvbi1yb3cnPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpb25zKS5tYXAoKG5hbWUpID0+IChcbiAgICAgICAgICAgICAgICA8QXBDZWxsQnV0dG9uIGlkPXsgaWRPZihuYW1lKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9eyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVGFwPXsgKGUpID0+IGFjdGlvbnNbIG5hbWUgXSgpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9eyBsYWJlbHNbIG5hbWUgXSB9Lz5cbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L0FwQ2VsbEJ1dHRvblJvdz5cbiAgICAgICAgPC9BcEZpZWxkPlxuICAgICAgPC9BcEZpZWxkU2V0PlxuICAgIClcbiAgfSxcblxuICBCdXR0b25GaWVsZFNldCAoeyBhY3Rpb25zLCBsYWJlbHMsIGljb25zLCBpZE9mIH0pIHtcbiAgICBpZiAoIWFjdGlvbnMpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgPEFwRmllbGQgY2xhc3NOYW1lPSdhcC1zaWduaW4tZm9ybS1hY3Rpb24tZmllbGQnPlxuICAgICAgICAgIDxBcEljb25CdXR0b25Sb3cgY2xhc3NOYW1lPSdhcC1zaWduaW4tZm9ybS1hY3Rpb24tYnV0dG9uLXJvdyc+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGlvbnMpLm1hcCgobmFtZSkgPT4gKFxuICAgICAgICAgICAgICAgIDxBcEljb25CdXR0b24gaWQ9eyBpZE9mKG5hbWUpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17IG5hbWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UYXA9eyAoZSkgPT4gYWN0aW9uc1sgbmFtZSBdKCkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17IGljb25zWyBuYW1lIF0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD17IGxhYmVsc1sgbmFtZSBdIH0vPlxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvQXBJY29uQnV0dG9uUm93PlxuICAgICAgICA8L0FwRmllbGQ+XG4gICAgICA8L0FwRmllbGRTZXQ+XG4gICAgKVxuICB9XG59KVxuXG5leHBvcnQgeyBBcFNpZ25pbkZvcm0gfVxuZXhwb3J0IGRlZmF1bHQgd2l0aEZvcm0oQXBTaWduaW5Gb3JtKVxuIl19