@libs-ui/components-inputs-quill 0.2.347-0 → 0.2.348-4

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.
@@ -4,7 +4,7 @@ import { set, setStylesElement } from '@libs-ui/utils';
4
4
  import ResizeModule from '@ssumo/quill-resize-module';
5
5
  import Quill2x from 'quill2x';
6
6
  import { fromEvent } from 'rxjs';
7
- import { QuillMention2xBlot, CustomImage2xBlot } from '../blots-custom/index2x';
7
+ import { CustomImage2xBlot, QuillMention2xBlot } from '../blots-custom/index2x';
8
8
  import { fontSizeWhiteList, iconList } from './quill.define';
9
9
  let startCell = null;
10
10
  let endCell = null;
@@ -441,4 +441,4 @@ export const isEmptyQuill = (quill) => {
441
441
  const html = rootElement.innerHTML.trim();
442
442
  return html === '<p><br></p>' || html === '<p></p>' || html === '' || html === '<p><span class="ql-cursor"></span><br></p>' || rootElement.classList.contains('ql-blank');
443
443
  };
444
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwyeC5kZWZpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsL3NyYy91dGlscy9xdWlsbDJ4LmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsSUFBSSxTQUFTLEdBQXVCLElBQUksQ0FBQztBQUN6QyxJQUFJLE9BQU8sR0FBdUIsSUFBSSxDQUFDO0FBQ3ZDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztBQUV4Qix1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFjLEVBQUUsUUFBNEIsRUFBRSxTQUEyQixFQUFFLEVBQUU7SUFDL0csZ0NBQWdDO0lBQ2hDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0RyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7SUFDekMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUNoQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztJQUN0QyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDakMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsNkJBQTZCLENBQUM7SUFDdEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzdCLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDL0IsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1FBQ3RCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxnQkFBZ0I7UUFDeEIsWUFBWSxFQUFFLEtBQUs7UUFDbkIsU0FBUyxFQUFFLDZCQUE2QjtRQUN4QyxPQUFPLEVBQUUsTUFBTTtRQUNmLE1BQU0sRUFBRSxPQUFPO1FBQ2YsUUFBUSxFQUFFLE9BQU87S0FDbEIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN6RCxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFDckIsUUFBUSxFQUFFLE1BQU07UUFDaEIsS0FBSyxFQUFFLE1BQU07UUFDYixZQUFZLEVBQUUsTUFBTTtRQUNwQixTQUFTLEVBQUUsUUFBUTtRQUNuQixVQUFVLEVBQUUsS0FBSztLQUNsQixDQUFDLENBQUM7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxNQUFNO1FBQ2YsbUJBQW1CLEVBQUUsaUJBQWlCO1FBQ3RDLEdBQUcsRUFBRSxLQUFLO0tBQ1gsQ0FBQyxDQUFDO0lBRUgsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUM7WUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUU5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDckMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUM1QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDMUIsRUFBa0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBQ2xGLEVBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN6RixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQztvQkFDSCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQVEsQ0FBQztvQkFDcEQsSUFBSSxXQUFXLElBQUksT0FBTyxXQUFXLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO3dCQUNqRSxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDbEMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlCLENBQUM7Z0JBQ0gsQ0FBQzt3QkFBUyxDQUFDO29CQUNULElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25DLENBQUM7b0JBQ0QsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFDRCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhCLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRTtRQUN0QixNQUFNLElBQUksR0FBRyxRQUFRLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMxRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3JELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDN0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQztJQUNqQyxDQUFDLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQWMsRUFBRSxFQUFFO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxVQUFVLEVBQUUsQ0FBQztJQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsS0FBYyxFQUFFLFNBQTJCLEVBQUUsRUFBRTtJQUMxRixJQUFJLGdCQUFnQixHQUFrQixJQUFJLENBQUM7SUFFM0MsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO1FBQ3hCLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDLENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsRUFBYyxFQUFFLEVBQUU7UUFDMUMsSUFBSSxDQUFDO1lBQ0gsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN6QyxLQUFLLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGdEQUFnRDtRQUNsRCxDQUFDO1FBQ0QsRUFBRSxFQUFFLENBQUM7SUFDUCxDQUFDLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWEsRUFBRSxPQUFtQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ2xDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFCLFlBQVksRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRixNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsRUFBRTtRQUN2RCxZQUFZLEVBQUUsQ0FBQztRQUVmLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsNEJBQTRCLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFFOUIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQStCLENBQUM7UUFDM0UsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFjLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRTtZQUNsRCxJQUFJLE1BQU0sS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQy9CLFlBQVksRUFBRSxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxNQUFNLEtBQUssWUFBWSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEIsWUFBWSxFQUFFLENBQUM7Z0JBQ2YsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLFdBQVcsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDN0QsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hILElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwSCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RILE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUNsQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN6QixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7WUFDakMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDO1lBQzdCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLElBQUksU0FBUyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwSSxTQUFTLEVBQUUsQ0FBQztZQUNkLENBQUM7WUFDRCxJQUFJLFNBQVMsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RILFNBQVMsRUFBRSxDQUFDO1lBQ2QsQ0FBQztZQUVELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQzlCLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztnQkFDbkMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEcsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFjLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBYyxDQUFDLElBQUssRUFBRSxDQUFDLE1BQXNCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM3RyxZQUFZLEVBQUUsQ0FBQztnQkFDZixRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdEUsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ3BCLFlBQVksRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDO0lBRUYsU0FBUyxDQUFhLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBYyxFQUFFLEVBQUU7UUFDNUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQXFCLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDcEIsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQztZQUNILDJDQUEyQztZQUMzQyxNQUFNLFFBQVEsR0FBRyxPQUFjLENBQUM7WUFDaEMsTUFBTSxJQUFJLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDOUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDJEQUEyRDtnQkFDM0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxlQUFlLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixrQ0FBa0M7QUFDbEMsK0JBQStCO0FBQy9CLGtDQUFrQztBQUVsQyxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7SUFDMUIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDeEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBa0IsRUFBRSxHQUFnQixFQUFFLEVBQUU7SUFDaEUsY0FBYyxFQUFFLENBQUM7SUFDakIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUFFLE9BQU87SUFFckQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFvQyxDQUFDLENBQUM7SUFDMUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBb0MsQ0FBQyxDQUFDO0lBRXRFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTFDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVwRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUxQyxLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxLQUFLLENBQUMsQ0FBQyxDQUFpQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixrQ0FBa0M7QUFDbEMsOEJBQThCO0FBQzlCLGtDQUFrQztBQUNsQyxNQUFNLFVBQVUsb0JBQW9CLENBQUMsU0FBc0I7SUFDekQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQzVDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFxQixDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkgsY0FBYyxFQUFFLENBQUM7WUFDakIsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNuQixTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQ25CLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDakIsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUM1QyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFDekIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQXFCLENBQUM7UUFDdkMsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUN6QyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ2pCLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtRQUN6QyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUNELE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBYyxFQUFFLEVBQUU7SUFDbkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQXFCLENBQUM7SUFDeEMsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ2pKLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsY0FBYyxFQUFFLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUNGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXBELGtDQUFrQztBQUNsQyxjQUFjO0FBQ2Qsa0NBQWtDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQXNCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQ3pFLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEUsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFbEQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ2hDLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxRQUFRLEdBQUcsTUFBTTtZQUFFLE9BQU87UUFFbkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDakMsSUFBSSxRQUFRLEdBQUcsTUFBTSxJQUFJLFFBQVEsR0FBRyxNQUFNO2dCQUFFLE9BQU87WUFDbkQsSUFBSSxRQUFRLEtBQUssTUFBTSxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUQsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsa0NBQWtDO0FBQ2xDLGNBQWM7QUFDZCxrQ0FBa0M7QUFDbEMsTUFBTSxVQUFVLFVBQVUsQ0FBQyxTQUFzQjtJQUMvQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckUsTUFBTSxjQUFjLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDdkIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFdkMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ2hDLElBQUksUUFBUSxHQUFHLFFBQVE7WUFBRSxPQUFPO1FBRWhDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2pDLElBQUksUUFBUSxHQUFHLFFBQVEsSUFBSSxRQUFRLEdBQUcsUUFBUSxJQUFJLFFBQVEsR0FBRyxPQUFPLEdBQUcsUUFBUSxJQUFJLFFBQVEsR0FBRyxPQUFPLEdBQUcsUUFBUSxJQUFJLGNBQWMsSUFBSSxjQUFjO2dCQUFFLE9BQU87WUFDN0osSUFBSSxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbkQsY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDcEMsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDO2dCQUNELFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNCLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNCLE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEMsY0FBYyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO0lBQ2pELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFFeEIsK0JBQStCO0lBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBb0IsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzdCLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN6QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDL0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBRXBFLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRiw2Q0FBNkM7QUFFN0MsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLEVBQUU7SUFDbEMsSUFBSSxRQUFRO1FBQUUsT0FBTztJQUNyQixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBRWhCLE1BQU0sS0FBSyxHQUFHLE9BQWMsQ0FBQztJQUU3QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDcEQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzNELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRXJDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBRW5CLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdCLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLGdCQUFnQixPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsMkNBQTJDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQztBQUN4TyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUM5QyxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDOUIsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQyxPQUFPLElBQUksS0FBSyxhQUFhLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksS0FBSyw0Q0FBNEMsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM1SyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXG5pbXBvcnQgeyBzZXQsIHNldFN0eWxlc0VsZW1lbnQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgUmVzaXplTW9kdWxlIGZyb20gJ0Bzc3Vtby9xdWlsbC1yZXNpemUtbW9kdWxlJztcbmltcG9ydCBRdWlsbDJ4IGZyb20gJ3F1aWxsMngnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBRdWlsbE1lbnRpb24yeEJsb3QsIEN1c3RvbUltYWdlMnhCbG90IH0gZnJvbSAnLi4vYmxvdHMtY3VzdG9tL2luZGV4MngnO1xuaW1wb3J0IHsgZm9udFNpemVXaGl0ZUxpc3QsIGljb25MaXN0IH0gZnJvbSAnLi9xdWlsbC5kZWZpbmUnO1xubGV0IHN0YXJ0Q2VsbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbmxldCBlbmRDZWxsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xubGV0IGlzU2VsZWN0aW5nID0gZmFsc2U7XG5cbi8vcmVnaW9uIEZ1bmN0aW9uIFRhYmxlXG5leHBvcnQgY29uc3QgY3JlYXRlVGFibGVTZWxlY3RvciA9IChxdWlsbDogUXVpbGwyeCwgYW5jaG9yRWw6IEhUTUxFbGVtZW50IHwgbnVsbCwgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSA9PiB7XG4gIC8vIMSQw7NuZyBwb3B1cCBjxakgbuG6v3UgY8OybiB04buTbiB04bqhaVxuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWFudWFsLXRhYmxlLWNyZWF0b3InKS5mb3JFYWNoKChlbCkgPT4gZWwucGFyZW50RWxlbWVudD8ucmVtb3ZlQ2hpbGQoZWwpKTtcblxuICBjb25zdCBwb3B1cCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBwb3B1cC5jbGFzc05hbWUgPSAnbWFudWFsLXRhYmxlLWNyZWF0b3InO1xuICBwb3B1cC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gIHBvcHVwLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZic7XG4gIHBvcHVwLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2RkZCc7XG4gIHBvcHVwLnN0eWxlLmJvcmRlclJhZGl1cyA9ICc2cHgnO1xuICBwb3B1cC5zdHlsZS5ib3hTaGFkb3cgPSAnMCA2cHggMTZweCByZ2JhKDAsMCwwLDAuMTIpJztcbiAgcG9wdXAuc3R5bGUucGFkZGluZyA9ICcxMnB4JztcbiAgcG9wdXAuc3R5bGUuekluZGV4ID0gJzEwMDAwJztcbiAgcG9wdXAuc3R5bGUubWluV2lkdGggPSAnMjAwcHgnO1xuICBzZXRTdHlsZXNFbGVtZW50KHBvcHVwLCB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgYmFja2dyb3VuZDogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZGRkJyxcbiAgICBib3JkZXJSYWRpdXM6ICc2cHgnLFxuICAgIGJveFNoYWRvdzogJzAgNnB4IDE2cHggcmdiYSgwLDAsMCwwLjEyKScsXG4gICAgcGFkZGluZzogJzEycHgnLFxuICAgIHpJbmRleDogJzEwMDAwJyxcbiAgICBtaW5XaWR0aDogJzIwMHB4JyxcbiAgfSk7XG5cbiAgY29uc3QgaW5mbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBpbmZvLnRleHRDb250ZW50ID0gdHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fc2VsZWN0X2NlbGwnKTtcbiAgc2V0U3R5bGVzRWxlbWVudChpbmZvLCB7XG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICBjb2xvcjogJyMzMzMnLFxuICAgIG1hcmdpbkJvdHRvbTogJzEwcHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgZm9udFdlaWdodDogJzYwMCcsXG4gIH0pO1xuICBwb3B1cC5hcHBlbmRDaGlsZChpbmZvKTtcblxuICBjb25zdCBncmlkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHNldFN0eWxlc0VsZW1lbnQoZ3JpZCwge1xuICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIDE4cHgpJyxcbiAgICBnYXA6ICc0cHgnLFxuICB9KTtcblxuICBjb25zdCBtYXggPSA4O1xuICBmb3IgKGxldCByb3cgPSAxOyByb3cgPD0gbWF4OyByb3crKykge1xuICAgIGZvciAobGV0IGNvbCA9IDE7IGNvbCA8PSBtYXg7IGNvbCsrKSB7XG4gICAgICBjb25zdCBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjZWxsLnN0eWxlLndpZHRoID0gJzE4cHgnO1xuICAgICAgY2VsbC5zdHlsZS5oZWlnaHQgPSAnMThweCc7XG4gICAgICBjZWxsLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2U1ZTdlYic7XG4gICAgICBjZWxsLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZic7XG4gICAgICBjZWxsLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgICBpbmZvLnRleHRDb250ZW50ID0gYCR7cm93fSDDlyAke2NvbH1gO1xuICAgICAgICBBcnJheS5mcm9tKGdyaWQuY2hpbGRyZW4pLmZvckVhY2goKGVsLCBpZHgpID0+IHtcbiAgICAgICAgICBjb25zdCByciA9IE1hdGguZmxvb3IoaWR4IC8gbWF4KSArIDE7XG4gICAgICAgICAgY29uc3QgY2MgPSAoaWR4ICUgbWF4KSArIDE7XG4gICAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kID0gcnIgPD0gcm93ICYmIGNjIDw9IGNvbCA/ICcjZGJlYWZlJyA6ICcjZmZmJztcbiAgICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJvcmRlckNvbG9yID0gcnIgPD0gcm93ICYmIGNjIDw9IGNvbCA/ICcjOTNjNWZkJyA6ICcjZTVlN2ViJztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBxdWlsbC5mb2N1cygpO1xuICAgICAgICAgIGNvbnN0IHRhYmxlTW9kdWxlID0gcXVpbGwuZ2V0TW9kdWxlKCd0YWJsZScpIGFzIGFueTtcbiAgICAgICAgICBpZiAodGFibGVNb2R1bGUgJiYgdHlwZW9mIHRhYmxlTW9kdWxlLmluc2VydFRhYmxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0YWJsZU1vZHVsZS5pbnNlcnRUYWJsZShyb3csIGNvbCk7XG4gICAgICAgICAgICBnZXRBbGxUYWJsZXNXaXRoU3BhbihxdWlsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHBvcHVwKSkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwb3B1cCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgZ3JpZC5hcHBlbmRDaGlsZChjZWxsKTtcbiAgICB9XG4gIH1cbiAgcG9wdXAuYXBwZW5kQ2hpbGQoZ3JpZCk7XG5cbiAgY29uc3QgcGxhY2VQb3B1cCA9ICgpID0+IHtcbiAgICBjb25zdCByZWN0ID0gYW5jaG9yRWw/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRvcCA9IHJlY3QgPyByZWN0LmJvdHRvbSArIHdpbmRvdy5zY3JvbGxZICsgNiA6IDEwMDtcbiAgICBjb25zdCBsZWZ0ID0gcmVjdCA/IHJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYIDogMTAwO1xuICAgIHBvcHVwLnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG4gICAgcG9wdXAuc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgO1xuICB9O1xuXG4gIGNvbnN0IG9uT3V0c2lkZUNsaWNrID0gKGV2OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFwb3B1cC5jb250YWlucyhldi50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHBvcHVwKSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBvcHVwKTtcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpO1xuICAgIH1cbiAgfTtcblxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBvcHVwKTtcbiAgcGxhY2VQb3B1cCgpO1xuICBzZXRUaW1lb3V0KCgpID0+IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb250ZXh0TWVudU9wdGlvblRhYmxlID0gKHF1aWxsOiBRdWlsbDJ4LCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpID0+IHtcbiAgbGV0IGxhc3RDb250ZXh0SW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IGNsb3NlQW55TWVudSA9ICgpID0+IHtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWFudWFsLXRhYmxlLW1lbnUnKS5mb3JFYWNoKChlbCkgPT4gZWwucGFyZW50RWxlbWVudD8ucmVtb3ZlQ2hpbGQoZWwpKTtcbiAgfTtcblxuICBjb25zdCBydW5XaXRoU2VsZWN0aW9uID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHF1aWxsLmZvY3VzKCk7XG4gICAgICBpZiAodHlwZW9mIGxhc3RDb250ZXh0SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihsYXN0Q29udGV4dEluZGV4LCAwLCAnc2lsZW50Jyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBuby1vcDogZ2nhu68gecOqbiBu4bq/dSBraMO0bmcgdGjhu4Mgc2V0IHNlbGVjdGlvbiAqL1xuICAgIH1cbiAgICBmbigpO1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZU1lbnVJdGVtID0gKGxhYmVsOiBzdHJpbmcsIG9uQ2xpY2s6ICgpID0+IHZvaWQpID0+IHtcbiAgICBjb25zdCBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgaXRlbS50ZXh0Q29udGVudCA9IGxhYmVsO1xuICAgIGl0ZW0uc3R5bGUucGFkZGluZyA9ICc2cHggMTJweCc7XG4gICAgaXRlbS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG4gICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHJ1bldpdGhTZWxlY3Rpb24ob25DbGljayk7XG4gICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICB9KTtcbiAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICBpdGVtLnN0eWxlLmJhY2tncm91bmQgPSAnI2Y1ZjVmNSc7XG4gICAgfSk7XG4gICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kID0gJ3RyYW5zcGFyZW50JztcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcblxuICBjb25zdCBvcGVuQ29udGV4dE1lbnUgPSAocGFnZVg6IG51bWJlciwgcGFnZVk6IG51bWJlcikgPT4ge1xuICAgIGNsb3NlQW55TWVudSgpO1xuXG4gICAgY29uc3QgbWVudSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG1lbnUuY2xhc3NOYW1lID0gJ21hbnVhbC10YWJsZS1tZW51JztcbiAgICBtZW51LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBtZW51LnN0eWxlLnRvcCA9IGAke3BhZ2VZfXB4YDtcbiAgICBtZW51LnN0eWxlLmxlZnQgPSBgJHtwYWdlWH1weGA7XG4gICAgbWVudS5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnO1xuICAgIG1lbnUuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjY2NjJztcbiAgICBtZW51LnN0eWxlLmJvcmRlclJhZGl1cyA9ICc0cHgnO1xuICAgIG1lbnUuc3R5bGUuYm94U2hhZG93ID0gJzAgNHB4IDEycHggcmdiYSgwLDAsMCwwLjIpJztcbiAgICBtZW51LnN0eWxlLnpJbmRleCA9ICcxMDAwMSc7XG4gICAgbWVudS5zdHlsZS5wYWRkaW5nID0gJzRweCc7XG4gICAgbWVudS5zdHlsZS5taW5XaWR0aCA9ICcxODBweCc7XG5cbiAgICBjb25zdCB0YWJsZU1vZHVsZSA9IHF1aWxsLmdldE1vZHVsZSgndGFibGUnKSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbDtcbiAgICBjb25zdCBzYWZlQ2FsbCA9IChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgIGlmIChtZXRob2QgPT09ICdtZXJnZUNlbGxzJykge1xuICAgICAgICBjb25zdCBbc3RhcnRDZWxsLCBlbmRDZWxsXSA9IGFyZ3M7XG4gICAgICAgIG1lcmdlQ2VsbHMoc3RhcnRDZWxsLCBlbmRDZWxsKTtcbiAgICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRob2QgPT09ICdzcGxpdENlbGxzJykge1xuICAgICAgICBjb25zdCBbc3RhcnRDZWxsXSA9IGFyZ3M7XG4gICAgICAgIHNwbGl0Q2VsbHMoc3RhcnRDZWxsKTtcbiAgICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0YWJsZU1vZHVsZSAmJiB0eXBlb2YgdGFibGVNb2R1bGVbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0YWJsZU1vZHVsZVttZXRob2RdKC4uLmFyZ3MpO1xuICAgICAgICBnZXRBbGxUYWJsZXNXaXRoU3BhbihxdWlsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fYWRkX25ld19yb3dfYWJvdmUnKSwgKCkgPT4gc2FmZUNhbGwoJ2luc2VydFJvd0Fib3ZlJykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2FkZF9uZXdfcm93X2JlbG93JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRSb3dCZWxvdycpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9hZGRfbmV3X2NvbHVtbl9sZWZ0JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRDb2x1bW5MZWZ0JykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2FkZF9uZXdfY29sdW1uX3JpZ2h0JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRDb2x1bW5SaWdodCcpKSk7XG4gICAgY29uc3QgZGl2aWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdmlkZXIuc3R5bGUuaGVpZ2h0ID0gJzFweCc7XG4gICAgZGl2aWRlci5zdHlsZS5iYWNrZ3JvdW5kID0gJyNlZWUnO1xuICAgIGRpdmlkZXIuc3R5bGUubWFyZ2luID0gJzRweCAwJztcbiAgICBtZW51LmFwcGVuZENoaWxkKGRpdmlkZXIpO1xuICAgIGlmIChzdGFydENlbGwgJiYgZW5kQ2VsbCkge1xuICAgICAgY29uc3Qgc3RhcnRDZWxsU3RvcmUgPSBzdGFydENlbGw7XG4gICAgICBjb25zdCBlbmRDZWxsU3RvcmUgPSBlbmRDZWxsO1xuICAgICAgY29uc3QgY29sc3BhbiA9IHBhcnNlSW50KHN0YXJ0Q2VsbFN0b3JlLmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApO1xuICAgICAgY29uc3Qgcm93c3BhbiA9IHBhcnNlSW50KHN0YXJ0Q2VsbFN0b3JlLmdldEF0dHJpYnV0ZSgncm93c3BhbicpIHx8ICcxJywgMTApO1xuICAgICAgbGV0IHRvdGFsTWVudSA9IDA7XG4gICAgICBpZiAoc3RhcnRDZWxsICE9PSBlbmRDZWxsKSB7XG4gICAgICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fbWVyZ2VfY2VsbHMnKSwgKCkgPT4gc2FmZUNhbGwoJ21lcmdlQ2VsbHMnLCBzdGFydENlbGxTdG9yZSwgZW5kQ2VsbFN0b3JlKSkpO1xuICAgICAgICB0b3RhbE1lbnUrKztcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydENlbGwgPT09IGVuZENlbGwgJiYgKGNvbHNwYW4gPiAxIHx8IHJvd3NwYW4gPiAxKSkge1xuICAgICAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX3NwbGl0X2NlbGxzJyksICgpID0+IHNhZmVDYWxsKCdzcGxpdENlbGxzJywgc3RhcnRDZWxsU3RvcmUpKSk7XG4gICAgICAgIHRvdGFsTWVudSsrO1xuICAgICAgfVxuXG4gICAgICBpZiAodG90YWxNZW51ID4gMCkge1xuICAgICAgICBjb25zdCBkaXZpZGVyMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBkaXZpZGVyMi5zdHlsZS5oZWlnaHQgPSAnMXB4JztcbiAgICAgICAgZGl2aWRlcjIuc3R5bGUuYmFja2dyb3VuZCA9ICcjZWVlJztcbiAgICAgICAgZGl2aWRlcjIuc3R5bGUubWFyZ2luID0gJzRweCAwJztcbiAgICAgICAgbWVudS5hcHBlbmRDaGlsZChkaXZpZGVyMik7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fZGVsZXRlX3JvdycpLCAoKSA9PiBzYWZlQ2FsbCgnZGVsZXRlUm93JykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2RlbGV0ZV9jb2x1bW4nKSwgKCkgPT4gc2FmZUNhbGwoJ2RlbGV0ZUNvbHVtbicpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9kZWxldGVfdGFibGUnKSwgKCkgPT4gc2FmZUNhbGwoJ2RlbGV0ZVRhYmxlJykpKTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWVudSk7XG5cbiAgICBjb25zdCBvbk91dHNpZGUgPSAoZXY6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghbWVudS5jb250YWlucyhldi50YXJnZXQgYXMgTm9kZSkgfHwgKGV2LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RhYmxlJykubGVuZ3RoIDwgMCkge1xuICAgICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbk91dHNpZGUsIHRydWUpO1xuICAgICAgfVxuICAgIH07XG4gICAgc2V0VGltZW91dCgoKSA9PiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uT3V0c2lkZSwgdHJ1ZSkpO1xuXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB7XG4gICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgdHJ1ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25TY3JvbGwsIHRydWUpO1xuICAgIH07XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB0cnVlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25TY3JvbGwsIHRydWUpO1xuICB9O1xuXG4gIGZyb21FdmVudDxNb3VzZUV2ZW50PihxdWlsbC5yb290LCAnY29udGV4dG1lbnUnKS5zdWJzY3JpYmUoKGV2OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXYudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGlzQ2VsbCA9ICEhdGFyZ2V0LmNsb3Nlc3QoJ3RkLHRoLHRhYmxlLC5xbC10YWJsZScpO1xuICAgIGlmICghaXNDZWxsKSByZXR1cm47XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0cnkge1xuICAgICAgLy8gxq91IHRpw6puIGzhuqV5IGluZGV4IHThu6sgYmxvdCB0xrDGoW5nIOG7qW5nIG5vZGVcbiAgICAgIGNvbnN0IFF1aWxsQW55ID0gUXVpbGwyeCBhcyBhbnk7XG4gICAgICBjb25zdCBibG90ID0gUXVpbGxBbnk/LmZpbmQ/Lih0YXJnZXQpO1xuICAgICAgaWYgKGJsb3QgJiYgdHlwZW9mIGJsb3Qub2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGxhc3RDb250ZXh0SW5kZXggPSBibG90Lm9mZnNldChxdWlsbC5zY3JvbGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRmFsbGJhY2s6IMSR4bq3dCBzZWxlY3Rpb24gaGnhu4duIHThuqFpIG7hur91IGtow7RuZyB4w6FjIMSR4buLbmggxJHGsOG7o2NcbiAgICAgICAgY29uc3Qgc2VsID0gcXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgICAgICBsYXN0Q29udGV4dEluZGV4ID0gc2VsID8gc2VsLmluZGV4IDogMDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbnN0IHNlbCA9IHF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxhc3RDb250ZXh0SW5kZXggPSBzZWwgPyBzZWwuaW5kZXggOiAwO1xuICAgIH1cbiAgICBxdWlsbC5mb2N1cygpO1xuICAgIG9wZW5Db250ZXh0TWVudShldi5wYWdlWCwgZXYucGFnZVkpO1xuICB9KTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFV0aWxzOiBjbGVhciB2w6Agc2VsZWN0IGNlbGxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGNsZWFyU2VsZWN0aW9uID0gKCkgPT4ge1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VsZWN0ZWQtY2VsbCcpLmZvckVhY2goKGMpID0+IHtcbiAgICBjLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkLWNlbGwnKTtcbiAgfSk7XG59O1xuXG5jb25zdCBzZWxlY3RSYW5nZUNlbGxzID0gKHN0YXJ0OiBIVE1MRWxlbWVudCwgZW5kOiBIVE1MRWxlbWVudCkgPT4ge1xuICBjbGVhclNlbGVjdGlvbigpO1xuICBjb25zdCB0YWJsZSA9IHN0YXJ0LmNsb3Nlc3QoJ3RhYmxlJyk7XG4gIGlmICghdGFibGUgfHwgdGFibGUgIT09IGVuZC5jbG9zZXN0KCd0YWJsZScpKSByZXR1cm47XG5cbiAgY29uc3Qgcm93cyA9IEFycmF5LmZyb20odGFibGUucXVlcnlTZWxlY3RvckFsbCgndHInKSk7XG4gIGNvbnN0IHN0YXJ0Um93ID0gcm93cy5pbmRleE9mKHN0YXJ0LnBhcmVudEVsZW1lbnQgYXMgSFRNTFRhYmxlUm93RWxlbWVudCk7XG4gIGNvbnN0IGVuZFJvdyA9IHJvd3MuaW5kZXhPZihlbmQucGFyZW50RWxlbWVudCBhcyBIVE1MVGFibGVSb3dFbGVtZW50KTtcblxuICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydFJvdywgZW5kUm93KTtcbiAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnRSb3csIGVuZFJvdyk7XG5cbiAgY29uc3Qgc3RhcnRDb2wgPSBBcnJheS5mcm9tKHN0YXJ0LnBhcmVudEVsZW1lbnQhLmNoaWxkcmVuKS5pbmRleE9mKHN0YXJ0KTtcbiAgY29uc3QgZW5kQ29sID0gQXJyYXkuZnJvbShlbmQucGFyZW50RWxlbWVudCEuY2hpbGRyZW4pLmluZGV4T2YoZW5kKTtcblxuICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydENvbCwgZW5kQ29sKTtcbiAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDb2wsIGVuZENvbCk7XG5cbiAgZm9yIChsZXQgciA9IG1pblJvdzsgciA8PSBtYXhSb3c7IHIrKykge1xuICAgIGNvbnN0IHJvdyA9IHJvd3Nbcl07XG4gICAgY29uc3QgY2VsbHMgPSBBcnJheS5mcm9tKHJvdy5jaGlsZHJlbik7XG4gICAgZm9yIChsZXQgYyA9IG1pbkNvbDsgYyA8PSBtYXhDb2w7IGMrKykge1xuICAgICAgKGNlbGxzW2NdIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZC1jZWxsJyk7XG4gICAgfVxuICB9XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmFibGUgc2VsZWN0aW9uIHRyw6puIHRhYmxlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlVGFibGVTZWxlY3Rpb24oY29udGFpbmVyOiBIVE1MRWxlbWVudCkge1xuICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKGUpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoKHRhcmdldC50YWdOYW1lID09PSAnVEQnICYmIGUuYnV0dG9uICE9PSAyKSB8fCAoZS5idXR0b24gPT09IDIgJiYgIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3NlbGVjdGVkLWNlbGwnKSkpIHtcbiAgICAgIGNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICBpc1NlbGVjdGluZyA9IHRydWU7XG4gICAgICBzdGFydENlbGwgPSB0YXJnZXQ7XG4gICAgICBlbmRDZWxsID0gdGFyZ2V0O1xuICAgICAgc2VsZWN0UmFuZ2VDZWxscyhzdGFydENlbGwsIGVuZENlbGwpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7XG4gICAgaWYgKCFpc1NlbGVjdGluZykgcmV0dXJuO1xuICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ1REJyAmJiBzdGFydENlbGwpIHtcbiAgICAgIGVuZENlbGwgPSB0YXJnZXQ7XG4gICAgICBzZWxlY3RSYW5nZUNlbGxzKHN0YXJ0Q2VsbCwgZW5kQ2VsbCk7XG4gICAgfVxuICB9KTtcblxuICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsICgpID0+IHtcbiAgICBpc1NlbGVjdGluZyA9IGZhbHNlO1xuICB9KTtcbn1cbmNvbnN0IG9uT3V0c2lkZSA9IChldjogTW91c2VFdmVudCkgPT4ge1xuICBjb25zdCB0YXJnZXQgPSBldi50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gIGlmICh0YXJnZXQudGFnTmFtZSAhPT0gJ1REJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RSJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RCT0RZJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RIRUFEJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RBQkxFJykge1xuICAgIGlzU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgc3RhcnRDZWxsID0gbnVsbDtcbiAgICBlbmRDZWxsID0gbnVsbDtcbiAgICBjbGVhclNlbGVjdGlvbigpO1xuICB9XG59O1xuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbk91dHNpZGUsIHRydWUpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZXJnZSBjZWxsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNvbnN0IG1lcmdlQ2VsbHMgPSAoc3RhcnRDZWxsOiBIVE1MRWxlbWVudCwgZW5kQ2VsbDogSFRNTEVsZW1lbnQpID0+IHtcbiAgY29uc3Qgc3RhcnRDZWxsSW5kZXggPSBzdGFydENlbGwuZ2V0QXR0cmlidXRlKCdpbmRleCcpO1xuICBjb25zdCBlbmRDZWxsSW5kZXggPSBlbmRDZWxsLmdldEF0dHJpYnV0ZSgnaW5kZXgnKTtcbiAgY29uc3Qgc3RhcnRDZWxsUm93ID0gcGFyc2VJbnQoc3RhcnRDZWxsSW5kZXg/LnNwbGl0KCctJylbMF0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IGVuZENlbGxSb3cgPSBwYXJzZUludChlbmRDZWxsSW5kZXg/LnNwbGl0KCctJylbMF0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IHN0YXJ0Q2VsbENvbCA9IHBhcnNlSW50KHN0YXJ0Q2VsbEluZGV4Py5zcGxpdCgnLScpWzFdIHx8ICcwJywgMTApO1xuICBjb25zdCBlbmRDZWxsQ29sID0gcGFyc2VJbnQoZW5kQ2VsbEluZGV4Py5zcGxpdCgnLScpWzFdIHx8ICcwJywgMTApO1xuICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydENlbGxSb3csIGVuZENlbGxSb3cpO1xuICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChzdGFydENlbGxSb3csIGVuZENlbGxSb3cpO1xuICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydENlbGxDb2wsIGVuZENlbGxDb2wpO1xuICBjb25zdCBtYXhDb2wgPSBNYXRoLm1heChzdGFydENlbGxDb2wsIGVuZENlbGxDb2wpO1xuXG4gIGNvbnN0IHJvd3MgPSBzdGFydENlbGwuY2xvc2VzdCgndGFibGUnKT8ucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgcm93cz8uZm9yRWFjaCgocm93RWwsIHJvd0luZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4IDwgbWluUm93IHx8IHJvd0luZGV4ID4gbWF4Um93KSByZXR1cm47XG5cbiAgICBjb25zdCBjZWxscyA9IHJvd0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkLCB0aCcpO1xuICAgIGNlbGxzLmZvckVhY2goKGNlbGxFbCwgY29sSW5kZXgpID0+IHtcbiAgICAgIGlmIChjb2xJbmRleCA8IG1pbkNvbCB8fCBjb2xJbmRleCA+IG1heENvbCkgcmV0dXJuO1xuICAgICAgaWYgKHJvd0luZGV4ID09PSBtaW5Sb3cgJiYgY29sSW5kZXggPT09IG1pbkNvbCkge1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgU3RyaW5nKG1heENvbCAtIG1pbkNvbCArIDEpKTtcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgncm93c3BhbicsIFN0cmluZyhtYXhSb3cgLSBtaW5Sb3cgKyAxKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNlbGxFbC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTcGxpdCBjZWxsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0Q2VsbHMoY2VsbFNwbGl0OiBIVE1MRWxlbWVudCkge1xuICBjb25zdCBpbmRleCA9IGNlbGxTcGxpdC5nZXRBdHRyaWJ1dGUoJ2luZGV4Jyk7XG4gIGxldCBjb2xTcGFuID0gcGFyc2VJbnQoY2VsbFNwbGl0LmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApO1xuICBsZXQgcm93U3BhbiA9IHBhcnNlSW50KGNlbGxTcGxpdC5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAnMScsIDEwKTtcbiAgY29uc3QgdG90YWxDZWxsU3BsaXQgPSByb3dTcGFuICogY29sU3BhbjtcbiAgbGV0IGNvdW50Q2VsbFNwbGl0ID0gMDtcbiAgY29uc3Qgcm93U3RhcnQgPSBwYXJzZUludChpbmRleD8uc3BsaXQoJy0nKVswXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgY29sU3RhcnQgPSBwYXJzZUludChpbmRleD8uc3BsaXQoJy0nKVsxXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgY29sSW5jcmVtZW50ID0gbmV3IFNldDxudW1iZXI+KCk7XG4gIGNvbnN0IHJvd0luY3JlbWVudCA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gIGNvbnN0IHJvd3MgPSBjZWxsU3BsaXQuY2xvc2VzdCgndGFibGUnKT8ucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgcm93cz8uZm9yRWFjaCgocm93RWwsIHJvd0luZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4IDwgcm93U3RhcnQpIHJldHVybjtcblxuICAgIGNvbnN0IGNlbGxzID0gcm93RWwucXVlcnlTZWxlY3RvckFsbCgndGQsIHRoJyk7XG4gICAgY2VsbHMuZm9yRWFjaCgoY2VsbEVsLCBjb2xJbmRleCkgPT4ge1xuICAgICAgaWYgKHJvd0luZGV4IDwgcm93U3RhcnQgfHwgY29sSW5kZXggPCBjb2xTdGFydCB8fCByb3dTdGFydCArIHJvd1NwYW4gPCByb3dJbmRleCB8fCBjb2xTdGFydCArIGNvbFNwYW4gPCBjb2xJbmRleCB8fCBjb3VudENlbGxTcGxpdCA+PSB0b3RhbENlbGxTcGxpdCkgcmV0dXJuO1xuICAgICAgaWYgKHJvd0luZGV4ID09PSByb3dTdGFydCAmJiBjb2xJbmRleCA9PT0gY29sU3RhcnQpIHtcbiAgICAgICAgY291bnRDZWxsU3BsaXQrKztcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICcxJyk7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCAnMScpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWNlbGxFbC5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgIGlmICghcm93SW5jcmVtZW50Lmhhcyhyb3dJbmRleCkpIHtcbiAgICAgICAgICByb3dTcGFuKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb2xJbmNyZW1lbnQuaGFzKGNvbEluZGV4KSkge1xuICAgICAgICAgIGNvbFNwYW4rKztcbiAgICAgICAgfVxuICAgICAgICByb3dJbmNyZW1lbnQuYWRkKHJvd0luZGV4KTtcbiAgICAgICAgY29sSW5jcmVtZW50LmFkZChjb2xJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNlbGxFbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgIGNvdW50Q2VsbFNwbGl0Kys7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0QWxsVGFibGVzV2l0aFNwYW4gPSAocXVpbGw6IGFueSkgPT4ge1xuICBjb25zdCByb290ID0gcXVpbGwucm9vdDtcblxuICAvLyBUw6xtIHThuqV0IGPhuqMgdGFibGUgdHJvbmcgcXVpbGxcbiAgY29uc3QgdGFibGVFbHMgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJyk7XG5cbiAgdGFibGVFbHMuZm9yRWFjaCgodGFibGVFbDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCByb3dzID0gdGFibGVFbC5xdWVyeVNlbGVjdG9yQWxsKCd0cicpO1xuICAgIHJvd3MuZm9yRWFjaCgocm93RWwsIHJJbmRleCkgPT4ge1xuICAgICAgcm93RWwuc2V0QXR0cmlidXRlKCdpbmRleCcsIGAke3JJbmRleH1gKTtcbiAgICAgIGNvbnN0IGNlbGxzID0gcm93RWwucXVlcnlTZWxlY3RvckFsbCgndGQsIHRoJyk7XG4gICAgICBjZWxscy5mb3JFYWNoKChjZWxsRWwsIGNJbmRleCkgPT4ge1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdpbmRleCcsIGAke3JJbmRleH0tJHtjSW5kZXh9YCk7XG4gICAgICAgIGNvbnN0IHJvd3NwYW4gPSBwYXJzZUludChjZWxsRWwuZ2V0QXR0cmlidXRlKCdyb3dzcGFuJykgfHwgJzEnLCAxMCk7XG4gICAgICAgIGNvbnN0IGNvbHNwYW4gPSBwYXJzZUludChjZWxsRWwuZ2V0QXR0cmlidXRlKCdjb2xzcGFuJykgfHwgJzEnLCAxMCk7XG5cbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgncm93c3BhbicsIFN0cmluZyhyb3dzcGFuKSk7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCBTdHJpbmcoY29sc3BhbikpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmxldCByZWdpc3RlciA9IGZhbHNlO1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUXVpbGwyeCA9ICgpID0+IHtcbiAgaWYgKHJlZ2lzdGVyKSByZXR1cm47XG4gIHJlZ2lzdGVyID0gdHJ1ZTtcblxuICBjb25zdCBRdWlsbCA9IFF1aWxsMnggYXMgYW55O1xuXG4gIGNvbnN0IHNpemUgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL3NpemUnKTtcbiAgY29uc3QgYWxpZ25TdHlsZSA9IFF1aWxsLmltcG9ydCgnYXR0cmlidXRvcnMvc3R5bGUvYWxpZ24nKTtcbiAgY29uc3QgaXRhbGljID0gUXVpbGwuaW1wb3J0KCdmb3JtYXRzL2l0YWxpYycpO1xuICBjb25zdCBib2xkID0gUXVpbGwuaW1wb3J0KCdmb3JtYXRzL2JvbGQnKTtcbiAgY29uc3QgaWNvbnMgPSBRdWlsbC5pbXBvcnQoJ3VpL2ljb25zJyk7XG4gIHNpemUud2hpdGVsaXN0ID0gZm9udFNpemVXaGl0ZUxpc3QoKTtcblxuICBpdGFsaWMudGFnTmFtZSA9ICdpJztcbiAgYm9sZC50YWdOYW1lID0gJ2InO1xuXG4gIFF1aWxsLnJlZ2lzdGVyKGJvbGQsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihpdGFsaWMsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihzaXplLCB0cnVlKTtcbiAgUXVpbGwucmVnaXN0ZXIoYWxpZ25TdHlsZSwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKFF1aWxsTWVudGlvbjJ4QmxvdCwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKEN1c3RvbUltYWdlMnhCbG90LCB0cnVlKTtcbiAgUXVpbGwucmVnaXN0ZXIoJ21vZHVsZXMvcmVzaXplJywgUmVzaXplTW9kdWxlKTtcbiAgWy4uLmljb25MaXN0KCldLmZvckVhY2goKGVsZW1lbnQpID0+IHNldChpY29ucywgZWxlbWVudC5rZXksIGA8c3BhbiBjbGFzcz1cIiR7ZWxlbWVudC5pY29ufSAke2VsZW1lbnQua2V5ID09PSAndW5MaW5rJyA/ICdob3Zlcjp0ZXh0LVsjZWUyZDQxXSAnIDogJ2hvdmVyOnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMSldJ30gdGV4dC1bMTZweF0gdGV4dC1bIzZhNzM4M11cIj48L3NwYW4+YCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRW1wdHlRdWlsbCA9IChxdWlsbD86IFF1aWxsMngpID0+IHtcbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBxdWlsbD8ucm9vdDtcbiAgaWYgKCFyb290RWxlbWVudCkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IGh0bWwgPSByb290RWxlbWVudC5pbm5lckhUTUwudHJpbSgpO1xuICByZXR1cm4gaHRtbCA9PT0gJzxwPjxicj48L3A+JyB8fCBodG1sID09PSAnPHA+PC9wPicgfHwgaHRtbCA9PT0gJycgfHwgaHRtbCA9PT0gJzxwPjxzcGFuIGNsYXNzPVwicWwtY3Vyc29yXCI+PC9zcGFuPjxicj48L3A+JyB8fCByb290RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3FsLWJsYW5rJyk7XG59O1xuIl19
444
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwyeC5kZWZpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsL3NyYy91dGlscy9xdWlsbDJ4LmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsSUFBSSxTQUFTLEdBQXVCLElBQUksQ0FBQztBQUN6QyxJQUFJLE9BQU8sR0FBdUIsSUFBSSxDQUFDO0FBQ3ZDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztBQUV4Qix1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFjLEVBQUUsUUFBNEIsRUFBRSxTQUEyQixFQUFFLEVBQUU7SUFDL0csZ0NBQWdDO0lBQ2hDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0RyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7SUFDekMsS0FB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VSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLGdCQUFnQixPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsMkNBQTJDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQztBQUN4TyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQUU7SUFDcEQsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQztJQUNoQyxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzlCLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUMsT0FBTyxJQUFJLEtBQUssYUFBYSxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFJLEtBQUssNENBQTRDLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDNUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xuaW1wb3J0IHsgc2V0LCBzZXRTdHlsZXNFbGVtZW50IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IFJlc2l6ZU1vZHVsZSBmcm9tICdAc3N1bW8vcXVpbGwtcmVzaXplLW1vZHVsZSc7XG5pbXBvcnQgUXVpbGwyeCBmcm9tICdxdWlsbDJ4JztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3VzdG9tSW1hZ2UyeEJsb3QsIFF1aWxsTWVudGlvbjJ4QmxvdCB9IGZyb20gJy4uL2Jsb3RzLWN1c3RvbS9pbmRleDJ4JztcbmltcG9ydCB7IGZvbnRTaXplV2hpdGVMaXN0LCBpY29uTGlzdCB9IGZyb20gJy4vcXVpbGwuZGVmaW5lJztcbmxldCBzdGFydENlbGw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5sZXQgZW5kQ2VsbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbmxldCBpc1NlbGVjdGluZyA9IGZhbHNlO1xuXG4vL3JlZ2lvbiBGdW5jdGlvbiBUYWJsZVxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRhYmxlU2VsZWN0b3IgPSAocXVpbGw6IFF1aWxsMngsIGFuY2hvckVsOiBIVE1MRWxlbWVudCB8IG51bGwsIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkgPT4ge1xuICAvLyDEkMOzbmcgcG9wdXAgY8WpIG7hur91IGPDsm4gdOG7k24gdOG6oWlcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1hbnVhbC10YWJsZS1jcmVhdG9yJykuZm9yRWFjaCgoZWwpID0+IGVsLnBhcmVudEVsZW1lbnQ/LnJlbW92ZUNoaWxkKGVsKSk7XG5cbiAgY29uc3QgcG9wdXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgcG9wdXAuY2xhc3NOYW1lID0gJ21hbnVhbC10YWJsZS1jcmVhdG9yJztcbiAgcG9wdXAuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICBwb3B1cC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnO1xuICBwb3B1cC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNkZGQnO1xuICBwb3B1cC5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNnB4JztcbiAgcG9wdXAuc3R5bGUuYm94U2hhZG93ID0gJzAgNnB4IDE2cHggcmdiYSgwLDAsMCwwLjEyKSc7XG4gIHBvcHVwLnN0eWxlLnBhZGRpbmcgPSAnMTJweCc7XG4gIHBvcHVwLnN0eWxlLnpJbmRleCA9ICcxMDAwMCc7XG4gIHBvcHVwLnN0eWxlLm1pbldpZHRoID0gJzIwMHB4JztcbiAgc2V0U3R5bGVzRWxlbWVudChwb3B1cCwge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIGJhY2tncm91bmQ6ICcjZmZmJyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2RkZCcsXG4gICAgYm9yZGVyUmFkaXVzOiAnNnB4JyxcbiAgICBib3hTaGFkb3c6ICcwIDZweCAxNnB4IHJnYmEoMCwwLDAsMC4xMiknLFxuICAgIHBhZGRpbmc6ICcxMnB4JyxcbiAgICB6SW5kZXg6ICcxMDAwMCcsXG4gICAgbWluV2lkdGg6ICcyMDBweCcsXG4gIH0pO1xuXG4gIGNvbnN0IGluZm8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgaW5mby50ZXh0Q29udGVudCA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX3NlbGVjdF9jZWxsJyk7XG4gIHNldFN0eWxlc0VsZW1lbnQoaW5mbywge1xuICAgIGZvbnRTaXplOiAnMTJweCcsXG4gICAgY29sb3I6ICcjMzMzJyxcbiAgICBtYXJnaW5Cb3R0b206ICcxMHB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIGZvbnRXZWlnaHQ6ICc2MDAnLFxuICB9KTtcbiAgcG9wdXAuYXBwZW5kQ2hpbGQoaW5mbyk7XG5cbiAgY29uc3QgZ3JpZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBzZXRTdHlsZXNFbGVtZW50KGdyaWQsIHtcbiAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJ3JlcGVhdCg4LCAxOHB4KScsXG4gICAgZ2FwOiAnNHB4JyxcbiAgfSk7XG5cbiAgY29uc3QgbWF4ID0gODtcbiAgZm9yIChsZXQgcm93ID0gMTsgcm93IDw9IG1heDsgcm93KyspIHtcbiAgICBmb3IgKGxldCBjb2wgPSAxOyBjb2wgPD0gbWF4OyBjb2wrKykge1xuICAgICAgY29uc3QgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgY2VsbC5zdHlsZS53aWR0aCA9ICcxOHB4JztcbiAgICAgIGNlbGwuc3R5bGUuaGVpZ2h0ID0gJzE4cHgnO1xuICAgICAgY2VsbC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNlNWU3ZWInO1xuICAgICAgY2VsbC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnO1xuICAgICAgY2VsbC5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG5cbiAgICAgIGNlbGwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHtcbiAgICAgICAgaW5mby50ZXh0Q29udGVudCA9IGAke3Jvd30gw5cgJHtjb2x9YDtcbiAgICAgICAgQXJyYXkuZnJvbShncmlkLmNoaWxkcmVuKS5mb3JFYWNoKChlbCwgaWR4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcnIgPSBNYXRoLmZsb29yKGlkeCAvIG1heCkgKyAxO1xuICAgICAgICAgIGNvbnN0IGNjID0gKGlkeCAlIG1heCkgKyAxO1xuICAgICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYmFja2dyb3VuZCA9IHJyIDw9IHJvdyAmJiBjYyA8PSBjb2wgPyAnI2RiZWFmZScgOiAnI2ZmZic7XG4gICAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5ib3JkZXJDb2xvciA9IHJyIDw9IHJvdyAmJiBjYyA8PSBjb2wgPyAnIzkzYzVmZCcgOiAnI2U1ZTdlYic7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGNlbGwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcXVpbGwuZm9jdXMoKTtcbiAgICAgICAgICBjb25zdCB0YWJsZU1vZHVsZSA9IHF1aWxsLmdldE1vZHVsZSgndGFibGUnKSBhcyBhbnk7XG4gICAgICAgICAgaWYgKHRhYmxlTW9kdWxlICYmIHR5cGVvZiB0YWJsZU1vZHVsZS5pbnNlcnRUYWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGFibGVNb2R1bGUuaW5zZXJ0VGFibGUocm93LCBjb2wpO1xuICAgICAgICAgICAgZ2V0QWxsVGFibGVzV2l0aFNwYW4ocXVpbGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jb250YWlucyhwb3B1cCkpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocG9wdXApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIG9uT3V0c2lkZUNsaWNrLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGdyaWQuYXBwZW5kQ2hpbGQoY2VsbCk7XG4gICAgfVxuICB9XG4gIHBvcHVwLmFwcGVuZENoaWxkKGdyaWQpO1xuXG4gIGNvbnN0IHBsYWNlUG9wdXAgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGFuY2hvckVsPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB0b3AgPSByZWN0ID8gcmVjdC5ib3R0b20gKyB3aW5kb3cuc2Nyb2xsWSArIDYgOiAxMDA7XG4gICAgY29uc3QgbGVmdCA9IHJlY3QgPyByZWN0LmxlZnQgKyB3aW5kb3cuc2Nyb2xsWCA6IDEwMDtcbiAgICBwb3B1cC5zdHlsZS50b3AgPSBgJHt0b3B9cHhgO1xuICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgfTtcblxuICBjb25zdCBvbk91dHNpZGVDbGljayA9IChldjogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghcG9wdXAuY29udGFpbnMoZXYudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuYm9keS5jb250YWlucyhwb3B1cCkpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwb3B1cCk7XG4gICAgICB9XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIG9uT3V0c2lkZUNsaWNrLCB0cnVlKTtcbiAgICB9XG4gIH07XG5cbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwb3B1cCk7XG4gIHBsYWNlUG9wdXAoKTtcbiAgc2V0VGltZW91dCgoKSA9PiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uT3V0c2lkZUNsaWNrLCB0cnVlKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29udGV4dE1lbnVPcHRpb25UYWJsZSA9IChxdWlsbDogUXVpbGwyeCwgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSA9PiB7XG4gIGxldCBsYXN0Q29udGV4dEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBjbG9zZUFueU1lbnUgPSAoKSA9PiB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1hbnVhbC10YWJsZS1tZW51JykuZm9yRWFjaCgoZWwpID0+IGVsLnBhcmVudEVsZW1lbnQ/LnJlbW92ZUNoaWxkKGVsKSk7XG4gIH07XG5cbiAgY29uc3QgcnVuV2l0aFNlbGVjdGlvbiA9IChmbjogKCkgPT4gdm9pZCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBxdWlsbC5mb2N1cygpO1xuICAgICAgaWYgKHR5cGVvZiBsYXN0Q29udGV4dEluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBxdWlsbC5zZXRTZWxlY3Rpb24obGFzdENvbnRleHRJbmRleCwgMCwgJ3NpbGVudCcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLyogbm8tb3A6IGdp4buvIHnDqm4gbuG6v3Uga2jDtG5nIHRo4buDIHNldCBzZWxlY3Rpb24gKi9cbiAgICB9XG4gICAgZm4oKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVNZW51SXRlbSA9IChsYWJlbDogc3RyaW5nLCBvbkNsaWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgY29uc3QgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGl0ZW0udGV4dENvbnRlbnQgPSBsYWJlbDtcbiAgICBpdGVtLnN0eWxlLnBhZGRpbmcgPSAnNnB4IDEycHgnO1xuICAgIGl0ZW0uc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgIGl0ZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICBydW5XaXRoU2VsZWN0aW9uKG9uQ2xpY2spO1xuICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgfSk7XG4gICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmNWY1ZjUnO1xuICAgIH0pO1xuICAgIGl0ZW0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgIGl0ZW0uc3R5bGUuYmFja2dyb3VuZCA9ICd0cmFuc3BhcmVudCc7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG5cbiAgY29uc3Qgb3BlbkNvbnRleHRNZW51ID0gKHBhZ2VYOiBudW1iZXIsIHBhZ2VZOiBudW1iZXIpID0+IHtcbiAgICBjbG9zZUFueU1lbnUoKTtcblxuICAgIGNvbnN0IG1lbnUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBtZW51LmNsYXNzTmFtZSA9ICdtYW51YWwtdGFibGUtbWVudSc7XG4gICAgbWVudS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgbWVudS5zdHlsZS50b3AgPSBgJHtwYWdlWX1weGA7XG4gICAgbWVudS5zdHlsZS5sZWZ0ID0gYCR7cGFnZVh9cHhgO1xuICAgIG1lbnUuc3R5bGUuYmFja2dyb3VuZCA9ICcjZmZmJztcbiAgICBtZW51LnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2NjYyc7XG4gICAgbWVudS5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4JztcbiAgICBtZW51LnN0eWxlLmJveFNoYWRvdyA9ICcwIDRweCAxMnB4IHJnYmEoMCwwLDAsMC4yKSc7XG4gICAgbWVudS5zdHlsZS56SW5kZXggPSAnMTAwMDEnO1xuICAgIG1lbnUuc3R5bGUucGFkZGluZyA9ICc0cHgnO1xuICAgIG1lbnUuc3R5bGUubWluV2lkdGggPSAnMTgwcHgnO1xuXG4gICAgY29uc3QgdGFibGVNb2R1bGUgPSBxdWlsbC5nZXRNb2R1bGUoJ3RhYmxlJykgYXMgUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGw7XG4gICAgY29uc3Qgc2FmZUNhbGwgPSAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICBpZiAobWV0aG9kID09PSAnbWVyZ2VDZWxscycpIHtcbiAgICAgICAgY29uc3QgW3N0YXJ0Q2VsbCwgZW5kQ2VsbF0gPSBhcmdzO1xuICAgICAgICBtZXJnZUNlbGxzKHN0YXJ0Q2VsbCwgZW5kQ2VsbCk7XG4gICAgICAgIGNsb3NlQW55TWVudSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAobWV0aG9kID09PSAnc3BsaXRDZWxscycpIHtcbiAgICAgICAgY29uc3QgW3N0YXJ0Q2VsbF0gPSBhcmdzO1xuICAgICAgICBzcGxpdENlbGxzKHN0YXJ0Q2VsbCk7XG4gICAgICAgIGNsb3NlQW55TWVudSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGFibGVNb2R1bGUgJiYgdHlwZW9mIHRhYmxlTW9kdWxlW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGFibGVNb2R1bGVbbWV0aG9kXSguLi5hcmdzKTtcbiAgICAgICAgZ2V0QWxsVGFibGVzV2l0aFNwYW4ocXVpbGwpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2FkZF9uZXdfcm93X2Fib3ZlJyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRSb3dBYm92ZScpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9hZGRfbmV3X3Jvd19iZWxvdycpLCAoKSA9PiBzYWZlQ2FsbCgnaW5zZXJ0Um93QmVsb3cnKSkpO1xuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fYWRkX25ld19jb2x1bW5fbGVmdCcpLCAoKSA9PiBzYWZlQ2FsbCgnaW5zZXJ0Q29sdW1uTGVmdCcpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9hZGRfbmV3X2NvbHVtbl9yaWdodCcpLCAoKSA9PiBzYWZlQ2FsbCgnaW5zZXJ0Q29sdW1uUmlnaHQnKSkpO1xuICAgIGNvbnN0IGRpdmlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXZpZGVyLnN0eWxlLmhlaWdodCA9ICcxcHgnO1xuICAgIGRpdmlkZXIuc3R5bGUuYmFja2dyb3VuZCA9ICcjZWVlJztcbiAgICBkaXZpZGVyLnN0eWxlLm1hcmdpbiA9ICc0cHggMCc7XG4gICAgbWVudS5hcHBlbmRDaGlsZChkaXZpZGVyKTtcbiAgICBpZiAoc3RhcnRDZWxsICYmIGVuZENlbGwpIHtcbiAgICAgIGNvbnN0IHN0YXJ0Q2VsbFN0b3JlID0gc3RhcnRDZWxsO1xuICAgICAgY29uc3QgZW5kQ2VsbFN0b3JlID0gZW5kQ2VsbDtcbiAgICAgIGNvbnN0IGNvbHNwYW4gPSBwYXJzZUludChzdGFydENlbGxTdG9yZS5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKSB8fCAnMScsIDEwKTtcbiAgICAgIGNvbnN0IHJvd3NwYW4gPSBwYXJzZUludChzdGFydENlbGxTdG9yZS5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAnMScsIDEwKTtcbiAgICAgIGxldCB0b3RhbE1lbnUgPSAwO1xuICAgICAgaWYgKHN0YXJ0Q2VsbCAhPT0gZW5kQ2VsbCkge1xuICAgICAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX21lcmdlX2NlbGxzJyksICgpID0+IHNhZmVDYWxsKCdtZXJnZUNlbGxzJywgc3RhcnRDZWxsU3RvcmUsIGVuZENlbGxTdG9yZSkpKTtcbiAgICAgICAgdG90YWxNZW51Kys7XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnRDZWxsID09PSBlbmRDZWxsICYmIChjb2xzcGFuID4gMSB8fCByb3dzcGFuID4gMSkpIHtcbiAgICAgICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9zcGxpdF9jZWxscycpLCAoKSA9PiBzYWZlQ2FsbCgnc3BsaXRDZWxscycsIHN0YXJ0Q2VsbFN0b3JlKSkpO1xuICAgICAgICB0b3RhbE1lbnUrKztcbiAgICAgIH1cblxuICAgICAgaWYgKHRvdGFsTWVudSA+IDApIHtcbiAgICAgICAgY29uc3QgZGl2aWRlcjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZGl2aWRlcjIuc3R5bGUuaGVpZ2h0ID0gJzFweCc7XG4gICAgICAgIGRpdmlkZXIyLnN0eWxlLmJhY2tncm91bmQgPSAnI2VlZSc7XG4gICAgICAgIGRpdmlkZXIyLnN0eWxlLm1hcmdpbiA9ICc0cHggMCc7XG4gICAgICAgIG1lbnUuYXBwZW5kQ2hpbGQoZGl2aWRlcjIpO1xuICAgICAgfVxuICAgIH1cbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2RlbGV0ZV9yb3cnKSwgKCkgPT4gc2FmZUNhbGwoJ2RlbGV0ZVJvdycpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9kZWxldGVfY29sdW1uJyksICgpID0+IHNhZmVDYWxsKCdkZWxldGVDb2x1bW4nKSkpO1xuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fZGVsZXRlX3RhYmxlJyksICgpID0+IHNhZmVDYWxsKCdkZWxldGVUYWJsZScpKSk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1lbnUpO1xuXG4gICAgY29uc3Qgb25PdXRzaWRlID0gKGV2OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoIW1lbnUuY29udGFpbnMoZXYudGFyZ2V0IGFzIE5vZGUpIHx8IChldi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0YWJsZScpLmxlbmd0aCA8IDApIHtcbiAgICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHNldFRpbWVvdXQoKCkgPT4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbk91dHNpZGUsIHRydWUpKTtcblxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwsIHRydWUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uU2Nyb2xsLCB0cnVlKTtcbiAgICB9O1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgdHJ1ZSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uU2Nyb2xsLCB0cnVlKTtcbiAgfTtcblxuICBmcm9tRXZlbnQ8TW91c2VFdmVudD4ocXVpbGwucm9vdCwgJ2NvbnRleHRtZW51Jykuc3Vic2NyaWJlKChldjogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBpc0NlbGwgPSAhIXRhcmdldC5jbG9zZXN0KCd0ZCx0aCx0YWJsZSwucWwtdGFibGUnKTtcbiAgICBpZiAoIWlzQ2VsbCkgcmV0dXJuO1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIMavdSB0acOqbiBs4bqleSBpbmRleCB04burIGJsb3QgdMawxqFuZyDhu6luZyBub2RlXG4gICAgICBjb25zdCBRdWlsbEFueSA9IFF1aWxsMnggYXMgYW55O1xuICAgICAgY29uc3QgYmxvdCA9IFF1aWxsQW55Py5maW5kPy4odGFyZ2V0KTtcbiAgICAgIGlmIChibG90ICYmIHR5cGVvZiBibG90Lm9mZnNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsYXN0Q29udGV4dEluZGV4ID0gYmxvdC5vZmZzZXQocXVpbGwuc2Nyb2xsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZhbGxiYWNrOiDEkeG6t3Qgc2VsZWN0aW9uIGhp4buHbiB04bqhaSBu4bq/dSBraMO0bmcgeMOhYyDEkeG7i25oIMSRxrDhu6NjXG4gICAgICAgIGNvbnN0IHNlbCA9IHF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgICAgbGFzdENvbnRleHRJbmRleCA9IHNlbCA/IHNlbC5pbmRleCA6IDA7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb25zdCBzZWwgPSBxdWlsbC5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgICBsYXN0Q29udGV4dEluZGV4ID0gc2VsID8gc2VsLmluZGV4IDogMDtcbiAgICB9XG4gICAgcXVpbGwuZm9jdXMoKTtcbiAgICBvcGVuQ29udGV4dE1lbnUoZXYucGFnZVgsIGV2LnBhZ2VZKTtcbiAgfSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVdGlsczogY2xlYXIgdsOgIHNlbGVjdCBjZWxsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBjbGVhclNlbGVjdGlvbiA9ICgpID0+IHtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNlbGVjdGVkLWNlbGwnKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgYy5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZC1jZWxsJyk7XG4gIH0pO1xufTtcblxuY29uc3Qgc2VsZWN0UmFuZ2VDZWxscyA9IChzdGFydDogSFRNTEVsZW1lbnQsIGVuZDogSFRNTEVsZW1lbnQpID0+IHtcbiAgY2xlYXJTZWxlY3Rpb24oKTtcbiAgY29uc3QgdGFibGUgPSBzdGFydC5jbG9zZXN0KCd0YWJsZScpO1xuICBpZiAoIXRhYmxlIHx8IHRhYmxlICE9PSBlbmQuY2xvc2VzdCgndGFibGUnKSkgcmV0dXJuO1xuXG4gIGNvbnN0IHJvd3MgPSBBcnJheS5mcm9tKHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpO1xuICBjb25zdCBzdGFydFJvdyA9IHJvd3MuaW5kZXhPZihzdGFydC5wYXJlbnRFbGVtZW50IGFzIEhUTUxUYWJsZVJvd0VsZW1lbnQpO1xuICBjb25zdCBlbmRSb3cgPSByb3dzLmluZGV4T2YoZW5kLnBhcmVudEVsZW1lbnQgYXMgSFRNTFRhYmxlUm93RWxlbWVudCk7XG5cbiAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnRSb3csIGVuZFJvdyk7XG4gIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KHN0YXJ0Um93LCBlbmRSb3cpO1xuXG4gIGNvbnN0IHN0YXJ0Q29sID0gQXJyYXkuZnJvbShzdGFydC5wYXJlbnRFbGVtZW50IS5jaGlsZHJlbikuaW5kZXhPZihzdGFydCk7XG4gIGNvbnN0IGVuZENvbCA9IEFycmF5LmZyb20oZW5kLnBhcmVudEVsZW1lbnQhLmNoaWxkcmVuKS5pbmRleE9mKGVuZCk7XG5cbiAgY29uc3QgbWluQ29sID0gTWF0aC5taW4oc3RhcnRDb2wsIGVuZENvbCk7XG4gIGNvbnN0IG1heENvbCA9IE1hdGgubWF4KHN0YXJ0Q29sLCBlbmRDb2wpO1xuXG4gIGZvciAobGV0IHIgPSBtaW5Sb3c7IHIgPD0gbWF4Um93OyByKyspIHtcbiAgICBjb25zdCByb3cgPSByb3dzW3JdO1xuICAgIGNvbnN0IGNlbGxzID0gQXJyYXkuZnJvbShyb3cuY2hpbGRyZW4pO1xuICAgIGZvciAobGV0IGMgPSBtaW5Db2w7IGMgPD0gbWF4Q29sOyBjKyspIHtcbiAgICAgIChjZWxsc1tjXSBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQtY2VsbCcpO1xuICAgIH1cbiAgfVxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRW5hYmxlIHNlbGVjdGlvbiB0csOqbiB0YWJsZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZVRhYmxlU2VsZWN0aW9uKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKCh0YXJnZXQudGFnTmFtZSA9PT0gJ1REJyAmJiBlLmJ1dHRvbiAhPT0gMikgfHwgKGUuYnV0dG9uID09PSAyICYmICF0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3RlZC1jZWxsJykpKSB7XG4gICAgICBjbGVhclNlbGVjdGlvbigpO1xuICAgICAgaXNTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgc3RhcnRDZWxsID0gdGFyZ2V0O1xuICAgICAgZW5kQ2VsbCA9IHRhcmdldDtcbiAgICAgIHNlbGVjdFJhbmdlQ2VsbHMoc3RhcnRDZWxsLCBlbmRDZWxsKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAoZSkgPT4ge1xuICAgIGlmICghaXNTZWxlY3RpbmcpIHJldHVybjtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdURCcgJiYgc3RhcnRDZWxsKSB7XG4gICAgICBlbmRDZWxsID0gdGFyZ2V0O1xuICAgICAgc2VsZWN0UmFuZ2VDZWxscyhzdGFydENlbGwsIGVuZENlbGwpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgfSk7XG59XG5jb25zdCBvbk91dHNpZGUgPSAoZXY6IE1vdXNlRXZlbnQpID0+IHtcbiAgY29uc3QgdGFyZ2V0ID0gZXYudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICBpZiAodGFyZ2V0LnRhZ05hbWUgIT09ICdURCcgJiYgdGFyZ2V0LnRhZ05hbWUgIT09ICdUUicgJiYgdGFyZ2V0LnRhZ05hbWUgIT09ICdUQk9EWScgJiYgdGFyZ2V0LnRhZ05hbWUgIT09ICdUSEVBRCcgJiYgdGFyZ2V0LnRhZ05hbWUgIT09ICdUQUJMRScpIHtcbiAgICBpc1NlbGVjdGluZyA9IGZhbHNlO1xuICAgIHN0YXJ0Q2VsbCA9IG51bGw7XG4gICAgZW5kQ2VsbCA9IG51bGw7XG4gICAgY2xlYXJTZWxlY3Rpb24oKTtcbiAgfVxufTtcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlLCB0cnVlKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVyZ2UgY2VsbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBjb25zdCBtZXJnZUNlbGxzID0gKHN0YXJ0Q2VsbDogSFRNTEVsZW1lbnQsIGVuZENlbGw6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHN0YXJ0Q2VsbEluZGV4ID0gc3RhcnRDZWxsLmdldEF0dHJpYnV0ZSgnaW5kZXgnKTtcbiAgY29uc3QgZW5kQ2VsbEluZGV4ID0gZW5kQ2VsbC5nZXRBdHRyaWJ1dGUoJ2luZGV4Jyk7XG4gIGNvbnN0IHN0YXJ0Q2VsbFJvdyA9IHBhcnNlSW50KHN0YXJ0Q2VsbEluZGV4Py5zcGxpdCgnLScpWzBdIHx8ICcwJywgMTApO1xuICBjb25zdCBlbmRDZWxsUm93ID0gcGFyc2VJbnQoZW5kQ2VsbEluZGV4Py5zcGxpdCgnLScpWzBdIHx8ICcwJywgMTApO1xuICBjb25zdCBzdGFydENlbGxDb2wgPSBwYXJzZUludChzdGFydENlbGxJbmRleD8uc3BsaXQoJy0nKVsxXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgZW5kQ2VsbENvbCA9IHBhcnNlSW50KGVuZENlbGxJbmRleD8uc3BsaXQoJy0nKVsxXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnRDZWxsUm93LCBlbmRDZWxsUm93KTtcbiAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnRDZWxsUm93LCBlbmRDZWxsUm93KTtcbiAgY29uc3QgbWluQ29sID0gTWF0aC5taW4oc3RhcnRDZWxsQ29sLCBlbmRDZWxsQ29sKTtcbiAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDZWxsQ29sLCBlbmRDZWxsQ29sKTtcblxuICBjb25zdCByb3dzID0gc3RhcnRDZWxsLmNsb3Nlc3QoJ3RhYmxlJyk/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJyk7XG4gIHJvd3M/LmZvckVhY2goKHJvd0VsLCByb3dJbmRleCkgPT4ge1xuICAgIGlmIChyb3dJbmRleCA8IG1pblJvdyB8fCByb3dJbmRleCA+IG1heFJvdykgcmV0dXJuO1xuXG4gICAgY29uc3QgY2VsbHMgPSByb3dFbC5xdWVyeVNlbGVjdG9yQWxsKCd0ZCwgdGgnKTtcbiAgICBjZWxscy5mb3JFYWNoKChjZWxsRWwsIGNvbEluZGV4KSA9PiB7XG4gICAgICBpZiAoY29sSW5kZXggPCBtaW5Db2wgfHwgY29sSW5kZXggPiBtYXhDb2wpIHJldHVybjtcbiAgICAgIGlmIChyb3dJbmRleCA9PT0gbWluUm93ICYmIGNvbEluZGV4ID09PSBtaW5Db2wpIHtcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsIFN0cmluZyhtYXhDb2wgLSBtaW5Db2wgKyAxKSk7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCBTdHJpbmcobWF4Um93IC0gbWluUm93ICsgMSkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjZWxsRWwuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU3BsaXQgY2VsbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdENlbGxzKGNlbGxTcGxpdDogSFRNTEVsZW1lbnQpIHtcbiAgY29uc3QgaW5kZXggPSBjZWxsU3BsaXQuZ2V0QXR0cmlidXRlKCdpbmRleCcpO1xuICBsZXQgY29sU3BhbiA9IHBhcnNlSW50KGNlbGxTcGxpdC5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKSB8fCAnMScsIDEwKTtcbiAgbGV0IHJvd1NwYW4gPSBwYXJzZUludChjZWxsU3BsaXQuZ2V0QXR0cmlidXRlKCdyb3dzcGFuJykgfHwgJzEnLCAxMCk7XG4gIGNvbnN0IHRvdGFsQ2VsbFNwbGl0ID0gcm93U3BhbiAqIGNvbFNwYW47XG4gIGxldCBjb3VudENlbGxTcGxpdCA9IDA7XG4gIGNvbnN0IHJvd1N0YXJ0ID0gcGFyc2VJbnQoaW5kZXg/LnNwbGl0KCctJylbMF0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IGNvbFN0YXJ0ID0gcGFyc2VJbnQoaW5kZXg/LnNwbGl0KCctJylbMV0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IGNvbEluY3JlbWVudCA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICBjb25zdCByb3dJbmNyZW1lbnQgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICBjb25zdCByb3dzID0gY2VsbFNwbGl0LmNsb3Nlc3QoJ3RhYmxlJyk/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJyk7XG4gIHJvd3M/LmZvckVhY2goKHJvd0VsLCByb3dJbmRleCkgPT4ge1xuICAgIGlmIChyb3dJbmRleCA8IHJvd1N0YXJ0KSByZXR1cm47XG5cbiAgICBjb25zdCBjZWxscyA9IHJvd0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkLCB0aCcpO1xuICAgIGNlbGxzLmZvckVhY2goKGNlbGxFbCwgY29sSW5kZXgpID0+IHtcbiAgICAgIGlmIChyb3dJbmRleCA8IHJvd1N0YXJ0IHx8IGNvbEluZGV4IDwgY29sU3RhcnQgfHwgcm93U3RhcnQgKyByb3dTcGFuIDwgcm93SW5kZXggfHwgY29sU3RhcnQgKyBjb2xTcGFuIDwgY29sSW5kZXggfHwgY291bnRDZWxsU3BsaXQgPj0gdG90YWxDZWxsU3BsaXQpIHJldHVybjtcbiAgICAgIGlmIChyb3dJbmRleCA9PT0gcm93U3RhcnQgJiYgY29sSW5kZXggPT09IGNvbFN0YXJ0KSB7XG4gICAgICAgIGNvdW50Q2VsbFNwbGl0Kys7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCAnMScpO1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdyb3dzcGFuJywgJzEnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFjZWxsRWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSkge1xuICAgICAgICBpZiAoIXJvd0luY3JlbWVudC5oYXMocm93SW5kZXgpKSB7XG4gICAgICAgICAgcm93U3BhbisrO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY29sSW5jcmVtZW50Lmhhcyhjb2xJbmRleCkpIHtcbiAgICAgICAgICBjb2xTcGFuKys7XG4gICAgICAgIH1cbiAgICAgICAgcm93SW5jcmVtZW50LmFkZChyb3dJbmRleCk7XG4gICAgICAgIGNvbEluY3JlbWVudC5hZGQoY29sSW5kZXgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjZWxsRWwuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICBjb3VudENlbGxTcGxpdCsrO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFsbFRhYmxlc1dpdGhTcGFuID0gKHF1aWxsOiBhbnkpID0+IHtcbiAgY29uc3Qgcm9vdCA9IHF1aWxsLnJvb3Q7XG5cbiAgLy8gVMOsbSB04bqldCBj4bqjIHRhYmxlIHRyb25nIHF1aWxsXG4gIGNvbnN0IHRhYmxlRWxzID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZScpO1xuXG4gIHRhYmxlRWxzLmZvckVhY2goKHRhYmxlRWw6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlRWwucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgICByb3dzLmZvckVhY2goKHJvd0VsLCBySW5kZXgpID0+IHtcbiAgICAgIHJvd0VsLnNldEF0dHJpYnV0ZSgnaW5kZXgnLCBgJHtySW5kZXh9YCk7XG4gICAgICBjb25zdCBjZWxscyA9IHJvd0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkLCB0aCcpO1xuICAgICAgY2VsbHMuZm9yRWFjaCgoY2VsbEVsLCBjSW5kZXgpID0+IHtcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgnaW5kZXgnLCBgJHtySW5kZXh9LSR7Y0luZGV4fWApO1xuICAgICAgICBjb25zdCByb3dzcGFuID0gcGFyc2VJbnQoY2VsbEVsLmdldEF0dHJpYnV0ZSgncm93c3BhbicpIHx8ICcxJywgMTApO1xuICAgICAgICBjb25zdCBjb2xzcGFuID0gcGFyc2VJbnQoY2VsbEVsLmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApO1xuXG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCBTdHJpbmcocm93c3BhbikpO1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgU3RyaW5nKGNvbHNwYW4pKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5sZXQgcmVnaXN0ZXIgPSBmYWxzZTtcbmV4cG9ydCBjb25zdCByZWdpc3RlclF1aWxsMnggPSAoKSA9PiB7XG4gIGlmIChyZWdpc3RlcikgcmV0dXJuO1xuICByZWdpc3RlciA9IHRydWU7XG5cbiAgY29uc3QgUXVpbGwgPSBRdWlsbDJ4IGFzIGFueTtcblxuICBjb25zdCBzaXplID0gUXVpbGwuaW1wb3J0KCdhdHRyaWJ1dG9ycy9zdHlsZS9zaXplJyk7XG4gIGNvbnN0IGFsaWduU3R5bGUgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL2FsaWduJyk7XG4gIGNvbnN0IGl0YWxpYyA9IFF1aWxsLmltcG9ydCgnZm9ybWF0cy9pdGFsaWMnKTtcbiAgY29uc3QgYm9sZCA9IFF1aWxsLmltcG9ydCgnZm9ybWF0cy9ib2xkJyk7XG4gIGNvbnN0IGljb25zID0gUXVpbGwuaW1wb3J0KCd1aS9pY29ucycpO1xuICBzaXplLndoaXRlbGlzdCA9IGZvbnRTaXplV2hpdGVMaXN0KCk7XG5cbiAgaXRhbGljLnRhZ05hbWUgPSAnaSc7XG4gIGJvbGQudGFnTmFtZSA9ICdiJztcblxuICBRdWlsbC5yZWdpc3Rlcihib2xkLCB0cnVlKTtcbiAgUXVpbGwucmVnaXN0ZXIoaXRhbGljLCB0cnVlKTtcbiAgUXVpbGwucmVnaXN0ZXIoc2l6ZSwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKGFsaWduU3R5bGUsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihRdWlsbE1lbnRpb24yeEJsb3QsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihDdXN0b21JbWFnZTJ4QmxvdCwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL3Jlc2l6ZScsIFJlc2l6ZU1vZHVsZSk7XG4gIFsuLi5pY29uTGlzdCgpXS5mb3JFYWNoKChlbGVtZW50KSA9PiBzZXQoaWNvbnMsIGVsZW1lbnQua2V5LCBgPHNwYW4gY2xhc3M9XCIke2VsZW1lbnQuaWNvbn0gJHtlbGVtZW50LmtleSA9PT0gJ3VuTGluaycgPyAnaG92ZXI6dGV4dC1bI2VlMmQ0MV0gJyA6ICdob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXSd9IHRleHQtWzE2cHhdIHRleHQtWyM2YTczODNdXCI+PC9zcGFuPmApKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5UXVpbGwgPSAocXVpbGw6IFF1aWxsMnggfCBudWxsKSA9PiB7XG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gcXVpbGw/LnJvb3Q7XG4gIGlmICghcm9vdEVsZW1lbnQpIHJldHVybiB0cnVlO1xuICBjb25zdCBodG1sID0gcm9vdEVsZW1lbnQuaW5uZXJIVE1MLnRyaW0oKTtcbiAgcmV0dXJuIGh0bWwgPT09ICc8cD48YnI+PC9wPicgfHwgaHRtbCA9PT0gJzxwPjwvcD4nIHx8IGh0bWwgPT09ICcnIHx8IGh0bWwgPT09ICc8cD48c3BhbiBjbGFzcz1cInFsLWN1cnNvclwiPjwvc3Bhbj48YnI+PC9wPicgfHwgcm9vdEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdxbC1ibGFuaycpO1xufTtcbiJdfQ==