1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216 | 1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
428×
783×
783×
783×
783×
783×
783×
428×
1×
555×
1×
127×
1398×
1398×
1398×
127×
1×
508×
508×
2286×
2286×
2286×
2286×
2286×
18288×
18288×
18288×
2286×
508×
508×
508×
1×
390×
390×
390×
1×
291×
291×
291×
1×
99×
1×
4893×
4893×
1×
4080×
4020×
4020×
15×
8×
8×
1054×
2×
2×
2×
8×
96×
96×
96×
1×
1×
1×
1×
| (function(global){global.wrappers['/Users/lqez/Dev/summernote/src/js/bs4/ui.js']=[function(require,module,exports,__dirname,__filename){ "use strict";
exports.__esModule = true;
var jquery_1 = require("jquery");
var renderer_1 = require("../base/renderer");
var editor = renderer_1["default"].create('<div class="note-editor note-frame card"/>');
var toolbar = renderer_1["default"].create('<div class="note-toolbar card-header" role="toolbar"></div>');
var editingArea = renderer_1["default"].create('<div class="note-editing-area"/>');
var codable = renderer_1["default"].create('<textarea class="note-codable" role="textbox" aria-multiline="true"/>');
var editable = renderer_1["default"].create('<div class="note-editable card-block" contentEditable="true" role="textbox" aria-multiline="true"/>');
var statusbar = renderer_1["default"].create([
'<output class="note-status-output" aria-live="polite"/>',
'<div class="note-statusbar" role="status">',
' <output class="note-status-output" aria-live="polite"></output>',
' <div class="note-resizebar" role="seperator" aria-orientation="horizontal" aria-label="Resize">',
' <div class="note-icon-bar"/>',
' <div class="note-icon-bar"/>',
' <div class="note-icon-bar"/>',
' </div>',
'</div>',
].join(''));
var airEditor = renderer_1["default"].create('<div class="note-editor"/>');
var airEditable = renderer_1["default"].create([
'<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"/>',
'<output class="note-status-output" aria-live="polite"/>',
].join(''));
var buttonGroup = renderer_1["default"].create('<div class="note-btn-group btn-group">');
var dropdown = renderer_1["default"].create('<div class="dropdown-menu" role="list">', function ($node, options) {
var markup = jquery_1["default"].isArray(options.items) ? options.items.map(function (item) {
var value = (typeof item === 'string') ? item : (item.value || '');
var content = options.template ? options.template(item) : item;
var option = (typeof item === 'object') ? item.option : undefined;
var dataValue = 'data-value="' + value + '"';
var dataOption = (option !== undefined) ? ' data-option="' + option + '"' : '';
return '<a class="dropdown-item" href="#" ' + (dataValue + dataOption) + ' role="listitem" aria-label="' + value + '">' + content + '</a>';
}).join('') : options.items;
$node.html(markup).attr({ 'aria-label': options.title });
});
var dropdownButtonContents = function (contents) {
return contents;
};
var dropdownCheck = renderer_1["default"].create('<div class="dropdown-menu note-check" role="list">', function ($node, options) {
var markup = jquery_1["default"].isArray(options.items) ? options.items.map(function (item) {
var value = (typeof item === 'string') ? item : (item.value || '');
var content = options.template ? options.template(item) : item;
return '<a class="dropdown-item" href="#" data-value="' + value + '" role="listitem" aria-label="' + item + '">' + icon(options.checkClassName) + ' ' + content + '</a>';
}).join('') : options.items;
$node.html(markup).attr({ 'aria-label': options.title });
});
var palette = renderer_1["default"].create('<div class="note-color-palette"/>', function ($node, options) {
var contents = [];
for (var row = 0, rowSize = options.colors.length; row < rowSize; row++) {
var eventName = options.eventName;
var colors = options.colors[row];
var colorsName = options.colorsName[row];
var buttons = [];
for (var col = 0, colSize = colors.length; col < colSize; col++) {
var color = colors[col];
var colorName = colorsName[col];
buttons.push([
'<button type="button" class="note-color-btn"',
'style="background-color:', color, '" ',
'data-event="', eventName, '" ',
'data-value="', color, '" ',
'title="', colorName, '" ',
'aria-label="', colorName, '" ',
'data-toggle="button" tabindex="-1"></button>',
].join(''));
}
contents.push('<div class="note-color-row">' + buttons.join('') + '</div>');
}
$node.html(contents.join(''));
Eif (options.tooltip) {
$node.find('.note-color-btn').tooltip({
container: options.container,
trigger: 'hover',
placement: 'bottom'
});
}
});
var dialog = renderer_1["default"].create('<div class="modal" aria-hidden="false" tabindex="-1" role="dialog"/>', function ($node, options) {
Iif (options.fade) {
$node.addClass('fade');
}
$node.attr({
'aria-label': options.title
});
$node.html([
'<div class="modal-dialog">',
' <div class="modal-content">',
(options.title
? ' <div class="modal-header">' +
' <h4 class="modal-title">' + options.title + '</h4>' +
' <button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button>' +
' </div>' : ''),
' <div class="modal-body">' + options.body + '</div>',
(options.footer
? ' <div class="modal-footer">' + options.footer + '</div>' : ''),
' </div>',
'</div>',
].join(''));
});
var popover = renderer_1["default"].create([
'<div class="note-popover popover in">',
' <div class="arrow"/>',
' <div class="popover-content note-children-container"/>',
'</div>',
].join(''), function ($node, options) {
var direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom';
$node.addClass(direction);
Iif (options.hideArrow) {
$node.find('.arrow').hide();
}
});
var checkbox = renderer_1["default"].create('<div class="form-check"></div>', function ($node, options) {
$node.html([
'<label class="form-check-label"' + (options.id ? ' for="' + options.id + '"' : '') + '>',
' <input role="checkbox" type="checkbox" class="form-check-input"' + (options.id ? ' id="' + options.id + '"' : ''),
(options.checked ? ' checked' : ''),
' aria-label="' + (options.text ? options.text : '') + '"',
' aria-checked="' + (options.checked ? 'true' : 'false') + '"/>',
' ' + (options.text ? options.text : '') + '</label>',
].join(''));
});
var icon = function (iconClassName, tagName) {
tagName = tagName || 'i';
return '<' + tagName + ' class="' + iconClassName + '"/>';
};
var ui = {
editor: editor,
toolbar: toolbar,
editingArea: editingArea,
codable: codable,
editable: editable,
statusbar: statusbar,
airEditor: airEditor,
airEditable: airEditable,
buttonGroup: buttonGroup,
dropdown: dropdown,
dropdownButtonContents: dropdownButtonContents,
dropdownCheck: dropdownCheck,
palette: palette,
dialog: dialog,
popover: popover,
icon: icon,
checkbox: checkbox,
options: {},
button: function ($node, options) {
return renderer_1["default"].create('<button type="button" class="note-btn btn btn-light btn-sm" role="button" tabindex="-1">', function ($node, options) {
Eif (options && options.tooltip) {
$node.attr({
title: options.tooltip,
'aria-label': options.tooltip
}).tooltip({
container: (options.container !== undefined) ? options.container : 'body',
trigger: 'hover',
placement: 'bottom'
}).on('click', function (e) {
jquery_1["default"](e.currentTarget).tooltip('hide');
});
}
})($node, options);
},
toggleBtn: function ($btn, isEnable) {
$btn.toggleClass('disabled', !isEnable);
$btn.attr('disabled', !isEnable);
},
toggleBtnActive: function ($btn, isActive) {
$btn.toggleClass('active', isActive);
},
onDialogShown: function ($dialog, handler) {
$dialog.one('shown.bs.modal', handler);
},
onDialogHidden: function ($dialog, handler) {
$dialog.one('hidden.bs.modal', handler);
},
showDialog: function ($dialog) {
$dialog.modal('show');
},
hideDialog: function ($dialog) {
$dialog.modal('hide');
},
createLayout: function ($note, options) {
var $editor = (options.airMode ? ui.airEditor([
ui.editingArea([
ui.airEditable(),
]),
]) : ui.editor([
ui.toolbar(),
ui.editingArea([
ui.codable(),
ui.editable(),
]),
ui.statusbar(),
])).render();
$editor.insertAfter($note);
return {
note: $note,
editor: $editor,
toolbar: $editor.find('.note-toolbar'),
editingArea: $editor.find('.note-editing-area'),
editable: $editor.find('.note-editable'),
codable: $editor.find('.note-codable'),
statusbar: $editor.find('.note-statusbar')
};
},
removeLayout: function ($note, layoutInfo) {
$note.html(layoutInfo.editable.html());
layoutInfo.editor.remove();
$note.show();
}
};
exports["default"] = ui;
},'src/js/bs4/ui.js',{"jquery":"/Users/lqez/Dev/summernote/node_modules/jquery/dist/jquery.js","../base/renderer":"/Users/lqez/Dev/summernote/src/js/base/renderer.js"}];})(this);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1aS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUF1QjtBQUN2Qiw2Q0FBd0M7QUFFeEMsSUFBTSxNQUFNLEdBQUcscUJBQVEsQ0FBQyxNQUFNLENBQUMsNENBQTRDLENBQUMsQ0FBQztBQUM3RSxJQUFNLE9BQU8sR0FBRyxxQkFBUSxDQUFDLE1BQU0sQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO0FBQy9GLElBQU0sV0FBVyxHQUFHLHFCQUFRLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFDeEUsSUFBTSxPQUFPLEdBQUcscUJBQVEsQ0FBQyxNQUFNLENBQUMsdUVBQXVFLENBQUMsQ0FBQztBQUN6RyxJQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLE1BQU0sQ0FBQyxxR0FBcUcsQ0FBQyxDQUFDO0FBQ3hJLElBQU0sU0FBUyxHQUFHLHFCQUFRLENBQUMsTUFBTSxDQUFDO0lBQ2hDLHlEQUF5RDtJQUN6RCw0Q0FBNEM7SUFDNUMsbUVBQW1FO0lBQ25FLG1HQUFtRztJQUNuRyxrQ0FBa0M7SUFDbEMsa0NBQWtDO0lBQ2xDLGtDQUFrQztJQUNsQyxVQUFVO0lBQ1YsUUFBUTtDQUNULENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFWixJQUFNLFNBQVMsR0FBRyxxQkFBUSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBQ2hFLElBQU0sV0FBVyxHQUFHLHFCQUFRLENBQUMsTUFBTSxDQUFDO0lBQ2xDLDBGQUEwRjtJQUMxRix5REFBeUQ7Q0FDMUQsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVaLElBQU0sV0FBVyxHQUFHLHFCQUFRLENBQUMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7QUFFOUUsSUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxNQUFNLENBQUMseUNBQXlDLEVBQUUsVUFBUyxLQUFLLEVBQUUsT0FB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QUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQzNDLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxFQUFFLFVBQVMsS0FBSyxFQUFFLFVBQVU7UUFDdEMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZixDQUFDO0NBQ0YsQ0FBQztBQUVGLHFCQUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgcmVuZGVyZXIgZnJvbSAnLi4vYmFzZS9yZW5kZXJlcic7XG5cbmNvbnN0IGVkaXRvciA9IHJlbmRlcmVyLmNyZWF0ZSgnPGRpdiBjbGFzcz1cIm5vdGUtZWRpdG9yIG5vdGUtZnJhbWUgY2FyZFwiLz4nKTtcbmNvbnN0IHRvb2xiYXIgPSByZW5kZXJlci5jcmVhdGUoJzxkaXYgY2xhc3M9XCJub3RlLXRvb2xiYXIgY2FyZC1oZWFkZXJcIiByb2xlPVwidG9vbGJhclwiPjwvZGl2PicpO1xuY29uc3QgZWRpdGluZ0FyZWEgPSByZW5kZXJlci5jcmVhdGUoJzxkaXYgY2xhc3M9XCJub3RlLWVkaXRpbmctYXJlYVwiLz4nKTtcbmNvbnN0IGNvZGFibGUgPSByZW5kZXJlci5jcmVhdGUoJzx0ZXh0YXJlYSBjbGFzcz1cIm5vdGUtY29kYWJsZVwiIHJvbGU9XCJ0ZXh0Ym94XCIgYXJpYS1tdWx0aWxpbmU9XCJ0cnVlXCIvPicpO1xuY29uc3QgZWRpdGFibGUgPSByZW5kZXJlci5jcmVhdGUoJzxkaXYgY2xhc3M9XCJub3RlLWVkaXRhYmxlIGNhcmQtYmxvY2tcIiBjb250ZW50RWRpdGFibGU9XCJ0cnVlXCIgcm9sZT1cInRleHRib3hcIiBhcmlhLW11bHRpbGluZT1cInRydWVcIi8+Jyk7XG5jb25zdCBzdGF0dXNiYXIgPSByZW5kZXJlci5jcmVhdGUoW1xuICAnPG91dHB1dCBjbGFzcz1cIm5vdGUtc3RhdHVzLW91dHB1dFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiLz4nLFxuICAnPGRpdiBjbGFzcz1cIm5vdGUtc3RhdHVzYmFyXCIgcm9sZT1cInN0YXR1c1wiPicsXG4gICcgIDxvdXRwdXQgY2xhc3M9XCJub3RlLXN0YXR1cy1vdXRwdXRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj48L291dHB1dD4nLFxuICAnICA8ZGl2IGNsYXNzPVwibm90ZS1yZXNpemViYXJcIiByb2xlPVwic2VwZXJhdG9yXCIgYXJpYS1vcmllbnRhdGlvbj1cImhvcml6b250YWxcIiBhcmlhLWxhYmVsPVwiUmVzaXplXCI+JyxcbiAgJyAgICA8ZGl2IGNsYXNzPVwibm90ZS1pY29uLWJhclwiLz4nLFxuICAnICAgIDxkaXYgY2xhc3M9XCJub3RlLWljb24tYmFyXCIvPicsXG4gICcgICAgPGRpdiBjbGFzcz1cIm5vdGUtaWNvbi1iYXJcIi8+JyxcbiAgJyAgPC9kaXY+JyxcbiAgJzwvZGl2PicsXG5dLmpvaW4oJycpKTtcblxuY29uc3QgYWlyRWRpdG9yID0gcmVuZGVyZXIuY3JlYXRlKCc8ZGl2IGNsYXNzPVwibm90ZS1lZGl0b3JcIi8+Jyk7XG5jb25zdCBhaXJFZGl0YWJsZSA9IHJlbmRlcmVyLmNyZWF0ZShbXG4gICc8ZGl2IGNsYXNzPVwibm90ZS1lZGl0YWJsZVwiIGNvbnRlbnRFZGl0YWJsZT1cInRydWVcIiByb2xlPVwidGV4dGJveFwiIGFyaWEtbXVsdGlsaW5lPVwidHJ1ZVwiLz4nLFxuICAnPG91dHB1dCBjbGFzcz1cIm5vdGUtc3RhdHVzLW91dHB1dFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiLz4nLFxuXS5qb2luKCcnKSk7XG5cbmNvbnN0IGJ1dHRvbkdyb3VwID0gcmVuZGVyZXIuY3JlYXRlKCc8ZGl2IGNsYXNzPVwibm90ZS1idG4tZ3JvdXAgYnRuLWdyb3VwXCI+Jyk7XG5cbmNvbnN0IGRyb3Bkb3duID0gcmVuZGVyZXIuY3JlYXRlKCc8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIHJvbGU9XCJsaXN0XCI+JywgZnVuY3Rpb24oJG5vZGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgbWFya3VwID0gJC5pc0FycmF5KG9wdGlvbnMuaXRlbXMpID8gb3B0aW9ucy5pdGVtcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgIGNvbnN0IHZhbHVlID0gKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykgPyBpdGVtIDogKGl0ZW0udmFsdWUgfHwgJycpO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBvcHRpb25zLnRlbXBsYXRlID8gb3B0aW9ucy50ZW1wbGF0ZShpdGVtKSA6IGl0ZW07XG4gICAgY29uc3Qgb3B0aW9uID0gKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JykgPyBpdGVtLm9wdGlvbiA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGRhdGFWYWx1ZSA9ICdkYXRhLXZhbHVlPVwiJyArIHZhbHVlICsgJ1wiJztcbiAgICBjb25zdCBkYXRhT3B0aW9uID0gKG9wdGlvbiAhPT0gdW5kZWZpbmVkKSA/ICcgZGF0YS1vcHRpb249XCInICsgb3B0aW9uICsgJ1wiJyA6ICcnO1xuICAgIHJldHVybiAnPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIiAnICsgKGRhdGFWYWx1ZSArIGRhdGFPcHRpb24pICsgJyByb2xlPVwibGlzdGl0ZW1cIiBhcmlhLWxhYmVsPVwiJyArIHZhbHVlICsgJ1wiPicgKyBjb250ZW50ICsgJzwvYT4nO1xuICB9KS5qb2luKCcnKSA6IG9wdGlvbnMuaXRlbXM7XG5cbiAgJG5vZGUuaHRtbChtYXJrdXApLmF0dHIoeyAnYXJpYS1sYWJlbCc6IG9wdGlvbnMudGl0bGUgfSk7XG59KTtcblxuY29uc3QgZHJvcGRvd25CdXR0b25Db250ZW50cyA9IGZ1bmN0aW9uKGNvbnRlbnRzKSB7XG4gIHJldHVybiBjb250ZW50cztcbn07XG5cbmNvbnN0IGRyb3Bkb3duQ2hlY2sgPSByZW5kZXJlci5jcmVhdGUoJzxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IG5vdGUtY2hlY2tcIiByb2xlPVwibGlzdFwiPicsIGZ1bmN0aW9uKCRub2RlLCBvcHRpb25zKSB7XG4gIGNvbnN0IG1hcmt1cCA9ICQuaXNBcnJheShvcHRpb25zLml0ZW1zKSA/IG9wdGlvbnMuaXRlbXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpID8gaXRlbSA6IChpdGVtLnZhbHVlIHx8ICcnKTtcbiAgICBjb25zdCBjb250ZW50ID0gb3B0aW9ucy50ZW1wbGF0ZSA/IG9wdGlvbnMudGVtcGxhdGUoaXRlbSkgOiBpdGVtO1xuICAgIHJldHVybiAnPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIiBkYXRhLXZhbHVlPVwiJyArIHZhbHVlICsgJ1wiIHJvbGU9XCJsaXN0aXRlbVwiIGFyaWEtbGFiZWw9XCInICsgaXRlbSArICdcIj4nICsgaWNvbihvcHRpb25zLmNoZWNrQ2xhc3NOYW1lKSArICcgJyArIGNvbnRlbnQgKyAnPC9hPic7XG4gIH0pLmpvaW4oJycpIDogb3B0aW9ucy5pdGVtcztcbiAgJG5vZGUuaHRtbChtYXJrdXApLmF0dHIoeyAnYXJpYS1sYWJlbCc6IG9wdGlvbnMudGl0bGUgfSk7XG59KTtcblxuY29uc3QgcGFsZXR0ZSA9IHJlbmRlcmVyLmNyZWF0ZSgnPGRpdiBjbGFzcz1cIm5vdGUtY29sb3ItcGFsZXR0ZVwiLz4nLCBmdW5jdGlvbigkbm9kZSwgb3B0aW9ucykge1xuICBjb25zdCBjb250ZW50cyA9IFtdO1xuICBmb3IgKGxldCByb3cgPSAwLCByb3dTaXplID0gb3B0aW9ucy5jb2xvcnMubGVuZ3RoOyByb3cgPCByb3dTaXplOyByb3crKykge1xuICAgIGNvbnN0IGV2ZW50TmFtZSA9IG9wdGlvbnMuZXZlbnROYW1lO1xuICAgIGNvbnN0IGNvbG9ycyA9IG9wdGlvbnMuY29sb3JzW3Jvd107XG4gICAgY29uc3QgY29sb3JzTmFtZSA9IG9wdGlvbnMuY29sb3JzTmFtZVtyb3ddO1xuICAgIGNvbnN0IGJ1dHRvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBjb2wgPSAwLCBjb2xTaXplID0gY29sb3JzLmxlbmd0aDsgY29sIDwgY29sU2l6ZTsgY29sKyspIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JzW2NvbF07XG4gICAgICBjb25zdCBjb2xvck5hbWUgPSBjb2xvcnNOYW1lW2NvbF07XG4gICAgICBidXR0b25zLnB1c2goW1xuICAgICAgICAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJub3RlLWNvbG9yLWJ0blwiJyxcbiAgICAgICAgJ3N0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjonLCBjb2xvciwgJ1wiICcsXG4gICAgICAgICdkYXRhLWV2ZW50PVwiJywgZXZlbnROYW1lLCAnXCIgJyxcbiAgICAgICAgJ2RhdGEtdmFsdWU9XCInLCBjb2xvciwgJ1wiICcsXG4gICAgICAgICd0aXRsZT1cIicsIGNvbG9yTmFtZSwgJ1wiICcsXG4gICAgICAgICdhcmlhLWxhYmVsPVwiJywgY29sb3JOYW1lLCAnXCIgJyxcbiAgICAgICAgJ2RhdGEtdG9nZ2xlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiPjwvYnV0dG9uPicsXG4gICAgICBdLmpvaW4oJycpKTtcbiAgICB9XG4gICAgY29udGVudHMucHVzaCgnPGRpdiBjbGFzcz1cIm5vdGUtY29sb3Itcm93XCI+JyArIGJ1dHRvbnMuam9pbignJykgKyAnPC9kaXY+Jyk7XG4gIH1cbiAgJG5vZGUuaHRtbChjb250ZW50cy5qb2luKCcnKSk7XG5cbiAgaWYgKG9wdGlvbnMudG9vbHRpcCkge1xuICAgICRub2RlLmZpbmQoJy5ub3RlLWNvbG9yLWJ0bicpLnRvb2x0aXAoe1xuICAgICAgY29udGFpbmVyOiBvcHRpb25zLmNvbnRhaW5lcixcbiAgICAgIHRyaWdnZXI6ICdob3ZlcicsXG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgIH0pO1xuICB9XG59KTtcblxuY29uc3QgZGlhbG9nID0gcmVuZGVyZXIuY3JlYXRlKCc8ZGl2IGNsYXNzPVwibW9kYWxcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIi8+JywgZnVuY3Rpb24oJG5vZGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMuZmFkZSkge1xuICAgICRub2RlLmFkZENsYXNzKCdmYWRlJyk7XG4gIH1cbiAgJG5vZGUuYXR0cih7XG4gICAgJ2FyaWEtbGFiZWwnOiBvcHRpb25zLnRpdGxlLFxuICB9KTtcbiAgJG5vZGUuaHRtbChbXG4gICAgJzxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIj4nLFxuICAgICcgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+JyxcbiAgICAob3B0aW9ucy50aXRsZVxuICAgICAgPyAnICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj4nICtcbiAgICAnICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj4nICsgb3B0aW9ucy50aXRsZSArICc8L2g0PicgK1xuICAgICcgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9idXR0b24+JyArXG4gICAgJyAgICA8L2Rpdj4nIDogJydcbiAgICApLFxuICAgICcgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj4nICsgb3B0aW9ucy5ib2R5ICsgJzwvZGl2PicsXG4gICAgKG9wdGlvbnMuZm9vdGVyXG4gICAgICA/ICcgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPicgKyBvcHRpb25zLmZvb3RlciArICc8L2Rpdj4nIDogJydcbiAgICApLFxuICAgICcgIDwvZGl2PicsXG4gICAgJzwvZGl2PicsXG4gIF0uam9pbignJykpO1xufSk7XG5cbmNvbnN0IHBvcG92ZXIgPSByZW5kZXJlci5jcmVhdGUoW1xuICAnPGRpdiBjbGFzcz1cIm5vdGUtcG9wb3ZlciBwb3BvdmVyIGluXCI+JyxcbiAgJyAgPGRpdiBjbGFzcz1cImFycm93XCIvPicsXG4gICcgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWNvbnRlbnQgbm90ZS1jaGlsZHJlbi1jb250YWluZXJcIi8+JyxcbiAgJzwvZGl2PicsXG5dLmpvaW4oJycpLCBmdW5jdGlvbigkbm9kZSwgb3B0aW9ucykge1xuICBjb25zdCBkaXJlY3Rpb24gPSB0eXBlb2Ygb3B0aW9ucy5kaXJlY3Rpb24gIT09ICd1bmRlZmluZWQnID8gb3B0aW9ucy5kaXJlY3Rpb24gOiAnYm90dG9tJztcblxuICAkbm9kZS5hZGRDbGFzcyhkaXJlY3Rpb24pO1xuXG4gIGlmIChvcHRpb25zLmhpZGVBcnJvdykge1xuICAgICRub2RlLmZpbmQoJy5hcnJvdycpLmhpZGUoKTtcbiAgfVxufSk7XG5cbmNvbnN0IGNoZWNrYm94ID0gcmVuZGVyZXIuY3JlYXRlKCc8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPjwvZGl2PicsIGZ1bmN0aW9uKCRub2RlLCBvcHRpb25zKSB7XG4gICRub2RlLmh0bWwoW1xuICAgICc8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCInICsgKG9wdGlvbnMuaWQgPyAnIGZvcj1cIicgKyBvcHRpb25zLmlkICsgJ1wiJyA6ICcnKSArICc+JyxcbiAgICAnIDxpbnB1dCByb2xlPVwiY2hlY2tib3hcIiB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIicgKyAob3B0aW9ucy5pZCA/ICcgaWQ9XCInICsgb3B0aW9ucy5pZCArICdcIicgOiAnJyksXG4gICAgKG9wdGlvbnMuY2hlY2tlZCA/ICcgY2hlY2tlZCcgOiAnJyksXG4gICAgJyBhcmlhLWxhYmVsPVwiJyArIChvcHRpb25zLnRleHQgPyBvcHRpb25zLnRleHQgOiAnJykgKyAnXCInLFxuICAgICcgYXJpYS1jaGVja2VkPVwiJyArIChvcHRpb25zLmNoZWNrZWQgPyAndHJ1ZScgOiAnZmFsc2UnKSArICdcIi8+JyxcbiAgICAnICcgKyAob3B0aW9ucy50ZXh0ID8gb3B0aW9ucy50ZXh0IDogJycpICsgJzwvbGFiZWw+JyxcbiAgXS5qb2luKCcnKSk7XG59KTtcblxuY29uc3QgaWNvbiA9IGZ1bmN0aW9uKGljb25DbGFzc05hbWUsIHRhZ05hbWUpIHtcbiAgdGFnTmFtZSA9IHRhZ05hbWUgfHwgJ2knO1xuICByZXR1cm4gJzwnICsgdGFnTmFtZSArICcgY2xhc3M9XCInICsgaWNvbkNsYXNzTmFtZSArICdcIi8+Jztcbn07XG5cbmNvbnN0IHVpID0ge1xuICBlZGl0b3I6IGVkaXRvcixcbiAgdG9vbGJhcjogdG9vbGJhcixcbiAgZWRpdGluZ0FyZWE6IGVkaXRpbmdBcmVhLFxuICBjb2RhYmxlOiBjb2RhYmxlLFxuICBlZGl0YWJsZTogZWRpdGFibGUsXG4gIHN0YXR1c2Jhcjogc3RhdHVzYmFyLFxuICBhaXJFZGl0b3I6IGFpckVkaXRvcixcbiAgYWlyRWRpdGFibGU6IGFpckVkaXRhYmxlLFxuICBidXR0b25Hcm91cDogYnV0dG9uR3JvdXAsXG4gIGRyb3Bkb3duOiBkcm9wZG93bixcbiAgZHJvcGRvd25CdXR0b25Db250ZW50czogZHJvcGRvd25CdXR0b25Db250ZW50cyxcbiAgZHJvcGRvd25DaGVjazogZHJvcGRvd25DaGVjayxcbiAgcGFsZXR0ZTogcGFsZXR0ZSxcbiAgZGlhbG9nOiBkaWFsb2csXG4gIHBvcG92ZXI6IHBvcG92ZXIsXG4gIGljb246IGljb24sXG4gIGNoZWNrYm94OiBjaGVja2JveCxcbiAgb3B0aW9uczoge30sXG5cbiAgYnV0dG9uOiBmdW5jdGlvbigkbm9kZSwgb3B0aW9ucykge1xuICAgIHJldHVybiByZW5kZXJlci5jcmVhdGUoJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibm90ZS1idG4gYnRuIGJ0bi1saWdodCBidG4tc21cIiByb2xlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiPicsIGZ1bmN0aW9uKCRub2RlLCBvcHRpb25zKSB7XG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRvb2x0aXApIHtcbiAgICAgICAgJG5vZGUuYXR0cih7XG4gICAgICAgICAgdGl0bGU6IG9wdGlvbnMudG9vbHRpcCxcbiAgICAgICAgICAnYXJpYS1sYWJlbCc6IG9wdGlvbnMudG9vbHRpcCxcbiAgICAgICAgfSkudG9vbHRpcCh7XG4gICAgICAgICAgY29udGFpbmVyOiAob3B0aW9ucy5jb250YWluZXIgIT09IHVuZGVmaW5lZCkgPyBvcHRpb25zLmNvbnRhaW5lciA6ICdib2R5JyxcbiAgICAgICAgICB0cmlnZ2VyOiAnaG92ZXInLFxuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgIH0pLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgJChlLmN1cnJlbnRUYXJnZXQpLnRvb2x0aXAoJ2hpZGUnKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkoJG5vZGUsIG9wdGlvbnMpO1xuICB9LFxuXG4gIHRvZ2dsZUJ0bjogZnVuY3Rpb24oJGJ0biwgaXNFbmFibGUpIHtcbiAgICAkYnRuLnRvZ2dsZUNsYXNzKCdkaXNhYmxlZCcsICFpc0VuYWJsZSk7XG4gICAgJGJ0bi5hdHRyKCdkaXNhYmxlZCcsICFpc0VuYWJsZSk7XG4gIH0sXG5cbiAgdG9nZ2xlQnRuQWN0aXZlOiBmdW5jdGlvbigkYnRuLCBpc0FjdGl2ZSkge1xuICAgICRidG4udG9nZ2xlQ2xhc3MoJ2FjdGl2ZScsIGlzQWN0aXZlKTtcbiAgfSxcblxuICBvbkRpYWxvZ1Nob3duOiBmdW5jdGlvbigkZGlhbG9nLCBoYW5kbGVyKSB7XG4gICAgJGRpYWxvZy5vbmUoJ3Nob3duLmJzLm1vZGFsJywgaGFuZGxlcik7XG4gIH0sXG5cbiAgb25EaWFsb2dIaWRkZW46IGZ1bmN0aW9uKCRkaWFsb2csIGhhbmRsZXIpIHtcbiAgICAkZGlhbG9nLm9uZSgnaGlkZGVuLmJzLm1vZGFsJywgaGFuZGxlcik7XG4gIH0sXG5cbiAgc2hvd0RpYWxvZzogZnVuY3Rpb24oJGRpYWxvZykge1xuICAgICRkaWFsb2cubW9kYWwoJ3Nob3cnKTtcbiAgfSxcblxuICBoaWRlRGlhbG9nOiBmdW5jdGlvbigkZGlhbG9nKSB7XG4gICAgJGRpYWxvZy5tb2RhbCgnaGlkZScpO1xuICB9LFxuXG4gIGNyZWF0ZUxheW91dDogZnVuY3Rpb24oJG5vdGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCAkZWRpdG9yID0gKG9wdGlvbnMuYWlyTW9kZSA/IHVpLmFpckVkaXRvcihbXG4gICAgICB1aS5lZGl0aW5nQXJlYShbXG4gICAgICAgIHVpLmFpckVkaXRhYmxlKCksXG4gICAgICBdKSxcbiAgICBdKSA6IHVpLmVkaXRvcihbXG4gICAgICB1aS50b29sYmFyKCksXG4gICAgICB1aS5lZGl0aW5nQXJlYShbXG4gICAgICAgIHVpLmNvZGFibGUoKSxcbiAgICAgICAgdWkuZWRpdGFibGUoKSxcbiAgICAgIF0pLFxuICAgICAgdWkuc3RhdHVzYmFyKCksXG4gICAgXSkpLnJlbmRlcigpO1xuXG4gICAgJGVkaXRvci5pbnNlcnRBZnRlcigkbm90ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbm90ZTogJG5vdGUsXG4gICAgICBlZGl0b3I6ICRlZGl0b3IsXG4gICAgICB0b29sYmFyOiAkZWRpdG9yLmZpbmQoJy5ub3RlLXRvb2xiYXInKSxcbiAgICAgIGVkaXRpbmdBcmVhOiAkZWRpdG9yLmZpbmQoJy5ub3RlLWVkaXRpbmctYXJlYScpLFxuICAgICAgZWRpdGFibGU6ICRlZGl0b3IuZmluZCgnLm5vdGUtZWRpdGFibGUnKSxcbiAgICAgIGNvZGFibGU6ICRlZGl0b3IuZmluZCgnLm5vdGUtY29kYWJsZScpLFxuICAgICAgc3RhdHVzYmFyOiAkZWRpdG9yLmZpbmQoJy5ub3RlLXN0YXR1c2JhcicpLFxuICAgIH07XG4gIH0sXG5cbiAgcmVtb3ZlTGF5b3V0OiBmdW5jdGlvbigkbm90ZSwgbGF5b3V0SW5mbykge1xuICAgICRub3RlLmh0bWwobGF5b3V0SW5mby5lZGl0YWJsZS5odG1sKCkpO1xuICAgIGxheW91dEluZm8uZWRpdG9yLnJlbW92ZSgpO1xuICAgICRub3RlLnNob3coKTtcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVpO1xuIl19
|