@plait/core 0.38.0 → 0.40.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.
@@ -1,9 +1,27 @@
1
1
  import { POINTER_BUTTON } from '../../constants';
2
+ import { PlaitBoard } from '../../interfaces';
2
3
  export const NS = 'http://www.w3.org/2000/svg';
3
- export function toPoint(x, y, container) {
4
- const rect = container.getBoundingClientRect();
4
+ /**
5
+ * Get the screen coordinates starting from the upper left corner of the svg element (based on the svg screen coordinate system)
6
+ * @param x screen x
7
+ * @param y screen x
8
+ * @returns
9
+ */
10
+ export function toPoint(x, y, svg) {
11
+ const rect = svg.getBoundingClientRect();
5
12
  return [x - rect.x, y - rect.y];
6
13
  }
14
+ /**
15
+ * `toPoint` reverse processing
16
+ * Get the screen coordinate starting from the upper left corner of the browser window (based on the screen coordinate system)
17
+ * @param point screen coordinates based on the upper left corner of the svg
18
+ * @returns
19
+ */
20
+ export function toScreenPoint(board, point) {
21
+ const host = PlaitBoard.getHost(board);
22
+ const rect = host.getBoundingClientRect();
23
+ return [point[0] + rect.x, point[1] + rect.y];
24
+ }
7
25
  export function createG() {
8
26
  const newG = document.createElementNS(NS, 'g');
9
27
  return newG;
@@ -73,4 +91,4 @@ export const isSecondaryPointer = (event) => {
73
91
  export const isMainPointer = (event) => {
74
92
  return event.button === POINTER_BUTTON.MAIN;
75
93
  };
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvZG9tL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLDRCQUE0QixDQUFDO0FBRS9DLE1BQU0sVUFBVSxPQUFPLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxTQUFxQjtJQUMvRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDbkIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0MsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVO0lBQ3RCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLFNBQTBCLEVBQUUsT0FBaUI7SUFDcEUsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFD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TyxLQUFLLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxTQUFTLENBQUM7QUFDckQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQy9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDO0FBQ2hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IFBPSU5URVJfQlVUVE9OIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvaW50JztcblxuZXhwb3J0IGNvbnN0IE5TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvUG9pbnQoeDogbnVtYmVyLCB5OiBudW1iZXIsIGNvbnRhaW5lcjogU1ZHRWxlbWVudCk6IFBvaW50IHtcbiAgICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiBbeCAtIHJlY3QueCwgeSAtIHJlY3QueV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHKCkge1xuICAgIGNvbnN0IG5ld0cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdnJyk7XG4gICAgcmV0dXJuIG5ld0c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRoKCkge1xuICAgIGNvbnN0IG5ld0cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdwYXRoJyk7XG4gICAgcmV0dXJuIG5ld0c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWN0KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zPzogT3B0aW9ucykge1xuICAgIGNvbnN0IHJlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdyZWN0Jyk7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ3gnLCBgJHtyZWN0YW5nbGUueH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZSgneScsIGAke3JlY3RhbmdsZS55fWApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke3JlY3RhbmdsZS53aWR0aH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7cmVjdGFuZ2xlLmhlaWdodH1gKTtcbiAgICBmb3IgKGxldCBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICBjb25zdCBvcHRpb25LZXkgPSBrZXkgYXMga2V5b2YgT3B0aW9ucztcbiAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoa2V5LCBgJHtvcHRpb25zW29wdGlvbktleV19YCk7XG4gICAgfVxuICAgIHJldHVybiByZWN0O1xufVxuXG5leHBvcnQgY29uc3Qgc2V0U3Ryb2tlTGluZWNhcCA9IChnOiBTVkdHRWxlbWVudCwgdmFsdWU6ICdyb3VuZCcgfCAnc3F1YXJlJykgPT4ge1xuICAgIGcuc2V0QXR0cmlidXRlKCdzdHJva2UtbGluZWNhcCcsIHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRQYXRoU3Ryb2tlTGluZWNhcCA9IChnOiBTVkdHRWxlbWVudCwgdmFsdWU6ICdyb3VuZCcgfCAnc3F1YXJlJykgPT4ge1xuICAgIGcucXVlcnlTZWxlY3RvckFsbCgncGF0aCcpLmZvckVhY2gocGF0aCA9PiB7XG4gICAgICAgIHBhdGguc2V0QXR0cmlidXRlKCdzdHJva2UtbGluZWNhcCcsIHZhbHVlKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNYXNrKCkge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdtYXNrJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTVkcoKSB7XG4gICAgY29uc3Qgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnJyk7XG4gICAgcmV0dXJuIHN2Zztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRleHQoeDogbnVtYmVyLCB5OiBudW1iZXIsIGZpbGw6IHN0cmluZywgdGV4dENvbnRlbnQ6IHN0cmluZykge1xuICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAndGV4dCcpO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCd4JywgYCR7eH1gKTtcbiAgICB0ZXh0LnNldEF0dHJpYnV0ZSgneScsIGAke3l9YCk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBmaWxsKTtcbiAgICB0ZXh0LnRleHRDb250ZW50ID0gdGV4dENvbnRlbnQ7XG4gICAgcmV0dXJuIHRleHQ7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBET00gbm9kZSBpcyBhbiBlbGVtZW50IG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTUVsZW1lbnQgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIEVsZW1lbnQgPT4ge1xuICAgIHJldHVybiBpc0RPTU5vZGUodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhbHVlIGlzIGEgRE9NIG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTU5vZGUgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIE5vZGUgPT4ge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIHdpbmRvdy5Ob2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc0lucHV0T3JUZXh0YXJlYVRhcmdldCA9ICh0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCkgPT4ge1xuICAgIGlmIChpc0RPTUVsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHwgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NlY29uZGFyeVBvaW50ZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSBQT0lOVEVSX0JVVFRPTi5TRUNPTkRBUlk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNNYWluUG9pbnRlciA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgIHJldHVybiBldmVudC5idXR0b24gPT09IFBPSU5URVJfQlVUVE9OLk1BSU47XG59O1xuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvZG9tL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUcvRCxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsNEJBQTRCLENBQUM7QUFFL0M7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsR0FBZTtJQUN6RCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUN6QyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWlCLEVBQUUsS0FBWTtJQUN6RCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVSxDQUFDO0FBQzNELENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTztJQUNuQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvQyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVU7SUFDdEIsTUFB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QU8sS0FBSyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUEwQixFQUFFLEVBQUU7SUFDbkUsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdEIsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtZQUM3RCxPQUFPLElBQUksQ0FBQztTQUNmO0tBQ0o7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLFNBQVMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDL0MsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUM7QUFDaEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUE9JTlRFUl9CVVRUT04gfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuXG5leHBvcnQgY29uc3QgTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuXG4vKipcbiAqIEdldCB0aGUgc2NyZWVuIGNvb3JkaW5hdGVzIHN0YXJ0aW5nIGZyb20gdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBzdmcgZWxlbWVudCAoYmFzZWQgb24gdGhlIHN2ZyBzY3JlZW4gY29vcmRpbmF0ZSBzeXN0ZW0pXG4gKiBAcGFyYW0geCBzY3JlZW4geFxuICogQHBhcmFtIHkgc2NyZWVuIHhcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BvaW50KHg6IG51bWJlciwgeTogbnVtYmVyLCBzdmc6IFNWR0VsZW1lbnQpOiBQb2ludCB7XG4gICAgY29uc3QgcmVjdCA9IHN2Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gW3ggLSByZWN0LngsIHkgLSByZWN0LnldO1xufVxuXG4vKipcbiAqIGB0b1BvaW50YCByZXZlcnNlIHByb2Nlc3NpbmdcbiAqIEdldCB0aGUgc2NyZWVuIGNvb3JkaW5hdGUgc3RhcnRpbmcgZnJvbSB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJyb3dzZXIgd2luZG93IChiYXNlZCBvbiB0aGUgc2NyZWVuIGNvb3JkaW5hdGUgc3lzdGVtKVxuICogQHBhcmFtIHBvaW50IHNjcmVlbiBjb29yZGluYXRlcyBiYXNlZCBvbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIHN2Z1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU2NyZWVuUG9pbnQoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCkge1xuICAgIGNvbnN0IGhvc3QgPSBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpO1xuICAgIGNvbnN0IHJlY3QgPSBob3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiBbcG9pbnRbMF0gKyByZWN0LngsIHBvaW50WzFdICsgcmVjdC55XSBhcyBQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUcoKSB7XG4gICAgY29uc3QgbmV3RyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ2cnKTtcbiAgICByZXR1cm4gbmV3Rztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdGgoKSB7XG4gICAgY29uc3QgbmV3RyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3BhdGgnKTtcbiAgICByZXR1cm4gbmV3Rztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlY3QocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM/OiBPcHRpb25zKSB7XG4gICAgY29uc3QgcmVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3JlY3QnKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZSgneCcsIGAke3JlY3RhbmdsZS54fWApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKCd5JywgYCR7cmVjdGFuZ2xlLnl9YCk7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7cmVjdGFuZ2xlLndpZHRofWApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtyZWN0YW5nbGUuaGVpZ2h0fWApO1xuICAgIGZvciAobGV0IGtleSBpbiBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbktleSA9IGtleSBhcyBrZXlvZiBPcHRpb25zO1xuICAgICAgICByZWN0LnNldEF0dHJpYnV0ZShrZXksIGAke29wdGlvbnNbb3B0aW9uS2V5XX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlY3Q7XG59XG5cbmV4cG9ydCBjb25zdCBzZXRTdHJva2VMaW5lY2FwID0gKGc6IFNWR0dFbGVtZW50LCB2YWx1ZTogJ3JvdW5kJyB8ICdzcXVhcmUnKSA9PiB7XG4gICAgZy5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1saW5lY2FwJywgdmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFBhdGhTdHJva2VMaW5lY2FwID0gKGc6IFNWR0dFbGVtZW50LCB2YWx1ZTogJ3JvdW5kJyB8ICdzcXVhcmUnKSA9PiB7XG4gICAgZy5xdWVyeVNlbGVjdG9yQWxsKCdwYXRoJykuZm9yRWFjaChwYXRoID0+IHtcbiAgICAgICAgcGF0aC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1saW5lY2FwJywgdmFsdWUpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hc2soKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ21hc2snKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNWRygpIHtcbiAgICBjb25zdCBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmcnKTtcbiAgICByZXR1cm4gc3ZnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGV4dCh4OiBudW1iZXIsIHk6IG51bWJlciwgZmlsbDogc3RyaW5nLCB0ZXh0Q29udGVudDogc3RyaW5nKSB7XG4gICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICd0ZXh0Jyk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ3gnLCBgJHt4fWApO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCd5JywgYCR7eX1gKTtcbiAgICB0ZXh0LnNldEF0dHJpYnV0ZSgnZmlsbCcsIGZpbGwpO1xuICAgIHRleHQudGV4dENvbnRlbnQgPSB0ZXh0Q29udGVudDtcbiAgICByZXR1cm4gdGV4dDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIERPTSBub2RlIGlzIGFuIGVsZW1lbnQgbm9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NRWxlbWVudCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRWxlbWVudCA9PiB7XG4gICAgcmV0dXJuIGlzRE9NTm9kZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDE7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYSBET00gbm9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NTm9kZSA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgTm9kZSA9PiB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2Ygd2luZG93Lk5vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzSW5wdXRPclRleHRhcmVhVGFyZ2V0ID0gKHRhcmdldDogRXZlbnRUYXJnZXQgfCBudWxsKSA9PiB7XG4gICAgaWYgKGlzRE9NRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fCB0YXJnZXQudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2Vjb25kYXJ5UG9pbnRlciA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgIHJldHVybiBldmVudC5idXR0b24gPT09IFBPSU5URVJfQlVUVE9OLlNFQ09OREFSWTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc01haW5Qb2ludGVyID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gUE9JTlRFUl9CVVRUT04uTUFJTjtcbn07XG4iXX0=
@@ -70,12 +70,14 @@ export function distanceBetweenPointAndSegments(points, point) {
70
70
  }
71
71
  return distance;
72
72
  }
73
- export function getNearestPointBetweenPointAndSegments(point, points) {
73
+ export function getNearestPointBetweenPointAndSegments(point, points, isClose = true) {
74
74
  const len = points.length;
75
75
  let distance = Infinity;
76
76
  let result = point;
77
77
  for (let i = 0; i < len; i++) {
78
78
  const p = points[i];
79
+ if (i === len - 1 && !isClose)
80
+ continue;
79
81
  const p2 = i === len - 1 ? points[0] : points[i + 1];
80
82
  const currentDistance = distanceBetweenPointAndSegment(point[0], point[1], p[0], p[1], p2[0], p2[1]);
81
83
  if (currentDistance < distance) {
@@ -227,4 +229,4 @@ export const catmullRomFitting = function (points) {
227
229
  }
228
230
  return result;
229
231
  };
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLDZDQUE2QztBQUM3QyxNQUFNLFVBQVUsOEJBQThCLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQy9HLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqQixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFbEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNmLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRTtRQUNqQiwyQkFBMkI7UUFDM0IsS0FBSyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUM7S0FDM0I7SUFFRCxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDWCxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7UUFDWCxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztLQUNYO1NBQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1FBQ2xCLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDUixFQUFFLEdBQUcsRUFBRSxDQUFDO0tBQ1g7U0FBTTtRQUNILEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNwQixFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7S0FDdkI7SUFFRCxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLHFDQUFxQyxDQUFDLEtBQVksRUFBRSxVQUEwQjtJQUMxRixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ2QsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDWixFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNyQixFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNyQixFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNyQixFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqQixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFbEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNmLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRTtRQUNqQiwyQkFBMkI7UUFDM0IsS0FBSyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUM7S0FDM0I7SUFFRCxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDWCxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7UUFDWCxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztLQUNYO1NBQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1FBQ2xCLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDUixFQUFFLEdBQUcsRUFBRSxDQUFDO0tBQ1g7U0FBTTtRQUNILEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNwQixFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7S0FDdkI7SUFFRCxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBVSxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsK0JBQStCLENBQUMsTUFBZSxFQUFFLEtBQVk7SUFDekUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMxQixJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDOUIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekIsTUFBTSxlQUFlLEdBQUcsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRyxJQUFJLGVBQWUsR0FBRyxRQUFRLEVBQUU7WUFDNUIsUUFBUSxHQUFHLGVBQWUsQ0FBQztTQUM5QjtLQUNKO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxzQ0FBc0MsQ0FBQyxLQUFZLEVBQUUsTUFBZTtJQUNoRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzFCLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUN4QixJQUFJLE1BQU0sR0FBVSxLQUFLLENBQUM7SUFFMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMxQixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRCxNQUFNLGVBQWUsR0FBRyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLElBQUksZUFBZSxHQUFHLFFBQVEsRUFBRTtZQUM1QixRQUFRLEdBQUcsZUFBZSxDQUFDO1lBQzNCLE1BQU0sR0FBRyxxQ0FBcUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNsRTtLQUNKO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEtBQWE7SUFDaEYsK0NBQStDO0lBQy9DLGdEQUFnRDtJQUNoRCxrSEFBa0g7SUFDbEgsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzVJLENBQUM7QUFFRCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtJQUN2RixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ25CLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsdUhBQXVIO0FBQ3ZILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLElBQXFCO0lBQ3hGLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQVEsRUFBRSxDQUFRLEVBQUUsQ0FBUSxFQUFFLENBQVEsRUFBVyxFQUFFO0lBQzdFLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBUyxFQUFFLEVBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdFLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdDLE9BQU8sWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBZSxFQUFFLFNBQTBCLEVBQUUsRUFBRTtJQUNsRixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRW5FLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3BDLE1BQU0sV0FBVyxHQUNiLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9FLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9FLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9FLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEYsSUFBSSxXQUFXLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQztTQUNmO0tBQ0o7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsTUFBZSxFQUFFLEVBQUU7SUFDOUQsaUNBQWlDO0lBQ2pDLDREQUE0RDtJQUU1RCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ2QsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUMvRCxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2pCLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNqQixFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRCLElBQUksU0FBUyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoRixJQUFJLFNBQVM7WUFBRSxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUM7S0FDbkM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQVksRUFBRSxNQUFhLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLEVBQUU7SUFDbEcsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDakYsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUVqRixPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQVksRUFBRSxTQUEwQixFQUFFLE1BQWMsRUFBRSxFQUFFO0lBQ2hHLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUN4RCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDeEgsTUFBTSxhQUFhLEdBQ2YsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7UUFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO1FBQ2pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTTtRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbEYsTUFBTSxnQkFBZ0IsR0FDbEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7UUFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTTtRQUMxQixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxNQUFNO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDM0YsTUFBTSxjQUFjLEdBQ2hCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU07UUFDbEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLO1FBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO1FBQ2pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTTtRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFGLE1BQU0saUJBQWlCLEdBQ25CLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU07UUFDbEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLO1FBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU07UUFDbkMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ25HLE1BQU0sVUFBVSxHQUFHLGFBQWEsSUFBSSxnQkFBZ0IsSUFBSSxjQUFjLElBQUksaUJBQWlCLENBQUM7SUFFNUYsT0FBTyxhQUFhLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7SUFDeEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLDREQUE0RDtBQUM1RCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxVQUFTLE1BQWU7SUFDckQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQVksRUFBRSxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDakMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkIsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFekMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxD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Q0FBQyxHQUFZLEVBQUUsR0FBWSxFQUFFLEVBQVcsQ0FBQyxDQUFDO0tBQ3hEO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVjdGFuZ2xlLWNsaWVudCc7XG5cbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS82ODUzOTI2LzIzMjEyMlxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudCh4OiBudW1iZXIsIHk6IG51bWJlciwgeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcikge1xuICAgIGNvbnN0IEEgPSB4IC0geDE7XG4gICAgY29uc3QgQiA9IHkgLSB5MTtcbiAgICBjb25zdCBDID0geDIgLSB4MTtcbiAgICBjb25zdCBEID0geTIgLSB5MTtcblxuICAgIGNvbnN0IGRvdCA9IEEgKiBDICsgQiAqIEQ7XG4gICAgY29uc3QgbGVuU3F1YXJlID0gQyAqIEMgKyBEICogRDtcbiAgICBsZXQgcGFyYW0gPSAtMTtcbiAgICBpZiAobGVuU3F1YXJlICE9PSAwKSB7XG4gICAgICAgIC8vIGluIGNhc2Ugb2YgMCBsZW5ndGggbGluZVxuICAgICAgICBwYXJhbSA9IGRvdCAvIGxlblNxdWFyZTtcbiAgICB9XG5cbiAgICBsZXQgeHgsIHl5O1xuICAgIGlmIChwYXJhbSA8IDApIHtcbiAgICAgICAgeHggPSB4MTtcbiAgICAgICAgeXkgPSB5MTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtID4gMSkge1xuICAgICAgICB4eCA9IHgyO1xuICAgICAgICB5eSA9IHkyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHh4ID0geDEgKyBwYXJhbSAqIEM7XG4gICAgICAgIHl5ID0geTEgKyBwYXJhbSAqIEQ7XG4gICAgfVxuXG4gICAgY29uc3QgZHggPSB4IC0geHg7XG4gICAgY29uc3QgZHkgPSB5IC0geXk7XG4gICAgcmV0dXJuIE1hdGguaHlwb3QoZHgsIGR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnQocG9pbnQ6IFBvaW50LCBsaW5lUG9pbnRzOiBbUG9pbnQsIFBvaW50XSkge1xuICAgIGNvbnN0IHggPSBwb2ludFswXSxcbiAgICAgICAgeSA9IHBvaW50WzFdLFxuICAgICAgICB4MSA9IGxpbmVQb2ludHNbMF1bMF0sXG4gICAgICAgIHkxID0gbGluZVBvaW50c1swXVsxXSxcbiAgICAgICAgeDIgPSBsaW5lUG9pbnRzWzFdWzBdLFxuICAgICAgICB5MiA9IGxpbmVQb2ludHNbMV1bMV07XG4gICAgY29uc3QgQSA9IHggLSB4MTtcbiAgICBjb25zdCBCID0geSAtIHkxO1xuICAgIGNvbnN0IEMgPSB4MiAtIHgxO1xuICAgIGNvbnN0IEQgPSB5MiAtIHkxO1xuXG4gICAgY29uc3QgZG90ID0gQSAqIEMgKyBCICogRDtcbiAgICBjb25zdCBsZW5TcXVhcmUgPSBDICogQyArIEQgKiBEO1xuICAgIGxldCBwYXJhbSA9IC0xO1xuICAgIGlmIChsZW5TcXVhcmUgIT09IDApIHtcbiAgICAgICAgLy8gaW4gY2FzZSBvZiAwIGxlbmd0aCBsaW5lXG4gICAgICAgIHBhcmFtID0gZG90IC8gbGVuU3F1YXJlO1xuICAgIH1cblxuICAgIGxldCB4eCwgeXk7XG4gICAgaWYgKHBhcmFtIDwgMCkge1xuICAgICAgICB4eCA9IHgxO1xuICAgICAgICB5eSA9IHkxO1xuICAgIH0gZWxzZSBpZiAocGFyYW0gPiAxKSB7XG4gICAgICAgIHh4ID0geDI7XG4gICAgICAgIHl5ID0geTI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgeHggPSB4MSArIHBhcmFtICogQztcbiAgICAgICAgeXkgPSB5MSArIHBhcmFtICogRDtcbiAgICB9XG5cbiAgICByZXR1cm4gW3h4LCB5eV0gYXMgUG9pbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50czogUG9pbnRbXSwgcG9pbnQ6IFBvaW50KSB7XG4gICAgY29uc3QgbGVuID0gcG9pbnRzLmxlbmd0aDtcbiAgICBsZXQgZGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbiAtIDE7IGkrKykge1xuICAgICAgICBjb25zdCBwID0gcG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBwMiA9IHBvaW50c1tpICsgMV07XG4gICAgICAgIGNvbnN0IGN1cnJlbnREaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludFswXSwgcG9pbnRbMV0sIHBbMF0sIHBbMV0sIHAyWzBdLCBwMlsxXSk7XG4gICAgICAgIGlmIChjdXJyZW50RGlzdGFuY2UgPCBkaXN0YW5jZSkge1xuICAgICAgICAgICAgZGlzdGFuY2UgPSBjdXJyZW50RGlzdGFuY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpc3RhbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQ6IFBvaW50LCBwb2ludHM6IFBvaW50W10pIHtcbiAgICBjb25zdCBsZW4gPSBwb2ludHMubGVuZ3RoO1xuICAgIGxldCBkaXN0YW5jZSA9IEluZmluaXR5O1xuICAgIGxldCByZXN1bHQ6IFBvaW50ID0gcG9pbnQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICAgIGNvbnN0IHAyID0gaSA9PT0gbGVuIC0gMSA/IHBvaW50c1swXSA6IHBvaW50c1tpICsgMV07XG4gICAgICAgIGNvbnN0IGN1cnJlbnREaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludFswXSwgcG9pbnRbMV0sIHBbMF0sIHBbMV0sIHAyWzBdLCBwMlsxXSk7XG4gICAgICAgIGlmIChjdXJyZW50RGlzdGFuY2UgPCBkaXN0YW5jZSkge1xuICAgICAgICAgICAgZGlzdGFuY2UgPSBjdXJyZW50RGlzdGFuY2U7XG4gICAgICAgICAgICByZXN1bHQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50LCBbcCwgcDJdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIsIGFuZ2xlOiBudW1iZXIpIHtcbiAgICAvLyDwnZGO4oCy8J2RpT0o8J2RjvCdkaXiiJLwnZGQ8J2RpSljb3PwnZyD4oiSKPCdkY7wnZGm4oiS8J2RkPCdkaYpc2lu8J2cgyvwnZGQ8J2RpVxuICAgIC8vIPCdkY7igLLwnZGmPSjwnZGO8J2RpeKIkvCdkZDwnZGlKXNpbvCdnIMrKPCdkY7wnZGm4oiS8J2RkPCdkaYpY29z8J2cgyvwnZGQ8J2Rpi5cbiAgICAvLyBodHRwczovL21hdGguc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzIyMDQ1MjAvaG93LWRvLWktcm90YXRlLWEtbGluZS1zZWdtZW50LWluLWEtc3BlY2lmaWMtcG9pbnQtb24tdGhlLWxpbmVcbiAgICByZXR1cm4gWyh4MSAtIHgyKSAqIE1hdGguY29zKGFuZ2xlKSAtICh5MSAtIHkyKSAqIE1hdGguc2luKGFuZ2xlKSArIHgyLCAoeDEgLSB4MikgKiBNYXRoLnNpbihhbmdsZSkgKyAoeTEgLSB5MikgKiBNYXRoLmNvcyhhbmdsZSkgKyB5Ml07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpIHtcbiAgICBjb25zdCBkeCA9IHgxIC0geDI7XG4gICAgY29uc3QgZHkgPSB5MSAtIHkyO1xuICAgIHJldHVybiBNYXRoLmh5cG90KGR4LCBkeSk7XG59XG5cbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUyNTQ4MzgvY2FsY3VsYXRpbmctZGlzdGFuY2UtYmV0d2Vlbi1hLXBvaW50LWFuZC1hLXJlY3Rhbmd1bGFyLWJveC1uZWFyZXN0LXBvaW50XG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRSZWN0YW5nbGUoeDogbnVtYmVyLCB5OiBudW1iZXIsIHJlY3Q6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgIHZhciBkeCA9IE1hdGgubWF4KHJlY3QueCAtIHgsIDAsIHggLSAocmVjdC54ICsgcmVjdC53aWR0aCkpO1xuICAgIHZhciBkeSA9IE1hdGgubWF4KHJlY3QueSAtIHksIDAsIHkgLSAocmVjdC55ICsgcmVjdC5oZWlnaHQpKTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbn1cblxuZXhwb3J0IGNvbnN0IGlzTGluZUhpdExpbmUgPSAoYTogUG9pbnQsIGI6IFBvaW50LCBjOiBQb2ludCwgZDogUG9pbnQpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBjcm9zc1Byb2R1Y3QgPSAodjE6IFBvaW50LCB2MjogUG9pbnQpID0+IHYxWzBdICogdjJbMV0gLSB2MVsxXSAqIHYyWzBdO1xuXG4gICAgY29uc3QgYWI6IFBvaW50ID0gW2JbMF0gLSBhWzBdLCBiWzFdIC0gYVsxXV07XG4gICAgY29uc3QgYWM6IFBvaW50ID0gW2NbMF0gLSBhWzBdLCBjWzFdIC0gYVsxXV07XG4gICAgY29uc3QgYWQ6IFBvaW50ID0gW2RbMF0gLSBhWzBdLCBkWzFdIC0gYVsxXV07XG5cbiAgICBjb25zdCBjYTogUG9pbnQgPSBbYVswXSAtIGNbMF0sIGFbMV0gLSBjWzFdXTtcbiAgICBjb25zdCBjYjogUG9pbnQgPSBbYlswXSAtIGNbMF0sIGJbMV0gLSBjWzFdXTtcbiAgICBjb25zdCBjZDogUG9pbnQgPSBbZFswXSAtIGNbMF0sIGRbMV0gLSBjWzFdXTtcblxuICAgIHJldHVybiBjcm9zc1Byb2R1Y3QoYWIsIGFjKSAqIGNyb3NzUHJvZHVjdChhYiwgYWQpIDw9IDAgJiYgY3Jvc3NQcm9kdWN0KGNkLCBjYSkgKiBjcm9zc1Byb2R1Y3QoY2QsIGNiKSA8PSAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUG9seWxpbmVIaXRSZWN0YW5nbGUgPSAocG9pbnRzOiBQb2ludFtdLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgIGNvbnN0IHJlY3RhbmdsZVBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGlzSW50ZXJzZWN0ID1cbiAgICAgICAgICAgIGlzTGluZUhpdExpbmUocG9pbnRzW2ldLCBwb2ludHNbaSAtIDFdLCByZWN0YW5nbGVQb2ludHNbMF0sIHJlY3RhbmdsZVBvaW50c1sxXSkgfHxcbiAgICAgICAgICAgIGlzTGluZUhpdExpbmUocG9pbnRzW2ldLCBwb2ludHNbaSAtIDFdLCByZWN0YW5nbGVQb2ludHNbMV0sIHJlY3RhbmdsZVBvaW50c1syXSkgfHxcbiAgICAgICAgICAgIGlzTGluZUhpdExpbmUocG9pbnRzW2ldLCBwb2ludHNbaSAtIDFdLCByZWN0YW5nbGVQb2ludHNbMl0sIHJlY3RhbmdsZVBvaW50c1szXSkgfHxcbiAgICAgICAgICAgIGlzTGluZUhpdExpbmUocG9pbnRzW2ldLCBwb2ludHNbaSAtIDFdLCByZWN0YW5nbGVQb2ludHNbM10sIHJlY3RhbmdsZVBvaW50c1swXSk7XG4gICAgICAgIGlmIChpc0ludGVyc2VjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG4vL2h0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIyNTIxOTgyL2NoZWNrLWlmLXBvaW50LWlzLWluc2lkZS1hLXBvbHlnb25cbmV4cG9ydCBjb25zdCBpc1BvaW50SW5Qb2x5Z29uID0gKHBvaW50OiBQb2ludCwgcG9pbnRzOiBQb2ludFtdKSA9PiB7XG4gICAgLy8gcmF5LWNhc3RpbmcgYWxnb3JpdGhtIGJhc2VkIG9uXG4gICAgLy8gaHR0cHM6Ly93cmYuZWNzZS5ycGkuZWR1L1Jlc2VhcmNoL1Nob3J0X05vdGVzL3BucG9seS5odG1sXG5cbiAgICBjb25zdCB4ID0gcG9pbnRbMF0sXG4gICAgICAgIHkgPSBwb2ludFsxXTtcblxuICAgIGxldCBpbnNpZGUgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IHBvaW50cy5sZW5ndGggLSAxOyBpIDwgcG9pbnRzLmxlbmd0aDsgaiA9IGkrKykge1xuICAgICAgICBsZXQgeGkgPSBwb2ludHNbaV1bMF0sXG4gICAgICAgICAgICB5aSA9IHBvaW50c1tpXVsxXTtcbiAgICAgICAgbGV0IHhqID0gcG9pbnRzW2pdWzBdLFxuICAgICAgICAgICAgeWogPSBwb2ludHNbal1bMV07XG5cbiAgICAgICAgbGV0IGludGVyc2VjdCA9IHlpID4geSAhPSB5aiA+IHkgJiYgeCA8ICgoeGogLSB4aSkgKiAoeSAtIHlpKSkgLyAoeWogLSB5aSkgKyB4aTtcbiAgICAgICAgaWYgKGludGVyc2VjdCkgaW5zaWRlID0gIWluc2lkZTtcbiAgICB9XG4gICAgcmV0dXJuIGluc2lkZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BvaW50SW5FbGxpcHNlID0gKHBvaW50OiBQb2ludCwgY2VudGVyOiBQb2ludCwgcng6IG51bWJlciwgcnk6IG51bWJlciwgcm90YXRpb24gPSAwKSA9PiB7XG4gICAgY29uc3QgY29zQW5nbGUgPSBNYXRoLmNvcyhyb3RhdGlvbik7XG4gICAgY29uc3Qgc2luQW5nbGUgPSBNYXRoLnNpbihyb3RhdGlvbik7XG4gICAgY29uc3QgeDEgPSAocG9pbnRbMF0gLSBjZW50ZXJbMF0pICogY29zQW5nbGUgKyAocG9pbnRbMV0gLSBjZW50ZXJbMV0pICogc2luQW5nbGU7XG4gICAgY29uc3QgeTEgPSAocG9pbnRbMV0gLSBjZW50ZXJbMV0pICogY29zQW5nbGUgLSAocG9pbnRbMF0gLSBjZW50ZXJbMF0pICogc2luQW5nbGU7XG5cbiAgICByZXR1cm4gKHgxICogeDEpIC8gKHJ4ICogcngpICsgKHkxICogeTEpIC8gKHJ5ICogcnkpIDw9IDE7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQb2ludEluUm91bmRSZWN0YW5nbGUgPSAocG9pbnQ6IFBvaW50LCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcmFkaXVzOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB7IHg6IHJlY3RYLCB5OiByZWN0WSwgd2lkdGgsIGhlaWdodCB9ID0gcmVjdGFuZ2xlO1xuICAgIGNvbnN0IGlzSW5SZWN0YW5nbGUgPSBwb2ludFswXSA+PSByZWN0WCAmJiBwb2ludFswXSA8PSByZWN0WCArIHdpZHRoICYmIHBvaW50WzFdID49IHJlY3RZICYmIHBvaW50WzFdIDw9IHJlY3RZICsgaGVpZ2h0O1xuICAgIGNvbnN0IGhhbmRsZUxlZnRUb3AgPVxuICAgICAgICBwb2ludFswXSA+PSByZWN0WCAmJlxuICAgICAgICBwb2ludFswXSA8PSByZWN0WCArIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIHJhZGl1cyAmJlxuICAgICAgICBNYXRoLmh5cG90KHBvaW50WzBdIC0gKHJlY3RYICsgcmFkaXVzKSwgcG9pbnRbMV0gLSAocmVjdFkgKyByYWRpdXMpKSA+IHJhZGl1cztcbiAgICBjb25zdCBoYW5kbGVMZWZ0Qm90dG9tID1cbiAgICAgICAgcG9pbnRbMF0gPj0gcmVjdFggJiZcbiAgICAgICAgcG9pbnRbMF0gPD0gcmVjdFggKyByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMV0gPj0gcmVjdFkgKyBoZWlnaHQgJiZcbiAgICAgICAgcG9pbnRbMV0gPD0gcmVjdFkgKyBoZWlnaHQgLSByYWRpdXMgJiZcbiAgICAgICAgTWF0aC5oeXBvdChwb2ludFswXSAtIChyZWN0WCArIHJhZGl1cyksIHBvaW50WzFdIC0gKHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzKSkgPiByYWRpdXM7XG4gICAgY29uc3QgaGFuZGxlUmlnaHRUb3AgPVxuICAgICAgICBwb2ludFswXSA+PSByZWN0WCArIHdpZHRoIC0gcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzBdIDw9IHJlY3RYICsgd2lkdGggJiZcbiAgICAgICAgcG9pbnRbMV0gPj0gcmVjdFkgJiZcbiAgICAgICAgcG9pbnRbMV0gPD0gcmVjdFkgKyByYWRpdXMgJiZcbiAgICAgICAgTWF0aC5oeXBvdChwb2ludFswXSAtIChyZWN0WCArIHdpZHRoIC0gcmFkaXVzKSwgcG9pbnRbMV0gLSAocmVjdFkgKyByYWRpdXMpKSA+IHJhZGl1cztcbiAgICBjb25zdCBoYW5kbGVSaWdodEJvdHRvbSA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICsgd2lkdGggLSByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMF0gPD0gcmVjdFggKyB3aWR0aCAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSArIGhlaWdodCAtIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIGhlaWdodCAmJlxuICAgICAgICBNYXRoLmh5cG90KHBvaW50WzBdIC0gKHJlY3RYICsgd2lkdGggLSByYWRpdXMpLCBwb2ludFsxXSAtIChyZWN0WSArIGhlaWdodCAtIHJhZGl1cykpID4gcmFkaXVzO1xuICAgIGNvbnN0IGlzSW5Db3JuZXIgPSBoYW5kbGVMZWZ0VG9wIHx8IGhhbmRsZUxlZnRCb3R0b20gfHwgaGFuZGxlUmlnaHRUb3AgfHwgaGFuZGxlUmlnaHRCb3R0b207XG5cbiAgICByZXR1cm4gaXNJblJlY3RhbmdsZSAmJiAhaXNJbkNvcm5lcjtcbn07XG5cbmV4cG9ydCBjb25zdCBkb3duU2NhbGUgPSAobnVtYmVyOiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gTnVtYmVyKG51bWJlci50b0ZpeGVkKDIpKTtcbn07XG5cbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL25pY2hvbGFzd21pbi9jMjY2MWViMTFjYWQ1NjcxZDgxNlxuZXhwb3J0IGNvbnN0IGNhdG11bGxSb21GaXR0aW5nID0gZnVuY3Rpb24ocG9pbnRzOiBQb2ludFtdKSB7XG4gICAgY29uc3QgYWxwaGEgPSAwLjU7XG4gICAgbGV0IHAwLCBwMSwgcDIsIHAzLCBicDEsIGJwMiwgZDEsIGQyLCBkMywgQSwgQiwgTiwgTTtcbiAgICB2YXIgZDNwb3dBLCBkMnBvd0EsIGQzcG93MkEsIGQycG93MkEsIGQxcG93MkEsIGQxcG93QTtcbiAgICBjb25zdCByZXN1bHQ6IFBvaW50W10gPSBbXTtcbiAgICByZXN1bHQucHVzaChbTWF0aC5yb3VuZChwb2ludHNbMF1bMF0pLCBNYXRoLnJvdW5kKHBvaW50c1swXVsxXSldKTtcbiAgICB2YXIgbGVuZ3RoID0gcG9pbnRzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICBwMCA9IGkgPT0gMCA/IHBvaW50c1swXSA6IHBvaW50c1tpIC0gMV07XG4gICAgICAgIHAxID0gcG9pbnRzW2ldO1xuICAgICAgICBwMiA9IHBvaW50c1tpICsgMV07XG4gICAgICAgIHAzID0gaSArIDIgPCBsZW5ndGggPyBwb2ludHNbaSArIDJdIDogcDI7XG5cbiAgICAgICAgZDEgPSBNYXRoLnNxcnQoTWF0aC5wb3cocDBbMF0gLSBwMVswXSwgMikgKyBNYXRoLnBvdyhwMFsxXSAtIHAxWzFdLCAyKSk7XG4gICAgICAgIGQyID0gTWF0aC5zcXJ0KE1hdGgucG93KHAxWzBdIC0gcDJbMF0sIDIpICsgTWF0aC5wb3cocDFbMV0gLSBwMlsxXSwgMikpO1xuICAgICAgICBkMyA9IE1hdGguc3FydChNYXRoLnBvdyhwMlswXSAtIHAzWzBdLCAyKSArIE1hdGgucG93KHAyWzFdIC0gcDNbMV0sIDIpKTtcblxuICAgICAgICAvLyBDYXRtdWxsLVJvbSB0byBDdWJpYyBCZXppZXIgY29udmVyc2lvbiBtYXRyaXhcbiAgICAgICAgLy8gQSA9IDJkMV4yYSArIDNkMV5hICogZDJeYSArIGQzXjJhXG4gICAgICAgIC8vIEIgPSAyZDNeMmEgKyAzZDNeYSAqIGQyXmEgKyBkMl4yYVxuICAgICAgICAvLyBbICAgMCAgICAgICAgICAgICAxICAgICAgICAgICAgMCAgICAgICAgICAwICAgICAgICAgIF1cbiAgICAgICAgLy8gWyAgIC1kMl4yYSAvTiAgICAgQS9OICAgICAgICAgIGQxXjJhIC9OICAgMCAgICAgICAgICBdXG4gICAgICAgIC8vIFsgICAwICAgICAgICAgICAgIGQzXjJhIC9NICAgICBCL00gICAgICAgIC1kMl4yYSAvTSAgXVxuICAgICAgICAvLyBbICAgMCAgICAgICAgICAgICAwICAgICAgICAgICAgMSAgICAgICAgICAwICAgICAgICAgIF1cblxuICAgICAgICBkM3Bvd0EgPSBNYXRoLnBvdyhkMywgYWxwaGEpO1xuICAgICAgICBkM3BvdzJBID0gTWF0aC5wb3coZDMsIDIgKiBhbHBoYSk7XG4gICAgICAgIGQycG93QSA9IE1hdGgucG93KGQyLCBhbHBoYSk7XG4gICAgICAgIGQycG93MkEgPSBNYXRoLnBvdyhkMiwgMiAqIGFscGhhKTtcbiAgICAgICAgZDFwb3dBID0gTWF0aC5wb3coZDEsIGFscGhhKTtcbiAgICAgICAgZDFwb3cyQSA9IE1hdGgucG93KGQxLCAyICogYWxwaGEpO1xuXG4gICAgICAgIEEgPSAyICogZDFwb3cyQSArIDMgKiBkMXBvd0EgKiBkMnBvd0EgKyBkMnBvdzJBO1xuICAgICAgICBCID0gMiAqIGQzcG93MkEgKyAzICogZDNwb3dBICogZDJwb3dBICsgZDJwb3cyQTtcbiAgICAgICAgTiA9IDMgKiBkMXBvd0EgKiAoZDFwb3dBICsgZDJwb3dBKTtcbiAgICAgICAgaWYgKE4gPiAwKSB7XG4gICAgICAgICAgICBOID0gMSAvIE47XG4gICAgICAgIH1cbiAgICAgICAgTSA9IDMgKiBkM3Bvd0EgKiAoZDNwb3dBICsgZDJwb3dBKTtcbiAgICAgICAgaWYgKE0gPiAwKSB7XG4gICAgICAgICAgICBNID0gMSAvIE07XG4gICAgICAgIH1cblxuICAgICAgICBicDEgPSBbKC1kMnBvdzJBICogcDBbMF0gKyBBICogcDFbMF0gKyBkMXBvdzJBICogcDJbMF0pICogTiwgKC1kMnBvdzJBICogcDBbMV0gKyBBICogcDFbMV0gKyBkMXBvdzJBICogcDJbMV0pICogTl07XG4gICAgICAgIGJwMiA9IFsoZDNwb3cyQSAqIHAxWzBdICsgQiAqIHAyWzBdIC0gZDJwb3cyQSAqIHAzWzBdKSAqIE0sIChkM3BvdzJBICogcDFbMV0gKyBCICogcDJbMV0gLSBkMnBvdzJBICogcDNbMV0pICogTV07XG5cbiAgICAgICAgaWYgKGJwMVswXSA9PSAwICYmIGJwMVsxXSA9PSAwKSB7XG4gICAgICAgICAgICBicDEgPSBwMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYnAyWzBdID09IDAgJiYgYnAyWzFdID09IDApIHtcbiAgICAgICAgICAgIGJwMiA9IHAyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LnB1c2goYnAxIGFzIFBvaW50LCBicDIgYXMgUG9pbnQsIHAyIGFzIFBvaW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbiJdfQ==
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLDZDQUE2QztBQUM3QyxNQUFNLFVBQVUsOEJBQThCLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQy9HLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqQixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFbEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNmLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRTtRQUNqQiwyQkFBMkI7UUFDM0IsS0FBSyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUM7S0FDM0I7SUFFRCxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDWCxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7UUFDWCxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztLQUNYO1NBQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1FBQ2xCLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDUixFQUFFLEdBQUcsRUFBRSxDQUFDO0tBQ1g7U0FBTTtRQUNILEVBQUUsR0FBRyxFQUFFLEdB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R0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBUSxFQUFFLENBQVEsRUFBRSxDQUFRLEVBQUUsQ0FBUSxFQUFXLEVBQUU7SUFDN0UsTUFBTSxZQUFZLEdBQUcsQ0FBQyxFQUFTLEVBQUUsRUFBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0UsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0MsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0MsT0FBTyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEgsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFlLEVBQUUsU0FBMEIsRUFBRSxFQUFFO0lBQ2xGLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFbkUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDcEMsTUFBTSxXQUFXLEdBQ2IsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRixJQUFJLFdBQVcsRUFBRTtZQUNiLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7S0FDSjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLGlGQUFpRjtBQUNqRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQVksRUFBRSxNQUFlLEVBQUUsRUFBRTtJQUM5RCxpQ0FBaUM7SUFDakMsNERBQTREO0lBRTVELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDZCxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQy9ELElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDakIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2pCLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEIsSUFBSSxTQUFTLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hGLElBQUksU0FBUztZQUFFLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQztLQUNuQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBWSxFQUFFLE1BQWEsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRTtJQUNsRyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUNqRixNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBRWpGLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBWSxFQUFFLFNBQTBCLEVBQUUsTUFBYyxFQUFFLEVBQUU7SUFDaEcsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ3hELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUN4SCxNQUFNLGFBQWEsR0FDZixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSztRQUNqQixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU07UUFDMUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7UUFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUNsRixNQUFNLGdCQUFnQixHQUNsQixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSztRQUNqQixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU07UUFDMUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU07UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMzRixNQUFNLGNBQWMsR0FDaEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTTtRQUNsQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLEtBQUs7UUFDekIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7UUFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUYsTUFBTSxpQkFBaUIsR0FDbkIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTTtRQUNsQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLEtBQUs7UUFDekIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTTtRQUNuQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU07UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbkcsTUFBTSxVQUFVLEdBQUcsYUFBYSxJQUFJLGdCQUFnQixJQUFJLGNBQWMsSUFBSSxpQkFBaUIsQ0FBQztJQUU1RixPQUFPLGFBQWEsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUN4QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBRUYsNERBQTREO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFVBQVMsTUFBZTtJQUNyRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDbEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckQsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNqQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQixFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV6QyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFH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LENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1QixHQUFHLEdBQUcsRUFBRSxDQUFDO1NBQ1o7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQVksRUFBRSxHQUFZLEVBQUUsRUFBVyxDQUFDLENBQUM7S0FDeEQ7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN0YW5nbGUtY2xpZW50JztcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzY4NTM5MjYvMjMyMTIyXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHg6IG51bWJlciwgeTogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgY29uc3QgQSA9IHggLSB4MTtcbiAgICBjb25zdCBCID0geSAtIHkxO1xuICAgIGNvbnN0IEMgPSB4MiAtIHgxO1xuICAgIGNvbnN0IEQgPSB5MiAtIHkxO1xuXG4gICAgY29uc3QgZG90ID0gQSAqIEMgKyBCICogRDtcbiAgICBjb25zdCBsZW5TcXVhcmUgPSBDICogQyArIEQgKiBEO1xuICAgIGxldCBwYXJhbSA9IC0xO1xuICAgIGlmIChsZW5TcXVhcmUgIT09IDApIHtcbiAgICAgICAgLy8gaW4gY2FzZSBvZiAwIGxlbmd0aCBsaW5lXG4gICAgICAgIHBhcmFtID0gZG90IC8gbGVuU3F1YXJlO1xuICAgIH1cblxuICAgIGxldCB4eCwgeXk7XG4gICAgaWYgKHBhcmFtIDwgMCkge1xuICAgICAgICB4eCA9IHgxO1xuICAgICAgICB5eSA9IHkxO1xuICAgIH0gZWxzZSBpZiAocGFyYW0gPiAxKSB7XG4gICAgICAgIHh4ID0geDI7XG4gICAgICAgIHl5ID0geTI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgeHggPSB4MSArIHBhcmFtICogQztcbiAgICAgICAgeXkgPSB5MSArIHBhcmFtICogRDtcbiAgICB9XG5cbiAgICBjb25zdCBkeCA9IHggLSB4eDtcbiAgICBjb25zdCBkeSA9IHkgLSB5eTtcbiAgICByZXR1cm4gTWF0aC5oeXBvdChkeCwgZHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludDogUG9pbnQsIGxpbmVQb2ludHM6IFtQb2ludCwgUG9pbnRdKSB7XG4gICAgY29uc3QgeCA9IHBvaW50WzBdLFxuICAgICAgICB5ID0gcG9pbnRbMV0sXG4gICAgICAgIHgxID0gbGluZVBvaW50c1swXVswXSxcbiAgICAgICAgeTEgPSBsaW5lUG9pbnRzWzBdWzFdLFxuICAgICAgICB4MiA9IGxpbmVQb2ludHNbMV1bMF0sXG4gICAgICAgIHkyID0gbGluZVBvaW50c1sxXVsxXTtcbiAgICBjb25zdCBBID0geCAtIHgxO1xuICAgIGNvbnN0IEIgPSB5IC0geTE7XG4gICAgY29uc3QgQyA9IHgyIC0geDE7XG4gICAgY29uc3QgRCA9IHkyIC0geTE7XG5cbiAgICBjb25zdCBkb3QgPSBBICogQyArIEIgKiBEO1xuICAgIGNvbnN0IGxlblNxdWFyZSA9IEMgKiBDICsgRCAqIEQ7XG4gICAgbGV0IHBhcmFtID0gLTE7XG4gICAgaWYgKGxlblNxdWFyZSAhPT0gMCkge1xuICAgICAgICAvLyBpbiBjYXNlIG9mIDAgbGVuZ3RoIGxpbmVcbiAgICAgICAgcGFyYW0gPSBkb3QgLyBsZW5TcXVhcmU7XG4gICAgfVxuXG4gICAgbGV0IHh4LCB5eTtcbiAgICBpZiAocGFyYW0gPCAwKSB7XG4gICAgICAgIHh4ID0geDE7XG4gICAgICAgIHl5ID0geTE7XG4gICAgfSBlbHNlIGlmIChwYXJhbSA+IDEpIHtcbiAgICAgICAgeHggPSB4MjtcbiAgICAgICAgeXkgPSB5MjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB4eCA9IHgxICsgcGFyYW0gKiBDO1xuICAgICAgICB5eSA9IHkxICsgcGFyYW0gKiBEO1xuICAgIH1cblxuICAgIHJldHVybiBbeHgsIHl5XSBhcyBQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnRzOiBQb2ludFtdLCBwb2ludDogUG9pbnQpIHtcbiAgICBjb25zdCBsZW4gPSBwb2ludHMubGVuZ3RoO1xuICAgIGxldCBkaXN0YW5jZSA9IEluZmluaXR5O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICAgIGNvbnN0IHAyID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgY3VycmVudERpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50WzBdLCBwb2ludFsxXSwgcFswXSwgcFsxXSwgcDJbMF0sIHAyWzFdKTtcbiAgICAgICAgaWYgKGN1cnJlbnREaXN0YW5jZSA8IGRpc3RhbmNlKSB7XG4gICAgICAgICAgICBkaXN0YW5jZSA9IGN1cnJlbnREaXN0YW5jZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzdGFuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwb2ludDogUG9pbnQsIHBvaW50czogUG9pbnRbXSwgaXNDbG9zZTogQm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCBsZW4gPSBwb2ludHMubGVuZ3RoO1xuICAgIGxldCBkaXN0YW5jZSA9IEluZmluaXR5O1xuICAgIGxldCByZXN1bHQ6IFBvaW50ID0gcG9pbnQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICAgIGlmIChpID09PSBsZW4gLSAxICYmICFpc0Nsb3NlKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgcDIgPSBpID09PSBsZW4gLSAxID8gcG9pbnRzWzBdIDogcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgY3VycmVudERpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50WzBdLCBwb2ludFsxXSwgcFswXSwgcFsxXSwgcDJbMF0sIHAyWzFdKTtcbiAgICAgICAgaWYgKGN1cnJlbnREaXN0YW5jZSA8IGRpc3RhbmNlKSB7XG4gICAgICAgICAgICBkaXN0YW5jZSA9IGN1cnJlbnREaXN0YW5jZTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnQocG9pbnQsIFtwLCBwMl0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGUoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgYW5nbGU6IG51bWJlcikge1xuICAgIC8vIPCdkY7igLLwnZGlPSjwnZGO8J2RpeKIkvCdkZDwnZGlKWNvc/CdnIPiiJIo8J2RjvCdkabiiJLwnZGQ8J2RpilzaW7wnZyDK/CdkZDwnZGlXG4gICAgLy8g8J2RjuKAsvCdkaY9KPCdkY7wnZGl4oiS8J2RkPCdkaUpc2lu8J2cgyso8J2RjvCdkabiiJLwnZGQ8J2Rpiljb3PwnZyDK/CdkZDwnZGmLlxuICAgIC8vIGh0dHBzOi8vbWF0aC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMjIwNDUyMC9ob3ctZG8taS1yb3RhdGUtYS1saW5lLXNlZ21lbnQtaW4tYS1zcGVjaWZpYy1wb2ludC1vbi10aGUtbGluZVxuICAgIHJldHVybiBbKHgxIC0geDIpICogTWF0aC5jb3MoYW5nbGUpIC0gKHkxIC0geTIpICogTWF0aC5zaW4oYW5nbGUpICsgeDIsICh4MSAtIHgyKSAqIE1hdGguc2luKGFuZ2xlKSArICh5MSAtIHkyKSAqIE1hdGguY29zKGFuZ2xlKSArIHkyXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcikge1xuICAgIGNvbnN0IGR4ID0geDEgLSB4MjtcbiAgICBjb25zdCBkeSA9IHkxIC0geTI7XG4gICAgcmV0dXJuIE1hdGguaHlwb3QoZHgsIGR5KTtcbn1cblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTI1NDgzOC9jYWxjdWxhdGluZy1kaXN0YW5jZS1iZXR3ZWVuLWEtcG9pbnQtYW5kLWEtcmVjdGFuZ3VsYXItYm94LW5lYXJlc3QtcG9pbnRcbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFJlY3RhbmdsZSh4OiBudW1iZXIsIHk6IG51bWJlciwgcmVjdDogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgdmFyIGR4ID0gTWF0aC5tYXgocmVjdC54IC0geCwgMCwgeCAtIChyZWN0LnggKyByZWN0LndpZHRoKSk7XG4gICAgdmFyIGR5ID0gTWF0aC5tYXgocmVjdC55IC0geSwgMCwgeSAtIChyZWN0LnkgKyByZWN0LmhlaWdodCkpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xufVxuXG5leHBvcnQgY29uc3QgaXNMaW5lSGl0TGluZSA9IChhOiBQb2ludCwgYjogUG9pbnQsIGM6IFBvaW50LCBkOiBQb2ludCk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGNyb3NzUHJvZHVjdCA9ICh2MTogUG9pbnQsIHYyOiBQb2ludCkgPT4gdjFbMF0gKiB2MlsxXSAtIHYxWzFdICogdjJbMF07XG5cbiAgICBjb25zdCBhYjogUG9pbnQgPSBbYlswXSAtIGFbMF0sIGJbMV0gLSBhWzFdXTtcbiAgICBjb25zdCBhYzogUG9pbnQgPSBbY1swXSAtIGFbMF0sIGNbMV0gLSBhWzFdXTtcbiAgICBjb25zdCBhZDogUG9pbnQgPSBbZFswXSAtIGFbMF0sIGRbMV0gLSBhWzFdXTtcblxuICAgIGNvbnN0IGNhOiBQb2ludCA9IFthWzBdIC0gY1swXSwgYVsxXSAtIGNbMV1dO1xuICAgIGNvbnN0IGNiOiBQb2ludCA9IFtiWzBdIC0gY1swXSwgYlsxXSAtIGNbMV1dO1xuICAgIGNvbnN0IGNkOiBQb2ludCA9IFtkWzBdIC0gY1swXSwgZFsxXSAtIGNbMV1dO1xuXG4gICAgcmV0dXJuIGNyb3NzUHJvZHVjdChhYiwgYWMpICogY3Jvc3NQcm9kdWN0KGFiLCBhZCkgPD0gMCAmJiBjcm9zc1Byb2R1Y3QoY2QsIGNhKSAqIGNyb3NzUHJvZHVjdChjZCwgY2IpIDw9IDA7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQb2x5bGluZUhpdFJlY3RhbmdsZSA9IChwb2ludHM6IFBvaW50W10sIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlUG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaXNJbnRlcnNlY3QgPVxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwb2ludHNbaV0sIHBvaW50c1tpIC0gMV0sIHJlY3RhbmdsZVBvaW50c1swXSwgcmVjdGFuZ2xlUG9pbnRzWzFdKSB8fFxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwb2ludHNbaV0sIHBvaW50c1tpIC0gMV0sIHJlY3RhbmdsZVBvaW50c1sxXSwgcmVjdGFuZ2xlUG9pbnRzWzJdKSB8fFxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwb2ludHNbaV0sIHBvaW50c1tpIC0gMV0sIHJlY3RhbmdsZVBvaW50c1syXSwgcmVjdGFuZ2xlUG9pbnRzWzNdKSB8fFxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwb2ludHNbaV0sIHBvaW50c1tpIC0gMV0sIHJlY3RhbmdsZVBvaW50c1szXSwgcmVjdGFuZ2xlUG9pbnRzWzBdKTtcbiAgICAgICAgaWYgKGlzSW50ZXJzZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbi8vaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjI1MjE5ODIvY2hlY2staWYtcG9pbnQtaXMtaW5zaWRlLWEtcG9seWdvblxuZXhwb3J0IGNvbnN0IGlzUG9pbnRJblBvbHlnb24gPSAocG9pbnQ6IFBvaW50LCBwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICAvLyByYXktY2FzdGluZyBhbGdvcml0aG0gYmFzZWQgb25cbiAgICAvLyBodHRwczovL3dyZi5lY3NlLnJwaS5lZHUvUmVzZWFyY2gvU2hvcnRfTm90ZXMvcG5wb2x5Lmh0bWxcblxuICAgIGNvbnN0IHggPSBwb2ludFswXSxcbiAgICAgICAgeSA9IHBvaW50WzFdO1xuXG4gICAgbGV0IGluc2lkZSA9IGZhbHNlO1xuICAgIGZvciAodmFyIGkgPSAwLCBqID0gcG9pbnRzLmxlbmd0aCAtIDE7IGkgPCBwb2ludHMubGVuZ3RoOyBqID0gaSsrKSB7XG4gICAgICAgIGxldCB4aSA9IHBvaW50c1tpXVswXSxcbiAgICAgICAgICAgIHlpID0gcG9pbnRzW2ldWzFdO1xuICAgICAgICBsZXQgeGogPSBwb2ludHNbal1bMF0sXG4gICAgICAgICAgICB5aiA9IHBvaW50c1tqXVsxXTtcblxuICAgICAgICBsZXQgaW50ZXJzZWN0ID0geWkgPiB5ICE9IHlqID4geSAmJiB4IDwgKCh4aiAtIHhpKSAqICh5IC0geWkpKSAvICh5aiAtIHlpKSArIHhpO1xuICAgICAgICBpZiAoaW50ZXJzZWN0KSBpbnNpZGUgPSAhaW5zaWRlO1xuICAgIH1cbiAgICByZXR1cm4gaW5zaWRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUG9pbnRJbkVsbGlwc2UgPSAocG9pbnQ6IFBvaW50LCBjZW50ZXI6IFBvaW50LCByeDogbnVtYmVyLCByeTogbnVtYmVyLCByb3RhdGlvbiA9IDApID0+IHtcbiAgICBjb25zdCBjb3NBbmdsZSA9IE1hdGguY29zKHJvdGF0aW9uKTtcbiAgICBjb25zdCBzaW5BbmdsZSA9IE1hdGguc2luKHJvdGF0aW9uKTtcbiAgICBjb25zdCB4MSA9IChwb2ludFswXSAtIGNlbnRlclswXSkgKiBjb3NBbmdsZSArIChwb2ludFsxXSAtIGNlbnRlclsxXSkgKiBzaW5BbmdsZTtcbiAgICBjb25zdCB5MSA9IChwb2ludFsxXSAtIGNlbnRlclsxXSkgKiBjb3NBbmdsZSAtIChwb2ludFswXSAtIGNlbnRlclswXSkgKiBzaW5BbmdsZTtcblxuICAgIHJldHVybiAoeDEgKiB4MSkgLyAocnggKiByeCkgKyAoeTEgKiB5MSkgLyAocnkgKiByeSkgPD0gMTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BvaW50SW5Sb3VuZFJlY3RhbmdsZSA9IChwb2ludDogUG9pbnQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCByYWRpdXM6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHsgeDogcmVjdFgsIHk6IHJlY3RZLCB3aWR0aCwgaGVpZ2h0IH0gPSByZWN0YW5nbGU7XG4gICAgY29uc3QgaXNJblJlY3RhbmdsZSA9IHBvaW50WzBdID49IHJlY3RYICYmIHBvaW50WzBdIDw9IHJlY3RYICsgd2lkdGggJiYgcG9pbnRbMV0gPj0gcmVjdFkgJiYgcG9pbnRbMV0gPD0gcmVjdFkgKyBoZWlnaHQ7XG4gICAgY29uc3QgaGFuZGxlTGVmdFRvcCA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICYmXG4gICAgICAgIHBvaW50WzBdIDw9IHJlY3RYICsgcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzFdID49IHJlY3RZICYmXG4gICAgICAgIHBvaW50WzFdIDw9IHJlY3RZICsgcmFkaXVzICYmXG4gICAgICAgIE1hdGguaHlwb3QocG9pbnRbMF0gLSAocmVjdFggKyByYWRpdXMpLCBwb2ludFsxXSAtIChyZWN0WSArIHJhZGl1cykpID4gcmFkaXVzO1xuICAgIGNvbnN0IGhhbmRsZUxlZnRCb3R0b20gPVxuICAgICAgICBwb2ludFswXSA+PSByZWN0WCAmJlxuICAgICAgICBwb2ludFswXSA8PSByZWN0WCArIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSArIGhlaWdodCAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIGhlaWdodCAtIHJhZGl1cyAmJlxuICAgICAgICBNYXRoLmh5cG90KHBvaW50WzBdIC0gKHJlY3RYICsgcmFkaXVzKSwgcG9pbnRbMV0gLSAocmVjdFkgKyBoZWlnaHQgLSByYWRpdXMpKSA+IHJhZGl1cztcbiAgICBjb25zdCBoYW5kbGVSaWdodFRvcCA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICsgd2lkdGggLSByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMF0gPD0gcmVjdFggKyB3aWR0aCAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIHJhZGl1cyAmJlxuICAgICAgICBNYXRoLmh5cG90KHBvaW50WzBdIC0gKHJlY3RYICsgd2lkdGggLSByYWRpdXMpLCBwb2ludFsxXSAtIChyZWN0WSArIHJhZGl1cykpID4gcmFkaXVzO1xuICAgIGNvbnN0IGhhbmRsZVJpZ2h0Qm90dG9tID1cbiAgICAgICAgcG9pbnRbMF0gPj0gcmVjdFggKyB3aWR0aCAtIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFswXSA8PSByZWN0WCArIHdpZHRoICYmXG4gICAgICAgIHBvaW50WzFdID49IHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzFdIDw9IHJlY3RZICsgaGVpZ2h0ICYmXG4gICAgICAgIE1hdGguaHlwb3QocG9pbnRbMF0gLSAocmVjdFggKyB3aWR0aCAtIHJhZGl1cyksIHBvaW50WzFdIC0gKHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzKSkgPiByYWRpdXM7XG4gICAgY29uc3QgaXNJbkNvcm5lciA9IGhhbmRsZUxlZnRUb3AgfHwgaGFuZGxlTGVmdEJvdHRvbSB8fCBoYW5kbGVSaWdodFRvcCB8fCBoYW5kbGVSaWdodEJvdHRvbTtcblxuICAgIHJldHVybiBpc0luUmVjdGFuZ2xlICYmICFpc0luQ29ybmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGRvd25TY2FsZSA9IChudW1iZXI6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiBOdW1iZXIobnVtYmVyLnRvRml4ZWQoMikpO1xufTtcblxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vbmljaG9sYXN3bWluL2MyNjYxZWIxMWNhZDU2NzFkODE2XG5leHBvcnQgY29uc3QgY2F0bXVsbFJvbUZpdHRpbmcgPSBmdW5jdGlvbihwb2ludHM6IFBvaW50W10pIHtcbiAgICBjb25zdCBhbHBoYSA9IDAuNTtcbiAgICBsZXQgcDAsIHAxLCBwMiwgcDMsIGJwMSwgYnAyLCBkMSwgZDIsIGQzLCBBLCBCLCBOLCBNO1xuICAgIHZhciBkM3Bvd0EsIGQycG93QSwgZDNwb3cyQSwgZDJwb3cyQSwgZDFwb3cyQSwgZDFwb3dBO1xuICAgIGNvbnN0IHJlc3VsdDogUG9pbnRbXSA9IFtdO1xuICAgIHJlc3VsdC5wdXNoKFtNYXRoLnJvdW5kKHBvaW50c1swXVswXSksIE1hdGgucm91bmQocG9pbnRzWzBdWzFdKV0pO1xuICAgIHZhciBsZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIHAwID0gaSA9PSAwID8gcG9pbnRzWzBdIDogcG9pbnRzW2kgLSAxXTtcbiAgICAgICAgcDEgPSBwb2ludHNbaV07XG4gICAgICAgIHAyID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgcDMgPSBpICsgMiA8IGxlbmd0aCA/IHBvaW50c1tpICsgMl0gOiBwMjtcblxuICAgICAgICBkMSA9IE1hdGguc3FydChNYXRoLnBvdyhwMFswXSAtIHAxWzBdLCAyKSArIE1hdGgucG93KHAwWzFdIC0gcDFbMV0sIDIpKTtcbiAgICAgICAgZDIgPSBNYXRoLnNxcnQoTWF0aC5wb3cocDFbMF0gLSBwMlswXSwgMikgKyBNYXRoLnBvdyhwMVsxXSAtIHAyWzFdLCAyKSk7XG4gICAgICAgIGQzID0gTWF0aC5zcXJ0KE1hdGgucG93KHAyWzBdIC0gcDNbMF0sIDIpICsgTWF0aC5wb3cocDJbMV0gLSBwM1sxXSwgMikpO1xuXG4gICAgICAgIC8vIENhdG11bGwtUm9tIHRvIEN1YmljIEJlemllciBjb252ZXJzaW9uIG1hdHJpeFxuICAgICAgICAvLyBBID0gMmQxXjJhICsgM2QxXmEgKiBkMl5hICsgZDNeMmFcbiAgICAgICAgLy8gQiA9IDJkM14yYSArIDNkM15hICogZDJeYSArIGQyXjJhXG4gICAgICAgIC8vIFsgICAwICAgICAgICAgICAgIDEgICAgICAgICAgICAwICAgICAgICAgIDAgICAgICAgICAgXVxuICAgICAgICAvLyBbICAgLWQyXjJhIC9OICAgICBBL04gICAgICAgICAgZDFeMmEgL04gICAwICAgICAgICAgIF1cbiAgICAgICAgLy8gWyAgIDAgICAgICAgICAgICAgZDNeMmEgL00gICAgIEIvTSAgICAgICAgLWQyXjJhIC9NICBdXG4gICAgICAgIC8vIFsgICAwICAgICAgICAgICAgIDAgICAgICAgICAgICAxICAgICAgICAgIDAgICAgICAgICAgXVxuXG4gICAgICAgIGQzcG93QSA9IE1hdGgucG93KGQzLCBhbHBoYSk7XG4gICAgICAgIGQzcG93MkEgPSBNYXRoLnBvdyhkMywgMiAqIGFscGhhKTtcbiAgICAgICAgZDJwb3dBID0gTWF0aC5wb3coZDIsIGFscGhhKTtcbiAgICAgICAgZDJwb3cyQSA9IE1hdGgucG93KGQyLCAyICogYWxwaGEpO1xuICAgICAgICBkMXBvd0EgPSBNYXRoLnBvdyhkMSwgYWxwaGEpO1xuICAgICAgICBkMXBvdzJBID0gTWF0aC5wb3coZDEsIDIgKiBhbHBoYSk7XG5cbiAgICAgICAgQSA9IDIgKiBkMXBvdzJBICsgMyAqIGQxcG93QSAqIGQycG93QSArIGQycG93MkE7XG4gICAgICAgIEIgPSAyICogZDNwb3cyQSArIDMgKiBkM3Bvd0EgKiBkMnBvd0EgKyBkMnBvdzJBO1xuICAgICAgICBOID0gMyAqIGQxcG93QSAqIChkMXBvd0EgKyBkMnBvd0EpO1xuICAgICAgICBpZiAoTiA+IDApIHtcbiAgICAgICAgICAgIE4gPSAxIC8gTjtcbiAgICAgICAgfVxuICAgICAgICBNID0gMyAqIGQzcG93QSAqIChkM3Bvd0EgKyBkMnBvd0EpO1xuICAgICAgICBpZiAoTSA+IDApIHtcbiAgICAgICAgICAgIE0gPSAxIC8gTTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJwMSA9IFsoLWQycG93MkEgKiBwMFswXSArIEEgKiBwMVswXSArIGQxcG93MkEgKiBwMlswXSkgKiBOLCAoLWQycG93MkEgKiBwMFsxXSArIEEgKiBwMVsxXSArIGQxcG93MkEgKiBwMlsxXSkgKiBOXTtcbiAgICAgICAgYnAyID0gWyhkM3BvdzJBICogcDFbMF0gKyBCICogcDJbMF0gLSBkMnBvdzJBICogcDNbMF0pICogTSwgKGQzcG93MkEgKiBwMVsxXSArIEIgKiBwMlsxXSAtIGQycG93MkEgKiBwM1sxXSkgKiBNXTtcblxuICAgICAgICBpZiAoYnAxWzBdID09IDAgJiYgYnAxWzFdID09IDApIHtcbiAgICAgICAgICAgIGJwMSA9IHAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChicDJbMF0gPT0gMCAmJiBicDJbMV0gPT0gMCkge1xuICAgICAgICAgICAgYnAyID0gcDI7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQucHVzaChicDEgYXMgUG9pbnQsIGJwMiBhcyBQb2ludCwgcDIgYXMgUG9pbnQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuIl19
@@ -2,6 +2,9 @@ import { BOARD_TO_MOVING_ELEMENT } from './weak-maps';
2
2
  export const getMovingElements = (board) => {
3
3
  return BOARD_TO_MOVING_ELEMENT.get(board) || [];
4
4
  };
5
+ export const isMovingElements = (board) => {
6
+ return (BOARD_TO_MOVING_ELEMENT.get(board) || []).length > 0;
7
+ };
5
8
  export const addMovingElements = (board, elements) => {
6
9
  const movingElements = getMovingElements(board);
7
10
  const newElements = elements.filter(item => !movingElements.find(movingElement => movingElement.key === item.key));
@@ -13,4 +16,4 @@ export const removeMovingElements = (board) => {
13
16
  export const cacheMovingElements = (board, elements) => {
14
17
  BOARD_TO_MOVING_ELEMENT.set(board, elements);
15
18
  };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92aW5nLWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9tb3ZpbmctZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDbkQsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUF3QixFQUFFLEVBQUU7SUFDN0UsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkgsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxjQUFjLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3RELHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBd0IsRUFBRSxFQUFFO0lBQy9FLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDakQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCT0FSRF9UT19NT1ZJTkdfRUxFTUVOVCB9IGZyb20gJy4vd2Vhay1tYXBzJztcblxuZXhwb3J0IGNvbnN0IGdldE1vdmluZ0VsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIEJPQVJEX1RPX01PVklOR19FTEVNRU5ULmdldChib2FyZCkgfHwgW107XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTW92aW5nRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IG1vdmluZ0VsZW1lbnRzID0gZ2V0TW92aW5nRWxlbWVudHMoYm9hcmQpO1xuICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gZWxlbWVudHMuZmlsdGVyKGl0ZW0gPT4gIW1vdmluZ0VsZW1lbnRzLmZpbmQobW92aW5nRWxlbWVudCA9PiBtb3ZpbmdFbGVtZW50LmtleSA9PT0gaXRlbS5rZXkpKTtcbiAgICBjYWNoZU1vdmluZ0VsZW1lbnRzKGJvYXJkLCBbLi4ubW92aW5nRWxlbWVudHMsIC4uLm5ld0VsZW1lbnRzXSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTW92aW5nRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBCT0FSRF9UT19NT1ZJTkdfRUxFTUVOVC5kZWxldGUoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhY2hlTW92aW5nRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIEJPQVJEX1RPX01PVklOR19FTEVNRU5ULnNldChib2FyZCwgZWxlbWVudHMpO1xufTtcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92aW5nLWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9tb3ZpbmctZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDbkQsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2xELE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBd0IsRUFBRSxFQUFFO0lBQzdFLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25ILG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN0RCx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQXdCLEVBQUUsRUFBRTtJQUMvRSx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQk9BUkRfVE9fTU9WSU5HX0VMRU1FTlQgfSBmcm9tICcuL3dlYWstbWFwcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRNb3ZpbmdFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiBCT0FSRF9UT19NT1ZJTkdfRUxFTUVOVC5nZXQoYm9hcmQpIHx8IFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzTW92aW5nRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gKEJPQVJEX1RPX01PVklOR19FTEVNRU5ULmdldChib2FyZCkgfHwgW10pLmxlbmd0aCA+IDA7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTW92aW5nRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IG1vdmluZ0VsZW1lbnRzID0gZ2V0TW92aW5nRWxlbWVudHMoYm9hcmQpO1xuICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gZWxlbWVudHMuZmlsdGVyKGl0ZW0gPT4gIW1vdmluZ0VsZW1lbnRzLmZpbmQobW92aW5nRWxlbWVudCA9PiBtb3ZpbmdFbGVtZW50LmtleSA9PT0gaXRlbS5rZXkpKTtcbiAgICBjYWNoZU1vdmluZ0VsZW1lbnRzKGJvYXJkLCBbLi4ubW92aW5nRWxlbWVudHMsIC4uLm5ld0VsZW1lbnRzXSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTW92aW5nRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBCT0FSRF9UT19NT1ZJTkdfRUxFTUVOVC5kZWxldGUoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhY2hlTW92aW5nRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIEJPQVJEX1RPX01PVklOR19FTEVNRU5ULnNldChib2FyZCwgZWxlbWVudHMpO1xufTtcbiJdfQ==
@@ -53,13 +53,29 @@ export const getSelectedElements = (board) => {
53
53
  return BOARD_TO_SELECTED_ELEMENT.get(board) || [];
54
54
  };
55
55
  export const addSelectedElement = (board, element) => {
56
+ let elements = [];
57
+ if (Array.isArray(element)) {
58
+ elements.push(...element);
59
+ }
60
+ else {
61
+ elements.push(element);
62
+ }
56
63
  const selectedElements = getSelectedElements(board);
57
- cacheSelectedElements(board, [...selectedElements, element]);
64
+ cacheSelectedElements(board, [...selectedElements, ...elements]);
58
65
  };
59
66
  export const removeSelectedElement = (board, element) => {
60
67
  const selectedElements = getSelectedElements(board);
61
68
  if (selectedElements.includes(element)) {
62
- const newSelectedElements = selectedElements.filter(value => value !== element);
69
+ const targetElements = [];
70
+ if (board.isRecursion(element)) {
71
+ depthFirstRecursion(element, node => {
72
+ targetElements.push(node);
73
+ }, node => board.isRecursion(node));
74
+ }
75
+ else {
76
+ targetElements.push(element);
77
+ }
78
+ const newSelectedElements = selectedElements.filter(value => !targetElements.includes(value));
63
79
  cacheSelectedElements(board, newSelectedElements);
64
80
  }
65
81
  };
@@ -79,4 +95,4 @@ export const temporaryDisableSelection = (board) => {
79
95
  board.setPluginOptions(PlaitPluginKey.withSelection, { ...currentOptions });
80
96
  }, 0);
81
97
  };
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL3NlbGVjdGVkLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BELE9BQU8sRUFBcUIsY0FBYyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVyRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUNyQyxLQUFpQixFQUNqQixTQUFxQixFQUNyQixRQUE0QyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQ3hELEVBQUU7SUFDQSxNQUFNLFlBQVksR0FBRyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQXNCLENBQUM7SUFDL0QsTUFBTSxvQkFBb0IsR0FBbUIsRUFBRSxDQUFDO0lBQ2hELElBQUksQ0FBQyxZQUFZLEVBQUU7UUFDZixPQUFPLEVBQUUsQ0FBQztLQUNiO0lBQ0QsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RCxJQUFJLFdBQVcsRUFBRTtRQUNiLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNFLElBQUksVUFBVSxFQUFFO1lBQ1osT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3ZCO2FBQU07WUFDSCxPQUFPLEVBQUUsQ0FBQztTQUNiO0tBQ0o7SUFDRCxtQkFBbUIsQ0FDZixLQUFLLEVBQ0wsSUFBSSxDQUFDLEVBQUU7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QUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQzFFLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsS0FBd0IsRUFBRSxFQUFFO0lBQ2xFLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUUsS0FBSyxDQUFDLGdCQUFnQixDQUFvQixjQUFjLENBQUMsYUFBYSxFQUFFO1FBQ3BFLGdCQUFnQixFQUFFLElBQUk7S0FDekIsQ0FBQyxDQUFDO0lBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNaLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBb0IsY0FBYyxDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNuRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBBbmNlc3RvciB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBkZXB0aEZpcnN0UmVjdXJzaW9uLCBnZXRJc1JlY3Vyc2lvbkZ1bmMgfSBmcm9tICcuL3RyZWUnO1xuaW1wb3J0IHsgQk9BUkRfVE9fU0VMRUNURURfRUxFTUVOVCB9IGZyb20gJy4vd2Vhay1tYXBzJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgUGxhaXRPcHRpb25zQm9hcmQsIFBsYWl0UGx1Z2luS2V5LCBXaXRoUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuXG5leHBvcnQgY29uc3QgZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbiA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBzZWxlY3Rpb24/OiBTZWxlY3Rpb24sXG4gICAgbWF0Y2g6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlXG4pID0+IHtcbiAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSBzZWxlY3Rpb24gfHwgYm9hcmQuc2VsZWN0aW9uIGFzIFNlbGVjdGlvbjtcbiAgICBjb25zdCByZWN0YW5nbGVIaXRFbGVtZW50czogUGxhaXRFbGVtZW50W10gPSBbXTtcbiAgICBpZiAoIW5ld1NlbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gU2VsZWN0aW9uLmlzQ29sbGFwc2VkKG5ld1NlbGVjdGlvbik7XG4gICAgaWYgKGlzQ29sbGFwc2VkKSB7XG4gICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgbmV3U2VsZWN0aW9uLmFuY2hvciwgbWF0Y2gpO1xuICAgICAgICBpZiAoaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFtoaXRFbGVtZW50XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uPEFuY2VzdG9yPihcbiAgICAgICAgYm9hcmQsXG4gICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzQm9hcmQobm9kZSkgJiYgbWF0Y2gobm9kZSkgJiYgYm9hcmQuaXNSZWN0YW5nbGVIaXQobm9kZSwgbmV3U2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIHJlY3RhbmdsZUhpdEVsZW1lbnRzLnB1c2gobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldElzUmVjdXJzaW9uRnVuYyhib2FyZCksXG4gICAgICAgIHRydWVcbiAgICApO1xuICAgIHJldHVybiByZWN0YW5nbGVIaXRFbGVtZW50cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRFbGVtZW50QnlQb2ludCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBwb2ludDogUG9pbnQsXG4gICAgbWF0Y2g6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlXG4pOiB1bmRlZmluZWQgfCBQbGFpdEVsZW1lbnQgPT4ge1xuICAgIGxldCByZWN0YW5nbGVIaXRFbGVtZW50OiBQbGFpdEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGhpdEVsZW1lbnQ6IFBsYWl0RWxlbWVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uPEFuY2VzdG9yPihcbiAgICAgICAgYm9hcmQsXG4gICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0JvYXJkKG5vZGUpIHx8ICFtYXRjaChub2RlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChib2FyZC5pc0hpdChub2RlLCBwb2ludCkpIHtcbiAgICAgICAgICAgICAgICBoaXRFbGVtZW50ID0gbm9kZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJlY3RhbmdsZUhpdEVsZW1lbnQgJiYgYm9hcmQuaXNSZWN0YW5nbGVIaXQobm9kZSwgeyBhbmNob3I6IHBvaW50LCBmb2N1czogcG9pbnQgfSkpIHtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGVIaXRFbGVtZW50ID0gbm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SXNSZWN1cnNpb25GdW5jKGJvYXJkKSxcbiAgICAgICAgdHJ1ZVxuICAgICk7XG4gICAgcmV0dXJuIGhpdEVsZW1lbnQgfHwgcmVjdGFuZ2xlSGl0RWxlbWVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWNoZVNlbGVjdGVkRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdGVkRWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgQk9BUkRfVE9fU0VMRUNURURfRUxFTUVOVC5zZXQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gQk9BUkRfVE9fU0VMRUNURURfRUxFTUVOVC5nZXQoYm9hcmQpIHx8IFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFNlbGVjdGVkRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLnNlbGVjdGVkRWxlbWVudHMsIGVsZW1lbnRdKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZEVsZW1lbnRzID0gc2VsZWN0ZWRFbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gdmFsdWUgIT09IGVsZW1lbnQpO1xuICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhclNlbGVjdGVkRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgW10pO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VsZWN0ZWRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgcmV0dXJuICEhc2VsZWN0ZWRFbGVtZW50cy5maW5kKHZhbHVlID0+IHZhbHVlID09PSBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCB0ZW1wb3JhcnlEaXNhYmxlU2VsZWN0aW9uID0gKGJvYXJkOiBQbGFpdE9wdGlvbnNCb2FyZCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gYm9hcmQuZ2V0UGx1Z2luT3B0aW9ucyhQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICBib2FyZC5zZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uLCB7XG4gICAgICAgIGlzRGlzYWJsZWRTZWxlY3Q6IHRydWVcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgYm9hcmQuc2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbiwgeyAuLi5jdXJyZW50T3B0aW9ucyB9KTtcbiAgICB9LCAwKTtcbn07XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL3NlbGVjdGVkLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BELE9BQU8sRUFBcUIsY0FBYyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVyRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUNyQyxLQUFpQixFQUNqQixTQUFxQixFQUNyQixRQUE0QyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQ3hELEVBQUU7SUFDQSxNQUFNLFlBQVksR0FBRyxTQUFTLElBQUssS0FBSyxDQUFDLFNBQXVCLENBQUM7SUFDakUsTUFBTSxvQkFBb0IsR0FBbUIsRUFBRSxDQUFDO0lBQ2hELElBQUksQ0FBQyxZQUFZLEVBQUU7UUFDZixPQUFPLEVBQUUsQ0FBQztLQUNiO0lBQ0QsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RCxJQUFJLFdBQVcsRUFBRTtRQUNiLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNFLElBQUksVUFBVSxFQUFFO1lBQ1osT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3ZCO2FBQU07WUFDSCxPQUFPLEVBQUUsQ0FBQztTQUNiO0tBQ0o7SUFDRCxtQkFBbUIsQ0FDZixLQUFLLEVBQ0wsSUFBSSxDQUFDLEVBQUU7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUU7WUFDdEYsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQyxFQUNELGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUN6QixJQUFJLENBQ1AsQ0FBQztJQUNGLE9BQU8sb0JBQW9CLENBQUM7QUFDaEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FDaEMsS0FBaUIsRUFDakIsS0FBWSxFQUNaLFFBQTRDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFDOUIsRUFBRTtJQUMxQixJQUFJLG1CQUFtQixHQUE2QixTQUFTLENBQUM7SUFDOUQsSUFBSSxVQUFVLEdBQTZCLFNBQVMsQ0FBQztJQUNyRCxtQkFBbUIsQ0FDZixLQUFLLEVBQ0wsSUFBSSxDQUFDLEVBQUU7UUFDSCxJQUFJLFVBQVUsRUFBRTtZQUNaLE9BQU87U0FDVjtRQUNELElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQzFCLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDbEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNyRixtQkFBbUIsR0FBRyxJQUFJLENBQUM7U0FDOUI7SUFDTCxDQUFDLEVBQ0Qsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQ3pCLElBQUksQ0FDUCxDQUFDO0lBQ0YsT0FBTyxVQUFVLElBQUksbUJBQW1CLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLGdCQUFnQyxFQUFFLEVBQUU7SUFDekYseUJBQXlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3JELE9BQU8seUJBQXlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBc0MsRUFBRSxFQUFFO0lBQzVGLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDeEIsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0tBQzdCO1NBQU07UUFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzFCO0lBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNyRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQzlFLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDcEMsTUFBTSxjQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUMxQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUIsbUJBQW1CLENBQ2YsT0FBTyxFQUNQLElBQUksQ0FBQyxFQUFFO2dCQUNILGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsQ0FBQyxFQUNELElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FDbEMsQ0FBQztTQUNMO2FBQU07WUFDSCxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsTUFBTSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5RixxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztLQUNyRDtBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3RELHFCQUFxQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQzFFLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsS0FBd0IsRUFBRSxFQUFFO0lBQ2xFLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUUsS0FBSyxDQUFDLGdCQUFnQixDQUFvQixjQUFjLENBQUMsYUFBYSxFQUFFO1FBQ3BFLGdCQUFnQixFQUFFLElBQUk7S0FDekIsQ0FBQyxDQUFDO0lBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNaLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBb0IsY0FBYyxDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNuRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBBbmNlc3RvciB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBkZXB0aEZpcnN0UmVjdXJzaW9uLCBnZXRJc1JlY3Vyc2lvbkZ1bmMgfSBmcm9tICcuL3RyZWUnO1xuaW1wb3J0IHsgQk9BUkRfVE9fU0VMRUNURURfRUxFTUVOVCB9IGZyb20gJy4vd2Vhay1tYXBzJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgUGxhaXRPcHRpb25zQm9hcmQsIFBsYWl0UGx1Z2luS2V5LCBXaXRoUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuXG5leHBvcnQgY29uc3QgZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbiA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBzZWxlY3Rpb24/OiBTZWxlY3Rpb24sXG4gICAgbWF0Y2g6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlXG4pID0+IHtcbiAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSBzZWxlY3Rpb24gfHwgKGJvYXJkLnNlbGVjdGlvbiBhcyBTZWxlY3Rpb24pO1xuICAgIGNvbnN0IHJlY3RhbmdsZUhpdEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGlmICghbmV3U2VsZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgaXNDb2xsYXBzZWQgPSBTZWxlY3Rpb24uaXNDb2xsYXBzZWQobmV3U2VsZWN0aW9uKTtcbiAgICBpZiAoaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdEVsZW1lbnRCeVBvaW50KGJvYXJkLCBuZXdTZWxlY3Rpb24uYW5jaG9yLCBtYXRjaCk7XG4gICAgICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW2hpdEVsZW1lbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRlcHRoRmlyc3RSZWN1cnNpb248QW5jZXN0b3I+KFxuICAgICAgICBib2FyZCxcbiAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaXNCb2FyZChub2RlKSAmJiBtYXRjaChub2RlKSAmJiBib2FyZC5pc1JlY3RhbmdsZUhpdChub2RlLCBuZXdTZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgcmVjdGFuZ2xlSGl0RWxlbWVudHMucHVzaChub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SXNSZWN1cnNpb25GdW5jKGJvYXJkKSxcbiAgICAgICAgdHJ1ZVxuICAgICk7XG4gICAgcmV0dXJuIHJlY3RhbmdsZUhpdEVsZW1lbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdEVsZW1lbnRCeVBvaW50ID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHBvaW50OiBQb2ludCxcbiAgICBtYXRjaDogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcbik6IHVuZGVmaW5lZCB8IFBsYWl0RWxlbWVudCA9PiB7XG4gICAgbGV0IHJlY3RhbmdsZUhpdEVsZW1lbnQ6IFBsYWl0RWxlbWVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgaGl0RWxlbWVudDogUGxhaXRFbGVtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGRlcHRoRmlyc3RSZWN1cnNpb248QW5jZXN0b3I+KFxuICAgICAgICBib2FyZCxcbiAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICBpZiAoaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChQbGFpdEJvYXJkLmlzQm9hcmQobm9kZSkgfHwgIW1hdGNoKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJvYXJkLmlzSGl0KG5vZGUsIHBvaW50KSkge1xuICAgICAgICAgICAgICAgIGhpdEVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcmVjdGFuZ2xlSGl0RWxlbWVudCAmJiBib2FyZC5pc1JlY3RhbmdsZUhpdChub2RlLCB7IGFuY2hvcjogcG9pbnQsIGZvY3VzOiBwb2ludCB9KSkge1xuICAgICAgICAgICAgICAgIHJlY3RhbmdsZUhpdEVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXRJc1JlY3Vyc2lvbkZ1bmMoYm9hcmQpLFxuICAgICAgICB0cnVlXG4gICAgKTtcbiAgICByZXR1cm4gaGl0RWxlbWVudCB8fCByZWN0YW5nbGVIaXRFbGVtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGNhY2hlU2VsZWN0ZWRFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0ZWRFbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBCT0FSRF9UT19TRUxFQ1RFRF9FTEVNRU5ULnNldChib2FyZCwgc2VsZWN0ZWRFbGVtZW50cyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiBCT0FSRF9UT19TRUxFQ1RFRF9FTEVNRU5ULmdldChib2FyZCkgfHwgW107XG59O1xuXG5leHBvcnQgY29uc3QgYWRkU2VsZWN0ZWRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQgfCBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGxldCBlbGVtZW50cyA9IFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQpKSB7XG4gICAgICAgIGVsZW1lbnRzLnB1c2goLi4uZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLnNlbGVjdGVkRWxlbWVudHMsIC4uLmVsZW1lbnRzXSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgaWYgKHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudHM6IFBsYWl0RWxlbWVudFtdID0gW107XG4gICAgICAgIGlmIChib2FyZC5pc1JlY3Vyc2lvbihlbGVtZW50KSkge1xuICAgICAgICAgICAgZGVwdGhGaXJzdFJlY3Vyc2lvbihcbiAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbm9kZSA9PiBib2FyZC5pc1JlY3Vyc2lvbihub2RlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKHZhbHVlID0+ICF0YXJnZXRFbGVtZW50cy5pbmNsdWRlcyh2YWx1ZSkpO1xuICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhclNlbGVjdGVkRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgW10pO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VsZWN0ZWRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgcmV0dXJuICEhc2VsZWN0ZWRFbGVtZW50cy5maW5kKHZhbHVlID0+IHZhbHVlID09PSBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCB0ZW1wb3JhcnlEaXNhYmxlU2VsZWN0aW9uID0gKGJvYXJkOiBQbGFpdE9wdGlvbnNCb2FyZCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gYm9hcmQuZ2V0UGx1Z2luT3B0aW9ucyhQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICBib2FyZC5zZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uLCB7XG4gICAgICAgIGlzRGlzYWJsZWRTZWxlY3Q6IHRydWVcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgYm9hcmQuc2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbiwgeyAuLi5jdXJyZW50T3B0aW9ucyB9KTtcbiAgICB9LCAwKTtcbn07XG4iXX0=
@@ -17,7 +17,7 @@ function isElementNode(node) {
17
17
  function loadImage(src) {
18
18
  return new Promise((resolve, reject) => {
19
19
  const img = new Image();
20
- img.crossOrigin = 'anonymous';
20
+ img.crossOrigin = 'Anonymous';
21
21
  img.onload = () => resolve(img);
22
22
  img.onerror = () => reject(new Error('Failed to load image'));
23
23
  img.src = src;
@@ -132,7 +132,7 @@ async function batchConvertImage(sourceNode, cloneNode) {
132
132
  * @param options parameter configuration
133
133
  * @returns clone svg element
134
134
  */
135
- function cloneSvg(board, elements, rectangle, options) {
135
+ async function cloneSvg(board, elements, rectangle, options) {
136
136
  const { width, height, x, y } = rectangle;
137
137
  const { padding = 4, inlineStyleClassNames } = options;
138
138
  const sourceSvg = PlaitBoard.getHost(board);
@@ -145,12 +145,12 @@ function cloneSvg(board, elements, rectangle, options) {
145
145
  cloneSvgElement.setAttribute('width', `${width}`);
146
146
  cloneSvgElement.setAttribute('height', `${height}`);
147
147
  cloneSvgElement.setAttribute('viewBox', [x - padding, y - padding, width + 2 * padding, height + 2 * padding].join(','));
148
- selectedGElements.forEach((child, i) => {
148
+ await Promise.all(selectedGElements.map(async (child, i) => {
149
149
  const cloneChild = child.cloneNode(true);
150
150
  batchCloneCSSStyle(child, cloneChild, inlineStyleClassNames);
151
- batchConvertImage(child, cloneChild);
151
+ await batchConvertImage(child, cloneChild);
152
152
  newHostElement.appendChild(cloneChild);
153
- });
153
+ }));
154
154
  cloneSvgElement.appendChild(newHostElement);
155
155
  return cloneSvgElement;
156
156
  }
@@ -196,4 +196,4 @@ export function downloadImage(url, name) {
196
196
  a.click();
197
197
  a.remove();
198
198
  }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8taW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy90by1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRSxNQUFNLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQztBQVloRDs7OztHQUlHO0FBQ0gsU0FBUyxhQUFhLENBQUMsSUFBVTtJQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLFNBQVMsR0FBRyxhQUFhO0lBQzFFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsTUFB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QWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsT0FBTyxTQUFTLENBQUM7S0FDcEI7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDbkQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZmluZEVsZW1lbnRzLCBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgSU1BR0VfQ09OVEFJTkVSID0gJ3BsYWl0LWltYWdlLWNvbnRhaW5lcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9JbWFnZU9wdGlvbnMge1xuICAgIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W107XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByYXRpbz86IG51bWJlcjtcbiAgICBwYWRkaW5nPzogbnVtYmVyO1xuICAgIGZpbGxTdHlsZT86IHN0cmluZztcbiAgICAvLyDpgJflj7fnsbvlkI3liJfooajjgIIg6K+l5YiX6KGo5b+F6aG76YeH55SoIGNsYXNzMSxjbGFzczIsLi4uIOeahOW9ouW8j+OAglxuICAgIGlubGluZVN0eWxlQ2xhc3NOYW1lcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJcyBlbGVtZW50IG5vZGVcbiAqIEBwYXJhbSBub2RlXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBpc0VsZW1lbnROb2RlKG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREU7XG59XG5cbi8qKlxuICogbG9hZCBpbWFnZSByZXNvdXJjZXNcbiAqIEBwYXJhbSB1cmwgaW1hZ2UgdXJsXG4gKiBAcmV0dXJucyBpbWFnZSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIGxvYWRJbWFnZShzcmM6IHN0cmluZyk6IFByb21pc2U8SFRNTEltYWdlRWxlbWVudD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcbiAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1nKTtcbiAgICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiByZWplY3QobmV3IEVycm9yKCdGYWlsZWQgdG8gbG9hZCBpbWFnZScpKTtcbiAgICAgICAgaW1nLnNyYyA9IHNyYztcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBjcmVhdGUgYW5kIHJldHVybiBjYW52YXMgYW5kIGNvbnRleHRcbiAqIEBwYXJhbSB3aWR0aCBjYW52YXMgd2lkdGhcbiAqIEBwYXJhbSBoZWlnaHQgY2FudmFzIGhlaWdodFxuICogQHBhcmFtIGZpbGxTdHlsZSBmaWxsIHN0eWxlXG4gKiBAcmV0dXJucyBjYW52YXMgYW5kIGNvbnRleHRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FudmFzKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBmaWxsU3R5bGUgPSAndHJhbnNwYXJlbnQnKSB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykhO1xuXG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICBjYW52YXMuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgY2FudmFzLnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgY3R4LnN0cm9rZVN0eWxlID0gJyNmZmZmZmYnO1xuICAgIGN0eC5maWxsU3R5bGUgPSBmaWxsU3R5bGU7XG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FudmFzLFxuICAgICAgICBjdHhcbiAgICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgaW1hZ2UgdG8gYmFzZTY0XG4gKiBAcGFyYW0gdXJsIGltYWdlIHVybFxuICogQHJldHVybnMgaW1hZ2UgYmFzZTY0XG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRJbWFnZVRvQmFzZTY0KHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxvYWRJbWFnZSh1cmwpLnRoZW4oaW1nID0+IHtcbiAgICAgICAgY29uc3QgeyBjYW52YXMsIGN0eCB9ID0gY3JlYXRlQ2FudmFzKGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG4gICAgICAgIGN0eD8uZHJhd0ltYWdlKGltZywgMCwgMCk7XG4gICAgICAgIHJldHVybiBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBjbG9uZSBub2RlIHN0eWxlXG4gKiBAcGFyYW0gbmF0aXZlTm9kZSBzb3VyY2Ugbm9kZVxuICogQHBhcmFtIGNsb25lZE5vZGUgY2xvbmUgbm9kZVxuICovXG5mdW5jdGlvbiBjbG9uZUNTU1N0eWxlPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4obmF0aXZlTm9kZTogVCwgY2xvbmVkTm9kZTogVCkge1xuICAgIGNvbnN0IHRhcmdldFN0eWxlID0gY2xvbmVkTm9kZT8uc3R5bGU7XG4gICAgaWYgKCF0YXJnZXRTdHlsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuYXRpdmVOb2RlKTtcbiAgICBpZiAoc291cmNlU3R5bGUuY3NzVGV4dCkge1xuICAgICAgICB0YXJnZXRTdHlsZS5jc3NUZXh0ID0gc291cmNlU3R5bGUuY3NzVGV4dDtcbiAgICAgICAgdGFyZ2V0U3R5bGUudHJhbnNmb3JtT3JpZ2luID0gc291cmNlU3R5bGUudHJhbnNmb3JtT3JpZ2luO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFycmF5LmZyb20oc291cmNlU3R5bGUpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzb3VyY2VTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xuICAgICAgICAgICAgdGFyZ2V0U3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsdWUsIHNvdXJjZVN0eWxlLmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogYmF0Y2ggY2xvbmUgdGFyZ2V0IHN0eWxlc1xuICogQHBhcmFtIHNvdXJjZU5vZGVcbiAqIEBwYXJhbSBjbG9uZU5vZGVcbiAqIEBwYXJhbSBpbmxpbmVTdHlsZUNsYXNzTmFtZXNcbiAqL1xuZnVuY3Rpb24gYmF0Y2hDbG9uZUNTU1N0eWxlKHNvdXJjZU5vZGU6IFNWR0dFbGVtZW50LCBjbG9uZU5vZGU6IFNWR0dFbGVtZW50LCBpbmxpbmVTdHlsZUNsYXNzTmFtZXM6IHN0cmluZykge1xuICAgIGlmIChpbmxpbmVTdHlsZUNsYXNzTmFtZXMpIHtcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lcyA9IGlubGluZVN0eWxlQ2xhc3NOYW1lcyArIGAsLiR7SU1BR0VfQ09OVEFJTkVSfWA7XG4gICAgICAgIGNvbnN0IHNvdXJjZU5vZGVzID0gQXJyYXkuZnJvbShzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoY2xhc3NOYW1lcykpO1xuICAgICAgICBjb25zdCBjbG9uZU5vZGVzID0gQXJyYXkuZnJvbShjbG9uZU5vZGUucXVlcnlTZWxlY3RvckFsbChjbGFzc05hbWVzKSk7XG5cbiAgICAgICAgc291cmNlTm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkRWxlbWVudHMgPSBBcnJheS5mcm9tKG5vZGUucXVlcnlTZWxlY3RvckFsbCgnKicpKS5maWx0ZXIoaXNFbGVtZW50Tm9kZSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lQ2hpbGRFbGVtZW50cyA9IEFycmF5LmZyb20oY2xvbmVOb2Rlc1tpbmRleF0ucXVlcnlTZWxlY3RvckFsbCgnKicpKS5maWx0ZXIoaXNFbGVtZW50Tm9kZSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgICAgIHNvdXJjZU5vZGVzLnB1c2goLi4uY2hpbGRFbGVtZW50cyk7XG4gICAgICAgICAgICBjbG9uZU5vZGVzLnB1c2goLi4uY2xvbmVDaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gcHJvY2Vzc2luZyBzdHlsZXNcbiAgICAgICAgc291cmNlTm9kZXMubWFwKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY2xvbmVDU1NTdHlsZShub2RlIGFzIEhUTUxFbGVtZW50LCBjbG9uZU5vZGVzW2luZGV4XSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBjb252ZXJ0IGltYWdlcyBpbiB0YXJnZXQgbm9kZXMgaW4gYmF0Y2hlc1xuICogQHBhcmFtIHNvdXJjZU5vZGVcbiAqIEBwYXJhbSBjbG9uZU5vZGVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYmF0Y2hDb252ZXJ0SW1hZ2Uoc291cmNlTm9kZTogU1ZHR0VsZW1lbnQsIGNsb25lTm9kZTogU1ZHR0VsZW1lbnQpIHtcbiAgICBjb25zdCBzb3VyY2VJbWFnZU5vZGVzID0gQXJyYXkuZnJvbShzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke0lNQUdFX0NPTlRBSU5FUn1gKSk7XG4gICAgY29uc3QgY2xvbmVJbWFnZU5vZGVzID0gQXJyYXkuZnJvbShjbG9uZU5vZGUucXVlcnlTZWxlY3RvckFsbChgLiR7SU1BR0VfQ09OVEFJTkVSfWApKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgc291cmNlSW1hZ2VOb2Rlcy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVJbWFnZU5vZGUgPSBjbG9uZUltYWdlTm9kZXNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIC8vIHByb2Nlc3NpbmcgaW1hZ2VcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IChjbG9uZUltYWdlTm9kZSBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignaW1nJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gaW1hZ2U/LmdldEF0dHJpYnV0ZSgnc3JjJyk7XG4gICAgICAgICAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVRvQmFzZTY0KHVybCkudGhlbihiYXNlNjRJbWFnZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlPy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGJhc2U2NEltYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICk7XG59XG5cbi8qKlxuICogY2xvbmUgc3ZnIGVsZW1lbnRcbiAqIEBwYXJhbSBib2FyZCBib2FyZFxuICogQHBhcmFtIG9wdGlvbnMgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIGNsb25lIHN2ZyBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIGNsb25lU3ZnKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10sIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBUb0ltYWdlT3B0aW9ucykge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgeCwgeSB9ID0gcmVjdGFuZ2xlO1xuICAgIGNvbnN0IHsgcGFkZGluZyA9IDQsIGlubGluZVN0eWxlQ2xhc3NOYW1lcyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBzb3VyY2VTdmcgPSBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpO1xuICAgIGNvbnN0IHNlbGVjdGVkR0VsZW1lbnRzID0gZWxlbWVudHMubWFwKHZhbHVlID0+IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodmFsdWUpLmcpO1xuICAgIGNvbnN0IGNsb25lU3ZnRWxlbWVudCA9IHNvdXJjZVN2Zy5jbG9uZU5vZGUoKSBhcyBTVkdFbGVtZW50O1xuICAgIGNvbnN0IG5ld0hvc3RFbGVtZW50ID0gUGxhaXRCb2FyZC5nZXRFbGVtZW50SG9zdChib2FyZCkuY2xvbmVOb2RlKCkgYXMgU1ZHR0VsZW1lbnQ7XG5cbiAgICBjbG9uZVN2Z0VsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgY2xvbmVTdmdFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgY2xvbmVTdmdFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7d2lkdGh9YCk7XG4gICAgY2xvbmVTdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7aGVpZ2h0fWApO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCBbeCAtIHBhZGRpbmcsIHkgLSBwYWRkaW5nLCB3aWR0aCArIDIgKiBwYWRkaW5nLCBoZWlnaHQgKyAyICogcGFkZGluZ10uam9pbignLCcpKTtcblxuICAgIHNlbGVjdGVkR0VsZW1lbnRzLmZvckVhY2goKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsb25lQ2hpbGQgPSBjaGlsZC5jbG9uZU5vZGUodHJ1ZSkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGJhdGNoQ2xvbmVDU1NTdHlsZShjaGlsZCwgY2xvbmVDaGlsZCwgaW5saW5lU3R5bGVDbGFzc05hbWVzIGFzIHN0cmluZyk7XG4gICAgICAgIGJhdGNoQ29udmVydEltYWdlKGNoaWxkLCBjbG9uZUNoaWxkKTtcbiAgICAgICAgbmV3SG9zdEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2xvbmVDaGlsZCk7XG4gICAgfSk7XG4gICAgY2xvbmVTdmdFbGVtZW50LmFwcGVuZENoaWxkKG5ld0hvc3RFbGVtZW50KTtcblxuICAgIHJldHVybiBjbG9uZVN2Z0VsZW1lbnQ7XG59XG5cbi8qKlxuICogY3VycmVudCBib2FyZCB0cmFuc2ZlciBwaWN0dXJlc1xuICogQHBhcmFtIGJvYXJkIGJvYXJkXG4gKiBAcGFyYW0gb3B0aW9ucyBwYXJhbWV0ZXIgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgaW1hZ2VzIGluIHRoZSBzcGVjaWZpZWQgZm9ybWF0IGJhc2U2NFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9JbWFnZShib2FyZDogUGxhaXRCb2FyZCwgb3B0aW9uczogVG9JbWFnZU9wdGlvbnMpIHtcbiAgICBpZiAoIWJvYXJkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHMgPSBvcHRpb25zPy5lbGVtZW50cyB8fCBmaW5kRWxlbWVudHMoYm9hcmQsIHsgbWF0Y2g6ICgpID0+IHRydWUsIHJlY3Vyc2lvbjogKCkgPT4gdHJ1ZSB9KTtcbiAgICBjb25zdCB0YXJnZXRSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cywgZmFsc2UpO1xuICAgIGNvbnN0IHsgcmF0aW8gPSAyLCBmaWxsU3R5bGUgPSAndHJhbnNwYXJlbnQnIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGFyZ2V0UmVjdGFuZ2xlO1xuICAgIGNvbnN0IHJhdGlvV2lkdGggPSB3aWR0aCAqIHJhdGlvO1xuICAgIGNvbnN0IHJhdGlvSGVpZ2h0ID0gaGVpZ2h0ICogcmF0aW87XG5cbiAgICBjb25zdCBjbG9uZVN2Z0VsZW1lbnQgPSBhd2FpdCBjbG9uZVN2Zyhib2FyZCwgZWxlbWVudHMsIHRhcmdldFJlY3RhbmdsZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgeyBjYW52YXMsIGN0eCB9ID0gY3JlYXRlQ2FudmFzKHJhdGlvV2lkdGgsIHJhdGlvSGVpZ2h0LCBmaWxsU3R5bGUpO1xuXG4gICAgY29uc3Qgc3ZnU3RyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhjbG9uZVN2Z0VsZW1lbnQpO1xuICAgIGNvbnN0IGltZ1NyYyA9IGBkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwke2VuY29kZVVSSUNvbXBvbmVudChzdmdTdHIpfWA7XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBpbWcgPSBhd2FpdCBsb2FkSW1hZ2UoaW1nU3JjKTtcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIHJhdGlvV2lkdGgsIHJhdGlvSGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNvbnZlcnRpbmcgU1ZHIHRvIGltYWdlOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbi8qKlxuICogZG93bmxvYWQgdGhlIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVcbiAqIEBwYXJhbSB1cmwgZG93bmxvYWQgdXJsXG4gKiBAcGFyYW0gbmFtZSBmaWxlIG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkSW1hZ2UodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgYS5ocmVmID0gdXJsO1xuICAgIGEuZG93bmxvYWQgPSBuYW1lO1xuICAgIGEuY2xpY2soKTtcbiAgICBhLnJlbW92ZSgpO1xufVxuIl19
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8taW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy90by1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRSxNQUFNLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQztBQVloRDs7OztHQUlHO0FBQ0gsU0FBUyxhQUFhLENBQUMsSUFBVTtJQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLFNBQVMsR0FBRyxhQUFhO0lBQzFFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsTUFB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QyxPQUFPLEtBQUssRUFBRTtRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsT0FBTyxTQUFTLENBQUM7S0FDcEI7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDbkQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZmluZEVsZW1lbnRzLCBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgSU1BR0VfQ09OVEFJTkVSID0gJ3BsYWl0LWltYWdlLWNvbnRhaW5lcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9JbWFnZU9wdGlvbnMge1xuICAgIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W107XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByYXRpbz86IG51bWJlcjtcbiAgICBwYWRkaW5nPzogbnVtYmVyO1xuICAgIGZpbGxTdHlsZT86IHN0cmluZztcbiAgICAvLyDpgJflj7fnsbvlkI3liJfooajjgIIg6K+l5YiX6KGo5b+F6aG76YeH55SoIGNsYXNzMSxjbGFzczIsLi4uIOeahOW9ouW8j+OAglxuICAgIGlubGluZVN0eWxlQ2xhc3NOYW1lcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJcyBlbGVtZW50IG5vZGVcbiAqIEBwYXJhbSBub2RlXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBpc0VsZW1lbnROb2RlKG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREU7XG59XG5cbi8qKlxuICogbG9hZCBpbWFnZSByZXNvdXJjZXNcbiAqIEBwYXJhbSB1cmwgaW1hZ2UgdXJsXG4gKiBAcmV0dXJucyBpbWFnZSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIGxvYWRJbWFnZShzcmM6IHN0cmluZyk6IFByb21pc2U8SFRNTEltYWdlRWxlbWVudD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnQW5vbnltb3VzJztcbiAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1nKTtcbiAgICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiByZWplY3QobmV3IEVycm9yKCdGYWlsZWQgdG8gbG9hZCBpbWFnZScpKTtcbiAgICAgICAgaW1nLnNyYyA9IHNyYztcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBjcmVhdGUgYW5kIHJldHVybiBjYW52YXMgYW5kIGNvbnRleHRcbiAqIEBwYXJhbSB3aWR0aCBjYW52YXMgd2lkdGhcbiAqIEBwYXJhbSBoZWlnaHQgY2FudmFzIGhlaWdodFxuICogQHBhcmFtIGZpbGxTdHlsZSBmaWxsIHN0eWxlXG4gKiBAcmV0dXJucyBjYW52YXMgYW5kIGNvbnRleHRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FudmFzKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBmaWxsU3R5bGUgPSAndHJhbnNwYXJlbnQnKSB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykhO1xuXG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICBjYW52YXMuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgY2FudmFzLnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgY3R4LnN0cm9rZVN0eWxlID0gJyNmZmZmZmYnO1xuICAgIGN0eC5maWxsU3R5bGUgPSBmaWxsU3R5bGU7XG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FudmFzLFxuICAgICAgICBjdHhcbiAgICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgaW1hZ2UgdG8gYmFzZTY0XG4gKiBAcGFyYW0gdXJsIGltYWdlIHVybFxuICogQHJldHVybnMgaW1hZ2UgYmFzZTY0XG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRJbWFnZVRvQmFzZTY0KHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxvYWRJbWFnZSh1cmwpLnRoZW4oaW1nID0+IHtcbiAgICAgICAgY29uc3QgeyBjYW52YXMsIGN0eCB9ID0gY3JlYXRlQ2FudmFzKGltZy53aWR0aCwgaW1nLmhlaWdodCk7XG4gICAgICAgIGN0eD8uZHJhd0ltYWdlKGltZywgMCwgMCk7XG4gICAgICAgIHJldHVybiBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBjbG9uZSBub2RlIHN0eWxlXG4gKiBAcGFyYW0gbmF0aXZlTm9kZSBzb3VyY2Ugbm9kZVxuICogQHBhcmFtIGNsb25lZE5vZGUgY2xvbmUgbm9kZVxuICovXG5mdW5jdGlvbiBjbG9uZUNTU1N0eWxlPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4obmF0aXZlTm9kZTogVCwgY2xvbmVkTm9kZTogVCkge1xuICAgIGNvbnN0IHRhcmdldFN0eWxlID0gY2xvbmVkTm9kZT8uc3R5bGU7XG4gICAgaWYgKCF0YXJnZXRTdHlsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuYXRpdmVOb2RlKTtcbiAgICBpZiAoc291cmNlU3R5bGUuY3NzVGV4dCkge1xuICAgICAgICB0YXJnZXRTdHlsZS5jc3NUZXh0ID0gc291cmNlU3R5bGUuY3NzVGV4dDtcbiAgICAgICAgdGFyZ2V0U3R5bGUudHJhbnNmb3JtT3JpZ2luID0gc291cmNlU3R5bGUudHJhbnNmb3JtT3JpZ2luO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFycmF5LmZyb20oc291cmNlU3R5bGUpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBzb3VyY2VTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xuICAgICAgICAgICAgdGFyZ2V0U3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsdWUsIHNvdXJjZVN0eWxlLmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogYmF0Y2ggY2xvbmUgdGFyZ2V0IHN0eWxlc1xuICogQHBhcmFtIHNvdXJjZU5vZGVcbiAqIEBwYXJhbSBjbG9uZU5vZGVcbiAqIEBwYXJhbSBpbmxpbmVTdHlsZUNsYXNzTmFtZXNcbiAqL1xuZnVuY3Rpb24gYmF0Y2hDbG9uZUNTU1N0eWxlKHNvdXJjZU5vZGU6IFNWR0dFbGVtZW50LCBjbG9uZU5vZGU6IFNWR0dFbGVtZW50LCBpbmxpbmVTdHlsZUNsYXNzTmFtZXM6IHN0cmluZykge1xuICAgIGlmIChpbmxpbmVTdHlsZUNsYXNzTmFtZXMpIHtcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lcyA9IGlubGluZVN0eWxlQ2xhc3NOYW1lcyArIGAsLiR7SU1BR0VfQ09OVEFJTkVSfWA7XG4gICAgICAgIGNvbnN0IHNvdXJjZU5vZGVzID0gQXJyYXkuZnJvbShzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoY2xhc3NOYW1lcykpO1xuICAgICAgICBjb25zdCBjbG9uZU5vZGVzID0gQXJyYXkuZnJvbShjbG9uZU5vZGUucXVlcnlTZWxlY3RvckFsbChjbGFzc05hbWVzKSk7XG5cbiAgICAgICAgc291cmNlTm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkRWxlbWVudHMgPSBBcnJheS5mcm9tKG5vZGUucXVlcnlTZWxlY3RvckFsbCgnKicpKS5maWx0ZXIoaXNFbGVtZW50Tm9kZSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lQ2hpbGRFbGVtZW50cyA9IEFycmF5LmZyb20oY2xvbmVOb2Rlc1tpbmRleF0ucXVlcnlTZWxlY3RvckFsbCgnKicpKS5maWx0ZXIoaXNFbGVtZW50Tm9kZSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgICAgIHNvdXJjZU5vZGVzLnB1c2goLi4uY2hpbGRFbGVtZW50cyk7XG4gICAgICAgICAgICBjbG9uZU5vZGVzLnB1c2goLi4uY2xvbmVDaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gcHJvY2Vzc2luZyBzdHlsZXNcbiAgICAgICAgc291cmNlTm9kZXMubWFwKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY2xvbmVDU1NTdHlsZShub2RlIGFzIEhUTUxFbGVtZW50LCBjbG9uZU5vZGVzW2luZGV4XSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBjb252ZXJ0IGltYWdlcyBpbiB0YXJnZXQgbm9kZXMgaW4gYmF0Y2hlc1xuICogQHBhcmFtIHNvdXJjZU5vZGVcbiAqIEBwYXJhbSBjbG9uZU5vZGVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYmF0Y2hDb252ZXJ0SW1hZ2Uoc291cmNlTm9kZTogU1ZHR0VsZW1lbnQsIGNsb25lTm9kZTogU1ZHR0VsZW1lbnQpIHtcbiAgICBjb25zdCBzb3VyY2VJbWFnZU5vZGVzID0gQXJyYXkuZnJvbShzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke0lNQUdFX0NPTlRBSU5FUn1gKSk7XG4gICAgY29uc3QgY2xvbmVJbWFnZU5vZGVzID0gQXJyYXkuZnJvbShjbG9uZU5vZGUucXVlcnlTZWxlY3RvckFsbChgLiR7SU1BR0VfQ09OVEFJTkVSfWApKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgc291cmNlSW1hZ2VOb2Rlcy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVJbWFnZU5vZGUgPSBjbG9uZUltYWdlTm9kZXNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIC8vIHByb2Nlc3NpbmcgaW1hZ2VcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IChjbG9uZUltYWdlTm9kZSBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignaW1nJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gaW1hZ2U/LmdldEF0dHJpYnV0ZSgnc3JjJyk7XG4gICAgICAgICAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVRvQmFzZTY0KHVybCkudGhlbihiYXNlNjRJbWFnZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlPy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGJhc2U2NEltYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICk7XG59XG5cbi8qKlxuICogY2xvbmUgc3ZnIGVsZW1lbnRcbiAqIEBwYXJhbSBib2FyZCBib2FyZFxuICogQHBhcmFtIG9wdGlvbnMgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIGNsb25lIHN2ZyBlbGVtZW50XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNsb25lU3ZnKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10sIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBUb0ltYWdlT3B0aW9ucykge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgeCwgeSB9ID0gcmVjdGFuZ2xlO1xuICAgIGNvbnN0IHsgcGFkZGluZyA9IDQsIGlubGluZVN0eWxlQ2xhc3NOYW1lcyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBzb3VyY2VTdmcgPSBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpO1xuICAgIGNvbnN0IHNlbGVjdGVkR0VsZW1lbnRzID0gZWxlbWVudHMubWFwKHZhbHVlID0+IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodmFsdWUpLmcpO1xuICAgIGNvbnN0IGNsb25lU3ZnRWxlbWVudCA9IHNvdXJjZVN2Zy5jbG9uZU5vZGUoKSBhcyBTVkdFbGVtZW50O1xuICAgIGNvbnN0IG5ld0hvc3RFbGVtZW50ID0gUGxhaXRCb2FyZC5nZXRFbGVtZW50SG9zdChib2FyZCkuY2xvbmVOb2RlKCkgYXMgU1ZHR0VsZW1lbnQ7XG5cbiAgICBjbG9uZVN2Z0VsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgY2xvbmVTdmdFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgY2xvbmVTdmdFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7d2lkdGh9YCk7XG4gICAgY2xvbmVTdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7aGVpZ2h0fWApO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCBbeCAtIHBhZGRpbmcsIHkgLSBwYWRkaW5nLCB3aWR0aCArIDIgKiBwYWRkaW5nLCBoZWlnaHQgKyAyICogcGFkZGluZ10uam9pbignLCcpKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBzZWxlY3RlZEdFbGVtZW50cy5tYXAoYXN5bmMgKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbG9uZUNoaWxkID0gY2hpbGQuY2xvbmVOb2RlKHRydWUpIGFzIFNWR0dFbGVtZW50O1xuICAgICAgICAgICAgYmF0Y2hDbG9uZUNTU1N0eWxlKGNoaWxkLCBjbG9uZUNoaWxkLCBpbmxpbmVTdHlsZUNsYXNzTmFtZXMgYXMgc3RyaW5nKTtcblxuICAgICAgICAgICAgYXdhaXQgYmF0Y2hDb252ZXJ0SW1hZ2UoY2hpbGQsIGNsb25lQ2hpbGQpO1xuICAgICAgICAgICAgbmV3SG9zdEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2xvbmVDaGlsZCk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICBjbG9uZVN2Z0VsZW1lbnQuYXBwZW5kQ2hpbGQobmV3SG9zdEVsZW1lbnQpO1xuICAgIHJldHVybiBjbG9uZVN2Z0VsZW1lbnQ7XG59XG5cbi8qKlxuICogY3VycmVudCBib2FyZCB0cmFuc2ZlciBwaWN0dXJlc1xuICogQHBhcmFtIGJvYXJkIGJvYXJkXG4gKiBAcGFyYW0gb3B0aW9ucyBwYXJhbWV0ZXIgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgaW1hZ2VzIGluIHRoZSBzcGVjaWZpZWQgZm9ybWF0IGJhc2U2NFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9JbWFnZShib2FyZDogUGxhaXRCb2FyZCwgb3B0aW9uczogVG9JbWFnZU9wdGlvbnMpIHtcbiAgICBpZiAoIWJvYXJkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHMgPSBvcHRpb25zPy5lbGVtZW50cyB8fCBmaW5kRWxlbWVudHMoYm9hcmQsIHsgbWF0Y2g6ICgpID0+IHRydWUsIHJlY3Vyc2lvbjogKCkgPT4gdHJ1ZSB9KTtcbiAgICBjb25zdCB0YXJnZXRSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cywgZmFsc2UpO1xuICAgIGNvbnN0IHsgcmF0aW8gPSAyLCBmaWxsU3R5bGUgPSAndHJhbnNwYXJlbnQnIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGFyZ2V0UmVjdGFuZ2xlO1xuICAgIGNvbnN0IHJhdGlvV2lkdGggPSB3aWR0aCAqIHJhdGlvO1xuICAgIGNvbnN0IHJhdGlvSGVpZ2h0ID0gaGVpZ2h0ICogcmF0aW87XG5cbiAgICBjb25zdCBjbG9uZVN2Z0VsZW1lbnQgPSBhd2FpdCBjbG9uZVN2Zyhib2FyZCwgZWxlbWVudHMsIHRhcmdldFJlY3RhbmdsZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgeyBjYW52YXMsIGN0eCB9ID0gY3JlYXRlQ2FudmFzKHJhdGlvV2lkdGgsIHJhdGlvSGVpZ2h0LCBmaWxsU3R5bGUpO1xuXG4gICAgY29uc3Qgc3ZnU3RyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhjbG9uZVN2Z0VsZW1lbnQpO1xuICAgIGNvbnN0IGltZ1NyYyA9IGBkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwke2VuY29kZVVSSUNvbXBvbmVudChzdmdTdHIpfWA7XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBpbWcgPSBhd2FpdCBsb2FkSW1hZ2UoaW1nU3JjKTtcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIHJhdGlvV2lkdGgsIHJhdGlvSGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNvbnZlcnRpbmcgU1ZHIHRvIGltYWdlOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbi8qKlxuICogZG93bmxvYWQgdGhlIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVcbiAqIEBwYXJhbSB1cmwgZG93bmxvYWQgdXJsXG4gKiBAcGFyYW0gbmFtZSBmaWxlIG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkSW1hZ2UodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgYS5ocmVmID0gdXJsO1xuICAgIGEuZG93bmxvYWQgPSBuYW1lO1xuICAgIGEuY2xpY2soKTtcbiAgICBhLnJlbW92ZSgpO1xufVxuIl19