smoosic 1.0.12 → 1.0.14
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.
- package/README.md +1 -0
- package/build/smoosic.js +7 -7
- package/package.json +1 -1
- package/release/smoosic.js +7 -7
- package/src/application/configuration.ts +1 -1
- package/src/application/exports.ts +2 -2
- package/src/render/audio/musicCursor.ts +3 -1
- package/src/smo/data/noteModifiers.ts +43 -0
- package/src/smo/data/scoreModifiers.ts +11 -3
- package/src/ui/dialogs/endings.ts +1 -1
- package/src/ui/dialogs/preferences.ts +11 -0
- package/release/library/BachCantataBMV68.json +0 -1
- package/release/library/BachCantataBMV682.json +0 -1
- package/release/library/Beethoven_AnDieFerneGeliebte.xml +0 -4271
- package/release/library/Dichterliebe01.xml +0 -7613
- package/release/library/MozartTrio.xml +0 -3498
- package/release/library/Mozart_AnChloe.xml +0 -3986
- package/release/library/Postillionlied.json +0 -1
- package/release/library/ScottJoplin_The_Entertainer.xml +0 -20741
- package/release/library/Yama2.json +0 -1
- package/release/library/bigband/Bilongo-Mandinga.json +0 -1
- package/release/library/bigband/Plena.json +0 -1
- package/release/library/bigband/Poinciana.json +0 -1
- package/release/library/bigband/child who drums.json +0 -1
- package/release/library/cp/Another Hairdo.mxl +0 -0
- package/release/library/cp/Anthropology Eb.mxl +0 -0
- package/release/library/cp/Au Privave No 1 Eb.mxl +0 -0
- package/release/library/cp/Au Privave No 2 Eb.mxl +0 -0
- package/release/library/cp/Back Home Blues.mxl +0 -0
- package/release/library/cp/Ballade.mxl +0 -0
- package/release/library/cp/Billies Bounce.mxl +0 -0
- package/release/library/cp/Bloomdido.mxl +0 -0
- package/release/library/cp/Blues for Alice.mxl +0 -0
- package/release/library/cp/Celerity Alto.mxl +0 -0
- package/release/library/cp/Celerity.mxl +0 -0
- package/release/library/cp/Cheryl F07.mxl +0 -0
- package/release/library/cp/Cheryl.mxl +0 -0
- package/release/library/cp/Confirmation Eb 09.mxl +0 -0
- package/release/library/cp/Cool Blues Alto1.mxl +0 -0
- package/release/library/cp/Dewey Square.mxl +0 -0
- package/release/library/cp/Donna Lee Eb.musicxml +0 -9134
- package/release/library/cp/Donna Lee Eb.mxl +0 -0
- package/release/library/cp/Ko Ko Eb.mxl +0 -0
- package/release/library/cp/Little Benny.mxl +0 -0
- package/release/library/cp/Moose the Mooche Eb.mxl +0 -0
- package/release/library/cp/Night in Tunisia solo.mxl +0 -0
- package/release/library/cp/Nows the Time No 1.mxl +0 -0
- package/release/library/cp/Nows the Time No 2.mxl +0 -0
- package/release/library/cp/Ornithology Eb.mxl +0 -0
- package/release/library/cp/Parkers Mood.mxl +0 -0
- package/release/library/cp/Passport.mxl +0 -0
- package/release/library/cp/Red Cross.mxl +0 -0
- package/release/library/cp/Scrapple from the Apple Eb.mxl +0 -0
- package/release/library/cp/Shaw Nuff Eb.mxl +0 -0
- package/release/library/cp/Shaw Nuff.mxl +0 -0
- package/release/library/cp/She Rote No1.mxl +0 -0
- package/release/library/cp/She Rote No2.mxl +0 -0
- package/release/library/cp/The Bird 07.mxl +0 -0
- package/release/library/cp/The Bird.mxl +0 -0
- package/release/library/cp/Warming Up A Riff.mxl +0 -0
- package/release/library/cp/Yardbird Suite (alto solo).mxl +0 -0
- package/release/library/cp/Yardbird Suite Eb Alto+Bass+Chords.mxl +0 -0
- package/release/library/cp/Yardbird Suite Eb.mxl +0 -0
- package/release/library/cp/cplist.txt +0 -40
- package/release/library/hymns/AdesteFideles.json +0 -1
- package/release/library/hymns/Heshallfeed.json +0 -1
- package/release/library/hymns/Hyfrydol.json +0 -1
- package/release/library/hymns/Lakeshore.json +0 -1
- package/release/library/hymns/Precious Lord.json +0 -1
- package/release/library/hymns/Shade.json +0 -1
- package/release/library/hymns/SpiritofLivingGod.json +0 -1
- package/release/library/hymns/SweetSpirit.json +0 -1
- package/release/library/hymns/We3kings.json +0 -1
- package/release/library/hymns/Weisse-Flaggen.json +0 -1
- package/release/library/hymns/WorldPeacePrayer.json +0 -1
- package/release/library/hymns/balm.json +0 -1
- package/release/library/hymns/cplist.txt +0 -9
- package/release/library/hymns/nearerMyGod.json +0 -1
- package/release/library/links/bigband.json +0 -47
- package/release/library/links/cptranscriptions.json +0 -365
- package/release/library/links/hymns.json +0 -78
- package/release/library/links/messiah.json +0 -33
- package/release/library/links/musicxml.json +0 -62
- package/release/library/links/piano.json +0 -59
- package/release/library/links/samples.json +0 -75
- package/release/library/links/smoLibrary.json +0 -68
- package/release/library/links/soprano.json +0 -51
- package/release/library/links/transcriptions.json +0 -32
- package/release/library/links/trumpet.json +0 -76
- package/release/library/messiah/Messiah-I-1.json +0 -1
- package/release/library/messiah/Messiah-I-2.json +0 -1
- package/release/library/miditest/keytime.mid +0 -0
- package/release/library/miditest/ties.mid +0 -0
- package/release/library/miditest/triplet.mid +0 -0
- package/release/library/piano/20seconds.json +0 -1
- package/release/library/piano/BachInvention.json +0 -1
- package/release/library/piano/BachWTC-3.json +0 -1
- package/release/library/piano/Gnossienne3-3.json +0 -1
- package/release/library/piano/Gymnopedie No 1 (8).json +0 -1
- package/release/library/piano/Joplin-Entertainer.json +0 -1
- package/release/library/soprano/Gesu Bambino.json +0 -1
- package/release/library/soprano/LaudamusTrumpetSoprano.json +0 -1
- package/release/library/soprano/Postillionlied.json +0 -1
- package/release/library/soprano/Solovey.json +0 -1
- package/release/library/soprano/ThereIsABalm.json +0 -1
- package/release/library/trumpet/2min.json +0 -1
- package/release/library/trumpet/BachAirOrganTpt.json +0 -1
- package/release/library/trumpet/BachCantataBMV68.json +0 -1
- package/release/library/trumpet/BeethovenOp21-old.json +0 -1
- package/release/library/trumpet/BeethovenOp21.json +0 -1
- package/release/library/trumpet/Fireworks - trumpets.json +0 -1
- package/release/library/trumpet/HymnFreedom.json +0 -1
- package/release/library/trumpet/TelemannSonata3rd.json +0 -1
- package/release/library/xml/Gnossienne_No._3.mxl +0 -0
- package/release/library/xml/M_Book_1_Part_1_The_Open_Well_Tempered_Clavier.mxl +0 -0
- package/release/library/xml/lg-177775783.xml +0 -8674
package/build/smoosic.js
CHANGED
|
@@ -48,7 +48,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
48
48
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
49
49
|
|
|
50
50
|
"use strict";
|
|
51
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ConfigurationNumberOptions: () => (/* binding */ ConfigurationNumberOptions),\n/* harmony export */ ConfigurationStringOptions: () => (/* binding */ ConfigurationStringOptions),\n/* harmony export */ SmoConfiguration: () => (/* binding */ SmoConfiguration)\n/* harmony export */ });\n/* harmony import */ var _ui_keyBindings_default_editorKeys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ui/keyBindings/default/editorKeys */ \"./src/ui/keyBindings/default/editorKeys.ts\");\n/* harmony import */ var _ui_keyBindings_default_trackerKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ui/keyBindings/default/trackerKeys */ \"./src/ui/keyBindings/default/trackerKeys.ts\");\n/* harmony import */ var _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ui/ribbonLayout/default/defaultRibbon */ \"./src/ui/ribbonLayout/default/defaultRibbon.ts\");\n/* harmony import */ var _render_audio_musicCursor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../render/audio/musicCursor */ \"./src/render/audio/musicCursor.ts\");\n\n\n\n\nvar ConfigurationStringOptions = [\n 'language', 'libraryUrl', 'remoteScore'\n];\nvar ConfigurationNumberOptions = ['demonPollTime', 'idleRedrawTime'];\n/**\n * Configures smoosic library or application. It is a union of UI, rendering and application configuration parameters\n * @param mode - score mode `'library' | 'application' | 'translate'`\n * Library mode starts the view but not the UI. application mode starts the UI and expects UI parameters.\n * translation mode is the translation editor, for creating translations for dialog/menu components\n * @param language - startup language\n * @param initialScore? - the library score JSON, if you are loading from a JSON string, or a SmoScore object\n * @param remoteScore? - path to a remote score, if loading from an URL\n * @param scoreDomContainer - the parent of the svg container (required)\n * @param leftControls - the location of the vertical button control, applies if mode is 'application'\n * @param topControls - the location of the horizontal button control, applies if mode is 'application'\n * @param libraryUrl - loader URL for Smo libraries, applies if application mode\n * @param demonPollTime - how often we poll the score to see if it's changed\n * @param idleRedrawTime - how often the entire score re-renders\n * @category SuiApplication\n */\nclass SmoConfiguration {\n static get defaults() {\n return {\n mode: 'application',\n language: 'en',\n leftControls: 'controls-left',\n topControls: 'controls-top',\n scoreDomContainer: 'smo-scroll-region',\n libraryUrl: 'https://smoosic.github.io/Smoosic/release/library/links/smoLibrary.json',\n demonPollTime: 50, // how often we poll the score to see if it changed\n idleRedrawTime: 1000, // maximum time between score modification and render\n ribbonLayout: _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbons,\n buttonDefinition: _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbonButtons,\n audioAnimation: {\n audioAnimationHandler: _render_audio_musicCursor__WEBPACK_IMPORTED_MODULE_3__.defaultAudioAnimationHandler,\n clearAudioAnimationHandler: _render_audio_musicCursor__WEBPACK_IMPORTED_MODULE_3__.defaultClearAudioAnimationHandler\n }\n };\n }\n static get keyBindingDefaults() {\n const editorKeys = _ui_keyBindings_default_editorKeys__WEBPACK_IMPORTED_MODULE_0__.defaultEditorKeys.keys;\n const trackerKeys = _ui_keyBindings_default_trackerKeys__WEBPACK_IMPORTED_MODULE_1__.defaultTrackerKeys.keys;\n editorKeys.forEach((key) => {\n key.module = 'keyCommands';\n });\n trackerKeys.forEach((key) => {\n key.module = 'tracker';\n });\n return { editorKeys, trackerKeys };\n }\n constructor(params) {\n var _a, _b, _c, _d, _e;\n this.language = '';\n this.demonPollTime = 0; // how often we poll the score to see if it changed\n this.idleRedrawTime = 0;\n const defs = SmoConfiguration.defaults;\n ConfigurationStringOptions.forEach((param) => {\n var _a;\n const sp = (_a = params[param]) !== null && _a !== void 0 ? _a : defs[param];\n this[param] = sp !== null && sp !== void 0 ? sp : '';\n });\n this.leftControls = (_a = params.leftControls) !== null && _a !== void 0 ? _a : defs.leftControls;\n this.topControls = (_b = params.topControls) !== null && _b !== void 0 ? _b : defs.topControls;\n this.scoreDomContainer = (_c = params.scoreDomContainer) !== null && _c !== void 0 ? _c : defs.scoreDomContainer;\n this.initialScore = (_d = params.initialScore) !== null && _d !== void 0 ? _d : undefined;\n ConfigurationNumberOptions.forEach((param) => {\n var _a;\n this[param] = (_a = params[param]) !== null && _a !== void 0 ? _a : defs[param];\n });\n this.mode = (_e = params.mode) !== null && _e !== void 0 ? _e : defs.mode;\n this.ribbonLayout = params.ribbonLayout ? params.ribbonLayout : _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbons;\n this.buttonDefinition = params.buttonDefinition ? params.buttonDefinition : _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbonButtons;\n if (!params.ribbonLayout) {\n this.ribbonLayout = _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbons;\n }\n if (!params.buttonDefinition) {\n this.buttonDefinition = _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbonButtons;\n }\n if (!params.audioAnimation) {\n this.audioAnimation = SmoConfiguration.defaults.audioAnimation;\n }\n else {\n this.audioAnimation = params.audioAnimation;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwbGljYXRpb24vY29uZmlndXJhdGlvbi50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBU3lFO0FBQ0U7QUFHSTtBQUUxQztBQU85QixJQUFJLDBCQUEwQixHQUFnQztJQUNuRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWE7Q0FBQyxDQUFDO0FBRXBDLElBQUksMEJBQTBCLEdBQWdDLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUF1QnpHOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNLLE1BQU0sZ0JBQWdCO0lBaUI1QixNQUFNLEtBQUssUUFBUTtRQUNqQixPQUFPO1lBQ0wsSUFBSSxFQUFFLGFBQWE7WUFDbkIsUUFBUSxFQUFFLElBQUk7WUFDZCxZQUFZLEVBQUUsZUFBZTtZQUM3QixXQUFXLEVBQUUsY0FBYztZQUMzQixpQkFBaUIsRUFBRSxtQkFBbUI7WUFDdEMsVUFBVSxFQUFFLHlFQUF5RTtZQUNyRixhQUFhLEVBQUUsRUFBRSxFQUFFLG1EQUFtRDtZQUN0RSxjQUFjLEVBQUUsSUFBSSxFQUFFLHFEQUFxRDtZQUMzRSxZQUFZLEVBQUUsdUZBQW1CLENBQUMsT0FBTztZQUN6QyxnQkFBZ0IsRUFBRSx1RkFBbUIsQ0FBQyxhQUFhO1lBQ25ELGNBQWMsRUFBRTtnQkFDZCxxQkFBcUIsRUFBRSxtRkFBNEI7Z0JBQ25ELDBCQUEwQixFQUFFLHdGQUFpQzthQUM5RDtTQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxLQUFLLGtCQUFrQjtRQUMzQixNQUFNLFVBQVUsR0FBRyxpRkFBaUIsQ0FBQyxJQUFJLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsbUZBQWtCLENBQUMsSUFBSSxDQUFDO1FBQzVDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN6QixHQUFHLENBQUMsTUFBTSxHQUFHLGFBQWE7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDMUIsR0FBRyxDQUFDLE1BQU0sR0FBRyxTQUFTO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsWUFBWSxNQUF1Qzs7UUE1Q25ELGFBQVEsR0FBVyxFQUFFLENBQUM7UUFPdEIsa0JBQWEsR0FBVyxDQUFDLENBQUMsQ0FBQyxtREFBbUQ7UUFDOUUsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFxQ3pCLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztRQUN2QywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs7WUFDM0MsTUFBTSxFQUFFLEdBQXVCLFlBQU0sQ0FBQyxLQUFLLENBQUMsbUNBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQUYsRUFBRSxjQUFGLEVBQUUsR0FBSSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQU0sQ0FBQyxZQUFZLG1DQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFNLENBQUMsV0FBVyxtQ0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxZQUFNLENBQUMsaUJBQWlCLG1DQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM1RSxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQU0sQ0FBQyxZQUFZLG1DQUFJLFNBQVMsQ0FBQztRQUNyRCwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs7WUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFlBQU0sQ0FBQyxLQUFLLENBQUMsbUNBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFNLENBQUMsSUFBSSxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBQyxDQUFDLHVGQUFtQixDQUFDLE9BQU8sQ0FBQztRQUMzRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLHVGQUFtQixDQUFDLGFBQWEsQ0FBQztRQUM5RyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsdUZBQW1CLENBQUMsT0FBTyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLHVGQUFtQixDQUFDLGFBQWEsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDakUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXMiOlsid2VicGFjazovL1Ntby8uL3NyYy9hcHBsaWNhdGlvbi9jb25maWd1cmF0aW9uLnRzPzk0YjciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gYXBwbGljYXRpb24vY29uZmlndXJhdGlvbi50c1xyXG4vKipcclxuICogU3VwZXJzZXQgb2YgY29uZmlndXJhdGlvbiByZXF1aXJlZCB0byBpbml0aWFsaXplIFNtb29zaWMsIGVpdGhlciB0aGUgYXBwbGlhdGlvbiBvciBsaWJyYXJ5LlxyXG4gKiBAbW9kdWxlIGNvbmZpZ3VyYXRpb25cclxuICovXHJcbmltcG9ydCB7IFNtb1JlbmRlckNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vcmVuZGVyL3N1aS9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IFNtb1Njb3JlIH0gZnJvbSBcIi4uL3Ntby9kYXRhL3Njb3JlXCI7XHJcbmltcG9ydCB7IE1vZGFsRXZlbnRIYW5kbGVyIH0gZnJvbSBcIi4vY29tbW9uXCI7XHJcbmltcG9ydCB7IEtleUJpbmRpbmdDb25maWd1cmF0aW9uLCBTbW9VaUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vdWkvY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBkZWZhdWx0RWRpdG9yS2V5cyB9IGZyb20gXCIuLi91aS9rZXlCaW5kaW5ncy9kZWZhdWx0L2VkaXRvcktleXNcIjtcclxuaW1wb3J0IHsgZGVmYXVsdFRyYWNrZXJLZXlzIH0gZnJvbSBcIi4uL3VpL2tleUJpbmRpbmdzL2RlZmF1bHQvdHJhY2tlcktleXNcIjtcclxuaW1wb3J0IHsgUmliYm9uTGF5b3V0IH0gZnJvbSBcIi4uL3VpL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBCdXR0b25EZWZpbml0aW9uIH0gZnJvbSBcIi4uL3VpL2J1dHRvbnMvYnV0dG9uXCI7XHJcbmltcG9ydCB7IGRlZmF1bHRSaWJib25MYXlvdXQgfSBmcm9tICcuLi91aS9yaWJib25MYXlvdXQvZGVmYXVsdC9kZWZhdWx0UmliYm9uJztcclxuaW1wb3J0IHsgU3VpQXVkaW9BbmltYXRpb25QYXJhbXMsIGRlZmF1bHRBdWRpb0FuaW1hdGlvbkhhbmRsZXIsIGRlZmF1bHRDbGVhckF1ZGlvQW5pbWF0aW9uSGFuZGxlciwgQXVkaW9BbmltYXRpb25IYW5kbGVyLCBDbGVhckF1ZGlvQW5pbWF0aW9uSGFuZGxlciB9IFxyXG4gIGZyb20gXCIuLi9yZW5kZXIvYXVkaW8vbXVzaWNDdXJzb3JcIjtcclxuXHJcbmV4cG9ydCB0eXBlIFNtb01vZGUgPSAnbGlicmFyeScgfCAnYXBwbGljYXRpb24nIHwgJ3RyYW5zbGF0ZSc7XHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYXRpb25TdHJpbmdPcHRpb24gPSAnbGFuZ3VhZ2UnIHwgJ2xpYnJhcnlVcmwnIHwgJ3JlbW90ZVNjb3JlJztcclxuXHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYXRpb25OdW1iZXJPcHRpb24gPSAnZGVtb25Qb2xsVGltZScgfCAnaWRsZVJlZHJhd1RpbWUnO1xyXG5cclxuZXhwb3J0IHZhciBDb25maWd1cmF0aW9uU3RyaW5nT3B0aW9uczogQ29uZmlndXJhdGlvblN0cmluZ09wdGlvbltdID0gW1xyXG4gICdsYW5ndWFnZScsICdsaWJyYXJ5VXJsJywgJ3JlbW90ZVNjb3JlJ107XHJcblxyXG5leHBvcnQgdmFyIENvbmZpZ3VyYXRpb25OdW1iZXJPcHRpb25zOiBDb25maWd1cmF0aW9uTnVtYmVyT3B0aW9uW10gPSBbJ2RlbW9uUG9sbFRpbWUnLCAnaWRsZVJlZHJhd1RpbWUnXTtcclxuXHJcbi8qKlxyXG4gKiBBcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMsIGNhbiBiZSByZWZlcmVuY2VkIGJ5IHRoZSBydW5uaW5nIGFwcGxpY2F0aW9uIG9yIGNoYW5nZWRcclxuICogQGNhdGVnb3J5IFN1aUFwcGxpY2F0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0NvbmZpZ3VyYXRpb25QYXJhbXMge1xyXG4gIG1vZGU6IFNtb01vZGU7XHJcbiAgc21vUGF0aD86IHN0cmluZztcclxuICBsYW5ndWFnZTogc3RyaW5nO1xyXG4gIGluaXRpYWxTY29yZT86IHN0cmluZyB8IFNtb1Njb3JlO1xyXG4gIHJlbW90ZVNjb3JlPzogc3RyaW5nO1xyXG4gIHNjb3JlRG9tQ29udGFpbmVyOiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuICBsZWZ0Q29udHJvbHM/OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuICB0b3BDb250cm9scz86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xyXG4gIGxpYnJhcnlVcmw/OiBzdHJpbmc7XHJcbiAgZGVtb25Qb2xsVGltZTogbnVtYmVyOyAvLyBob3cgb2Z0ZW4gd2UgcG9sbCB0aGUgc2NvcmUgdG8gc2VlIGlmIGl0IGNoYW5nZWRcclxuICBpZGxlUmVkcmF3VGltZTogbnVtYmVyO1xyXG4gIHJpYmJvbkxheW91dD86IFJpYmJvbkxheW91dDtcclxuICBidXR0b25EZWZpbml0aW9uPzogQnV0dG9uRGVmaW5pdGlvbltdO1xyXG4gIGF1ZGlvQW5pbWF0aW9uOiBTdWlBdWRpb0FuaW1hdGlvblBhcmFtcztcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbmZpZ3VyZXMgc21vb3NpYyBsaWJyYXJ5IG9yIGFwcGxpY2F0aW9uLiBJdCBpcyBhIHVuaW9uIG9mIFVJLCByZW5kZXJpbmcgYW5kIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyc1xyXG4gKiBAcGFyYW0gbW9kZSAtIHNjb3JlIG1vZGUgYCdsaWJyYXJ5JyB8ICdhcHBsaWNhdGlvbicgfCAndHJhbnNsYXRlJ2BcclxuICogICBMaWJyYXJ5IG1vZGUgc3RhcnRzIHRoZSB2aWV3IGJ1dCBub3QgdGhlIFVJLiAgYXBwbGljYXRpb24gbW9kZSBzdGFydHMgdGhlIFVJIGFuZCBleHBlY3RzIFVJIHBhcmFtZXRlcnMuXHJcbiAqICAgdHJhbnNsYXRpb24gbW9kZSBpcyB0aGUgdHJhbnNsYXRpb24gZWRpdG9yLCBmb3IgY3JlYXRpbmcgdHJhbnNsYXRpb25zIGZvciBkaWFsb2cvbWVudSBjb21wb25lbnRzXHJcbiAqIEBwYXJhbSBsYW5ndWFnZSAtIHN0YXJ0dXAgbGFuZ3VhZ2VcclxuICogQHBhcmFtIGluaXRpYWxTY29yZT8gLSB0aGUgbGlicmFyeSBzY29yZSBKU09OLCBpZiB5b3UgYXJlIGxvYWRpbmcgZnJvbSBhIEpTT04gc3RyaW5nLCBvciBhIFNtb1Njb3JlIG9iamVjdFxyXG4gKiBAcGFyYW0gcmVtb3RlU2NvcmU/IC0gcGF0aCB0byBhIHJlbW90ZSBzY29yZSwgaWYgbG9hZGluZyBmcm9tIGFuIFVSTFxyXG4gKiBAcGFyYW0gc2NvcmVEb21Db250YWluZXIgLSB0aGUgcGFyZW50IG9mIHRoZSBzdmcgY29udGFpbmVyIChyZXF1aXJlZClcclxuICogQHBhcmFtIGxlZnRDb250cm9scyAtIHRoZSBsb2NhdGlvbiBvZiB0aGUgdmVydGljYWwgYnV0dG9uIGNvbnRyb2wsIGFwcGxpZXMgaWYgbW9kZSBpcyAnYXBwbGljYXRpb24nXHJcbiAqIEBwYXJhbSB0b3BDb250cm9scyAtIHRoZSBsb2NhdGlvbiBvZiB0aGUgaG9yaXpvbnRhbCBidXR0b24gY29udHJvbCwgYXBwbGllcyBpZiBtb2RlIGlzICdhcHBsaWNhdGlvbidcclxuICogQHBhcmFtIGxpYnJhcnlVcmwgLSBsb2FkZXIgVVJMIGZvciBTbW8gbGlicmFyaWVzLCBhcHBsaWVzIGlmIGFwcGxpY2F0aW9uIG1vZGVcclxuICogQHBhcmFtIGRlbW9uUG9sbFRpbWUgLSBob3cgb2Z0ZW4gd2UgcG9sbCB0aGUgc2NvcmUgdG8gc2VlIGlmIGl0J3MgY2hhbmdlZFxyXG4gKiBAcGFyYW0gaWRsZVJlZHJhd1RpbWUgLSBob3cgb2Z0ZW4gdGhlIGVudGlyZSBzY29yZSByZS1yZW5kZXJzXHJcbiAqIEBjYXRlZ29yeSBTdWlBcHBsaWNhdGlvblxyXG4gKi9cclxuIGV4cG9ydCBjbGFzcyBTbW9Db25maWd1cmF0aW9uIGltcGxlbWVudHMgU21vUmVuZGVyQ29uZmlndXJhdGlvbiwgU21vVWlDb25maWd1cmF0aW9uIHtcclxuICBtb2RlOiBTbW9Nb2RlO1xyXG4gIGxhbmd1YWdlOiBzdHJpbmcgPSAnJztcclxuICBpbml0aWFsU2NvcmU/OiBzdHJpbmcgfCBTbW9TY29yZTtcclxuICByZW1vdGVTY29yZT86IHN0cmluZztcclxuICBsZWZ0Q29udHJvbHM/OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuICB0b3BDb250cm9scz86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xyXG4gIHNjb3JlRG9tQ29udGFpbmVyOiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuICBsaWJyYXJ5VXJsPzogc3RyaW5nO1xyXG4gIGRlbW9uUG9sbFRpbWU6IG51bWJlciA9IDA7IC8vIGhvdyBvZnRlbiB3ZSBwb2xsIHRoZSBzY29yZSB0byBzZWUgaWYgaXQgY2hhbmdlZFxyXG4gIGlkbGVSZWRyYXdUaW1lOiBudW1iZXIgPSAwO1xyXG4gIGtleXM/OiBLZXlCaW5kaW5nQ29uZmlndXJhdGlvbjtcclxuICBldmVudEhhbmRsZXI/OiBNb2RhbEV2ZW50SGFuZGxlcjtcclxuICByaWJib25MYXlvdXQ6IFJpYmJvbkxheW91dDtcclxuICBhdWRpb0FuaW1hdGlvbjogU3VpQXVkaW9BbmltYXRpb25QYXJhbXM7XHJcbiAgYnV0dG9uRGVmaW5pdGlvbjogQnV0dG9uRGVmaW5pdGlvbltdO1xyXG5cclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb0NvbmZpZ3VyYXRpb24ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbW9kZTogJ2FwcGxpY2F0aW9uJyxcclxuICAgICAgbGFuZ3VhZ2U6ICdlbicsXHJcbiAgICAgIGxlZnRDb250cm9sczogJ2NvbnRyb2xzLWxlZnQnLFxyXG4gICAgICB0b3BDb250cm9sczogJ2NvbnRyb2xzLXRvcCcsXHJcbiAgICAgIHNjb3JlRG9tQ29udGFpbmVyOiAnc21vLXNjcm9sbC1yZWdpb24nLFxyXG4gICAgICBsaWJyYXJ5VXJsOiAnaHR0cHM6Ly9zbW9vc2ljLmdpdGh1Yi5pby9TbW9vc2ljL3JlbGVhc2UvbGlicmFyeS9saW5rcy9zbW9MaWJyYXJ5Lmpzb24nLFxyXG4gICAgICBkZW1vblBvbGxUaW1lOiA1MCwgLy8gaG93IG9mdGVuIHdlIHBvbGwgdGhlIHNjb3JlIHRvIHNlZSBpZiBpdCBjaGFuZ2VkXHJcbiAgICAgIGlkbGVSZWRyYXdUaW1lOiAxMDAwLCAvLyBtYXhpbXVtIHRpbWUgYmV0d2VlbiBzY29yZSBtb2RpZmljYXRpb24gYW5kIHJlbmRlclxyXG4gICAgICByaWJib25MYXlvdXQ6IGRlZmF1bHRSaWJib25MYXlvdXQucmliYm9ucyxcclxuICAgICAgYnV0dG9uRGVmaW5pdGlvbjogZGVmYXVsdFJpYmJvbkxheW91dC5yaWJib25CdXR0b25zLFxyXG4gICAgICBhdWRpb0FuaW1hdGlvbjoge1xyXG4gICAgICAgIGF1ZGlvQW5pbWF0aW9uSGFuZGxlcjogZGVmYXVsdEF1ZGlvQW5pbWF0aW9uSGFuZGxlcixcclxuICAgICAgICBjbGVhckF1ZGlvQW5pbWF0aW9uSGFuZGxlcjogZGVmYXVsdENsZWFyQXVkaW9BbmltYXRpb25IYW5kbGVyXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQga2V5QmluZGluZ0RlZmF1bHRzKCk6IEtleUJpbmRpbmdDb25maWd1cmF0aW9uIHtcclxuICAgIGNvbnN0IGVkaXRvcktleXMgPSBkZWZhdWx0RWRpdG9yS2V5cy5rZXlzO1xyXG4gICAgY29uc3QgdHJhY2tlcktleXMgPSBkZWZhdWx0VHJhY2tlcktleXMua2V5cztcclxuICAgIGVkaXRvcktleXMuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIGtleS5tb2R1bGUgPSAna2V5Q29tbWFuZHMnXHJcbiAgICB9KTtcclxuICAgIHRyYWNrZXJLZXlzLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBrZXkubW9kdWxlID0gJ3RyYWNrZXInXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7IGVkaXRvcktleXMsIHRyYWNrZXJLZXlzIH07XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogUGFydGlhbDxTbW9Db25maWd1cmF0aW9uUGFyYW1zPikge1xyXG4gICAgY29uc3QgZGVmcyA9IFNtb0NvbmZpZ3VyYXRpb24uZGVmYXVsdHM7XHJcbiAgICBDb25maWd1cmF0aW9uU3RyaW5nT3B0aW9ucy5mb3JFYWNoKChwYXJhbSkgPT4ge1xyXG4gICAgICBjb25zdCBzcDogc3RyaW5nIHwgdW5kZWZpbmVkID0gcGFyYW1zW3BhcmFtXSA/PyBkZWZzW3BhcmFtXTtcclxuICAgICAgdGhpc1twYXJhbV0gPSBzcCA/PyAnJztcclxuICAgIH0pO1xyXG4gICAgdGhpcy5sZWZ0Q29udHJvbHMgPSBwYXJhbXMubGVmdENvbnRyb2xzID8/IGRlZnMubGVmdENvbnRyb2xzO1xyXG4gICAgdGhpcy50b3BDb250cm9scyA9IHBhcmFtcy50b3BDb250cm9scyA/PyBkZWZzLnRvcENvbnRyb2xzO1xyXG4gICAgdGhpcy5zY29yZURvbUNvbnRhaW5lciA9IHBhcmFtcy5zY29yZURvbUNvbnRhaW5lciA/PyBkZWZzLnNjb3JlRG9tQ29udGFpbmVyO1xyXG4gICAgdGhpcy5pbml0aWFsU2NvcmUgPSBwYXJhbXMuaW5pdGlhbFNjb3JlID8/IHVuZGVmaW5lZDtcclxuICAgIENvbmZpZ3VyYXRpb25OdW1iZXJPcHRpb25zLmZvckVhY2goKHBhcmFtKSA9PiB7XHJcbiAgICAgIHRoaXNbcGFyYW1dID0gcGFyYW1zW3BhcmFtXSA/PyBkZWZzW3BhcmFtXTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tb2RlID0gcGFyYW1zLm1vZGUgPz8gZGVmcy5tb2RlO1xyXG4gICAgdGhpcy5yaWJib25MYXlvdXQgPSBwYXJhbXMucmliYm9uTGF5b3V0ID8gcGFyYW1zLnJpYmJvbkxheW91dDogZGVmYXVsdFJpYmJvbkxheW91dC5yaWJib25zO1xyXG4gICAgdGhpcy5idXR0b25EZWZpbml0aW9uID0gcGFyYW1zLmJ1dHRvbkRlZmluaXRpb24gPyBwYXJhbXMuYnV0dG9uRGVmaW5pdGlvbiA6IGRlZmF1bHRSaWJib25MYXlvdXQucmliYm9uQnV0dG9ucztcclxuICAgIGlmICghcGFyYW1zLnJpYmJvbkxheW91dCkge1xyXG4gICAgICB0aGlzLnJpYmJvbkxheW91dCA9IGRlZmF1bHRSaWJib25MYXlvdXQucmliYm9ucztcclxuICAgIH1cclxuICAgIGlmICghcGFyYW1zLmJ1dHRvbkRlZmluaXRpb24pIHtcclxuICAgICAgdGhpcy5idXR0b25EZWZpbml0aW9uID0gZGVmYXVsdFJpYmJvbkxheW91dC5yaWJib25CdXR0b25zO1xyXG4gICAgfVxyXG4gICAgaWYgKCFwYXJhbXMuYXVkaW9BbmltYXRpb24pIHtcclxuICAgICAgdGhpcy5hdWRpb0FuaW1hdGlvbiA9IFNtb0NvbmZpZ3VyYXRpb24uZGVmYXVsdHMuYXVkaW9BbmltYXRpb247XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmF1ZGlvQW5pbWF0aW9uID0gcGFyYW1zLmF1ZGlvQW5pbWF0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/application/configuration.ts\n");
|
|
51
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ConfigurationNumberOptions: () => (/* binding */ ConfigurationNumberOptions),\n/* harmony export */ ConfigurationStringOptions: () => (/* binding */ ConfigurationStringOptions),\n/* harmony export */ SmoConfiguration: () => (/* binding */ SmoConfiguration)\n/* harmony export */ });\n/* harmony import */ var _ui_keyBindings_default_editorKeys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ui/keyBindings/default/editorKeys */ \"./src/ui/keyBindings/default/editorKeys.ts\");\n/* harmony import */ var _ui_keyBindings_default_trackerKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ui/keyBindings/default/trackerKeys */ \"./src/ui/keyBindings/default/trackerKeys.ts\");\n/* harmony import */ var _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ui/ribbonLayout/default/defaultRibbon */ \"./src/ui/ribbonLayout/default/defaultRibbon.ts\");\n/* harmony import */ var _render_audio_musicCursor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../render/audio/musicCursor */ \"./src/render/audio/musicCursor.ts\");\n\n\n\n\nvar ConfigurationStringOptions = [\n 'language', 'libraryUrl', 'remoteScore'\n];\nvar ConfigurationNumberOptions = ['demonPollTime', 'idleRedrawTime'];\n/**\n * Configures smoosic library or application. It is a union of UI, rendering and application configuration parameters\n * @param mode - score mode `'library' | 'application' | 'translate'`\n * Library mode starts the view but not the UI. application mode starts the UI and expects UI parameters.\n * translation mode is the translation editor, for creating translations for dialog/menu components\n * @param language - startup language\n * @param initialScore? - the library score JSON, if you are loading from a JSON string, or a SmoScore object\n * @param remoteScore? - path to a remote score, if loading from an URL\n * @param scoreDomContainer - the parent of the svg container (required)\n * @param leftControls - the location of the vertical button control, applies if mode is 'application'\n * @param topControls - the location of the horizontal button control, applies if mode is 'application'\n * @param libraryUrl - loader URL for Smo libraries, applies if application mode\n * @param demonPollTime - how often we poll the score to see if it's changed\n * @param idleRedrawTime - how often the entire score re-renders\n * @category SuiApplication\n */\nclass SmoConfiguration {\n static get defaults() {\n return {\n mode: 'application',\n language: 'en',\n leftControls: 'controls-left',\n topControls: 'controls-top',\n scoreDomContainer: 'smo-scroll-region',\n libraryUrl: 'https://smoosic.github.io/SmoScores/links/smoLibrary.json',\n demonPollTime: 50, // how often we poll the score to see if it changed\n idleRedrawTime: 1000, // maximum time between score modification and render\n ribbonLayout: _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbons,\n buttonDefinition: _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbonButtons,\n audioAnimation: {\n audioAnimationHandler: _render_audio_musicCursor__WEBPACK_IMPORTED_MODULE_3__.defaultAudioAnimationHandler,\n clearAudioAnimationHandler: _render_audio_musicCursor__WEBPACK_IMPORTED_MODULE_3__.defaultClearAudioAnimationHandler\n }\n };\n }\n static get keyBindingDefaults() {\n const editorKeys = _ui_keyBindings_default_editorKeys__WEBPACK_IMPORTED_MODULE_0__.defaultEditorKeys.keys;\n const trackerKeys = _ui_keyBindings_default_trackerKeys__WEBPACK_IMPORTED_MODULE_1__.defaultTrackerKeys.keys;\n editorKeys.forEach((key) => {\n key.module = 'keyCommands';\n });\n trackerKeys.forEach((key) => {\n key.module = 'tracker';\n });\n return { editorKeys, trackerKeys };\n }\n constructor(params) {\n var _a, _b, _c, _d, _e;\n this.language = '';\n this.demonPollTime = 0; // how often we poll the score to see if it changed\n this.idleRedrawTime = 0;\n const defs = SmoConfiguration.defaults;\n ConfigurationStringOptions.forEach((param) => {\n var _a;\n const sp = (_a = params[param]) !== null && _a !== void 0 ? _a : defs[param];\n this[param] = sp !== null && sp !== void 0 ? sp : '';\n });\n this.leftControls = (_a = params.leftControls) !== null && _a !== void 0 ? _a : defs.leftControls;\n this.topControls = (_b = params.topControls) !== null && _b !== void 0 ? _b : defs.topControls;\n this.scoreDomContainer = (_c = params.scoreDomContainer) !== null && _c !== void 0 ? _c : defs.scoreDomContainer;\n this.initialScore = (_d = params.initialScore) !== null && _d !== void 0 ? _d : undefined;\n ConfigurationNumberOptions.forEach((param) => {\n var _a;\n this[param] = (_a = params[param]) !== null && _a !== void 0 ? _a : defs[param];\n });\n this.mode = (_e = params.mode) !== null && _e !== void 0 ? _e : defs.mode;\n this.ribbonLayout = params.ribbonLayout ? params.ribbonLayout : _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbons;\n this.buttonDefinition = params.buttonDefinition ? params.buttonDefinition : _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbonButtons;\n if (!params.ribbonLayout) {\n this.ribbonLayout = _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbons;\n }\n if (!params.buttonDefinition) {\n this.buttonDefinition = _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_2__.defaultRibbonLayout.ribbonButtons;\n }\n if (!params.audioAnimation) {\n this.audioAnimation = SmoConfiguration.defaults.audioAnimation;\n }\n else {\n this.audioAnimation = params.audioAnimation;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SSxDQUFDLElBQUksR0FBRyxZQUFNLENBQUMsSUFBSSxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBQyxDQUFDLHVGQUFtQixDQUFDLE9BQU8sQ0FBQztRQUMzRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLHVGQUFtQixDQUFDLGFBQWEsQ0FBQztRQUM5RyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsdUZBQW1CLENBQUMsT0FBTyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLHVGQUFtQixDQUFDLGFBQWEsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDakUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXMiOlsid2VicGFjazovL1Ntby8uL3NyYy9hcHBsaWNhdGlvbi9jb25maWd1cmF0aW9uLnRzPzk0YjciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gYXBwbGljYXRpb24vY29uZmlndXJhdGlvbi50c1xyXG4vKipcclxuICogU3VwZXJzZXQgb2YgY29uZmlndXJhdGlvbiByZXF1aXJlZCB0byBpbml0aWFsaXplIFNtb29zaWMsIGVpdGhlciB0aGUgYXBwbGlhdGlvbiBvciBsaWJyYXJ5LlxyXG4gKiBAbW9kdWxlIGNvbmZpZ3VyYXRpb25cclxuICovXHJcbmltcG9ydCB7IFNtb1JlbmRlckNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vcmVuZGVyL3N1aS9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IFNtb1Njb3JlIH0gZnJvbSBcIi4uL3Ntby9kYXRhL3Njb3JlXCI7XHJcbmltcG9ydCB7IE1vZGFsRXZlbnRIYW5kbGVyIH0gZnJvbSBcIi4vY29tbW9uXCI7XHJcbmltcG9ydCB7IEtleUJpbmRpbmdDb25maWd1cmF0aW9uLCBTbW9VaUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vdWkvY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBkZWZhdWx0RWRpdG9yS2V5cyB9IGZyb20gXCIuLi91aS9rZXlCaW5kaW5ncy9kZWZhdWx0L2VkaXRvcktleXNcIjtcclxuaW1wb3J0IHsgZGVmYXVsdFRyYWNrZXJLZXlzIH0gZnJvbSBcIi4uL3VpL2tleUJpbmRpbmdzL2RlZmF1bHQvdHJhY2tlcktleXNcIjtcclxuaW1wb3J0IHsgUmliYm9uTGF5b3V0IH0gZnJvbSBcIi4uL3VpL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBCdXR0b25EZWZpbml0aW9uIH0gZnJvbSBcIi4uL3VpL2J1dHRvbnMvYnV0dG9uXCI7XHJcbmltcG9ydCB7IGRlZmF1bHRSaWJib25MYXlvdXQgfSBmcm9tICcuLi91aS9yaWJib25MYXlvdXQvZGVmYXVsdC9kZWZhdWx0UmliYm9uJztcclxuaW1wb3J0IHsgU3VpQXVkaW9BbmltYXRpb25QYXJhbXMsIGRlZmF1bHRBdWRpb0FuaW1hdGlvbkhhbmRsZXIsIGRlZmF1bHRDbGVhckF1ZGlvQW5pbWF0aW9uSGFuZGxlciwgQXVkaW9BbmltYXRpb25IYW5kbGVyLCBDbGVhckF1ZGlvQW5pbWF0aW9uSGFuZGxlciB9IFxyXG4gIGZyb20gXCIuLi9yZW5kZXIvYXVkaW8vbXVzaWNDdXJzb3JcIjtcclxuXHJcbmV4cG9ydCB0eXBlIFNtb01vZGUgPSAnbGlicmFyeScgfCAnYXBwbGljYXRpb24nIHwgJ3RyYW5zbGF0ZSc7XHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYXRpb25TdHJpbmdPcHRpb24gPSAnbGFuZ3VhZ2UnIHwgJ2xpYnJhcnlVcmwnIHwgJ3JlbW90ZVNjb3JlJztcclxuXHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYXRpb25OdW1iZXJPcHRpb24gPSAnZGVtb25Qb2xsVGltZScgfCAnaWRsZVJlZHJhd1RpbWUnO1xyXG5cclxuZXhwb3J0IHZhciBDb25maWd1cmF0aW9uU3RyaW5nT3B0aW9uczogQ29uZmlndXJhdGlvblN0cmluZ09wdGlvbltdID0gW1xyXG4gICdsYW5ndWFnZScsICdsaWJyYXJ5VXJsJywgJ3JlbW90ZVNjb3JlJ107XHJcblxyXG5leHBvcnQgdmFyIENvbmZpZ3VyYXRpb25OdW1iZXJPcHRpb25zOiBDb25maWd1cmF0aW9uTnVtYmVyT3B0aW9uW10gPSBbJ2RlbW9uUG9sbFRpbWUnLCAnaWRsZVJlZHJhd1RpbWUnXTtcclxuXHJcbi8qKlxyXG4gKiBBcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMsIGNhbiBiZSByZWZlcmVuY2VkIGJ5IHRoZSBydW5uaW5nIGFwcGxpY2F0aW9uIG9yIGNoYW5nZWRcclxuICogQGNhdGVnb3J5IFN1aUFwcGxpY2F0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0NvbmZpZ3VyYXRpb25QYXJhbXMge1xyXG4gIG1vZGU6IFNtb01vZGU7XHJcbiAgc21vUGF0aD86IHN0cmluZztcclxuICBsYW5ndWFnZTogc3RyaW5nO1xyXG4gIGluaXRpYWxTY29yZT86IHN0cmluZyB8IFNtb1Njb3JlO1xyXG4gIHJlbW90ZVNjb3JlPzogc3RyaW5nO1xyXG4gIHNjb3JlRG9tQ29udGFpbmVyOiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuICBsZWZ0Q29udHJvbHM/OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuICB0b3BDb250cm9scz86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xyXG4gIGxpYnJhcnlVcmw/OiBzdHJpbmc7XHJcbiAgZGVtb25Qb2xsVGltZTogbnVtYmVyOyAvLyBob3cgb2Z0ZW4gd2UgcG9sbCB0aGUgc2NvcmUgdG8gc2VlIGlmIGl0IGNoYW5nZWRcclxuICBpZGxlUmVkcmF3VGltZTogbnVtYmVyO1xyXG4gIHJpYmJvbkxheW91dD86IFJpYmJvbkxheW91dDtcclxuICBidXR0b25EZWZpbml0aW9uPzogQnV0dG9uRGVmaW5pdGlvbltdO1xyXG4gIGF1ZGlvQW5pbWF0aW9uOiBTdWlBdWRpb0FuaW1hdGlvblBhcmFtcztcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbmZpZ3VyZXMgc21vb3NpYyBsaWJyYXJ5IG9yIGFwcGxpY2F0aW9uLiBJdCBpcyBhIHVuaW9uIG9mIFVJLCByZW5kZXJpbmcgYW5kIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyc1xyXG4gKiBAcGFyYW0gbW9kZSAtIHNjb3JlIG1vZGUgYCdsaWJyYXJ5JyB8ICdhcHBsaWNhdGlvbicgfCAndHJhbnNsYXRlJ2BcclxuICogICBMaWJyYXJ5IG1vZGUgc3RhcnRzIHRoZSB2aWV3IGJ1dCBub3QgdGhlIFVJLiAgYXBwbGljYXRpb24gbW9kZSBzdGFydHMgdGhlIFVJIGFuZCBleHBlY3RzIFVJIHBhcmFtZXRlcnMuXHJcbiAqICAgdHJhbnNsYXRpb24gbW9kZSBpcyB0aGUgdHJhbnNsYXRpb24gZWRpdG9yLCBmb3IgY3JlYXRpbmcgdHJhbnNsYXRpb25zIGZvciBkaWFsb2cvbWVudSBjb21wb25lbnRzXHJcbiAqIEBwYXJhbSBsYW5ndWFnZSAtIHN0YXJ0dXAgbGFuZ3VhZ2VcclxuICogQHBhcmFtIGluaXRpYWxTY29yZT8gLSB0aGUgbGlicmFyeSBzY29yZSBKU09OLCBpZiB5b3UgYXJlIGxvYWRpbmcgZnJvbSBhIEpTT04gc3RyaW5nLCBvciBhIFNtb1Njb3JlIG9iamVjdFxyXG4gKiBAcGFyYW0gcmVtb3RlU2NvcmU/IC0gcGF0aCB0byBhIHJlbW90ZSBzY29yZSwgaWYgbG9hZGluZyBmcm9tIGFuIFVSTFxyXG4gKiBAcGFyYW0gc2NvcmVEb21Db250YWluZXIgLSB0aGUgcGFyZW50IG9mIHRoZSBzdmcgY29udGFpbmVyIChyZXF1aXJlZClcclxuICogQHBhcmFtIGxlZnRDb250cm9scyAtIHRoZSBsb2NhdGlvbiBvZiB0aGUgdmVydGljYWwgYnV0dG9uIGNvbnRyb2wsIGFwcGxpZXMgaWYgbW9kZSBpcyAnYXBwbGljYXRpb24nXHJcbiAqIEBwYXJhbSB0b3BDb250cm9scyAtIHRoZSBsb2NhdGlvbiBvZiB0aGUgaG9yaXpvbnRhbCBidXR0b24gY29udHJvbCwgYXBwbGllcyBpZiBtb2RlIGlzICdhcHBsaWNhdGlvbidcclxuICogQHBhcmFtIGxpYnJhcnlVcmwgLSBsb2FkZXIgVVJMIGZvciBTbW8gbGlicmFyaWVzLCBhcHBsaWVzIGlmIGFwcGxpY2F0aW9uIG1vZGVcclxuICogQHBhcmFtIGRlbW9uUG9sbFRpbWUgLSBob3cgb2Z0ZW4gd2UgcG9sbCB0aGUgc2NvcmUgdG8gc2VlIGlmIGl0J3MgY2hhbmdlZFxyXG4gKiBAcGFyYW0gaWRsZVJlZHJhd1RpbWUgLSBob3cgb2Z0ZW4gdGhlIGVudGlyZSBzY29yZSByZS1yZW5kZXJzXHJcbiAqIEBjYXRlZ29yeSBTdWlBcHBsaWNhdGlvblxyXG4gKi9cclxuIGV4cG9ydCBjbGFzcyBTbW9Db25maWd1cmF0aW9uIGltcGxlbWVudHMgU21vUmVuZGVyQ29uZmlndXJhdGlvbiwgU21vVWlDb25maWd1cmF0aW9uIHtcclxuICBtb2RlOiBTbW9Nb2RlO1xyXG4gIGxhbmd1YWdlOiBzdHJpbmcgPSAnJztcclxuICBpbml0aWFsU2NvcmU/OiBzdHJpbmcgfCBTbW9TY29yZTtcclxuICByZW1vdGVTY29yZT86IHN0cmluZztcclxuICBsZWZ0Q29udHJvbHM/OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuICB0b3BDb250cm9scz86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xyXG4gIHNjb3JlRG9tQ29udGFpbmVyOiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuICBsaWJyYXJ5VXJsPzogc3RyaW5nO1xyXG4gIGRlbW9uUG9sbFRpbWU6IG51bWJlciA9IDA7IC8vIGhvdyBvZnRlbiB3ZSBwb2xsIHRoZSBzY29yZSB0byBzZWUgaWYgaXQgY2hhbmdlZFxyXG4gIGlkbGVSZWRyYXdUaW1lOiBudW1iZXIgPSAwO1xyXG4gIGtleXM/OiBLZXlCaW5kaW5nQ29uZmlndXJhdGlvbjtcclxuICBldmVudEhhbmRsZXI/OiBNb2RhbEV2ZW50SGFuZGxlcjtcclxuICByaWJib25MYXlvdXQ6IFJpYmJvbkxheW91dDtcclxuICBhdWRpb0FuaW1hdGlvbjogU3VpQXVkaW9BbmltYXRpb25QYXJhbXM7XHJcbiAgYnV0dG9uRGVmaW5pdGlvbjogQnV0dG9uRGVmaW5pdGlvbltdO1xyXG5cclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb0NvbmZpZ3VyYXRpb24ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbW9kZTogJ2FwcGxpY2F0aW9uJyxcclxuICAgICAgbGFuZ3VhZ2U6ICdlbicsXHJcbiAgICAgIGxlZnRDb250cm9sczogJ2NvbnRyb2xzLWxlZnQnLFxyXG4gICAgICB0b3BDb250cm9sczogJ2NvbnRyb2xzLXRvcCcsXHJcbiAgICAgIHNjb3JlRG9tQ29udGFpbmVyOiAnc21vLXNjcm9sbC1yZWdpb24nLFxyXG4gICAgICBsaWJyYXJ5VXJsOiAnaHR0cHM6Ly9zbW9vc2ljLmdpdGh1Yi5pby9TbW9TY29yZXMvbGlua3Mvc21vTGlicmFyeS5qc29uJyxcclxuICAgICAgZGVtb25Qb2xsVGltZTogNTAsIC8vIGhvdyBvZnRlbiB3ZSBwb2xsIHRoZSBzY29yZSB0byBzZWUgaWYgaXQgY2hhbmdlZFxyXG4gICAgICBpZGxlUmVkcmF3VGltZTogMTAwMCwgLy8gbWF4aW11bSB0aW1lIGJldHdlZW4gc2NvcmUgbW9kaWZpY2F0aW9uIGFuZCByZW5kZXJcclxuICAgICAgcmliYm9uTGF5b3V0OiBkZWZhdWx0UmliYm9uTGF5b3V0LnJpYmJvbnMsXHJcbiAgICAgIGJ1dHRvbkRlZmluaXRpb246IGRlZmF1bHRSaWJib25MYXlvdXQucmliYm9uQnV0dG9ucyxcclxuICAgICAgYXVkaW9BbmltYXRpb246IHtcclxuICAgICAgICBhdWRpb0FuaW1hdGlvbkhhbmRsZXI6IGRlZmF1bHRBdWRpb0FuaW1hdGlvbkhhbmRsZXIsXHJcbiAgICAgICAgY2xlYXJBdWRpb0FuaW1hdGlvbkhhbmRsZXI6IGRlZmF1bHRDbGVhckF1ZGlvQW5pbWF0aW9uSGFuZGxlclxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGtleUJpbmRpbmdEZWZhdWx0cygpOiBLZXlCaW5kaW5nQ29uZmlndXJhdGlvbiB7XHJcbiAgICBjb25zdCBlZGl0b3JLZXlzID0gZGVmYXVsdEVkaXRvcktleXMua2V5cztcclxuICAgIGNvbnN0IHRyYWNrZXJLZXlzID0gZGVmYXVsdFRyYWNrZXJLZXlzLmtleXM7XHJcbiAgICBlZGl0b3JLZXlzLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBrZXkubW9kdWxlID0gJ2tleUNvbW1hbmRzJ1xyXG4gICAgfSk7XHJcbiAgICB0cmFja2VyS2V5cy5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAga2V5Lm1vZHVsZSA9ICd0cmFja2VyJ1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4geyBlZGl0b3JLZXlzLCB0cmFja2VyS2V5cyB9O1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IFBhcnRpYWw8U21vQ29uZmlndXJhdGlvblBhcmFtcz4pIHtcclxuICAgIGNvbnN0IGRlZnMgPSBTbW9Db25maWd1cmF0aW9uLmRlZmF1bHRzO1xyXG4gICAgQ29uZmlndXJhdGlvblN0cmluZ09wdGlvbnMuZm9yRWFjaCgocGFyYW0pID0+IHtcclxuICAgICAgY29uc3Qgc3A6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHBhcmFtc1twYXJhbV0gPz8gZGVmc1twYXJhbV07XHJcbiAgICAgIHRoaXNbcGFyYW1dID0gc3AgPz8gJyc7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubGVmdENvbnRyb2xzID0gcGFyYW1zLmxlZnRDb250cm9scyA/PyBkZWZzLmxlZnRDb250cm9scztcclxuICAgIHRoaXMudG9wQ29udHJvbHMgPSBwYXJhbXMudG9wQ29udHJvbHMgPz8gZGVmcy50b3BDb250cm9scztcclxuICAgIHRoaXMuc2NvcmVEb21Db250YWluZXIgPSBwYXJhbXMuc2NvcmVEb21Db250YWluZXIgPz8gZGVmcy5zY29yZURvbUNvbnRhaW5lcjtcclxuICAgIHRoaXMuaW5pdGlhbFNjb3JlID0gcGFyYW1zLmluaXRpYWxTY29yZSA/PyB1bmRlZmluZWQ7XHJcbiAgICBDb25maWd1cmF0aW9uTnVtYmVyT3B0aW9ucy5mb3JFYWNoKChwYXJhbSkgPT4ge1xyXG4gICAgICB0aGlzW3BhcmFtXSA9IHBhcmFtc1twYXJhbV0gPz8gZGVmc1twYXJhbV07XHJcbiAgICB9KTtcclxuICAgIHRoaXMubW9kZSA9IHBhcmFtcy5tb2RlID8/IGRlZnMubW9kZTtcclxuICAgIHRoaXMucmliYm9uTGF5b3V0ID0gcGFyYW1zLnJpYmJvbkxheW91dCA/IHBhcmFtcy5yaWJib25MYXlvdXQ6IGRlZmF1bHRSaWJib25MYXlvdXQucmliYm9ucztcclxuICAgIHRoaXMuYnV0dG9uRGVmaW5pdGlvbiA9IHBhcmFtcy5idXR0b25EZWZpbml0aW9uID8gcGFyYW1zLmJ1dHRvbkRlZmluaXRpb24gOiBkZWZhdWx0UmliYm9uTGF5b3V0LnJpYmJvbkJ1dHRvbnM7XHJcbiAgICBpZiAoIXBhcmFtcy5yaWJib25MYXlvdXQpIHtcclxuICAgICAgdGhpcy5yaWJib25MYXlvdXQgPSBkZWZhdWx0UmliYm9uTGF5b3V0LnJpYmJvbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoIXBhcmFtcy5idXR0b25EZWZpbml0aW9uKSB7XHJcbiAgICAgIHRoaXMuYnV0dG9uRGVmaW5pdGlvbiA9IGRlZmF1bHRSaWJib25MYXlvdXQucmliYm9uQnV0dG9ucztcclxuICAgIH1cclxuICAgIGlmICghcGFyYW1zLmF1ZGlvQW5pbWF0aW9uKSB7XHJcbiAgICAgIHRoaXMuYXVkaW9BbmltYXRpb24gPSBTbW9Db25maWd1cmF0aW9uLmRlZmF1bHRzLmF1ZGlvQW5pbWF0aW9uO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hdWRpb0FuaW1hdGlvbiA9IHBhcmFtcy5hdWRpb0FuaW1hdGlvbjtcclxuICAgIH1cclxuICB9XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/application/configuration.ts\n");
|
|
52
52
|
|
|
53
53
|
/***/ }),
|
|
54
54
|
|
|
@@ -92,7 +92,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
92
92
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
93
93
|
|
|
94
94
|
"use strict";
|
|
95
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BrowserEventSource: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.BrowserEventSource),\n/* harmony export */ CheckboxDropdownComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.CheckboxDropdownComponent),\n/* harmony export */ ChordSymbolGlyphs: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.ChordSymbolGlyphs),\n/* harmony export */ Clefs: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.Clefs),\n/* harmony export */ CollapseRibbonControl: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.CollapseRibbonControl),\n/* harmony export */ CompleteNotifier: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.CompleteNotifier),\n/* harmony export */ ConfigurationNumberOptions: () => (/* reexport safe */ _configuration__WEBPACK_IMPORTED_MODULE_13__.ConfigurationNumberOptions),\n/* harmony export */ ConfigurationStringOptions: () => (/* reexport safe */ _configuration__WEBPACK_IMPORTED_MODULE_13__.ConfigurationStringOptions),\n/* harmony export */ CuedAudioContexts: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.CuedAudioContexts),\n/* harmony export */ DialogTranslations: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.DialogTranslations),\n/* harmony export */ DisplaySettings: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.DisplaySettings),\n/* harmony export */ DomBuilder: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.DomBuilder),\n/* harmony export */ Draggable: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.Draggable),\n/* harmony export */ ExtendedCollapseParent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.ExtendedCollapseParent),\n/* harmony export */ GlobalLayoutAttributesArray: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.GlobalLayoutAttributesArray),\n/* harmony export */ InputTrapper: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.InputTrapper),\n/* harmony export */ IsClef: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.IsClef),\n/* harmony export */ IsOscillatorType: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.IsOscillatorType),\n/* harmony export */ IsPitchLetter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.IsPitchLetter),\n/* harmony export */ MappedMeasures: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.MappedMeasures),\n/* harmony export */ MappedNotes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.MappedNotes),\n/* harmony export */ MappedSystems: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.MappedSystems),\n/* harmony export */ MenuTranslations: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.MenuTranslations),\n/* harmony export */ MidiToSmo: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.MidiToSmo),\n/* harmony export */ ModalComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.ModalComponent),\n/* harmony export */ ModalEventHandler: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.ModalEventHandler),\n/* harmony export */ ModalEventHandlerProxy: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.ModalEventHandlerProxy),\n/* harmony export */ ModifiersWithDialogNames: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.ModifiersWithDialogNames),\n/* harmony export */ NoteBooleanParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.NoteBooleanParams),\n/* harmony export */ NoteNumberParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.NoteNumberParams),\n/* harmony export */ NoteStringParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.NoteStringParams),\n/* harmony export */ PasteBuffer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.PasteBuffer),\n/* harmony export */ PromiseHelpers: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.PromiseHelpers),\n/* harmony export */ QueryParser: () => (/* reexport safe */ _application__WEBPACK_IMPORTED_MODULE_3__.QueryParser),\n/* harmony export */ Qwerty: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.Qwerty),\n/* harmony export */ RibbonButtons: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.RibbonButtons),\n/* harmony export */ SelectionMap: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SelectionMap),\n/* harmony export */ SlurNumberParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SlurNumberParams),\n/* harmony export */ Smo: () => (/* binding */ Smo),\n/* harmony export */ SmoArpeggio: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoArpeggio),\n/* harmony export */ SmoArpeggioTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoArpeggioTypes),\n/* harmony export */ SmoArticulation: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoArticulation),\n/* harmony export */ SmoAudioPitch: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoAudioPitch),\n/* harmony export */ SmoAudioPlayerSettings: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoAudioPlayerSettings),\n/* harmony export */ SmoAudioScore: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoAudioScore),\n/* harmony export */ SmoBarline: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoBarline),\n/* harmony export */ SmoBeamGroup: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoBeamGroup),\n/* harmony export */ SmoBeamer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoBeamer),\n/* harmony export */ SmoClefChange: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoClefChange),\n/* harmony export */ SmoConfiguration: () => (/* reexport safe */ _configuration__WEBPACK_IMPORTED_MODULE_13__.SmoConfiguration),\n/* harmony export */ SmoContractNoteActor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoContractNoteActor),\n/* harmony export */ SmoDynamicComponentCtor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoDynamicComponentCtor),\n/* harmony export */ SmoDynamicCtor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoDynamicCtor),\n/* harmony export */ SmoDynamicText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoDynamicText),\n/* harmony export */ SmoFormattingManager: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoFormattingManager),\n/* harmony export */ SmoGraceNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoGraceNote),\n/* harmony export */ SmoInstrument: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoInstrument),\n/* harmony export */ SmoInstrumentNumParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoInstrumentNumParams),\n/* harmony export */ SmoInstrumentStringParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoInstrumentStringParams),\n/* harmony export */ SmoLanguage: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoLanguage),\n/* harmony export */ SmoLayoutManager: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoLayoutManager),\n/* harmony export */ SmoLibrary: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoLibrary),\n/* harmony export */ SmoLyric: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoLyric),\n/* harmony export */ SmoMakeTupletActor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMakeTupletActor),\n/* harmony export */ SmoMeasure: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasure),\n/* harmony export */ SmoMeasureFormat: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureFormat),\n/* harmony export */ SmoMeasureFormatBooleanKeys: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureFormatBooleanKeys),\n/* harmony export */ SmoMeasureFormatNumberKeys: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureFormatNumberKeys),\n/* harmony export */ SmoMeasureModifierBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureModifierBase),\n/* harmony export */ SmoMeasureNumberParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureNumberParams),\n/* harmony export */ SmoMeasureStringParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureStringParams),\n/* harmony export */ SmoMeasureText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureText),\n/* harmony export */ SmoMicrotone: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMicrotone),\n/* harmony export */ SmoMusic: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMusic),\n/* harmony export */ SmoNamespace: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoNamespace),\n/* harmony export */ SmoNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoNote),\n/* harmony export */ SmoNoteModifierBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoNoteModifierBase),\n/* harmony export */ SmoOperation: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoOperation),\n/* harmony export */ SmoOrnament: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoOrnament),\n/* harmony export */ SmoOscillatorInfoAllTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoOscillatorInfoAllTypes),\n/* harmony export */ SmoPageLayout: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPageLayout),\n/* harmony export */ SmoPartAttributesBasic: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPartAttributesBasic),\n/* harmony export */ SmoPartInfo: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPartInfo),\n/* harmony export */ SmoPartInfoBooleanTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPartInfoBooleanTypes),\n/* harmony export */ SmoPartInfoNumTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPartInfoNumTypes),\n/* harmony export */ SmoPartInfoStringTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPartInfoStringTypes),\n/* harmony export */ SmoPedalMarking: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPedalMarking),\n/* harmony export */ SmoRehearsalMark: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoRehearsalMark),\n/* harmony export */ SmoRepeatSymbol: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoRepeatSymbol),\n/* harmony export */ SmoScore: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScore),\n/* harmony export */ SmoScoreInfoKeys: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScoreInfoKeys),\n/* harmony export */ SmoScoreModifierBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScoreModifierBase),\n/* harmony export */ SmoScorePreferenceBools: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScorePreferenceBools),\n/* harmony export */ SmoScorePreferenceNumbers: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScorePreferenceNumbers),\n/* harmony export */ SmoScorePreferences: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScorePreferences),\n/* harmony export */ SmoScoreText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScoreText),\n/* harmony export */ SmoSelection: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoSelection),\n/* harmony export */ SmoSelector: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoSelector),\n/* harmony export */ SmoSlur: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoSlur),\n/* harmony export */ SmoStaffHairpin: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoStaffHairpin),\n/* harmony export */ SmoStaffTextBracket: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoStaffTextBracket),\n/* harmony export */ SmoStretchNoteActor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoStretchNoteActor),\n/* harmony export */ SmoSystemGroup: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoSystemGroup),\n/* harmony export */ SmoSystemStaff: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoSystemStaff),\n/* harmony export */ SmoTabNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTabNote),\n/* harmony export */ SmoTabStave: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTabStave),\n/* harmony export */ SmoTabTie: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTabTie),\n/* harmony export */ SmoTempoText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTempoText),\n/* harmony export */ SmoTextBracketNumberTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTextBracketNumberTypes),\n/* harmony export */ SmoTextBracketStringTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTextBracketStringTypes),\n/* harmony export */ SmoTextGroup: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTextGroup),\n/* harmony export */ SmoTickIterator: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTickIterator),\n/* harmony export */ SmoTie: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTie),\n/* harmony export */ SmoToMidi: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoToMidi),\n/* harmony export */ SmoToVex: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoToVex),\n/* harmony export */ SmoToXml: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoToXml),\n/* harmony export */ SmoTranslationEditor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTranslationEditor),\n/* harmony export */ SmoTranslator: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTranslator),\n/* harmony export */ SmoTuplet: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTuplet),\n/* harmony export */ SmoTupletTree: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTupletTree),\n/* harmony export */ SmoUnmakeTupletActor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoUnmakeTupletActor),\n/* harmony export */ SmoVolta: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoVolta),\n/* harmony export */ StaffAddRemoveComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.StaffAddRemoveComponent),\n/* harmony export */ StaffCheckComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.StaffCheckComponent),\n/* harmony export */ StaffModifierBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.StaffModifierBase),\n/* harmony export */ SuiApplication: () => (/* reexport safe */ _application__WEBPACK_IMPORTED_MODULE_3__.SuiApplication),\n/* harmony export */ SuiArpeggioAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiArpeggioAdapter),\n/* harmony export */ SuiArpeggioDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiArpeggioDialog),\n/* harmony export */ SuiArticulationAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiArticulationAdapter),\n/* harmony export */ SuiArticulationButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiArticulationButtonComponent),\n/* harmony export */ SuiArticulationDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiArticulationDialog),\n/* harmony export */ SuiAudioPlayer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiAudioPlayer),\n/* harmony export */ SuiAudioSettingsAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiAudioSettingsAdapter),\n/* harmony export */ SuiAudioSettingsDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiAudioSettingsDialog),\n/* harmony export */ SuiBeamMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiBeamMenu),\n/* harmony export */ SuiBeamMenuOptions: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiBeamMenuOptions),\n/* harmony export */ SuiButton: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButton),\n/* harmony export */ SuiButtonArrayBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonArrayBase),\n/* harmony export */ SuiButtonArrayButton: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonArrayButton),\n/* harmony export */ SuiButtonArrayComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonArrayComponent),\n/* harmony export */ SuiButtonArrayMSComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonArrayMSComponent),\n/* harmony export */ SuiButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonComponent),\n/* harmony export */ SuiButtonComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonComposite),\n/* harmony export */ SuiChordChangeDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiChordChangeDialog),\n/* harmony export */ SuiChordComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiChordComponent),\n/* harmony export */ SuiChordEditor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiChordEditor),\n/* harmony export */ SuiChordSession: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiChordSession),\n/* harmony export */ SuiClefChangeAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiClefChangeAdapter),\n/* harmony export */ SuiClefChangeDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiClefChangeDialog),\n/* harmony export */ SuiComponentAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiComponentAdapter),\n/* harmony export */ SuiComponentBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiComponentBase),\n/* harmony export */ SuiComponentParent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiComponentParent),\n/* harmony export */ SuiCompositeBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiCompositeBase),\n/* harmony export */ SuiConfiguredMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiConfiguredMenu),\n/* harmony export */ SuiDialogAdapterBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDialogAdapterBase),\n/* harmony export */ SuiDialogBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDialogBase),\n/* harmony export */ SuiDialogNotifier: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDialogNotifier),\n/* harmony export */ SuiDom: () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_8__.SuiDom),\n/* harmony export */ SuiDragSession: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDragSession),\n/* harmony export */ SuiDragText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDragText),\n/* harmony export */ SuiDropdownComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDropdownComponent),\n/* harmony export */ SuiDropdownComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDropdownComposite),\n/* harmony export */ SuiDurationAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDurationAdapter),\n/* harmony export */ SuiDurationButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDurationButtonComponent),\n/* harmony export */ SuiDurationDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDurationDialog),\n/* harmony export */ SuiDynamicDialogAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDynamicDialogAdapter),\n/* harmony export */ SuiDynamicModifierDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDynamicModifierDialog),\n/* harmony export */ SuiDynamicsMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDynamicsMenu),\n/* harmony export */ SuiEndBarButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiEndBarButtonComponent),\n/* harmony export */ SuiEndingsAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiEndingsAdapter),\n/* harmony export */ SuiEndingsDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiEndingsDialog),\n/* harmony export */ SuiEventHandler: () => (/* reexport safe */ _eventHandler__WEBPACK_IMPORTED_MODULE_4__.SuiEventHandler),\n/* harmony export */ SuiExceptionHandler: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiExceptionHandler),\n/* harmony export */ SuiFileDownloadComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiFileDownloadComponent),\n/* harmony export */ SuiFileInput: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiFileInput),\n/* harmony export */ SuiFileMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiFileMenu),\n/* harmony export */ SuiFontComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiFontComponent),\n/* harmony export */ SuiGlobalLayoutAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiGlobalLayoutAdapter),\n/* harmony export */ SuiGlobalLayoutDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiGlobalLayoutDialog),\n/* harmony export */ SuiGraceNoteAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiGraceNoteAdapter),\n/* harmony export */ SuiGraceNoteButtonsComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiGraceNoteButtonsComponent),\n/* harmony export */ SuiGraceNoteDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiGraceNoteDialog),\n/* harmony export */ SuiHairpinAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiHairpinAdapter),\n/* harmony export */ SuiHairpinAttributesDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiHairpinAttributesDialog),\n/* harmony export */ SuiHelp: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiHelp),\n/* harmony export */ SuiInlineText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiInlineText),\n/* harmony export */ SuiInsertMeasures: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiInsertMeasures),\n/* harmony export */ SuiInstrumentAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiInstrumentAdapter),\n/* harmony export */ SuiInstrumentDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiInstrumentDialog),\n/* harmony export */ SuiIntervalButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiIntervalButtonComponent),\n/* harmony export */ SuiKeyCommands: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiKeyCommands),\n/* harmony export */ SuiKeySignatureAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiKeySignatureAdapter),\n/* harmony export */ SuiKeySignatureDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiKeySignatureDialog),\n/* harmony export */ SuiKeySignatureMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiKeySignatureMenu),\n/* harmony export */ SuiLanguageMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLanguageMenu),\n/* harmony export */ SuiLayoutFormatter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLayoutFormatter),\n/* harmony export */ SuiLetterButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLetterButtonComponent),\n/* harmony export */ SuiLibraryAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLibraryAdapter),\n/* harmony export */ SuiLibraryDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLibraryDialog),\n/* harmony export */ SuiLoadFileDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLoadFileDialog),\n/* harmony export */ SuiLoadMidiDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLoadMidiDialog),\n/* harmony export */ SuiLoadMxmlDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLoadMxmlDialog),\n/* harmony export */ SuiLyricComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLyricComponent),\n/* harmony export */ SuiLyricDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLyricDialog),\n/* harmony export */ SuiLyricEditor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLyricEditor),\n/* harmony export */ SuiLyricSession: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLyricSession),\n/* harmony export */ SuiMapper: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMapper),\n/* harmony export */ SuiMeasureDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMeasureDialog),\n/* harmony export */ SuiMeasureFormatAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMeasureFormatAdapter),\n/* harmony export */ SuiMeasureMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMeasureMenu),\n/* harmony export */ SuiMenuBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMenuBase),\n/* harmony export */ SuiMenuCustomizer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMenuCustomizer),\n/* harmony export */ SuiMenuManager: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMenuManager),\n/* harmony export */ SuiMicrotoneAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMicrotoneAdapter),\n/* harmony export */ SuiMicrotoneButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMicrotoneButtonComponent),\n/* harmony export */ SuiMicrotoneDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMicrotoneDialog),\n/* harmony export */ SuiMidiLoadAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMidiLoadAdapter),\n/* harmony export */ SuiMidiSaveAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMidiSaveAdapter),\n/* harmony export */ SuiModalButtonStrings: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiModalButtonStrings),\n/* harmony export */ SuiModifierDialogFactory: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiModifierDialogFactory),\n/* harmony export */ SuiNewPartAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNewPartAdapter),\n/* harmony export */ SuiNewPartDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNewPartDialog),\n/* harmony export */ SuiNoteHeadAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNoteHeadAdapter),\n/* harmony export */ SuiNoteHeadButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNoteHeadButtonComponent),\n/* harmony export */ SuiNoteHeadDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNoteHeadDialog),\n/* harmony export */ SuiNoteMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNoteMenu),\n/* harmony export */ SuiNoteTextComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNoteTextComponent),\n/* harmony export */ SuiOrnamentAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiOrnamentAdapter),\n/* harmony export */ SuiOrnamentButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiOrnamentButtonComponent),\n/* harmony export */ SuiOrnamentDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiOrnamentDialog),\n/* harmony export */ SuiOscillator: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiOscillator),\n/* harmony export */ SuiPageLayoutAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPageLayoutAdapter),\n/* harmony export */ SuiPageLayoutDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPageLayoutDialog),\n/* harmony export */ SuiPartInfoAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPartInfoAdapter),\n/* harmony export */ SuiPartInfoDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPartInfoDialog),\n/* harmony export */ SuiPartMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPartMenu),\n/* harmony export */ SuiPartMenuOptions: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPartMenuOptions),\n/* harmony export */ SuiPartSelectionMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPartSelectionMenu),\n/* harmony export */ SuiPedalMarkingAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPedalMarkingAdapter),\n/* harmony export */ SuiPedalMarkingDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPedalMarkingDialog),\n/* harmony export */ SuiPiano: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPiano),\n/* harmony export */ SuiPitchAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchAdapter),\n/* harmony export */ SuiPitchArrayComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchArrayComponent),\n/* harmony export */ SuiPitchArrayComponentTab: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchArrayComponentTab),\n/* harmony export */ SuiPitchComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchComponent),\n/* harmony export */ SuiPitchComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchComposite),\n/* harmony export */ SuiPitchDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchDialog),\n/* harmony export */ SuiPrintFileDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPrintFileDialog),\n/* harmony export */ SuiReadOnlyTextComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiReadOnlyTextComponent),\n/* harmony export */ SuiRenderState: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiRenderState),\n/* harmony export */ SuiRepeatSymbolButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiRepeatSymbolButtonComponent),\n/* harmony export */ SuiReverb: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiReverb),\n/* harmony export */ SuiRockerComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiRockerComponent),\n/* harmony export */ SuiRockerComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiRockerComposite),\n/* harmony export */ SuiSampleMedia: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSampleMedia),\n/* harmony export */ SuiSampler: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSampler),\n/* harmony export */ SuiSaveFileDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveFileDialog),\n/* harmony export */ SuiSaveJsonValidationAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveJsonValidationAdapter),\n/* harmony export */ SuiSaveJsonValidationDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveJsonValidationDialog),\n/* harmony export */ SuiSaveMidiDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveMidiDialog),\n/* harmony export */ SuiSaveVexDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveVexDialog),\n/* harmony export */ SuiSaveXmlDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveXmlDialog),\n/* harmony export */ SuiScoreFontAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreFontAdapter),\n/* harmony export */ SuiScoreFontDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreFontDialog),\n/* harmony export */ SuiScoreIdentificationAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreIdentificationAdapter),\n/* harmony export */ SuiScoreIdentificationDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreIdentificationDialog),\n/* harmony export */ SuiScoreMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreMenu),\n/* harmony export */ SuiScorePreferencesAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScorePreferencesAdapter),\n/* harmony export */ SuiScorePreferencesDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScorePreferencesDialog),\n/* harmony export */ SuiScoreRender: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreRender),\n/* harmony export */ SuiScoreView: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreView),\n/* harmony export */ SuiScoreViewAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreViewAdapter),\n/* harmony export */ SuiScoreViewDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreViewDialog),\n/* harmony export */ SuiScoreViewOperations: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreViewOperations),\n/* harmony export */ SuiScroller: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScroller),\n/* harmony export */ SuiSlurAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSlurAdapter),\n/* harmony export */ SuiSlurAttributesDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSlurAttributesDialog),\n/* harmony export */ SuiSmoLoadAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSmoLoadAdapter),\n/* harmony export */ SuiSmoSaveAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSmoSaveAdapter),\n/* harmony export */ SuiStaffGroupDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiStaffGroupDialog),\n/* harmony export */ SuiStaffGroupDialogAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiStaffGroupDialogAdapter),\n/* harmony export */ SuiStaffModifierMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiStaffModifierMenu),\n/* harmony export */ SuiStartBarButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiStartBarButtonComponent),\n/* harmony export */ SuiStemButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiStemButtonComponent),\n/* harmony export */ SuiTabNoteAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTabNoteAdapter),\n/* harmony export */ SuiTabNoteDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTabNoteDialog),\n/* harmony export */ SuiTabStaveAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTabStaveAdapter),\n/* harmony export */ SuiTabStaveDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTabStaveDialog),\n/* harmony export */ SuiTempoAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTempoAdapter),\n/* harmony export */ SuiTempoDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTempoDialog),\n/* harmony export */ SuiTextBlock: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBlock),\n/* harmony export */ SuiTextBlockComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBlockComponent),\n/* harmony export */ SuiTextBlockDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBlockDialog),\n/* harmony export */ SuiTextBlockEditor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBlockEditor),\n/* harmony export */ SuiTextBracketAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBracketAdapter),\n/* harmony export */ SuiTextBracketDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBracketDialog),\n/* harmony export */ SuiTextEditor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextEditor),\n/* harmony export */ SuiTextInPlace: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextInPlace),\n/* harmony export */ SuiTextInputComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextInputComponent),\n/* harmony export */ SuiTextInputComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextInputComposite),\n/* harmony export */ SuiTextMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextMenu),\n/* harmony export */ SuiTextSession: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextSession),\n/* harmony export */ SuiTieAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTieAdapter),\n/* harmony export */ SuiTieAttributesDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTieAttributesDialog),\n/* harmony export */ SuiTimeSignatureAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTimeSignatureAdapter),\n/* harmony export */ SuiTimeSignatureDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTimeSignatureDialog),\n/* harmony export */ SuiTimeSignatureMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTimeSignatureMenu),\n/* harmony export */ SuiToggleComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiToggleComponent),\n/* harmony export */ SuiToggleComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiToggleComposite),\n/* harmony export */ SuiTracker: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTracker),\n/* harmony export */ SuiTransposeButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTransposeButtonComponent),\n/* harmony export */ SuiTransposeScoreAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTransposeScoreAdapter),\n/* harmony export */ SuiTransposeScoreDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTransposeScoreDialog),\n/* harmony export */ SuiTreeComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTreeComponent),\n/* harmony export */ SuiVexSaveAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiVexSaveAdapter),\n/* harmony export */ SuiVoiceMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiVoiceMenu),\n/* harmony export */ SuiVoltaAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiVoltaAdapter),\n/* harmony export */ SuiVoltaAttributeDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiVoltaAttributeDialog),\n/* harmony export */ SuiWavetable: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiWavetable),\n/* harmony export */ SuiXhrLoader: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiXhrLoader),\n/* harmony export */ SuiXmlLoadAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiXmlLoadAdapter),\n/* harmony export */ SuiXmlSaveAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiXmlSaveAdapter),\n/* harmony export */ SvgBox: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgBox),\n/* harmony export */ SvgBuilder: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgBuilder),\n/* harmony export */ SvgHelpers: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgHelpers),\n/* harmony export */ SvgPage: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgPage),\n/* harmony export */ SvgPageMap: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgPageMap),\n/* harmony export */ SvgPoint: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgPoint),\n/* harmony export */ SynthWavetable: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SynthWavetable),\n/* harmony export */ TEmptyPromise: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TEmptyPromise),\n/* harmony export */ TextCheckComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TextCheckComponent),\n/* harmony export */ TextFormatter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TextFormatter),\n/* harmony export */ TickIteratorBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TickIteratorBase),\n/* harmony export */ TickMap: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TickMap),\n/* harmony export */ TieMappingComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TieMappingComponent),\n/* harmony export */ TimeSignature: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TimeSignature),\n/* harmony export */ UndoBuffer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.UndoBuffer),\n/* harmony export */ UndoSet: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.UndoSet),\n/* harmony export */ VexFlow: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.VexFlow),\n/* harmony export */ VexTabNotePositions: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.VexTabNotePositions),\n/* harmony export */ VxMeasure: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.VxMeasure),\n/* harmony export */ VxNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.VxNote),\n/* harmony export */ VxSystem: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.VxSystem),\n/* harmony export */ XmlHelpers: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.XmlHelpers),\n/* harmony export */ XmlState: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.XmlState),\n/* harmony export */ XmlToSmo: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.XmlToSmo),\n/* harmony export */ XmlTupletStateTreeNode: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.XmlTupletStateTreeNode),\n/* harmony export */ addChordGlyph: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.addChordGlyph),\n/* harmony export */ addFileLink: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.addFileLink),\n/* harmony export */ addOrReplacePedalMarking: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.addOrReplacePedalMarking),\n/* harmony export */ applyStemDirection: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.applyStemDirection),\n/* harmony export */ blockMetricsYShift: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.blockMetricsYShift),\n/* harmony export */ buildDom: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.buildDom),\n/* harmony export */ buttonIsBindable: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.buttonIsBindable),\n/* harmony export */ buttonIsCollapsible: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.buttonIsCollapsible),\n/* harmony export */ chordSubscriptOffset: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.chordSubscriptOffset),\n/* harmony export */ chordSuperscriptOffset: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.chordSuperscriptOffset),\n/* harmony export */ closeDialogPromise: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.closeDialogPromise),\n/* harmony export */ collapsableButtonInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.collapsableButtonInit),\n/* harmony export */ copyUndo: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.copyUndo),\n/* harmony export */ createAndDisplayDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createAndDisplayDialog),\n/* harmony export */ createHairpin: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createHairpin),\n/* harmony export */ createNotePartMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createNotePartMenuOption),\n/* harmony export */ createSlur: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createSlur),\n/* harmony export */ createStave: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createStave),\n/* harmony export */ createStaveText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createStaveText),\n/* harmony export */ createTabStave: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createTabStave),\n/* harmony export */ createTextNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createTextNote),\n/* harmony export */ createTie: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createTie),\n/* harmony export */ createTopDomContainer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createTopDomContainer),\n/* harmony export */ createVoice: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createVoice),\n/* harmony export */ createXmlAttribute: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createXmlAttribute),\n/* harmony export */ createXmlAttributes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createXmlAttributes),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ defaultAudioAnimationHandler: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultAudioAnimationHandler),\n/* harmony export */ defaultClearAudioAnimationHandler: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultClearAudioAnimationHandler),\n/* harmony export */ defaultCueScale: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultCueScale),\n/* harmony export */ defaultEditorKeys: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultEditorKeys),\n/* harmony export */ defaultKeyEvent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultKeyEvent),\n/* harmony export */ defaultMeasurePadding: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultMeasurePadding),\n/* harmony export */ defaultNoteScale: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultNoteScale),\n/* harmony export */ defaultRibbonLayout: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultRibbonLayout),\n/* harmony export */ defaultTrackerKeys: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultTrackerKeys),\n/* harmony export */ dialogConstructor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.dialogConstructor),\n/* harmony export */ draggable: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.draggable),\n/* harmony export */ dynamicCtorInit: () => (/* reexport safe */ _dynamicInit__WEBPACK_IMPORTED_MODULE_18__.dynamicCtorInit),\n/* harmony export */ editInstrumentMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.editInstrumentMenuOption),\n/* harmony export */ editorKeyActions: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.editorKeyActions),\n/* harmony export */ engravingFontTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.engravingFontTypes),\n/* harmony export */ focusableElements: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.focusableElements),\n/* harmony export */ fontStacks: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.fontStacks),\n/* harmony export */ getChordSymbolGlyphFromCode: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getChordSymbolGlyphFromCode),\n/* harmony export */ getChordSymbolMetricsForGlyph: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getChordSymbolMetricsForGlyph),\n/* harmony export */ getDomContainer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getDomContainer),\n/* harmony export */ getGlyphWidth: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getGlyphWidth),\n/* harmony export */ getId: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getId),\n/* harmony export */ getMultimeasureRest: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getMultimeasureRest),\n/* harmony export */ getOrnamentGlyph: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getOrnamentGlyph),\n/* harmony export */ getRepeatBar: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getRepeatBar),\n/* harmony export */ getSlashGlyph: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getSlashGlyph),\n/* harmony export */ getTabNotePitchesFcn: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getTabNotePitchesFcn),\n/* harmony export */ getValueForTick: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getValueForTick),\n/* harmony export */ getVexChordBlocks: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getVexChordBlocks),\n/* harmony export */ getVexGlyphFromChordCode: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getVexGlyphFromChordCode),\n/* harmony export */ getVexNoteParameters: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getVexNoteParameters),\n/* harmony export */ getVexTuplets: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getVexTuplets),\n/* harmony export */ getVoiceId: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getVoiceId),\n/* harmony export */ glyphPixels: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.glyphPixels),\n/* harmony export */ helpModal: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.helpModal),\n/* harmony export */ initDialogConstructors: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.initDialogConstructors),\n/* harmony export */ initDialogTranslationElements: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.initDialogTranslationElements),\n/* harmony export */ isArpeggioType: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isArpeggioType),\n/* harmony export */ isClefChangeParamsSer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isClefChangeParamsSer),\n/* harmony export */ isEditorKeyAction: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.isEditorKeyAction),\n/* harmony export */ isEmptyTextBlock: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isEmptyTextBlock),\n/* harmony export */ isEngravingFont: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isEngravingFont),\n/* harmony export */ isModalButtonType: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isModalButtonType),\n/* harmony export */ isModifierWithDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isModifierWithDialog),\n/* harmony export */ isSmoNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isSmoNote),\n/* harmony export */ isSmoPedalMarkingParamsSer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isSmoPedalMarkingParamsSer),\n/* harmony export */ isSmoScoreParemsSer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isSmoScoreParemsSer),\n/* harmony export */ isTrackerKeyAction: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.isTrackerKeyAction),\n/* harmony export */ keyEventMatch: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.keyEventMatch),\n/* harmony export */ layoutDebug: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.layoutDebug),\n/* harmony export */ leftConnectorVx: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.leftConnectorVx),\n/* harmony export */ measureModifierDynamicCtorInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.measureModifierDynamicCtorInit),\n/* harmony export */ menuTranslationsInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.menuTranslationsInit),\n/* harmony export */ moveDownMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.moveDownMenuOption),\n/* harmony export */ moveUpMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.moveUpMenuOption),\n/* harmony export */ noteModifierDynamicCtorInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.noteModifierDynamicCtorInit),\n/* harmony export */ pageLayoutMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.pageLayoutMenuOption),\n/* harmony export */ parseMidi: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.parseMidi),\n/* harmony export */ partPropertiesMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.partPropertiesMenuOption),\n/* harmony export */ pitchToLedgerLine: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.pitchToLedgerLine),\n/* harmony export */ removePartMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.removePartMenuOption),\n/* harmony export */ renderDynamics: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.renderDynamics),\n/* harmony export */ renderVexTests: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.renderVexTests),\n/* harmony export */ renderVoltas: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.renderVoltas),\n/* harmony export */ reverseStaticMap: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.reverseStaticMap),\n/* harmony export */ reverseStaticMaps: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.reverseStaticMaps),\n/* harmony export */ rightConnectorVx: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.rightConnectorVx),\n/* harmony export */ sampleForPercussion: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.sampleForPercussion),\n/* harmony export */ sampleFromFrequency: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.sampleFromFrequency),\n/* harmony export */ sampleFromMinDuration: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.sampleFromMinDuration),\n/* harmony export */ scoreChangeEvent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.scoreChangeEvent),\n/* harmony export */ scoreModifierDynamicCtorInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.scoreModifierDynamicCtorInit),\n/* harmony export */ setFontStack: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.setFontStack),\n/* harmony export */ simpleRibbonLayout: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.simpleRibbonLayout),\n/* harmony export */ staffModifierDynamicCtorInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.staffModifierDynamicCtorInit),\n/* harmony export */ suiConfiguredMenuTranslate: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.suiConfiguredMenuTranslate),\n/* harmony export */ suiDialogTranslate: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.suiDialogTranslate),\n/* harmony export */ suiMenuTranslation: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.suiMenuTranslation),\n/* harmony export */ tabStaveMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.tabStaveMenuOption),\n/* harmony export */ toVexBarlinePosition: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexBarlinePosition),\n/* harmony export */ toVexBarlineType: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexBarlineType),\n/* harmony export */ toVexStemDirection: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexStemDirection),\n/* harmony export */ toVexSymbol: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexSymbol),\n/* harmony export */ toVexTextJustification: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexTextJustification),\n/* harmony export */ toVexTextPosition: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexTextPosition),\n/* harmony export */ toVexVolta: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexVolta),\n/* harmony export */ trackerKeyActions: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.trackerKeyActions),\n/* harmony export */ vexAnnotationPosition: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexAnnotationPosition),\n/* harmony export */ vexBarlinePosition: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexBarlinePosition),\n/* harmony export */ vexBarlineType: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexBarlineType),\n/* harmony export */ vexCanonicalNotes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexCanonicalNotes),\n/* harmony export */ vexGlyph: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexGlyph),\n/* harmony export */ vexOptions: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexOptions),\n/* harmony export */ vexOrnaments: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexOrnaments),\n/* harmony export */ vexSymbol: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexSymbol),\n/* harmony export */ vexTextJustification: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexTextJustification),\n/* harmony export */ vexTextPosition: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexTextPosition),\n/* harmony export */ viewFullScoreMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.viewFullScoreMenuOption),\n/* harmony export */ viewPartialScoreMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.viewPartialScoreMenuOption)\n/* harmony export */ });\n/* harmony import */ var _common_textformatter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/textformatter */ \"./src/common/textformatter.ts\");\n/* harmony import */ var _common_vex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/vex */ \"./src/common/vex.ts\");\n/* harmony import */ var _common_midi_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/midi-parser */ \"./src/common/midi-parser.js\");\n/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./application */ \"./src/application/application.ts\");\n/* harmony import */ var _eventHandler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./eventHandler */ \"./src/application/eventHandler.ts\");\n/* harmony import */ var _ui_exceptions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/exceptions */ \"./src/ui/exceptions.ts\");\n/* harmony import */ var _ui_qwerty__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/qwerty */ \"./src/ui/qwerty.ts\");\n/* harmony import */ var _render_sui_piano__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../render/sui/piano */ \"./src/render/sui/piano.ts\");\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dom */ \"./src/application/dom.ts\");\n/* harmony import */ var _ui_help__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ui/help */ \"./src/ui/help.ts\");\n/* harmony import */ var _ui_buttons_collapsable__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../ui/buttons/collapsable */ \"./src/ui/buttons/collapsable.ts\");\n/* harmony import */ var _ui_buttons_display__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../ui/buttons/display */ \"./src/ui/buttons/display.ts\");\n/* harmony import */ var _ui_i18n_translationEditor__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../ui/i18n/translationEditor */ \"./src/ui/i18n/translationEditor.ts\");\n/* harmony import */ var _configuration__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./configuration */ \"./src/application/configuration.ts\");\n/* harmony import */ var _ui_buttons_ribbon__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../ui/buttons/ribbon */ \"./src/ui/buttons/ribbon.ts\");\n/* harmony import */ var _ui_ribbonLayout_default_tabletRibbon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../ui/ribbonLayout/default/tabletRibbon */ \"./src/ui/ribbonLayout/default/tabletRibbon.ts\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./common */ \"./src/application/common.ts\");\n/* harmony import */ var _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../ui/i18n/language_en */ \"./src/ui/i18n/language_en.js\");\n/* harmony import */ var _dynamicInit__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./dynamicInit */ \"./src/application/dynamicInit.ts\");\n/* harmony import */ var _ui_dialogs_dialog__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../ui/dialogs/dialog */ \"./src/ui/dialogs/dialog.ts\");\n/* harmony import */ var _ui_dialogs_adapter__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../ui/dialogs/adapter */ \"./src/ui/dialogs/adapter.ts\");\n/* harmony import */ var _ui_dialogs_gracenote__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../ui/dialogs/gracenote */ \"./src/ui/dialogs/gracenote.ts\");\n/* harmony import */ var _ui_dialogs_factory__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../ui/dialogs/factory */ \"./src/ui/dialogs/factory.ts\");\n/* harmony import */ var _ui_dialogs_transposeScore__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../ui/dialogs/transposeScore */ \"./src/ui/dialogs/transposeScore.ts\");\n/* harmony import */ var _ui_dialogs_measureFormat__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../ui/dialogs/measureFormat */ \"./src/ui/dialogs/measureFormat.ts\");\n/* harmony import */ var _ui_dialogs_addMeasure__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../ui/dialogs/addMeasure */ \"./src/ui/dialogs/addMeasure.ts\");\n/* harmony import */ var _ui_dialogs_instrument__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../ui/dialogs/instrument */ \"./src/ui/dialogs/instrument.ts\");\n/* harmony import */ var _ui_dialogs_timeSignature__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../ui/dialogs/timeSignature */ \"./src/ui/dialogs/timeSignature.ts\");\n/* harmony import */ var _ui_dialogs_tempo__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../ui/dialogs/tempo */ \"./src/ui/dialogs/tempo.ts\");\n/* harmony import */ var _ui_dialogs_noteHead__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../ui/dialogs/noteHead */ \"./src/ui/dialogs/noteHead.ts\");\n/* harmony import */ var _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../ui/dialogs/endings */ \"./src/ui/dialogs/endings.ts\");\n/* harmony import */ var _ui_dialogs_scoreId__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../ui/dialogs/scoreId */ \"./src/ui/dialogs/scoreId.ts\");\n/* harmony import */ var _ui_dialogs_preferences__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../ui/dialogs/preferences */ \"./src/ui/dialogs/preferences.ts\");\n/* harmony import */ var _ui_dialogs_pageLayout__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../ui/dialogs/pageLayout */ \"./src/ui/dialogs/pageLayout.ts\");\n/* harmony import */ var _ui_dialogs_textBracket__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../ui/dialogs/textBracket */ \"./src/ui/dialogs/textBracket.ts\");\n/* harmony import */ var _ui_dialogs_fonts__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../ui/dialogs/fonts */ \"./src/ui/dialogs/fonts.ts\");\n/* harmony import */ var _ui_dialogs_globalLayout__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../ui/dialogs/globalLayout */ \"./src/ui/dialogs/globalLayout.ts\");\n/* harmony import */ var _ui_dialogs_scoreView__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../ui/dialogs/scoreView */ \"./src/ui/dialogs/scoreView.ts\");\n/* harmony import */ var _ui_dialogs_library__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../ui/dialogs/library */ \"./src/ui/dialogs/library.ts\");\n/* harmony import */ var _ui_dialogs_chordChange__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ../ui/dialogs/chordChange */ \"./src/ui/dialogs/chordChange.ts\");\n/* harmony import */ var _ui_dialogs_lyric__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../ui/dialogs/lyric */ \"./src/ui/dialogs/lyric.ts\");\n/* harmony import */ var _ui_dialogs_textBlock__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ../ui/dialogs/textBlock */ \"./src/ui/dialogs/textBlock.ts\");\n/* harmony import */ var _ui_dialogs_dynamics__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ../ui/dialogs/dynamics */ \"./src/ui/dialogs/dynamics.ts\");\n/* harmony import */ var _ui_dialogs_slur__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../ui/dialogs/slur */ \"./src/ui/dialogs/slur.ts\");\n/* harmony import */ var _ui_dialogs_pedalMarking__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../ui/dialogs/pedalMarking */ \"./src/ui/dialogs/pedalMarking.ts\");\n/* harmony import */ var _ui_dialogs_tie__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../ui/dialogs/tie */ \"./src/ui/dialogs/tie.ts\");\n/* harmony import */ var _ui_dialogs_volta__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../ui/dialogs/volta */ \"./src/ui/dialogs/volta.ts\");\n/* harmony import */ var _ui_dialogs_hairpin__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ../ui/dialogs/hairpin */ \"./src/ui/dialogs/hairpin.ts\");\n/* harmony import */ var _ui_dialogs_staffGroup__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ../ui/dialogs/staffGroup */ \"./src/ui/dialogs/staffGroup.ts\");\n/* harmony import */ var _ui_dialogs_ornament__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ../ui/dialogs/ornament */ \"./src/ui/dialogs/ornament.ts\");\n/* harmony import */ var _ui_dialogs_articulation__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ../ui/dialogs/articulation */ \"./src/ui/dialogs/articulation.ts\");\n/* harmony import */ var _ui_dialogs_microtones__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ../ui/dialogs/microtones */ \"./src/ui/dialogs/microtones.ts\");\n/* harmony import */ var _ui_dialogs_arpeggio__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ../ui/dialogs/arpeggio */ \"./src/ui/dialogs/arpeggio.ts\");\n/* harmony import */ var _ui_dialogs_clefChange__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ../ui/dialogs/clefChange */ \"./src/ui/dialogs/clefChange.ts\");\n/* harmony import */ var _ui_dialogs_partInfo__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ../ui/dialogs/partInfo */ \"./src/ui/dialogs/partInfo.ts\");\n/* harmony import */ var _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../ui/dialogs/fileDialogs */ \"./src/ui/dialogs/fileDialogs.ts\");\n/* harmony import */ var _ui_dialogs_components_textInput__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ../ui/dialogs/components/textInput */ \"./src/ui/dialogs/components/textInput.ts\");\n/* harmony import */ var _ui_dialogs_components_dropdown__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../ui/dialogs/components/dropdown */ \"./src/ui/dialogs/components/dropdown.ts\");\n/* harmony import */ var _ui_dialogs_components_button__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../ui/dialogs/components/button */ \"./src/ui/dialogs/components/button.ts\");\n/* harmony import */ var _ui_dialogs_components_buttonArray__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../ui/dialogs/components/buttonArray */ \"./src/ui/dialogs/components/buttonArray.ts\");\n/* harmony import */ var _ui_dialogs_components_toggle__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ../ui/dialogs/components/toggle */ \"./src/ui/dialogs/components/toggle.ts\");\n/* harmony import */ var _ui_dialogs_components_fileDownload__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ../ui/dialogs/components/fileDownload */ \"./src/ui/dialogs/components/fileDownload.ts\");\n/* harmony import */ var _ui_dialogs_components_rocker__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../ui/dialogs/components/rocker */ \"./src/ui/dialogs/components/rocker.ts\");\n/* harmony import */ var _ui_dialogs_components_fontComponent__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ../ui/dialogs/components/fontComponent */ \"./src/ui/dialogs/components/fontComponent.ts\");\n/* harmony import */ var _ui_dialogs_components_textInPlace__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ../ui/dialogs/components/textInPlace */ \"./src/ui/dialogs/components/textInPlace.ts\");\n/* harmony import */ var _ui_dialogs_components_tree__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ../ui/dialogs/components/tree */ \"./src/ui/dialogs/components/tree.ts\");\n/* harmony import */ var _ui_dialogs_components_pitch__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ../ui/dialogs/components/pitch */ \"./src/ui/dialogs/components/pitch.ts\");\n/* harmony import */ var _ui_dialogs_components_noteText__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ../ui/dialogs/components/noteText */ \"./src/ui/dialogs/components/noteText.ts\");\n/* harmony import */ var _ui_dialogs_components_dragText__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ../ui/dialogs/components/dragText */ \"./src/ui/dialogs/components/dragText.ts\");\n/* harmony import */ var _ui_dialogs_components_checkdrop__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ../ui/dialogs/components/checkdrop */ \"./src/ui/dialogs/components/checkdrop.ts\");\n/* harmony import */ var _ui_dialogs_components_tie__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ../ui/dialogs/components/tie */ \"./src/ui/dialogs/components/tie.ts\");\n/* harmony import */ var _ui_dialogs_components_staffComponents__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ../ui/dialogs/components/staffComponents */ \"./src/ui/dialogs/components/staffComponents.ts\");\n/* harmony import */ var _ui_dialogs_keySignature__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ../ui/dialogs/keySignature */ \"./src/ui/dialogs/keySignature.ts\");\n/* harmony import */ var _ui_dialogs_components_textCheck__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ../ui/dialogs/components/textCheck */ \"./src/ui/dialogs/components/textCheck.ts\");\n/* harmony import */ var _ui_menus_manager__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ../ui/menus/manager */ \"./src/ui/menus/manager.ts\");\n/* harmony import */ var _ui_menus_menu__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ../ui/menus/menu */ \"./src/ui/menus/menu.ts\");\n/* harmony import */ var _ui_menus_score__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ../ui/menus/score */ \"./src/ui/menus/score.ts\");\n/* harmony import */ var _ui_menus_text__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ../ui/menus/text */ \"./src/ui/menus/text.ts\");\n/* harmony import */ var _ui_menus_parts__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ../ui/menus/parts */ \"./src/ui/menus/parts.ts\");\n/* harmony import */ var _ui_menus_voices__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ../ui/menus/voices */ \"./src/ui/menus/voices.ts\");\n/* harmony import */ var _ui_menus_beams__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ../ui/menus/beams */ \"./src/ui/menus/beams.ts\");\n/* harmony import */ var _ui_menus_partSelection__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ../ui/menus/partSelection */ \"./src/ui/menus/partSelection.ts\");\n/* harmony import */ var _ui_menus_dynamics__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ../ui/menus/dynamics */ \"./src/ui/menus/dynamics.ts\");\n/* harmony import */ var _ui_menus_timeSignature__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ../ui/menus/timeSignature */ \"./src/ui/menus/timeSignature.ts\");\n/* harmony import */ var _ui_menus_keySignature__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ../ui/menus/keySignature */ \"./src/ui/menus/keySignature.ts\");\n/* harmony import */ var _ui_menus_staffModifier__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ../ui/menus/staffModifier */ \"./src/ui/menus/staffModifier.ts\");\n/* harmony import */ var _ui_menus_file__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ../ui/menus/file */ \"./src/ui/menus/file.ts\");\n/* harmony import */ var _ui_menus_language__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ../ui/menus/language */ \"./src/ui/menus/language.ts\");\n/* harmony import */ var _ui_i18n_language__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ../ui/i18n/language */ \"./src/ui/i18n/language.ts\");\n/* harmony import */ var _ui_menus_measure__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ../ui/menus/measure */ \"./src/ui/menus/measure.ts\");\n/* harmony import */ var _ui_menus_note__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ../ui/menus/note */ \"./src/ui/menus/note.ts\");\n/* harmony import */ var _ui_fileio_xhrLoader__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ../ui/fileio/xhrLoader */ \"./src/ui/fileio/xhrLoader.ts\");\n/* harmony import */ var _common_promiseHelpers__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ../common/promiseHelpers */ \"./src/common/promiseHelpers.ts\");\n/* harmony import */ var _render_sui_scoreView__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ../render/sui/scoreView */ \"./src/render/sui/scoreView.ts\");\n/* harmony import */ var _render_sui_scoreViewOperations__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ../render/sui/scoreViewOperations */ \"./src/render/sui/scoreViewOperations.ts\");\n/* harmony import */ var _render_sui_scoreRender__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ../render/sui/scoreRender */ \"./src/render/sui/scoreRender.ts\");\n/* harmony import */ var _render_sui_layoutDebug__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ../render/sui/layoutDebug */ \"./src/render/sui/layoutDebug.ts\");\n/* harmony import */ var _render_sui_mapper__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ../render/sui/mapper */ \"./src/render/sui/mapper.ts\");\n/* harmony import */ var _render_sui_scroller__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ../render/sui/scroller */ \"./src/render/sui/scroller.ts\");\n/* harmony import */ var _render_sui_svgHelpers__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ../render/sui/svgHelpers */ \"./src/render/sui/svgHelpers.ts\");\n/* harmony import */ var _render_audio_player__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ../render/audio/player */ \"./src/render/audio/player.ts\");\n/* harmony import */ var _render_audio_oscillator__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ../render/audio/oscillator */ \"./src/render/audio/oscillator.ts\");\n/* harmony import */ var _render_audio_samples__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ../render/audio/samples */ \"./src/render/audio/samples.ts\");\n/* harmony import */ var _smo_data_common__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ../smo/data/common */ \"./src/smo/data/common.ts\");\n/* harmony import */ var _smo_data_score__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ../smo/data/score */ \"./src/smo/data/score.ts\");\n/* harmony import */ var _smo_xform_undo__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ../smo/xform/undo */ \"./src/smo/xform/undo.ts\");\n/* harmony import */ var _smo_data_note__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ../smo/data/note */ \"./src/smo/data/note.ts\");\n/* harmony import */ var _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ../smo/data/staffModifiers */ \"./src/smo/data/staffModifiers.ts\");\n/* harmony import */ var _smo_data_measure__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ../smo/data/measure */ \"./src/smo/data/measure.ts\");\n/* harmony import */ var _smo_data_music__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ../smo/data/music */ \"./src/smo/data/music.ts\");\n/* harmony import */ var _smo_xform_selections__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ../smo/xform/selections */ \"./src/smo/xform/selections.ts\");\n/* harmony import */ var _smo_xform_beamers__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ../smo/xform/beamers */ \"./src/smo/xform/beamers.ts\");\n/* harmony import */ var _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ../smo/data/noteModifiers */ \"./src/smo/data/noteModifiers.ts\");\n/* harmony import */ var _smo_data_systemStaff__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ../smo/data/systemStaff */ \"./src/smo/data/systemStaff.ts\");\n/* harmony import */ var _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ../smo/data/scoreModifiers */ \"./src/smo/data/scoreModifiers.ts\");\n/* harmony import */ var _smo_data_scoreText__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ../smo/data/scoreText */ \"./src/smo/data/scoreText.ts\");\n/* harmony import */ var _smo_xform_operations__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ../smo/xform/operations */ \"./src/smo/xform/operations.ts\");\n/* harmony import */ var _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ../smo/data/measureModifiers */ \"./src/smo/data/measureModifiers.ts\");\n/* harmony import */ var _smo_mxml_smoToXml__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ../smo/mxml/smoToXml */ \"./src/smo/mxml/smoToXml.ts\");\n/* harmony import */ var _smo_midi_midiToSmo__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ../smo/midi/midiToSmo */ \"./src/smo/midi/midiToSmo.ts\");\n/* harmony import */ var _smo_midi_smoToMidi__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ../smo/midi/smoToMidi */ \"./src/smo/midi/smoToMidi.ts\");\n/* harmony import */ var _smo_mxml_xmlToSmo__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ../smo/mxml/xmlToSmo */ \"./src/smo/mxml/xmlToSmo.ts\");\n/* harmony import */ var _render_vex_toVex__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ../render/vex/toVex */ \"./src/render/vex/toVex.ts\");\n/* harmony import */ var _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ../common/htmlHelpers */ \"./src/common/htmlHelpers.ts\");\n/* harmony import */ var _generateVexTests__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./generateVexTests */ \"./src/application/generateVexTests.ts\");\n/* harmony import */ var _ui_dialogs_durations__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ../ui/dialogs/durations */ \"./src/ui/dialogs/durations.ts\");\n/* harmony import */ var _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ../ui/dialogs/pitch */ \"./src/ui/dialogs/pitch.ts\");\n/* harmony import */ var _exports__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./exports */ \"./src/application/exports.ts\");\n/* harmony import */ var _keyCommands__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./keyCommands */ \"./src/application/keyCommands.ts\");\n/* harmony import */ var _render_audio_musicCursor__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(/*! ../render/audio/musicCursor */ \"./src/render/audio/musicCursor.ts\");\n/* harmony import */ var _render_sui_configuration__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(/*! ../render/sui/configuration */ \"./src/render/sui/configuration.ts\");\n/* harmony import */ var _render_sui_formatter__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(/*! ../render/sui/formatter */ \"./src/render/sui/formatter.ts\");\n/* harmony import */ var _render_sui_renderState__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(/*! ../render/sui/renderState */ \"./src/render/sui/renderState.ts\");\n/* harmony import */ var _render_sui_svgPageMap__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(/*! ../render/sui/svgPageMap */ \"./src/render/sui/svgPageMap.ts\");\n/* harmony import */ var _render_sui_textEdit__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(/*! ../render/sui/textEdit */ \"./src/render/sui/textEdit.ts\");\n/* harmony import */ var _render_sui_textRender__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(/*! ../render/sui/textRender */ \"./src/render/sui/textRender.ts\");\n/* harmony import */ var _render_sui_tracker__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(/*! ../render/sui/tracker */ \"./src/render/sui/tracker.ts\");\n/* harmony import */ var _render_vex_glyphDimensions__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(/*! ../render/vex/glyphDimensions */ \"./src/render/vex/glyphDimensions.ts\");\n/* harmony import */ var _render_vex_smoAdapter__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(/*! ../render/vex/smoAdapter */ \"./src/render/vex/smoAdapter.ts\");\n/* harmony import */ var _render_vex_vxMeasure__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(/*! ../render/vex/vxMeasure */ \"./src/render/vex/vxMeasure.ts\");\n/* harmony import */ var _render_vex_vxNote__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(/*! ../render/vex/vxNote */ \"./src/render/vex/vxNote.ts\");\n/* harmony import */ var _render_vex_vxSystem__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(/*! ../render/vex/vxSystem */ \"./src/render/vex/vxSystem.ts\");\n/* harmony import */ var _smo_data_partInfo__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(/*! ../smo/data/partInfo */ \"./src/smo/data/partInfo.ts\");\n/* harmony import */ var _smo_data_tuplet__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(/*! ../smo/data/tuplet */ \"./src/smo/data/tuplet.ts\");\n/* harmony import */ var _smo_mxml_xmlHelpers__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(/*! ../smo/mxml/xmlHelpers */ \"./src/smo/mxml/xmlHelpers.ts\");\n/* harmony import */ var _smo_mxml_xmlState__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(/*! ../smo/mxml/xmlState */ \"./src/smo/mxml/xmlState.ts\");\n/* harmony import */ var _smo_xform_audioTrack__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(/*! ../smo/xform/audioTrack */ \"./src/smo/xform/audioTrack.ts\");\n/* harmony import */ var _smo_xform_copypaste__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(/*! ../smo/xform/copypaste */ \"./src/smo/xform/copypaste.ts\");\n/* harmony import */ var _smo_xform_tickDuration__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(/*! ../smo/xform/tickDuration */ \"./src/smo/xform/tickDuration.ts\");\n/* harmony import */ var _smo_xform_tickMap__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(/*! ../smo/xform/tickMap */ \"./src/smo/xform/tickMap.ts\");\n/* harmony import */ var _ui_buttons_button__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(/*! ../ui/buttons/button */ \"./src/ui/buttons/button.ts\");\n/* harmony import */ var _ui_common__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(/*! ../ui/common */ \"./src/ui/common.ts\");\n/* harmony import */ var _ui_configuration__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(/*! ../ui/configuration */ \"./src/ui/configuration.ts\");\n/* harmony import */ var _ui_dialogs_audioSettings__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(/*! ../ui/dialogs/audioSettings */ \"./src/ui/dialogs/audioSettings.ts\");\n/* harmony import */ var _ui_dialogs_components_baseComponent__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(/*! ../ui/dialogs/components/baseComponent */ \"./src/ui/dialogs/components/baseComponent.ts\");\n/* harmony import */ var _ui_dialogs_newPart__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(/*! ../ui/dialogs/newPart */ \"./src/ui/dialogs/newPart.ts\");\n/* harmony import */ var _ui_dialogs_tabNote__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(/*! ../ui/dialogs/tabNote */ \"./src/ui/dialogs/tabNote.ts\");\n/* harmony import */ var _ui_dialogs_tabStave__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(/*! ../ui/dialogs/tabStave */ \"./src/ui/dialogs/tabStave.ts\");\n/* harmony import */ var _ui_eventSource__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(/*! ../ui/eventSource */ \"./src/ui/eventSource.ts\");\n/* harmony import */ var _ui_fileio_fileInput__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(/*! ../ui/fileio/fileInput */ \"./src/ui/fileio/fileInput.ts\");\n/* harmony import */ var _ui_fileio_library__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(/*! ../ui/fileio/library */ \"./src/ui/fileio/library.ts\");\n/* harmony import */ var _ui_keyBindings_default_editorKeys__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(/*! ../ui/keyBindings/default/editorKeys */ \"./src/ui/keyBindings/default/editorKeys.ts\");\n/* harmony import */ var _ui_keyBindings_default_trackerKeys__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(/*! ../ui/keyBindings/default/trackerKeys */ \"./src/ui/keyBindings/default/trackerKeys.ts\");\n/* harmony import */ var _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(/*! ../ui/ribbonLayout/default/defaultRibbon */ \"./src/ui/ribbonLayout/default/defaultRibbon.ts\");\n// Smoosic relies on dynamic creation of almost everything. This class exports all the symbols\n// that need to be created via reflection.\n// ui application components\n// vexflow interface\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Language strings\n\n\n// ui dialogs and menus\n// Dialogs\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Dialog components\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// menus\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// render library\n\n\n\n\n\n\n\n// audio library\n\n\n\n// SMO object model\n\n\n\n\n// import { SmoDuration } from '../smo/xform/tickDuration';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// utilities\n\n\n\n\nconst getClass = (jsonString) => {\n return eval('Smo.' + jsonString);\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst Smo = {\n // Application-level classes\n SmoConfiguration: _configuration__WEBPACK_IMPORTED_MODULE_13__.SmoConfiguration,\n SuiApplication: _application__WEBPACK_IMPORTED_MODULE_3__.SuiApplication,\n dynamicCtorInit: _dynamicInit__WEBPACK_IMPORTED_MODULE_18__.dynamicCtorInit,\n parseMidi: _common_midi_parser__WEBPACK_IMPORTED_MODULE_2__.parseMidi,\n SuiDom: _dom__WEBPACK_IMPORTED_MODULE_8__.SuiDom, SuiEventHandler: _eventHandler__WEBPACK_IMPORTED_MODULE_4__.SuiEventHandler, SuiExceptionHandler: _ui_exceptions__WEBPACK_IMPORTED_MODULE_5__.SuiExceptionHandler,\n Qwerty: _ui_qwerty__WEBPACK_IMPORTED_MODULE_6__.Qwerty, SuiHelp: _ui_help__WEBPACK_IMPORTED_MODULE_9__.SuiHelp, SmoTranslationEditor: _ui_i18n_translationEditor__WEBPACK_IMPORTED_MODULE_12__.SmoTranslationEditor, ModalEventHandler: _common__WEBPACK_IMPORTED_MODULE_16__.ModalEventHandler,\n // Ribbon buttons\n simpleRibbonLayout: _ui_ribbonLayout_default_tabletRibbon__WEBPACK_IMPORTED_MODULE_15__.simpleRibbonLayout,\n RibbonButtons: _ui_buttons_ribbon__WEBPACK_IMPORTED_MODULE_14__.RibbonButtons,\n DisplaySettings: _ui_buttons_display__WEBPACK_IMPORTED_MODULE_11__.DisplaySettings, ExtendedCollapseParent: _ui_buttons_collapsable__WEBPACK_IMPORTED_MODULE_10__.ExtendedCollapseParent, CollapseRibbonControl: _ui_buttons_collapsable__WEBPACK_IMPORTED_MODULE_10__.CollapseRibbonControl,\n // Menus\n SuiMenuManager: _ui_menus_manager__WEBPACK_IMPORTED_MODULE_74__.SuiMenuManager, SuiMenuBase: _ui_menus_menu__WEBPACK_IMPORTED_MODULE_75__.SuiMenuBase, SuiMenuCustomizer: _ui_menus_menu__WEBPACK_IMPORTED_MODULE_75__.SuiMenuCustomizer, SuiScoreMenu: _ui_menus_score__WEBPACK_IMPORTED_MODULE_76__.SuiScoreMenu, SuiFileMenu: _ui_menus_file__WEBPACK_IMPORTED_MODULE_86__.SuiFileMenu,\n SuiDynamicsMenu: _ui_menus_dynamics__WEBPACK_IMPORTED_MODULE_82__.SuiDynamicsMenu, SuiTimeSignatureMenu: _ui_menus_timeSignature__WEBPACK_IMPORTED_MODULE_83__.SuiTimeSignatureMenu, SuiKeySignatureMenu: _ui_menus_keySignature__WEBPACK_IMPORTED_MODULE_84__.SuiKeySignatureMenu, SuiStaffModifierMenu: _ui_menus_staffModifier__WEBPACK_IMPORTED_MODULE_85__.SuiStaffModifierMenu,\n SuiLanguageMenu: _ui_menus_language__WEBPACK_IMPORTED_MODULE_87__.SuiLanguageMenu, SuiMeasureMenu: _ui_menus_measure__WEBPACK_IMPORTED_MODULE_89__.SuiMeasureMenu, SuiNoteMenu: _ui_menus_note__WEBPACK_IMPORTED_MODULE_90__.SuiNoteMenu, SmoLanguage: _ui_i18n_language__WEBPACK_IMPORTED_MODULE_88__.SmoLanguage, SmoTranslator: _ui_i18n_language__WEBPACK_IMPORTED_MODULE_88__.SmoTranslator, SuiPartMenu: _ui_menus_parts__WEBPACK_IMPORTED_MODULE_78__.SuiPartMenu,\n SuiPartSelectionMenu: _ui_menus_partSelection__WEBPACK_IMPORTED_MODULE_81__.SuiPartSelectionMenu, SuiTextMenu: _ui_menus_text__WEBPACK_IMPORTED_MODULE_77__.SuiTextMenu, SuiVoiceMenu: _ui_menus_voices__WEBPACK_IMPORTED_MODULE_79__.SuiVoiceMenu, SuiBeamMenu: _ui_menus_beams__WEBPACK_IMPORTED_MODULE_80__.SuiBeamMenu,\n // Dialogs\n SuiGraceNoteAdapter: _ui_dialogs_gracenote__WEBPACK_IMPORTED_MODULE_21__.SuiGraceNoteAdapter, SuiGraceNoteDialog: _ui_dialogs_gracenote__WEBPACK_IMPORTED_MODULE_21__.SuiGraceNoteDialog, SuiGraceNoteButtonsComponent: _ui_dialogs_gracenote__WEBPACK_IMPORTED_MODULE_21__.SuiGraceNoteButtonsComponent,\n SuiDurationAdapter: _ui_dialogs_durations__WEBPACK_IMPORTED_MODULE_125__.SuiDurationAdapter, SuiDurationDialog: _ui_dialogs_durations__WEBPACK_IMPORTED_MODULE_125__.SuiDurationDialog, SuiDurationButtonComponent: _ui_dialogs_durations__WEBPACK_IMPORTED_MODULE_125__.SuiDurationButtonComponent,\n SuiComponentAdapter: _ui_dialogs_adapter__WEBPACK_IMPORTED_MODULE_20__.SuiComponentAdapter, SuiDialogAdapterBase: _ui_dialogs_adapter__WEBPACK_IMPORTED_MODULE_20__.SuiDialogAdapterBase,\n SuiTempoDialog: _ui_dialogs_tempo__WEBPACK_IMPORTED_MODULE_28__.SuiTempoDialog, SuiInstrumentDialog: _ui_dialogs_instrument__WEBPACK_IMPORTED_MODULE_26__.SuiInstrumentDialog, SuiModifierDialogFactory: _ui_dialogs_factory__WEBPACK_IMPORTED_MODULE_22__.SuiModifierDialogFactory, SuiLibraryDialog: _ui_dialogs_library__WEBPACK_IMPORTED_MODULE_38__.SuiLibraryDialog,\n SuiTextBracketDialog: _ui_dialogs_textBracket__WEBPACK_IMPORTED_MODULE_34__.SuiTextBracketDialog, SuiKeySignatureDialog: _ui_dialogs_keySignature__WEBPACK_IMPORTED_MODULE_72__.SuiKeySignatureDialog, SuiKeySignatureAdapter: _ui_dialogs_keySignature__WEBPACK_IMPORTED_MODULE_72__.SuiKeySignatureAdapter,\n SuiScoreViewDialog: _ui_dialogs_scoreView__WEBPACK_IMPORTED_MODULE_37__.SuiScoreViewDialog, SuiGlobalLayoutDialog: _ui_dialogs_globalLayout__WEBPACK_IMPORTED_MODULE_36__.SuiGlobalLayoutDialog, SuiScoreIdentificationDialog: _ui_dialogs_scoreId__WEBPACK_IMPORTED_MODULE_31__.SuiScoreIdentificationDialog, SuiTransposeScoreAdapter: _ui_dialogs_transposeScore__WEBPACK_IMPORTED_MODULE_23__.SuiTransposeScoreAdapter,\n SuiTransposeScoreDialog: _ui_dialogs_transposeScore__WEBPACK_IMPORTED_MODULE_23__.SuiTransposeScoreDialog,\n SuiScoreFontDialog: _ui_dialogs_fonts__WEBPACK_IMPORTED_MODULE_35__.SuiScoreFontDialog, SuiPageLayoutDialog: _ui_dialogs_pageLayout__WEBPACK_IMPORTED_MODULE_33__.SuiPageLayoutDialog, SuiMeasureDialog: _ui_dialogs_measureFormat__WEBPACK_IMPORTED_MODULE_24__.SuiMeasureDialog, SuiInsertMeasures: _ui_dialogs_addMeasure__WEBPACK_IMPORTED_MODULE_25__.SuiInsertMeasures,\n SuiTimeSignatureDialog: _ui_dialogs_timeSignature__WEBPACK_IMPORTED_MODULE_27__.SuiTimeSignatureDialog, SuiTextBlockDialog: _ui_dialogs_textBlock__WEBPACK_IMPORTED_MODULE_41__.SuiTextBlockDialog, SuiLyricDialog: _ui_dialogs_lyric__WEBPACK_IMPORTED_MODULE_40__.SuiLyricDialog, SuiChordChangeDialog: _ui_dialogs_chordChange__WEBPACK_IMPORTED_MODULE_39__.SuiChordChangeDialog,\n SuiSlurAttributesDialog: _ui_dialogs_slur__WEBPACK_IMPORTED_MODULE_43__.SuiSlurAttributesDialog, SuiPedalMarkingDialog: _ui_dialogs_pedalMarking__WEBPACK_IMPORTED_MODULE_44__.SuiPedalMarkingDialog, SuiTieAttributesDialog: _ui_dialogs_tie__WEBPACK_IMPORTED_MODULE_45__.SuiTieAttributesDialog, SuiVoltaAttributeDialog: _ui_dialogs_volta__WEBPACK_IMPORTED_MODULE_46__.SuiVoltaAttributeDialog,\n SuiHairpinAttributesDialog: _ui_dialogs_hairpin__WEBPACK_IMPORTED_MODULE_47__.SuiHairpinAttributesDialog, SuiStaffGroupDialog: _ui_dialogs_staffGroup__WEBPACK_IMPORTED_MODULE_48__.SuiStaffGroupDialog, helpModal: _ui_dialogs_textBlock__WEBPACK_IMPORTED_MODULE_41__.helpModal,\n SuiLoadFileDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiLoadFileDialog, SuiLoadMxmlDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiLoadMxmlDialog, SuiScorePreferencesDialog: _ui_dialogs_preferences__WEBPACK_IMPORTED_MODULE_32__.SuiScorePreferencesDialog,\n SuiPartInfoDialog: _ui_dialogs_partInfo__WEBPACK_IMPORTED_MODULE_54__.SuiPartInfoDialog, SuiOrnamentDialog: _ui_dialogs_ornament__WEBPACK_IMPORTED_MODULE_49__.SuiOrnamentDialog, SuiOrnamentButtonComponent: _ui_dialogs_ornament__WEBPACK_IMPORTED_MODULE_49__.SuiOrnamentButtonComponent,\n SuiArticulationDialog: _ui_dialogs_articulation__WEBPACK_IMPORTED_MODULE_50__.SuiArticulationDialog, SuiArticulationButtonComponent: _ui_dialogs_articulation__WEBPACK_IMPORTED_MODULE_50__.SuiArticulationButtonComponent, SuiArticulationAdapter: _ui_dialogs_articulation__WEBPACK_IMPORTED_MODULE_50__.SuiArticulationAdapter,\n SuiMicrotoneAdapter: _ui_dialogs_microtones__WEBPACK_IMPORTED_MODULE_51__.SuiMicrotoneAdapter, SuiMicrotoneButtonComponent: _ui_dialogs_microtones__WEBPACK_IMPORTED_MODULE_51__.SuiMicrotoneButtonComponent, SuiMicrotoneDialog: _ui_dialogs_microtones__WEBPACK_IMPORTED_MODULE_51__.SuiMicrotoneDialog,\n SuiNoteHeadAdapter: _ui_dialogs_noteHead__WEBPACK_IMPORTED_MODULE_29__.SuiNoteHeadAdapter, SuiNoteHeadDialog: _ui_dialogs_noteHead__WEBPACK_IMPORTED_MODULE_29__.SuiNoteHeadDialog, SuiStemButtonComponent: _ui_dialogs_noteHead__WEBPACK_IMPORTED_MODULE_29__.SuiStemButtonComponent, SuiNoteHeadButtonComponent: _ui_dialogs_noteHead__WEBPACK_IMPORTED_MODULE_29__.SuiNoteHeadButtonComponent,\n SuiEndingsAdapter: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.SuiEndingsAdapter, SuiEndingsDialog: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.SuiEndingsDialog,\n SuiEndBarButtonComponent: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.SuiEndBarButtonComponent, SuiStartBarButtonComponent: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.SuiStartBarButtonComponent, SuiRepeatSymbolButtonComponent: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.SuiRepeatSymbolButtonComponent,\n SuiPrintFileDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiPrintFileDialog, SuiSaveFileDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiSaveFileDialog, SuiSaveXmlDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiSaveXmlDialog, SuiSaveVexDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiSaveVexDialog,\n SuiSaveMidiDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiSaveMidiDialog, SuiDialogBase: _ui_dialogs_dialog__WEBPACK_IMPORTED_MODULE_19__.SuiDialogBase, createAndDisplayDialog: _ui_dialogs_dialog__WEBPACK_IMPORTED_MODULE_19__.createAndDisplayDialog,\n SuiPitchDialog: _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__.SuiPitchDialog, SuiPitchAdapter: _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__.SuiPitchAdapter, SuiIntervalButtonComponent: _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__.SuiIntervalButtonComponent, SuiLetterButtonComponent: _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__.SuiLetterButtonComponent,\n SuiTransposeButtonComponent: _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__.SuiTransposeButtonComponent,\n // Dialog components\n SuiTreeComponent: _ui_dialogs_components_tree__WEBPACK_IMPORTED_MODULE_65__.SuiTreeComponent,\n SuiDropdownComponent: _ui_dialogs_components_dropdown__WEBPACK_IMPORTED_MODULE_57__.SuiDropdownComponent,\n SuiRockerComponent: _ui_dialogs_components_rocker__WEBPACK_IMPORTED_MODULE_62__.SuiRockerComponent, SuiFileDownloadComponent: _ui_dialogs_components_fileDownload__WEBPACK_IMPORTED_MODULE_61__.SuiFileDownloadComponent, SuiButtonArrayComponent: _ui_dialogs_components_buttonArray__WEBPACK_IMPORTED_MODULE_59__.SuiButtonArrayComponent, SuiButtonArrayMSComponent: _ui_dialogs_components_buttonArray__WEBPACK_IMPORTED_MODULE_59__.SuiButtonArrayMSComponent,\n SuiToggleComponent: _ui_dialogs_components_toggle__WEBPACK_IMPORTED_MODULE_60__.SuiToggleComponent, SuiButtonComponent: _ui_dialogs_components_button__WEBPACK_IMPORTED_MODULE_58__.SuiButtonComponent, SuiDropdownComposite: _ui_dialogs_components_dropdown__WEBPACK_IMPORTED_MODULE_57__.SuiDropdownComposite,\n SuiToggleComposite: _ui_dialogs_components_toggle__WEBPACK_IMPORTED_MODULE_60__.SuiToggleComposite, SuiButtonComposite: _ui_dialogs_components_button__WEBPACK_IMPORTED_MODULE_58__.SuiButtonComposite, SuiRockerComposite: _ui_dialogs_components_rocker__WEBPACK_IMPORTED_MODULE_62__.SuiRockerComposite, SuiTextInputComposite: _ui_dialogs_components_textInput__WEBPACK_IMPORTED_MODULE_56__.SuiTextInputComposite,\n SuiFontComponent: _ui_dialogs_components_fontComponent__WEBPACK_IMPORTED_MODULE_63__.SuiFontComponent, SuiTextInPlace: _ui_dialogs_components_textInPlace__WEBPACK_IMPORTED_MODULE_64__.SuiTextInPlace, SuiLyricComponent: _ui_dialogs_components_noteText__WEBPACK_IMPORTED_MODULE_67__.SuiLyricComponent, SuiChordComponent: _ui_dialogs_components_noteText__WEBPACK_IMPORTED_MODULE_67__.SuiChordComponent, SuiDragText: _ui_dialogs_components_dragText__WEBPACK_IMPORTED_MODULE_68__.SuiDragText,\n SuiNoteTextComponent: _ui_dialogs_components_noteText__WEBPACK_IMPORTED_MODULE_67__.SuiNoteTextComponent, SuiTextBlockComponent: _ui_dialogs_components_textInPlace__WEBPACK_IMPORTED_MODULE_64__.SuiTextBlockComponent, SuiTextInputComponent: _ui_dialogs_components_textInput__WEBPACK_IMPORTED_MODULE_56__.SuiTextInputComponent, SuiReadOnlyTextComponent: _ui_dialogs_components_textInput__WEBPACK_IMPORTED_MODULE_56__.SuiReadOnlyTextComponent,\n SuiDynamicModifierDialog: _ui_dialogs_dynamics__WEBPACK_IMPORTED_MODULE_42__.SuiDynamicModifierDialog, CheckboxDropdownComponent: _ui_dialogs_components_checkdrop__WEBPACK_IMPORTED_MODULE_69__.CheckboxDropdownComponent, TieMappingComponent: _ui_dialogs_components_tie__WEBPACK_IMPORTED_MODULE_70__.TieMappingComponent, StaffAddRemoveComponent: _ui_dialogs_components_staffComponents__WEBPACK_IMPORTED_MODULE_71__.StaffAddRemoveComponent,\n StaffCheckComponent: _ui_dialogs_components_staffComponents__WEBPACK_IMPORTED_MODULE_71__.StaffCheckComponent, TextCheckComponent: _ui_dialogs_components_textCheck__WEBPACK_IMPORTED_MODULE_73__.TextCheckComponent, SuiArpeggioDialog: _ui_dialogs_arpeggio__WEBPACK_IMPORTED_MODULE_52__.SuiArpeggioDialog, SuiClefChangeDialog: _ui_dialogs_clefChange__WEBPACK_IMPORTED_MODULE_53__.SuiClefChangeDialog,\n SuiPitchArrayComponent: _ui_dialogs_components_pitch__WEBPACK_IMPORTED_MODULE_66__.SuiPitchArrayComponent, SuiPitchArrayComponentTab: _ui_dialogs_components_pitch__WEBPACK_IMPORTED_MODULE_66__.SuiPitchArrayComponentTab, SuiPitchComponent: _ui_dialogs_components_pitch__WEBPACK_IMPORTED_MODULE_66__.SuiPitchComponent,\n SuiPitchComposite: _ui_dialogs_components_pitch__WEBPACK_IMPORTED_MODULE_66__.SuiPitchComposite,\n SuiXhrLoader: _ui_fileio_xhrLoader__WEBPACK_IMPORTED_MODULE_91__.SuiXhrLoader, PromiseHelpers: _common_promiseHelpers__WEBPACK_IMPORTED_MODULE_92__.PromiseHelpers,\n // Rendering components\n SuiPiano: _render_sui_piano__WEBPACK_IMPORTED_MODULE_7__.SuiPiano, layoutDebug: _render_sui_layoutDebug__WEBPACK_IMPORTED_MODULE_96__.layoutDebug, SuiScoreView: _render_sui_scoreView__WEBPACK_IMPORTED_MODULE_93__.SuiScoreView, SuiScroller: _render_sui_scroller__WEBPACK_IMPORTED_MODULE_98__.SuiScroller, SvgHelpers: _render_sui_svgHelpers__WEBPACK_IMPORTED_MODULE_99__.SvgHelpers, SuiMapper: _render_sui_mapper__WEBPACK_IMPORTED_MODULE_97__.SuiMapper, SuiScoreRender: _render_sui_scoreRender__WEBPACK_IMPORTED_MODULE_95__.SuiScoreRender,\n SuiScoreViewOperations: _render_sui_scoreViewOperations__WEBPACK_IMPORTED_MODULE_94__.SuiScoreViewOperations, TextFormatter: _common_textformatter__WEBPACK_IMPORTED_MODULE_0__.TextFormatter, VexFlow: _common_vex__WEBPACK_IMPORTED_MODULE_1__.VexFlow,\n // Audio components\n SuiAudioPlayer: _render_audio_player__WEBPACK_IMPORTED_MODULE_100__.SuiAudioPlayer, SuiOscillator: _render_audio_oscillator__WEBPACK_IMPORTED_MODULE_101__.SuiOscillator, SuiSampleMedia: _render_audio_samples__WEBPACK_IMPORTED_MODULE_102__.SuiSampleMedia, SuiSampler: _render_audio_oscillator__WEBPACK_IMPORTED_MODULE_101__.SuiSampler, SuiReverb: _render_audio_oscillator__WEBPACK_IMPORTED_MODULE_101__.SuiReverb,\n // Smo Music Objects\n SmoScore: _smo_data_score__WEBPACK_IMPORTED_MODULE_104__.SmoScore, SmoScorePreferences: _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_114__.SmoScorePreferences, scoreModifierDynamicCtorInit: _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_114__.scoreModifierDynamicCtorInit, engravingFontTypes: _smo_data_score__WEBPACK_IMPORTED_MODULE_104__.engravingFontTypes, isEngravingFont: _smo_data_score__WEBPACK_IMPORTED_MODULE_104__.isEngravingFont,\n XmlToSmo: _smo_mxml_xmlToSmo__WEBPACK_IMPORTED_MODULE_121__.XmlToSmo, SmoToXml: _smo_mxml_smoToXml__WEBPACK_IMPORTED_MODULE_118__.SmoToXml, MidiToSmo: _smo_midi_midiToSmo__WEBPACK_IMPORTED_MODULE_119__.MidiToSmo, SmoToMidi: _smo_midi_smoToMidi__WEBPACK_IMPORTED_MODULE_120__.SmoToMidi, SmoMusic: _smo_data_music__WEBPACK_IMPORTED_MODULE_109__.SmoMusic, SmoAudioPitch: _smo_data_music__WEBPACK_IMPORTED_MODULE_109__.SmoAudioPitch, SmoMeasure: _smo_data_measure__WEBPACK_IMPORTED_MODULE_108__.SmoMeasure, SmoNamespace: _smo_data_common__WEBPACK_IMPORTED_MODULE_103__.SmoNamespace, SmoDynamicCtor: _smo_data_common__WEBPACK_IMPORTED_MODULE_103__.SmoDynamicCtor,\n SmoSystemStaff: _smo_data_systemStaff__WEBPACK_IMPORTED_MODULE_113__.SmoSystemStaff, SmoNote: _smo_data_note__WEBPACK_IMPORTED_MODULE_106__.SmoNote, IsPitchLetter: _smo_data_common__WEBPACK_IMPORTED_MODULE_103__.IsPitchLetter,\n // staff modifier\n SmoStaffHairpin: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoStaffHairpin, StaffModifierBase: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.StaffModifierBase, SmoStaffTextBracket: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoStaffTextBracket, staffModifierDynamicCtorInit: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.staffModifierDynamicCtorInit,\n SmoInstrument: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoInstrument, SmoSlur: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoSlur, SmoPedalMarking: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoPedalMarking, SmoTie: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoTie, SmoTabStave: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoTabStave,\n // score modifiers\n SmoSystemGroup: _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_114__.SmoSystemGroup, SmoAudioPlayerSettings: _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_114__.SmoAudioPlayerSettings, SmoTextGroup: _smo_data_scoreText__WEBPACK_IMPORTED_MODULE_115__.SmoTextGroup,\n // measure modifiers\n SmoRehearsalMark: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoRehearsalMark, SmoMeasureFormat: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoMeasureFormat, SmoBarline: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoBarline, SmoRepeatSymbol: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoRepeatSymbol, SmoVolta: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoVolta, SmoMeasureText: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoMeasureText, SmoTempoText: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoTempoText, TimeSignature: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.TimeSignature,\n measureModifierDynamicCtorInit: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.measureModifierDynamicCtorInit,\n // note modifiers\n SmoOrnament: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoOrnament, noteModifierDynamicCtorInit: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.noteModifierDynamicCtorInit,\n SmoArticulation: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoArticulation, SmoDynamicText: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoDynamicText, SmoGraceNote: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoGraceNote, SmoMicrotone: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoMicrotone, SmoLyric: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoLyric, SmoArpeggio: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoArpeggio, SmoClefChange: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoClefChange,\n // Smo Transformers\n SmoSelection: _smo_xform_selections__WEBPACK_IMPORTED_MODULE_110__.SmoSelection, SmoSelector: _smo_xform_selections__WEBPACK_IMPORTED_MODULE_110__.SmoSelector, /*SmoDuration,*/ UndoBuffer: _smo_xform_undo__WEBPACK_IMPORTED_MODULE_105__.UndoBuffer, SmoToVex: _render_vex_toVex__WEBPACK_IMPORTED_MODULE_122__.SmoToVex, SmoOperation: _smo_xform_operations__WEBPACK_IMPORTED_MODULE_116__.SmoOperation, SmoBeamer: _smo_xform_beamers__WEBPACK_IMPORTED_MODULE_111__.SmoBeamer,\n // new score bootstrap\n // help strings\n cardKeysHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardKeysHtmlEn, cardNotesLetterHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardNotesLetterHtmlEn, cardNotesChromaticHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardNotesChromaticHtmlEn, cardNotesChordsHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardNotesChordsHtmlEn,\n cardNotesRestsHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardNotesRestsHtmlEn, cardDurationNotesHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardDurationNotesHtmlEn, cardDurationTupletsHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardDurationTupletsHtmlEn,\n cardSelectionsNotesHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardSelectionsNotesHtmlEn, cardSelectionsModifiersHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardSelectionsModifiersHtmlEn, cardSelectionsNonSelectableHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardSelectionsNonSelectableHtmlEn, cardSelectionsSlashHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardSelectionsSlashHtmlEn,\n cardBeamsAndStemsDirectionHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardBeamsAndStemsDirectionHtmlEn, cardBeamsAndStemsGroupingHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardBeamsAndStemsGroupingHtmlEn,\n cardMeasuresAddDeleteHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardMeasuresAddDeleteHtmlEn, cardVoicesCreateDeleteHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardVoicesCreateDeleteHtmlEn, cardPartAddDeleteHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardPartAddDeleteHtmlEn,\n getClass,\n // utilities\n buildDom: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.buildDom, addFileLink: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.addFileLink, InputTrapper: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.InputTrapper, draggable: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.draggable, closeDialogPromise: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.closeDialogPromise, getDomContainer: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.getDomContainer, createTopDomContainer: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.createTopDomContainer,\n renderVexTests: _generateVexTests__WEBPACK_IMPORTED_MODULE_124__.renderVexTests\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Smo);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwbGljYXRpb24vZXhwb3J0cy50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0ZBQStGO0FBQy9GLDBDQUEwQztBQUMxQyw0QkFBNEI7QUFDNUIsb0JBQW9CO0FBQ29DO0FBQ2hCO0FBQ1U7QUFDSDtBQUNFO0FBQ007QUFDakI7QUFDUztBQUNoQjtBQUNNO0FBQ3FEO0FBQ2xDO0FBQ1k7QUFDakI7QUFDRTtBQUN3QjtBQUNoQztBQUM3QyxtQkFBbUI7QUFNYTtBQUNnQjtBQUNoRCx1QkFBdUI7QUFDdkIsVUFBVTtBQUNtRTtBQUNLO0FBQzhCO0FBQy9DO0FBQ2dDO0FBQ2xDO0FBQ0Y7QUFDRTtBQUNNO0FBQ2hCO0FBQzhFO0FBRWI7QUFDakQ7QUFDQztBQUNQO0FBQ0U7QUFDUjtBQUNVO0FBQ047QUFBeUQ7QUFDckQ7QUFDWjtBQUNtQjtBQUNOO0FBQ0w7QUFDTTtBQUNSO0FBQ0c7QUFDSztBQUNKO0FBQ3dCO0FBQ29DO0FBQ1g7QUFDckQ7QUFDSTtBQUNKO0FBR2dCO0FBQ3ZFLG9CQUFvQjtBQUVvRztBQUM3QjtBQUNOO0FBQ2lCO0FBQ2pCO0FBQ1I7QUFDUTtBQUNmO0FBQ0c7QUFDWjtBQUVlO0FBSXJDO0FBQ3FCO0FBQ007QUFDUztBQUNaO0FBRU07QUFDa0I7QUFDbkI7QUFDeEUsUUFBUTtBQUM0QztBQUNjO0FBQ2pCO0FBQ0Y7QUFDQztBQUNFO0FBQ0Y7QUFDaUI7QUFDVjtBQUNVO0FBQ0Y7QUFDRTtBQUNsQjtBQUNRO0FBQ1U7QUFDWjtBQUNOO0FBQ087QUFDSTtBQUMxRCxpQkFBaUI7QUFDc0M7QUFDb0I7QUFDaEI7QUFDSDtBQUNQO0FBQ0k7QUFDQztBQUV0RCxnQkFBZ0I7QUFDd0M7QUFDMEI7QUFDekI7QUFHekQsbUJBQW1CO0FBQzhEO0FBQ0M7QUFDbkM7QUFDSjtBQUMzQywyREFBMkQ7QUFHdEI7QUFDWTtBQUNKO0FBQ0s7QUFDa0I7QUFDbkI7QUFFNEM7QUFDcEM7QUFDOEU7QUFDOUQ7QUFDbEI7QUFJakI7QUFDVTtBQUNFO0FBQ0E7QUFDRjtBQUNEO0FBQy9DLFlBQVk7QUFDdUk7QUFFL0Y7QUFDd0Q7QUFDNkM7QUFDekosTUFBTSxRQUFRLEdBQUcsQ0FBQyxVQUFrQixFQUFFLEVBQUU7SUFDcEMsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUM0QjtBQUNMO0FBQ087QUFDRjtBQUNSO0FBQ1M7QUFDTDtBQUNZO0FBQ0g7QUFDTDtBQUNRO0FBQ0c7QUFDRDtBQUNWO0FBQ2M7QUFDRDtBQUNKO0FBQ0M7QUFDSTtBQUNKO0FBQ0U7QUFDTDtBQUNEO0FBQ007QUFDQTtBQUNGO0FBQ1U7QUFDWDtBQUNFO0FBQ0E7QUFDRjtBQUNFO0FBQ0g7QUFDUTtBQUNMO0FBQ0w7QUFDSTtBQUNIO0FBQ0U7QUFDSjtBQUNDO0FBQ1M7QUFDWDtBQUNEO0FBQ1M7QUFDTDtBQUNIO0FBQ1M7QUFDTDtBQUNLO0FBQ0g7QUFDTDtBQUNHO0FBQ0E7QUFDRDtBQUNFO0FBQ0Y7QUFDQTtBQUNHO0FBQ0g7QUFDRTtBQUNDO0FBQ0E7QUFDRTtBQUNMO0FBQ0g7QUFDRztBQUNLO0FBQ0o7QUFDRDtBQUNSO0FBQ087QUFDRTtBQUNHO0FBQ0Y7QUFDSTtBQUNDO0FBQ0Y7QUFDRDtBQUNjO0FBQ1A7QUFDSztBQUNGO0FBQ0Q7QUFDQTtBQUNJO0FBQ0M7QUFDTDtBQUNIO0FBQ0M7QUFDUztBQUNOO0FBQ0U7QUFDRjtBQUNOO0FBQ0c7QUFDRjtBQUNUO0FBQ0c7QUFDRDtBQUNEO0FBQ0E7QUFDSTtBQUNOO0FBQ087QUFDSDtBQUNGO0FBQ0c7QUFDRTtBQUNMO0FBQ0Y7QUFDUTtBQUNIO0FBQ0g7QUFDQztBQUNBO0FBQ0U7QUFDRjtBQUNJO0FBQ1A7QUFDTTtBQUNKO0FBQ0U7QUFDTDtBQUNNO0FBQ0g7QUFDQztBQUNIO0FBQ0k7QUFDRTtBQUNSO0FBQ1U7QUFDQztBQUNUO0FBQ0Y7QUFDRDtBQUNNO0FBQ0Y7QUFDRTtBQUNaO0FBQ1M7QUFDUztBQUNRO0FBQ0M7QUFDcEI7QUFDRztBQUNKO0FBQ1E7QUFDSjtBQUNEO0FBQ0E7QUFDSDtBQUNBO0FBQ0M7QUFDUTtBQUNSO0FBQ1E7QUFDVDtBQUNTO0FBQ1A7QUFDTjtBQUM0QjtBQUNEO0FBRWpELE1BQU0sR0FBRyxHQUFHO0lBQ2pCLDRCQUE0QjtJQUM1QixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGVBQWU7SUFDZixTQUFTO0lBQ1QsTUFBTSw0Q0FBRyxlQUFlLDhEQUFFLG1CQUFtQjtJQUM3QyxNQUFNLGtEQUFFLE9BQU8saURBQUUsb0JBQW9CLGlGQUFFLGlCQUFpQjtJQUN4RCxpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixlQUFlLHFFQUFHLHNCQUFzQixnRkFBRSxxQkFBcUI7SUFDL0QsUUFBUTtJQUNSLGNBQWMsa0VBQUUsV0FBVyw0REFBRSxpQkFBaUIsa0VBQUUsWUFBWSw4REFBRSxXQUFXO0lBQ3pFLGVBQWUsb0VBQUUsb0JBQW9CLDhFQUFFLG1CQUFtQiw0RUFBRSxvQkFBb0I7SUFDaEYsZUFBZSxvRUFBRSxjQUFjLGtFQUFFLFdBQVcsNERBQUUsV0FBVywrREFBRSxhQUFhLGlFQUFFLFdBQVc7SUFDckYsb0JBQW9CLDhFQUFFLFdBQVcsNERBQUUsWUFBWSwrREFBRSxXQUFXO0lBQzVELFVBQVU7SUFDVixtQkFBbUIsMkVBQUUsa0JBQWtCLDBFQUFFLDRCQUE0QjtJQUNyRSxrQkFBa0IsMkVBQUUsaUJBQWlCLDBFQUFFLDBCQUEwQjtJQUNqRSxtQkFBbUIseUVBQUUsb0JBQW9CO0lBQ3pDLGNBQWMsa0VBQUUsbUJBQW1CLDRFQUFFLHdCQUF3Qiw4RUFBRSxnQkFBZ0I7SUFDL0Usb0JBQW9CLDhFQUFFLHFCQUFxQixnRkFBRSxzQkFBc0I7SUFDbkUsa0JBQWtCLDBFQUFFLHFCQUFxQixnRkFBRSw0QkFBNEIsa0ZBQUUsd0JBQXdCO0lBQ2pHLHVCQUF1QjtJQUN2QixrQkFBa0Isc0VBQUUsbUJBQW1CLDRFQUFFLGdCQUFnQiw0RUFBRSxpQkFBaUI7SUFDNUUsc0JBQXNCLGtGQUFDLGtCQUFrQiwwRUFBRSxjQUFjLGtFQUFFLG9CQUFvQjtJQUMvRSx1QkFBdUIsMEVBQUUscUJBQXFCLGdGQUFFLHNCQUFzQix3RUFBRSx1QkFBdUI7SUFDL0YsMEJBQTBCLGdGQUFFLG1CQUFtQiw0RUFBRSxTQUFTO0lBQzFELGlCQUFpQiwyRUFBRSxpQkFBaUIsMkVBQUUseUJBQXlCO0lBQy9ELGlCQUFpQix3RUFBRSxpQkFBaUIsd0VBQUUsMEJBQTBCO0lBQ2hFLHFCQUFxQixnRkFBRSw4QkFBOEIseUZBQUUsc0JBQXNCO0lBQzdFLG1CQUFtQiw0RUFBRSwyQkFBMkIsb0ZBQUUsa0JBQWtCO0lBQ3BFLGtCQUFrQix5RUFBRSxpQkFBaUIsd0VBQUUsc0JBQXNCLDZFQUFFLDBCQUEwQjtJQUN6RixpQkFBaUIsdUVBQUUsZ0JBQWdCO0lBQ25DLHdCQUF3Qiw4RUFBRSwwQkFBMEIsZ0ZBQUUsOEJBQThCO0lBQ3BGLGtCQUFrQiw0RUFBRSxpQkFBaUIsMkVBQUUsZ0JBQWdCLDBFQUFFLGdCQUFnQjtJQUN6RSxpQkFBaUIsMkVBQUUsYUFBYSxrRUFBRSxzQkFBc0I7SUFDeEQsY0FBYyxtRUFBRSxlQUFlLG9FQUFDLDBCQUEwQiwrRUFBRSx3QkFBd0I7SUFDcEYsMkJBQTJCO0lBQzNCLG9CQUFvQjtJQUNwQixnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLGtCQUFrQixrRkFBRSx3QkFBd0IsOEZBQUUsdUJBQXVCLDRGQUFFLHlCQUF5QjtJQUNoRyxrQkFBa0Isa0ZBQUUsa0JBQWtCLGtGQUFFLG9CQUFvQjtJQUM1RCxrQkFBa0Isa0ZBQUUsa0JBQWtCLGtGQUFFLGtCQUFrQixrRkFBRSxxQkFBcUI7SUFDakYsZ0JBQWdCLHVGQUFFLGNBQWMsbUZBQUUsaUJBQWlCLG1GQUFFLGlCQUFpQixtRkFBRSxXQUFXO0lBQ25GLG9CQUFvQixzRkFBRSxxQkFBcUIsMEZBQUUscUJBQXFCLHdGQUFFLHdCQUF3QjtJQUM1Rix3QkFBd0IsK0VBQUUseUJBQXlCLDRGQUFFLG1CQUFtQixnRkFBRSx1QkFBdUI7SUFDakcsbUJBQW1CLDRGQUFFLGtCQUFrQixxRkFBRSxpQkFBaUIsd0VBQUUsbUJBQW1CO0lBQy9FLHNCQUFzQixxRkFBRSx5QkFBeUIsd0ZBQUUsaUJBQWlCO0lBRXRFLGlCQUFpQjtJQUNmLFlBQVksbUVBQUMsY0FBYztJQUMzQix1QkFBdUI7SUFDdkIsUUFBUSwyREFBRSxXQUFXLHFFQUFFLFlBQVksb0VBQUMsV0FBVyxrRUFBRSxVQUFVLG1FQUFFLFNBQVMsOERBQUUsY0FBYztJQUN0RixzQkFBc0Isd0ZBQUUsYUFBYSxvRUFBRSxPQUFPO0lBRTlDLG1CQUFtQjtJQUNuQixjQUFjLHNFQUFFLGFBQWEseUVBQUUsY0FBYyx1RUFBRSxVQUFVLHNFQUFFLFNBQVM7SUFFcEUsb0JBQW9CO0lBQ3BCLFFBQVEsMkRBQUcsbUJBQW1CLCtFQUFFLDRCQUE0Qix3RkFBRyxrQkFBa0IscUVBQUUsZUFBZTtJQUNsRyxRQUFRLDhEQUFHLFFBQVEsOERBQUcsU0FBUyxnRUFBRyxTQUFTLGdFQUFHLFFBQVEsMkRBQUcsYUFBYSxnRUFBRyxVQUFVLCtEQUFHLFlBQVksZ0VBQUUsY0FBYztJQUNsSCxjQUFjLHVFQUFHLE9BQU8seURBQUUsYUFBYTtJQUN2QyxpQkFBaUI7SUFDakIsZUFBZSwyRUFBRSxpQkFBaUIsNkVBQUcsbUJBQW1CLCtFQUFFLDRCQUE0QjtJQUN0RixhQUFhLHlFQUFFLE9BQU8sbUVBQUUsZUFBZSwyRUFBRSxNQUFNLGtFQUFFLFdBQVc7SUFDNUQsa0JBQWtCO0lBQ2xCLGNBQWMsMEVBQUUsc0JBQXNCLGtGQUFFLFlBQVk7SUFDcEQsb0JBQW9CO0lBQ3BCLGdCQUFnQiw4RUFBRSxnQkFBZ0IsOEVBQUUsVUFBVSx3RUFBRSxlQUFlLDZFQUFHLFFBQVEsc0VBQUUsY0FBYyw0RUFBRSxZQUFZLDBFQUFFLGFBQWE7SUFDdkgsOEJBQThCO0lBQzlCLGlCQUFpQjtJQUNqQixXQUFXLHNFQUFFLDJCQUEyQjtJQUN4QyxlQUFlLDBFQUFFLGNBQWMseUVBQUUsWUFBWSx1RUFBRSxZQUFZLHVFQUFFLFFBQVEsbUVBQUUsV0FBVyxzRUFBRSxhQUFhO0lBQ2pHLG1CQUFtQjtJQUNuQixZQUFZLHFFQUFFLFdBQVcsb0VBQUUsZ0JBQWdCLENBQUMsVUFBVSw2REFBRSxRQUFRLDZEQUFFLFlBQVkscUVBQUUsU0FBUztJQUN6RixzQkFBc0I7SUFDdEIsZUFBZTtJQUNmLGNBQWMscUVBQUUscUJBQXFCLDRFQUFFLHdCQUF3QiwrRUFBRSxxQkFBcUI7SUFDcEYsb0JBQW9CLDJFQUFFLHVCQUF1Qiw4RUFBRSx5QkFBeUI7SUFDeEUseUJBQXlCLGdGQUFFLDZCQUE2QixvRkFBRSxpQ0FBaUMsd0ZBQUUseUJBQXlCO0lBQ3RILGdDQUFnQyx1RkFBRSwrQkFBK0I7SUFDakUsMkJBQTJCLGtGQUFFLDRCQUE0QixtRkFBRSx1QkFBdUI7SUFDbEYsUUFBUTtJQUNWLFlBQVk7SUFDWixRQUFRLCtEQUFFLFdBQVcsa0VBQUUsWUFBWSxtRUFBRSxTQUFTLGdFQUFFLGtCQUFrQix5RUFBRSxlQUFlLHNFQUFFLHFCQUFxQjtJQUMxRyxjQUFjO0NBQ2Y7QUFDRCxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TbW8vLi9zcmMvYXBwbGljYXRpb24vZXhwb3J0cy50cz8zZmNmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNtb29zaWMgcmVsaWVzIG9uIGR5bmFtaWMgY3JlYXRpb24gb2YgYWxtb3N0IGV2ZXJ5dGhpbmcuICBUaGlzIGNsYXNzIGV4cG9ydHMgYWxsIHRoZSBzeW1ib2xzXHJcbi8vIHRoYXQgbmVlZCB0byBiZSBjcmVhdGVkIHZpYSByZWZsZWN0aW9uLlxyXG4vLyB1aSBhcHBsaWNhdGlvbiBjb21wb25lbnRzXHJcbi8vIHZleGZsb3cgaW50ZXJmYWNlXHJcbmltcG9ydCB7IFRleHRGb3JtYXR0ZXIgfSBmcm9tICcuLi9jb21tb24vdGV4dGZvcm1hdHRlcic7XHJcbmltcG9ydCB7IFZleEZsb3cgfSBmcm9tICcuLi9jb21tb24vdmV4JztcclxuaW1wb3J0IHsgcGFyc2VNaWRpIH0gZnJvbSAnLi4vY29tbW9uL21pZGktcGFyc2VyJztcclxuaW1wb3J0IHsgU3VpQXBwbGljYXRpb24gfSBmcm9tICcuL2FwcGxpY2F0aW9uJztcclxuaW1wb3J0IHsgU3VpRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi9ldmVudEhhbmRsZXInO1xyXG5pbXBvcnQgeyBTdWlFeGNlcHRpb25IYW5kbGVyIH0gZnJvbSAnLi4vdWkvZXhjZXB0aW9ucyc7XHJcbmltcG9ydCB7IFF3ZXJ0eSB9IGZyb20gJy4uL3VpL3F3ZXJ0eSc7XHJcbmltcG9ydCB7IFN1aVBpYW5vIH0gZnJvbSAnLi4vcmVuZGVyL3N1aS9waWFubyc7XHJcbmltcG9ydCB7IFN1aURvbSB9IGZyb20gJy4vZG9tJztcclxuaW1wb3J0IHsgU3VpSGVscCB9IGZyb20gJy4uL3VpL2hlbHAnO1xyXG5pbXBvcnQgeyBDb2xsYXBzZVJpYmJvbkNvbnRyb2wsIEV4dGVuZGVkQ29sbGFwc2VQYXJlbnQgfSBmcm9tICcuLi91aS9idXR0b25zL2NvbGxhcHNhYmxlJztcclxuaW1wb3J0IHsgRGlzcGxheVNldHRpbmdzIH0gZnJvbSAnLi4vdWkvYnV0dG9ucy9kaXNwbGF5JztcclxuaW1wb3J0IHsgU21vVHJhbnNsYXRpb25FZGl0b3IgfSBmcm9tICcuLi91aS9pMThuL3RyYW5zbGF0aW9uRWRpdG9yJztcclxuaW1wb3J0IHsgU21vQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IFJpYmJvbkJ1dHRvbnMgfSBmcm9tICcuLi91aS9idXR0b25zL3JpYmJvbic7XHJcbmltcG9ydCB7IHNpbXBsZVJpYmJvbkxheW91dCB9IGZyb20gJy4uL3VpL3JpYmJvbkxheW91dC9kZWZhdWx0L3RhYmxldFJpYmJvbic7XHJcbmltcG9ydCB7IE1vZGFsRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi9jb21tb24nO1xyXG4vLyBMYW5ndWFnZSBzdHJpbmdzXHJcbmltcG9ydCB7IGNhcmRLZXlzSHRtbEVuLCBjYXJkTm90ZXNMZXR0ZXJIdG1sRW4sIGNhcmROb3Rlc0Nocm9tYXRpY0h0bWxFbiwgY2FyZE5vdGVzQ2hvcmRzSHRtbEVuLFxyXG4gIGNhcmROb3Rlc1Jlc3RzSHRtbEVuLCBjYXJkRHVyYXRpb25Ob3Rlc0h0bWxFbiwgY2FyZER1cmF0aW9uVHVwbGV0c0h0bWxFbixcclxuICBjYXJkU2VsZWN0aW9uc05vdGVzSHRtbEVuLCBjYXJkU2VsZWN0aW9uc01vZGlmaWVyc0h0bWxFbiwgY2FyZFNlbGVjdGlvbnNOb25TZWxlY3RhYmxlSHRtbEVuLCBjYXJkU2VsZWN0aW9uc1NsYXNoSHRtbEVuLFxyXG4gIGNhcmRCZWFtc0FuZFN0ZW1zRGlyZWN0aW9uSHRtbEVuLCBjYXJkQmVhbXNBbmRTdGVtc0dyb3VwaW5nSHRtbEVuLFxyXG4gIGNhcmRNZWFzdXJlc0FkZERlbGV0ZUh0bWxFbiwgY2FyZFZvaWNlc0NyZWF0ZURlbGV0ZUh0bWxFbiwgY2FyZFBhcnRBZGREZWxldGVIdG1sRW5cclxufSBmcm9tICcuLi91aS9pMThuL2xhbmd1YWdlX2VuJztcclxuaW1wb3J0IHsgZHluYW1pY0N0b3JJbml0IH0gZnJvbSAnLi9keW5hbWljSW5pdCc7XHJcbi8vIHVpIGRpYWxvZ3MgYW5kIG1lbnVzXHJcbi8vIERpYWxvZ3NcclxuaW1wb3J0IHsgU3VpRGlhbG9nQmFzZSwgY3JlYXRlQW5kRGlzcGxheURpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvZGlhbG9nJztcclxuaW1wb3J0IHsgU3VpQ29tcG9uZW50QWRhcHRlciwgU3VpRGlhbG9nQWRhcHRlckJhc2UgfSBmcm9tICcuLi91aS9kaWFsb2dzL2FkYXB0ZXInO1xyXG5pbXBvcnQgeyBTdWlHcmFjZU5vdGVBZGFwdGVyLCBTdWlHcmFjZU5vdGVEaWFsb2csIFN1aUdyYWNlTm90ZUJ1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuLi91aS9kaWFsb2dzL2dyYWNlbm90ZSc7XHJcbmltcG9ydCB7IFN1aU1vZGlmaWVyRGlhbG9nRmFjdG9yeSB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvZmFjdG9yeSc7XHJcbmltcG9ydCB7IFN1aVRyYW5zcG9zZVNjb3JlRGlhbG9nLCBTdWlUcmFuc3Bvc2VTY29yZUFkYXB0ZXIgfSBmcm9tICcuLi91aS9kaWFsb2dzL3RyYW5zcG9zZVNjb3JlJztcclxuaW1wb3J0IHsgU3VpTWVhc3VyZURpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvbWVhc3VyZUZvcm1hdCc7XHJcbmltcG9ydCB7IFN1aUluc2VydE1lYXN1cmVzIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9hZGRNZWFzdXJlJztcclxuaW1wb3J0IHsgU3VpSW5zdHJ1bWVudERpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvaW5zdHJ1bWVudCc7XHJcbmltcG9ydCB7IFN1aVRpbWVTaWduYXR1cmVEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL3RpbWVTaWduYXR1cmUnO1xyXG5pbXBvcnQgeyBTdWlUZW1wb0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvdGVtcG8nO1xyXG5pbXBvcnQgeyBTdWlOb3RlSGVhZEFkYXB0ZXIsIFN1aU5vdGVIZWFkRGlhbG9nLCBTdWlOb3RlSGVhZEJ1dHRvbkNvbXBvbmVudCwgU3VpU3RlbUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3VpL2RpYWxvZ3Mvbm90ZUhlYWQnO1xyXG5pbXBvcnQgeyBTdWlFbmRpbmdzQWRhcHRlciwgU3VpRW5kaW5nc0RpYWxvZywgXHJcbiAgU3VpRW5kQmFyQnV0dG9uQ29tcG9uZW50LCBTdWlTdGFydEJhckJ1dHRvbkNvbXBvbmVudCwgU3VpUmVwZWF0U3ltYm9sQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9lbmRpbmdzJztcclxuaW1wb3J0IHsgU3VpU2NvcmVJZGVudGlmaWNhdGlvbkRpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3Mvc2NvcmVJZCc7XHJcbmltcG9ydCB7IFN1aVNjb3JlUHJlZmVyZW5jZXNEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL3ByZWZlcmVuY2VzJztcclxuaW1wb3J0IHsgU3VpUGFnZUxheW91dERpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvcGFnZUxheW91dCc7XHJcbmltcG9ydCB7IFN1aVRleHRCcmFja2V0RGlhbG9nIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy90ZXh0QnJhY2tldCc7XHJcbmltcG9ydCB7IFN1aVNjb3JlRm9udERpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvZm9udHMnO1xyXG5pbXBvcnQgeyBTdWlHbG9iYWxMYXlvdXREaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2dsb2JhbExheW91dCc7XHJcbmltcG9ydCB7IFN1aVNjb3JlVmlld0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3Mvc2NvcmVWaWV3JztpbXBvcnQgeyBTdWlMaWJyYXJ5RGlhbG9nIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9saWJyYXJ5JztcclxuaW1wb3J0IHsgU3VpQ2hvcmRDaGFuZ2VEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2Nob3JkQ2hhbmdlJztcclxuaW1wb3J0IHsgU3VpTHlyaWNEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2x5cmljJztcclxuaW1wb3J0IHsgU3VpVGV4dEJsb2NrRGlhbG9nLCBoZWxwTW9kYWwgfSBmcm9tICcuLi91aS9kaWFsb2dzL3RleHRCbG9jayc7XHJcbmltcG9ydCB7IFN1aUR5bmFtaWNNb2RpZmllckRpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvZHluYW1pY3MnO1xyXG5pbXBvcnQgeyBTdWlTbHVyQXR0cmlidXRlc0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3Mvc2x1cic7XHJcbmltcG9ydCB7IFN1aVBlZGFsTWFya2luZ0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvcGVkYWxNYXJraW5nJztcclxuaW1wb3J0IHsgU3VpVGllQXR0cmlidXRlc0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvdGllJztcclxuaW1wb3J0IHsgU3VpVm9sdGFBdHRyaWJ1dGVEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL3ZvbHRhJztcclxuaW1wb3J0IHsgU3VpSGFpcnBpbkF0dHJpYnV0ZXNEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2hhaXJwaW4nO1xyXG5pbXBvcnQgeyBTdWlTdGFmZkdyb3VwRGlhbG9nIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9zdGFmZkdyb3VwJztcclxuaW1wb3J0IHsgU3VpT3JuYW1lbnREaWFsb2csIFN1aU9ybmFtZW50QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9vcm5hbWVudCc7XHJcbmltcG9ydCB7IFN1aUFydGljdWxhdGlvbkRpYWxvZywgU3VpQXJ0aWN1bGF0aW9uQnV0dG9uQ29tcG9uZW50LCBTdWlBcnRpY3VsYXRpb25BZGFwdGVyIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9hcnRpY3VsYXRpb24nO1xyXG5pbXBvcnQgeyBTdWlNaWNyb3RvbmVBZGFwdGVyLCBTdWlNaWNyb3RvbmVCdXR0b25Db21wb25lbnQsIFN1aU1pY3JvdG9uZURpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvbWljcm90b25lcyc7XHJcbmltcG9ydCB7IFN1aUFycGVnZ2lvRGlhbG9nIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9hcnBlZ2dpbyc7XHJcbmltcG9ydCB7IFN1aUNsZWZDaGFuZ2VEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2NsZWZDaGFuZ2UnO1xyXG5pbXBvcnQgeyBTdWlQYXJ0SW5mb0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvcGFydEluZm8nO1xyXG5pbXBvcnQgeyBTdWlMb2FkTXhtbERpYWxvZywgU3VpTG9hZEZpbGVEaWFsb2csXHJcbiAgICBTdWlQcmludEZpbGVEaWFsb2csIFN1aVNhdmVGaWxlRGlhbG9nLCBTdWlTYXZlWG1sRGlhbG9nLFxyXG4gICAgU3VpU2F2ZU1pZGlEaWFsb2csIFN1aVNhdmVWZXhEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2ZpbGVEaWFsb2dzJztcclxuICAgIC8vIERpYWxvZyBjb21wb25lbnRzXHJcblxyXG5pbXBvcnQgeyBTdWlUZXh0SW5wdXRDb21wb25lbnQsIFN1aVRleHRJbnB1dENvbXBvc2l0ZSwgU3VpUmVhZE9ubHlUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RleHRJbnB1dCc7XHJcbmltcG9ydCB7IFN1aURyb3Bkb3duQ29tcG9uZW50LCBTdWlEcm9wZG93bkNvbXBvc2l0ZSB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9kcm9wZG93bic7XHJcbmltcG9ydCB7IFN1aUJ1dHRvbkNvbXBvc2l0ZSwgU3VpQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2J1dHRvbic7XHJcbmltcG9ydCB7IFN1aUJ1dHRvbkFycmF5Q29tcG9uZW50LCBTdWlCdXR0b25BcnJheU1TQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2J1dHRvbkFycmF5JztcclxuaW1wb3J0IHsgU3VpVG9nZ2xlQ29tcG9uZW50LCBTdWlUb2dnbGVDb21wb3NpdGUgfSBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvdG9nZ2xlJztcclxuaW1wb3J0IHsgU3VpRmlsZURvd25sb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2ZpbGVEb3dubG9hZCc7XHJcbmltcG9ydCB7IFN1aVJvY2tlckNvbXBvbmVudCwgU3VpUm9ja2VyQ29tcG9zaXRlIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3JvY2tlcic7XHJcbmltcG9ydCB7IFN1aUZvbnRDb21wb25lbnQgfSBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvZm9udENvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1aVRleHRCbG9ja0NvbXBvbmVudCB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy90ZXh0SW5QbGFjZSc7XHJcbmltcG9ydCB7IFN1aVRyZWVDb21wb25lbnQgfSBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvdHJlZSc7XHJcbmltcG9ydCB7IFN1aVBpdGNoQXJyYXlDb21wb25lbnQsIFN1aVBpdGNoQXJyYXlDb21wb25lbnRUYWIsIFxyXG4gICBTdWlQaXRjaENvbXBvbmVudCwgU3VpUGl0Y2hDb21wb3NpdGUgfSBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvcGl0Y2gnO1xyXG5pbXBvcnQge1xyXG4gICAgU3VpTHlyaWNDb21wb25lbnQsIFN1aUNob3JkQ29tcG9uZW50LFxyXG4gICAgU3VpTm90ZVRleHRDb21wb25lbnRcclxufSBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvbm90ZVRleHQnO1xyXG5pbXBvcnQgeyBTdWlEcmFnVGV4dCB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9kcmFnVGV4dCc7XHJcbmltcG9ydCB7IFN1aVRleHRJblBsYWNlIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RleHRJblBsYWNlJztcclxuaW1wb3J0IHsgQ2hlY2tib3hEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9jaGVja2Ryb3AnO1xyXG5pbXBvcnQgeyBUaWVNYXBwaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RpZSc7XHJcbmltcG9ydCB7IFN0YWZmQWRkUmVtb3ZlQ29tcG9uZW50LFxyXG4gICAgU3RhZmZDaGVja0NvbXBvbmVudH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3N0YWZmQ29tcG9uZW50cyc7XHJcbmltcG9ydCB7IFN1aUtleVNpZ25hdHVyZURpYWxvZywgU3VpS2V5U2lnbmF0dXJlQWRhcHRlciB9IGZyb20gJy4uL3VpL2RpYWxvZ3Mva2V5U2lnbmF0dXJlJztcclxuaW1wb3J0IHsgVGV4dENoZWNrQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RleHRDaGVjayc7XHJcbi8vIG1lbnVzXHJcbmltcG9ydCB7IFN1aU1lbnVNYW5hZ2VyfSBmcm9tICcuLi91aS9tZW51cy9tYW5hZ2VyJztcclxuaW1wb3J0IHsgU3VpTWVudUJhc2UsIFN1aU1lbnVDdXN0b21pemVyIH0gZnJvbSAnLi4vdWkvbWVudXMvbWVudSc7XHJcbmltcG9ydCB7IFN1aVNjb3JlTWVudSB9IGZyb20gJy4uL3VpL21lbnVzL3Njb3JlJztcclxuaW1wb3J0IHsgU3VpVGV4dE1lbnUgfSBmcm9tICcuLi91aS9tZW51cy90ZXh0JztcclxuaW1wb3J0IHsgU3VpUGFydE1lbnUgfSBmcm9tICcuLi91aS9tZW51cy9wYXJ0cyc7XHJcbmltcG9ydCB7IFN1aVZvaWNlTWVudSB9IGZyb20gJy4uL3VpL21lbnVzL3ZvaWNlcyc7XHJcbmltcG9ydCB7IFN1aUJlYW1NZW51IH0gZnJvbSAnLi4vdWkvbWVudXMvYmVhbXMnO1xyXG5pbXBvcnQgeyBTdWlQYXJ0U2VsZWN0aW9uTWVudSB9IGZyb20gJy4uL3VpL21lbnVzL3BhcnRTZWxlY3Rpb24nO1xyXG5pbXBvcnQgeyBTdWlEeW5hbWljc01lbnUgfSBmcm9tICcuLi91aS9tZW51cy9keW5hbWljcyc7XHJcbmltcG9ydCB7IFN1aVRpbWVTaWduYXR1cmVNZW51IH0gZnJvbSAnLi4vdWkvbWVudXMvdGltZVNpZ25hdHVyZSc7XHJcbmltcG9ydCB7IFN1aUtleVNpZ25hdHVyZU1lbnUgfSBmcm9tICcuLi91aS9tZW51cy9rZXlTaWduYXR1cmUnO1xyXG5pbXBvcnQgeyBTdWlTdGFmZk1vZGlmaWVyTWVudSB9IGZyb20gJy4uL3VpL21lbnVzL3N0YWZmTW9kaWZpZXInO1xyXG5pbXBvcnQgeyBTdWlGaWxlTWVudSB9IGZyb20gJy4uL3VpL21lbnVzL2ZpbGUnO1xyXG5pbXBvcnQgeyBTdWlMYW5ndWFnZU1lbnUgfSBmcm9tICcuLi91aS9tZW51cy9sYW5ndWFnZSc7XHJcbmltcG9ydCB7IFNtb0xhbmd1YWdlLCBTbW9UcmFuc2xhdG9yIH0gZnJvbSAnLi4vdWkvaTE4bi9sYW5ndWFnZSc7XHJcbmltcG9ydCB7IFN1aU1lYXN1cmVNZW51IH0gZnJvbSAnLi4vdWkvbWVudXMvbWVhc3VyZSc7XHJcbmltcG9ydCB7IFN1aU5vdGVNZW51IH0gZnJvbSAnLi4vdWkvbWVudXMvbm90ZSc7XHJcbmltcG9ydCB7IFN1aVhockxvYWRlciB9IGZyb20gJy4uL3VpL2ZpbGVpby94aHJMb2FkZXInO1xyXG5pbXBvcnQgeyBQcm9taXNlSGVscGVycyB9IGZyb20gJy4uL2NvbW1vbi9wcm9taXNlSGVscGVycyc7XHJcbi8vIHJlbmRlciBsaWJyYXJ5XHJcbmltcG9ydCB7IFN1aVNjb3JlVmlldyB9IGZyb20gJy4uL3JlbmRlci9zdWkvc2NvcmVWaWV3JztcclxuaW1wb3J0IHsgU3VpU2NvcmVWaWV3T3BlcmF0aW9ucyB9IGZyb20gJy4uL3JlbmRlci9zdWkvc2NvcmVWaWV3T3BlcmF0aW9ucyc7XHJcbmltcG9ydCB7IFN1aVNjb3JlUmVuZGVyIH0gZnJvbSAnLi4vcmVuZGVyL3N1aS9zY29yZVJlbmRlcic7XHJcbmltcG9ydCB7IGxheW91dERlYnVnIH0gZnJvbSAnLi4vcmVuZGVyL3N1aS9sYXlvdXREZWJ1Zyc7XHJcbmltcG9ydCB7IFN1aU1hcHBlciB9IGZyb20gJy4uL3JlbmRlci9zdWkvbWFwcGVyJztcclxuaW1wb3J0IHsgU3VpU2Nyb2xsZXIgfSBmcm9tICcuLi9yZW5kZXIvc3VpL3Njcm9sbGVyJztcclxuaW1wb3J0IHsgU3ZnSGVscGVycyB9IGZyb20gJy4uL3JlbmRlci9zdWkvc3ZnSGVscGVycyc7XHJcblxyXG4vLyBhdWRpbyBsaWJyYXJ5XHJcbmltcG9ydCB7IFN1aUF1ZGlvUGxheWVyIH0gZnJvbSAnLi4vcmVuZGVyL2F1ZGlvL3BsYXllcic7XHJcbmltcG9ydCB7IFN1aU9zY2lsbGF0b3IsIFN1aVNhbXBsZXIsIFN1aVJldmVyYiB9IGZyb20gJy4uL3JlbmRlci9hdWRpby9vc2NpbGxhdG9yJztcclxuaW1wb3J0IHsgU3VpU2FtcGxlTWVkaWEgfSBmcm9tICcuLi9yZW5kZXIvYXVkaW8vc2FtcGxlcyc7XHJcblxyXG5cclxuLy8gU01PIG9iamVjdCBtb2RlbFxyXG5pbXBvcnQgeyBTbW9OYW1lc3BhY2UsIFNtb0R5bmFtaWNDdG9yLCBJc1BpdGNoTGV0dGVyIH0gZnJvbSAnLi4vc21vL2RhdGEvY29tbW9uJztcclxuaW1wb3J0IHsgU21vU2NvcmUsIGVuZ3JhdmluZ0ZvbnRUeXBlcywgaXNFbmdyYXZpbmdGb250IH0gZnJvbSAnLi4vc21vL2RhdGEvc2NvcmUnO1xyXG5pbXBvcnQgeyBVbmRvQnVmZmVyIH0gZnJvbSAnLi4vc21vL3hmb3JtL3VuZG8nO1xyXG5pbXBvcnQgeyBTbW9Ob3RlIH0gZnJvbSAnLi4vc21vL2RhdGEvbm90ZSc7XHJcbi8vIGltcG9ydCB7IFNtb0R1cmF0aW9uIH0gZnJvbSAnLi4vc21vL3hmb3JtL3RpY2tEdXJhdGlvbic7XHJcbmltcG9ydCB7IFNtb1N0YWZmSGFpcnBpbiwgU3RhZmZNb2RpZmllckJhc2UsIFNtb0luc3RydW1lbnQsIFNtb1NsdXIsIFNtb1RpZSwgU21vU3RhZmZUZXh0QnJhY2tldCxcclxuICBTbW9UYWJTdGF2ZSwgU21vUGVkYWxNYXJraW5nLCBzdGFmZk1vZGlmaWVyRHluYW1pY0N0b3JJbml0XHJcbiB9IGZyb20gJy4uL3Ntby9kYXRhL3N0YWZmTW9kaWZpZXJzJztcclxuaW1wb3J0IHsgU21vTWVhc3VyZSB9IGZyb20gJy4uL3Ntby9kYXRhL21lYXN1cmUnO1xyXG5pbXBvcnQgeyBTbW9NdXNpYyB9IGZyb20gJy4uL3Ntby9kYXRhL211c2ljJztcclxuaW1wb3J0IHsgU21vQXVkaW9QaXRjaCB9IGZyb20gJy4uL3Ntby9kYXRhL211c2ljJztcclxuaW1wb3J0IHsgU21vU2VsZWN0aW9uLCBTbW9TZWxlY3RvciB9IGZyb20gJy4uL3Ntby94Zm9ybS9zZWxlY3Rpb25zJztcclxuaW1wb3J0IHsgU21vQmVhbWVyIH0gZnJvbSAnLi4vc21vL3hmb3JtL2JlYW1lcnMnO1xyXG5pbXBvcnQgeyBTbW9Pcm5hbWVudCwgU21vQXJ0aWN1bGF0aW9uLCBTbW9EeW5hbWljVGV4dCwgU21vR3JhY2VOb3RlLCBTbW9NaWNyb3RvbmUsIFNtb0x5cmljLFxyXG4gIFNtb0FycGVnZ2lvLCBTbW9DbGVmQ2hhbmdlLCBub3RlTW9kaWZpZXJEeW5hbWljQ3RvckluaXQgfSBmcm9tICcuLi9zbW8vZGF0YS9ub3RlTW9kaWZpZXJzJztcclxuaW1wb3J0IHsgU21vU3lzdGVtU3RhZmYgfSBmcm9tICcuLi9zbW8vZGF0YS9zeXN0ZW1TdGFmZic7XHJcbmltcG9ydCB7IFNtb1N5c3RlbUdyb3VwLCBTbW9BdWRpb1BsYXllclNldHRpbmdzLCBTbW9TY29yZVByZWZlcmVuY2VzLCBzY29yZU1vZGlmaWVyRHluYW1pY0N0b3JJbml0IH0gZnJvbSAnLi4vc21vL2RhdGEvc2NvcmVNb2RpZmllcnMnO1xyXG5pbXBvcnQgeyBTbW9UZXh0R3JvdXAsIFNtb1RleHRHcm91cFBhcmFtcyB9IGZyb20gJy4uL3Ntby9kYXRhL3Njb3JlVGV4dCc7XHJcbmltcG9ydCB7IFNtb09wZXJhdGlvbiB9IGZyb20gJy4uL3Ntby94Zm9ybS9vcGVyYXRpb25zJztcclxuaW1wb3J0IHtcclxuICAgIFNtb1JlaGVhcnNhbE1hcmssIFNtb01lYXN1cmVGb3JtYXQsIFNtb0JhcmxpbmUsIFNtb1JlcGVhdFN5bWJvbCxcclxuICAgIFNtb1ZvbHRhLCBTbW9NZWFzdXJlVGV4dCwgU21vVGVtcG9UZXh0LCBUaW1lU2lnbmF0dXJlLCBtZWFzdXJlTW9kaWZpZXJEeW5hbWljQ3RvckluaXRcclxufSBmcm9tICcuLi9zbW8vZGF0YS9tZWFzdXJlTW9kaWZpZXJzJztcclxuaW1wb3J0IHsgU21vVG9YbWwgfSBmcm9tICcuLi9zbW8vbXhtbC9zbW9Ub1htbCc7XHJcbmltcG9ydCB7IE1pZGlUb1NtbyB9IGZyb20gJy4uL3Ntby9taWRpL21pZGlUb1Ntbyc7XHJcbmltcG9ydCB7IFNtb1RvTWlkaSB9IGZyb20gJy4uL3Ntby9taWRpL3Ntb1RvTWlkaSc7XHJcbmltcG9ydCB7IFhtbFRvU21vIH0gZnJvbSAnLi4vc21vL214bWwveG1sVG9TbW8nO1xyXG5pbXBvcnQgeyBTbW9Ub1ZleCB9IGZyb20gJy4uL3JlbmRlci92ZXgvdG9WZXgnO1xyXG4vLyB1dGlsaXRpZXNcclxuaW1wb3J0IHsgYnVpbGREb20sIGFkZEZpbGVMaW5rLCBJbnB1dFRyYXBwZXIsIGRyYWdnYWJsZSwgY2xvc2VEaWFsb2dQcm9taXNlLCBnZXREb21Db250YWluZXIsIGNyZWF0ZVRvcERvbUNvbnRhaW5lciB9IGZyb20gJy4uL2NvbW1vbi9odG1sSGVscGVycyc7XHJcblxyXG5pbXBvcnQgeyByZW5kZXJWZXhUZXN0cyB9IGZyb20gJy4vZ2VuZXJhdGVWZXhUZXN0cyc7XHJcbmltcG9ydCB7IFN1aUR1cmF0aW9uQWRhcHRlciwgU3VpRHVyYXRpb25CdXR0b25Db21wb25lbnQsIFN1aUR1cmF0aW9uRGlhbG9nIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9kdXJhdGlvbnMnO1xyXG5pbXBvcnQgeyBTdWlQaXRjaEFkYXB0ZXIsIFN1aVBpdGNoRGlhbG9nLCBTdWlMZXR0ZXJCdXR0b25Db21wb25lbnQsIFN1aUludGVydmFsQnV0dG9uQ29tcG9uZW50LCBTdWlUcmFuc3Bvc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi91aS9kaWFsb2dzL3BpdGNoJztcclxuY29uc3QgZ2V0Q2xhc3MgPSAoanNvblN0cmluZzogc3RyaW5nKSA9PiB7XHJcbiAgICByZXR1cm4gZXZhbCgnU21vLicgKyBqc29uU3RyaW5nKTtcclxufTtcclxuZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25maWd1cmF0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljSW5pdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZG9tJztcclxuZXhwb3J0ICogZnJvbSAnLi9ldmVudEhhbmRsZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2V4cG9ydHMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9jb21tb24vbWlkaS1wYXJzZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2dlbmVyYXRlVmV4VGVzdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2tleUNvbW1hbmRzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vY29tbW9uL2h0bWxIZWxwZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vY29tbW9uL3Byb21pc2VIZWxwZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vY29tbW9uL3RleHRmb3JtYXR0ZXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi9jb21tb24vdmV4JztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL2F1ZGlvL211c2ljQ3Vyc29yJztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL2F1ZGlvL29zY2lsbGF0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvYXVkaW8vcGxheWVyJztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL2F1ZGlvL3NhbXBsZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL2NvbmZpZ3VyYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL2Zvcm1hdHRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvbGF5b3V0RGVidWcnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL21hcHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvcGlhbm8nO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL3JlbmRlclN0YXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL3N1aS9zY29yZVJlbmRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvc2NvcmVWaWV3JztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL3N1aS9zY29yZVZpZXdPcGVyYXRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL3N1aS9zY3JvbGxlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvc3ZnSGVscGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvc3ZnUGFnZU1hcCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvdGV4dEVkaXQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL3RleHRSZW5kZXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL3RyYWNrZXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvdmV4L2dseXBoRGltZW5zaW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci92ZXgvc21vQWRhcHRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci92ZXgvdG9WZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvdmV4L3Z4TWVhc3VyZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci92ZXgvdnhOb3RlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL3ZleC92eFN5c3RlbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9kYXRhL2NvbW1vbic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9kYXRhL21lYXN1cmUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vZGF0YS9tZWFzdXJlTW9kaWZpZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL2RhdGEvbXVzaWMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vZGF0YS9ub3RlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL2RhdGEvbm90ZU1vZGlmaWVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9kYXRhL3BhcnRJbmZvJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL2RhdGEvc2NvcmUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vZGF0YS9zY29yZU1vZGlmaWVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9kYXRhL3Njb3JlVGV4dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9kYXRhL3N0YWZmTW9kaWZpZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL2RhdGEvc3lzdGVtU3RhZmYnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vZGF0YS90dXBsZXQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vbWlkaS9taWRpVG9TbW8nO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vbWlkaS9zbW9Ub01pZGknO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vbXhtbC9zbW9Ub1htbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9teG1sL3htbEhlbHBlcnMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vbXhtbC94bWxTdGF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9teG1sL3htbFRvU21vJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL3hmb3JtL2F1ZGlvVHJhY2snO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8veGZvcm0vYmVhbWVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby94Zm9ybS9jb3B5cGFzdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8veGZvcm0vb3BlcmF0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby94Zm9ybS9zZWxlY3Rpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL3hmb3JtL3RpY2tEdXJhdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby94Zm9ybS90aWNrTWFwJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL3hmb3JtL3VuZG8nO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9idXR0b25zL2J1dHRvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2J1dHRvbnMvY29sbGFwc2FibGUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9idXR0b25zL2Rpc3BsYXknO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9idXR0b25zL3JpYmJvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2NvbW1vbic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2NvbmZpZ3VyYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2FkYXB0ZXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2FkZE1lYXN1cmUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2FycGVnZ2lvJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9hcnRpY3VsYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2F1ZGlvU2V0dGluZ3MnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2Nob3JkQ2hhbmdlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jbGVmQ2hhbmdlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2Jhc2VDb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2J1dHRvbkFycmF5JztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2NoZWNrZHJvcCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9kcmFnVGV4dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9kcm9wZG93bic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9maWxlRG93bmxvYWQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvZm9udENvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9ub3RlVGV4dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9waXRjaCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9yb2NrZXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvc3RhZmZDb21wb25lbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RleHRDaGVjayc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy90ZXh0SW5QbGFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy90ZXh0SW5wdXQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvdGllJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RvZ2dsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy90cmVlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9kaWFsb2cnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2R1cmF0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvZHluYW1pY3MnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2VuZGluZ3MnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2ZhY3RvcnknO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2ZpbGVEaWFsb2dzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9mb250cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvZ2xvYmFsTGF5b3V0JztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9ncmFjZW5vdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2hhaXJwaW4nO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2luc3RydW1lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2tleVNpZ25hdHVyZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvbGlicmFyeSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvbHlyaWMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL21lYXN1cmVGb3JtYXQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL21pY3JvdG9uZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL25ld1BhcnQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL25vdGVIZWFkJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9vcm5hbWVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvcGFnZUxheW91dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvcGFydEluZm8nO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3BlZGFsTWFya2luZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvcGl0Y2gnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3ByZWZlcmVuY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9zY29yZUlkJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9zY29yZVZpZXcnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3NsdXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3N0YWZmR3JvdXAnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3RhYk5vdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3RhYlN0YXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy90ZW1wbyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvdGV4dEJsb2NrJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy90ZXh0QnJhY2tldCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvdGllJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy90aW1lU2lnbmF0dXJlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy90cmFuc3Bvc2VTY29yZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3Mvdm9sdGEnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9ldmVudFNvdXJjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2V4Y2VwdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9maWxlaW8vZmlsZUlucHV0JztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZmlsZWlvL2xpYnJhcnknO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9maWxlaW8veGhyTG9hZGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvaGVscCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2kxOG4vbGFuZ3VhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9pMThuL3RyYW5zbGF0aW9uRWRpdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkva2V5QmluZGluZ3MvZGVmYXVsdC9lZGl0b3JLZXlzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkva2V5QmluZGluZ3MvZGVmYXVsdC90cmFja2VyS2V5cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL21lbnVzL2JlYW1zJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvZHluYW1pY3MnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy9maWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMva2V5U2lnbmF0dXJlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvbGFuZ3VhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy9tYW5hZ2VyJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvbWVhc3VyZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL21lbnVzL21lbnUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy9ub3RlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvcGFydHMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy9wYXJ0U2VsZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvc2NvcmUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy9zdGFmZk1vZGlmaWVyJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvdGV4dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL21lbnVzL3RpbWVTaWduYXR1cmUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy92b2ljZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9xd2VydHknO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9yaWJib25MYXlvdXQvZGVmYXVsdC9kZWZhdWx0UmliYm9uJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvcmliYm9uTGF5b3V0L2RlZmF1bHQvdGFibGV0UmliYm9uJztcclxuXHJcbmV4cG9ydCBjb25zdCBTbW8gPSB7XHJcbiAgLy8gQXBwbGljYXRpb24tbGV2ZWwgY2xhc3Nlc1xyXG4gIFNtb0NvbmZpZ3VyYXRpb24sXHJcbiAgU3VpQXBwbGljYXRpb24sXHJcbiAgZHluYW1pY0N0b3JJbml0LFxyXG4gIHBhcnNlTWlkaSxcclxuICBTdWlEb20sICBTdWlFdmVudEhhbmRsZXIsIFN1aUV4Y2VwdGlvbkhhbmRsZXIsXHJcbiAgUXdlcnR5LCBTdWlIZWxwLCBTbW9UcmFuc2xhdGlvbkVkaXRvciwgTW9kYWxFdmVudEhhbmRsZXIsXHJcbiAgLy8gUmliYm9uIGJ1dHRvbnNcclxuICBzaW1wbGVSaWJib25MYXlvdXQsXHJcbiAgUmliYm9uQnV0dG9ucyxcclxuICBEaXNwbGF5U2V0dGluZ3MsICBFeHRlbmRlZENvbGxhcHNlUGFyZW50LCBDb2xsYXBzZVJpYmJvbkNvbnRyb2wsXHJcbiAgLy8gTWVudXNcclxuICBTdWlNZW51TWFuYWdlciwgU3VpTWVudUJhc2UsIFN1aU1lbnVDdXN0b21pemVyLCBTdWlTY29yZU1lbnUsIFN1aUZpbGVNZW51LFxyXG4gIFN1aUR5bmFtaWNzTWVudSwgU3VpVGltZVNpZ25hdHVyZU1lbnUsIFN1aUtleVNpZ25hdHVyZU1lbnUsIFN1aVN0YWZmTW9kaWZpZXJNZW51LFxyXG4gIFN1aUxhbmd1YWdlTWVudSwgU3VpTWVhc3VyZU1lbnUsIFN1aU5vdGVNZW51LCBTbW9MYW5ndWFnZSwgU21vVHJhbnNsYXRvciwgU3VpUGFydE1lbnUsXHJcbiAgU3VpUGFydFNlbGVjdGlvbk1lbnUsIFN1aVRleHRNZW51LCBTdWlWb2ljZU1lbnUsIFN1aUJlYW1NZW51LFxyXG4gIC8vIERpYWxvZ3NcclxuICBTdWlHcmFjZU5vdGVBZGFwdGVyLCBTdWlHcmFjZU5vdGVEaWFsb2csIFN1aUdyYWNlTm90ZUJ1dHRvbnNDb21wb25lbnQsXHJcbiAgU3VpRHVyYXRpb25BZGFwdGVyLCBTdWlEdXJhdGlvbkRpYWxvZywgU3VpRHVyYXRpb25CdXR0b25Db21wb25lbnQsXHJcbiAgU3VpQ29tcG9uZW50QWRhcHRlciwgU3VpRGlhbG9nQWRhcHRlckJhc2UsXHJcbiAgU3VpVGVtcG9EaWFsb2csIFN1aUluc3RydW1lbnREaWFsb2csIFN1aU1vZGlmaWVyRGlhbG9nRmFjdG9yeSwgU3VpTGlicmFyeURpYWxvZyxcclxuICBTdWlUZXh0QnJhY2tldERpYWxvZywgU3VpS2V5U2lnbmF0dXJlRGlhbG9nLCBTdWlLZXlTaWduYXR1cmVBZGFwdGVyLFxyXG4gIFN1aVNjb3JlVmlld0RpYWxvZywgU3VpR2xvYmFsTGF5b3V0RGlhbG9nLCBTdWlTY29yZUlkZW50aWZpY2F0aW9uRGlhbG9nLCBTdWlUcmFuc3Bvc2VTY29yZUFkYXB0ZXIsXHJcbiAgU3VpVHJhbnNwb3NlU2NvcmVEaWFsb2csXHJcbiAgU3VpU2NvcmVGb250RGlhbG9nLCBTdWlQYWdlTGF5b3V0RGlhbG9nLCBTdWlNZWFzdXJlRGlhbG9nLCBTdWlJbnNlcnRNZWFzdXJlcyxcclxuICBTdWlUaW1lU2lnbmF0dXJlRGlhbG9nLFN1aVRleHRCbG9ja0RpYWxvZywgU3VpTHlyaWNEaWFsb2csIFN1aUNob3JkQ2hhbmdlRGlhbG9nLFxyXG4gIFN1aVNsdXJBdHRyaWJ1dGVzRGlhbG9nLCBTdWlQZWRhbE1hcmtpbmdEaWFsb2csIFN1aVRpZUF0dHJpYnV0ZXNEaWFsb2csIFN1aVZvbHRhQXR0cmlidXRlRGlhbG9nLFxyXG4gIFN1aUhhaXJwaW5BdHRyaWJ1dGVzRGlhbG9nLCBTdWlTdGFmZkdyb3VwRGlhbG9nLCBoZWxwTW9kYWwsXHJcbiAgU3VpTG9hZEZpbGVEaWFsb2csIFN1aUxvYWRNeG1sRGlhbG9nLCBTdWlTY29yZVByZWZlcmVuY2VzRGlhbG9nLFxyXG4gIFN1aVBhcnRJbmZvRGlhbG9nLCBTdWlPcm5hbWVudERpYWxvZywgU3VpT3JuYW1lbnRCdXR0b25Db21wb25lbnQsIFxyXG4gIFN1aUFydGljdWxhdGlvbkRpYWxvZywgU3VpQXJ0aWN1bGF0aW9uQnV0dG9uQ29tcG9uZW50LCBTdWlBcnRpY3VsYXRpb25BZGFwdGVyLFxyXG4gIFN1aU1pY3JvdG9uZUFkYXB0ZXIsIFN1aU1pY3JvdG9uZUJ1dHRvbkNvbXBvbmVudCwgU3VpTWljcm90b25lRGlhbG9nLFxyXG4gIFN1aU5vdGVIZWFkQWRhcHRlciwgU3VpTm90ZUhlYWREaWFsb2csIFN1aVN0ZW1CdXR0b25Db21wb25lbnQsIFN1aU5vdGVIZWFkQnV0dG9uQ29tcG9uZW50LCAgICBcclxuICBTdWlFbmRpbmdzQWRhcHRlciwgU3VpRW5kaW5nc0RpYWxvZywgXHJcbiAgU3VpRW5kQmFyQnV0dG9uQ29tcG9uZW50LCBTdWlTdGFydEJhckJ1dHRvbkNvbXBvbmVudCwgU3VpUmVwZWF0U3ltYm9sQnV0dG9uQ29tcG9uZW50LCAgICBcclxuICBTdWlQcmludEZpbGVEaWFsb2csIFN1aVNhdmVGaWxlRGlhbG9nLCBTdWlTYXZlWG1sRGlhbG9nLCBTdWlTYXZlVmV4RGlhbG9nLFxyXG4gIFN1aVNhdmVNaWRpRGlhbG9nLCBTdWlEaWFsb2dCYXNlLCBjcmVhdGVBbmREaXNwbGF5RGlhbG9nLCBcclxuICBTdWlQaXRjaERpYWxvZywgU3VpUGl0Y2hBZGFwdGVyLFN1aUludGVydmFsQnV0dG9uQ29tcG9uZW50LCBTdWlMZXR0ZXJCdXR0b25Db21wb25lbnQsXHJcbiAgU3VpVHJhbnNwb3NlQnV0dG9uQ29tcG9uZW50LFxyXG4gIC8vIERpYWxvZyBjb21wb25lbnRzXHJcbiAgU3VpVHJlZUNvbXBvbmVudCxcclxuICBTdWlEcm9wZG93bkNvbXBvbmVudCxcclxuICBTdWlSb2NrZXJDb21wb25lbnQsIFN1aUZpbGVEb3dubG9hZENvbXBvbmVudCwgU3VpQnV0dG9uQXJyYXlDb21wb25lbnQsIFN1aUJ1dHRvbkFycmF5TVNDb21wb25lbnQsXHJcbiAgU3VpVG9nZ2xlQ29tcG9uZW50LCBTdWlCdXR0b25Db21wb25lbnQsIFN1aURyb3Bkb3duQ29tcG9zaXRlLFxyXG4gIFN1aVRvZ2dsZUNvbXBvc2l0ZSwgU3VpQnV0dG9uQ29tcG9zaXRlLCBTdWlSb2NrZXJDb21wb3NpdGUsIFN1aVRleHRJbnB1dENvbXBvc2l0ZSxcclxuICBTdWlGb250Q29tcG9uZW50LCBTdWlUZXh0SW5QbGFjZSwgU3VpTHlyaWNDb21wb25lbnQsIFN1aUNob3JkQ29tcG9uZW50LCBTdWlEcmFnVGV4dCxcclxuICBTdWlOb3RlVGV4dENvbXBvbmVudCwgU3VpVGV4dEJsb2NrQ29tcG9uZW50LCBTdWlUZXh0SW5wdXRDb21wb25lbnQsIFN1aVJlYWRPbmx5VGV4dENvbXBvbmVudCxcclxuICBTdWlEeW5hbWljTW9kaWZpZXJEaWFsb2csIENoZWNrYm94RHJvcGRvd25Db21wb25lbnQsIFRpZU1hcHBpbmdDb21wb25lbnQsIFN0YWZmQWRkUmVtb3ZlQ29tcG9uZW50LFxyXG4gIFN0YWZmQ2hlY2tDb21wb25lbnQsIFRleHRDaGVja0NvbXBvbmVudCwgU3VpQXJwZWdnaW9EaWFsb2csIFN1aUNsZWZDaGFuZ2VEaWFsb2csXHJcbiAgU3VpUGl0Y2hBcnJheUNvbXBvbmVudCwgU3VpUGl0Y2hBcnJheUNvbXBvbmVudFRhYiwgU3VpUGl0Y2hDb21wb25lbnQsXHJcblxyXG5TdWlQaXRjaENvbXBvc2l0ZSwgXHJcbiAgU3VpWGhyTG9hZGVyLFByb21pc2VIZWxwZXJzLFxyXG4gIC8vIFJlbmRlcmluZyBjb21wb25lbnRzXHJcbiAgU3VpUGlhbm8sIGxheW91dERlYnVnLCBTdWlTY29yZVZpZXcsU3VpU2Nyb2xsZXIsIFN2Z0hlbHBlcnMsIFN1aU1hcHBlciwgU3VpU2NvcmVSZW5kZXIsXHJcbiAgU3VpU2NvcmVWaWV3T3BlcmF0aW9ucywgVGV4dEZvcm1hdHRlciwgVmV4RmxvdyxcclxuXHJcbiAgLy8gQXVkaW8gY29tcG9uZW50c1xyXG4gIFN1aUF1ZGlvUGxheWVyLCBTdWlPc2NpbGxhdG9yLCBTdWlTYW1wbGVNZWRpYSwgU3VpU2FtcGxlciwgU3VpUmV2ZXJiLFxyXG5cclxuICAvLyBTbW8gTXVzaWMgT2JqZWN0c1xyXG4gIFNtb1Njb3JlLCAgU21vU2NvcmVQcmVmZXJlbmNlcywgc2NvcmVNb2RpZmllckR5bmFtaWNDdG9ySW5pdCwgIGVuZ3JhdmluZ0ZvbnRUeXBlcywgaXNFbmdyYXZpbmdGb250LFxyXG4gIFhtbFRvU21vLCAgU21vVG9YbWwsICBNaWRpVG9TbW8sICBTbW9Ub01pZGksICBTbW9NdXNpYywgIFNtb0F1ZGlvUGl0Y2gsICBTbW9NZWFzdXJlLCAgU21vTmFtZXNwYWNlLCBTbW9EeW5hbWljQ3RvcixcclxuICBTbW9TeXN0ZW1TdGFmZiwgIFNtb05vdGUsIElzUGl0Y2hMZXR0ZXIsXHJcbiAgLy8gc3RhZmYgbW9kaWZpZXJcclxuICBTbW9TdGFmZkhhaXJwaW4sIFN0YWZmTW9kaWZpZXJCYXNlLCAgU21vU3RhZmZUZXh0QnJhY2tldCwgc3RhZmZNb2RpZmllckR5bmFtaWNDdG9ySW5pdCxcclxuICBTbW9JbnN0cnVtZW50LCBTbW9TbHVyLCBTbW9QZWRhbE1hcmtpbmcsIFNtb1RpZSwgU21vVGFiU3RhdmUsIFxyXG4gIC8vIHNjb3JlIG1vZGlmaWVyc1xyXG4gIFNtb1N5c3RlbUdyb3VwLCBTbW9BdWRpb1BsYXllclNldHRpbmdzLCBTbW9UZXh0R3JvdXAsXHJcbiAgLy8gbWVhc3VyZSBtb2RpZmllcnNcclxuICBTbW9SZWhlYXJzYWxNYXJrLCBTbW9NZWFzdXJlRm9ybWF0LCBTbW9CYXJsaW5lLCBTbW9SZXBlYXRTeW1ib2wsICBTbW9Wb2x0YSwgU21vTWVhc3VyZVRleHQsIFNtb1RlbXBvVGV4dCwgVGltZVNpZ25hdHVyZSxcclxuICBtZWFzdXJlTW9kaWZpZXJEeW5hbWljQ3RvckluaXQsXHJcbiAgLy8gbm90ZSBtb2RpZmllcnNcclxuICBTbW9Pcm5hbWVudCwgbm90ZU1vZGlmaWVyRHluYW1pY0N0b3JJbml0LFxyXG4gIFNtb0FydGljdWxhdGlvbiwgU21vRHluYW1pY1RleHQsIFNtb0dyYWNlTm90ZSwgU21vTWljcm90b25lLCBTbW9MeXJpYywgU21vQXJwZWdnaW8sIFNtb0NsZWZDaGFuZ2UsXHJcbiAgLy8gU21vIFRyYW5zZm9ybWVyc1xyXG4gIFNtb1NlbGVjdGlvbiwgU21vU2VsZWN0b3IsIC8qU21vRHVyYXRpb24sKi8gVW5kb0J1ZmZlciwgU21vVG9WZXgsIFNtb09wZXJhdGlvbiwgU21vQmVhbWVyLFxyXG4gIC8vIG5ldyBzY29yZSBib290c3RyYXBcclxuICAvLyBoZWxwIHN0cmluZ3NcclxuICBjYXJkS2V5c0h0bWxFbiwgY2FyZE5vdGVzTGV0dGVySHRtbEVuLCBjYXJkTm90ZXNDaHJvbWF0aWNIdG1sRW4sIGNhcmROb3Rlc0Nob3Jkc0h0bWxFbixcclxuICAgIGNhcmROb3Rlc1Jlc3RzSHRtbEVuLCBjYXJkRHVyYXRpb25Ob3Rlc0h0bWxFbiwgY2FyZER1cmF0aW9uVHVwbGV0c0h0bWxFbixcclxuICAgIGNhcmRTZWxlY3Rpb25zTm90ZXNIdG1sRW4sIGNhcmRTZWxlY3Rpb25zTW9kaWZpZXJzSHRtbEVuLCBjYXJkU2VsZWN0aW9uc05vblNlbGVjdGFibGVIdG1sRW4sIGNhcmRTZWxlY3Rpb25zU2xhc2hIdG1sRW4sXHJcbiAgICBjYXJkQmVhbXNBbmRTdGVtc0RpcmVjdGlvbkh0bWxFbiwgY2FyZEJlYW1zQW5kU3RlbXNHcm91cGluZ0h0bWxFbixcclxuICAgIGNhcmRNZWFzdXJlc0FkZERlbGV0ZUh0bWxFbiwgY2FyZFZvaWNlc0NyZWF0ZURlbGV0ZUh0bWxFbiwgY2FyZFBhcnRBZGREZWxldGVIdG1sRW4sXHJcbiAgICBnZXRDbGFzcyxcclxuICAvLyB1dGlsaXRpZXNcclxuICBidWlsZERvbSwgYWRkRmlsZUxpbmssIElucHV0VHJhcHBlciwgZHJhZ2dhYmxlLCBjbG9zZURpYWxvZ1Byb21pc2UsIGdldERvbUNvbnRhaW5lciwgY3JlYXRlVG9wRG9tQ29udGFpbmVyLFxyXG4gIHJlbmRlclZleFRlc3RzXHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgU21vOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/application/exports.ts\n");
|
|
95
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BrowserEventSource: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.BrowserEventSource),\n/* harmony export */ CheckboxDropdownComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.CheckboxDropdownComponent),\n/* harmony export */ ChordSymbolGlyphs: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.ChordSymbolGlyphs),\n/* harmony export */ Clefs: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.Clefs),\n/* harmony export */ CollapseRibbonControl: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.CollapseRibbonControl),\n/* harmony export */ CompleteNotifier: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.CompleteNotifier),\n/* harmony export */ ConfigurationNumberOptions: () => (/* reexport safe */ _configuration__WEBPACK_IMPORTED_MODULE_13__.ConfigurationNumberOptions),\n/* harmony export */ ConfigurationStringOptions: () => (/* reexport safe */ _configuration__WEBPACK_IMPORTED_MODULE_13__.ConfigurationStringOptions),\n/* harmony export */ CuedAudioContexts: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.CuedAudioContexts),\n/* harmony export */ DialogTranslations: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.DialogTranslations),\n/* harmony export */ DisplaySettings: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.DisplaySettings),\n/* harmony export */ DomBuilder: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.DomBuilder),\n/* harmony export */ Draggable: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.Draggable),\n/* harmony export */ ExtendedCollapseParent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.ExtendedCollapseParent),\n/* harmony export */ GlobalLayoutAttributesArray: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.GlobalLayoutAttributesArray),\n/* harmony export */ InputTrapper: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.InputTrapper),\n/* harmony export */ IsClef: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.IsClef),\n/* harmony export */ IsOscillatorType: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.IsOscillatorType),\n/* harmony export */ IsPitchLetter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.IsPitchLetter),\n/* harmony export */ MappedMeasures: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.MappedMeasures),\n/* harmony export */ MappedNotes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.MappedNotes),\n/* harmony export */ MappedSystems: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.MappedSystems),\n/* harmony export */ MenuTranslations: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.MenuTranslations),\n/* harmony export */ MidiToSmo: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.MidiToSmo),\n/* harmony export */ ModalComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.ModalComponent),\n/* harmony export */ ModalEventHandler: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.ModalEventHandler),\n/* harmony export */ ModalEventHandlerProxy: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.ModalEventHandlerProxy),\n/* harmony export */ ModifiersWithDialogNames: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.ModifiersWithDialogNames),\n/* harmony export */ NoteBooleanParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.NoteBooleanParams),\n/* harmony export */ NoteNumberParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.NoteNumberParams),\n/* harmony export */ NoteStringParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.NoteStringParams),\n/* harmony export */ PasteBuffer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.PasteBuffer),\n/* harmony export */ PromiseHelpers: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.PromiseHelpers),\n/* harmony export */ QueryParser: () => (/* reexport safe */ _application__WEBPACK_IMPORTED_MODULE_3__.QueryParser),\n/* harmony export */ Qwerty: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.Qwerty),\n/* harmony export */ RibbonButtons: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.RibbonButtons),\n/* harmony export */ SelectionMap: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SelectionMap),\n/* harmony export */ SlurNumberParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SlurNumberParams),\n/* harmony export */ Smo: () => (/* binding */ Smo),\n/* harmony export */ SmoArpeggio: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoArpeggio),\n/* harmony export */ SmoArpeggioTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoArpeggioTypes),\n/* harmony export */ SmoArticulation: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoArticulation),\n/* harmony export */ SmoAudioPitch: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoAudioPitch),\n/* harmony export */ SmoAudioPlayerSettings: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoAudioPlayerSettings),\n/* harmony export */ SmoAudioScore: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoAudioScore),\n/* harmony export */ SmoBarline: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoBarline),\n/* harmony export */ SmoBeamGroup: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoBeamGroup),\n/* harmony export */ SmoBeamer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoBeamer),\n/* harmony export */ SmoClefChange: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoClefChange),\n/* harmony export */ SmoConfiguration: () => (/* reexport safe */ _configuration__WEBPACK_IMPORTED_MODULE_13__.SmoConfiguration),\n/* harmony export */ SmoContractNoteActor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoContractNoteActor),\n/* harmony export */ SmoDynamicComponentCtor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoDynamicComponentCtor),\n/* harmony export */ SmoDynamicCtor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoDynamicCtor),\n/* harmony export */ SmoDynamicText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoDynamicText),\n/* harmony export */ SmoFormattingManager: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoFormattingManager),\n/* harmony export */ SmoGraceNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoGraceNote),\n/* harmony export */ SmoInstrument: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoInstrument),\n/* harmony export */ SmoInstrumentNumParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoInstrumentNumParams),\n/* harmony export */ SmoInstrumentStringParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoInstrumentStringParams),\n/* harmony export */ SmoLanguage: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoLanguage),\n/* harmony export */ SmoLayoutManager: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoLayoutManager),\n/* harmony export */ SmoLibrary: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoLibrary),\n/* harmony export */ SmoLyric: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoLyric),\n/* harmony export */ SmoMakeTupletActor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMakeTupletActor),\n/* harmony export */ SmoMeasure: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasure),\n/* harmony export */ SmoMeasureFormat: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureFormat),\n/* harmony export */ SmoMeasureFormatBooleanKeys: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureFormatBooleanKeys),\n/* harmony export */ SmoMeasureFormatNumberKeys: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureFormatNumberKeys),\n/* harmony export */ SmoMeasureModifierBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureModifierBase),\n/* harmony export */ SmoMeasureNumberParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureNumberParams),\n/* harmony export */ SmoMeasureStringParams: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureStringParams),\n/* harmony export */ SmoMeasureText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMeasureText),\n/* harmony export */ SmoMicrotone: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMicrotone),\n/* harmony export */ SmoMusic: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoMusic),\n/* harmony export */ SmoNamespace: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoNamespace),\n/* harmony export */ SmoNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoNote),\n/* harmony export */ SmoNoteBar: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoNoteBar),\n/* harmony export */ SmoNoteModifierBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoNoteModifierBase),\n/* harmony export */ SmoOperation: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoOperation),\n/* harmony export */ SmoOrnament: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoOrnament),\n/* harmony export */ SmoOscillatorInfoAllTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoOscillatorInfoAllTypes),\n/* harmony export */ SmoPageLayout: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPageLayout),\n/* harmony export */ SmoPartAttributesBasic: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPartAttributesBasic),\n/* harmony export */ SmoPartInfo: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPartInfo),\n/* harmony export */ SmoPartInfoBooleanTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPartInfoBooleanTypes),\n/* harmony export */ SmoPartInfoNumTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPartInfoNumTypes),\n/* harmony export */ SmoPartInfoStringTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPartInfoStringTypes),\n/* harmony export */ SmoPedalMarking: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoPedalMarking),\n/* harmony export */ SmoRehearsalMark: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoRehearsalMark),\n/* harmony export */ SmoRepeatSymbol: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoRepeatSymbol),\n/* harmony export */ SmoScore: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScore),\n/* harmony export */ SmoScoreInfoKeys: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScoreInfoKeys),\n/* harmony export */ SmoScoreModifierBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScoreModifierBase),\n/* harmony export */ SmoScorePreferenceBools: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScorePreferenceBools),\n/* harmony export */ SmoScorePreferenceNumbers: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScorePreferenceNumbers),\n/* harmony export */ SmoScorePreferences: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScorePreferences),\n/* harmony export */ SmoScoreText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoScoreText),\n/* harmony export */ SmoSelection: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoSelection),\n/* harmony export */ SmoSelector: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoSelector),\n/* harmony export */ SmoSlur: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoSlur),\n/* harmony export */ SmoStaffHairpin: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoStaffHairpin),\n/* harmony export */ SmoStaffTextBracket: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoStaffTextBracket),\n/* harmony export */ SmoStretchNoteActor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoStretchNoteActor),\n/* harmony export */ SmoSystemGroup: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoSystemGroup),\n/* harmony export */ SmoSystemStaff: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoSystemStaff),\n/* harmony export */ SmoTabNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTabNote),\n/* harmony export */ SmoTabStave: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTabStave),\n/* harmony export */ SmoTabTie: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTabTie),\n/* harmony export */ SmoTempoText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTempoText),\n/* harmony export */ SmoTextBracketNumberTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTextBracketNumberTypes),\n/* harmony export */ SmoTextBracketStringTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTextBracketStringTypes),\n/* harmony export */ SmoTextGroup: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTextGroup),\n/* harmony export */ SmoTickIterator: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTickIterator),\n/* harmony export */ SmoTie: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTie),\n/* harmony export */ SmoToMidi: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoToMidi),\n/* harmony export */ SmoToVex: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoToVex),\n/* harmony export */ SmoToXml: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoToXml),\n/* harmony export */ SmoTranslationEditor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTranslationEditor),\n/* harmony export */ SmoTranslator: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTranslator),\n/* harmony export */ SmoTuplet: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTuplet),\n/* harmony export */ SmoTupletTree: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoTupletTree),\n/* harmony export */ SmoUnmakeTupletActor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoUnmakeTupletActor),\n/* harmony export */ SmoVolta: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SmoVolta),\n/* harmony export */ StaffAddRemoveComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.StaffAddRemoveComponent),\n/* harmony export */ StaffCheckComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.StaffCheckComponent),\n/* harmony export */ StaffModifierBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.StaffModifierBase),\n/* harmony export */ SuiApplication: () => (/* reexport safe */ _application__WEBPACK_IMPORTED_MODULE_3__.SuiApplication),\n/* harmony export */ SuiArpeggioAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiArpeggioAdapter),\n/* harmony export */ SuiArpeggioDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiArpeggioDialog),\n/* harmony export */ SuiArticulationAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiArticulationAdapter),\n/* harmony export */ SuiArticulationButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiArticulationButtonComponent),\n/* harmony export */ SuiArticulationDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiArticulationDialog),\n/* harmony export */ SuiAudioPlayer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiAudioPlayer),\n/* harmony export */ SuiAudioSettingsAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiAudioSettingsAdapter),\n/* harmony export */ SuiAudioSettingsDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiAudioSettingsDialog),\n/* harmony export */ SuiBeamMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiBeamMenu),\n/* harmony export */ SuiBeamMenuOptions: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiBeamMenuOptions),\n/* harmony export */ SuiButton: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButton),\n/* harmony export */ SuiButtonArrayBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonArrayBase),\n/* harmony export */ SuiButtonArrayButton: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonArrayButton),\n/* harmony export */ SuiButtonArrayComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonArrayComponent),\n/* harmony export */ SuiButtonArrayMSComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonArrayMSComponent),\n/* harmony export */ SuiButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonComponent),\n/* harmony export */ SuiButtonComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiButtonComposite),\n/* harmony export */ SuiChordChangeDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiChordChangeDialog),\n/* harmony export */ SuiChordComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiChordComponent),\n/* harmony export */ SuiChordEditor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiChordEditor),\n/* harmony export */ SuiChordSession: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiChordSession),\n/* harmony export */ SuiClefChangeAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiClefChangeAdapter),\n/* harmony export */ SuiClefChangeDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiClefChangeDialog),\n/* harmony export */ SuiComponentAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiComponentAdapter),\n/* harmony export */ SuiComponentBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiComponentBase),\n/* harmony export */ SuiComponentParent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiComponentParent),\n/* harmony export */ SuiCompositeBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiCompositeBase),\n/* harmony export */ SuiConfiguredMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiConfiguredMenu),\n/* harmony export */ SuiDialogAdapterBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDialogAdapterBase),\n/* harmony export */ SuiDialogBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDialogBase),\n/* harmony export */ SuiDialogNotifier: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDialogNotifier),\n/* harmony export */ SuiDom: () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_8__.SuiDom),\n/* harmony export */ SuiDragSession: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDragSession),\n/* harmony export */ SuiDragText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDragText),\n/* harmony export */ SuiDropdownComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDropdownComponent),\n/* harmony export */ SuiDropdownComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDropdownComposite),\n/* harmony export */ SuiDurationAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDurationAdapter),\n/* harmony export */ SuiDurationButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDurationButtonComponent),\n/* harmony export */ SuiDurationDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDurationDialog),\n/* harmony export */ SuiDynamicDialogAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDynamicDialogAdapter),\n/* harmony export */ SuiDynamicModifierDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDynamicModifierDialog),\n/* harmony export */ SuiDynamicsMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiDynamicsMenu),\n/* harmony export */ SuiEndBarButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiEndBarButtonComponent),\n/* harmony export */ SuiEndingsAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiEndingsAdapter),\n/* harmony export */ SuiEndingsDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiEndingsDialog),\n/* harmony export */ SuiEventHandler: () => (/* reexport safe */ _eventHandler__WEBPACK_IMPORTED_MODULE_4__.SuiEventHandler),\n/* harmony export */ SuiExceptionHandler: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiExceptionHandler),\n/* harmony export */ SuiFileDownloadComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiFileDownloadComponent),\n/* harmony export */ SuiFileInput: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiFileInput),\n/* harmony export */ SuiFileMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiFileMenu),\n/* harmony export */ SuiFontComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiFontComponent),\n/* harmony export */ SuiGlobalLayoutAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiGlobalLayoutAdapter),\n/* harmony export */ SuiGlobalLayoutDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiGlobalLayoutDialog),\n/* harmony export */ SuiGraceNoteAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiGraceNoteAdapter),\n/* harmony export */ SuiGraceNoteButtonsComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiGraceNoteButtonsComponent),\n/* harmony export */ SuiGraceNoteDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiGraceNoteDialog),\n/* harmony export */ SuiHairpinAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiHairpinAdapter),\n/* harmony export */ SuiHairpinAttributesDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiHairpinAttributesDialog),\n/* harmony export */ SuiHelp: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiHelp),\n/* harmony export */ SuiInlineText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiInlineText),\n/* harmony export */ SuiInsertMeasures: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiInsertMeasures),\n/* harmony export */ SuiInstrumentAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiInstrumentAdapter),\n/* harmony export */ SuiInstrumentDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiInstrumentDialog),\n/* harmony export */ SuiIntervalButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiIntervalButtonComponent),\n/* harmony export */ SuiKeyCommands: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiKeyCommands),\n/* harmony export */ SuiKeySignatureAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiKeySignatureAdapter),\n/* harmony export */ SuiKeySignatureDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiKeySignatureDialog),\n/* harmony export */ SuiKeySignatureMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiKeySignatureMenu),\n/* harmony export */ SuiLanguageMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLanguageMenu),\n/* harmony export */ SuiLayoutFormatter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLayoutFormatter),\n/* harmony export */ SuiLetterButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLetterButtonComponent),\n/* harmony export */ SuiLibraryAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLibraryAdapter),\n/* harmony export */ SuiLibraryDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLibraryDialog),\n/* harmony export */ SuiLoadFileDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLoadFileDialog),\n/* harmony export */ SuiLoadMidiDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLoadMidiDialog),\n/* harmony export */ SuiLoadMxmlDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLoadMxmlDialog),\n/* harmony export */ SuiLyricComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLyricComponent),\n/* harmony export */ SuiLyricDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLyricDialog),\n/* harmony export */ SuiLyricEditor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLyricEditor),\n/* harmony export */ SuiLyricSession: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiLyricSession),\n/* harmony export */ SuiMapper: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMapper),\n/* harmony export */ SuiMeasureDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMeasureDialog),\n/* harmony export */ SuiMeasureFormatAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMeasureFormatAdapter),\n/* harmony export */ SuiMeasureMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMeasureMenu),\n/* harmony export */ SuiMenuBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMenuBase),\n/* harmony export */ SuiMenuCustomizer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMenuCustomizer),\n/* harmony export */ SuiMenuManager: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMenuManager),\n/* harmony export */ SuiMicrotoneAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMicrotoneAdapter),\n/* harmony export */ SuiMicrotoneButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMicrotoneButtonComponent),\n/* harmony export */ SuiMicrotoneDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMicrotoneDialog),\n/* harmony export */ SuiMidiLoadAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMidiLoadAdapter),\n/* harmony export */ SuiMidiSaveAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiMidiSaveAdapter),\n/* harmony export */ SuiModalButtonStrings: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiModalButtonStrings),\n/* harmony export */ SuiModifierDialogFactory: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiModifierDialogFactory),\n/* harmony export */ SuiNewPartAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNewPartAdapter),\n/* harmony export */ SuiNewPartDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNewPartDialog),\n/* harmony export */ SuiNoteHeadAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNoteHeadAdapter),\n/* harmony export */ SuiNoteHeadButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNoteHeadButtonComponent),\n/* harmony export */ SuiNoteHeadDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNoteHeadDialog),\n/* harmony export */ SuiNoteMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNoteMenu),\n/* harmony export */ SuiNoteTextComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiNoteTextComponent),\n/* harmony export */ SuiOrnamentAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiOrnamentAdapter),\n/* harmony export */ SuiOrnamentButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiOrnamentButtonComponent),\n/* harmony export */ SuiOrnamentDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiOrnamentDialog),\n/* harmony export */ SuiOscillator: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiOscillator),\n/* harmony export */ SuiPageLayoutAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPageLayoutAdapter),\n/* harmony export */ SuiPageLayoutDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPageLayoutDialog),\n/* harmony export */ SuiPartInfoAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPartInfoAdapter),\n/* harmony export */ SuiPartInfoDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPartInfoDialog),\n/* harmony export */ SuiPartMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPartMenu),\n/* harmony export */ SuiPartMenuOptions: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPartMenuOptions),\n/* harmony export */ SuiPartSelectionMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPartSelectionMenu),\n/* harmony export */ SuiPedalMarkingAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPedalMarkingAdapter),\n/* harmony export */ SuiPedalMarkingDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPedalMarkingDialog),\n/* harmony export */ SuiPiano: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPiano),\n/* harmony export */ SuiPitchAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchAdapter),\n/* harmony export */ SuiPitchArrayComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchArrayComponent),\n/* harmony export */ SuiPitchArrayComponentTab: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchArrayComponentTab),\n/* harmony export */ SuiPitchComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchComponent),\n/* harmony export */ SuiPitchComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchComposite),\n/* harmony export */ SuiPitchDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPitchDialog),\n/* harmony export */ SuiPrintFileDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiPrintFileDialog),\n/* harmony export */ SuiReadOnlyTextComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiReadOnlyTextComponent),\n/* harmony export */ SuiRenderState: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiRenderState),\n/* harmony export */ SuiRepeatSymbolButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiRepeatSymbolButtonComponent),\n/* harmony export */ SuiReverb: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiReverb),\n/* harmony export */ SuiRockerComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiRockerComponent),\n/* harmony export */ SuiRockerComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiRockerComposite),\n/* harmony export */ SuiSampleMedia: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSampleMedia),\n/* harmony export */ SuiSampler: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSampler),\n/* harmony export */ SuiSaveFileDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveFileDialog),\n/* harmony export */ SuiSaveJsonValidationAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveJsonValidationAdapter),\n/* harmony export */ SuiSaveJsonValidationDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveJsonValidationDialog),\n/* harmony export */ SuiSaveMidiDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveMidiDialog),\n/* harmony export */ SuiSaveVexDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveVexDialog),\n/* harmony export */ SuiSaveXmlDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSaveXmlDialog),\n/* harmony export */ SuiScoreFontAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreFontAdapter),\n/* harmony export */ SuiScoreFontDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreFontDialog),\n/* harmony export */ SuiScoreIdentificationAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreIdentificationAdapter),\n/* harmony export */ SuiScoreIdentificationDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreIdentificationDialog),\n/* harmony export */ SuiScoreMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreMenu),\n/* harmony export */ SuiScorePreferencesAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScorePreferencesAdapter),\n/* harmony export */ SuiScorePreferencesDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScorePreferencesDialog),\n/* harmony export */ SuiScoreRender: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreRender),\n/* harmony export */ SuiScoreView: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreView),\n/* harmony export */ SuiScoreViewAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreViewAdapter),\n/* harmony export */ SuiScoreViewDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreViewDialog),\n/* harmony export */ SuiScoreViewOperations: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScoreViewOperations),\n/* harmony export */ SuiScroller: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiScroller),\n/* harmony export */ SuiSlurAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSlurAdapter),\n/* harmony export */ SuiSlurAttributesDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSlurAttributesDialog),\n/* harmony export */ SuiSmoLoadAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSmoLoadAdapter),\n/* harmony export */ SuiSmoSaveAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiSmoSaveAdapter),\n/* harmony export */ SuiStaffGroupDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiStaffGroupDialog),\n/* harmony export */ SuiStaffGroupDialogAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiStaffGroupDialogAdapter),\n/* harmony export */ SuiStaffModifierMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiStaffModifierMenu),\n/* harmony export */ SuiStartBarButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiStartBarButtonComponent),\n/* harmony export */ SuiStemButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiStemButtonComponent),\n/* harmony export */ SuiTabNoteAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTabNoteAdapter),\n/* harmony export */ SuiTabNoteDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTabNoteDialog),\n/* harmony export */ SuiTabStaveAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTabStaveAdapter),\n/* harmony export */ SuiTabStaveDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTabStaveDialog),\n/* harmony export */ SuiTempoAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTempoAdapter),\n/* harmony export */ SuiTempoDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTempoDialog),\n/* harmony export */ SuiTextBlock: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBlock),\n/* harmony export */ SuiTextBlockComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBlockComponent),\n/* harmony export */ SuiTextBlockDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBlockDialog),\n/* harmony export */ SuiTextBlockEditor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBlockEditor),\n/* harmony export */ SuiTextBracketAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBracketAdapter),\n/* harmony export */ SuiTextBracketDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextBracketDialog),\n/* harmony export */ SuiTextEditor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextEditor),\n/* harmony export */ SuiTextInPlace: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextInPlace),\n/* harmony export */ SuiTextInputComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextInputComponent),\n/* harmony export */ SuiTextInputComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextInputComposite),\n/* harmony export */ SuiTextMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextMenu),\n/* harmony export */ SuiTextSession: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTextSession),\n/* harmony export */ SuiTieAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTieAdapter),\n/* harmony export */ SuiTieAttributesDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTieAttributesDialog),\n/* harmony export */ SuiTimeSignatureAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTimeSignatureAdapter),\n/* harmony export */ SuiTimeSignatureDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTimeSignatureDialog),\n/* harmony export */ SuiTimeSignatureMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTimeSignatureMenu),\n/* harmony export */ SuiToggleComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiToggleComponent),\n/* harmony export */ SuiToggleComposite: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiToggleComposite),\n/* harmony export */ SuiTracker: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTracker),\n/* harmony export */ SuiTransposeButtonComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTransposeButtonComponent),\n/* harmony export */ SuiTransposeScoreAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTransposeScoreAdapter),\n/* harmony export */ SuiTransposeScoreDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTransposeScoreDialog),\n/* harmony export */ SuiTreeComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiTreeComponent),\n/* harmony export */ SuiVexSaveAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiVexSaveAdapter),\n/* harmony export */ SuiVoiceMenu: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiVoiceMenu),\n/* harmony export */ SuiVoltaAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiVoltaAdapter),\n/* harmony export */ SuiVoltaAttributeDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiVoltaAttributeDialog),\n/* harmony export */ SuiWavetable: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiWavetable),\n/* harmony export */ SuiXhrLoader: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiXhrLoader),\n/* harmony export */ SuiXmlLoadAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiXmlLoadAdapter),\n/* harmony export */ SuiXmlSaveAdapter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SuiXmlSaveAdapter),\n/* harmony export */ SvgBox: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgBox),\n/* harmony export */ SvgBuilder: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgBuilder),\n/* harmony export */ SvgHelpers: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgHelpers),\n/* harmony export */ SvgPage: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgPage),\n/* harmony export */ SvgPageMap: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgPageMap),\n/* harmony export */ SvgPoint: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SvgPoint),\n/* harmony export */ SynthWavetable: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.SynthWavetable),\n/* harmony export */ TEmptyPromise: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TEmptyPromise),\n/* harmony export */ TextCheckComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TextCheckComponent),\n/* harmony export */ TextFormatter: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TextFormatter),\n/* harmony export */ TickIteratorBase: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TickIteratorBase),\n/* harmony export */ TickMap: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TickMap),\n/* harmony export */ TieMappingComponent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TieMappingComponent),\n/* harmony export */ TimeSignature: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.TimeSignature),\n/* harmony export */ UndoBuffer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.UndoBuffer),\n/* harmony export */ UndoSet: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.UndoSet),\n/* harmony export */ VexFlow: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.VexFlow),\n/* harmony export */ VexTabNotePositions: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.VexTabNotePositions),\n/* harmony export */ VxMeasure: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.VxMeasure),\n/* harmony export */ VxNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.VxNote),\n/* harmony export */ VxSystem: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.VxSystem),\n/* harmony export */ XmlHelpers: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.XmlHelpers),\n/* harmony export */ XmlState: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.XmlState),\n/* harmony export */ XmlToSmo: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.XmlToSmo),\n/* harmony export */ XmlTupletStateTreeNode: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.XmlTupletStateTreeNode),\n/* harmony export */ addChordGlyph: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.addChordGlyph),\n/* harmony export */ addFileLink: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.addFileLink),\n/* harmony export */ addOrReplacePedalMarking: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.addOrReplacePedalMarking),\n/* harmony export */ applyStemDirection: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.applyStemDirection),\n/* harmony export */ blockMetricsYShift: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.blockMetricsYShift),\n/* harmony export */ buildDom: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.buildDom),\n/* harmony export */ buttonIsBindable: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.buttonIsBindable),\n/* harmony export */ buttonIsCollapsible: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.buttonIsCollapsible),\n/* harmony export */ chordSubscriptOffset: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.chordSubscriptOffset),\n/* harmony export */ chordSuperscriptOffset: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.chordSuperscriptOffset),\n/* harmony export */ closeDialogPromise: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.closeDialogPromise),\n/* harmony export */ collapsableButtonInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.collapsableButtonInit),\n/* harmony export */ copyUndo: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.copyUndo),\n/* harmony export */ createAndDisplayDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createAndDisplayDialog),\n/* harmony export */ createHairpin: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createHairpin),\n/* harmony export */ createNotePartMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createNotePartMenuOption),\n/* harmony export */ createSlur: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createSlur),\n/* harmony export */ createStave: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createStave),\n/* harmony export */ createStaveText: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createStaveText),\n/* harmony export */ createTabStave: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createTabStave),\n/* harmony export */ createTextNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createTextNote),\n/* harmony export */ createTie: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createTie),\n/* harmony export */ createTopDomContainer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createTopDomContainer),\n/* harmony export */ createVoice: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createVoice),\n/* harmony export */ createXmlAttribute: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createXmlAttribute),\n/* harmony export */ createXmlAttributes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.createXmlAttributes),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ defaultAudioAnimationHandler: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultAudioAnimationHandler),\n/* harmony export */ defaultClearAudioAnimationHandler: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultClearAudioAnimationHandler),\n/* harmony export */ defaultCueScale: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultCueScale),\n/* harmony export */ defaultEditorKeys: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultEditorKeys),\n/* harmony export */ defaultKeyEvent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultKeyEvent),\n/* harmony export */ defaultMeasurePadding: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultMeasurePadding),\n/* harmony export */ defaultNoteScale: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultNoteScale),\n/* harmony export */ defaultRibbonLayout: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultRibbonLayout),\n/* harmony export */ defaultTrackerKeys: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.defaultTrackerKeys),\n/* harmony export */ dialogConstructor: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.dialogConstructor),\n/* harmony export */ draggable: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.draggable),\n/* harmony export */ dynamicCtorInit: () => (/* reexport safe */ _dynamicInit__WEBPACK_IMPORTED_MODULE_18__.dynamicCtorInit),\n/* harmony export */ editInstrumentMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.editInstrumentMenuOption),\n/* harmony export */ editorKeyActions: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.editorKeyActions),\n/* harmony export */ endingsButtonFactory: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.endingsButtonFactory),\n/* harmony export */ engravingFontTypes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.engravingFontTypes),\n/* harmony export */ focusableElements: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.focusableElements),\n/* harmony export */ fontStacks: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.fontStacks),\n/* harmony export */ getChordSymbolGlyphFromCode: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getChordSymbolGlyphFromCode),\n/* harmony export */ getChordSymbolMetricsForGlyph: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getChordSymbolMetricsForGlyph),\n/* harmony export */ getDomContainer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getDomContainer),\n/* harmony export */ getGlyphWidth: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getGlyphWidth),\n/* harmony export */ getId: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getId),\n/* harmony export */ getMultimeasureRest: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getMultimeasureRest),\n/* harmony export */ getOrnamentGlyph: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getOrnamentGlyph),\n/* harmony export */ getRepeatBar: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getRepeatBar),\n/* harmony export */ getSlashGlyph: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getSlashGlyph),\n/* harmony export */ getTabNotePitchesFcn: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getTabNotePitchesFcn),\n/* harmony export */ getValueForTick: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getValueForTick),\n/* harmony export */ getVexChordBlocks: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getVexChordBlocks),\n/* harmony export */ getVexGlyphFromChordCode: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getVexGlyphFromChordCode),\n/* harmony export */ getVexNoteParameters: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getVexNoteParameters),\n/* harmony export */ getVexTuplets: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getVexTuplets),\n/* harmony export */ getVoiceId: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.getVoiceId),\n/* harmony export */ glyphPixels: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.glyphPixels),\n/* harmony export */ helpModal: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.helpModal),\n/* harmony export */ initDialogConstructors: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.initDialogConstructors),\n/* harmony export */ initDialogTranslationElements: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.initDialogTranslationElements),\n/* harmony export */ isArpeggioType: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isArpeggioType),\n/* harmony export */ isClefChangeParamsSer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isClefChangeParamsSer),\n/* harmony export */ isEditorKeyAction: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.isEditorKeyAction),\n/* harmony export */ isEmptyTextBlock: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isEmptyTextBlock),\n/* harmony export */ isEngravingFont: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isEngravingFont),\n/* harmony export */ isModalButtonType: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isModalButtonType),\n/* harmony export */ isModifierWithDialog: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isModifierWithDialog),\n/* harmony export */ isSmoNote: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isSmoNote),\n/* harmony export */ isSmoPedalMarkingParamsSer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isSmoPedalMarkingParamsSer),\n/* harmony export */ isSmoScoreParemsSer: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.isSmoScoreParemsSer),\n/* harmony export */ isTrackerKeyAction: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.isTrackerKeyAction),\n/* harmony export */ keyEventMatch: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.keyEventMatch),\n/* harmony export */ layoutDebug: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.layoutDebug),\n/* harmony export */ leftConnectorVx: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.leftConnectorVx),\n/* harmony export */ measureModifierDynamicCtorInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.measureModifierDynamicCtorInit),\n/* harmony export */ menuTranslationsInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.menuTranslationsInit),\n/* harmony export */ moveDownMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.moveDownMenuOption),\n/* harmony export */ moveUpMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.moveUpMenuOption),\n/* harmony export */ noteModifierDynamicCtorInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.noteModifierDynamicCtorInit),\n/* harmony export */ pageLayoutMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.pageLayoutMenuOption),\n/* harmony export */ parseMidi: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.parseMidi),\n/* harmony export */ partPropertiesMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.partPropertiesMenuOption),\n/* harmony export */ pitchToLedgerLine: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.pitchToLedgerLine),\n/* harmony export */ removePartMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.removePartMenuOption),\n/* harmony export */ renderDynamics: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.renderDynamics),\n/* harmony export */ renderVexTests: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.renderVexTests),\n/* harmony export */ renderVoltas: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.renderVoltas),\n/* harmony export */ reverseStaticMap: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.reverseStaticMap),\n/* harmony export */ reverseStaticMaps: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.reverseStaticMaps),\n/* harmony export */ rightConnectorVx: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.rightConnectorVx),\n/* harmony export */ sampleForPercussion: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.sampleForPercussion),\n/* harmony export */ sampleFromFrequency: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.sampleFromFrequency),\n/* harmony export */ sampleFromMinDuration: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.sampleFromMinDuration),\n/* harmony export */ scoreChangeEvent: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.scoreChangeEvent),\n/* harmony export */ scoreModifierDynamicCtorInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.scoreModifierDynamicCtorInit),\n/* harmony export */ setFontStack: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.setFontStack),\n/* harmony export */ simpleRibbonLayout: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.simpleRibbonLayout),\n/* harmony export */ staffModifierDynamicCtorInit: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.staffModifierDynamicCtorInit),\n/* harmony export */ suiConfiguredMenuTranslate: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.suiConfiguredMenuTranslate),\n/* harmony export */ suiDialogTranslate: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.suiDialogTranslate),\n/* harmony export */ suiMenuTranslation: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.suiMenuTranslation),\n/* harmony export */ tabStaveMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.tabStaveMenuOption),\n/* harmony export */ toVexBarlinePosition: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexBarlinePosition),\n/* harmony export */ toVexBarlineType: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexBarlineType),\n/* harmony export */ toVexStemDirection: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexStemDirection),\n/* harmony export */ toVexSymbol: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexSymbol),\n/* harmony export */ toVexTextJustification: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexTextJustification),\n/* harmony export */ toVexTextPosition: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexTextPosition),\n/* harmony export */ toVexVolta: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.toVexVolta),\n/* harmony export */ trackerKeyActions: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_16__.trackerKeyActions),\n/* harmony export */ vexAnnotationPosition: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexAnnotationPosition),\n/* harmony export */ vexBarlinePosition: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexBarlinePosition),\n/* harmony export */ vexBarlineType: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexBarlineType),\n/* harmony export */ vexCanonicalNotes: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexCanonicalNotes),\n/* harmony export */ vexGlyph: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexGlyph),\n/* harmony export */ vexOptions: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexOptions),\n/* harmony export */ vexOrnaments: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexOrnaments),\n/* harmony export */ vexSymbol: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexSymbol),\n/* harmony export */ vexTextJustification: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexTextJustification),\n/* harmony export */ vexTextPosition: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.vexTextPosition),\n/* harmony export */ viewFullScoreMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.viewFullScoreMenuOption),\n/* harmony export */ viewPartialScoreMenuOption: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_127__.viewPartialScoreMenuOption)\n/* harmony export */ });\n/* harmony import */ var _common_textformatter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/textformatter */ \"./src/common/textformatter.ts\");\n/* harmony import */ var _common_vex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/vex */ \"./src/common/vex.ts\");\n/* harmony import */ var _common_midi_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/midi-parser */ \"./src/common/midi-parser.js\");\n/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./application */ \"./src/application/application.ts\");\n/* harmony import */ var _eventHandler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./eventHandler */ \"./src/application/eventHandler.ts\");\n/* harmony import */ var _ui_exceptions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/exceptions */ \"./src/ui/exceptions.ts\");\n/* harmony import */ var _ui_qwerty__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/qwerty */ \"./src/ui/qwerty.ts\");\n/* harmony import */ var _render_sui_piano__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../render/sui/piano */ \"./src/render/sui/piano.ts\");\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dom */ \"./src/application/dom.ts\");\n/* harmony import */ var _ui_help__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ui/help */ \"./src/ui/help.ts\");\n/* harmony import */ var _ui_buttons_collapsable__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../ui/buttons/collapsable */ \"./src/ui/buttons/collapsable.ts\");\n/* harmony import */ var _ui_buttons_display__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../ui/buttons/display */ \"./src/ui/buttons/display.ts\");\n/* harmony import */ var _ui_i18n_translationEditor__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../ui/i18n/translationEditor */ \"./src/ui/i18n/translationEditor.ts\");\n/* harmony import */ var _configuration__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./configuration */ \"./src/application/configuration.ts\");\n/* harmony import */ var _ui_buttons_ribbon__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../ui/buttons/ribbon */ \"./src/ui/buttons/ribbon.ts\");\n/* harmony import */ var _ui_ribbonLayout_default_tabletRibbon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../ui/ribbonLayout/default/tabletRibbon */ \"./src/ui/ribbonLayout/default/tabletRibbon.ts\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./common */ \"./src/application/common.ts\");\n/* harmony import */ var _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../ui/i18n/language_en */ \"./src/ui/i18n/language_en.js\");\n/* harmony import */ var _dynamicInit__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./dynamicInit */ \"./src/application/dynamicInit.ts\");\n/* harmony import */ var _ui_dialogs_dialog__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../ui/dialogs/dialog */ \"./src/ui/dialogs/dialog.ts\");\n/* harmony import */ var _ui_dialogs_adapter__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../ui/dialogs/adapter */ \"./src/ui/dialogs/adapter.ts\");\n/* harmony import */ var _ui_dialogs_gracenote__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../ui/dialogs/gracenote */ \"./src/ui/dialogs/gracenote.ts\");\n/* harmony import */ var _ui_dialogs_factory__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../ui/dialogs/factory */ \"./src/ui/dialogs/factory.ts\");\n/* harmony import */ var _ui_dialogs_transposeScore__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../ui/dialogs/transposeScore */ \"./src/ui/dialogs/transposeScore.ts\");\n/* harmony import */ var _ui_dialogs_measureFormat__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../ui/dialogs/measureFormat */ \"./src/ui/dialogs/measureFormat.ts\");\n/* harmony import */ var _ui_dialogs_addMeasure__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../ui/dialogs/addMeasure */ \"./src/ui/dialogs/addMeasure.ts\");\n/* harmony import */ var _ui_dialogs_instrument__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../ui/dialogs/instrument */ \"./src/ui/dialogs/instrument.ts\");\n/* harmony import */ var _ui_dialogs_timeSignature__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../ui/dialogs/timeSignature */ \"./src/ui/dialogs/timeSignature.ts\");\n/* harmony import */ var _ui_dialogs_tempo__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../ui/dialogs/tempo */ \"./src/ui/dialogs/tempo.ts\");\n/* harmony import */ var _ui_dialogs_noteHead__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../ui/dialogs/noteHead */ \"./src/ui/dialogs/noteHead.ts\");\n/* harmony import */ var _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../ui/dialogs/endings */ \"./src/ui/dialogs/endings.ts\");\n/* harmony import */ var _ui_dialogs_scoreId__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../ui/dialogs/scoreId */ \"./src/ui/dialogs/scoreId.ts\");\n/* harmony import */ var _ui_dialogs_preferences__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../ui/dialogs/preferences */ \"./src/ui/dialogs/preferences.ts\");\n/* harmony import */ var _ui_dialogs_pageLayout__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../ui/dialogs/pageLayout */ \"./src/ui/dialogs/pageLayout.ts\");\n/* harmony import */ var _ui_dialogs_textBracket__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../ui/dialogs/textBracket */ \"./src/ui/dialogs/textBracket.ts\");\n/* harmony import */ var _ui_dialogs_fonts__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../ui/dialogs/fonts */ \"./src/ui/dialogs/fonts.ts\");\n/* harmony import */ var _ui_dialogs_globalLayout__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../ui/dialogs/globalLayout */ \"./src/ui/dialogs/globalLayout.ts\");\n/* harmony import */ var _ui_dialogs_scoreView__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../ui/dialogs/scoreView */ \"./src/ui/dialogs/scoreView.ts\");\n/* harmony import */ var _ui_dialogs_library__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../ui/dialogs/library */ \"./src/ui/dialogs/library.ts\");\n/* harmony import */ var _ui_dialogs_chordChange__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ../ui/dialogs/chordChange */ \"./src/ui/dialogs/chordChange.ts\");\n/* harmony import */ var _ui_dialogs_lyric__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../ui/dialogs/lyric */ \"./src/ui/dialogs/lyric.ts\");\n/* harmony import */ var _ui_dialogs_textBlock__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ../ui/dialogs/textBlock */ \"./src/ui/dialogs/textBlock.ts\");\n/* harmony import */ var _ui_dialogs_dynamics__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ../ui/dialogs/dynamics */ \"./src/ui/dialogs/dynamics.ts\");\n/* harmony import */ var _ui_dialogs_slur__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../ui/dialogs/slur */ \"./src/ui/dialogs/slur.ts\");\n/* harmony import */ var _ui_dialogs_pedalMarking__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../ui/dialogs/pedalMarking */ \"./src/ui/dialogs/pedalMarking.ts\");\n/* harmony import */ var _ui_dialogs_tie__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../ui/dialogs/tie */ \"./src/ui/dialogs/tie.ts\");\n/* harmony import */ var _ui_dialogs_volta__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../ui/dialogs/volta */ \"./src/ui/dialogs/volta.ts\");\n/* harmony import */ var _ui_dialogs_hairpin__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ../ui/dialogs/hairpin */ \"./src/ui/dialogs/hairpin.ts\");\n/* harmony import */ var _ui_dialogs_staffGroup__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ../ui/dialogs/staffGroup */ \"./src/ui/dialogs/staffGroup.ts\");\n/* harmony import */ var _ui_dialogs_ornament__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ../ui/dialogs/ornament */ \"./src/ui/dialogs/ornament.ts\");\n/* harmony import */ var _ui_dialogs_articulation__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ../ui/dialogs/articulation */ \"./src/ui/dialogs/articulation.ts\");\n/* harmony import */ var _ui_dialogs_microtones__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ../ui/dialogs/microtones */ \"./src/ui/dialogs/microtones.ts\");\n/* harmony import */ var _ui_dialogs_arpeggio__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ../ui/dialogs/arpeggio */ \"./src/ui/dialogs/arpeggio.ts\");\n/* harmony import */ var _ui_dialogs_clefChange__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ../ui/dialogs/clefChange */ \"./src/ui/dialogs/clefChange.ts\");\n/* harmony import */ var _ui_dialogs_partInfo__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ../ui/dialogs/partInfo */ \"./src/ui/dialogs/partInfo.ts\");\n/* harmony import */ var _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../ui/dialogs/fileDialogs */ \"./src/ui/dialogs/fileDialogs.ts\");\n/* harmony import */ var _ui_dialogs_components_textInput__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ../ui/dialogs/components/textInput */ \"./src/ui/dialogs/components/textInput.ts\");\n/* harmony import */ var _ui_dialogs_components_dropdown__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../ui/dialogs/components/dropdown */ \"./src/ui/dialogs/components/dropdown.ts\");\n/* harmony import */ var _ui_dialogs_components_button__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../ui/dialogs/components/button */ \"./src/ui/dialogs/components/button.ts\");\n/* harmony import */ var _ui_dialogs_components_buttonArray__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../ui/dialogs/components/buttonArray */ \"./src/ui/dialogs/components/buttonArray.ts\");\n/* harmony import */ var _ui_dialogs_components_toggle__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ../ui/dialogs/components/toggle */ \"./src/ui/dialogs/components/toggle.ts\");\n/* harmony import */ var _ui_dialogs_components_fileDownload__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ../ui/dialogs/components/fileDownload */ \"./src/ui/dialogs/components/fileDownload.ts\");\n/* harmony import */ var _ui_dialogs_components_rocker__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../ui/dialogs/components/rocker */ \"./src/ui/dialogs/components/rocker.ts\");\n/* harmony import */ var _ui_dialogs_components_fontComponent__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ../ui/dialogs/components/fontComponent */ \"./src/ui/dialogs/components/fontComponent.ts\");\n/* harmony import */ var _ui_dialogs_components_textInPlace__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ../ui/dialogs/components/textInPlace */ \"./src/ui/dialogs/components/textInPlace.ts\");\n/* harmony import */ var _ui_dialogs_components_tree__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ../ui/dialogs/components/tree */ \"./src/ui/dialogs/components/tree.ts\");\n/* harmony import */ var _ui_dialogs_components_pitch__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ../ui/dialogs/components/pitch */ \"./src/ui/dialogs/components/pitch.ts\");\n/* harmony import */ var _ui_dialogs_components_noteText__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ../ui/dialogs/components/noteText */ \"./src/ui/dialogs/components/noteText.ts\");\n/* harmony import */ var _ui_dialogs_components_dragText__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ../ui/dialogs/components/dragText */ \"./src/ui/dialogs/components/dragText.ts\");\n/* harmony import */ var _ui_dialogs_components_checkdrop__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ../ui/dialogs/components/checkdrop */ \"./src/ui/dialogs/components/checkdrop.ts\");\n/* harmony import */ var _ui_dialogs_components_tie__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ../ui/dialogs/components/tie */ \"./src/ui/dialogs/components/tie.ts\");\n/* harmony import */ var _ui_dialogs_components_staffComponents__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ../ui/dialogs/components/staffComponents */ \"./src/ui/dialogs/components/staffComponents.ts\");\n/* harmony import */ var _ui_dialogs_keySignature__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ../ui/dialogs/keySignature */ \"./src/ui/dialogs/keySignature.ts\");\n/* harmony import */ var _ui_dialogs_components_textCheck__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ../ui/dialogs/components/textCheck */ \"./src/ui/dialogs/components/textCheck.ts\");\n/* harmony import */ var _ui_menus_manager__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ../ui/menus/manager */ \"./src/ui/menus/manager.ts\");\n/* harmony import */ var _ui_menus_menu__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ../ui/menus/menu */ \"./src/ui/menus/menu.ts\");\n/* harmony import */ var _ui_menus_score__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ../ui/menus/score */ \"./src/ui/menus/score.ts\");\n/* harmony import */ var _ui_menus_text__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ../ui/menus/text */ \"./src/ui/menus/text.ts\");\n/* harmony import */ var _ui_menus_parts__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ../ui/menus/parts */ \"./src/ui/menus/parts.ts\");\n/* harmony import */ var _ui_menus_voices__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ../ui/menus/voices */ \"./src/ui/menus/voices.ts\");\n/* harmony import */ var _ui_menus_beams__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ../ui/menus/beams */ \"./src/ui/menus/beams.ts\");\n/* harmony import */ var _ui_menus_partSelection__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ../ui/menus/partSelection */ \"./src/ui/menus/partSelection.ts\");\n/* harmony import */ var _ui_menus_dynamics__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ../ui/menus/dynamics */ \"./src/ui/menus/dynamics.ts\");\n/* harmony import */ var _ui_menus_timeSignature__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ../ui/menus/timeSignature */ \"./src/ui/menus/timeSignature.ts\");\n/* harmony import */ var _ui_menus_keySignature__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ../ui/menus/keySignature */ \"./src/ui/menus/keySignature.ts\");\n/* harmony import */ var _ui_menus_staffModifier__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ../ui/menus/staffModifier */ \"./src/ui/menus/staffModifier.ts\");\n/* harmony import */ var _ui_menus_file__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ../ui/menus/file */ \"./src/ui/menus/file.ts\");\n/* harmony import */ var _ui_menus_language__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ../ui/menus/language */ \"./src/ui/menus/language.ts\");\n/* harmony import */ var _ui_i18n_language__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ../ui/i18n/language */ \"./src/ui/i18n/language.ts\");\n/* harmony import */ var _ui_menus_measure__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ../ui/menus/measure */ \"./src/ui/menus/measure.ts\");\n/* harmony import */ var _ui_menus_note__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ../ui/menus/note */ \"./src/ui/menus/note.ts\");\n/* harmony import */ var _ui_fileio_xhrLoader__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ../ui/fileio/xhrLoader */ \"./src/ui/fileio/xhrLoader.ts\");\n/* harmony import */ var _common_promiseHelpers__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ../common/promiseHelpers */ \"./src/common/promiseHelpers.ts\");\n/* harmony import */ var _render_sui_scoreView__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ../render/sui/scoreView */ \"./src/render/sui/scoreView.ts\");\n/* harmony import */ var _render_sui_scoreViewOperations__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ../render/sui/scoreViewOperations */ \"./src/render/sui/scoreViewOperations.ts\");\n/* harmony import */ var _render_sui_scoreRender__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ../render/sui/scoreRender */ \"./src/render/sui/scoreRender.ts\");\n/* harmony import */ var _render_sui_layoutDebug__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ../render/sui/layoutDebug */ \"./src/render/sui/layoutDebug.ts\");\n/* harmony import */ var _render_sui_mapper__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ../render/sui/mapper */ \"./src/render/sui/mapper.ts\");\n/* harmony import */ var _render_sui_scroller__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ../render/sui/scroller */ \"./src/render/sui/scroller.ts\");\n/* harmony import */ var _render_sui_svgHelpers__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ../render/sui/svgHelpers */ \"./src/render/sui/svgHelpers.ts\");\n/* harmony import */ var _render_audio_player__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ../render/audio/player */ \"./src/render/audio/player.ts\");\n/* harmony import */ var _render_audio_oscillator__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ../render/audio/oscillator */ \"./src/render/audio/oscillator.ts\");\n/* harmony import */ var _render_audio_samples__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ../render/audio/samples */ \"./src/render/audio/samples.ts\");\n/* harmony import */ var _smo_data_common__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ../smo/data/common */ \"./src/smo/data/common.ts\");\n/* harmony import */ var _smo_data_score__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ../smo/data/score */ \"./src/smo/data/score.ts\");\n/* harmony import */ var _smo_xform_undo__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ../smo/xform/undo */ \"./src/smo/xform/undo.ts\");\n/* harmony import */ var _smo_data_note__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ../smo/data/note */ \"./src/smo/data/note.ts\");\n/* harmony import */ var _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ../smo/data/staffModifiers */ \"./src/smo/data/staffModifiers.ts\");\n/* harmony import */ var _smo_data_measure__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ../smo/data/measure */ \"./src/smo/data/measure.ts\");\n/* harmony import */ var _smo_data_music__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ../smo/data/music */ \"./src/smo/data/music.ts\");\n/* harmony import */ var _smo_xform_selections__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ../smo/xform/selections */ \"./src/smo/xform/selections.ts\");\n/* harmony import */ var _smo_xform_beamers__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ../smo/xform/beamers */ \"./src/smo/xform/beamers.ts\");\n/* harmony import */ var _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ../smo/data/noteModifiers */ \"./src/smo/data/noteModifiers.ts\");\n/* harmony import */ var _smo_data_systemStaff__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ../smo/data/systemStaff */ \"./src/smo/data/systemStaff.ts\");\n/* harmony import */ var _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ../smo/data/scoreModifiers */ \"./src/smo/data/scoreModifiers.ts\");\n/* harmony import */ var _smo_data_scoreText__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ../smo/data/scoreText */ \"./src/smo/data/scoreText.ts\");\n/* harmony import */ var _smo_xform_operations__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ../smo/xform/operations */ \"./src/smo/xform/operations.ts\");\n/* harmony import */ var _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ../smo/data/measureModifiers */ \"./src/smo/data/measureModifiers.ts\");\n/* harmony import */ var _smo_mxml_smoToXml__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ../smo/mxml/smoToXml */ \"./src/smo/mxml/smoToXml.ts\");\n/* harmony import */ var _smo_midi_midiToSmo__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ../smo/midi/midiToSmo */ \"./src/smo/midi/midiToSmo.ts\");\n/* harmony import */ var _smo_midi_smoToMidi__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ../smo/midi/smoToMidi */ \"./src/smo/midi/smoToMidi.ts\");\n/* harmony import */ var _smo_mxml_xmlToSmo__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ../smo/mxml/xmlToSmo */ \"./src/smo/mxml/xmlToSmo.ts\");\n/* harmony import */ var _render_vex_toVex__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ../render/vex/toVex */ \"./src/render/vex/toVex.ts\");\n/* harmony import */ var _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ../common/htmlHelpers */ \"./src/common/htmlHelpers.ts\");\n/* harmony import */ var _generateVexTests__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./generateVexTests */ \"./src/application/generateVexTests.ts\");\n/* harmony import */ var _ui_dialogs_durations__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ../ui/dialogs/durations */ \"./src/ui/dialogs/durations.ts\");\n/* harmony import */ var _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ../ui/dialogs/pitch */ \"./src/ui/dialogs/pitch.ts\");\n/* harmony import */ var _exports__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./exports */ \"./src/application/exports.ts\");\n/* harmony import */ var _keyCommands__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./keyCommands */ \"./src/application/keyCommands.ts\");\n/* harmony import */ var _render_audio_musicCursor__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(/*! ../render/audio/musicCursor */ \"./src/render/audio/musicCursor.ts\");\n/* harmony import */ var _render_sui_configuration__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(/*! ../render/sui/configuration */ \"./src/render/sui/configuration.ts\");\n/* harmony import */ var _render_sui_formatter__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(/*! ../render/sui/formatter */ \"./src/render/sui/formatter.ts\");\n/* harmony import */ var _render_sui_renderState__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(/*! ../render/sui/renderState */ \"./src/render/sui/renderState.ts\");\n/* harmony import */ var _render_sui_svgPageMap__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(/*! ../render/sui/svgPageMap */ \"./src/render/sui/svgPageMap.ts\");\n/* harmony import */ var _render_sui_textEdit__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(/*! ../render/sui/textEdit */ \"./src/render/sui/textEdit.ts\");\n/* harmony import */ var _render_sui_textRender__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(/*! ../render/sui/textRender */ \"./src/render/sui/textRender.ts\");\n/* harmony import */ var _render_sui_tracker__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(/*! ../render/sui/tracker */ \"./src/render/sui/tracker.ts\");\n/* harmony import */ var _render_vex_glyphDimensions__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(/*! ../render/vex/glyphDimensions */ \"./src/render/vex/glyphDimensions.ts\");\n/* harmony import */ var _render_vex_smoAdapter__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(/*! ../render/vex/smoAdapter */ \"./src/render/vex/smoAdapter.ts\");\n/* harmony import */ var _render_vex_vxMeasure__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(/*! ../render/vex/vxMeasure */ \"./src/render/vex/vxMeasure.ts\");\n/* harmony import */ var _render_vex_vxNote__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(/*! ../render/vex/vxNote */ \"./src/render/vex/vxNote.ts\");\n/* harmony import */ var _render_vex_vxSystem__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(/*! ../render/vex/vxSystem */ \"./src/render/vex/vxSystem.ts\");\n/* harmony import */ var _smo_data_partInfo__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(/*! ../smo/data/partInfo */ \"./src/smo/data/partInfo.ts\");\n/* harmony import */ var _smo_data_tuplet__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(/*! ../smo/data/tuplet */ \"./src/smo/data/tuplet.ts\");\n/* harmony import */ var _smo_mxml_xmlHelpers__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(/*! ../smo/mxml/xmlHelpers */ \"./src/smo/mxml/xmlHelpers.ts\");\n/* harmony import */ var _smo_mxml_xmlState__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(/*! ../smo/mxml/xmlState */ \"./src/smo/mxml/xmlState.ts\");\n/* harmony import */ var _smo_xform_audioTrack__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(/*! ../smo/xform/audioTrack */ \"./src/smo/xform/audioTrack.ts\");\n/* harmony import */ var _smo_xform_copypaste__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(/*! ../smo/xform/copypaste */ \"./src/smo/xform/copypaste.ts\");\n/* harmony import */ var _smo_xform_tickDuration__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(/*! ../smo/xform/tickDuration */ \"./src/smo/xform/tickDuration.ts\");\n/* harmony import */ var _smo_xform_tickMap__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(/*! ../smo/xform/tickMap */ \"./src/smo/xform/tickMap.ts\");\n/* harmony import */ var _ui_buttons_button__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(/*! ../ui/buttons/button */ \"./src/ui/buttons/button.ts\");\n/* harmony import */ var _ui_common__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(/*! ../ui/common */ \"./src/ui/common.ts\");\n/* harmony import */ var _ui_configuration__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(/*! ../ui/configuration */ \"./src/ui/configuration.ts\");\n/* harmony import */ var _ui_dialogs_audioSettings__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(/*! ../ui/dialogs/audioSettings */ \"./src/ui/dialogs/audioSettings.ts\");\n/* harmony import */ var _ui_dialogs_components_baseComponent__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(/*! ../ui/dialogs/components/baseComponent */ \"./src/ui/dialogs/components/baseComponent.ts\");\n/* harmony import */ var _ui_dialogs_newPart__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(/*! ../ui/dialogs/newPart */ \"./src/ui/dialogs/newPart.ts\");\n/* harmony import */ var _ui_dialogs_tabNote__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(/*! ../ui/dialogs/tabNote */ \"./src/ui/dialogs/tabNote.ts\");\n/* harmony import */ var _ui_dialogs_tabStave__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(/*! ../ui/dialogs/tabStave */ \"./src/ui/dialogs/tabStave.ts\");\n/* harmony import */ var _ui_eventSource__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(/*! ../ui/eventSource */ \"./src/ui/eventSource.ts\");\n/* harmony import */ var _ui_fileio_fileInput__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(/*! ../ui/fileio/fileInput */ \"./src/ui/fileio/fileInput.ts\");\n/* harmony import */ var _ui_fileio_library__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(/*! ../ui/fileio/library */ \"./src/ui/fileio/library.ts\");\n/* harmony import */ var _ui_keyBindings_default_editorKeys__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(/*! ../ui/keyBindings/default/editorKeys */ \"./src/ui/keyBindings/default/editorKeys.ts\");\n/* harmony import */ var _ui_keyBindings_default_trackerKeys__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(/*! ../ui/keyBindings/default/trackerKeys */ \"./src/ui/keyBindings/default/trackerKeys.ts\");\n/* harmony import */ var _ui_ribbonLayout_default_defaultRibbon__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(/*! ../ui/ribbonLayout/default/defaultRibbon */ \"./src/ui/ribbonLayout/default/defaultRibbon.ts\");\n// Smoosic relies on dynamic creation of almost everything. This class exports all the symbols\n// that need to be created via reflection.\n// ui application components\n// vexflow interface\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Language strings\n\n\n// ui dialogs and menus\n// Dialogs\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Dialog components\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// menus\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// render library\n\n\n\n\n\n\n\n// audio library\n\n\n\n// SMO object model\n\n\n\n\n// import { SmoDuration } from '../smo/xform/tickDuration';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// utilities\n\n\n\n\nconst getClass = (jsonString) => {\n return eval('Smo.' + jsonString);\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst Smo = {\n // Application-level classes\n SmoConfiguration: _configuration__WEBPACK_IMPORTED_MODULE_13__.SmoConfiguration,\n SuiApplication: _application__WEBPACK_IMPORTED_MODULE_3__.SuiApplication,\n dynamicCtorInit: _dynamicInit__WEBPACK_IMPORTED_MODULE_18__.dynamicCtorInit,\n parseMidi: _common_midi_parser__WEBPACK_IMPORTED_MODULE_2__.parseMidi,\n SuiDom: _dom__WEBPACK_IMPORTED_MODULE_8__.SuiDom, SuiEventHandler: _eventHandler__WEBPACK_IMPORTED_MODULE_4__.SuiEventHandler, SuiExceptionHandler: _ui_exceptions__WEBPACK_IMPORTED_MODULE_5__.SuiExceptionHandler,\n Qwerty: _ui_qwerty__WEBPACK_IMPORTED_MODULE_6__.Qwerty, SuiHelp: _ui_help__WEBPACK_IMPORTED_MODULE_9__.SuiHelp, SmoTranslationEditor: _ui_i18n_translationEditor__WEBPACK_IMPORTED_MODULE_12__.SmoTranslationEditor, ModalEventHandler: _common__WEBPACK_IMPORTED_MODULE_16__.ModalEventHandler,\n // Ribbon buttons\n simpleRibbonLayout: _ui_ribbonLayout_default_tabletRibbon__WEBPACK_IMPORTED_MODULE_15__.simpleRibbonLayout,\n RibbonButtons: _ui_buttons_ribbon__WEBPACK_IMPORTED_MODULE_14__.RibbonButtons,\n DisplaySettings: _ui_buttons_display__WEBPACK_IMPORTED_MODULE_11__.DisplaySettings, ExtendedCollapseParent: _ui_buttons_collapsable__WEBPACK_IMPORTED_MODULE_10__.ExtendedCollapseParent, CollapseRibbonControl: _ui_buttons_collapsable__WEBPACK_IMPORTED_MODULE_10__.CollapseRibbonControl,\n // Menus\n SuiMenuManager: _ui_menus_manager__WEBPACK_IMPORTED_MODULE_74__.SuiMenuManager, SuiMenuBase: _ui_menus_menu__WEBPACK_IMPORTED_MODULE_75__.SuiMenuBase, SuiMenuCustomizer: _ui_menus_menu__WEBPACK_IMPORTED_MODULE_75__.SuiMenuCustomizer, SuiScoreMenu: _ui_menus_score__WEBPACK_IMPORTED_MODULE_76__.SuiScoreMenu, SuiFileMenu: _ui_menus_file__WEBPACK_IMPORTED_MODULE_86__.SuiFileMenu,\n SuiDynamicsMenu: _ui_menus_dynamics__WEBPACK_IMPORTED_MODULE_82__.SuiDynamicsMenu, SuiTimeSignatureMenu: _ui_menus_timeSignature__WEBPACK_IMPORTED_MODULE_83__.SuiTimeSignatureMenu, SuiKeySignatureMenu: _ui_menus_keySignature__WEBPACK_IMPORTED_MODULE_84__.SuiKeySignatureMenu, SuiStaffModifierMenu: _ui_menus_staffModifier__WEBPACK_IMPORTED_MODULE_85__.SuiStaffModifierMenu,\n SuiLanguageMenu: _ui_menus_language__WEBPACK_IMPORTED_MODULE_87__.SuiLanguageMenu, SuiMeasureMenu: _ui_menus_measure__WEBPACK_IMPORTED_MODULE_89__.SuiMeasureMenu, SuiNoteMenu: _ui_menus_note__WEBPACK_IMPORTED_MODULE_90__.SuiNoteMenu, SmoLanguage: _ui_i18n_language__WEBPACK_IMPORTED_MODULE_88__.SmoLanguage, SmoTranslator: _ui_i18n_language__WEBPACK_IMPORTED_MODULE_88__.SmoTranslator, SuiPartMenu: _ui_menus_parts__WEBPACK_IMPORTED_MODULE_78__.SuiPartMenu,\n SuiPartSelectionMenu: _ui_menus_partSelection__WEBPACK_IMPORTED_MODULE_81__.SuiPartSelectionMenu, SuiTextMenu: _ui_menus_text__WEBPACK_IMPORTED_MODULE_77__.SuiTextMenu, SuiVoiceMenu: _ui_menus_voices__WEBPACK_IMPORTED_MODULE_79__.SuiVoiceMenu, SuiBeamMenu: _ui_menus_beams__WEBPACK_IMPORTED_MODULE_80__.SuiBeamMenu,\n // Dialogs\n SuiGraceNoteAdapter: _ui_dialogs_gracenote__WEBPACK_IMPORTED_MODULE_21__.SuiGraceNoteAdapter, SuiGraceNoteDialog: _ui_dialogs_gracenote__WEBPACK_IMPORTED_MODULE_21__.SuiGraceNoteDialog, SuiGraceNoteButtonsComponent: _ui_dialogs_gracenote__WEBPACK_IMPORTED_MODULE_21__.SuiGraceNoteButtonsComponent,\n SuiDurationAdapter: _ui_dialogs_durations__WEBPACK_IMPORTED_MODULE_125__.SuiDurationAdapter, SuiDurationDialog: _ui_dialogs_durations__WEBPACK_IMPORTED_MODULE_125__.SuiDurationDialog, SuiDurationButtonComponent: _ui_dialogs_durations__WEBPACK_IMPORTED_MODULE_125__.SuiDurationButtonComponent,\n SuiComponentAdapter: _ui_dialogs_adapter__WEBPACK_IMPORTED_MODULE_20__.SuiComponentAdapter, SuiDialogAdapterBase: _ui_dialogs_adapter__WEBPACK_IMPORTED_MODULE_20__.SuiDialogAdapterBase,\n SuiTempoDialog: _ui_dialogs_tempo__WEBPACK_IMPORTED_MODULE_28__.SuiTempoDialog, SuiInstrumentDialog: _ui_dialogs_instrument__WEBPACK_IMPORTED_MODULE_26__.SuiInstrumentDialog, SuiModifierDialogFactory: _ui_dialogs_factory__WEBPACK_IMPORTED_MODULE_22__.SuiModifierDialogFactory, SuiLibraryDialog: _ui_dialogs_library__WEBPACK_IMPORTED_MODULE_38__.SuiLibraryDialog,\n SuiTextBracketDialog: _ui_dialogs_textBracket__WEBPACK_IMPORTED_MODULE_34__.SuiTextBracketDialog, SuiKeySignatureDialog: _ui_dialogs_keySignature__WEBPACK_IMPORTED_MODULE_72__.SuiKeySignatureDialog, SuiKeySignatureAdapter: _ui_dialogs_keySignature__WEBPACK_IMPORTED_MODULE_72__.SuiKeySignatureAdapter,\n SuiScoreViewDialog: _ui_dialogs_scoreView__WEBPACK_IMPORTED_MODULE_37__.SuiScoreViewDialog, SuiGlobalLayoutDialog: _ui_dialogs_globalLayout__WEBPACK_IMPORTED_MODULE_36__.SuiGlobalLayoutDialog, SuiScoreIdentificationDialog: _ui_dialogs_scoreId__WEBPACK_IMPORTED_MODULE_31__.SuiScoreIdentificationDialog, SuiTransposeScoreAdapter: _ui_dialogs_transposeScore__WEBPACK_IMPORTED_MODULE_23__.SuiTransposeScoreAdapter,\n SuiTransposeScoreDialog: _ui_dialogs_transposeScore__WEBPACK_IMPORTED_MODULE_23__.SuiTransposeScoreDialog,\n SuiScoreFontDialog: _ui_dialogs_fonts__WEBPACK_IMPORTED_MODULE_35__.SuiScoreFontDialog, SuiPageLayoutDialog: _ui_dialogs_pageLayout__WEBPACK_IMPORTED_MODULE_33__.SuiPageLayoutDialog, SuiMeasureDialog: _ui_dialogs_measureFormat__WEBPACK_IMPORTED_MODULE_24__.SuiMeasureDialog, SuiInsertMeasures: _ui_dialogs_addMeasure__WEBPACK_IMPORTED_MODULE_25__.SuiInsertMeasures,\n SuiTimeSignatureDialog: _ui_dialogs_timeSignature__WEBPACK_IMPORTED_MODULE_27__.SuiTimeSignatureDialog, SuiTextBlockDialog: _ui_dialogs_textBlock__WEBPACK_IMPORTED_MODULE_41__.SuiTextBlockDialog, SuiLyricDialog: _ui_dialogs_lyric__WEBPACK_IMPORTED_MODULE_40__.SuiLyricDialog, SuiChordChangeDialog: _ui_dialogs_chordChange__WEBPACK_IMPORTED_MODULE_39__.SuiChordChangeDialog,\n SuiSlurAttributesDialog: _ui_dialogs_slur__WEBPACK_IMPORTED_MODULE_43__.SuiSlurAttributesDialog, SuiPedalMarkingDialog: _ui_dialogs_pedalMarking__WEBPACK_IMPORTED_MODULE_44__.SuiPedalMarkingDialog, SuiTieAttributesDialog: _ui_dialogs_tie__WEBPACK_IMPORTED_MODULE_45__.SuiTieAttributesDialog, SuiVoltaAttributeDialog: _ui_dialogs_volta__WEBPACK_IMPORTED_MODULE_46__.SuiVoltaAttributeDialog,\n SuiHairpinAttributesDialog: _ui_dialogs_hairpin__WEBPACK_IMPORTED_MODULE_47__.SuiHairpinAttributesDialog, SuiStaffGroupDialog: _ui_dialogs_staffGroup__WEBPACK_IMPORTED_MODULE_48__.SuiStaffGroupDialog, helpModal: _ui_dialogs_textBlock__WEBPACK_IMPORTED_MODULE_41__.helpModal,\n SuiLoadFileDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiLoadFileDialog, SuiLoadMxmlDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiLoadMxmlDialog, SuiScorePreferencesDialog: _ui_dialogs_preferences__WEBPACK_IMPORTED_MODULE_32__.SuiScorePreferencesDialog,\n SuiPartInfoDialog: _ui_dialogs_partInfo__WEBPACK_IMPORTED_MODULE_54__.SuiPartInfoDialog, SuiOrnamentDialog: _ui_dialogs_ornament__WEBPACK_IMPORTED_MODULE_49__.SuiOrnamentDialog, SuiOrnamentButtonComponent: _ui_dialogs_ornament__WEBPACK_IMPORTED_MODULE_49__.SuiOrnamentButtonComponent,\n SuiArticulationDialog: _ui_dialogs_articulation__WEBPACK_IMPORTED_MODULE_50__.SuiArticulationDialog, SuiArticulationButtonComponent: _ui_dialogs_articulation__WEBPACK_IMPORTED_MODULE_50__.SuiArticulationButtonComponent, SuiArticulationAdapter: _ui_dialogs_articulation__WEBPACK_IMPORTED_MODULE_50__.SuiArticulationAdapter,\n SuiMicrotoneAdapter: _ui_dialogs_microtones__WEBPACK_IMPORTED_MODULE_51__.SuiMicrotoneAdapter, SuiMicrotoneButtonComponent: _ui_dialogs_microtones__WEBPACK_IMPORTED_MODULE_51__.SuiMicrotoneButtonComponent, SuiMicrotoneDialog: _ui_dialogs_microtones__WEBPACK_IMPORTED_MODULE_51__.SuiMicrotoneDialog,\n SuiNoteHeadAdapter: _ui_dialogs_noteHead__WEBPACK_IMPORTED_MODULE_29__.SuiNoteHeadAdapter, SuiNoteHeadDialog: _ui_dialogs_noteHead__WEBPACK_IMPORTED_MODULE_29__.SuiNoteHeadDialog, SuiStemButtonComponent: _ui_dialogs_noteHead__WEBPACK_IMPORTED_MODULE_29__.SuiStemButtonComponent, SuiNoteHeadButtonComponent: _ui_dialogs_noteHead__WEBPACK_IMPORTED_MODULE_29__.SuiNoteHeadButtonComponent,\n SuiEndingsAdapter: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.SuiEndingsAdapter, SuiEndingsDialog: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.SuiEndingsDialog, endingsButtonFactory: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.endingsButtonFactory,\n SuiEndBarButtonComponent: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.SuiEndBarButtonComponent, SuiStartBarButtonComponent: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.SuiStartBarButtonComponent, SuiRepeatSymbolButtonComponent: _ui_dialogs_endings__WEBPACK_IMPORTED_MODULE_30__.SuiRepeatSymbolButtonComponent,\n SuiPrintFileDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiPrintFileDialog, SuiSaveFileDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiSaveFileDialog, SuiSaveXmlDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiSaveXmlDialog, SuiSaveVexDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiSaveVexDialog,\n SuiSaveMidiDialog: _ui_dialogs_fileDialogs__WEBPACK_IMPORTED_MODULE_55__.SuiSaveMidiDialog, SuiDialogBase: _ui_dialogs_dialog__WEBPACK_IMPORTED_MODULE_19__.SuiDialogBase, createAndDisplayDialog: _ui_dialogs_dialog__WEBPACK_IMPORTED_MODULE_19__.createAndDisplayDialog,\n SuiPitchDialog: _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__.SuiPitchDialog, SuiPitchAdapter: _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__.SuiPitchAdapter, SuiIntervalButtonComponent: _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__.SuiIntervalButtonComponent, SuiLetterButtonComponent: _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__.SuiLetterButtonComponent,\n SuiTransposeButtonComponent: _ui_dialogs_pitch__WEBPACK_IMPORTED_MODULE_126__.SuiTransposeButtonComponent,\n // Dialog components\n SuiTreeComponent: _ui_dialogs_components_tree__WEBPACK_IMPORTED_MODULE_65__.SuiTreeComponent,\n SuiDropdownComponent: _ui_dialogs_components_dropdown__WEBPACK_IMPORTED_MODULE_57__.SuiDropdownComponent,\n SuiRockerComponent: _ui_dialogs_components_rocker__WEBPACK_IMPORTED_MODULE_62__.SuiRockerComponent, SuiFileDownloadComponent: _ui_dialogs_components_fileDownload__WEBPACK_IMPORTED_MODULE_61__.SuiFileDownloadComponent, SuiButtonArrayComponent: _ui_dialogs_components_buttonArray__WEBPACK_IMPORTED_MODULE_59__.SuiButtonArrayComponent, SuiButtonArrayMSComponent: _ui_dialogs_components_buttonArray__WEBPACK_IMPORTED_MODULE_59__.SuiButtonArrayMSComponent,\n SuiToggleComponent: _ui_dialogs_components_toggle__WEBPACK_IMPORTED_MODULE_60__.SuiToggleComponent, SuiButtonComponent: _ui_dialogs_components_button__WEBPACK_IMPORTED_MODULE_58__.SuiButtonComponent, SuiDropdownComposite: _ui_dialogs_components_dropdown__WEBPACK_IMPORTED_MODULE_57__.SuiDropdownComposite,\n SuiToggleComposite: _ui_dialogs_components_toggle__WEBPACK_IMPORTED_MODULE_60__.SuiToggleComposite, SuiButtonComposite: _ui_dialogs_components_button__WEBPACK_IMPORTED_MODULE_58__.SuiButtonComposite, SuiRockerComposite: _ui_dialogs_components_rocker__WEBPACK_IMPORTED_MODULE_62__.SuiRockerComposite, SuiTextInputComposite: _ui_dialogs_components_textInput__WEBPACK_IMPORTED_MODULE_56__.SuiTextInputComposite,\n SuiFontComponent: _ui_dialogs_components_fontComponent__WEBPACK_IMPORTED_MODULE_63__.SuiFontComponent, SuiTextInPlace: _ui_dialogs_components_textInPlace__WEBPACK_IMPORTED_MODULE_64__.SuiTextInPlace, SuiLyricComponent: _ui_dialogs_components_noteText__WEBPACK_IMPORTED_MODULE_67__.SuiLyricComponent, SuiChordComponent: _ui_dialogs_components_noteText__WEBPACK_IMPORTED_MODULE_67__.SuiChordComponent, SuiDragText: _ui_dialogs_components_dragText__WEBPACK_IMPORTED_MODULE_68__.SuiDragText,\n SuiNoteTextComponent: _ui_dialogs_components_noteText__WEBPACK_IMPORTED_MODULE_67__.SuiNoteTextComponent, SuiTextBlockComponent: _ui_dialogs_components_textInPlace__WEBPACK_IMPORTED_MODULE_64__.SuiTextBlockComponent, SuiTextInputComponent: _ui_dialogs_components_textInput__WEBPACK_IMPORTED_MODULE_56__.SuiTextInputComponent, SuiReadOnlyTextComponent: _ui_dialogs_components_textInput__WEBPACK_IMPORTED_MODULE_56__.SuiReadOnlyTextComponent,\n SuiDynamicModifierDialog: _ui_dialogs_dynamics__WEBPACK_IMPORTED_MODULE_42__.SuiDynamicModifierDialog, CheckboxDropdownComponent: _ui_dialogs_components_checkdrop__WEBPACK_IMPORTED_MODULE_69__.CheckboxDropdownComponent, TieMappingComponent: _ui_dialogs_components_tie__WEBPACK_IMPORTED_MODULE_70__.TieMappingComponent, StaffAddRemoveComponent: _ui_dialogs_components_staffComponents__WEBPACK_IMPORTED_MODULE_71__.StaffAddRemoveComponent,\n StaffCheckComponent: _ui_dialogs_components_staffComponents__WEBPACK_IMPORTED_MODULE_71__.StaffCheckComponent, TextCheckComponent: _ui_dialogs_components_textCheck__WEBPACK_IMPORTED_MODULE_73__.TextCheckComponent, SuiArpeggioDialog: _ui_dialogs_arpeggio__WEBPACK_IMPORTED_MODULE_52__.SuiArpeggioDialog, SuiClefChangeDialog: _ui_dialogs_clefChange__WEBPACK_IMPORTED_MODULE_53__.SuiClefChangeDialog,\n SuiPitchArrayComponent: _ui_dialogs_components_pitch__WEBPACK_IMPORTED_MODULE_66__.SuiPitchArrayComponent, SuiPitchArrayComponentTab: _ui_dialogs_components_pitch__WEBPACK_IMPORTED_MODULE_66__.SuiPitchArrayComponentTab, SuiPitchComponent: _ui_dialogs_components_pitch__WEBPACK_IMPORTED_MODULE_66__.SuiPitchComponent,\n SuiPitchComposite: _ui_dialogs_components_pitch__WEBPACK_IMPORTED_MODULE_66__.SuiPitchComposite,\n SuiXhrLoader: _ui_fileio_xhrLoader__WEBPACK_IMPORTED_MODULE_91__.SuiXhrLoader, PromiseHelpers: _common_promiseHelpers__WEBPACK_IMPORTED_MODULE_92__.PromiseHelpers,\n // Rendering components\n SuiPiano: _render_sui_piano__WEBPACK_IMPORTED_MODULE_7__.SuiPiano, layoutDebug: _render_sui_layoutDebug__WEBPACK_IMPORTED_MODULE_96__.layoutDebug, SuiScoreView: _render_sui_scoreView__WEBPACK_IMPORTED_MODULE_93__.SuiScoreView, SuiScroller: _render_sui_scroller__WEBPACK_IMPORTED_MODULE_98__.SuiScroller, SvgHelpers: _render_sui_svgHelpers__WEBPACK_IMPORTED_MODULE_99__.SvgHelpers, SuiMapper: _render_sui_mapper__WEBPACK_IMPORTED_MODULE_97__.SuiMapper, SuiScoreRender: _render_sui_scoreRender__WEBPACK_IMPORTED_MODULE_95__.SuiScoreRender,\n SuiScoreViewOperations: _render_sui_scoreViewOperations__WEBPACK_IMPORTED_MODULE_94__.SuiScoreViewOperations, TextFormatter: _common_textformatter__WEBPACK_IMPORTED_MODULE_0__.TextFormatter, VexFlow: _common_vex__WEBPACK_IMPORTED_MODULE_1__.VexFlow,\n // Audio components\n SuiAudioPlayer: _render_audio_player__WEBPACK_IMPORTED_MODULE_100__.SuiAudioPlayer, SuiOscillator: _render_audio_oscillator__WEBPACK_IMPORTED_MODULE_101__.SuiOscillator, SuiSampleMedia: _render_audio_samples__WEBPACK_IMPORTED_MODULE_102__.SuiSampleMedia, SuiSampler: _render_audio_oscillator__WEBPACK_IMPORTED_MODULE_101__.SuiSampler, SuiReverb: _render_audio_oscillator__WEBPACK_IMPORTED_MODULE_101__.SuiReverb,\n // Smo Music Objects\n SmoScore: _smo_data_score__WEBPACK_IMPORTED_MODULE_104__.SmoScore, SmoScorePreferences: _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_114__.SmoScorePreferences, scoreModifierDynamicCtorInit: _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_114__.scoreModifierDynamicCtorInit, engravingFontTypes: _smo_data_score__WEBPACK_IMPORTED_MODULE_104__.engravingFontTypes, isEngravingFont: _smo_data_score__WEBPACK_IMPORTED_MODULE_104__.isEngravingFont,\n XmlToSmo: _smo_mxml_xmlToSmo__WEBPACK_IMPORTED_MODULE_121__.XmlToSmo, SmoToXml: _smo_mxml_smoToXml__WEBPACK_IMPORTED_MODULE_118__.SmoToXml, MidiToSmo: _smo_midi_midiToSmo__WEBPACK_IMPORTED_MODULE_119__.MidiToSmo, SmoToMidi: _smo_midi_smoToMidi__WEBPACK_IMPORTED_MODULE_120__.SmoToMidi, SmoMusic: _smo_data_music__WEBPACK_IMPORTED_MODULE_109__.SmoMusic, SmoAudioPitch: _smo_data_music__WEBPACK_IMPORTED_MODULE_109__.SmoAudioPitch, SmoMeasure: _smo_data_measure__WEBPACK_IMPORTED_MODULE_108__.SmoMeasure, SmoNamespace: _smo_data_common__WEBPACK_IMPORTED_MODULE_103__.SmoNamespace, SmoDynamicCtor: _smo_data_common__WEBPACK_IMPORTED_MODULE_103__.SmoDynamicCtor,\n SmoSystemStaff: _smo_data_systemStaff__WEBPACK_IMPORTED_MODULE_113__.SmoSystemStaff, SmoNote: _smo_data_note__WEBPACK_IMPORTED_MODULE_106__.SmoNote, IsPitchLetter: _smo_data_common__WEBPACK_IMPORTED_MODULE_103__.IsPitchLetter,\n // staff modifier\n SmoStaffHairpin: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoStaffHairpin, StaffModifierBase: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.StaffModifierBase, SmoStaffTextBracket: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoStaffTextBracket, staffModifierDynamicCtorInit: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.staffModifierDynamicCtorInit,\n SmoInstrument: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoInstrument, SmoSlur: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoSlur, SmoPedalMarking: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoPedalMarking, SmoTie: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoTie, SmoTabStave: _smo_data_staffModifiers__WEBPACK_IMPORTED_MODULE_107__.SmoTabStave,\n // score modifiers\n SmoSystemGroup: _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_114__.SmoSystemGroup, SmoAudioPlayerSettings: _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_114__.SmoAudioPlayerSettings, SmoTextGroup: _smo_data_scoreText__WEBPACK_IMPORTED_MODULE_115__.SmoTextGroup,\n // measure modifiers\n SmoRehearsalMark: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoRehearsalMark, SmoMeasureFormat: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoMeasureFormat, SmoBarline: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoBarline, SmoRepeatSymbol: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoRepeatSymbol, SmoVolta: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoVolta, SmoMeasureText: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoMeasureText, SmoTempoText: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.SmoTempoText, TimeSignature: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.TimeSignature,\n measureModifierDynamicCtorInit: _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_117__.measureModifierDynamicCtorInit,\n // note modifiers\n SmoOrnament: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoOrnament, noteModifierDynamicCtorInit: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.noteModifierDynamicCtorInit,\n SmoArticulation: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoArticulation, SmoDynamicText: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoDynamicText, SmoGraceNote: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoGraceNote, SmoMicrotone: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoMicrotone, SmoLyric: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoLyric, SmoArpeggio: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoArpeggio, SmoClefChange: _smo_data_noteModifiers__WEBPACK_IMPORTED_MODULE_112__.SmoClefChange,\n // Smo Transformers\n SmoSelection: _smo_xform_selections__WEBPACK_IMPORTED_MODULE_110__.SmoSelection, SmoSelector: _smo_xform_selections__WEBPACK_IMPORTED_MODULE_110__.SmoSelector, /*SmoDuration,*/ UndoBuffer: _smo_xform_undo__WEBPACK_IMPORTED_MODULE_105__.UndoBuffer, SmoToVex: _render_vex_toVex__WEBPACK_IMPORTED_MODULE_122__.SmoToVex, SmoOperation: _smo_xform_operations__WEBPACK_IMPORTED_MODULE_116__.SmoOperation, SmoBeamer: _smo_xform_beamers__WEBPACK_IMPORTED_MODULE_111__.SmoBeamer,\n // new score bootstrap\n // help strings\n cardKeysHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardKeysHtmlEn, cardNotesLetterHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardNotesLetterHtmlEn, cardNotesChromaticHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardNotesChromaticHtmlEn, cardNotesChordsHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardNotesChordsHtmlEn,\n cardNotesRestsHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardNotesRestsHtmlEn, cardDurationNotesHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardDurationNotesHtmlEn, cardDurationTupletsHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardDurationTupletsHtmlEn,\n cardSelectionsNotesHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardSelectionsNotesHtmlEn, cardSelectionsModifiersHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardSelectionsModifiersHtmlEn, cardSelectionsNonSelectableHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardSelectionsNonSelectableHtmlEn, cardSelectionsSlashHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardSelectionsSlashHtmlEn,\n cardBeamsAndStemsDirectionHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardBeamsAndStemsDirectionHtmlEn, cardBeamsAndStemsGroupingHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardBeamsAndStemsGroupingHtmlEn,\n cardMeasuresAddDeleteHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardMeasuresAddDeleteHtmlEn, cardVoicesCreateDeleteHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardVoicesCreateDeleteHtmlEn, cardPartAddDeleteHtmlEn: _ui_i18n_language_en__WEBPACK_IMPORTED_MODULE_17__.cardPartAddDeleteHtmlEn,\n getClass,\n // utilities\n buildDom: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.buildDom, addFileLink: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.addFileLink, InputTrapper: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.InputTrapper, draggable: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.draggable, closeDialogPromise: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.closeDialogPromise, getDomContainer: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.getDomContainer, createTopDomContainer: _common_htmlHelpers__WEBPACK_IMPORTED_MODULE_123__.createTopDomContainer,\n renderVexTests: _generateVexTests__WEBPACK_IMPORTED_MODULE_124__.renderVexTests\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Smo);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwbGljYXRpb24vZXhwb3J0cy50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrRkFBK0Y7QUFDL0YsMENBQTBDO0FBQzFDLDRCQUE0QjtBQUM1QixvQkFBb0I7QUFDb0M7QUFDaEI7QUFDVTtBQUNIO0FBQ0U7QUFDTTtBQUNqQjtBQUNTO0FBQ2hCO0FBQ007QUFDcUQ7QUFDbEM7QUFDWTtBQUNqQjtBQUNFO0FBQ3dCO0FBQ2hDO0FBQzdDLG1CQUFtQjtBQU1hO0FBQ2dCO0FBQ2hELHVCQUF1QjtBQUN2QixVQUFVO0FB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RkFBRSwrQkFBK0I7SUFDakUsMkJBQTJCLGtGQUFFLDRCQUE0QixtRkFBRSx1QkFBdUI7SUFDbEYsUUFBUTtJQUNWLFlBQVk7SUFDWixRQUFRLCtEQUFFLFdBQVcsa0VBQUUsWUFBWSxtRUFBRSxTQUFTLGdFQUFFLGtCQUFrQix5RUFBRSxlQUFlLHNFQUFFLHFCQUFxQjtJQUMxRyxjQUFjO0NBQ2Y7QUFDRCxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TbW8vLi9zcmMvYXBwbGljYXRpb24vZXhwb3J0cy50cz8zZmNmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNtb29zaWMgcmVsaWVzIG9uIGR5bmFtaWMgY3JlYXRpb24gb2YgYWxtb3N0IGV2ZXJ5dGhpbmcuICBUaGlzIGNsYXNzIGV4cG9ydHMgYWxsIHRoZSBzeW1ib2xzXHJcbi8vIHRoYXQgbmVlZCB0byBiZSBjcmVhdGVkIHZpYSByZWZsZWN0aW9uLlxyXG4vLyB1aSBhcHBsaWNhdGlvbiBjb21wb25lbnRzXHJcbi8vIHZleGZsb3cgaW50ZXJmYWNlXHJcbmltcG9ydCB7IFRleHRGb3JtYXR0ZXIgfSBmcm9tICcuLi9jb21tb24vdGV4dGZvcm1hdHRlcic7XHJcbmltcG9ydCB7IFZleEZsb3cgfSBmcm9tICcuLi9jb21tb24vdmV4JztcclxuaW1wb3J0IHsgcGFyc2VNaWRpIH0gZnJvbSAnLi4vY29tbW9uL21pZGktcGFyc2VyJztcclxuaW1wb3J0IHsgU3VpQXBwbGljYXRpb24gfSBmcm9tICcuL2FwcGxpY2F0aW9uJztcclxuaW1wb3J0IHsgU3VpRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi9ldmVudEhhbmRsZXInO1xyXG5pbXBvcnQgeyBTdWlFeGNlcHRpb25IYW5kbGVyIH0gZnJvbSAnLi4vdWkvZXhjZXB0aW9ucyc7XHJcbmltcG9ydCB7IFF3ZXJ0eSB9IGZyb20gJy4uL3VpL3F3ZXJ0eSc7XHJcbmltcG9ydCB7IFN1aVBpYW5vIH0gZnJvbSAnLi4vcmVuZGVyL3N1aS9waWFubyc7XHJcbmltcG9ydCB7IFN1aURvbSB9IGZyb20gJy4vZG9tJztcclxuaW1wb3J0IHsgU3VpSGVscCB9IGZyb20gJy4uL3VpL2hlbHAnO1xyXG5pbXBvcnQgeyBDb2xsYXBzZVJpYmJvbkNvbnRyb2wsIEV4dGVuZGVkQ29sbGFwc2VQYXJlbnQgfSBmcm9tICcuLi91aS9idXR0b25zL2NvbGxhcHNhYmxlJztcclxuaW1wb3J0IHsgRGlzcGxheVNldHRpbmdzIH0gZnJvbSAnLi4vdWkvYnV0dG9ucy9kaXNwbGF5JztcclxuaW1wb3J0IHsgU21vVHJhbnNsYXRpb25FZGl0b3IgfSBmcm9tICcuLi91aS9pMThuL3RyYW5zbGF0aW9uRWRpdG9yJztcclxuaW1wb3J0IHsgU21vQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IFJpYmJvbkJ1dHRvbnMgfSBmcm9tICcuLi91aS9idXR0b25zL3JpYmJvbic7XHJcbmltcG9ydCB7IHNpbXBsZVJpYmJvbkxheW91dCB9IGZyb20gJy4uL3VpL3JpYmJvbkxheW91dC9kZWZhdWx0L3RhYmxldFJpYmJvbic7XHJcbmltcG9ydCB7IE1vZGFsRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi9jb21tb24nO1xyXG4vLyBMYW5ndWFnZSBzdHJpbmdzXHJcbmltcG9ydCB7IGNhcmRLZXlzSHRtbEVuLCBjYXJkTm90ZXNMZXR0ZXJIdG1sRW4sIGNhcmROb3Rlc0Nocm9tYXRpY0h0bWxFbiwgY2FyZE5vdGVzQ2hvcmRzSHRtbEVuLFxyXG4gIGNhcmROb3Rlc1Jlc3RzSHRtbEVuLCBjYXJkRHVyYXRpb25Ob3Rlc0h0bWxFbiwgY2FyZER1cmF0aW9uVHVwbGV0c0h0bWxFbixcclxuICBjYXJkU2VsZWN0aW9uc05vdGVzSHRtbEVuLCBjYXJkU2VsZWN0aW9uc01vZGlmaWVyc0h0bWxFbiwgY2FyZFNlbGVjdGlvbnNOb25TZWxlY3RhYmxlSHRtbEVuLCBjYXJkU2VsZWN0aW9uc1NsYXNoSHRtbEVuLFxyXG4gIGNhcmRCZWFtc0FuZFN0ZW1zRGlyZWN0aW9uSHRtbEVuLCBjYXJkQmVhbXNBbmRTdGVtc0dyb3VwaW5nSHRtbEVuLFxyXG4gIGNhcmRNZWFzdXJlc0FkZERlbGV0ZUh0bWxFbiwgY2FyZFZvaWNlc0NyZWF0ZURlbGV0ZUh0bWxFbiwgY2FyZFBhcnRBZGREZWxldGVIdG1sRW5cclxufSBmcm9tICcuLi91aS9pMThuL2xhbmd1YWdlX2VuJztcclxuaW1wb3J0IHsgZHluYW1pY0N0b3JJbml0IH0gZnJvbSAnLi9keW5hbWljSW5pdCc7XHJcbi8vIHVpIGRpYWxvZ3MgYW5kIG1lbnVzXHJcbi8vIERpYWxvZ3NcclxuaW1wb3J0IHsgU3VpRGlhbG9nQmFzZSwgY3JlYXRlQW5kRGlzcGxheURpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvZGlhbG9nJztcclxuaW1wb3J0IHsgU3VpQ29tcG9uZW50QWRhcHRlciwgU3VpRGlhbG9nQWRhcHRlckJhc2UgfSBmcm9tICcuLi91aS9kaWFsb2dzL2FkYXB0ZXInO1xyXG5pbXBvcnQgeyBTdWlHcmFjZU5vdGVBZGFwdGVyLCBTdWlHcmFjZU5vdGVEaWFsb2csIFN1aUdyYWNlTm90ZUJ1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuLi91aS9kaWFsb2dzL2dyYWNlbm90ZSc7XHJcbmltcG9ydCB7IFN1aU1vZGlmaWVyRGlhbG9nRmFjdG9yeSB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvZmFjdG9yeSc7XHJcbmltcG9ydCB7IFN1aVRyYW5zcG9zZVNjb3JlRGlhbG9nLCBTdWlUcmFuc3Bvc2VTY29yZUFkYXB0ZXIgfSBmcm9tICcuLi91aS9kaWFsb2dzL3RyYW5zcG9zZVNjb3JlJztcclxuaW1wb3J0IHsgU3VpTWVhc3VyZURpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvbWVhc3VyZUZvcm1hdCc7XHJcbmltcG9ydCB7IFN1aUluc2VydE1lYXN1cmVzIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9hZGRNZWFzdXJlJztcclxuaW1wb3J0IHsgU3VpSW5zdHJ1bWVudERpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvaW5zdHJ1bWVudCc7XHJcbmltcG9ydCB7IFN1aVRpbWVTaWduYXR1cmVEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL3RpbWVTaWduYXR1cmUnO1xyXG5pbXBvcnQgeyBTdWlUZW1wb0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvdGVtcG8nO1xyXG5pbXBvcnQgeyBTdWlOb3RlSGVhZEFkYXB0ZXIsIFN1aU5vdGVIZWFkRGlhbG9nLCBTdWlOb3RlSGVhZEJ1dHRvbkNvbXBvbmVudCwgU3VpU3RlbUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3VpL2RpYWxvZ3Mvbm90ZUhlYWQnO1xyXG5pbXBvcnQgeyBTdWlFbmRpbmdzQWRhcHRlciwgU3VpRW5kaW5nc0RpYWxvZywgZW5kaW5nc0J1dHRvbkZhY3RvcnksXHJcbiAgU3VpRW5kQmFyQnV0dG9uQ29tcG9uZW50LCBTdWlTdGFydEJhckJ1dHRvbkNvbXBvbmVudCwgU3VpUmVwZWF0U3ltYm9sQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9lbmRpbmdzJztcclxuaW1wb3J0IHsgU3VpU2NvcmVJZGVudGlmaWNhdGlvbkRpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3Mvc2NvcmVJZCc7XHJcbmltcG9ydCB7IFN1aVNjb3JlUHJlZmVyZW5jZXNEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL3ByZWZlcmVuY2VzJztcclxuaW1wb3J0IHsgU3VpUGFnZUxheW91dERpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvcGFnZUxheW91dCc7XHJcbmltcG9ydCB7IFN1aVRleHRCcmFja2V0RGlhbG9nIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy90ZXh0QnJhY2tldCc7XHJcbmltcG9ydCB7IFN1aVNjb3JlRm9udERpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvZm9udHMnO1xyXG5pbXBvcnQgeyBTdWlHbG9iYWxMYXlvdXREaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2dsb2JhbExheW91dCc7XHJcbmltcG9ydCB7IFN1aVNjb3JlVmlld0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3Mvc2NvcmVWaWV3JztpbXBvcnQgeyBTdWlMaWJyYXJ5RGlhbG9nIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9saWJyYXJ5JztcclxuaW1wb3J0IHsgU3VpQ2hvcmRDaGFuZ2VEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2Nob3JkQ2hhbmdlJztcclxuaW1wb3J0IHsgU3VpTHlyaWNEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2x5cmljJztcclxuaW1wb3J0IHsgU3VpVGV4dEJsb2NrRGlhbG9nLCBoZWxwTW9kYWwgfSBmcm9tICcuLi91aS9kaWFsb2dzL3RleHRCbG9jayc7XHJcbmltcG9ydCB7IFN1aUR5bmFtaWNNb2RpZmllckRpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvZHluYW1pY3MnO1xyXG5pbXBvcnQgeyBTdWlTbHVyQXR0cmlidXRlc0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3Mvc2x1cic7XHJcbmltcG9ydCB7IFN1aVBlZGFsTWFya2luZ0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvcGVkYWxNYXJraW5nJztcclxuaW1wb3J0IHsgU3VpVGllQXR0cmlidXRlc0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvdGllJztcclxuaW1wb3J0IHsgU3VpVm9sdGFBdHRyaWJ1dGVEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL3ZvbHRhJztcclxuaW1wb3J0IHsgU3VpSGFpcnBpbkF0dHJpYnV0ZXNEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2hhaXJwaW4nO1xyXG5pbXBvcnQgeyBTdWlTdGFmZkdyb3VwRGlhbG9nIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9zdGFmZkdyb3VwJztcclxuaW1wb3J0IHsgU3VpT3JuYW1lbnREaWFsb2csIFN1aU9ybmFtZW50QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9vcm5hbWVudCc7XHJcbmltcG9ydCB7IFN1aUFydGljdWxhdGlvbkRpYWxvZywgU3VpQXJ0aWN1bGF0aW9uQnV0dG9uQ29tcG9uZW50LCBTdWlBcnRpY3VsYXRpb25BZGFwdGVyIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9hcnRpY3VsYXRpb24nO1xyXG5pbXBvcnQgeyBTdWlNaWNyb3RvbmVBZGFwdGVyLCBTdWlNaWNyb3RvbmVCdXR0b25Db21wb25lbnQsIFN1aU1pY3JvdG9uZURpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvbWljcm90b25lcyc7XHJcbmltcG9ydCB7IFN1aUFycGVnZ2lvRGlhbG9nIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9hcnBlZ2dpbyc7XHJcbmltcG9ydCB7IFN1aUNsZWZDaGFuZ2VEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2NsZWZDaGFuZ2UnO1xyXG5pbXBvcnQgeyBTdWlQYXJ0SW5mb0RpYWxvZyB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvcGFydEluZm8nO1xyXG5pbXBvcnQgeyBTdWlMb2FkTXhtbERpYWxvZywgU3VpTG9hZEZpbGVEaWFsb2csXHJcbiAgICBTdWlQcmludEZpbGVEaWFsb2csIFN1aVNhdmVGaWxlRGlhbG9nLCBTdWlTYXZlWG1sRGlhbG9nLFxyXG4gICAgU3VpU2F2ZU1pZGlEaWFsb2csIFN1aVNhdmVWZXhEaWFsb2cgfSBmcm9tICcuLi91aS9kaWFsb2dzL2ZpbGVEaWFsb2dzJztcclxuICAgIC8vIERpYWxvZyBjb21wb25lbnRzXHJcblxyXG5pbXBvcnQgeyBTdWlUZXh0SW5wdXRDb21wb25lbnQsIFN1aVRleHRJbnB1dENvbXBvc2l0ZSwgU3VpUmVhZE9ubHlUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RleHRJbnB1dCc7XHJcbmltcG9ydCB7IFN1aURyb3Bkb3duQ29tcG9uZW50LCBTdWlEcm9wZG93bkNvbXBvc2l0ZSB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9kcm9wZG93bic7XHJcbmltcG9ydCB7IFN1aUJ1dHRvbkNvbXBvc2l0ZSwgU3VpQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2J1dHRvbic7XHJcbmltcG9ydCB7IFN1aUJ1dHRvbkFycmF5Q29tcG9uZW50LCBTdWlCdXR0b25BcnJheU1TQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2J1dHRvbkFycmF5JztcclxuaW1wb3J0IHsgU3VpVG9nZ2xlQ29tcG9uZW50LCBTdWlUb2dnbGVDb21wb3NpdGUgfSBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvdG9nZ2xlJztcclxuaW1wb3J0IHsgU3VpRmlsZURvd25sb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2ZpbGVEb3dubG9hZCc7XHJcbmltcG9ydCB7IFN1aVJvY2tlckNvbXBvbmVudCwgU3VpUm9ja2VyQ29tcG9zaXRlIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3JvY2tlcic7XHJcbmltcG9ydCB7IFN1aUZvbnRDb21wb25lbnQgfSBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvZm9udENvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1aVRleHRCbG9ja0NvbXBvbmVudCB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy90ZXh0SW5QbGFjZSc7XHJcbmltcG9ydCB7IFN1aVRyZWVDb21wb25lbnQgfSBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvdHJlZSc7XHJcbmltcG9ydCB7IFN1aVBpdGNoQXJyYXlDb21wb25lbnQsIFN1aVBpdGNoQXJyYXlDb21wb25lbnRUYWIsIFxyXG4gICBTdWlQaXRjaENvbXBvbmVudCwgU3VpUGl0Y2hDb21wb3NpdGUgfSBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvcGl0Y2gnO1xyXG5pbXBvcnQge1xyXG4gICAgU3VpTHlyaWNDb21wb25lbnQsIFN1aUNob3JkQ29tcG9uZW50LFxyXG4gICAgU3VpTm90ZVRleHRDb21wb25lbnRcclxufSBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvbm90ZVRleHQnO1xyXG5pbXBvcnQgeyBTdWlEcmFnVGV4dCB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9kcmFnVGV4dCc7XHJcbmltcG9ydCB7IFN1aVRleHRJblBsYWNlIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RleHRJblBsYWNlJztcclxuaW1wb3J0IHsgQ2hlY2tib3hEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9jaGVja2Ryb3AnO1xyXG5pbXBvcnQgeyBUaWVNYXBwaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RpZSc7XHJcbmltcG9ydCB7IFN0YWZmQWRkUmVtb3ZlQ29tcG9uZW50LFxyXG4gICAgU3RhZmZDaGVja0NvbXBvbmVudH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3N0YWZmQ29tcG9uZW50cyc7XHJcbmltcG9ydCB7IFN1aUtleVNpZ25hdHVyZURpYWxvZywgU3VpS2V5U2lnbmF0dXJlQWRhcHRlciB9IGZyb20gJy4uL3VpL2RpYWxvZ3Mva2V5U2lnbmF0dXJlJztcclxuaW1wb3J0IHsgVGV4dENoZWNrQ29tcG9uZW50IH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RleHRDaGVjayc7XHJcbi8vIG1lbnVzXHJcbmltcG9ydCB7IFN1aU1lbnVNYW5hZ2VyfSBmcm9tICcuLi91aS9tZW51cy9tYW5hZ2VyJztcclxuaW1wb3J0IHsgU3VpTWVudUJhc2UsIFN1aU1lbnVDdXN0b21pemVyIH0gZnJvbSAnLi4vdWkvbWVudXMvbWVudSc7XHJcbmltcG9ydCB7IFN1aVNjb3JlTWVudSB9IGZyb20gJy4uL3VpL21lbnVzL3Njb3JlJztcclxuaW1wb3J0IHsgU3VpVGV4dE1lbnUgfSBmcm9tICcuLi91aS9tZW51cy90ZXh0JztcclxuaW1wb3J0IHsgU3VpUGFydE1lbnUgfSBmcm9tICcuLi91aS9tZW51cy9wYXJ0cyc7XHJcbmltcG9ydCB7IFN1aVZvaWNlTWVudSB9IGZyb20gJy4uL3VpL21lbnVzL3ZvaWNlcyc7XHJcbmltcG9ydCB7IFN1aUJlYW1NZW51IH0gZnJvbSAnLi4vdWkvbWVudXMvYmVhbXMnO1xyXG5pbXBvcnQgeyBTdWlQYXJ0U2VsZWN0aW9uTWVudSB9IGZyb20gJy4uL3VpL21lbnVzL3BhcnRTZWxlY3Rpb24nO1xyXG5pbXBvcnQgeyBTdWlEeW5hbWljc01lbnUgfSBmcm9tICcuLi91aS9tZW51cy9keW5hbWljcyc7XHJcbmltcG9ydCB7IFN1aVRpbWVTaWduYXR1cmVNZW51IH0gZnJvbSAnLi4vdWkvbWVudXMvdGltZVNpZ25hdHVyZSc7XHJcbmltcG9ydCB7IFN1aUtleVNpZ25hdHVyZU1lbnUgfSBmcm9tICcuLi91aS9tZW51cy9rZXlTaWduYXR1cmUnO1xyXG5pbXBvcnQgeyBTdWlTdGFmZk1vZGlmaWVyTWVudSB9IGZyb20gJy4uL3VpL21lbnVzL3N0YWZmTW9kaWZpZXInO1xyXG5pbXBvcnQgeyBTdWlGaWxlTWVudSB9IGZyb20gJy4uL3VpL21lbnVzL2ZpbGUnO1xyXG5pbXBvcnQgeyBTdWlMYW5ndWFnZU1lbnUgfSBmcm9tICcuLi91aS9tZW51cy9sYW5ndWFnZSc7XHJcbmltcG9ydCB7IFNtb0xhbmd1YWdlLCBTbW9UcmFuc2xhdG9yIH0gZnJvbSAnLi4vdWkvaTE4bi9sYW5ndWFnZSc7XHJcbmltcG9ydCB7IFN1aU1lYXN1cmVNZW51IH0gZnJvbSAnLi4vdWkvbWVudXMvbWVhc3VyZSc7XHJcbmltcG9ydCB7IFN1aU5vdGVNZW51IH0gZnJvbSAnLi4vdWkvbWVudXMvbm90ZSc7XHJcbmltcG9ydCB7IFN1aVhockxvYWRlciB9IGZyb20gJy4uL3VpL2ZpbGVpby94aHJMb2FkZXInO1xyXG5pbXBvcnQgeyBQcm9taXNlSGVscGVycyB9IGZyb20gJy4uL2NvbW1vbi9wcm9taXNlSGVscGVycyc7XHJcbi8vIHJlbmRlciBsaWJyYXJ5XHJcbmltcG9ydCB7IFN1aVNjb3JlVmlldyB9IGZyb20gJy4uL3JlbmRlci9zdWkvc2NvcmVWaWV3JztcclxuaW1wb3J0IHsgU3VpU2NvcmVWaWV3T3BlcmF0aW9ucyB9IGZyb20gJy4uL3JlbmRlci9zdWkvc2NvcmVWaWV3T3BlcmF0aW9ucyc7XHJcbmltcG9ydCB7IFN1aVNjb3JlUmVuZGVyIH0gZnJvbSAnLi4vcmVuZGVyL3N1aS9zY29yZVJlbmRlcic7XHJcbmltcG9ydCB7IGxheW91dERlYnVnIH0gZnJvbSAnLi4vcmVuZGVyL3N1aS9sYXlvdXREZWJ1Zyc7XHJcbmltcG9ydCB7IFN1aU1hcHBlciB9IGZyb20gJy4uL3JlbmRlci9zdWkvbWFwcGVyJztcclxuaW1wb3J0IHsgU3VpU2Nyb2xsZXIgfSBmcm9tICcuLi9yZW5kZXIvc3VpL3Njcm9sbGVyJztcclxuaW1wb3J0IHsgU3ZnSGVscGVycyB9IGZyb20gJy4uL3JlbmRlci9zdWkvc3ZnSGVscGVycyc7XHJcblxyXG4vLyBhdWRpbyBsaWJyYXJ5XHJcbmltcG9ydCB7IFN1aUF1ZGlvUGxheWVyIH0gZnJvbSAnLi4vcmVuZGVyL2F1ZGlvL3BsYXllcic7XHJcbmltcG9ydCB7IFN1aU9zY2lsbGF0b3IsIFN1aVNhbXBsZXIsIFN1aVJldmVyYiB9IGZyb20gJy4uL3JlbmRlci9hdWRpby9vc2NpbGxhdG9yJztcclxuaW1wb3J0IHsgU3VpU2FtcGxlTWVkaWEgfSBmcm9tICcuLi9yZW5kZXIvYXVkaW8vc2FtcGxlcyc7XHJcblxyXG5cclxuLy8gU01PIG9iamVjdCBtb2RlbFxyXG5pbXBvcnQgeyBTbW9OYW1lc3BhY2UsIFNtb0R5bmFtaWNDdG9yLCBJc1BpdGNoTGV0dGVyIH0gZnJvbSAnLi4vc21vL2RhdGEvY29tbW9uJztcclxuaW1wb3J0IHsgU21vU2NvcmUsIGVuZ3JhdmluZ0ZvbnRUeXBlcywgaXNFbmdyYXZpbmdGb250IH0gZnJvbSAnLi4vc21vL2RhdGEvc2NvcmUnO1xyXG5pbXBvcnQgeyBVbmRvQnVmZmVyIH0gZnJvbSAnLi4vc21vL3hmb3JtL3VuZG8nO1xyXG5pbXBvcnQgeyBTbW9Ob3RlIH0gZnJvbSAnLi4vc21vL2RhdGEvbm90ZSc7XHJcbi8vIGltcG9ydCB7IFNtb0R1cmF0aW9uIH0gZnJvbSAnLi4vc21vL3hmb3JtL3RpY2tEdXJhdGlvbic7XHJcbmltcG9ydCB7IFNtb1N0YWZmSGFpcnBpbiwgU3RhZmZNb2RpZmllckJhc2UsIFNtb0luc3RydW1lbnQsIFNtb1NsdXIsIFNtb1RpZSwgU21vU3RhZmZUZXh0QnJhY2tldCxcclxuICBTbW9UYWJTdGF2ZSwgU21vUGVkYWxNYXJraW5nLCBzdGFmZk1vZGlmaWVyRHluYW1pY0N0b3JJbml0XHJcbiB9IGZyb20gJy4uL3Ntby9kYXRhL3N0YWZmTW9kaWZpZXJzJztcclxuaW1wb3J0IHsgU21vTWVhc3VyZSB9IGZyb20gJy4uL3Ntby9kYXRhL21lYXN1cmUnO1xyXG5pbXBvcnQgeyBTbW9NdXNpYyB9IGZyb20gJy4uL3Ntby9kYXRhL211c2ljJztcclxuaW1wb3J0IHsgU21vQXVkaW9QaXRjaCB9IGZyb20gJy4uL3Ntby9kYXRhL211c2ljJztcclxuaW1wb3J0IHsgU21vU2VsZWN0aW9uLCBTbW9TZWxlY3RvciB9IGZyb20gJy4uL3Ntby94Zm9ybS9zZWxlY3Rpb25zJztcclxuaW1wb3J0IHsgU21vQmVhbWVyIH0gZnJvbSAnLi4vc21vL3hmb3JtL2JlYW1lcnMnO1xyXG5pbXBvcnQgeyBTbW9Pcm5hbWVudCwgU21vQXJ0aWN1bGF0aW9uLCBTbW9EeW5hbWljVGV4dCwgU21vR3JhY2VOb3RlLCBTbW9NaWNyb3RvbmUsIFNtb0x5cmljLFxyXG4gIFNtb0FycGVnZ2lvLCBTbW9DbGVmQ2hhbmdlLCBub3RlTW9kaWZpZXJEeW5hbWljQ3RvckluaXQgfSBmcm9tICcuLi9zbW8vZGF0YS9ub3RlTW9kaWZpZXJzJztcclxuaW1wb3J0IHsgU21vU3lzdGVtU3RhZmYgfSBmcm9tICcuLi9zbW8vZGF0YS9zeXN0ZW1TdGFmZic7XHJcbmltcG9ydCB7IFNtb1N5c3RlbUdyb3VwLCBTbW9BdWRpb1BsYXllclNldHRpbmdzLCBTbW9TY29yZVByZWZlcmVuY2VzLCBzY29yZU1vZGlmaWVyRHluYW1pY0N0b3JJbml0IH0gZnJvbSAnLi4vc21vL2RhdGEvc2NvcmVNb2RpZmllcnMnO1xyXG5pbXBvcnQgeyBTbW9UZXh0R3JvdXAsIFNtb1RleHRHcm91cFBhcmFtcyB9IGZyb20gJy4uL3Ntby9kYXRhL3Njb3JlVGV4dCc7XHJcbmltcG9ydCB7IFNtb09wZXJhdGlvbiB9IGZyb20gJy4uL3Ntby94Zm9ybS9vcGVyYXRpb25zJztcclxuaW1wb3J0IHtcclxuICAgIFNtb1JlaGVhcnNhbE1hcmssIFNtb01lYXN1cmVGb3JtYXQsIFNtb0JhcmxpbmUsIFNtb1JlcGVhdFN5bWJvbCxcclxuICAgIFNtb1ZvbHRhLCBTbW9NZWFzdXJlVGV4dCwgU21vVGVtcG9UZXh0LCBUaW1lU2lnbmF0dXJlLCBtZWFzdXJlTW9kaWZpZXJEeW5hbWljQ3RvckluaXRcclxufSBmcm9tICcuLi9zbW8vZGF0YS9tZWFzdXJlTW9kaWZpZXJzJztcclxuaW1wb3J0IHsgU21vVG9YbWwgfSBmcm9tICcuLi9zbW8vbXhtbC9zbW9Ub1htbCc7XHJcbmltcG9ydCB7IE1pZGlUb1NtbyB9IGZyb20gJy4uL3Ntby9taWRpL21pZGlUb1Ntbyc7XHJcbmltcG9ydCB7IFNtb1RvTWlkaSB9IGZyb20gJy4uL3Ntby9taWRpL3Ntb1RvTWlkaSc7XHJcbmltcG9ydCB7IFhtbFRvU21vIH0gZnJvbSAnLi4vc21vL214bWwveG1sVG9TbW8nO1xyXG5pbXBvcnQgeyBTbW9Ub1ZleCB9IGZyb20gJy4uL3JlbmRlci92ZXgvdG9WZXgnO1xyXG4vLyB1dGlsaXRpZXNcclxuaW1wb3J0IHsgYnVpbGREb20sIGFkZEZpbGVMaW5rLCBJbnB1dFRyYXBwZXIsIGRyYWdnYWJsZSwgY2xvc2VEaWFsb2dQcm9taXNlLCBnZXREb21Db250YWluZXIsIGNyZWF0ZVRvcERvbUNvbnRhaW5lciB9IGZyb20gJy4uL2NvbW1vbi9odG1sSGVscGVycyc7XHJcblxyXG5pbXBvcnQgeyByZW5kZXJWZXhUZXN0cyB9IGZyb20gJy4vZ2VuZXJhdGVWZXhUZXN0cyc7XHJcbmltcG9ydCB7IFN1aUR1cmF0aW9uQWRhcHRlciwgU3VpRHVyYXRpb25CdXR0b25Db21wb25lbnQsIFN1aUR1cmF0aW9uRGlhbG9nIH0gZnJvbSAnLi4vdWkvZGlhbG9ncy9kdXJhdGlvbnMnO1xyXG5pbXBvcnQgeyBTdWlQaXRjaEFkYXB0ZXIsIFN1aVBpdGNoRGlhbG9nLCBTdWlMZXR0ZXJCdXR0b25Db21wb25lbnQsIFN1aUludGVydmFsQnV0dG9uQ29tcG9uZW50LCBTdWlUcmFuc3Bvc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi91aS9kaWFsb2dzL3BpdGNoJztcclxuY29uc3QgZ2V0Q2xhc3MgPSAoanNvblN0cmluZzogc3RyaW5nKSA9PiB7XHJcbiAgICByZXR1cm4gZXZhbCgnU21vLicgKyBqc29uU3RyaW5nKTtcclxufTtcclxuZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25maWd1cmF0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljSW5pdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZG9tJztcclxuZXhwb3J0ICogZnJvbSAnLi9ldmVudEhhbmRsZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2V4cG9ydHMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9jb21tb24vbWlkaS1wYXJzZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2dlbmVyYXRlVmV4VGVzdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2tleUNvbW1hbmRzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vY29tbW9uL2h0bWxIZWxwZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vY29tbW9uL3Byb21pc2VIZWxwZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vY29tbW9uL3RleHRmb3JtYXR0ZXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi9jb21tb24vdmV4JztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL2F1ZGlvL211c2ljQ3Vyc29yJztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL2F1ZGlvL29zY2lsbGF0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvYXVkaW8vcGxheWVyJztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL2F1ZGlvL3NhbXBsZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL2NvbmZpZ3VyYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL2Zvcm1hdHRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvbGF5b3V0RGVidWcnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL21hcHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvcGlhbm8nO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL3JlbmRlclN0YXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL3N1aS9zY29yZVJlbmRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvc2NvcmVWaWV3JztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL3N1aS9zY29yZVZpZXdPcGVyYXRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL3N1aS9zY3JvbGxlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvc3ZnSGVscGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvc3ZnUGFnZU1hcCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci9zdWkvdGV4dEVkaXQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL3RleHRSZW5kZXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvc3VpL3RyYWNrZXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvdmV4L2dseXBoRGltZW5zaW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci92ZXgvc21vQWRhcHRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci92ZXgvdG9WZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9yZW5kZXIvdmV4L3Z4TWVhc3VyZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3JlbmRlci92ZXgvdnhOb3RlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vcmVuZGVyL3ZleC92eFN5c3RlbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9kYXRhL2NvbW1vbic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9kYXRhL21lYXN1cmUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vZGF0YS9tZWFzdXJlTW9kaWZpZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL2RhdGEvbXVzaWMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vZGF0YS9ub3RlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL2RhdGEvbm90ZU1vZGlmaWVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9kYXRhL3BhcnRJbmZvJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL2RhdGEvc2NvcmUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vZGF0YS9zY29yZU1vZGlmaWVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9kYXRhL3Njb3JlVGV4dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9kYXRhL3N0YWZmTW9kaWZpZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL2RhdGEvc3lzdGVtU3RhZmYnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vZGF0YS90dXBsZXQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vbWlkaS9taWRpVG9TbW8nO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vbWlkaS9zbW9Ub01pZGknO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vbXhtbC9zbW9Ub1htbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9teG1sL3htbEhlbHBlcnMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8vbXhtbC94bWxTdGF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby9teG1sL3htbFRvU21vJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL3hmb3JtL2F1ZGlvVHJhY2snO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8veGZvcm0vYmVhbWVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby94Zm9ybS9jb3B5cGFzdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi9zbW8veGZvcm0vb3BlcmF0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby94Zm9ybS9zZWxlY3Rpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL3hmb3JtL3RpY2tEdXJhdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3Ntby94Zm9ybS90aWNrTWFwJztcclxuZXhwb3J0ICogZnJvbSAnLi4vc21vL3hmb3JtL3VuZG8nO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9idXR0b25zL2J1dHRvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2J1dHRvbnMvY29sbGFwc2FibGUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9idXR0b25zL2Rpc3BsYXknO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9idXR0b25zL3JpYmJvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2NvbW1vbic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2NvbmZpZ3VyYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2FkYXB0ZXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2FkZE1lYXN1cmUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2FycGVnZ2lvJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9hcnRpY3VsYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2F1ZGlvU2V0dGluZ3MnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2Nob3JkQ2hhbmdlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jbGVmQ2hhbmdlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2Jhc2VDb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2J1dHRvbkFycmF5JztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL2NoZWNrZHJvcCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9kcmFnVGV4dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9kcm9wZG93bic7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9maWxlRG93bmxvYWQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvZm9udENvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9ub3RlVGV4dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9waXRjaCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy9yb2NrZXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvc3RhZmZDb21wb25lbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RleHRDaGVjayc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy90ZXh0SW5QbGFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy90ZXh0SW5wdXQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2NvbXBvbmVudHMvdGllJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9jb21wb25lbnRzL3RvZ2dsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvY29tcG9uZW50cy90cmVlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9kaWFsb2cnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2R1cmF0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvZHluYW1pY3MnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2VuZGluZ3MnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2ZhY3RvcnknO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2ZpbGVEaWFsb2dzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9mb250cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvZ2xvYmFsTGF5b3V0JztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9ncmFjZW5vdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2hhaXJwaW4nO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2luc3RydW1lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL2tleVNpZ25hdHVyZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvbGlicmFyeSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvbHlyaWMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL21lYXN1cmVGb3JtYXQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL21pY3JvdG9uZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL25ld1BhcnQnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL25vdGVIZWFkJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9vcm5hbWVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvcGFnZUxheW91dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvcGFydEluZm8nO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3BlZGFsTWFya2luZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvcGl0Y2gnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3ByZWZlcmVuY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9zY29yZUlkJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy9zY29yZVZpZXcnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3NsdXInO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3N0YWZmR3JvdXAnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3RhYk5vdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9kaWFsb2dzL3RhYlN0YXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy90ZW1wbyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvdGV4dEJsb2NrJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy90ZXh0QnJhY2tldCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3MvdGllJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy90aW1lU2lnbmF0dXJlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZGlhbG9ncy90cmFuc3Bvc2VTY29yZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2RpYWxvZ3Mvdm9sdGEnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9ldmVudFNvdXJjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2V4Y2VwdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9maWxlaW8vZmlsZUlucHV0JztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvZmlsZWlvL2xpYnJhcnknO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9maWxlaW8veGhyTG9hZGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvaGVscCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL2kxOG4vbGFuZ3VhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9pMThuL3RyYW5zbGF0aW9uRWRpdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkva2V5QmluZGluZ3MvZGVmYXVsdC9lZGl0b3JLZXlzJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkva2V5QmluZGluZ3MvZGVmYXVsdC90cmFja2VyS2V5cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL21lbnVzL2JlYW1zJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvZHluYW1pY3MnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy9maWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMva2V5U2lnbmF0dXJlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvbGFuZ3VhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy9tYW5hZ2VyJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvbWVhc3VyZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL21lbnVzL21lbnUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy9ub3RlJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvcGFydHMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy9wYXJ0U2VsZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvc2NvcmUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy9zdGFmZk1vZGlmaWVyJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvbWVudXMvdGV4dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4uL3VpL21lbnVzL3RpbWVTaWduYXR1cmUnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9tZW51cy92b2ljZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9xd2VydHknO1xyXG5leHBvcnQgKiBmcm9tICcuLi91aS9yaWJib25MYXlvdXQvZGVmYXVsdC9kZWZhdWx0UmliYm9uJztcclxuZXhwb3J0ICogZnJvbSAnLi4vdWkvcmliYm9uTGF5b3V0L2RlZmF1bHQvdGFibGV0UmliYm9uJztcclxuXHJcbmV4cG9ydCBjb25zdCBTbW8gPSB7XHJcbiAgLy8gQXBwbGljYXRpb24tbGV2ZWwgY2xhc3Nlc1xyXG4gIFNtb0NvbmZpZ3VyYXRpb24sXHJcbiAgU3VpQXBwbGljYXRpb24sXHJcbiAgZHluYW1pY0N0b3JJbml0LFxyXG4gIHBhcnNlTWlkaSxcclxuICBTdWlEb20sICBTdWlFdmVudEhhbmRsZXIsIFN1aUV4Y2VwdGlvbkhhbmRsZXIsXHJcbiAgUXdlcnR5LCBTdWlIZWxwLCBTbW9UcmFuc2xhdGlvbkVkaXRvciwgTW9kYWxFdmVudEhhbmRsZXIsXHJcbiAgLy8gUmliYm9uIGJ1dHRvbnNcclxuICBzaW1wbGVSaWJib25MYXlvdXQsXHJcbiAgUmliYm9uQnV0dG9ucyxcclxuICBEaXNwbGF5U2V0dGluZ3MsICBFeHRlbmRlZENvbGxhcHNlUGFyZW50LCBDb2xsYXBzZVJpYmJvbkNvbnRyb2wsXHJcbiAgLy8gTWVudXNcclxuICBTdWlNZW51TWFuYWdlciwgU3VpTWVudUJhc2UsIFN1aU1lbnVDdXN0b21pemVyLCBTdWlTY29yZU1lbnUsIFN1aUZpbGVNZW51LFxyXG4gIFN1aUR5bmFtaWNzTWVudSwgU3VpVGltZVNpZ25hdHVyZU1lbnUsIFN1aUtleVNpZ25hdHVyZU1lbnUsIFN1aVN0YWZmTW9kaWZpZXJNZW51LFxyXG4gIFN1aUxhbmd1YWdlTWVudSwgU3VpTWVhc3VyZU1lbnUsIFN1aU5vdGVNZW51LCBTbW9MYW5ndWFnZSwgU21vVHJhbnNsYXRvciwgU3VpUGFydE1lbnUsXHJcbiAgU3VpUGFydFNlbGVjdGlvbk1lbnUsIFN1aVRleHRNZW51LCBTdWlWb2ljZU1lbnUsIFN1aUJlYW1NZW51LFxyXG4gIC8vIERpYWxvZ3NcclxuICBTdWlHcmFjZU5vdGVBZGFwdGVyLCBTdWlHcmFjZU5vdGVEaWFsb2csIFN1aUdyYWNlTm90ZUJ1dHRvbnNDb21wb25lbnQsXHJcbiAgU3VpRHVyYXRpb25BZGFwdGVyLCBTdWlEdXJhdGlvbkRpYWxvZywgU3VpRHVyYXRpb25CdXR0b25Db21wb25lbnQsXHJcbiAgU3VpQ29tcG9uZW50QWRhcHRlciwgU3VpRGlhbG9nQWRhcHRlckJhc2UsXHJcbiAgU3VpVGVtcG9EaWFsb2csIFN1aUluc3RydW1lbnREaWFsb2csIFN1aU1vZGlmaWVyRGlhbG9nRmFjdG9yeSwgU3VpTGlicmFyeURpYWxvZyxcclxuICBTdWlUZXh0QnJhY2tldERpYWxvZywgU3VpS2V5U2lnbmF0dXJlRGlhbG9nLCBTdWlLZXlTaWduYXR1cmVBZGFwdGVyLFxyXG4gIFN1aVNjb3JlVmlld0RpYWxvZywgU3VpR2xvYmFsTGF5b3V0RGlhbG9nLCBTdWlTY29yZUlkZW50aWZpY2F0aW9uRGlhbG9nLCBTdWlUcmFuc3Bvc2VTY29yZUFkYXB0ZXIsXHJcbiAgU3VpVHJhbnNwb3NlU2NvcmVEaWFsb2csXHJcbiAgU3VpU2NvcmVGb250RGlhbG9nLCBTdWlQYWdlTGF5b3V0RGlhbG9nLCBTdWlNZWFzdXJlRGlhbG9nLCBTdWlJbnNlcnRNZWFzdXJlcyxcclxuICBTdWlUaW1lU2lnbmF0dXJlRGlhbG9nLFN1aVRleHRCbG9ja0RpYWxvZywgU3VpTHlyaWNEaWFsb2csIFN1aUNob3JkQ2hhbmdlRGlhbG9nLFxyXG4gIFN1aVNsdXJBdHRyaWJ1dGVzRGlhbG9nLCBTdWlQZWRhbE1hcmtpbmdEaWFsb2csIFN1aVRpZUF0dHJpYnV0ZXNEaWFsb2csIFN1aVZvbHRhQXR0cmlidXRlRGlhbG9nLFxyXG4gIFN1aUhhaXJwaW5BdHRyaWJ1dGVzRGlhbG9nLCBTdWlTdGFmZkdyb3VwRGlhbG9nLCBoZWxwTW9kYWwsXHJcbiAgU3VpTG9hZEZpbGVEaWFsb2csIFN1aUxvYWRNeG1sRGlhbG9nLCBTdWlTY29yZVByZWZlcmVuY2VzRGlhbG9nLFxyXG4gIFN1aVBhcnRJbmZvRGlhbG9nLCBTdWlPcm5hbWVudERpYWxvZywgU3VpT3JuYW1lbnRCdXR0b25Db21wb25lbnQsIFxyXG4gIFN1aUFydGljdWxhdGlvbkRpYWxvZywgU3VpQXJ0aWN1bGF0aW9uQnV0dG9uQ29tcG9uZW50LCBTdWlBcnRpY3VsYXRpb25BZGFwdGVyLFxyXG4gIFN1aU1pY3JvdG9uZUFkYXB0ZXIsIFN1aU1pY3JvdG9uZUJ1dHRvbkNvbXBvbmVudCwgU3VpTWljcm90b25lRGlhbG9nLFxyXG4gIFN1aU5vdGVIZWFkQWRhcHRlciwgU3VpTm90ZUhlYWREaWFsb2csIFN1aVN0ZW1CdXR0b25Db21wb25lbnQsIFN1aU5vdGVIZWFkQnV0dG9uQ29tcG9uZW50LCAgICBcclxuICBTdWlFbmRpbmdzQWRhcHRlciwgU3VpRW5kaW5nc0RpYWxvZywgZW5kaW5nc0J1dHRvbkZhY3RvcnksXHJcbiAgU3VpRW5kQmFyQnV0dG9uQ29tcG9uZW50LCBTdWlTdGFydEJhckJ1dHRvbkNvbXBvbmVudCwgU3VpUmVwZWF0U3ltYm9sQnV0dG9uQ29tcG9uZW50LCAgICBcclxuICBTdWlQcmludEZpbGVEaWFsb2csIFN1aVNhdmVGaWxlRGlhbG9nLCBTdWlTYXZlWG1sRGlhbG9nLCBTdWlTYXZlVmV4RGlhbG9nLFxyXG4gIFN1aVNhdmVNaWRpRGlhbG9nLCBTdWlEaWFsb2dCYXNlLCBjcmVhdGVBbmREaXNwbGF5RGlhbG9nLCBcclxuICBTdWlQaXRjaERpYWxvZywgU3VpUGl0Y2hBZGFwdGVyLFN1aUludGVydmFsQnV0dG9uQ29tcG9uZW50LCBTdWlMZXR0ZXJCdXR0b25Db21wb25lbnQsXHJcbiAgU3VpVHJhbnNwb3NlQnV0dG9uQ29tcG9uZW50LFxyXG4gIC8vIERpYWxvZyBjb21wb25lbnRzXHJcbiAgU3VpVHJlZUNvbXBvbmVudCxcclxuICBTdWlEcm9wZG93bkNvbXBvbmVudCxcclxuICBTdWlSb2NrZXJDb21wb25lbnQsIFN1aUZpbGVEb3dubG9hZENvbXBvbmVudCwgU3VpQnV0dG9uQXJyYXlDb21wb25lbnQsIFN1aUJ1dHRvbkFycmF5TVNDb21wb25lbnQsXHJcbiAgU3VpVG9nZ2xlQ29tcG9uZW50LCBTdWlCdXR0b25Db21wb25lbnQsIFN1aURyb3Bkb3duQ29tcG9zaXRlLFxyXG4gIFN1aVRvZ2dsZUNvbXBvc2l0ZSwgU3VpQnV0dG9uQ29tcG9zaXRlLCBTdWlSb2NrZXJDb21wb3NpdGUsIFN1aVRleHRJbnB1dENvbXBvc2l0ZSxcclxuICBTdWlGb250Q29tcG9uZW50LCBTdWlUZXh0SW5QbGFjZSwgU3VpTHlyaWNDb21wb25lbnQsIFN1aUNob3JkQ29tcG9uZW50LCBTdWlEcmFnVGV4dCxcclxuICBTdWlOb3RlVGV4dENvbXBvbmVudCwgU3VpVGV4dEJsb2NrQ29tcG9uZW50LCBTdWlUZXh0SW5wdXRDb21wb25lbnQsIFN1aVJlYWRPbmx5VGV4dENvbXBvbmVudCxcclxuICBTdWlEeW5hbWljTW9kaWZpZXJEaWFsb2csIENoZWNrYm94RHJvcGRvd25Db21wb25lbnQsIFRpZU1hcHBpbmdDb21wb25lbnQsIFN0YWZmQWRkUmVtb3ZlQ29tcG9uZW50LFxyXG4gIFN0YWZmQ2hlY2tDb21wb25lbnQsIFRleHRDaGVja0NvbXBvbmVudCwgU3VpQXJwZWdnaW9EaWFsb2csIFN1aUNsZWZDaGFuZ2VEaWFsb2csXHJcbiAgU3VpUGl0Y2hBcnJheUNvbXBvbmVudCwgU3VpUGl0Y2hBcnJheUNvbXBvbmVudFRhYiwgU3VpUGl0Y2hDb21wb25lbnQsXHJcblxyXG5TdWlQaXRjaENvbXBvc2l0ZSwgXHJcbiAgU3VpWGhyTG9hZGVyLFByb21pc2VIZWxwZXJzLFxyXG4gIC8vIFJlbmRlcmluZyBjb21wb25lbnRzXHJcbiAgU3VpUGlhbm8sIGxheW91dERlYnVnLCBTdWlTY29yZVZpZXcsU3VpU2Nyb2xsZXIsIFN2Z0hlbHBlcnMsIFN1aU1hcHBlciwgU3VpU2NvcmVSZW5kZXIsXHJcbiAgU3VpU2NvcmVWaWV3T3BlcmF0aW9ucywgVGV4dEZvcm1hdHRlciwgVmV4RmxvdyxcclxuXHJcbiAgLy8gQXVkaW8gY29tcG9uZW50c1xyXG4gIFN1aUF1ZGlvUGxheWVyLCBTdWlPc2NpbGxhdG9yLCBTdWlTYW1wbGVNZWRpYSwgU3VpU2FtcGxlciwgU3VpUmV2ZXJiLFxyXG5cclxuICAvLyBTbW8gTXVzaWMgT2JqZWN0c1xyXG4gIFNtb1Njb3JlLCAgU21vU2NvcmVQcmVmZXJlbmNlcywgc2NvcmVNb2RpZmllckR5bmFtaWNDdG9ySW5pdCwgIGVuZ3JhdmluZ0ZvbnRUeXBlcywgaXNFbmdyYXZpbmdGb250LFxyXG4gIFhtbFRvU21vLCAgU21vVG9YbWwsICBNaWRpVG9TbW8sICBTbW9Ub01pZGksICBTbW9NdXNpYywgIFNtb0F1ZGlvUGl0Y2gsICBTbW9NZWFzdXJlLCAgU21vTmFtZXNwYWNlLCBTbW9EeW5hbWljQ3RvcixcclxuICBTbW9TeXN0ZW1TdGFmZiwgIFNtb05vdGUsIElzUGl0Y2hMZXR0ZXIsXHJcbiAgLy8gc3RhZmYgbW9kaWZpZXJcclxuICBTbW9TdGFmZkhhaXJwaW4sIFN0YWZmTW9kaWZpZXJCYXNlLCAgU21vU3RhZmZUZXh0QnJhY2tldCwgc3RhZmZNb2RpZmllckR5bmFtaWNDdG9ySW5pdCxcclxuICBTbW9JbnN0cnVtZW50LCBTbW9TbHVyLCBTbW9QZWRhbE1hcmtpbmcsIFNtb1RpZSwgU21vVGFiU3RhdmUsIFxyXG4gIC8vIHNjb3JlIG1vZGlmaWVyc1xyXG4gIFNtb1N5c3RlbUdyb3VwLCBTbW9BdWRpb1BsYXllclNldHRpbmdzLCBTbW9UZXh0R3JvdXAsXHJcbiAgLy8gbWVhc3VyZSBtb2RpZmllcnNcclxuICBTbW9SZWhlYXJzYWxNYXJrLCBTbW9NZWFzdXJlRm9ybWF0LCBTbW9CYXJsaW5lLCBTbW9SZXBlYXRTeW1ib2wsICBTbW9Wb2x0YSwgU21vTWVhc3VyZVRleHQsIFNtb1RlbXBvVGV4dCwgVGltZVNpZ25hdHVyZSxcclxuICBtZWFzdXJlTW9kaWZpZXJEeW5hbWljQ3RvckluaXQsXHJcbiAgLy8gbm90ZSBtb2RpZmllcnNcclxuICBTbW9Pcm5hbWVudCwgbm90ZU1vZGlmaWVyRHluYW1pY0N0b3JJbml0LFxyXG4gIFNtb0FydGljdWxhdGlvbiwgU21vRHluYW1pY1RleHQsIFNtb0dyYWNlTm90ZSwgU21vTWljcm90b25lLCBTbW9MeXJpYywgU21vQXJwZWdnaW8sIFNtb0NsZWZDaGFuZ2UsXHJcbiAgLy8gU21vIFRyYW5zZm9ybWVyc1xyXG4gIFNtb1NlbGVjdGlvbiwgU21vU2VsZWN0b3IsIC8qU21vRHVyYXRpb24sKi8gVW5kb0J1ZmZlciwgU21vVG9WZXgsIFNtb09wZXJhdGlvbiwgU21vQmVhbWVyLFxyXG4gIC8vIG5ldyBzY29yZSBib290c3RyYXBcclxuICAvLyBoZWxwIHN0cmluZ3NcclxuICBjYXJkS2V5c0h0bWxFbiwgY2FyZE5vdGVzTGV0dGVySHRtbEVuLCBjYXJkTm90ZXNDaHJvbWF0aWNIdG1sRW4sIGNhcmROb3Rlc0Nob3Jkc0h0bWxFbixcclxuICAgIGNhcmROb3Rlc1Jlc3RzSHRtbEVuLCBjYXJkRHVyYXRpb25Ob3Rlc0h0bWxFbiwgY2FyZER1cmF0aW9uVHVwbGV0c0h0bWxFbixcclxuICAgIGNhcmRTZWxlY3Rpb25zTm90ZXNIdG1sRW4sIGNhcmRTZWxlY3Rpb25zTW9kaWZpZXJzSHRtbEVuLCBjYXJkU2VsZWN0aW9uc05vblNlbGVjdGFibGVIdG1sRW4sIGNhcmRTZWxlY3Rpb25zU2xhc2hIdG1sRW4sXHJcbiAgICBjYXJkQmVhbXNBbmRTdGVtc0RpcmVjdGlvbkh0bWxFbiwgY2FyZEJlYW1zQW5kU3RlbXNHcm91cGluZ0h0bWxFbixcclxuICAgIGNhcmRNZWFzdXJlc0FkZERlbGV0ZUh0bWxFbiwgY2FyZFZvaWNlc0NyZWF0ZURlbGV0ZUh0bWxFbiwgY2FyZFBhcnRBZGREZWxldGVIdG1sRW4sXHJcbiAgICBnZXRDbGFzcyxcclxuICAvLyB1dGlsaXRpZXNcclxuICBidWlsZERvbSwgYWRkRmlsZUxpbmssIElucHV0VHJhcHBlciwgZHJhZ2dhYmxlLCBjbG9zZURpYWxvZ1Byb21pc2UsIGdldERvbUNvbnRhaW5lciwgY3JlYXRlVG9wRG9tQ29udGFpbmVyLFxyXG4gIHJlbmRlclZleFRlc3RzXHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgU21vOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/application/exports.ts\n");
|
|
96
96
|
|
|
97
97
|
/***/ }),
|
|
98
98
|
|
|
@@ -202,7 +202,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
202
202
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
203
203
|
|
|
204
204
|
"use strict";
|
|
205
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ defaultAudioAnimationHandler: () => (/* binding */ defaultAudioAnimationHandler),\n/* harmony export */ defaultClearAudioAnimationHandler: () => (/* binding */ defaultClearAudioAnimationHandler)\n/* harmony export */ });\n/* harmony import */ var _smo_xform_selections__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../smo/xform/selections */ \"./src/smo/xform/selections.ts\");\n/* harmony import */ var _sui_svgHelpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../sui/svgHelpers */ \"./src/render/sui/svgHelpers.ts\");\n/* harmony import */ var _sui_layoutDebug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../sui/layoutDebug */ \"./src/render/sui/layoutDebug.ts\");\n\n\n\nconst defaultClearAudioAnimationHandler = (delay) => {\n if (delay < 1) {\n const ell = document.getElementById('vf-music-cursor');\n if (ell) {\n ell.remove();\n }\n }\n else {\n setTimeout(() => {\n defaultClearAudioAnimationHandler(0);\n }, delay);\n }\n};\n/**\n * default implementation of playback animation.\n * @category SuiAudio\n * @returns\n */\nconst defaultAudioAnimationHandler = (view, selector, offsetPct, durationPct) => {\n var _a, _b;\n const score = view.renderer.score;\n if (!score) {\n return;\n }\n const scroller = view.scroller;\n const renderer = view.renderer;\n // Get note from 0th staff if we can\n const measureSel = _smo_xform_selections__WEBPACK_IMPORTED_MODULE_0__.SmoSelection.measureSelection(score, score.staves.length - 1, selector.measure);\n const zmeasureSel = _smo_xform_selections__WEBPACK_IMPORTED_MODULE_0__.SmoSelection.measureSelection(score, 0, selector.measure);\n const measure = measureSel === null || measureSel === void 0 ? void 0 : measureSel.measure;\n if (measure.svg.logicalBox && ((_b = (_a = zmeasureSel === null || zmeasureSel === void 0 ? void 0 : zmeasureSel.measure) === null || _a === void 0 ? void 0 : _a.svg) === null || _b === void 0 ? void 0 : _b.logicalBox)) {\n const context = renderer.pageMap.getRenderer(measure.svg.logicalBox);\n const topBox = _sui_svgHelpers__WEBPACK_IMPORTED_MODULE_1__.SvgHelpers.smoBox(zmeasureSel.measure.svg.logicalBox);\n topBox.y -= context.box.y;\n const botBox = _sui_svgHelpers__WEBPACK_IMPORTED_MODULE_1__.SvgHelpers.smoBox(measure.svg.logicalBox);\n botBox.y -= context.box.y;\n const height = (botBox.y + botBox.height) - topBox.y;\n const measureWidth = botBox.width - measure.svg.adjX;\n const nhWidth = 10 / score.layoutManager.getGlobalLayout().svgScale;\n let width = measureWidth * durationPct - 10 / score.layoutManager.getGlobalLayout().svgScale;\n width = Math.max(nhWidth, width);\n const y = topBox.y;\n let x = topBox.x + measure.svg.adjX + offsetPct * measureWidth;\n const noteBox = score.staves[selector.staff].measures[selector.measure].voices[selector.voice].notes[selector.tick];\n if (noteBox && noteBox.logicalBox) {\n x = noteBox.logicalBox.x;\n }\n const screenBox = _sui_svgHelpers__WEBPACK_IMPORTED_MODULE_1__.SvgHelpers.boxPoints(x, y, width, height);\n const fillParams = {};\n fillParams['fill-opacity'] = '0.5';\n fillParams['fill'] = '#4444ff';\n const ctx = context.getContext();\n defaultClearAudioAnimationHandler(0);\n ctx.save();\n ctx.openGroup('music-cursor', 'music-cursor');\n ctx.rect(x, screenBox.y, width, screenBox.height, fillParams);\n ctx.closeGroup();\n ctx.restore();\n _sui_layoutDebug__WEBPACK_IMPORTED_MODULE_2__.layoutDebug.updatePlayDebug(selector, measure.svg.logicalBox);\n scroller.scrollVisibleBox(zmeasureSel.measure.svg.logicalBox);\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RSxVQUFVLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakIsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2QseURBQVcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU21vLy4vc3JjL3JlbmRlci9hdWRpby9tdXNpY0N1cnNvci50cz83NTA5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNtb1NlbGVjdG9yLCBTbW9TZWxlY3Rpb24gfSBmcm9tICcuLi8uLi9zbW8veGZvcm0vc2VsZWN0aW9ucyc7XHJcbmltcG9ydCB7IFN1aVNjb3JlVmlldyB9IGZyb20gJy4uL3N1aS9zY29yZVZpZXcnO1xyXG5pbXBvcnQgeyBTdmdIZWxwZXJzIH0gZnJvbSAnLi4vc3VpL3N2Z0hlbHBlcnMnO1xyXG5pbXBvcnQgeyBTbW9NZWFzdXJlIH0gZnJvbSAnLi4vLi4vc21vL2RhdGEvbWVhc3VyZSc7XHJcbmltcG9ydCB7IGxheW91dERlYnVnIH0gZnJvbSAnLi4vc3VpL2xheW91dERlYnVnJztcclxuXHJcbi8qKlxyXG4gKiBBIGdlbmVyaWMgZnVuY3Rpb24gdGhhdCBjYW4gYmUgc2VudCB1c2VkIHRvIGFuaW1hdGUgcGxheWJhY2tcclxuICovXHJcbmV4cG9ydCB0eXBlIEF1ZGlvQW5pbWF0aW9uSGFuZGxlciA9ICh2aWV3OiBTdWlTY29yZVZpZXcsIHNlbGVjdG9yOiBTbW9TZWxlY3Rvciwgb2Zmc2V0UGN0OiBudW1iZXIsIGR1cmF0aW9uUGN0OiBudW1iZXIpID0+IHZvaWQ7XHJcbi8qKlxyXG4gKiBBIGdlbmVyaWMgZnVuY3Rpb24gdGhhdCBjYW4gYmUgc2VudCB1c2VkIHRvIGNsZWFuIHVwIHBsYXliYWNrIGFuaW1hdGlvblxyXG4gKi9cclxuZXhwb3J0IHR5cGUgQ2xlYXJBdWRpb0FuaW1hdGlvbkhhbmRsZXIgPSAoZGVsYXk6IG51bWJlcikgPT4gdm9pZDtcclxuXHJcbi8qKlxyXG4gKiBBbGxvdyB1c2VycyB0byBzcGVjaWZ5IHRoZWlyIG93biBtdXNpYyBwbGF5YmFjayBhbmltYXRpb25zLlxyXG4gKiBAY2F0ZWdvcnkgU3VpQXVkaW9cclxuKi9cclxuZXhwb3J0IGludGVyZmFjZSBTdWlBdWRpb0FuaW1hdGlvblBhcmFtcyB7XHJcbiAgYXVkaW9BbmltYXRpb25IYW5kbGVyOiBBdWRpb0FuaW1hdGlvbkhhbmRsZXIsXHJcbiAgY2xlYXJBdWRpb0FuaW1hdGlvbkhhbmRsZXI6IENsZWFyQXVkaW9BbmltYXRpb25IYW5kbGVyXHJcbn1cclxuZXhwb3J0IGNvbnN0ICBkZWZhdWx0Q2xlYXJBdWRpb0FuaW1hdGlvbkhhbmRsZXIgPSAoZGVsYXk6IG51bWJlcikgPT4ge1xyXG4gIGlmIChkZWxheSA8IDEpIHtcclxuICAgIGNvbnN0IGVsbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2Zi1tdXNpYy1jdXJzb3InKTtcclxuICAgIGlmIChlbGwpIHtcclxuICAgICAgZWxsLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZGVmYXVsdENsZWFyQXVkaW9BbmltYXRpb25IYW5kbGVyKDApO1xyXG4gICAgfSwgZGVsYXkpO1xyXG4gIH1cclxufVxyXG4gLyoqXHJcbiAgICogZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBwbGF5YmFjayBhbmltYXRpb24uXHJcbiAgICogQGNhdGVnb3J5IFN1aUF1ZGlvXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiBleHBvcnQgY29uc3QgZGVmYXVsdEF1ZGlvQW5pbWF0aW9uSGFuZGxlciA9ICh2aWV3OiBTdWlTY29yZVZpZXcsIHNlbGVjdG9yOiBTbW9TZWxlY3Rvciwgb2Zmc2V0UGN0OiBudW1iZXIsIGR1cmF0aW9uUGN0OiBudW1iZXIpID0+IHtcclxuICBjb25zdCBzY29yZSA9IHZpZXcucmVuZGVyZXIuc2NvcmU7XHJcbiAgXHJcbiAgaWYgKCFzY29yZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBjb25zdCBzY3JvbGxlciA9IHZpZXcuc2Nyb2xsZXI7XHJcbiAgY29uc3QgcmVuZGVyZXIgPSB2aWV3LnJlbmRlcmVyO1xyXG4gIC8vIEdldCBub3RlIGZyb20gMHRoIHN0YWZmIGlmIHdlIGNhblxyXG4gIGNvbnN0IG1lYXN1cmVTZWwgPSBTbW9TZWxlY3Rpb24ubWVhc3VyZVNlbGVjdGlvbihzY29yZSxcclxuICAgIHNjb3JlLnN0YXZlcy5sZW5ndGggLSAxLCBzZWxlY3Rvci5tZWFzdXJlKTtcclxuICBjb25zdCB6bWVhc3VyZVNlbCA9IFNtb1NlbGVjdGlvbi5tZWFzdXJlU2VsZWN0aW9uKHNjb3JlLFxyXG4gICAgMCwgc2VsZWN0b3IubWVhc3VyZSk7XHJcbiAgY29uc3QgbWVhc3VyZSA9IG1lYXN1cmVTZWw/Lm1lYXN1cmUgYXMgU21vTWVhc3VyZTtcclxuICBpZiAobWVhc3VyZS5zdmcubG9naWNhbEJveCAmJiB6bWVhc3VyZVNlbD8ubWVhc3VyZT8uc3ZnPy5sb2dpY2FsQm94KSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gcmVuZGVyZXIucGFnZU1hcC5nZXRSZW5kZXJlcihtZWFzdXJlLnN2Zy5sb2dpY2FsQm94KTtcclxuICAgIGNvbnN0IHRvcEJveCA9IFN2Z0hlbHBlcnMuc21vQm94KHptZWFzdXJlU2VsLm1lYXN1cmUuc3ZnLmxvZ2ljYWxCb3gpO1xyXG4gICAgdG9wQm94LnkgLT0gY29udGV4dC5ib3gueTtcclxuICAgIGNvbnN0IGJvdEJveCA9IFN2Z0hlbHBlcnMuc21vQm94KG1lYXN1cmUuc3ZnLmxvZ2ljYWxCb3gpO1xyXG4gICAgYm90Qm94LnkgLT0gY29udGV4dC5ib3gueTtcclxuICAgIGNvbnN0IGhlaWdodCA9IChib3RCb3gueSArIGJvdEJveC5oZWlnaHQpIC0gdG9wQm94Lnk7XHJcbiAgICBjb25zdCBtZWFzdXJlV2lkdGggPSBib3RCb3gud2lkdGggLSBtZWFzdXJlLnN2Zy5hZGpYO1xyXG4gICAgY29uc3QgbmhXaWR0aCA9IDEwIC8gc2NvcmUubGF5b3V0TWFuYWdlciEuZ2V0R2xvYmFsTGF5b3V0KCkuc3ZnU2NhbGU7XHJcbiAgICBsZXQgd2lkdGggPSBtZWFzdXJlV2lkdGggKiBkdXJhdGlvblBjdCAtIDEwIC8gc2NvcmUubGF5b3V0TWFuYWdlciEuZ2V0R2xvYmFsTGF5b3V0KCkuc3ZnU2NhbGU7XHJcbiAgICB3aWR0aCA9IE1hdGgubWF4KG5oV2lkdGgsIHdpZHRoKTtcclxuICAgIGNvbnN0IHkgPSB0b3BCb3gueTtcclxuICAgIGxldCB4ID0gdG9wQm94LnggKyBtZWFzdXJlLnN2Zy5hZGpYICsgb2Zmc2V0UGN0ICogbWVhc3VyZVdpZHRoO1xyXG4gICAgY29uc3Qgbm90ZUJveCA9IHNjb3JlLnN0YXZlc1tzZWxlY3Rvci5zdGFmZl0ubWVhc3VyZXNbc2VsZWN0b3IubWVhc3VyZV0udm9pY2VzW3NlbGVjdG9yLnZvaWNlXS5ub3Rlc1tzZWxlY3Rvci50aWNrXTtcclxuICAgIGlmIChub3RlQm94ICYmIG5vdGVCb3gubG9naWNhbEJveCkge1xyXG4gICAgICB4ID0gbm90ZUJveC5sb2dpY2FsQm94Lng7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JlZW5Cb3ggPSBTdmdIZWxwZXJzLmJveFBvaW50cyh4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcclxuICAgIGNvbnN0IGZpbGxQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcclxuICAgIGZpbGxQYXJhbXNbJ2ZpbGwtb3BhY2l0eSddID0gJzAuNSc7XHJcbiAgICBmaWxsUGFyYW1zWydmaWxsJ10gPSAnIzQ0NDRmZic7XHJcbiAgICBjb25zdCBjdHggPSBjb250ZXh0LmdldENvbnRleHQoKTtcclxuICAgIGRlZmF1bHRDbGVhckF1ZGlvQW5pbWF0aW9uSGFuZGxlcigwKTtcclxuICAgIGN0eC5zYXZlKCk7XHJcbiAgICBjdHgub3Blbkdyb3VwKCdtdXNpYy1jdXJzb3InLCAnbXVzaWMtY3Vyc29yJyk7XHJcbiAgICBjdHgucmVjdCh4LCBzY3JlZW5Cb3gueSwgd2lkdGgsIHNjcmVlbkJveC5oZWlnaHQsIGZpbGxQYXJhbXMpO1xyXG4gICAgY3R4LmNsb3NlR3JvdXAoKTtcclxuICAgIGN0eC5yZXN0b3JlKCk7XHJcbiAgICBsYXlvdXREZWJ1Zy51cGRhdGVQbGF5RGVidWcoc2VsZWN0b3IsIG1lYXN1cmUuc3ZnLmxvZ2ljYWxCb3gpO1xyXG4gICAgc2Nyb2xsZXIuc2Nyb2xsVmlzaWJsZUJveCh6bWVhc3VyZVNlbC5tZWFzdXJlLnN2Zy5sb2dpY2FsQm94KTsgICAgICAgIFxyXG4gIH1cclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/render/audio/musicCursor.ts\n");
|
|
205
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ defaultAudioAnimationHandler: () => (/* binding */ defaultAudioAnimationHandler),\n/* harmony export */ defaultClearAudioAnimationHandler: () => (/* binding */ defaultClearAudioAnimationHandler)\n/* harmony export */ });\n/* harmony import */ var _smo_xform_selections__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../smo/xform/selections */ \"./src/smo/xform/selections.ts\");\n/* harmony import */ var _sui_svgHelpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../sui/svgHelpers */ \"./src/render/sui/svgHelpers.ts\");\n/* harmony import */ var _sui_layoutDebug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../sui/layoutDebug */ \"./src/render/sui/layoutDebug.ts\");\n\n\n\nconst defaultClearAudioAnimationHandler = (delay) => {\n if (delay < 1) {\n const ell = document.getElementById('vf-music-cursor');\n if (ell) {\n ell.remove();\n }\n }\n else {\n setTimeout(() => {\n defaultClearAudioAnimationHandler(0);\n }, delay);\n }\n};\n/**\n * default implementation of playback animation.\n * @category SuiAudio\n * @returns\n */\nconst defaultAudioAnimationHandler = (view, selector, offsetPct, durationPct) => {\n var _a, _b;\n const score = view.renderer.score;\n if (!score) {\n return;\n }\n const scroller = view.scroller;\n const renderer = view.renderer;\n // Get note from 0th staff if we can\n const measureSel = _smo_xform_selections__WEBPACK_IMPORTED_MODULE_0__.SmoSelection.measureSelection(score, score.staves.length - 1, selector.measure);\n const zmeasureSel = _smo_xform_selections__WEBPACK_IMPORTED_MODULE_0__.SmoSelection.measureSelection(score, 0, selector.measure);\n const measure = measureSel === null || measureSel === void 0 ? void 0 : measureSel.measure;\n if (measure.svg.logicalBox && ((_b = (_a = zmeasureSel === null || zmeasureSel === void 0 ? void 0 : zmeasureSel.measure) === null || _a === void 0 ? void 0 : _a.svg) === null || _b === void 0 ? void 0 : _b.logicalBox)) {\n const context = renderer.pageMap.getRenderer(measure.svg.logicalBox);\n const topBox = _sui_svgHelpers__WEBPACK_IMPORTED_MODULE_1__.SvgHelpers.smoBox(zmeasureSel.measure.svg.logicalBox);\n topBox.y -= context.box.y;\n const botBox = _sui_svgHelpers__WEBPACK_IMPORTED_MODULE_1__.SvgHelpers.smoBox(measure.svg.logicalBox);\n botBox.y -= context.box.y;\n const height = (botBox.y + botBox.height) - topBox.y;\n const measureWidth = botBox.width - measure.svg.adjX;\n const nhWidth = 10 / score.layoutManager.getGlobalLayout().svgScale;\n let width = measureWidth * durationPct - 10 / score.layoutManager.getGlobalLayout().svgScale;\n width = Math.max(nhWidth, width);\n const y = topBox.y;\n let x = topBox.x + measure.svg.adjX + offsetPct * measureWidth;\n const noteBox = score.staves[selector.staff].measures[selector.measure].voices[selector.voice].notes[selector.tick];\n if (noteBox && noteBox.logicalBox) {\n x = noteBox.logicalBox.x;\n }\n const screenBox = _sui_svgHelpers__WEBPACK_IMPORTED_MODULE_1__.SvgHelpers.boxPoints(x, y, width, height);\n const fillParams = {};\n fillParams['fill-opacity'] = '0.5';\n fillParams['fill'] = '#4444ff';\n const ctx = context.getContext();\n defaultClearAudioAnimationHandler(0);\n ctx.save();\n ctx.openGroup('music-cursor', 'music-cursor');\n ctx.rect(x, screenBox.y, width, screenBox.height, fillParams);\n ctx.closeGroup();\n ctx.restore();\n _sui_layoutDebug__WEBPACK_IMPORTED_MODULE_2__.layoutDebug.updatePlayDebug(selector, measure.svg.logicalBox);\n if (view.score.preferences.autoScrollPlayback) {\n scroller.scrollVisibleBox(zmeasureSel.measure.svg.logicalBox);\n }\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RSxVQUFVLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakIsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2QseURBQVcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzlDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TbW8vLi9zcmMvcmVuZGVyL2F1ZGlvL211c2ljQ3Vyc29yLnRzPzc1MDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU21vU2VsZWN0b3IsIFNtb1NlbGVjdGlvbiB9IGZyb20gJy4uLy4uL3Ntby94Zm9ybS9zZWxlY3Rpb25zJztcclxuaW1wb3J0IHsgU3VpU2NvcmVWaWV3IH0gZnJvbSAnLi4vc3VpL3Njb3JlVmlldyc7XHJcbmltcG9ydCB7IFN2Z0hlbHBlcnMgfSBmcm9tICcuLi9zdWkvc3ZnSGVscGVycyc7XHJcbmltcG9ydCB7IFNtb01lYXN1cmUgfSBmcm9tICcuLi8uLi9zbW8vZGF0YS9tZWFzdXJlJztcclxuaW1wb3J0IHsgbGF5b3V0RGVidWcgfSBmcm9tICcuLi9zdWkvbGF5b3V0RGVidWcnO1xyXG5cclxuLyoqXHJcbiAqIEEgZ2VuZXJpYyBmdW5jdGlvbiB0aGF0IGNhbiBiZSBzZW50IHVzZWQgdG8gYW5pbWF0ZSBwbGF5YmFja1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgQXVkaW9BbmltYXRpb25IYW5kbGVyID0gKHZpZXc6IFN1aVNjb3JlVmlldywgc2VsZWN0b3I6IFNtb1NlbGVjdG9yLCBvZmZzZXRQY3Q6IG51bWJlciwgZHVyYXRpb25QY3Q6IG51bWJlcikgPT4gdm9pZDtcclxuLyoqXHJcbiAqIEEgZ2VuZXJpYyBmdW5jdGlvbiB0aGF0IGNhbiBiZSBzZW50IHVzZWQgdG8gY2xlYW4gdXAgcGxheWJhY2sgYW5pbWF0aW9uXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBDbGVhckF1ZGlvQW5pbWF0aW9uSGFuZGxlciA9IChkZWxheTogbnVtYmVyKSA9PiB2b2lkO1xyXG5cclxuLyoqXHJcbiAqIEFsbG93IHVzZXJzIHRvIHNwZWNpZnkgdGhlaXIgb3duIG11c2ljIHBsYXliYWNrIGFuaW1hdGlvbnMuXHJcbiAqIEBjYXRlZ29yeSBTdWlBdWRpb1xyXG4qL1xyXG5leHBvcnQgaW50ZXJmYWNlIFN1aUF1ZGlvQW5pbWF0aW9uUGFyYW1zIHtcclxuICBhdWRpb0FuaW1hdGlvbkhhbmRsZXI6IEF1ZGlvQW5pbWF0aW9uSGFuZGxlcixcclxuICBjbGVhckF1ZGlvQW5pbWF0aW9uSGFuZGxlcjogQ2xlYXJBdWRpb0FuaW1hdGlvbkhhbmRsZXJcclxufVxyXG5leHBvcnQgY29uc3QgIGRlZmF1bHRDbGVhckF1ZGlvQW5pbWF0aW9uSGFuZGxlciA9IChkZWxheTogbnVtYmVyKSA9PiB7XHJcbiAgaWYgKGRlbGF5IDwgMSkge1xyXG4gICAgY29uc3QgZWxsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZmLW11c2ljLWN1cnNvcicpO1xyXG4gICAgaWYgKGVsbCkge1xyXG4gICAgICBlbGwucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBkZWZhdWx0Q2xlYXJBdWRpb0FuaW1hdGlvbkhhbmRsZXIoMCk7XHJcbiAgICB9LCBkZWxheSk7XHJcbiAgfVxyXG59XHJcbiAvKipcclxuICAgKiBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHBsYXliYWNrIGFuaW1hdGlvbi5cclxuICAgKiBAY2F0ZWdvcnkgU3VpQXVkaW9cclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuIGV4cG9ydCBjb25zdCBkZWZhdWx0QXVkaW9BbmltYXRpb25IYW5kbGVyID0gKHZpZXc6IFN1aVNjb3JlVmlldywgc2VsZWN0b3I6IFNtb1NlbGVjdG9yLCBvZmZzZXRQY3Q6IG51bWJlciwgZHVyYXRpb25QY3Q6IG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IHNjb3JlID0gdmlldy5yZW5kZXJlci5zY29yZTtcclxuICBcclxuICBpZiAoIXNjb3JlKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnN0IHNjcm9sbGVyID0gdmlldy5zY3JvbGxlcjtcclxuICBjb25zdCByZW5kZXJlciA9IHZpZXcucmVuZGVyZXI7XHJcbiAgLy8gR2V0IG5vdGUgZnJvbSAwdGggc3RhZmYgaWYgd2UgY2FuXHJcbiAgY29uc3QgbWVhc3VyZVNlbCA9IFNtb1NlbGVjdGlvbi5tZWFzdXJlU2VsZWN0aW9uKHNjb3JlLFxyXG4gICAgc2NvcmUuc3RhdmVzLmxlbmd0aCAtIDEsIHNlbGVjdG9yLm1lYXN1cmUpO1xyXG4gIGNvbnN0IHptZWFzdXJlU2VsID0gU21vU2VsZWN0aW9uLm1lYXN1cmVTZWxlY3Rpb24oc2NvcmUsXHJcbiAgICAwLCBzZWxlY3Rvci5tZWFzdXJlKTtcclxuICBjb25zdCBtZWFzdXJlID0gbWVhc3VyZVNlbD8ubWVhc3VyZSBhcyBTbW9NZWFzdXJlO1xyXG4gIGlmIChtZWFzdXJlLnN2Zy5sb2dpY2FsQm94ICYmIHptZWFzdXJlU2VsPy5tZWFzdXJlPy5zdmc/LmxvZ2ljYWxCb3gpIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSByZW5kZXJlci5wYWdlTWFwLmdldFJlbmRlcmVyKG1lYXN1cmUuc3ZnLmxvZ2ljYWxCb3gpO1xyXG4gICAgY29uc3QgdG9wQm94ID0gU3ZnSGVscGVycy5zbW9Cb3goem1lYXN1cmVTZWwubWVhc3VyZS5zdmcubG9naWNhbEJveCk7XHJcbiAgICB0b3BCb3gueSAtPSBjb250ZXh0LmJveC55O1xyXG4gICAgY29uc3QgYm90Qm94ID0gU3ZnSGVscGVycy5zbW9Cb3gobWVhc3VyZS5zdmcubG9naWNhbEJveCk7XHJcbiAgICBib3RCb3gueSAtPSBjb250ZXh0LmJveC55O1xyXG4gICAgY29uc3QgaGVpZ2h0ID0gKGJvdEJveC55ICsgYm90Qm94LmhlaWdodCkgLSB0b3BCb3gueTtcclxuICAgIGNvbnN0IG1lYXN1cmVXaWR0aCA9IGJvdEJveC53aWR0aCAtIG1lYXN1cmUuc3ZnLmFkalg7XHJcbiAgICBjb25zdCBuaFdpZHRoID0gMTAgLyBzY29yZS5sYXlvdXRNYW5hZ2VyIS5nZXRHbG9iYWxMYXlvdXQoKS5zdmdTY2FsZTtcclxuICAgIGxldCB3aWR0aCA9IG1lYXN1cmVXaWR0aCAqIGR1cmF0aW9uUGN0IC0gMTAgLyBzY29yZS5sYXlvdXRNYW5hZ2VyIS5nZXRHbG9iYWxMYXlvdXQoKS5zdmdTY2FsZTtcclxuICAgIHdpZHRoID0gTWF0aC5tYXgobmhXaWR0aCwgd2lkdGgpO1xyXG4gICAgY29uc3QgeSA9IHRvcEJveC55O1xyXG4gICAgbGV0IHggPSB0b3BCb3gueCArIG1lYXN1cmUuc3ZnLmFkalggKyBvZmZzZXRQY3QgKiBtZWFzdXJlV2lkdGg7XHJcbiAgICBjb25zdCBub3RlQm94ID0gc2NvcmUuc3RhdmVzW3NlbGVjdG9yLnN0YWZmXS5tZWFzdXJlc1tzZWxlY3Rvci5tZWFzdXJlXS52b2ljZXNbc2VsZWN0b3Iudm9pY2VdLm5vdGVzW3NlbGVjdG9yLnRpY2tdO1xyXG4gICAgaWYgKG5vdGVCb3ggJiYgbm90ZUJveC5sb2dpY2FsQm94KSB7XHJcbiAgICAgIHggPSBub3RlQm94LmxvZ2ljYWxCb3gueDtcclxuICAgIH1cclxuICAgIGNvbnN0IHNjcmVlbkJveCA9IFN2Z0hlbHBlcnMuYm94UG9pbnRzKHgsIHksIHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgY29uc3QgZmlsbFBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xyXG4gICAgZmlsbFBhcmFtc1snZmlsbC1vcGFjaXR5J10gPSAnMC41JztcclxuICAgIGZpbGxQYXJhbXNbJ2ZpbGwnXSA9ICcjNDQ0NGZmJztcclxuICAgIGNvbnN0IGN0eCA9IGNvbnRleHQuZ2V0Q29udGV4dCgpO1xyXG4gICAgZGVmYXVsdENsZWFyQXVkaW9BbmltYXRpb25IYW5kbGVyKDApO1xyXG4gICAgY3R4LnNhdmUoKTtcclxuICAgIGN0eC5vcGVuR3JvdXAoJ211c2ljLWN1cnNvcicsICdtdXNpYy1jdXJzb3InKTtcclxuICAgIGN0eC5yZWN0KHgsIHNjcmVlbkJveC55LCB3aWR0aCwgc2NyZWVuQm94LmhlaWdodCwgZmlsbFBhcmFtcyk7XHJcbiAgICBjdHguY2xvc2VHcm91cCgpO1xyXG4gICAgY3R4LnJlc3RvcmUoKTtcclxuICAgIGxheW91dERlYnVnLnVwZGF0ZVBsYXlEZWJ1ZyhzZWxlY3RvciwgbWVhc3VyZS5zdmcubG9naWNhbEJveCk7XHJcbiAgICBpZiAodmlldy5zY29yZS5wcmVmZXJlbmNlcy5hdXRvU2Nyb2xsUGxheWJhY2spIHtcclxuICAgICAgc2Nyb2xsZXIuc2Nyb2xsVmlzaWJsZUJveCh6bWVhc3VyZVNlbC5tZWFzdXJlLnN2Zy5sb2dpY2FsQm94KTtcclxuICAgIH1cclxuICB9XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/render/audio/musicCursor.ts\n");
|
|
206
206
|
|
|
207
207
|
/***/ }),
|
|
208
208
|
|
|
@@ -534,7 +534,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
534
534
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
535
535
|
|
|
536
536
|
"use strict";
|
|
537
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SmoArpeggio: () => (/* binding */ SmoArpeggio),\n/* harmony export */ SmoArpeggioTypes: () => (/* binding */ SmoArpeggioTypes),\n/* harmony export */ SmoArticulation: () => (/* binding */ SmoArticulation),\n/* harmony export */ SmoClefChange: () => (/* binding */ SmoClefChange),\n/* harmony export */ SmoDynamicText: () => (/* binding */ SmoDynamicText),\n/* harmony export */ SmoGraceNote: () => (/* binding */ SmoGraceNote),\n/* harmony export */ SmoLyric: () => (/* binding */ SmoLyric),\n/* harmony export */ SmoMicrotone: () => (/* binding */ SmoMicrotone),\n/* harmony export */ SmoNoteModifierBase: () => (/* binding */ SmoNoteModifierBase),\n/* harmony export */ SmoOrnament: () => (/* binding */ SmoOrnament),\n/* harmony export */ SmoTabNote: () => (/* binding */ SmoTabNote),\n/* harmony export */ isArpeggioType: () => (/* binding */ isArpeggioType),\n/* harmony export */ isClefChangeParamsSer: () => (/* binding */ isClefChangeParamsSer),\n/* harmony export */ noteModifierDynamicCtorInit: () => (/* binding */ noteModifierDynamicCtorInit)\n/* harmony export */ });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common */ \"./src/smo/data/common.ts\");\n/* harmony import */ var _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/serializationHelpers */ \"./src/common/serializationHelpers.js\");\n/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./music */ \"./src/smo/data/music.ts\");\n/* harmony import */ var _common_vex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/vex */ \"./src/common/vex.ts\");\n// [Smoosic](https://github.com/AaronDavidNewman/Smoosic)\n// Copyright (c) Aaron David Newman 2021.\n/**\n * A note modifier is anything that is mapped to the note, but not part of the\n * pitch itself. This includes grace notes, and note-text like lyrics.\n * @module /smo/data/noteModifiers\n */\n\n\n\n\n/**\n * A note modifier is anything that is mapped to the note, but not part of the\n * pitch itself. This includes grace notes, and note-text like lyrics.\n * All note modifiers have a serialize method and a 'ctor' parameter or deserialization\n * @category SmoObject\n */\nclass SmoNoteModifierBase {\n constructor(ctor) {\n this.logicalBox = null;\n this.element = null;\n this.attrs = {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_0__.getId)().toString(),\n type: ctor\n };\n this.ctor = ctor;\n }\n static deserialize(jsonObj) {\n // Handle backwards-compatibility thing\n if (jsonObj.ctor === 'SmoMicrotone' && typeof (jsonObj.pitch) === 'number') {\n jsonObj.pitchIndex = jsonObj.pitch;\n }\n if (jsonObj.ctor === 'SmoLyric') {\n if (typeof (jsonObj._text) === 'string') {\n jsonObj.text = jsonObj._text;\n }\n }\n if (typeof (_common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor[jsonObj.ctor]) === 'undefined') {\n console.log('ouch bad ctor for ' + jsonObj.ctor);\n }\n try {\n const rv = _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor[jsonObj.ctor](jsonObj);\n return rv;\n }\n catch (exp) {\n console.error('no ctor for ' + jsonObj.ctor);\n throw (exp);\n }\n }\n}\nfunction isClefChangeParamsSer(params) {\n if (typeof (params.clef) === 'string' && params.ctor === 'SmoClefChange') {\n return true;\n }\n return false;\n}\n/**\n * @category SmoObject\n */\nclass SmoClefChange extends SmoNoteModifierBase {\n static get defaults() {\n const rv = JSON.parse(JSON.stringify({\n clef: 'treble',\n ctor: 'SmoClefChange',\n attrs: {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_0__.getId)(),\n type: 'SmoClefChange'\n }\n }));\n return rv;\n }\n constructor(clefParams) {\n super('SmoClefChange');\n const clef = clefParams.clef;\n if (!(0,_common__WEBPACK_IMPORTED_MODULE_0__.IsClef)(clef)) {\n this.clef = 'treble';\n }\n else {\n this.clef = clef;\n }\n }\n serialize() {\n const params = { ctor: 'SmoClefChange' };\n params.clef = this.clef;\n if (!isClefChangeParamsSer(params)) {\n throw ('corrupt clef change');\n }\n return params;\n }\n}\nfunction isGraceNoteParamsSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoGraceNote') {\n return false;\n }\n return true;\n}\n/**\n * A grace notes has many of the things an 'actual' note can have, but it doesn't take up\n * time against the time signature\n * @category SmoObject\n */\nclass SmoGraceNote extends SmoNoteModifierBase {\n static get flagStates() {\n return { auto: 0, up: 1, down: 2 };\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n flagState: SmoGraceNote.flagStates.auto,\n noteType: 'n',\n beamBeats: 4096,\n endBeam: false,\n clef: 'treble',\n slash: false,\n ticks: {\n numerator: 4096,\n denominator: 1,\n remainder: 0\n },\n pitches: [{\n letter: 'b',\n octave: 4,\n accidental: ''\n }]\n }));\n }\n // TODO: Matches SmoNote - move to SmoMusic?\n static get parameterArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoGraceNote.defaults) {\n rv.push(key);\n }\n return rv;\n }\n tickCount() {\n return this.ticks.numerator / this.ticks.denominator + this.ticks.remainder;\n }\n toVexGraceNote() {\n const p = _music__WEBPACK_IMPORTED_MODULE_2__.SmoMusic.smoPitchesToVex(this.pitches);\n const rv = { duration: _music__WEBPACK_IMPORTED_MODULE_2__.SmoMusic.closestVexDuration(this.tickCount()), keys: p, slash: this.slash };\n return rv;\n }\n serialize() {\n const params = { ctor: 'SmoGraceNote' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoGraceNote.defaults, SmoGraceNote.parameterArray, this, params);\n if (!isGraceNoteParamsSer(params)) {\n throw 'bad grace note ' + JSON.stringify(params);\n }\n return params;\n }\n constructor(parameters) {\n super('SmoGraceNote');\n this.ticks = SmoGraceNote.defaults.ticks;\n this.pitches = [];\n this.slash = false;\n this.clef = 'treble';\n this.noteType = 'n';\n this.renderId = null;\n this.hasTabNote = false;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoGraceNote.parameterArray, SmoGraceNote.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoGraceNote.parameterArray, parameters, this);\n }\n}\nconst SmoArpeggioTypes = ['directionless', 'rasquedo_up', 'rasquedo_down',\n 'roll_up', 'roll_down', 'brush_up', 'brush_down', 'none'];\nfunction isSmoArpeggionParamsSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoArpeggio') {\n return false;\n }\n return true;\n}\nfunction isArpeggioType(tp) {\n return SmoArpeggioTypes.indexOf(tp) >= 0;\n}\n/**\n * A 'splatter' symbol next to a chord.\n * @category SmoObject\n */\nclass SmoArpeggio extends SmoNoteModifierBase {\n static get types() {\n if (typeof (SmoArpeggio._types['directionless']) === 'undefined') {\n SmoArpeggio._types['directionless'] = 7;\n SmoArpeggio._types['rasquedo_up'] = 6;\n SmoArpeggio._types['rasquedo_down'] = 5;\n SmoArpeggio._types['roll_up'] = 4;\n SmoArpeggio._types['roll_down'] = 3;\n SmoArpeggio._types['brush_up'] = 2;\n SmoArpeggio._types['brush_down'] = 1;\n SmoArpeggio._types['none'] = 0;\n }\n return SmoArpeggio._types;\n }\n constructor(params) {\n super('SmoArpeggio');\n this.typeCode = SmoArpeggio.types[params.type];\n }\n get typeString() {\n const str = SmoArpeggioTypes.find((x) => SmoArpeggio.types[x] === this.typeCode);\n const type = str ? str : 'none';\n return type;\n }\n serialize() {\n const rv = { ctor: 'SmoArpeggio' };\n const str = SmoArpeggioTypes.find((x) => SmoArpeggio.types[x] === this.typeCode);\n rv.type = str ? str : 'none';\n if (!isSmoArpeggionParamsSer(rv)) {\n throw 'bad arpeggio ' + JSON.stringify(rv);\n }\n return rv;\n }\n}\nSmoArpeggio._types = {};\nfunction isSmoMicrotoneParamsSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoMicrotone') {\n return false;\n }\n return true;\n}\n/**\n * Microtones are treated similarly to ornaments. There are not\n * rules for persisting throughout a measure, cancel etc.\n * @category SmoObject\n*/\nclass SmoMicrotone extends SmoNoteModifierBase {\n get toPitchCoeff() {\n return SmoMicrotone.pitchCoeff[this.tone];\n }\n get toVex() {\n return SmoMicrotone.smoToVex[this.tone];\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n ctor: 'SmoMicrotone',\n tone: 'flat25sz',\n pitch: 0\n }));\n }\n static get parameterArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoMicrotone.defaults) {\n rv.push(key);\n }\n return rv;\n }\n serialize() {\n const params = { ctor: 'SmoMicrotone' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoMicrotone.defaults, SmoMicrotone.parameterArray, this, params);\n if (!isSmoMicrotoneParamsSer(params)) {\n throw 'bad microtone ' + JSON.stringify(params);\n }\n return params;\n }\n constructor(parameters) {\n super(parameters.ctor);\n this.tone = 'flat75sz';\n this.pitchIndex = 0;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoMicrotone.parameterArray, SmoMicrotone.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoMicrotone.parameterArray, parameters, this);\n }\n}\n// This is how VexFlow notates them\nSmoMicrotone.smoToVex = {\n flat75sz: 'db',\n flat25sz: 'd',\n flat25ar: 'bs',\n flat125ar: 'afhf',\n sharp75: '++',\n sharp125: 'ashs',\n sharp25: '+',\n sori: 'o',\n koron: 'k'\n};\n// The audio frequency offsets\nSmoMicrotone.pitchCoeff = {\n flat75sz: -1.5,\n flat25sz: -0.5,\n flat25ar: -0.5,\n flat125ar: -2.5,\n sharp75: 1.5,\n sharp125: 2.5,\n sharp25: 0.5,\n sori: 0.5,\n koron: -0.5\n};\nfunction isSmoOrnamentParamsSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoOrnament') {\n return false;\n }\n return true;\n}\n/**\n * Ornaments map to vex ornaments. articulations vs. ornaments\n * is kind of arbitrary\n * @category SmoObject\n */\nclass SmoOrnament extends SmoNoteModifierBase {\n static get jazzOrnaments() {\n return ['scoop', 'fallLong', 'doit', 'doitLong', 'flip', 'smear', 'scoop', 'plungerOpen', 'plungerClosed', 'bend'];\n }\n static get legacyJazz() {\n return { 'SCOOP': SmoOrnament.ornaments.scoop,\n 'FALL_SHORT': SmoOrnament.ornaments.fall,\n 'FALL_LONG': SmoOrnament.ornaments.fallLong,\n 'DOIT': SmoOrnament.ornaments.doit,\n 'LIFT': SmoOrnament.ornaments.lift,\n 'FLIP': SmoOrnament.ornaments.flip,\n 'SMEAR': SmoOrnament.ornaments.smear\n };\n }\n toVex() {\n return SmoOrnament.ornaments[this.ornament];\n }\n isJazz() {\n return SmoOrnament.jazzOrnaments.indexOf(this.ornament) >= 0;\n }\n static get parameterArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoOrnament.defaults) {\n rv.push(key);\n }\n return rv;\n }\n static get positions() {\n return {\n above: 'above',\n below: 'below',\n auto: 'auto'\n };\n }\n static get offsets() {\n return {\n on: 'on',\n after: 'after'\n };\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n ctor: 'SmoOrnament',\n ornament: SmoOrnament.ornaments.mordent,\n position: SmoOrnament.positions.auto,\n offset: SmoOrnament.offsets.on\n }));\n }\n serialize() {\n var params = { ctor: 'SmoOrnament' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoOrnament.defaults, SmoOrnament.parameterArray, this, params);\n if (!isSmoOrnamentParamsSer(params)) {\n throw 'bad ornament ' + JSON.stringify(params);\n }\n return params;\n }\n constructor(parameters) {\n super('SmoOrnament');\n this.position = SmoOrnament.positions.above;\n this.offset = 'on';\n this.ornament = SmoOrnament.ornaments.mordent;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoOrnament.parameterArray, SmoOrnament.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoOrnament.parameterArray, parameters, this);\n // handle some legacy changes\n if (typeof (SmoOrnament.legacyJazz[this.ornament]) === 'string') {\n this.ornament = SmoOrnament.legacyJazz[this.ornament];\n }\n }\n}\nSmoOrnament.ornaments = {\n mordent: 'mordent',\n mordent_inverted: 'mordent_inverted',\n turn: 'turn',\n turn_inverted: 'turn_inverted',\n trill: 'tr',\n upprall: 'upprall',\n prallup: 'prallup',\n pralldown: 'pralldown',\n upmordent: 'upmordent',\n downmordent: 'downmordent',\n caesura: 'caesura',\n lineprall: 'lineprall',\n prallprall: 'prallprall',\n scoop: 'scoop',\n fall: 'fall',\n fallLong: 'fallLong',\n breath: 'breath',\n doit: 'doit',\n doitLong: 'doitLong',\n flip: 'flip',\n smear: 'smear',\n bend: 'bend',\n plungerClosed: 'plungerClosed',\n plungerOpen: 'plungerOpen'\n};\nSmoOrnament.xmlOrnaments = {\n mordent: 'mordent',\n mordent_inverted: 'inverted-mordent',\n turn: 'turn',\n turn_inverted: 'inverted-turn',\n upmordent: 'mordent',\n downmordent: 'mordent',\n lineprall: 'schleifer',\n prallprall: 'schleifer',\n prallup: 'schleifer',\n tr: 'trill-mark'\n};\nSmoOrnament.textNoteOrnaments = {\n breath: 'breath',\n caesura: 'caesura_straight'\n};\n// jazz ornaments in vex are articulations in music xml\nSmoOrnament.xmlJazz = {\n doit: 'doit',\n scoop: 'scoop',\n dropLong: 'falloff',\n drop: 'plop'\n};\nfunction isSmoArticulationParametersSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoArticulation') {\n return false;\n }\n return true;\n}\n/**\n * Articulations map to notes, can be placed above/below\n * @category SmoObject\n */\nclass SmoArticulation extends SmoNoteModifierBase {\n static get articulations() {\n return {\n accent: 'accent',\n staccato: 'staccato',\n marcato: 'marcato',\n tenuto: 'tenuto',\n upStroke: 'upStroke',\n downStroke: 'downStroke',\n pizzicato: 'pizzicato',\n bowUp: 'bowUp',\n bowDown: 'bowDown',\n fermata: 'fermata'\n };\n }\n static get positions() {\n return {\n above: 'above',\n below: 'below',\n auto: 'auto'\n };\n }\n static get articulationToVex() {\n return {\n accent: 'a>',\n staccato: 'a.',\n marcato: 'a^',\n tenuto: 'a-',\n upStroke: 'a|',\n downStroke: 'am',\n pizzicato: 'ao',\n fermata: 'a@a'\n };\n }\n static get vexToArticulation() {\n return {\n 'a>': 'accent',\n 'a.': 'staccato',\n 'a^': 'marcato',\n 'a-': 'tenuto',\n 'a|': 'upStroke',\n 'am': 'downStroke',\n 'ao': 'pizzicato',\n 'a@a': 'fermata'\n };\n }\n static get parameterArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoArticulation.defaults) {\n rv.push(key);\n }\n return rv;\n }\n static get positionToVex() {\n return {\n 'above': 3,\n 'below': 4\n };\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n ctor: 'SmoArticulation',\n position: SmoArticulation.positions.above,\n articulation: SmoArticulation.articulations.accent\n }));\n }\n serialize() {\n var params = { ctor: 'SmoArticulation' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoArticulation.defaults, SmoArticulation.parameterArray, this, params);\n if (!isSmoArticulationParametersSer(params)) {\n throw 'bad articulation ' + JSON.stringify(params);\n }\n return params;\n }\n constructor(parameters) {\n super('SmoArticulation');\n this.position = SmoOrnament.positions.above;\n this.offset = 0;\n this.articulation = SmoArticulation.articulations.accent;\n this.adjX = 0;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoArticulation.parameterArray, SmoArticulation.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoArticulation.parameterArray, parameters, this);\n // this.selector = parameters.selector;\n }\n}\nSmoArticulation.xmlArticulations = {\n accent: 'accent',\n staccato: 'staccato',\n tenuto: 'tenuto',\n marcato: 'strong-accent'\n};\nfunction isSmoLyricPersist(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoLyric') {\n return false;\n }\n return true;\n}\n/**\n * SmoLyric covers both chords and lyrics. The parser tells you which\n * one you get.\n * @category SmoObject\n */\nclass SmoLyric extends SmoNoteModifierBase {\n static get defaults() {\n return JSON.parse(JSON.stringify({\n ctor: 'SmoLyric',\n text: '\\xa0',\n endChar: '',\n verse: 0,\n fontInfo: {\n size: 12,\n family: 'times',\n style: 'normal',\n weight: 'normal'\n },\n fill: 'black',\n classes: 'score-text',\n translateX: 0,\n translateY: 0,\n adjustNoteWidthLyric: true,\n adjustNoteWidthChord: false,\n parser: SmoLyric.parsers.lyric\n }));\n }\n static get symbolPosition() {\n return {\n SUPERSCRIPT: 1,\n SUBSCRIPT: 2,\n NORMAL: 3\n };\n }\n static get persistArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoLyric.defaults) {\n rv.push(key);\n }\n return rv;\n }\n static get parameterArray() {\n const rv = SmoLyric.persistArray;\n rv.push('selector', 'text');\n return rv;\n }\n serialize() {\n var params = { ctor: 'SmoLyric' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoLyric.defaults, SmoLyric.persistArray, this, params);\n if (!isSmoLyricPersist(params)) {\n throw 'bad lyric ' + JSON.stringify('params');\n }\n return params;\n }\n // For lyrics, we default to adjust note width on lyric size. For chords, this is almost never what\n // you want, so it is off by default.\n get adjustNoteWidth() {\n return (this.parser === SmoLyric.parsers.lyric) ? this.adjustNoteWidthLyric : this.adjustNoteWidthChord;\n }\n set adjustNoteWidth(val) {\n if (this.parser === SmoLyric.parsers.lyric) {\n this.adjustNoteWidthLyric = val;\n }\n else {\n this.adjustNoteWidthChord = val;\n }\n }\n // ### getClassSelector\n // returns a selector used to find this text block within a note.\n getClassSelector() {\n var parser = (this.parser === SmoLyric.parsers.lyric ? 'lyric' : 'chord');\n return 'g.' + parser + '-' + this.verse;\n }\n setText(text) {\n // For chords, trim all whitespace\n if (this.parser !== SmoLyric.parsers.lyric) {\n if (text.trim().length) {\n text.replace(/\\s/g, '');\n }\n }\n this.text = text;\n }\n isHyphenated() {\n const text = this.text.trim();\n return this.parser === SmoLyric.parsers.lyric &&\n text.length &&\n text[text.length - 1] === '-';\n }\n getText() {\n const text = this.text.trim();\n if (this.isHyphenated()) {\n return _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.tryParseUnicode(text.substr(0, text.length - 1)).trim();\n }\n return _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.tryParseUnicode(text);\n }\n isDash() {\n return this.getText().length === 0 && this.isHyphenated();\n }\n static _chordGlyphFromCode(code) {\n return (0,_common_vex__WEBPACK_IMPORTED_MODULE_3__.getChordSymbolGlyphFromCode)(code);\n }\n static _tokenizeChordString(str) {\n // var str = this._text;\n const reg = /^([A-Z|a-z|0-9|]+)/g;\n let mmm = str.match(reg);\n let tokeType = '';\n let toke = '';\n const tokens = [];\n while (str.length) {\n if (!mmm) {\n tokeType = str[0];\n tokens.push(tokeType);\n str = str.slice(1, str.length);\n }\n else {\n toke = mmm[0].substr(0, mmm[0].length);\n str = str.slice(toke.length, str.length);\n tokens.push(toke);\n tokeType = '';\n toke = '';\n }\n mmm = str.match(reg);\n }\n return tokens;\n }\n constructor(parameters) {\n super('SmoLyric');\n this.ctor = 'SmoLyric';\n this.text = '';\n this.fontInfo = {\n size: 12,\n family: 'Merriweather',\n style: 'normal',\n weight: 'normal'\n };\n this.parser = SmoLyric.parsers.lyric;\n this.selector = null; // used by UI\n this.adjustNoteWidthLyric = true;\n this.adjustNoteWidthChord = false;\n this.verse = 0;\n this.skipRender = false;\n this.fill = '';\n this.translateX = 0;\n this.translateY = 0;\n this.classes = '';\n // used by the renderer to calculate offsets for aligning lyrics\n this.adjX = 0;\n this.adjY = 0;\n // used by the renderer to calculate the y offset for music that goes below the staff\n this.musicYOffset = 0;\n this.hyphenX = 0;\n this.deleted = false;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoLyric.parameterArray, SmoLyric.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoLyric.parameterArray, parameters, this);\n if (typeof (this.fontInfo.size) !== 'number') {\n this.fontInfo.size = SmoLyric.defaults.fontInfo.size;\n }\n // backwards-compatibility for lyric text\n if (parameters.text) {\n this.text = parameters.text;\n }\n // calculated adjustments for alignment purposes\n this.adjY = 0;\n this.adjX = 0;\n // this.verse = parseInt(this.verse, 10);\n if (!this.attrs) {\n this.attrs = {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_0__.getId)().toString(),\n type: 'SmoLyric'\n };\n }\n }\n}\nSmoLyric.parsers = {\n lyric: 0, anaylysis: 1, chord: 2\n};\n/**\n * Dynamic text tells you how loud not to play.\n * @category SmoObject\n */\nclass SmoDynamicText extends SmoNoteModifierBase {\n static get dynamics() {\n // matches VF.modifier\n return {\n PP: 'pp',\n P: 'p',\n MP: 'mp',\n MF: 'mf',\n F: 'f',\n FF: 'ff',\n SFZ: 'sfz'\n };\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n ctor: 'SmoDynamicText',\n xOffset: 0,\n fontSize: _common_vex__WEBPACK_IMPORTED_MODULE_3__.defaultNoteScale,\n yOffsetLine: 11,\n yOffsetPixels: 0,\n text: SmoDynamicText.dynamics.MP,\n }));\n }\n static get persistArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoDynamicText.defaults) {\n rv.push(key);\n }\n return rv;\n }\n static get parameterArray() {\n const rv = SmoDynamicText.persistArray;\n rv.push('selector');\n return rv;\n }\n serialize() {\n var params = {};\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoDynamicText.defaults, SmoDynamicText.persistArray, this, params);\n return params;\n }\n constructor(parameters) {\n super('SmoDynamicText');\n this.text = '';\n this.yOffsetLine = 11;\n this.yOffsetPixels = 0;\n this.xOffset = 0;\n this.fontSize = _common_vex__WEBPACK_IMPORTED_MODULE_3__.defaultNoteScale;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.vexMerge(this, SmoDynamicText.defaults);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.filteredMerge(SmoDynamicText.parameterArray, parameters, this);\n if (!this.attrs) {\n this.attrs = {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_0__.getId)().toString(),\n type: 'SmoDynamicText'\n };\n }\n }\n}\nfunction isSmoTabNoteParamsSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoTabNote') {\n return false;\n }\n return true;\n}\n/**\n * @category SmoObject\n */\nclass SmoTabNote extends SmoNoteModifierBase {\n static get defaults() {\n return JSON.parse(JSON.stringify({\n positions: [],\n noteId: '',\n isAssigned: false,\n flagState: SmoTabNote.flagStates.None,\n flagThrough: false,\n noteHead: SmoTabNote.noteHeads.number\n }));\n }\n static get flagStates() {\n return { None: 0, Up: 1, Down: -1 };\n }\n static get noteHeads() {\n return { number: 0, x: 1 };\n }\n constructor(params) {\n super('SmoTabNote');\n this.positions = params.positions;\n this.noteId = params.noteId;\n this.isAssigned = params.isAssigned;\n this.noteHead = params.noteHead;\n this.flagState = params.flagState;\n this.flagThrough = params.flagThrough;\n }\n serialize() {\n var params = { ctor: 'SmoTabNote' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoTabNote.defaults, ['positions', 'noteId', 'isAssigned', 'noteHead', 'flagState', 'flagThrough'], this, params);\n if (!isSmoTabNoteParamsSer(params)) {\n throw 'bad params in SmoTabNote';\n }\n return params;\n }\n}\nconst noteModifierDynamicCtorInit = () => {\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoArpeggio'] = (params) => new SmoArpeggio(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoMicrotone'] = (params) => new SmoMicrotone(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoOrnament'] = (params) => new SmoOrnament(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoGraceNote'] = (params) => new SmoGraceNote(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoArticulation'] = (params) => new SmoArticulation(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoLyric'] = (params) => new SmoLyric(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoDynamicText'] = (params) => new SmoDynamicText(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoTabNote'] = (params) => new SmoTabNote(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoClefChange'] = (params) => new SmoClefChange(params);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFjLENBQUMsR0FBRyxDQUFDLE1BQTBCLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFGLG1EQUFjLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUF5QixFQUFFLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2RixtREFBYyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkYsbURBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBaUMsRUFBRSxFQUFFLENBQUMsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkcsbURBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlFLG1EQUFjLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hHLG1EQUFjLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRixtREFBYyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBMkIsRUFBRSxFQUFFLENBQUMsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0YsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL1Ntby8uL3NyYy9zbW8vZGF0YS9ub3RlTW9kaWZpZXJzLnRzPzg0ODkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gW1Ntb29zaWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9BYXJvbkRhdmlkTmV3bWFuL1Ntb29zaWMpXHJcbi8vIENvcHlyaWdodCAoYykgQWFyb24gRGF2aWQgTmV3bWFuIDIwMjEuXHJcbi8qKlxyXG4gKiBBIG5vdGUgbW9kaWZpZXIgaXMgYW55dGhpbmcgdGhhdCBpcyBtYXBwZWQgdG8gdGhlIG5vdGUsIGJ1dCBub3QgcGFydCBvZiB0aGVcclxuICogcGl0Y2ggaXRzZWxmLiAgVGhpcyBpbmNsdWRlcyBncmFjZSBub3RlcywgYW5kIG5vdGUtdGV4dCBsaWtlIGx5cmljcy5cclxuICogQG1vZHVsZSAvc21vL2RhdGEvbm90ZU1vZGlmaWVyc1xyXG4gKi9cclxuaW1wb3J0IHsgU21vQXR0cnMsIFRpY2tzLCBQaXRjaCwgZ2V0SWQsIFNtb09iamVjdFBhcmFtcywgVHJhbnNwb3NhYmxlLCBTdmdCb3gsIFNtb01vZGlmaWVyQmFzZSwgXHJcbiAgQ2xlZiwgSXNDbGVmLCBTbW9EeW5hbWljQ3RvciB9IGZyb20gJy4vY29tbW9uJztcclxuaW1wb3J0IHsgc21vU2VyaWFsaXplIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcmlhbGl6YXRpb25IZWxwZXJzJztcclxuaW1wb3J0IHsgU21vTXVzaWMgfSBmcm9tICcuL211c2ljJztcclxuaW1wb3J0IHsgZGVmYXVsdE5vdGVTY2FsZSwgRm9udEluZm8sIGdldENob3JkU3ltYm9sR2x5cGhGcm9tQ29kZSB9IGZyb20gJy4uLy4uL2NvbW1vbi92ZXgnO1xyXG5cclxuLyoqXHJcbiAqIEEgbm90ZSBtb2RpZmllciBpcyBhbnl0aGluZyB0aGF0IGlzIG1hcHBlZCB0byB0aGUgbm90ZSwgYnV0IG5vdCBwYXJ0IG9mIHRoZVxyXG4gKiBwaXRjaCBpdHNlbGYuICBUaGlzIGluY2x1ZGVzIGdyYWNlIG5vdGVzLCBhbmQgbm90ZS10ZXh0IGxpa2UgbHlyaWNzLlxyXG4gKiBBbGwgbm90ZSBtb2RpZmllcnMgaGF2ZSBhIHNlcmlhbGl6ZSBtZXRob2QgYW5kIGEgJ2N0b3InIHBhcmFtZXRlciBvciBkZXNlcmlhbGl6YXRpb25cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNtb05vdGVNb2RpZmllckJhc2UgaW1wbGVtZW50cyBTbW9Nb2RpZmllckJhc2Uge1xyXG4gIGF0dHJzOiBTbW9BdHRycztcclxuICBjdG9yOiBzdHJpbmc7XHJcbiAgbG9naWNhbEJveDogU3ZnQm94IHwgbnVsbCA9IG51bGw7XHJcbiAgZWxlbWVudDogU1ZHU1ZHRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIGNvbnN0cnVjdG9yKGN0b3I6IHN0cmluZykge1xyXG4gICAgdGhpcy5hdHRycyA9IHtcclxuICAgICAgaWQ6IGdldElkKCkudG9TdHJpbmcoKSxcclxuICAgICAgdHlwZTogY3RvclxyXG4gICAgfTtcclxuICAgIHRoaXMuY3RvciA9IGN0b3I7XHJcbiAgfVxyXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZShqc29uT2JqOiBTbW9PYmplY3RQYXJhbXMpIHtcclxuICAgIC8vIEhhbmRsZSBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSB0aGluZ1xyXG4gICAgaWYgKGpzb25PYmouY3RvciA9PT0gJ1Ntb01pY3JvdG9uZScgJiYgdHlwZW9mICgoanNvbk9iaiBhcyBhbnkpLnBpdGNoKSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgKGpzb25PYmogYXMgYW55KS5waXRjaEluZGV4ID0gKGpzb25PYmogYXMgYW55KS5waXRjaDtcclxuICAgIH1cclxuICAgIGlmIChqc29uT2JqLmN0b3IgPT09ICdTbW9MeXJpYycpIHtcclxuICAgICAgaWYgKHR5cGVvZigoanNvbk9iaiBhcyBhbnkpLl90ZXh0KSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAoanNvbk9iaiBhcyBhbnkpLnRleHQgPSAoanNvbk9iaiBhcyBhbnkpLl90ZXh0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIChTbW9EeW5hbWljQ3Rvcltqc29uT2JqLmN0b3JdKSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgY29uc29sZS5sb2coJ291Y2ggYmFkIGN0b3IgZm9yICcgKyBqc29uT2JqLmN0b3IpO1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcnYgPSBTbW9EeW5hbWljQ3Rvcltqc29uT2JqLmN0b3JdKGpzb25PYmopO1xyXG4gICAgICByZXR1cm4gcnY7XHJcbiAgICB9IGNhdGNoIChleHApIHtcclxuICAgICAgY29uc29sZS5lcnJvcignbm8gY3RvciBmb3IgJyArIGpzb25PYmouY3Rvcik7XHJcbiAgICAgIHRocm93KGV4cCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFic3RyYWN0IHNlcmlhbGl6ZSgpOiBhbnk7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNDbGVmQ2hhbmdlUGFyYW1zU2VyKHBhcmFtczogUGFydGlhbDxTbW9DbGVmQ2hhbmdlUGFyYW1zU2VyPik6IHBhcmFtcyBpcyBTbW9DbGVmQ2hhbmdlUGFyYW1zU2VyIHtcclxuICBpZiAodHlwZW9mKHBhcmFtcy5jbGVmKSA9PT0gJ3N0cmluZycgJiYgcGFyYW1zLmN0b3IgPT09ICdTbW9DbGVmQ2hhbmdlJykge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIHJldHVybiBmYWxzZTtcclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9DbGVmQ2hhbmdlUGFyYW1zICB7XHJcbiAgY2xlZjogc3RyaW5nXHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBzZXJpYWxpemF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0NsZWZDaGFuZ2VQYXJhbXNTZXIgZXh0ZW5kcyBTbW9DbGVmQ2hhbmdlUGFyYW1zIHtcclxuICAvKipcclxuICAgKiBjb25zdHJ1Y3RvclxyXG4gICAqL1xyXG4gICAgY3Rvcjogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBhdHRyaWJ1dGVzIGZvciBJRFxyXG4gICAgICovXHJcbiAgICBhdHRyczogU21vQXR0cnM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU21vQ2xlZkNoYW5nZSBleHRlbmRzIFNtb05vdGVNb2RpZmllckJhc2Uge1xyXG4gIGNsZWY6IENsZWY7XHJcbiAgc3RhdGljIGdldCBkZWZhdWx0cygpIHtcclxuICAgIGNvbnN0IHJ2OiBTbW9DbGVmQ2hhbmdlUGFyYW1zU2VyID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGNsZWY6ICd0cmVibGUnLFxyXG4gICAgICBjdG9yOiAnU21vQ2xlZkNoYW5nZScsXHJcbiAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgaWQ6IGdldElkKCksXHJcbiAgICAgICAgdHlwZTogJ1Ntb0NsZWZDaGFuZ2UnXHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHJldHVybiBydjtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoY2xlZlBhcmFtczogU21vQ2xlZkNoYW5nZVBhcmFtcykge1xyXG4gICAgc3VwZXIoJ1Ntb0NsZWZDaGFuZ2UnKTtcclxuICAgIGNvbnN0IGNsZWYgPSBjbGVmUGFyYW1zLmNsZWY7XHJcbiAgICBpZiAoIUlzQ2xlZihjbGVmKSkge1xyXG4gICAgICB0aGlzLmNsZWYgPSAndHJlYmxlJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xlZiA9IGNsZWYgYXMgQ2xlZjtcclxuICAgIH1cclxuICB9XHJcbiAgc2VyaWFsaXplKCk6IFNtb0NsZWZDaGFuZ2VQYXJhbXNTZXIge1xyXG4gICAgY29uc3QgcGFyYW1zOiBQYXJ0aWFsPFNtb0NsZWZDaGFuZ2VQYXJhbXNTZXI+ID0geyBjdG9yOiAnU21vQ2xlZkNoYW5nZScgfTtcclxuICAgIHBhcmFtcy5jbGVmID0gdGhpcy5jbGVmO1xyXG4gICAgaWYgKCFpc0NsZWZDaGFuZ2VQYXJhbXNTZXIocGFyYW1zKSkge1xyXG4gICAgICB0aHJvdygnY29ycnVwdCBjbGVmIGNoYW5nZScpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcmFtcztcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIHVzZWQgdG8gY29uc3RydWN0IHtAbGluayBTbW9HcmFjZU5vdGV9XHJcbiAqICAgYmVhbSBncm91cC5cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBHcmFjZU5vdGVQYXJhbXMgZXh0ZW5kcyBTbW9Nb2RpZmllckJhc2Uge1xyXG4gIC8qKlxyXG4gICAqIHVwLCBkb3duLCBvciBhdXRvXHJcbiAgICovXHJcbiAgZmxhZ1N0YXRlOiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogc2FtZSBhcyBmb3Ige0BsaW5rIFNtb05vdGV9XHJcbiAgICovXHJcbiAgbm90ZVR5cGU6IHN0cmluZyxcclxuICAvKipcclxuICAgKiBzYW1lIGFzIGZvciB7QGxpbmsgU21vTm90ZX1cclxuICAgKi9cclxuICBiZWFtQmVhdHM6IG51bWJlcixcclxuICAvKipcclxuICAgKiBzYW1lIGFzIGZvciB7QGxpbmsgU21vTm90ZX0uICBJbmRpY2F0ZXMgYnJlYWsgaW4gYmVhbSBncm91cFxyXG4gICAqL1xyXG4gIGVuZEJlYW06IGJvb2xlYW4sXHJcbiAgLyoqXHJcbiAgICogc2hvdWxkIGJlIHNhbWUgYXMgbm90ZT9cclxuICAgKi9cclxuICBjbGVmOiBzdHJpbmcsXHJcbiAgLyoqXHJcbiAgICogdGhlcmUncyBwcm9iYWJseSBhIG5hbWUgZm9yIHRoaXMuLi5cclxuICAgKi9cclxuICBzbGFzaDogYm9vbGVhbixcclxuICAvKipcclxuICAgKiBvbmx5IHVzZWQgZm9yIGJlYW1pbmdcclxuICAgKi9cclxuICB0aWNrczogVGlja3MsXHJcbiAgLyoqXHJcbiAgICogUGl0Y2gsIHNhbWUgYXMgZm9yIHtAbGluayBTbW9Ob3RlfVxyXG4gICAqL1xyXG4gIHBpdGNoZXM6IFBpdGNoW10sXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBzZXJpYWxpemVkIGdyYWNlIG5vdGVcclxuICogQGNhdGVnb3J5IHNlcmlhbGl6YXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgR3JhY2VOb3RlUGFyYW1zU2VyIGV4dGVuZHMgR3JhY2VOb3RlUGFyYW1zIHtcclxuICAvKipcclxuICAgKiBjb25zdHJ1Y3RvclxyXG4gICAqL1xyXG4gIGN0b3I6IHN0cmluZztcclxuICAvKipcclxuICAgKiBhdHRyaWJ1dGVzIGZvciBJRFxyXG4gICAqL1xyXG4gIGF0dHJzOiBTbW9BdHRycztcclxufVxyXG5cclxuZnVuY3Rpb24gaXNHcmFjZU5vdGVQYXJhbXNTZXIocGFyYW1zOiBQYXJ0aWFsPEdyYWNlTm90ZVBhcmFtc1Nlcj4pOiBwYXJhbXMgaXMgR3JhY2VOb3RlUGFyYW1zU2VyIHtcclxuICBpZiAodHlwZW9mKHBhcmFtcy5jdG9yKSAhPT0gJ3N0cmluZycgfHwgcGFyYW1zLmN0b3IgIT09ICdTbW9HcmFjZU5vdGUnKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBBIGdyYWNlIG5vdGVzIGhhcyBtYW55IG9mIHRoZSB0aGluZ3MgYW4gJ2FjdHVhbCcgbm90ZSBjYW4gaGF2ZSwgYnV0IGl0IGRvZXNuJ3QgdGFrZSB1cFxyXG4gKiB0aW1lIGFnYWluc3QgdGhlIHRpbWUgc2lnbmF0dXJlXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9HcmFjZU5vdGUgZXh0ZW5kcyBTbW9Ob3RlTW9kaWZpZXJCYXNlIGltcGxlbWVudHMgVHJhbnNwb3NhYmxlIHtcclxuICBzdGF0aWMgZ2V0IGZsYWdTdGF0ZXMoKSB7XHJcbiAgICByZXR1cm4geyBhdXRvOiAwLCB1cDogMSwgZG93bjogMiB9O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IEdyYWNlTm90ZVBhcmFtcyB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGZsYWdTdGF0ZTogU21vR3JhY2VOb3RlLmZsYWdTdGF0ZXMuYXV0byxcclxuICAgICAgbm90ZVR5cGU6ICduJyxcclxuICAgICAgYmVhbUJlYXRzOiA0MDk2LFxyXG4gICAgICBlbmRCZWFtOiBmYWxzZSxcclxuICAgICAgY2xlZjogJ3RyZWJsZScsXHJcbiAgICAgIHNsYXNoOiBmYWxzZSxcclxuICAgICAgdGlja3M6IHtcclxuICAgICAgICBudW1lcmF0b3I6IDQwOTYsXHJcbiAgICAgICAgZGVub21pbmF0b3I6IDEsXHJcbiAgICAgICAgcmVtYWluZGVyOiAwXHJcbiAgICAgIH0sXHJcbiAgICAgIHBpdGNoZXM6IFt7XHJcbiAgICAgICAgbGV0dGVyOiAnYicsXHJcbiAgICAgICAgb2N0YXZlOiA0LFxyXG4gICAgICAgIGFjY2lkZW50YWw6ICcnXHJcbiAgICAgIH1dXHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIC8vIFRPRE86IE1hdGNoZXMgU21vTm90ZSAtIG1vdmUgdG8gU21vTXVzaWM/XHJcbiAgc3RhdGljIGdldCBwYXJhbWV0ZXJBcnJheSgpIHtcclxuICAgIGNvbnN0IHJ2OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBTbW9HcmFjZU5vdGUuZGVmYXVsdHMpIHtcclxuICAgICAgcnYucHVzaChrZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuICB0aWNrczogVGlja3MgPSBTbW9HcmFjZU5vdGUuZGVmYXVsdHMudGlja3M7XHJcbiAgcGl0Y2hlczogUGl0Y2hbXSA9IFtdO1xyXG4gIHNsYXNoOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2xlZjogc3RyaW5nID0gJ3RyZWJsZSc7XHJcbiAgbm90ZVR5cGU6IHN0cmluZyA9ICduJztcclxuICByZW5kZXJJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgaGFzVGFiTm90ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB0aWNrQ291bnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50aWNrcy5udW1lcmF0b3IgLyB0aGlzLnRpY2tzLmRlbm9taW5hdG9yICsgdGhpcy50aWNrcy5yZW1haW5kZXI7XHJcbiAgfVxyXG5cclxuICB0b1ZleEdyYWNlTm90ZSgpIHtcclxuICAgIGNvbnN0IHAgPSBTbW9NdXNpYy5zbW9QaXRjaGVzVG9WZXgodGhpcy5waXRjaGVzKTtcclxuICAgIGNvbnN0IHJ2ID0geyBkdXJhdGlvbjogU21vTXVzaWMuY2xvc2VzdFZleER1cmF0aW9uKHRoaXMudGlja0NvdW50KCkpLCBrZXlzOiBwLCBzbGFzaDogdGhpcy5zbGFzaCB9O1xyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuXHJcbiAgc2VyaWFsaXplKCk6IEdyYWNlTm90ZVBhcmFtc1NlciB7XHJcbiAgICBjb25zdCBwYXJhbXM6IFBhcnRpYWw8R3JhY2VOb3RlUGFyYW1zU2VyPiA9IHsgY3RvcjogJ1Ntb0dyYWNlTm90ZScgfTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2VOb25EZWZhdWx0KFNtb0dyYWNlTm90ZS5kZWZhdWx0cyxcclxuICAgICAgU21vR3JhY2VOb3RlLnBhcmFtZXRlckFycmF5LCB0aGlzLCBwYXJhbXMpO1xyXG4gICAgaWYgKCFpc0dyYWNlTm90ZVBhcmFtc1NlcihwYXJhbXMpKSB7XHJcbiAgICAgIHRocm93ICdiYWQgZ3JhY2Ugbm90ZSAnICsgSlNPTi5zdHJpbmdpZnkocGFyYW1zKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnM6IFBhcnRpYWw8R3JhY2VOb3RlUGFyYW1zPikge1xyXG4gICAgc3VwZXIoJ1Ntb0dyYWNlTm90ZScpO1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZShTbW9HcmFjZU5vdGUucGFyYW1ldGVyQXJyYXksIFNtb0dyYWNlTm90ZS5kZWZhdWx0cywgdGhpcyk7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb0dyYWNlTm90ZS5wYXJhbWV0ZXJBcnJheSwgcGFyYW1ldGVycywgdGhpcyk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCB0eXBlIFNtb0FycGVnZ2lvVHlwZSA9ICdkaXJlY3Rpb25sZXNzJyB8ICdyYXNxdWVkb191cCcgfCAncmFzcXVlZG9fZG93bicgXHJcbiAgfCAncm9sbF91cCcgfCAncm9sbF9kb3duJyB8ICdicnVzaF91cCcgfCAnYnJ1c2hfZG93bicgfCAnbm9uZSc7XHJcbmV4cG9ydCAgY29uc3QgU21vQXJwZWdnaW9UeXBlcyA9IFsnZGlyZWN0aW9ubGVzcycsICdyYXNxdWVkb191cCcsICdyYXNxdWVkb19kb3duJyxcclxuICAncm9sbF91cCcsICdyb2xsX2Rvd24nLCAnYnJ1c2hfdXAnLCAnYnJ1c2hfZG93bicsICdub25lJ107XHJcblxyXG4gIC8qKlxyXG4gICAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICAgKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9BcnBlZ2dpb1BhcmFtcyB7XHJcbiAgIHR5cGU6IFNtb0FycGVnZ2lvVHlwZVxyXG59XHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgc2VyaWFsaXphdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9BcnBlZ2dpb1BhcmFtc1NlciB7XHJcbiAgY3Rvcjogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIHN0cmluZ2lmaWVkIGFycGVnZ2lvbiBlbnVtZXJhdGlvblxyXG4gICAqL1xyXG4gIHR5cGU6IHN0cmluZztcclxufVxyXG5mdW5jdGlvbiBpc1Ntb0FycGVnZ2lvblBhcmFtc1NlcihwYXJhbXM6IFBhcnRpYWw8U21vQXJwZWdnaW9QYXJhbXNTZXI+KTogcGFyYW1zIGlzIFNtb0FycGVnZ2lvUGFyYW1zU2VyIHtcclxuICBpZiAodHlwZW9mKHBhcmFtcy5jdG9yKSAhPT0gJ3N0cmluZycgfHwgcGFyYW1zLmN0b3IgIT09ICdTbW9BcnBlZ2dpbycpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQXJwZWdnaW9UeXBlKHRwOiBTbW9BcnBlZ2dpb1R5cGUgfCBzdHJpbmcpOiB0cCBpcyBTbW9BcnBlZ2dpb1R5cGUge1xyXG4gIHJldHVybiBTbW9BcnBlZ2dpb1R5cGVzLmluZGV4T2YodHApID49IDA7XHJcbn1cclxuLyoqXHJcbiAqIEEgJ3NwbGF0dGVyJyBzeW1ib2wgbmV4dCB0byBhIGNob3JkLlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU21vQXJwZWdnaW8gZXh0ZW5kcyBTbW9Ob3RlTW9kaWZpZXJCYXNlIHtcclxuICBzdGF0aWMgX3R5cGVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XHJcbiAgc3RhdGljIGdldCB0eXBlcygpIHtcclxuICAgIGlmICh0eXBlb2YoU21vQXJwZWdnaW8uX3R5cGVzWydkaXJlY3Rpb25sZXNzJ10pID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBTbW9BcnBlZ2dpby5fdHlwZXNbJ2RpcmVjdGlvbmxlc3MnXSA9IDc7XHJcbiAgICAgIFNtb0FycGVnZ2lvLl90eXBlc1sncmFzcXVlZG9fdXAnXSA9IDY7XHJcbiAgICAgIFNtb0FycGVnZ2lvLl90eXBlc1sncmFzcXVlZG9fZG93biddID0gNTtcclxuICAgICAgU21vQXJwZWdnaW8uX3R5cGVzWydyb2xsX3VwJ10gPSA0O1xyXG4gICAgICBTbW9BcnBlZ2dpby5fdHlwZXNbJ3JvbGxfZG93biddID0gMztcclxuICAgICAgU21vQXJwZWdnaW8uX3R5cGVzWydicnVzaF91cCddID0gMjtcclxuICAgICAgU21vQXJwZWdnaW8uX3R5cGVzWydicnVzaF9kb3duJ10gPSAxO1xyXG4gICAgICBTbW9BcnBlZ2dpby5fdHlwZXNbJ25vbmUnXSA9IDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU21vQXJwZWdnaW8uX3R5cGVzO1xyXG4gIH0gICAgXHJcbiAgdHlwZUNvZGU6IG51bWJlcjtcclxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IFNtb0FycGVnZ2lvUGFyYW1zKSB7XHJcbiAgICBzdXBlcignU21vQXJwZWdnaW8nKTtcclxuICAgIHRoaXMudHlwZUNvZGUgPSBTbW9BcnBlZ2dpby50eXBlc1twYXJhbXMudHlwZV07XHJcbiAgfVxyXG4gIGdldCB0eXBlU3RyaW5nKCk6IFNtb0FycGVnZ2lvVHlwZSB7XHJcbiAgICBjb25zdCBzdHIgPSBTbW9BcnBlZ2dpb1R5cGVzLmZpbmQoKHgpID0+IFNtb0FycGVnZ2lvLnR5cGVzW3hdID09PSB0aGlzLnR5cGVDb2RlKTtcclxuICAgIGNvbnN0IHR5cGUgPSBzdHIgPyBzdHIgOiAnbm9uZSc7XHJcbiAgICByZXR1cm4gdHlwZSBhcyBTbW9BcnBlZ2dpb1R5cGU7XHJcbiAgfVxyXG4gIHNlcmlhbGl6ZSgpOiBTbW9BcnBlZ2dpb1BhcmFtc1NlciB7XHJcbiAgICBjb25zdCBydjogUGFydGlhbDxTbW9BcnBlZ2dpb1BhcmFtc1Nlcj4gPSB7IGN0b3I6ICdTbW9BcnBlZ2dpbycgfVxyXG4gICAgY29uc3Qgc3RyID0gU21vQXJwZWdnaW9UeXBlcy5maW5kKCh4KSA9PiBTbW9BcnBlZ2dpby50eXBlc1t4XSA9PT0gdGhpcy50eXBlQ29kZSk7XHJcbiAgICBydi50eXBlID0gc3RyID8gc3RyIDogJ25vbmUnO1xyXG4gICAgaWYgKCFpc1Ntb0FycGVnZ2lvblBhcmFtc1NlcihydikpIHtcclxuICAgICAgdGhyb3cgJ2JhZCBhcnBlZ2dpbyAnICsgSlNPTi5zdHJpbmdpZnkocnYpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxufVxyXG4vKipcclxuICogQ29uc3RydWN0b3IgcGFyYW1ldGVycyBmb3Ige0BsaW5rIFNtb01pY3JvdG9uZX1cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9NaWNyb3RvbmVQYXJhbXMgZXh0ZW5kcyBTbW9PYmplY3RQYXJhbXMge1xyXG4gIC8qKlxyXG4gICAqIGluZGljYXRlcyB3aGljaCBtb2RpZmllciB0byBhbHRlciB0aGUgdG9uZSAoZS5nLiAxLzQgc2hhcnApXHJcbiAgICovXHJcbiAgdG9uZTogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIHRoZSBpbmRleCBvZiB0aGUgcGl0Y2ggdG8gYWx0ZXJcclxuICAgKi9cclxuICBwaXRjaDogbnVtYmVyXHJcbn1cclxuLyoqXHJcbiAqIHNlcmlhbGl6ZWQgbWljcm90b25lcy5cclxuICogQGNhdGVnb3J5IHNlcmlhbGl6YXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vTWljcm90b25lUGFyYW1zU2VyIGV4dGVuZHMgU21vTWljcm90b25lUGFyYW1zIHtcclxuICBjdG9yOiBzdHJpbmcsXHJcbiAgYXR0cnM6IFNtb0F0dHJzXHJcbn1cclxuZnVuY3Rpb24gaXNTbW9NaWNyb3RvbmVQYXJhbXNTZXIocGFyYW1zOiBQYXJ0aWFsPFNtb01pY3JvdG9uZVBhcmFtc1Nlcj4pOiBwYXJhbXMgaXMgU21vTWljcm90b25lUGFyYW1zU2VyIHtcclxuICBpZiAodHlwZW9mKHBhcmFtcy5jdG9yKSAhPT0gJ3N0cmluZycgfHwgcGFyYW1zLmN0b3IgIT09ICdTbW9NaWNyb3RvbmUnKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNaWNyb3RvbmVzIGFyZSB0cmVhdGVkIHNpbWlsYXJseSB0byBvcm5hbWVudHMuICBUaGVyZSBhcmUgbm90XHJcbiAqIHJ1bGVzIGZvciBwZXJzaXN0aW5nIHRocm91Z2hvdXQgYSBtZWFzdXJlLCBjYW5jZWwgZXRjLlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiovXHJcbmV4cG9ydCBjbGFzcyBTbW9NaWNyb3RvbmUgZXh0ZW5kcyBTbW9Ob3RlTW9kaWZpZXJCYXNlIHtcclxuICB0b25lOiBzdHJpbmcgPSAnZmxhdDc1c3onO1xyXG4gIHBpdGNoSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIC8vIFRoaXMgaXMgaG93IFZleEZsb3cgbm90YXRlcyB0aGVtXHJcbiAgc3RhdGljIHJlYWRvbmx5IHNtb1RvVmV4OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgZmxhdDc1c3o6ICdkYicsXHJcbiAgICBmbGF0MjVzejogJ2QnLFxyXG4gICAgZmxhdDI1YXI6ICdicycsXHJcbiAgICBmbGF0MTI1YXI6ICdhZmhmJyxcclxuICAgIHNoYXJwNzU6ICcrKycsXHJcbiAgICBzaGFycDEyNTogJ2FzaHMnLFxyXG4gICAgc2hhcnAyNTogJysnLFxyXG4gICAgc29yaTogJ28nLFxyXG4gICAga29yb246ICdrJ1xyXG4gIH1cclxuXHJcbiAgLy8gVGhlIGF1ZGlvIGZyZXF1ZW5jeSBvZmZzZXRzXHJcbiAgc3RhdGljIHJlYWRvbmx5IHBpdGNoQ29lZmY6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XHJcbiAgICBmbGF0NzVzejogLTEuNSxcclxuICAgIGZsYXQyNXN6OiAtMC41LFxyXG4gICAgZmxhdDI1YXI6IC0wLjUsXHJcbiAgICBmbGF0MTI1YXI6IC0yLjUsXHJcbiAgICBzaGFycDc1OiAxLjUsXHJcbiAgICBzaGFycDEyNTogMi41LFxyXG4gICAgc2hhcnAyNTogMC41LFxyXG4gICAgc29yaTogMC41LFxyXG4gICAga29yb246IC0wLjVcclxuICB9XHJcblxyXG4gIGdldCB0b1BpdGNoQ29lZmYoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBTbW9NaWNyb3RvbmUucGl0Y2hDb2VmZlt0aGlzLnRvbmVdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRvVmV4KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU21vTWljcm90b25lLnNtb1RvVmV4W3RoaXMudG9uZV07XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKTogU21vTWljcm90b25lUGFyYW1zICB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGN0b3I6ICdTbW9NaWNyb3RvbmUnLFxyXG4gICAgICB0b25lOiAnZmxhdDI1c3onLFxyXG4gICAgICBwaXRjaDogMFxyXG4gICAgfSkpO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IHBhcmFtZXRlckFycmF5KCkge1xyXG4gICAgY29uc3QgcnY6IHN0cmluZ1tdID0gW107XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICAgIGZvciAoY29uc3Qga2V5IGluIFNtb01pY3JvdG9uZS5kZWZhdWx0cykge1xyXG4gICAgICBydi5wdXNoKGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcnY7XHJcbiAgfVxyXG4gIHNlcmlhbGl6ZSgpOiBTbW9NaWNyb3RvbmVQYXJhbXNTZXIge1xyXG4gICAgY29uc3QgcGFyYW1zOiBQYXJ0aWFsPFNtb01pY3JvdG9uZVBhcmFtc1Nlcj4gPSB7IGN0b3I6ICdTbW9NaWNyb3RvbmUnIH07XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlTm9uRGVmYXVsdChTbW9NaWNyb3RvbmUuZGVmYXVsdHMsXHJcbiAgICAgIFNtb01pY3JvdG9uZS5wYXJhbWV0ZXJBcnJheSwgdGhpcywgcGFyYW1zKTtcclxuICAgIGlmICghaXNTbW9NaWNyb3RvbmVQYXJhbXNTZXIocGFyYW1zKSkge1xyXG4gICAgICB0aHJvdyAnYmFkIG1pY3JvdG9uZSAnICsgSlNPTi5zdHJpbmdpZnkocGFyYW1zKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnM6IFNtb01pY3JvdG9uZVBhcmFtcykge1xyXG4gICAgc3VwZXIocGFyYW1ldGVycy5jdG9yKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vTWljcm90b25lLnBhcmFtZXRlckFycmF5LCBTbW9NaWNyb3RvbmUuZGVmYXVsdHMsIHRoaXMpO1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZShTbW9NaWNyb3RvbmUucGFyYW1ldGVyQXJyYXksIHBhcmFtZXRlcnMsIHRoaXMpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnN0cnVjdG9yIGZvciB7QGxpbmsgU21vT3JuYW1lbnR9XHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vT3JuYW1lbnRQYXJhbXMge1xyXG4gIC8qKlxyXG4gICAqIHBvc3RpdGlvbiwgYWJvdmUgb3IgYmVsb3dcclxuICAgKi9cclxuICBwb3NpdGlvbj86IHN0cmluZyxcclxuICAvKipcclxuICAgKiBob3Jpem9udGFsIG9mZnNldCBmcm9tIG5vdGUgaGVhZFxyXG4gICAqLyAgXHJcbiAgb2Zmc2V0Pzogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIGFjY2lkZW50YWwgYWJvdmUvYmVsb3dcclxuICAgKi9cclxuICBhY2NpZGVudGFsQWJvdmU/OiBzdHJpbmcsXHJcbiAgYWNjaWRlbnRhbEJlbG93Pzogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIGNvZGUgZm9yIHRoZSBvcm5hbWVudFxyXG4gICAqL1xyXG4gIG9ybmFtZW50OiBzdHJpbmcsXHJcbn1cclxuLyoqXHJcbiAqIHNlcmlhbGl6YWJsZSBvcm5hbWVudFxyXG4gKiBAY2F0ZWdvcnkgc2VyaWFsaXphdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9Pcm5hbWVudFBhcmFtc1NlciBleHRlbmRzIFNtb09ybmFtZW50UGFyYW1zIHtcclxuICAvKipcclxuICAgKiBjb25zdHJ1Y3RvclxyXG4gICAqL1xyXG4gIGN0b3I6IHN0cmluZztcclxufVxyXG5mdW5jdGlvbiBpc1Ntb09ybmFtZW50UGFyYW1zU2VyKHBhcmFtczogUGFydGlhbDxTbW9Pcm5hbWVudFBhcmFtc1Nlcj4pOiBwYXJhbXMgaXMgU21vT3JuYW1lbnRQYXJhbXNTZXIge1xyXG4gIGlmICh0eXBlb2YocGFyYW1zLmN0b3IpICE9PSAnc3RyaW5nJyB8fCBwYXJhbXMuY3RvciAhPT0gJ1Ntb09ybmFtZW50Jykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogT3JuYW1lbnRzIG1hcCB0byB2ZXggb3JuYW1lbnRzLiAgYXJ0aWN1bGF0aW9ucyB2cy4gb3JuYW1lbnRzXHJcbiAqIGlzIGtpbmQgb2YgYXJiaXRyYXJ5XHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9Pcm5hbWVudCBleHRlbmRzIFNtb05vdGVNb2RpZmllckJhc2UgeyAgXHJcbiAgc3RhdGljIHJlYWRvbmx5IG9ybmFtZW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgIG1vcmRlbnQ6ICdtb3JkZW50JyxcclxuICAgIG1vcmRlbnRfaW52ZXJ0ZWQ6ICdtb3JkZW50X2ludmVydGVkJyxcclxuICAgIHR1cm46ICd0dXJuJyxcclxuICAgIHR1cm5faW52ZXJ0ZWQ6ICd0dXJuX2ludmVydGVkJyxcclxuICAgIHRyaWxsOiAndHInLFxyXG4gICAgdXBwcmFsbDogJ3VwcHJhbGwnLFxyXG4gICAgcHJhbGx1cDogJ3ByYWxsdXAnLFxyXG4gICAgcHJhbGxkb3duOiAncHJhbGxkb3duJyxcclxuICAgIHVwbW9yZGVudDogJ3VwbW9yZGVudCcsXHJcbiAgICBkb3dubW9yZGVudDogJ2Rvd25tb3JkZW50JyxcclxuICAgIGNhZXN1cmE6ICdjYWVzdXJhJyxcclxuICAgIGxpbmVwcmFsbDogJ2xpbmVwcmFsbCcsXHJcbiAgICBwcmFsbHByYWxsOiAncHJhbGxwcmFsbCcsXHJcbiAgICBzY29vcDogJ3Njb29wJyxcclxuICAgIGZhbGw6ICdmYWxsJyxcclxuICAgIGZhbGxMb25nOiAnZmFsbExvbmcnLFxyXG4gICAgYnJlYXRoOiAnYnJlYXRoJyxcclxuICAgIGRvaXQ6ICdkb2l0JyxcclxuICAgIGRvaXRMb25nOiAnZG9pdExvbmcnLFxyXG4gICAgZmxpcDogJ2ZsaXAnLFxyXG4gICAgc21lYXI6ICdzbWVhcicsXHJcbiAgICBiZW5kOiAnYmVuZCcsXHJcbiAgICBwbHVuZ2VyQ2xvc2VkOiAncGx1bmdlckNsb3NlZCcsXHJcbiAgICBwbHVuZ2VyT3BlbjogJ3BsdW5nZXJPcGVuJ1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IHhtbE9ybmFtZW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgIG1vcmRlbnQ6ICdtb3JkZW50JyxcclxuICAgIG1vcmRlbnRfaW52ZXJ0ZWQ6ICdpbnZlcnRlZC1tb3JkZW50JyxcclxuICAgIHR1cm46ICd0dXJuJyxcclxuICAgIHR1cm5faW52ZXJ0ZWQ6ICdpbnZlcnRlZC10dXJuJyxcclxuICAgIHVwbW9yZGVudDogJ21vcmRlbnQnLFxyXG4gICAgZG93bm1vcmRlbnQ6ICdtb3JkZW50JyxcclxuICAgIGxpbmVwcmFsbDogJ3NjaGxlaWZlcicsXHJcbiAgICBwcmFsbHByYWxsOiAnc2NobGVpZmVyJyxcclxuICAgIHByYWxsdXA6ICdzY2hsZWlmZXInLFxyXG4gICAgdHI6ICd0cmlsbC1tYXJrJ1xyXG4gIH1cclxuICBzdGF0aWMgcmVhZG9ubHkgdGV4dE5vdGVPcm5hbWVudHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gID0ge1xyXG4gICAgYnJlYXRoOiAnYnJlYXRoJyxcclxuICAgIGNhZXN1cmE6ICdjYWVzdXJhX3N0cmFpZ2h0J1xyXG4gIH1cclxuICAvLyBqYXp6IG9ybmFtZW50cyBpbiB2ZXggYXJlIGFydGljdWxhdGlvbnMgaW4gbXVzaWMgeG1sXHJcbiAgc3RhdGljIHJlYWRvbmx5IHhtbEpheno6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICBkb2l0OiAnZG9pdCcsXHJcbiAgICBzY29vcDogJ3Njb29wJyxcclxuICAgIGRyb3BMb25nOiAnZmFsbG9mZicsXHJcbiAgICBkcm9wOiAncGxvcCdcclxuICB9XHJcbiAgc3RhdGljIGdldCBqYXp6T3JuYW1lbnRzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbJ3Njb29wJywgJ2ZhbGxMb25nJywgJ2RvaXQnLCAnZG9pdExvbmcnLCAnZmxpcCcsICdzbWVhcicsICdzY29vcCcsICdwbHVuZ2VyT3BlbicsICdwbHVuZ2VyQ2xvc2VkJywgJ2JlbmQnXTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBsZWdhY3lKYXp6KCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHsnU0NPT1AnOiBTbW9Pcm5hbWVudC5vcm5hbWVudHMuc2Nvb3AgLFxyXG4gICAgICAnRkFMTF9TSE9SVCc6IFNtb09ybmFtZW50Lm9ybmFtZW50cy5mYWxsLFxyXG4gICAgICAnRkFMTF9MT05HJzogU21vT3JuYW1lbnQub3JuYW1lbnRzLmZhbGxMb25nLFxyXG4gICAgICAnRE9JVCc6IFNtb09ybmFtZW50Lm9ybmFtZW50cy5kb2l0LFxyXG4gICAgICAnTElGVCc6IFNtb09ybmFtZW50Lm9ybmFtZW50cy5saWZ0LFxyXG4gICAgICAnRkxJUCc6IFNtb09ybmFtZW50Lm9ybmFtZW50cy5mbGlwLFxyXG4gICAgICAnU01FQVInOiBTbW9Pcm5hbWVudC5vcm5hbWVudHMuc21lYXJcclxuICAgIH07XHJcbiAgfVxyXG4gIHRvVmV4KCkge1xyXG4gICAgcmV0dXJuIFNtb09ybmFtZW50Lm9ybmFtZW50c1t0aGlzLm9ybmFtZW50XTtcclxuICB9XHJcbiAgaXNKYXp6KCkge1xyXG4gICAgcmV0dXJuIFNtb09ybmFtZW50LmphenpPcm5hbWVudHMuaW5kZXhPZih0aGlzLm9ybmFtZW50KSA+PSAwO1xyXG4gIH1cclxuICBwb3NpdGlvbjogc3RyaW5nID0gU21vT3JuYW1lbnQucG9zaXRpb25zLmFib3ZlO1xyXG4gIG9mZnNldDogc3RyaW5nID0gJ29uJztcclxuICBvcm5hbWVudDogc3RyaW5nID0gU21vT3JuYW1lbnQub3JuYW1lbnRzLm1vcmRlbnQ7XHJcblxyXG4gIHN0YXRpYyBnZXQgcGFyYW1ldGVyQXJyYXkoKSB7XHJcbiAgICBjb25zdCBydjogc3RyaW5nW10gPSBbXTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gU21vT3JuYW1lbnQuZGVmYXVsdHMpIHtcclxuICAgICAgcnYucHVzaChrZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldCBwb3NpdGlvbnMoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhYm92ZTogJ2Fib3ZlJyxcclxuICAgICAgYmVsb3c6ICdiZWxvdycsXHJcbiAgICAgIGF1dG86ICdhdXRvJ1xyXG4gICAgfTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBvZmZzZXRzKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgb246ICdvbicsXHJcbiAgICAgIGFmdGVyOiAnYWZ0ZXInXHJcbiAgICB9O1xyXG4gIH0gIFxyXG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKTogU21vT3JuYW1lbnRQYXJhbXMge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBjdG9yOiAnU21vT3JuYW1lbnQnLFxyXG4gICAgICBvcm5hbWVudDogU21vT3JuYW1lbnQub3JuYW1lbnRzLm1vcmRlbnQsXHJcbiAgICAgIHBvc2l0aW9uOiBTbW9Pcm5hbWVudC5wb3NpdGlvbnMuYXV0byxcclxuICAgICAgb2Zmc2V0OiBTbW9Pcm5hbWVudC5vZmZzZXRzLm9uXHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIHNlcmlhbGl6ZSgpOiBTbW9Pcm5hbWVudFBhcmFtc1NlciB7XHJcbiAgICB2YXIgcGFyYW1zOiBQYXJ0aWFsPFNtb09ybmFtZW50UGFyYW1zU2VyPiA9IHsgY3RvcjogJ1Ntb09ybmFtZW50JyB9O1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZU5vbkRlZmF1bHQoU21vT3JuYW1lbnQuZGVmYXVsdHMsXHJcbiAgICAgIFNtb09ybmFtZW50LnBhcmFtZXRlckFycmF5LCB0aGlzLCBwYXJhbXMpO1xyXG4gICAgaWYgKCFpc1Ntb09ybmFtZW50UGFyYW1zU2VyKHBhcmFtcykpIHtcclxuICAgICAgdGhyb3cgJ2JhZCBvcm5hbWVudCAnICsgSlNPTi5zdHJpbmdpZnkocGFyYW1zKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnM6IFNtb09ybmFtZW50UGFyYW1zKSB7XHJcbiAgICBzdXBlcignU21vT3JuYW1lbnQnKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vT3JuYW1lbnQucGFyYW1ldGVyQXJyYXksIFNtb09ybmFtZW50LmRlZmF1bHRzLCB0aGlzKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vT3JuYW1lbnQucGFyYW1ldGVyQXJyYXksIHBhcmFtZXRlcnMsIHRoaXMpO1xyXG4gICAgLy8gaGFuZGxlIHNvbWUgbGVnYWN5IGNoYW5nZXNcclxuICAgIGlmICh0eXBlb2YoU21vT3JuYW1lbnQubGVnYWN5SmF6elt0aGlzLm9ybmFtZW50XSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMub3JuYW1lbnQgPSBTbW9Pcm5hbWVudC5sZWdhY3lKYXp6W3RoaXMub3JuYW1lbnRdO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHtAbGluayBTbW9BcnRpY3VsYXRpb259XHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vQXJ0aWN1bGF0aW9uUGFyYW1ldGVycyB7XHJcbiAgLyoqXHJcbiAgICogcG9zaXRpb24sIGFib3ZlIG9yIGJlbG93XHJcbiAgICovXHJcbiAgcG9zaXRpb24/OiBzdHJpbmcsXHJcbiAgLyoqXHJcbiAgICogeCBvZmZzZXRcclxuICAgKi9cclxuICBvZmZzZXQ/OiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogYXJ0aWN1bGF0aW9uIGNvZGVcclxuICAgKi9cclxuICBhcnRpY3VsYXRpb246IHN0cmluZ1xyXG59XHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgc2VyaWFsaXphdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9BcnRpY3VsYXRpb25QYXJhbWV0ZXJzU2VyIGV4dGVuZHMgU21vQXJ0aWN1bGF0aW9uUGFyYW1ldGVycyB7XHJcbiAgY3Rvcjogc3RyaW5nO1xyXG59XHJcbmZ1bmN0aW9uIGlzU21vQXJ0aWN1bGF0aW9uUGFyYW1ldGVyc1NlcihwYXJhbXM6IFBhcnRpYWw8U21vQXJ0aWN1bGF0aW9uUGFyYW1ldGVyc1Nlcj4pOiBwYXJhbXMgaXMgU21vQXJ0aWN1bGF0aW9uUGFyYW1ldGVyc1NlciB7XHJcbiAgaWYgKHR5cGVvZihwYXJhbXMuY3RvcikgIT09ICdzdHJpbmcnIHx8IHBhcmFtcy5jdG9yICE9PSAnU21vQXJ0aWN1bGF0aW9uJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogQXJ0aWN1bGF0aW9ucyBtYXAgdG8gbm90ZXMsIGNhbiBiZSBwbGFjZWQgYWJvdmUvYmVsb3dcclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNtb0FydGljdWxhdGlvbiBleHRlbmRzIFNtb05vdGVNb2RpZmllckJhc2Uge1xyXG4gIHN0YXRpYyBnZXQgYXJ0aWN1bGF0aW9ucygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFjY2VudDogJ2FjY2VudCcsXHJcbiAgICAgIHN0YWNjYXRvOiAnc3RhY2NhdG8nLFxyXG4gICAgICBtYXJjYXRvOiAnbWFyY2F0bycsXHJcbiAgICAgIHRlbnV0bzogJ3RlbnV0bycsXHJcbiAgICAgIHVwU3Ryb2tlOiAndXBTdHJva2UnLFxyXG4gICAgICBkb3duU3Ryb2tlOiAnZG93blN0cm9rZScsXHJcbiAgICAgIHBpenppY2F0bzogJ3BpenppY2F0bycsXHJcbiAgICAgIGJvd1VwOiAnYm93VXAnLFxyXG4gICAgICBib3dEb3duOiAnYm93RG93bicsXHJcbiAgICAgIGZlcm1hdGE6ICdmZXJtYXRhJ1xyXG4gICAgfTtcclxuICB9XHJcbiAgc3RhdGljIHJlYWRvbmx5IHhtbEFydGljdWxhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICBhY2NlbnQ6ICdhY2NlbnQnLFxyXG4gICAgc3RhY2NhdG86ICdzdGFjY2F0bycsXHJcbiAgICB0ZW51dG86ICd0ZW51dG8nLFxyXG4gICAgbWFyY2F0bzogJ3N0cm9uZy1hY2NlbnQnXHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgcG9zaXRpb25zKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWJvdmU6ICdhYm92ZScsXHJcbiAgICAgIGJlbG93OiAnYmVsb3cnLFxyXG4gICAgICBhdXRvOiAnYXV0bydcclxuICAgIH07XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgYXJ0aWN1bGF0aW9uVG9WZXgoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhY2NlbnQ6ICdhPicsXHJcbiAgICAgIHN0YWNjYXRvOiAnYS4nLFxyXG4gICAgICBtYXJjYXRvOiAnYV4nLFxyXG4gICAgICB0ZW51dG86ICdhLScsXHJcbiAgICAgIHVwU3Ryb2tlOiAnYXwnLFxyXG4gICAgICBkb3duU3Ryb2tlOiAnYW0nLFxyXG4gICAgICBwaXp6aWNhdG86ICdhbycsXHJcbiAgICAgIGZlcm1hdGE6ICdhQGEnXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldCB2ZXhUb0FydGljdWxhdGlvbigpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdhPic6ICdhY2NlbnQnLFxyXG4gICAgICAnYS4nOiAnc3RhY2NhdG8nLFxyXG4gICAgICAnYV4nOiAnbWFyY2F0bycsXHJcbiAgICAgICdhLSc6ICd0ZW51dG8nLFxyXG4gICAgICAnYXwnOiAndXBTdHJva2UnLFxyXG4gICAgICAnYW0nOiAnZG93blN0cm9rZScsXHJcbiAgICAgICdhbyc6ICdwaXp6aWNhdG8nLFxyXG4gICAgICAnYUBhJzogJ2Zlcm1hdGEnXHJcbiAgICB9O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IHBhcmFtZXRlckFycmF5KCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHJ2OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBTbW9BcnRpY3VsYXRpb24uZGVmYXVsdHMpIHtcclxuICAgICAgcnYucHVzaChrZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldCBwb3NpdGlvblRvVmV4KCk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ2Fib3ZlJzogMyxcclxuICAgICAgJ2JlbG93JzogNFxyXG4gICAgfTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBkZWZhdWx0cygpOiBTbW9BcnRpY3VsYXRpb25QYXJhbWV0ZXJzIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgY3RvcjogJ1Ntb0FydGljdWxhdGlvbicsXHJcbiAgICAgIHBvc2l0aW9uOiBTbW9BcnRpY3VsYXRpb24ucG9zaXRpb25zLmFib3ZlLFxyXG4gICAgICBhcnRpY3VsYXRpb246IFNtb0FydGljdWxhdGlvbi5hcnRpY3VsYXRpb25zLmFjY2VudFxyXG4gICAgfSkpO1xyXG4gIH1cclxuICBwb3NpdGlvbjogc3RyaW5nID0gU21vT3JuYW1lbnQucG9zaXRpb25zLmFib3ZlO1xyXG4gIG9mZnNldDogbnVtYmVyID0gMDtcclxuICBhcnRpY3VsYXRpb246IHN0cmluZyA9IFNtb0FydGljdWxhdGlvbi5hcnRpY3VsYXRpb25zLmFjY2VudDtcclxuICBhZGpYOiBudW1iZXIgPSAwO1xyXG5cclxuICBzZXJpYWxpemUoKTogU21vQXJ0aWN1bGF0aW9uUGFyYW1ldGVyc1NlciB7XHJcbiAgICB2YXIgcGFyYW1zOiBQYXJ0aWFsPFNtb0FydGljdWxhdGlvblBhcmFtZXRlcnNTZXI+ID0geyBjdG9yOiAnU21vQXJ0aWN1bGF0aW9uJ307XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlTm9uRGVmYXVsdChTbW9BcnRpY3VsYXRpb24uZGVmYXVsdHMsXHJcbiAgICAgIFNtb0FydGljdWxhdGlvbi5wYXJhbWV0ZXJBcnJheSwgdGhpcywgcGFyYW1zKTtcclxuICAgIGlmICghaXNTbW9BcnRpY3VsYXRpb25QYXJhbWV0ZXJzU2VyKHBhcmFtcykpIHtcclxuICAgICAgdGhyb3cgJ2JhZCBhcnRpY3VsYXRpb24gJyArIEpTT04uc3RyaW5naWZ5KHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzOiBTbW9BcnRpY3VsYXRpb25QYXJhbWV0ZXJzKSB7XHJcbiAgICBzdXBlcignU21vQXJ0aWN1bGF0aW9uJyk7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb0FydGljdWxhdGlvbi5wYXJhbWV0ZXJBcnJheSwgU21vQXJ0aWN1bGF0aW9uLmRlZmF1bHRzLCB0aGlzKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vQXJ0aWN1bGF0aW9uLnBhcmFtZXRlckFycmF5LCBwYXJhbWV0ZXJzLCB0aGlzKTtcclxuICAgIC8vIHRoaXMuc2VsZWN0b3IgPSBwYXJhbWV0ZXJzLnNlbGVjdG9yO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBWZXhBbm5vdGF0aW9uUGFyYW1zIHtcclxuICBnbHlwaD86IHN0cmluZyxcclxuICBzeW1ib2xNb2RpZmllcj86IG51bWJlcixcclxuICB0ZXh0Pzogc3RyaW5nXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgcGVyc2lzdC15IHBhcnRzIG9mIHtAbGluayBTbW9MeXJpY1BhcmFtc30uIFdlIGRvbid0IHBlcnNpc3QgdGhlIHNlbGVjdG9yXHJcbiAqIHNpbmNlIHRoYXQgY2FuIGNoYW5nZSBiYXNlZCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIHBhcmVudCBub3RlXHJcbiAqIEBjYXRlZ29yeSBzZXJpYWxpemF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0x5cmljUGFyYW1zU2VyIGV4dGVuZHMgU21vT2JqZWN0UGFyYW1zIHtcclxuICAvKipcclxuICAgKiBjb25zdHJ1Y3RvclxyXG4gICAqL1xyXG4gIGN0b3I6IHN0cmluZyxcclxuICAvKipcclxuICAgKiBhdHRyaWJ1dGVzIGZvciBJRFxyXG4gICAqL1xyXG4gIGF0dHJzOiBTbW9BdHRycyxcclxuICAvKipcclxuICAgKiB0aGUgbHlyaWMgZm9udFxyXG4gICAqL1xyXG4gIGZvbnRJbmZvOiBGb250SW5mbyxcclxuICAvKipcclxuICAgKiBjbGFzc2VzIGZvciBzdHlsaW5nXHJcbiAgICovXHJcbiAgY2xhc3Nlczogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIHdoaWNoIHZlcnNlIHRoZSBseXJpYyBnb2VzIHdpdGhcclxuICAgKi9cclxuICB2ZXJzZTogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIGx5cmljcyBhcmUgdXNlZCBmb3IgY2hvcmQgY2hhbmdlcyBvciBhbm5vdGF0aW9ucywgcGFyc2VyIGlzIGRpZmZlcmVudCBmb3IgZWFjaFxyXG4gICAqL1xyXG4gIHBhcnNlcjogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIGluZGljYXRlcyB3ZSBzaG91bGQgZm9ybWF0IGZvciB0aGUgd2lkdGggb2YgdGhlIGx5cmljXHJcbiAgICovXHJcbiAgYWRqdXN0Tm90ZVdpZHRoTHlyaWM6IGJvb2xlYW4sXHJcbiAgLyoqXHJcbiAgICogaW5kaWNhdGVzIHdlIHNob3VsZCBmb3JtYXQgZm9yIHRoZSB3aWR0aCBvZiB0aGUgY2hvcmRcclxuICAgKi9cclxuICBhZGp1c3ROb3RlV2lkdGhDaG9yZDogYm9vbGVhbixcclxuICAvKipcclxuICAgKiBmaWxsIGNvbG9yIGZvciB0ZXh0XHJcbiAgICovXHJcbiAgZmlsbDogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIHRyYW5zbGF0ZSB0byBhbGlnbiBseXJpY3MuICBQb3NzaWJseSB0aGlzIHNob3VsZCBub3QgYmUgc2VyaWFsaXplZFxyXG4gICAqL1xyXG4gIHRyYW5zbGF0ZVg6IG51bWJlcixcclxuICAvKipcclxuICAgKiB0cmFuc2xhdGUgdG8gYWxpZ24gbHlyaWNzLiAgUG9zc2libHkgdGhpcyBzaG91bGQgbm90IGJlIHNlcmlhbGl6ZWRcclxuICAgKi9cclxuICB0cmFuc2xhdGVZOiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogdGhlIGFjdHVhbCB0ZXh0XHJcbiAgICovXHJcbiAgdGV4dDogc3RyaW5nIHwgbnVsbFxyXG59XHJcblxyXG5mdW5jdGlvbiBpc1Ntb0x5cmljUGVyc2lzdChwYXJhbXM6IFBhcnRpYWw8U21vTHlyaWNQYXJhbXNTZXI+KTogcGFyYW1zIGlzIFNtb0x5cmljUGFyYW1zU2VyIHtcclxuICBpZiAodHlwZW9mKHBhcmFtcy5jdG9yKSAhPT0gJ3N0cmluZycgfHwgcGFyYW1zLmN0b3IgIT09ICdTbW9MeXJpYycpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuLyoqXHJcbiAqIFVzZWQgdG8gY29uc3RydWN0IGEge0BsaW5rIFNtb0x5cmljfSBmb3IgYm90aCBjaG9yZHMgYW5kIGx5cmljc1xyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0x5cmljUGFyYW1zIHtcclxuICAvKipcclxuICAgKiB0aGUgbHlyaWMgZm9udFxyXG4gICAqL1xyXG4gIGZvbnRJbmZvOiBGb250SW5mbyxcclxuICAvKipcclxuICAgKiBjbGFzc2VzIGZvciBzdHlsaW5nXHJcbiAgICovXHJcbiAgY2xhc3Nlczogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIHdoaWNoIHZlcnNlIHRoZSBseXJpYyBnb2VzIHdpdGhcclxuICAgKi9cclxuICB2ZXJzZTogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIGx5cmljcyBhcmUgdXNlZCBmb3IgY2hvcmQgY2hhbmdlcyBvciBhbm5vdGF0aW9ucywgcGFyc2VyIGlzIGRpZmZlcmVudCBmb3IgZWFjaFxyXG4gICAqL1xyXG4gIHBhcnNlcjogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIGluZGljYXRlcyB3ZSBzaG91bGQgZm9ybWF0IGZvciB0aGUgd2lkdGggb2YgdGhlIGx5cmljXHJcbiAgICovXHJcbiAgYWRqdXN0Tm90ZVdpZHRoTHlyaWM6IGJvb2xlYW4sXHJcbiAgLyoqXHJcbiAgICogaW5kaWNhdGVzIHdlIHNob3VsZCBmb3JtYXQgZm9yIHRoZSB3aWR0aCBvZiB0aGUgY2hvcmRcclxuICAgKi9cclxuICBhZGp1c3ROb3RlV2lkdGhDaG9yZDogYm9vbGVhbixcclxuICAvKipcclxuICAgKiBmaWxsIGNvbG9yIGZvciB0ZXh0XHJcbiAgICovXHJcbiAgZmlsbDogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIHRyYW5zbGF0ZSB0byBhbGlnbiBseXJpY3MuICBQb3NzaWJseSB0aGlzIHNob3VsZCBub3QgYmUgc2VyaWFsaXplZFxyXG4gICAqL1xyXG4gIHRyYW5zbGF0ZVg6IG51bWJlcixcclxuICAvKipcclxuICAgKiB0cmFuc2xhdGUgdG8gYWxpZ24gbHlyaWNzLiAgUG9zc2libHkgdGhpcyBzaG91bGQgbm90IGJlIHNlcmlhbGl6ZWRcclxuICAgKi9cclxuICB0cmFuc2xhdGVZOiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogdGhlIGFjdHVhbCB0ZXh0XHJcbiAgICovXHJcbiAgdGV4dDogc3RyaW5nIHwgbnVsbFxyXG59XHJcblxyXG4vKipcclxuICogU21vTHlyaWMgY292ZXJzIGJvdGggY2hvcmRzIGFuZCBseXJpY3MuICBUaGUgcGFyc2VyIHRlbGxzIHlvdSB3aGljaFxyXG4gKiBvbmUgeW91IGdldC5cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNtb0x5cmljIGV4dGVuZHMgU21vTm90ZU1vZGlmaWVyQmFzZSB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IHBhcnNlcnM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XHJcbiAgICBseXJpYzogMCwgYW5heWx5c2lzOiAxLCBjaG9yZDogMlxyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb0x5cmljUGFyYW1zIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgY3RvcjogJ1Ntb0x5cmljJyxcclxuICAgICAgdGV4dDogJ1xceGEwJyxcclxuICAgICAgZW5kQ2hhcjogJycsXHJcbiAgICAgIHZlcnNlOiAwLFxyXG4gICAgICBmb250SW5mbzoge1xyXG4gICAgICAgIHNpemU6IDEyLFxyXG4gICAgICAgIGZhbWlseTogJ3RpbWVzJyxcclxuICAgICAgICBzdHlsZTogJ25vcm1hbCcsXHJcbiAgICAgICAgd2VpZ2h0OiAnbm9ybWFsJ1xyXG4gICAgICB9LFxyXG4gICAgICBmaWxsOiAnYmxhY2snLFxyXG4gICAgICBjbGFzc2VzOiAnc2NvcmUtdGV4dCcsXHJcbiAgICAgIHRyYW5zbGF0ZVg6IDAsXHJcbiAgICAgIHRyYW5zbGF0ZVk6IDAsXHJcbiAgICAgIGFkanVzdE5vdGVXaWR0aEx5cmljOiB0cnVlLFxyXG4gICAgICBhZGp1c3ROb3RlV2lkdGhDaG9yZDogZmFsc2UsXHJcbiAgICAgIHBhcnNlcjogU21vTHlyaWMucGFyc2Vycy5seXJpY1xyXG4gICAgfSkpO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IHN5bWJvbFBvc2l0aW9uKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgU1VQRVJTQ1JJUFQ6IDEsXHJcbiAgICAgIFNVQlNDUklQVDogMixcclxuICAgICAgTk9STUFMOiAzXHJcbiAgICB9O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IHBlcnNpc3RBcnJheSgpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBydjogc3RyaW5nW10gPSBbXTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gU21vTHlyaWMuZGVmYXVsdHMpIHtcclxuICAgICAgcnYucHVzaChrZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IHBhcmFtZXRlckFycmF5KCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHJ2ID0gU21vTHlyaWMucGVyc2lzdEFycmF5O1xyXG4gICAgcnYucHVzaCgnc2VsZWN0b3InLCAndGV4dCcpO1xyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuXHJcbiAgY3Rvcjogc3RyaW5nID0gJ1Ntb0x5cmljJztcclxuICB0ZXh0OiBzdHJpbmcgPSAnJztcclxuICBmb250SW5mbzogRm9udEluZm8gPSB7XHJcbiAgICBzaXplOiAxMixcclxuICAgIGZhbWlseTogJ01lcnJpd2VhdGhlcicsXHJcbiAgICBzdHlsZTogJ25vcm1hbCcsXHJcbiAgICB3ZWlnaHQ6ICdub3JtYWwnXHJcbiAgfTtcclxuICBwYXJzZXI6IG51bWJlciA9IFNtb0x5cmljLnBhcnNlcnMubHlyaWM7XHJcbiAgc2VsZWN0b3I6IHN0cmluZyB8IG51bGwgPSBudWxsOyAvLyB1c2VkIGJ5IFVJXHJcbiAgYWRqdXN0Tm90ZVdpZHRoTHlyaWM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGFkanVzdE5vdGVXaWR0aENob3JkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmVyc2U6IG51bWJlciA9IDA7XHJcbiAgc2tpcFJlbmRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZpbGw6IHN0cmluZyA9ICcnO1xyXG4gIHRyYW5zbGF0ZVg6IG51bWJlciA9IDA7XHJcbiAgdHJhbnNsYXRlWTogbnVtYmVyID0gMDtcclxuICBjbGFzc2VzOiBzdHJpbmcgPSAnJztcclxuICAvLyB1c2VkIGJ5IHRoZSByZW5kZXJlciB0byBjYWxjdWxhdGUgb2Zmc2V0cyBmb3IgYWxpZ25pbmcgbHlyaWNzXHJcbiAgYWRqWDogbnVtYmVyID0gMDtcclxuICBhZGpZOiBudW1iZXIgPSAwO1xyXG4gIC8vIHVzZWQgYnkgdGhlIHJlbmRlcmVyIHRvIGNhbGN1bGF0ZSB0aGUgeSBvZmZzZXQgZm9yIG11c2ljIHRoYXQgZ29lcyBiZWxvdyB0aGUgc3RhZmZcclxuICBtdXNpY1lPZmZzZXQ6IG51bWJlciA9IDA7XHJcbiAgaHlwaGVuWDogbnVtYmVyID0gMDtcclxuICBkZWxldGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNlcmlhbGl6ZSgpOiBTbW9MeXJpY1BhcmFtc1NlciB7XHJcbiAgICB2YXIgcGFyYW1zOiBQYXJ0aWFsPFNtb0x5cmljUGFyYW1zU2VyPiA9IHsgY3RvcjogJ1Ntb0x5cmljJyB9O1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZU5vbkRlZmF1bHQoU21vTHlyaWMuZGVmYXVsdHMsXHJcbiAgICAgIFNtb0x5cmljLnBlcnNpc3RBcnJheSwgdGhpcywgcGFyYW1zKTtcclxuICAgIGlmICghaXNTbW9MeXJpY1BlcnNpc3QocGFyYW1zKSkge1xyXG4gICAgICB0aHJvdyAnYmFkIGx5cmljICcgKyBKU09OLnN0cmluZ2lmeSgncGFyYW1zJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuICAvLyBGb3IgbHlyaWNzLCB3ZSBkZWZhdWx0IHRvIGFkanVzdCBub3RlIHdpZHRoIG9uIGx5cmljIHNpemUuICBGb3IgY2hvcmRzLCB0aGlzIGlzIGFsbW9zdCBuZXZlciB3aGF0XHJcbiAgLy8geW91IHdhbnQsIHNvIGl0IGlzIG9mZiBieSBkZWZhdWx0LlxyXG4gIGdldCBhZGp1c3ROb3RlV2lkdGgoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMucGFyc2VyID09PSBTbW9MeXJpYy5wYXJzZXJzLmx5cmljKSA/IHRoaXMuYWRqdXN0Tm90ZVdpZHRoTHlyaWMgOiB0aGlzLmFkanVzdE5vdGVXaWR0aENob3JkO1xyXG4gIH1cclxuICBzZXQgYWRqdXN0Tm90ZVdpZHRoKHZhbCkge1xyXG4gICAgaWYgKHRoaXMucGFyc2VyID09PSBTbW9MeXJpYy5wYXJzZXJzLmx5cmljKSB7XHJcbiAgICAgIHRoaXMuYWRqdXN0Tm90ZVdpZHRoTHlyaWMgPSB2YWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkanVzdE5vdGVXaWR0aENob3JkID0gdmFsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gIyMjIGdldENsYXNzU2VsZWN0b3JcclxuICAvLyByZXR1cm5zIGEgc2VsZWN0b3IgdXNlZCB0byBmaW5kIHRoaXMgdGV4dCBibG9jayB3aXRoaW4gYSBub3RlLlxyXG4gIGdldENsYXNzU2VsZWN0b3IoKTogc3RyaW5nIHtcclxuICAgIHZhciBwYXJzZXIgPSAodGhpcy5wYXJzZXIgPT09IFNtb0x5cmljLnBhcnNlcnMubHlyaWMgPyAnbHlyaWMnIDogJ2Nob3JkJyk7XHJcbiAgICByZXR1cm4gJ2cuJyArIHBhcnNlciArICctJyArIHRoaXMudmVyc2U7XHJcbiAgfVxyXG5cclxuICBzZXRUZXh0KHRleHQ6IHN0cmluZykge1xyXG4gICAgLy8gRm9yIGNob3JkcywgdHJpbSBhbGwgd2hpdGVzcGFjZVxyXG4gICAgaWYgKHRoaXMucGFyc2VyICE9PSBTbW9MeXJpYy5wYXJzZXJzLmx5cmljKSB7XHJcbiAgICAgIGlmICh0ZXh0LnRyaW0oKS5sZW5ndGgpIHtcclxuICAgICAgICB0ZXh0LnJlcGxhY2UoL1xccy9nLCAnJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudGV4dCA9IHRleHQ7XHJcbiAgfVxyXG5cclxuICBpc0h5cGhlbmF0ZWQoKSB7XHJcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy50ZXh0LnRyaW0oKTtcclxuICAgIHJldHVybiB0aGlzLnBhcnNlciA9PT0gU21vTHlyaWMucGFyc2Vycy5seXJpYyAmJlxyXG4gICAgICB0ZXh0Lmxlbmd0aCAmJlxyXG4gICAgICB0ZXh0W3RleHQubGVuZ3RoIC0gMV0gPT09ICctJztcclxuICB9XHJcblxyXG4gIGdldFRleHQoKSB7XHJcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy50ZXh0LnRyaW0oKTtcclxuICAgIGlmICh0aGlzLmlzSHlwaGVuYXRlZCgpKSB7XHJcbiAgICAgIHJldHVybiBzbW9TZXJpYWxpemUudHJ5UGFyc2VVbmljb2RlKHRleHQuc3Vic3RyKDAsIHRleHQubGVuZ3RoIC0gMSkpLnRyaW0oKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzbW9TZXJpYWxpemUudHJ5UGFyc2VVbmljb2RlKHRleHQpO1xyXG4gIH1cclxuXHJcbiAgaXNEYXNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VGV4dCgpLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmlzSHlwaGVuYXRlZCgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIF9jaG9yZEdseXBoRnJvbUNvZGUoY29kZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZ2V0Q2hvcmRTeW1ib2xHbHlwaEZyb21Db2RlKGNvZGUpO1xyXG4gIH1cclxuICBzdGF0aWMgX3Rva2VuaXplQ2hvcmRTdHJpbmcoc3RyOiBzdHJpbmcpIHtcclxuICAgIC8vIHZhciBzdHIgPSB0aGlzLl90ZXh0O1xyXG4gICAgY29uc3QgcmVnID0gL14oW0EtWnxhLXp8MC05fF0rKS9nO1xyXG4gICAgbGV0IG1tbSA9IHN0ci5tYXRjaChyZWcpO1xyXG4gICAgbGV0IHRva2VUeXBlOiBzdHJpbmcgPSAnJztcclxuICAgIGxldCB0b2tlOiBzdHJpbmcgPSAnJztcclxuICAgIGNvbnN0IHRva2Vuczogc3RyaW5nW10gPSBbXTtcclxuICAgIHdoaWxlIChzdHIubGVuZ3RoKSB7XHJcbiAgICAgIGlmICghbW1tKSB7XHJcbiAgICAgICAgdG9rZVR5cGUgPSBzdHJbMF07XHJcbiAgICAgICAgdG9rZW5zLnB1c2godG9rZVR5cGUpO1xyXG4gICAgICAgIHN0ciA9IHN0ci5zbGljZSgxLCBzdHIubGVuZ3RoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0b2tlID0gbW1tWzBdLnN1YnN0cigwLCBtbW1bMF0ubGVuZ3RoKTtcclxuICAgICAgICBzdHIgPSBzdHIuc2xpY2UodG9rZS5sZW5ndGgsIHN0ci5sZW5ndGgpO1xyXG4gICAgICAgIHRva2Vucy5wdXNoKHRva2UpO1xyXG4gICAgICAgIHRva2VUeXBlID0gJyc7XHJcbiAgICAgICAgdG9rZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIG1tbSA9IHN0ci5tYXRjaChyZWcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRva2VucztcclxuICB9XHJcblxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocGFyYW1ldGVyczogU21vTHlyaWNQYXJhbXMpIHtcclxuICAgIHN1cGVyKCdTbW9MeXJpYycpO1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZShTbW9MeXJpYy5wYXJhbWV0ZXJBcnJheSwgU21vTHlyaWMuZGVmYXVsdHMsIHRoaXMpO1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZShTbW9MeXJpYy5wYXJhbWV0ZXJBcnJheSwgcGFyYW1ldGVycywgdGhpcyk7XHJcbiAgICBpZiAodHlwZW9mKHRoaXMuZm9udEluZm8uc2l6ZSkgIT09ICdudW1iZXInKSB7XHJcbiAgICAgIHRoaXMuZm9udEluZm8uc2l6ZSA9IFNtb0x5cmljLmRlZmF1bHRzLmZvbnRJbmZvLnNpemU7XHJcbiAgICB9XHJcbiAgICAvLyBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBmb3IgbHlyaWMgdGV4dFxyXG4gICAgaWYgKHBhcmFtZXRlcnMudGV4dCkge1xyXG4gICAgICB0aGlzLnRleHQgPSBwYXJhbWV0ZXJzLnRleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY2FsY3VsYXRlZCBhZGp1c3RtZW50cyBmb3IgYWxpZ25tZW50IHB1cnBvc2VzXHJcbiAgICB0aGlzLmFkalkgPSAwO1xyXG4gICAgdGhpcy5hZGpYID0gMDtcclxuICAgIC8vIHRoaXMudmVyc2UgPSBwYXJzZUludCh0aGlzLnZlcnNlLCAxMCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmF0dHJzKSB7XHJcbiAgICAgIHRoaXMuYXR0cnMgPSB7XHJcbiAgICAgICAgaWQ6IGdldElkKCkudG9TdHJpbmcoKSxcclxuICAgICAgICB0eXBlOiAnU21vTHlyaWMnXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogVGhlIHBlcnNpc3RlZCBiaXRzIG9mIHtAbGluayBTbW9EeW5hbWljVGV4dFBhcmFtc31cclxuICogQGNhdGVnb3J5IHNlcmlhbGl6YXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vRHluYW1pY1RleHRTZXIgZXh0ZW5kcyBTbW9PYmplY3RQYXJhbXMge1xyXG4gIGN0b3I6IHN0cmluZyxcclxuICB4T2Zmc2V0OiBudW1iZXIsXHJcbiAgZm9udFNpemU6IG51bWJlcixcclxuICB5T2Zmc2V0TGluZTogbnVtYmVyLFxyXG4gIHlPZmZzZXRQaXhlbHM6IG51bWJlcixcclxuICB0ZXh0OiBzdHJpbmdcclxufVxyXG4vKipcclxuICogQ29uc3RydWN0b3IgcGFyYW1ldGVycyBmb3Ige0BsaW5rIFNtb0R5bmFtaWNUZXh0fVxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0R5bmFtaWNUZXh0UGFyYW1zIGV4dGVuZHMgU21vRHluYW1pY1RleHRTZXIge1xyXG4gIGN0b3I6IHN0cmluZyxcclxuICB4T2Zmc2V0OiBudW1iZXIsXHJcbiAgZm9udFNpemU6IG51bWJlcixcclxuICB5T2Zmc2V0TGluZTogbnVtYmVyLFxyXG4gIHlPZmZzZXRQaXhlbHM6IG51bWJlcixcclxuICB0ZXh0OiBzdHJpbmdcclxufVxyXG5cclxuLyoqXHJcbiAqIER5bmFtaWMgdGV4dCB0ZWxscyB5b3UgaG93IGxvdWQgbm90IHRvIHBsYXkuXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9EeW5hbWljVGV4dCBleHRlbmRzIFNtb05vdGVNb2RpZmllckJhc2Uge1xyXG4gIHN0YXRpYyBnZXQgZHluYW1pY3MoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICAvLyBtYXRjaGVzIFZGLm1vZGlmaWVyXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBQUDogJ3BwJyxcclxuICAgICAgUDogJ3AnLFxyXG4gICAgICBNUDogJ21wJyxcclxuICAgICAgTUY6ICdtZicsXHJcbiAgICAgIEY6ICdmJyxcclxuICAgICAgRkY6ICdmZicsXHJcbiAgICAgIFNGWjogJ3NmeidcclxuICAgIH07XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKTogU21vRHluYW1pY1RleHRQYXJhbXMge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBjdG9yOiAnU21vRHluYW1pY1RleHQnLFxyXG4gICAgICB4T2Zmc2V0OiAwLFxyXG4gICAgICBmb250U2l6ZTogZGVmYXVsdE5vdGVTY2FsZSxcclxuICAgICAgeU9mZnNldExpbmU6IDExLFxyXG4gICAgICB5T2Zmc2V0UGl4ZWxzOiAwLFxyXG4gICAgICB0ZXh0OiBTbW9EeW5hbWljVGV4dC5keW5hbWljcy5NUCxcclxuICAgIH0pKTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBwZXJzaXN0QXJyYXkoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgcnY6IHN0cmluZ1tdID0gW107XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICAgIGZvciAoY29uc3Qga2V5IGluIFNtb0R5bmFtaWNUZXh0LmRlZmF1bHRzKSB7XHJcbiAgICAgIHJ2LnB1c2goa2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBydjtcclxuICB9XHJcbiAgc3RhdGljIGdldCBwYXJhbWV0ZXJBcnJheSgpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBydiA9IFNtb0R5bmFtaWNUZXh0LnBlcnNpc3RBcnJheTtcclxuICAgIHJ2LnB1c2goJ3NlbGVjdG9yJyk7XHJcbiAgICByZXR1cm4gcnY7XHJcbiAgfVxyXG4gIHRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHlPZmZzZXRMaW5lOiBudW1iZXIgPSAxMTtcclxuICB5T2Zmc2V0UGl4ZWxzOiBudW1iZXIgPSAwO1xyXG4gIHhPZmZzZXQ6IG51bWJlciA9IDA7XHJcbiAgZm9udFNpemU6IG51bWJlciA9IGRlZmF1bHROb3RlU2NhbGU7XHJcbiAgc2VyaWFsaXplKCk6IG9iamVjdCB7XHJcbiAgICB2YXIgcGFyYW1zID0ge307XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlTm9uRGVmYXVsdChTbW9EeW5hbWljVGV4dC5kZWZhdWx0cyxcclxuICAgICAgU21vRHluYW1pY1RleHQucGVyc2lzdEFycmF5LCB0aGlzLCBwYXJhbXMpO1xyXG4gICAgcmV0dXJuIHBhcmFtcztcclxuICB9XHJcbiAgY29uc3RydWN0b3IocGFyYW1ldGVyczogU21vRHluYW1pY1RleHRQYXJhbXMpIHtcclxuICAgIHN1cGVyKCdTbW9EeW5hbWljVGV4dCcpO1xyXG4gICAgc21vU2VyaWFsaXplLnZleE1lcmdlKHRoaXMsIFNtb0R5bmFtaWNUZXh0LmRlZmF1bHRzKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5maWx0ZXJlZE1lcmdlKFNtb0R5bmFtaWNUZXh0LnBhcmFtZXRlckFycmF5LCBwYXJhbWV0ZXJzLCB0aGlzKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXR0cnMpIHtcclxuICAgICAgdGhpcy5hdHRycyA9IHtcclxuICAgICAgICBpZDogZ2V0SWQoKS50b1N0cmluZygpLFxyXG4gICAgICAgIHR5cGU6ICdTbW9EeW5hbWljVGV4dCdcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb1RhYkJlbmQge1xyXG4gIGJlbmRUeXBlOiBudW1iZXIsXHJcbiAgcmVsZWFzZTogYm9vbGVhbixcclxuICB0ZXh0OiBzdHJpbmdcclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9GcmV0UG9zaXRpb24ge1xyXG4gIHN0cmluZzogbnVtYmVyLFxyXG4gIGZyZXQ6IG51bWJlclxyXG59XHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb1RhYk5vdGVQYXJhbXMge1xyXG4gIHBvc2l0aW9uczogU21vRnJldFBvc2l0aW9uW11cclxuICBub3RlSWQ6IHN0cmluZyxcclxuICBmbGFnU3RhdGU6IG51bWJlcixcclxuICBmbGFnVGhyb3VnaDogYm9vbGVhbixcclxuICBub3RlSGVhZDogbnVtYmVyLFxyXG4gIGlzQXNzaWduZWQ6IGJvb2xlYW5cclxufVxyXG5cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBzZXJpYWxpemF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb1RhYk5vdGVQYXJhbXNTZXIgZXh0ZW5kcyBTbW9UYWJOb3RlUGFyYW1zIHtcclxuICBjdG9yOiBzdHJpbmdcclxufVxyXG5cclxuZnVuY3Rpb24gaXNTbW9UYWJOb3RlUGFyYW1zU2VyKHBhcmFtczogUGFydGlhbDxTbW9UYWJOb3RlUGFyYW1zU2VyPik6IHBhcmFtcyBpcyBTbW9UYWJOb3RlUGFyYW1zU2VyIHtcclxuICBpZiAodHlwZW9mKHBhcmFtcy5jdG9yKSAhPT0gJ3N0cmluZycgfHwgcGFyYW1zLmN0b3IgIT09ICdTbW9UYWJOb3RlJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNtb1RhYk5vdGUgZXh0ZW5kcyBTbW9Ob3RlTW9kaWZpZXJCYXNlIHtcclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb1RhYk5vdGVQYXJhbXMgIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgcG9zaXRpb25zOiBbXSxcclxuICAgICAgbm90ZUlkOiAnJyxcclxuICAgICAgaXNBc3NpZ25lZDogZmFsc2UsXHJcbiAgICAgIGZsYWdTdGF0ZTogU21vVGFiTm90ZS5mbGFnU3RhdGVzLk5vbmUsXHJcbiAgICAgIGZsYWdUaHJvdWdoOiBmYWxzZSxcclxuICAgICAgbm90ZUhlYWQ6IFNtb1RhYk5vdGUubm90ZUhlYWRzLm51bWJlclxyXG4gICAgfSkpO1xyXG4gIH1cclxuICBwb3NpdGlvbnM6IFNtb0ZyZXRQb3NpdGlvbltdO1xyXG4gIG5vdGVJZDogc3RyaW5nO1xyXG4gIGlzQXNzaWduZWQ6IGJvb2xlYW47XHJcbiAgbm90ZUhlYWQ6IG51bWJlcjtcclxuICBmbGFnU3RhdGU6IG51bWJlcjtcclxuICBmbGFnVGhyb3VnaDogYm9vbGVhbjtcclxuICBzdGF0aWMgZ2V0IGZsYWdTdGF0ZXMoKSB7XHJcbiAgICByZXR1cm4geyBOb25lOiAwLCBVcDogMSwgRG93bjogLTEgfTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBub3RlSGVhZHMoKSB7XHJcbiAgICByZXR1cm4geyBudW1iZXI6IDAsIHg6IDEgfTtcclxuICB9XHJcbiAgY29uc3RydWN0b3IocGFyYW1zOiBTbW9UYWJOb3RlUGFyYW1zKSB7XHJcbiAgICBzdXBlcignU21vVGFiTm90ZScpO1xyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBwYXJhbXMucG9zaXRpb25zXHJcbiAgICB0aGlzLm5vdGVJZCA9ICBwYXJhbXMubm90ZUlkO1xyXG4gICAgdGhpcy5pc0Fzc2lnbmVkID0gcGFyYW1zLmlzQXNzaWduZWQ7XHJcbiAgICB0aGlzLm5vdGVIZWFkID0gcGFyYW1zLm5vdGVIZWFkO1xyXG4gICAgdGhpcy5mbGFnU3RhdGUgPSBwYXJhbXMuZmxhZ1N0YXRlO1xyXG4gICAgdGhpcy5mbGFnVGhyb3VnaCA9IHBhcmFtcy5mbGFnVGhyb3VnaDtcclxuICB9XHJcbiAgc2VyaWFsaXplKCk6IFNtb1RhYk5vdGVQYXJhbXNTZXIge1xyXG4gICAgdmFyIHBhcmFtcyA9IHsgY3RvcjogJ1Ntb1RhYk5vdGUnIH07XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlTm9uRGVmYXVsdChTbW9UYWJOb3RlLmRlZmF1bHRzLFxyXG4gICAgICBbJ3Bvc2l0aW9ucycsICdub3RlSWQnLCAnaXNBc3NpZ25lZCcsICdub3RlSGVhZCcsICdmbGFnU3RhdGUnLCAnZmxhZ1Rocm91Z2gnXSwgdGhpcywgcGFyYW1zKTtcclxuICAgIGlmICghaXNTbW9UYWJOb3RlUGFyYW1zU2VyKHBhcmFtcykpIHtcclxuICAgICAgdGhyb3cgJ2JhZCBwYXJhbXMgaW4gU21vVGFiTm90ZSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxufVxyXG5leHBvcnQgY29uc3Qgbm90ZU1vZGlmaWVyRHluYW1pY0N0b3JJbml0ID0gKCkgPT4ge1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9BcnBlZ2dpbyddID0gKHBhcmFtczogU21vQXJwZWdnaW9QYXJhbXMpID0+IG5ldyBTbW9BcnBlZ2dpbyhwYXJhbXMpO1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9NaWNyb3RvbmUnXSA9IChwYXJhbXM6IFNtb01pY3JvdG9uZVBhcmFtcykgPT4gbmV3IFNtb01pY3JvdG9uZShwYXJhbXMpO1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9Pcm5hbWVudCddID0gKHBhcmFtczogU21vT3JuYW1lbnRQYXJhbXMpID0+IG5ldyBTbW9Pcm5hbWVudChwYXJhbXMpO1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9HcmFjZU5vdGUnXSA9IChwYXJhbXM6IEdyYWNlTm90ZVBhcmFtcykgPT4gbmV3IFNtb0dyYWNlTm90ZShwYXJhbXMpO1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9BcnRpY3VsYXRpb24nXSA9IChwYXJhbXM6IFNtb0FydGljdWxhdGlvblBhcmFtZXRlcnMpID0+IG5ldyBTbW9BcnRpY3VsYXRpb24ocGFyYW1zKTtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vTHlyaWMnXSA9IChwYXJhbXM6IFNtb0x5cmljUGFyYW1zKSA9PiBuZXcgU21vTHlyaWMocGFyYW1zKTtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vRHluYW1pY1RleHQnXSA9IChwYXJhbXM6IFNtb0R5bmFtaWNUZXh0UGFyYW1zKSA9PiBuZXcgU21vRHluYW1pY1RleHQocGFyYW1zKTtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vVGFiTm90ZSddID0gKHBhcmFtczogU21vVGFiTm90ZVBhcmFtcykgPT4gbmV3IFNtb1RhYk5vdGUocGFyYW1zKTtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vQ2xlZkNoYW5nZSddID0gKHBhcmFtczogU21vQ2xlZkNoYW5nZVBhcmFtcykgPT4gbmV3IFNtb0NsZWZDaGFuZ2UocGFyYW1zKTtcclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/smo/data/noteModifiers.ts\n");
|
|
537
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SmoArpeggio: () => (/* binding */ SmoArpeggio),\n/* harmony export */ SmoArpeggioTypes: () => (/* binding */ SmoArpeggioTypes),\n/* harmony export */ SmoArticulation: () => (/* binding */ SmoArticulation),\n/* harmony export */ SmoClefChange: () => (/* binding */ SmoClefChange),\n/* harmony export */ SmoDynamicText: () => (/* binding */ SmoDynamicText),\n/* harmony export */ SmoGraceNote: () => (/* binding */ SmoGraceNote),\n/* harmony export */ SmoLyric: () => (/* binding */ SmoLyric),\n/* harmony export */ SmoMicrotone: () => (/* binding */ SmoMicrotone),\n/* harmony export */ SmoNoteBar: () => (/* binding */ SmoNoteBar),\n/* harmony export */ SmoNoteModifierBase: () => (/* binding */ SmoNoteModifierBase),\n/* harmony export */ SmoOrnament: () => (/* binding */ SmoOrnament),\n/* harmony export */ SmoTabNote: () => (/* binding */ SmoTabNote),\n/* harmony export */ isArpeggioType: () => (/* binding */ isArpeggioType),\n/* harmony export */ isClefChangeParamsSer: () => (/* binding */ isClefChangeParamsSer),\n/* harmony export */ noteModifierDynamicCtorInit: () => (/* binding */ noteModifierDynamicCtorInit)\n/* harmony export */ });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common */ \"./src/smo/data/common.ts\");\n/* harmony import */ var _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/serializationHelpers */ \"./src/common/serializationHelpers.js\");\n/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./music */ \"./src/smo/data/music.ts\");\n/* harmony import */ var _common_vex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/vex */ \"./src/common/vex.ts\");\n// [Smoosic](https://github.com/AaronDavidNewman/Smoosic)\n// Copyright (c) Aaron David Newman 2021.\n/**\n * A note modifier is anything that is mapped to the note, but not part of the\n * pitch itself. This includes grace notes, and note-text like lyrics.\n * @module /smo/data/noteModifiers\n */\n\n\n\n\n/**\n * A note modifier is anything that is mapped to the note, but not part of the\n * pitch itself. This includes grace notes, and note-text like lyrics.\n * All note modifiers have a serialize method and a 'ctor' parameter or deserialization\n * @category SmoObject\n */\nclass SmoNoteModifierBase {\n constructor(ctor) {\n this.logicalBox = null;\n this.element = null;\n this.attrs = {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_0__.getId)().toString(),\n type: ctor\n };\n this.ctor = ctor;\n }\n static deserialize(jsonObj) {\n // Handle backwards-compatibility thing\n if (jsonObj.ctor === 'SmoMicrotone' && typeof (jsonObj.pitch) === 'number') {\n jsonObj.pitchIndex = jsonObj.pitch;\n }\n if (jsonObj.ctor === 'SmoLyric') {\n if (typeof (jsonObj._text) === 'string') {\n jsonObj.text = jsonObj._text;\n }\n }\n if (typeof (_common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor[jsonObj.ctor]) === 'undefined') {\n console.log('ouch bad ctor for ' + jsonObj.ctor);\n }\n try {\n const rv = _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor[jsonObj.ctor](jsonObj);\n return rv;\n }\n catch (exp) {\n console.error('no ctor for ' + jsonObj.ctor);\n throw (exp);\n }\n }\n}\nfunction isClefChangeParamsSer(params) {\n if (typeof (params.clef) === 'string' && params.ctor === 'SmoClefChange') {\n return true;\n }\n return false;\n}\n/**\n * @category SmoObject\n */\nclass SmoClefChange extends SmoNoteModifierBase {\n static get defaults() {\n const rv = JSON.parse(JSON.stringify({\n clef: 'treble',\n ctor: 'SmoClefChange',\n attrs: {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_0__.getId)(),\n type: 'SmoClefChange'\n }\n }));\n return rv;\n }\n constructor(clefParams) {\n super('SmoClefChange');\n const clef = clefParams.clef;\n if (!(0,_common__WEBPACK_IMPORTED_MODULE_0__.IsClef)(clef)) {\n this.clef = 'treble';\n }\n else {\n this.clef = clef;\n }\n }\n serialize() {\n const params = { ctor: 'SmoClefChange' };\n params.clef = this.clef;\n if (!isClefChangeParamsSer(params)) {\n throw ('corrupt clef change');\n }\n return params;\n }\n}\nfunction isGraceNoteParamsSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoGraceNote') {\n return false;\n }\n return true;\n}\n/**\n * A grace notes has many of the things an 'actual' note can have, but it doesn't take up\n * time against the time signature\n * @category SmoObject\n */\nclass SmoGraceNote extends SmoNoteModifierBase {\n static get flagStates() {\n return { auto: 0, up: 1, down: 2 };\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n flagState: SmoGraceNote.flagStates.auto,\n noteType: 'n',\n beamBeats: 4096,\n endBeam: false,\n clef: 'treble',\n slash: false,\n ticks: {\n numerator: 4096,\n denominator: 1,\n remainder: 0\n },\n pitches: [{\n letter: 'b',\n octave: 4,\n accidental: ''\n }]\n }));\n }\n // TODO: Matches SmoNote - move to SmoMusic?\n static get parameterArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoGraceNote.defaults) {\n rv.push(key);\n }\n return rv;\n }\n tickCount() {\n return this.ticks.numerator / this.ticks.denominator + this.ticks.remainder;\n }\n toVexGraceNote() {\n const p = _music__WEBPACK_IMPORTED_MODULE_2__.SmoMusic.smoPitchesToVex(this.pitches);\n const rv = { duration: _music__WEBPACK_IMPORTED_MODULE_2__.SmoMusic.closestVexDuration(this.tickCount()), keys: p, slash: this.slash };\n return rv;\n }\n serialize() {\n const params = { ctor: 'SmoGraceNote' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoGraceNote.defaults, SmoGraceNote.parameterArray, this, params);\n if (!isGraceNoteParamsSer(params)) {\n throw 'bad grace note ' + JSON.stringify(params);\n }\n return params;\n }\n constructor(parameters) {\n super('SmoGraceNote');\n this.ticks = SmoGraceNote.defaults.ticks;\n this.pitches = [];\n this.slash = false;\n this.clef = 'treble';\n this.noteType = 'n';\n this.renderId = null;\n this.hasTabNote = false;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoGraceNote.parameterArray, SmoGraceNote.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoGraceNote.parameterArray, parameters, this);\n }\n}\nconst SmoArpeggioTypes = ['directionless', 'rasquedo_up', 'rasquedo_down',\n 'roll_up', 'roll_down', 'brush_up', 'brush_down', 'none'];\nfunction isSmoArpeggionParamsSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoArpeggio') {\n return false;\n }\n return true;\n}\nfunction isArpeggioType(tp) {\n return SmoArpeggioTypes.indexOf(tp) >= 0;\n}\n/**\n * A 'splatter' symbol next to a chord.\n * @category SmoObject\n */\nclass SmoArpeggio extends SmoNoteModifierBase {\n static get types() {\n if (typeof (SmoArpeggio._types['directionless']) === 'undefined') {\n SmoArpeggio._types['directionless'] = 7;\n SmoArpeggio._types['rasquedo_up'] = 6;\n SmoArpeggio._types['rasquedo_down'] = 5;\n SmoArpeggio._types['roll_up'] = 4;\n SmoArpeggio._types['roll_down'] = 3;\n SmoArpeggio._types['brush_up'] = 2;\n SmoArpeggio._types['brush_down'] = 1;\n SmoArpeggio._types['none'] = 0;\n }\n return SmoArpeggio._types;\n }\n constructor(params) {\n super('SmoArpeggio');\n this.typeCode = SmoArpeggio.types[params.type];\n }\n get typeString() {\n const str = SmoArpeggioTypes.find((x) => SmoArpeggio.types[x] === this.typeCode);\n const type = str ? str : 'none';\n return type;\n }\n serialize() {\n const rv = { ctor: 'SmoArpeggio' };\n const str = SmoArpeggioTypes.find((x) => SmoArpeggio.types[x] === this.typeCode);\n rv.type = str ? str : 'none';\n if (!isSmoArpeggionParamsSer(rv)) {\n throw 'bad arpeggio ' + JSON.stringify(rv);\n }\n return rv;\n }\n}\nSmoArpeggio._types = {};\nfunction isSmoMicrotoneParamsSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoMicrotone') {\n return false;\n }\n return true;\n}\n/**\n * Microtones are treated similarly to ornaments. There are not\n * rules for persisting throughout a measure, cancel etc.\n * @category SmoObject\n*/\nclass SmoMicrotone extends SmoNoteModifierBase {\n get toPitchCoeff() {\n return SmoMicrotone.pitchCoeff[this.tone];\n }\n get toVex() {\n return SmoMicrotone.smoToVex[this.tone];\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n ctor: 'SmoMicrotone',\n tone: 'flat25sz',\n pitch: 0\n }));\n }\n static get parameterArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoMicrotone.defaults) {\n rv.push(key);\n }\n return rv;\n }\n serialize() {\n const params = { ctor: 'SmoMicrotone' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoMicrotone.defaults, SmoMicrotone.parameterArray, this, params);\n if (!isSmoMicrotoneParamsSer(params)) {\n throw 'bad microtone ' + JSON.stringify(params);\n }\n return params;\n }\n constructor(parameters) {\n super(parameters.ctor);\n this.tone = 'flat75sz';\n this.pitchIndex = 0;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoMicrotone.parameterArray, SmoMicrotone.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoMicrotone.parameterArray, parameters, this);\n }\n}\n// This is how VexFlow notates them\nSmoMicrotone.smoToVex = {\n flat75sz: 'db',\n flat25sz: 'd',\n flat25ar: 'bs',\n flat125ar: 'afhf',\n sharp75: '++',\n sharp125: 'ashs',\n sharp25: '+',\n sori: 'o',\n koron: 'k'\n};\n// The audio frequency offsets\nSmoMicrotone.pitchCoeff = {\n flat75sz: -1.5,\n flat25sz: -0.5,\n flat25ar: -0.5,\n flat125ar: -2.5,\n sharp75: 1.5,\n sharp125: 2.5,\n sharp25: 0.5,\n sori: 0.5,\n koron: -0.5\n};\nfunction isSmoOrnamentParamsSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoOrnament') {\n return false;\n }\n return true;\n}\n/**\n * Ornaments map to vex ornaments. articulations vs. ornaments\n * is kind of arbitrary\n * @category SmoObject\n */\nclass SmoOrnament extends SmoNoteModifierBase {\n static get jazzOrnaments() {\n return ['scoop', 'fallLong', 'doit', 'doitLong', 'flip', 'smear', 'scoop', 'plungerOpen', 'plungerClosed', 'bend'];\n }\n static get legacyJazz() {\n return { 'SCOOP': SmoOrnament.ornaments.scoop,\n 'FALL_SHORT': SmoOrnament.ornaments.fall,\n 'FALL_LONG': SmoOrnament.ornaments.fallLong,\n 'DOIT': SmoOrnament.ornaments.doit,\n 'LIFT': SmoOrnament.ornaments.lift,\n 'FLIP': SmoOrnament.ornaments.flip,\n 'SMEAR': SmoOrnament.ornaments.smear\n };\n }\n toVex() {\n return SmoOrnament.ornaments[this.ornament];\n }\n isJazz() {\n return SmoOrnament.jazzOrnaments.indexOf(this.ornament) >= 0;\n }\n static get parameterArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoOrnament.defaults) {\n rv.push(key);\n }\n return rv;\n }\n static get positions() {\n return {\n above: 'above',\n below: 'below',\n auto: 'auto'\n };\n }\n static get offsets() {\n return {\n on: 'on',\n after: 'after'\n };\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n ctor: 'SmoOrnament',\n ornament: SmoOrnament.ornaments.mordent,\n position: SmoOrnament.positions.auto,\n offset: SmoOrnament.offsets.on\n }));\n }\n serialize() {\n var params = { ctor: 'SmoOrnament' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoOrnament.defaults, SmoOrnament.parameterArray, this, params);\n if (!isSmoOrnamentParamsSer(params)) {\n throw 'bad ornament ' + JSON.stringify(params);\n }\n return params;\n }\n constructor(parameters) {\n super('SmoOrnament');\n this.position = SmoOrnament.positions.above;\n this.offset = 'on';\n this.ornament = SmoOrnament.ornaments.mordent;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoOrnament.parameterArray, SmoOrnament.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoOrnament.parameterArray, parameters, this);\n // handle some legacy changes\n if (typeof (SmoOrnament.legacyJazz[this.ornament]) === 'string') {\n this.ornament = SmoOrnament.legacyJazz[this.ornament];\n }\n }\n}\nSmoOrnament.ornaments = {\n mordent: 'mordent',\n mordent_inverted: 'mordent_inverted',\n turn: 'turn',\n turn_inverted: 'turn_inverted',\n trill: 'tr',\n upprall: 'upprall',\n prallup: 'prallup',\n pralldown: 'pralldown',\n upmordent: 'upmordent',\n downmordent: 'downmordent',\n caesura: 'caesura',\n lineprall: 'lineprall',\n prallprall: 'prallprall',\n scoop: 'scoop',\n fall: 'fall',\n fallLong: 'fallLong',\n breath: 'breath',\n doit: 'doit',\n doitLong: 'doitLong',\n flip: 'flip',\n smear: 'smear',\n bend: 'bend',\n plungerClosed: 'plungerClosed',\n plungerOpen: 'plungerOpen'\n};\nSmoOrnament.xmlOrnaments = {\n mordent: 'mordent',\n mordent_inverted: 'inverted-mordent',\n turn: 'turn',\n turn_inverted: 'inverted-turn',\n upmordent: 'mordent',\n downmordent: 'mordent',\n lineprall: 'schleifer',\n prallprall: 'schleifer',\n prallup: 'schleifer',\n tr: 'trill-mark'\n};\nSmoOrnament.textNoteOrnaments = {\n breath: 'breath',\n caesura: 'caesura_straight'\n};\n// jazz ornaments in vex are articulations in music xml\nSmoOrnament.xmlJazz = {\n doit: 'doit',\n scoop: 'scoop',\n dropLong: 'falloff',\n drop: 'plop'\n};\nfunction isSmoArticulationParametersSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoArticulation') {\n return false;\n }\n return true;\n}\n/**\n * Articulations map to notes, can be placed above/below\n * @category SmoObject\n */\nclass SmoArticulation extends SmoNoteModifierBase {\n static get articulations() {\n return {\n accent: 'accent',\n staccato: 'staccato',\n marcato: 'marcato',\n tenuto: 'tenuto',\n upStroke: 'upStroke',\n downStroke: 'downStroke',\n pizzicato: 'pizzicato',\n bowUp: 'bowUp',\n bowDown: 'bowDown',\n fermata: 'fermata'\n };\n }\n static get positions() {\n return {\n above: 'above',\n below: 'below',\n auto: 'auto'\n };\n }\n static get articulationToVex() {\n return {\n accent: 'a>',\n staccato: 'a.',\n marcato: 'a^',\n tenuto: 'a-',\n upStroke: 'a|',\n downStroke: 'am',\n pizzicato: 'ao',\n fermata: 'a@a'\n };\n }\n static get vexToArticulation() {\n return {\n 'a>': 'accent',\n 'a.': 'staccato',\n 'a^': 'marcato',\n 'a-': 'tenuto',\n 'a|': 'upStroke',\n 'am': 'downStroke',\n 'ao': 'pizzicato',\n 'a@a': 'fermata'\n };\n }\n static get parameterArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoArticulation.defaults) {\n rv.push(key);\n }\n return rv;\n }\n static get positionToVex() {\n return {\n 'above': 3,\n 'below': 4\n };\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n ctor: 'SmoArticulation',\n position: SmoArticulation.positions.above,\n articulation: SmoArticulation.articulations.accent\n }));\n }\n serialize() {\n var params = { ctor: 'SmoArticulation' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoArticulation.defaults, SmoArticulation.parameterArray, this, params);\n if (!isSmoArticulationParametersSer(params)) {\n throw 'bad articulation ' + JSON.stringify(params);\n }\n return params;\n }\n constructor(parameters) {\n super('SmoArticulation');\n this.position = SmoOrnament.positions.above;\n this.offset = 0;\n this.articulation = SmoArticulation.articulations.accent;\n this.adjX = 0;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoArticulation.parameterArray, SmoArticulation.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoArticulation.parameterArray, parameters, this);\n // this.selector = parameters.selector;\n }\n}\nSmoArticulation.xmlArticulations = {\n accent: 'accent',\n staccato: 'staccato',\n tenuto: 'tenuto',\n marcato: 'strong-accent'\n};\nfunction isSmoLyricPersist(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoLyric') {\n return false;\n }\n return true;\n}\n/**\n * SmoLyric covers both chords and lyrics. The parser tells you which\n * one you get.\n * @category SmoObject\n */\nclass SmoLyric extends SmoNoteModifierBase {\n static get defaults() {\n return JSON.parse(JSON.stringify({\n ctor: 'SmoLyric',\n text: '\\xa0',\n endChar: '',\n verse: 0,\n fontInfo: {\n size: 12,\n family: 'times',\n style: 'normal',\n weight: 'normal'\n },\n fill: 'black',\n classes: 'score-text',\n translateX: 0,\n translateY: 0,\n adjustNoteWidthLyric: true,\n adjustNoteWidthChord: false,\n parser: SmoLyric.parsers.lyric\n }));\n }\n static get symbolPosition() {\n return {\n SUPERSCRIPT: 1,\n SUBSCRIPT: 2,\n NORMAL: 3\n };\n }\n static get persistArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoLyric.defaults) {\n rv.push(key);\n }\n return rv;\n }\n static get parameterArray() {\n const rv = SmoLyric.persistArray;\n rv.push('selector', 'text');\n return rv;\n }\n serialize() {\n var params = { ctor: 'SmoLyric' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoLyric.defaults, SmoLyric.persistArray, this, params);\n if (!isSmoLyricPersist(params)) {\n throw 'bad lyric ' + JSON.stringify('params');\n }\n return params;\n }\n // For lyrics, we default to adjust note width on lyric size. For chords, this is almost never what\n // you want, so it is off by default.\n get adjustNoteWidth() {\n return (this.parser === SmoLyric.parsers.lyric) ? this.adjustNoteWidthLyric : this.adjustNoteWidthChord;\n }\n set adjustNoteWidth(val) {\n if (this.parser === SmoLyric.parsers.lyric) {\n this.adjustNoteWidthLyric = val;\n }\n else {\n this.adjustNoteWidthChord = val;\n }\n }\n // ### getClassSelector\n // returns a selector used to find this text block within a note.\n getClassSelector() {\n var parser = (this.parser === SmoLyric.parsers.lyric ? 'lyric' : 'chord');\n return 'g.' + parser + '-' + this.verse;\n }\n setText(text) {\n // For chords, trim all whitespace\n if (this.parser !== SmoLyric.parsers.lyric) {\n if (text.trim().length) {\n text.replace(/\\s/g, '');\n }\n }\n this.text = text;\n }\n isHyphenated() {\n const text = this.text.trim();\n return this.parser === SmoLyric.parsers.lyric &&\n text.length &&\n text[text.length - 1] === '-';\n }\n getText() {\n const text = this.text.trim();\n if (this.isHyphenated()) {\n return _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.tryParseUnicode(text.substr(0, text.length - 1)).trim();\n }\n return _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.tryParseUnicode(text);\n }\n isDash() {\n return this.getText().length === 0 && this.isHyphenated();\n }\n static _chordGlyphFromCode(code) {\n return (0,_common_vex__WEBPACK_IMPORTED_MODULE_3__.getChordSymbolGlyphFromCode)(code);\n }\n static _tokenizeChordString(str) {\n // var str = this._text;\n const reg = /^([A-Z|a-z|0-9|]+)/g;\n let mmm = str.match(reg);\n let tokeType = '';\n let toke = '';\n const tokens = [];\n while (str.length) {\n if (!mmm) {\n tokeType = str[0];\n tokens.push(tokeType);\n str = str.slice(1, str.length);\n }\n else {\n toke = mmm[0].substr(0, mmm[0].length);\n str = str.slice(toke.length, str.length);\n tokens.push(toke);\n tokeType = '';\n toke = '';\n }\n mmm = str.match(reg);\n }\n return tokens;\n }\n constructor(parameters) {\n super('SmoLyric');\n this.ctor = 'SmoLyric';\n this.text = '';\n this.fontInfo = {\n size: 12,\n family: 'Merriweather',\n style: 'normal',\n weight: 'normal'\n };\n this.parser = SmoLyric.parsers.lyric;\n this.selector = null; // used by UI\n this.adjustNoteWidthLyric = true;\n this.adjustNoteWidthChord = false;\n this.verse = 0;\n this.skipRender = false;\n this.fill = '';\n this.translateX = 0;\n this.translateY = 0;\n this.classes = '';\n // used by the renderer to calculate offsets for aligning lyrics\n this.adjX = 0;\n this.adjY = 0;\n // used by the renderer to calculate the y offset for music that goes below the staff\n this.musicYOffset = 0;\n this.hyphenX = 0;\n this.deleted = false;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoLyric.parameterArray, SmoLyric.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoLyric.parameterArray, parameters, this);\n if (typeof (this.fontInfo.size) !== 'number') {\n this.fontInfo.size = SmoLyric.defaults.fontInfo.size;\n }\n // backwards-compatibility for lyric text\n if (parameters.text) {\n this.text = parameters.text;\n }\n // calculated adjustments for alignment purposes\n this.adjY = 0;\n this.adjX = 0;\n // this.verse = parseInt(this.verse, 10);\n if (!this.attrs) {\n this.attrs = {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_0__.getId)().toString(),\n type: 'SmoLyric'\n };\n }\n }\n}\nSmoLyric.parsers = {\n lyric: 0, anaylysis: 1, chord: 2\n};\nclass SmoNoteBar extends SmoNoteModifierBase {\n static get defaults() {\n return { barline: SmoNoteBar.barlines.noBar };\n }\n static get parameterArray() {\n return ['barline'];\n }\n constructor(parameters) {\n super('SmoNoteBar');\n this.barline = SmoNoteBar.defaults.barline;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoNoteBar.parameterArray, SmoNoteBar.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMerge(SmoLyric.parameterArray, parameters, this);\n }\n serialize() {\n const parameters = {};\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoNoteBar.defaults, SmoNoteBar.parameterArray, this, parameters);\n parameters.ctor = 'SmoNoteBar';\n return parameters;\n }\n}\nSmoNoteBar.barlines = {\n singleBar: 0,\n doubleBar: 1,\n endBar: 2,\n startRepeat: 3,\n endRepeat: 4,\n noBar: 5\n};\n/**\n * Dynamic text tells you how loud not to play.\n * @category SmoObject\n */\nclass SmoDynamicText extends SmoNoteModifierBase {\n static get dynamics() {\n // matches VF.modifier\n return {\n PP: 'pp',\n P: 'p',\n MP: 'mp',\n MF: 'mf',\n F: 'f',\n FF: 'ff',\n SFZ: 'sfz'\n };\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n ctor: 'SmoDynamicText',\n xOffset: 0,\n fontSize: _common_vex__WEBPACK_IMPORTED_MODULE_3__.defaultNoteScale,\n yOffsetLine: 11,\n yOffsetPixels: 0,\n text: SmoDynamicText.dynamics.MP,\n }));\n }\n static get persistArray() {\n const rv = [];\n // eslint-disable-next-line\n for (const key in SmoDynamicText.defaults) {\n rv.push(key);\n }\n return rv;\n }\n static get parameterArray() {\n const rv = SmoDynamicText.persistArray;\n rv.push('selector');\n return rv;\n }\n serialize() {\n var params = {};\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoDynamicText.defaults, SmoDynamicText.persistArray, this, params);\n return params;\n }\n constructor(parameters) {\n super('SmoDynamicText');\n this.text = '';\n this.yOffsetLine = 11;\n this.yOffsetPixels = 0;\n this.xOffset = 0;\n this.fontSize = _common_vex__WEBPACK_IMPORTED_MODULE_3__.defaultNoteScale;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.vexMerge(this, SmoDynamicText.defaults);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.filteredMerge(SmoDynamicText.parameterArray, parameters, this);\n if (!this.attrs) {\n this.attrs = {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_0__.getId)().toString(),\n type: 'SmoDynamicText'\n };\n }\n }\n}\nfunction isSmoTabNoteParamsSer(params) {\n if (typeof (params.ctor) !== 'string' || params.ctor !== 'SmoTabNote') {\n return false;\n }\n return true;\n}\n/**\n * @category SmoObject\n */\nclass SmoTabNote extends SmoNoteModifierBase {\n static get defaults() {\n return JSON.parse(JSON.stringify({\n positions: [],\n noteId: '',\n isAssigned: false,\n flagState: SmoTabNote.flagStates.None,\n flagThrough: false,\n noteHead: SmoTabNote.noteHeads.number\n }));\n }\n static get flagStates() {\n return { None: 0, Up: 1, Down: -1 };\n }\n static get noteHeads() {\n return { number: 0, x: 1 };\n }\n constructor(params) {\n super('SmoTabNote');\n this.positions = params.positions;\n this.noteId = params.noteId;\n this.isAssigned = params.isAssigned;\n this.noteHead = params.noteHead;\n this.flagState = params.flagState;\n this.flagThrough = params.flagThrough;\n }\n serialize() {\n var params = { ctor: 'SmoTabNote' };\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_1__.smoSerialize.serializedMergeNonDefault(SmoTabNote.defaults, ['positions', 'noteId', 'isAssigned', 'noteHead', 'flagState', 'flagThrough'], this, params);\n if (!isSmoTabNoteParamsSer(params)) {\n throw 'bad params in SmoTabNote';\n }\n return params;\n }\n}\nconst noteModifierDynamicCtorInit = () => {\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoArpeggio'] = (params) => new SmoArpeggio(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoMicrotone'] = (params) => new SmoMicrotone(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoOrnament'] = (params) => new SmoOrnament(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoGraceNote'] = (params) => new SmoGraceNote(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoArticulation'] = (params) => new SmoArticulation(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoLyric'] = (params) => new SmoLyric(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoNoteBar'] = (params) => new SmoNoteBar(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoDynamicText'] = (params) => new SmoDynamicText(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoTabNote'] = (params) => new SmoTabNote(params);\n _common__WEBPACK_IMPORTED_MODULE_0__.SmoDynamicCtor['SmoClefChange'] = (params) => new SmoClefChange(params);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc21vL2RhdGEvbm90ZU1vZGlmaWVycy50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseURBQXlEO0FBQ3pELHlDQUF5QztBQUN6Qzs7OztHQUlHO0FBRThDO0FBQ2dCO0FBQzlCO0FBQ3dEO0FBRTNGOzs7OztHQUtHO0FBQ0ksTUFBZSxtQkFBbUI7SUFLdkMsWUFBWSxJQUFZO1FBRnhCLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLFlBQU8sR0FBeUIsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWCxFQUFFLEVBQUUsOENBQUssRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUN0QixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUF3QjtRQUN6Qyx1Q0FBdUM7UUFDdkMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGNBQWMsSUFBSSxPQUFPLENBQUUsT0FBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25GLE9BQWUsQ0FBQyxVQUFVLEdBQUksT0FBZSxDQUFDLEtBQUssQ0FBQztRQUN2RCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLElBQUksT0FBTSxDQUFFLE9BQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0MsT0FBZSxDQUFDLElBQUksR0FBSSxPQUFlLENBQUMsS0FBSyxDQUFDO1lBQ2pELENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsbURBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUMxRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxFQUFFLEdBQUcsbURBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakQsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxNQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztDQUVGO0FBR00sU0FBUyxxQkFBcUIsQ0FBQyxNQUF1QztJQUMzRSxJQUFJLE9BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBcUJEOztHQUVHO0FBQ0ksTUFBTSxhQUFjLFNBQVEsbUJBQW1CO0lBRXBELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLE1BQU0sRUFBRSxHQUEyQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDM0QsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsZUFBZTtZQUNyQixLQUFLLEVBQUU7Z0JBQ0wsRUFBRSxFQUFFLDhDQUFLLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLGVBQWU7YUFDdEI7U0FDRixDQUFDLENBQUMsQ0FBQztRQUNKLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELFlBQVksVUFBK0I7UUFDekMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLCtDQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBWSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBQ0QsU0FBUztRQUNQLE1BQU0sTUFBTSxHQUFvQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUMxRSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQXdERCxTQUFTLG9CQUFvQixDQUFDLE1BQW1DO0lBQy9ELElBQUksT0FBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUN2RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRDs7OztHQUlHO0FBQ0ksTUFBTSxZQUFhLFNBQVEsbUJBQW1CO0lBQ25ELE1BQU0sS0FBSyxVQUFVO1FBQ25CLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxNQUFNLEtBQUssUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUMvQixTQUFTLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJO1lBQ3ZDLFFBQVEsRUFBRSxHQUFHO1lBQ2IsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLEtBQUs7WUFDWixLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsU0FBUyxFQUFFLENBQUM7YUFDYjtZQUNELE9BQU8sRUFBRSxDQUFDO29CQUNSLE1BQU0sRUFBRSxHQUFHO29CQUNYLE1BQU0sRUFBRSxDQUFDO29CQUNULFVBQVUsRUFBRSxFQUFFO2lCQUNmLENBQUM7U0FDSCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFDRCw0Q0FBNEM7SUFDNUMsTUFBTSxLQUFLLGNBQWM7UUFDdkIsTUFBTSxFQUFFLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLDJCQUEyQjtRQUMzQixLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQVNELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQzlFLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxDQUFDLEdBQUcsNENBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLDRDQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25HLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLE1BQU0sR0FBZ0MsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDckUsc0VBQVksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUMxRCxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxZQUFZLFVBQW9DO1FBQzlDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQTVCeEIsVUFBSyxHQUFVLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQzNDLFlBQU8sR0FBWSxFQUFFLENBQUM7UUFDdEIsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixTQUFJLEdBQVcsUUFBUSxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxHQUFHLENBQUM7UUFDdkIsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFDL0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQXVCMUIsc0VBQVksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZGLHNFQUFZLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRjtBQUdPLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWU7SUFDL0UsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBa0I1RCxTQUFTLHVCQUF1QixDQUFDLE1BQXFDO0lBQ3BFLElBQUksT0FBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUUsQ0FBQztRQUN0RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDTSxTQUFTLGNBQWMsQ0FBQyxFQUE0QjtJQUN6RCxPQUFPLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUNEOzs7R0FHRztBQUNJLE1BQU0sV0FBWSxTQUFRLG1CQUFtQjtJQUVsRCxNQUFNLEtBQUssS0FBSztRQUNkLElBQUksT0FBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNoRSxXQUFXLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QyxXQUFXLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxXQUFXLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRCxZQUFZLE1BQXlCO1FBQ25DLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDaEMsT0FBTyxJQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFDRCxTQUFTO1FBQ1AsTUFBTSxFQUFFLEdBQWtDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtRQUNqRSxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pGLEVBQUUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7O0FBaENNLGtCQUFNLEdBQTJCLEVBQUUsQ0FBQztBQXdEN0MsU0FBUyx1QkFBdUIsQ0FBQyxNQUFzQztJQUNyRSxJQUFJLE9BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDdkUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7Ozs7RUFJRTtBQUNLLE1BQU0sWUFBYSxTQUFRLG1CQUFtQjtJQThCbkQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsTUFBTSxLQUFLLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDL0IsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFDRCxNQUFNLEtBQUssY0FBYztRQUN2QixNQUFNLEVBQUUsR0FBYSxFQUFFLENBQUM7UUFDeEIsMkJBQTJCO1FBQzNCLEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsU0FBUztRQUNQLE1BQU0sTUFBTSxHQUFtQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUN4RSxzRUFBWSxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQzFELFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUNELFlBQVksVUFBOEI7UUFDeEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQTdEekIsU0FBSSxHQUFXLFVBQVUsQ0FBQztRQUMxQixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBNkRyQixzRUFBWSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkYsc0VBQVksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7QUE3REQsbUNBQW1DO0FBQ25CLHFCQUFRLEdBQTJCO0lBQ2pELFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLEdBQUc7SUFDYixRQUFRLEVBQUUsSUFBSTtJQUNkLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLE1BQU07SUFDaEIsT0FBTyxFQUFFLEdBQUc7SUFDWixJQUFJLEVBQUUsR0FBRztJQUNULEtBQUssRUFBRSxHQUFHO0NBQ1g7QUFFRCw4QkFBOEI7QUFDZCx1QkFBVSxHQUEyQjtJQUNuRCxRQUFRLEVBQUUsQ0FBQyxHQUFHO0lBQ2QsUUFBUSxFQUFFLENBQUMsR0FBRztJQUNkLFFBQVEsRUFBRSxDQUFDLEdBQUc7SUFDZCxTQUFTLEVBQUUsQ0FBQyxHQUFHO0lBQ2YsT0FBTyxFQUFFLEdBQUc7SUFDWixRQUFRLEVBQUUsR0FBRztJQUNiLE9BQU8sRUFBRSxHQUFHO0lBQ1osSUFBSSxFQUFFLEdBQUc7SUFDVCxLQUFLLEVBQUUsQ0FBQyxHQUFHO0NBQ1o7QUF5RUgsU0FBUyxzQkFBc0IsQ0FBQyxNQUFxQztJQUNuRSxJQUFJLE9BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7UUFDdEUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7Ozs7R0FJRztBQUNJLE1BQU0sV0FBWSxTQUFRLG1CQUFtQjtJQW1EbEQsTUFBTSxLQUFLLGFBQWE7UUFDdEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JILENBQUM7SUFDRCxNQUFNLEtBQUssVUFBVTtRQUNuQixPQUFPLEVBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSztZQUMxQyxZQUFZLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJO1lBQ3hDLFdBQVcsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVE7WUFDM0MsTUFBTSxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSTtZQUNsQyxNQUFNLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJO1lBQ2xDLE1BQU0sRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUk7WUFDbEMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSztTQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUNELEtBQUs7UUFDSCxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxNQUFNO1FBQ0osT0FBTyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFLRCxNQUFNLEtBQUssY0FBYztRQUN2QixNQUFNLEVBQUUsR0FBYSxFQUFFLENBQUM7UUFDeEIsMkJBQTJCO1FBQzNCLEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxLQUFLLFNBQVM7UUFDbEIsT0FBTztZQUNMLEtBQUssRUFBRSxPQUFPO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxLQUFLLE9BQU87UUFDaEIsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJO1lBQ1IsS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQy9CLElBQUksRUFBRSxhQUFhO1lBQ25CLFFBQVEsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU87WUFDdkMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSTtZQUNwQyxNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1NBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUNELFNBQVM7UUFDUCxJQUFJLE1BQU0sR0FBa0MsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7UUFDcEUsc0VBQVksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUN6RCxXQUFXLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsWUFBWSxVQUE2QjtRQUN2QyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUE1Q3ZCLGFBQVEsR0FBVyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUMvQyxXQUFNLEdBQVcsSUFBSSxDQUFDO1FBQ3RCLGFBQVEsR0FBVyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQTJDL0Msc0VBQVksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JGLHNFQUFZLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNFLDZCQUE2QjtRQUM3QixJQUFJLE9BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7O0FBeEhlLHFCQUFTLEdBQTJCO0lBQ2xELE9BQU8sRUFBRSxTQUFTO0lBQ2xCLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyxJQUFJLEVBQUUsTUFBTTtJQUNaLGFBQWEsRUFBRSxlQUFlO0lBQzlCLEtBQUssRUFBRSxJQUFJO0lBQ1gsT0FBTyxFQUFFLFNBQVM7SUFDbEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLElBQUksRUFBRSxNQUFNO0lBQ1osUUFBUSxFQUFFLFVBQVU7SUFDcEIsSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsT0FBTztJQUNkLElBQUksRUFBRSxNQUFNO0lBQ1osYUFBYSxFQUFFLGVBQWU7SUFDOUIsV0FBVyxFQUFFLGFBQWE7Q0FDM0I7QUFFZSx3QkFBWSxHQUEyQjtJQUNyRCxPQUFPLEVBQUUsU0FBUztJQUNsQixnQkFBZ0IsRUFBRSxrQkFBa0I7SUFDcEMsSUFBSSxFQUFFLE1BQU07SUFDWixhQUFhLEVBQUUsZUFBZTtJQUM5QixTQUFTLEVBQUUsU0FBUztJQUNwQixXQUFXLEVBQUUsU0FBUztJQUN0QixTQUFTLEVBQUUsV0FBVztJQUN0QixVQUFVLEVBQUUsV0FBVztJQUN2QixPQUFPLEVBQUUsV0FBVztJQUNwQixFQUFFLEVBQUUsWUFBWTtDQUNqQjtBQUNlLDZCQUFpQixHQUE0QjtJQUMzRCxNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsa0JBQWtCO0NBQzVCO0FBQ0QsdURBQXVEO0FBQ3ZDLG1CQUFPLEdBQTJCO0lBQ2hELElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUUsU0FBUztJQUNuQixJQUFJLEVBQUUsTUFBTTtDQUNiO0FBa0dILFNBQVMsOEJBQThCLENBQUMsTUFBNkM7SUFDbkYsSUFBSSxPQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFLENBQUM7UUFDMUUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7OztHQUdHO0FBQ0ksTUFBTSxlQUFnQixTQUFRLG1CQUFtQjtJQUN0RCxNQUFNLEtBQUssYUFBYTtRQUN0QixPQUFPO1lBQ0wsTUFBTSxFQUFFLFFBQVE7WUFDaEIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsT0FBTyxFQUFFLFNBQVM7WUFDbEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsVUFBVSxFQUFFLFlBQVk7WUFDeEIsU0FBUyxFQUFFLFdBQVc7WUFDdEIsS0FBSyxFQUFFLE9BQU87WUFDZCxPQUFPLEVBQUUsU0FBUztZQUNsQixPQUFPLEVBQUUsU0FBUztTQUNuQixDQUFDO0lBQ0osQ0FBQztJQU9ELE1BQU0sS0FBSyxTQUFTO1FBQ2xCLE9BQU87WUFDTCxLQUFLLEVBQUUsT0FBTztZQUNkLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sS0FBSyxpQkFBaUI7UUFDMUIsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUk7WUFDZCxPQUFPLEVBQUUsSUFBSTtZQUNiLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUk7WUFDZCxVQUFVLEVBQUUsSUFBSTtZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEtBQUssaUJBQWlCO1FBQzFCLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxVQUFVO1lBQ2hCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsVUFBVTtZQUNoQixJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsU0FBUztTQUNqQixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sS0FBSyxjQUFjO1FBQ3ZCLE1BQU0sRUFBRSxHQUFhLEVBQUUsQ0FBQztRQUN4QiwyQkFBMkI7UUFDM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0MsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLEtBQUssYUFBYTtRQUN0QixPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztTQUNYLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxLQUFLLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDL0IsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixRQUFRLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQ3pDLFlBQVksRUFBRSxlQUFlLENBQUMsYUFBYSxDQUFDLE1BQU07U0FDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBTUQsU0FBUztRQUNQLElBQUksTUFBTSxHQUEwQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBQyxDQUFDO1FBQy9FLHNFQUFZLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFDN0QsZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsWUFBWSxVQUFxQztRQUMvQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQWYzQixhQUFRLEdBQVcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDL0MsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixpQkFBWSxHQUFXLGVBQWUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQzVELFNBQUksR0FBVyxDQUFDLENBQUM7UUFhZixzRUFBWSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0Ysc0VBQVksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0UsdUNBQXVDO0lBQ3pDLENBQUM7O0FBL0VlLGdDQUFnQixHQUEyQjtJQUN6RCxNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsVUFBVTtJQUNwQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsZUFBZTtDQUN6QjtBQThJSCxTQUFTLGlCQUFpQixDQUFDLE1BQWtDO0lBQzNELElBQUksT0FBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNuRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFnREQ7Ozs7R0FJRztBQUNJLE1BQU0sUUFBUyxTQUFRLG1CQUFtQjtJQUkvQyxNQUFNLEtBQUssUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUMvQixJQUFJLEVBQUUsVUFBVTtZQUNoQixJQUFJLEVBQUUsTUFBTTtZQUNaLE9BQU8sRUFBRSxFQUFFO1lBQ1gsS0FBSyxFQUFFLENBQUM7WUFDUixRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsTUFBTSxFQUFFLFFBQVE7YUFDakI7WUFDRCxJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxFQUFFLENBQUM7WUFDYixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLG9CQUFvQixFQUFFLEtBQUs7WUFDM0IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSztTQUMvQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFDRCxNQUFNLEtBQUssY0FBYztRQUN2QixPQUFPO1lBQ0wsV0FBVyxFQUFFLENBQUM7WUFDZCxTQUFTLEVBQUUsQ0FBQztZQUNaLE1BQU0sRUFBRSxDQUFDO1NBQ1YsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLEtBQUssWUFBWTtRQUNyQixNQUFNLEVBQUUsR0FBYSxFQUFFLENBQUM7UUFDeEIsMkJBQTJCO1FBQzNCLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsTUFBTSxLQUFLLGNBQWM7UUFDdkIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNqQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUE0QkQsU0FBUztRQUNQLElBQUksTUFBTSxHQUErQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUM5RCxzRUFBWSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQ3RELFFBQVEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxvR0FBb0c7SUFDcEcscUNBQXFDO0lBQ3JDLElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUMxRyxDQUFDO0lBQ0QsSUFBSSxlQUFlLENBQUMsR0FBRztRQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixpRUFBaUU7SUFDakUsZ0JBQWdCO1FBQ2QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFFLE9BQU8sSUFBSSxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFDbEIsa0NBQWtDO1FBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1lBQzNDLElBQUksQ0FBQyxNQUFNO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sc0VBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlFLENBQUM7UUFDRCxPQUFPLHNFQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFZO1FBQ3JDLE9BQU8sd0VBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFXO1FBQ3JDLHdCQUF3QjtRQUN4QixNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQztRQUNsQyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksUUFBUSxHQUFXLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksR0FBVyxFQUFFLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLE9BQU8sR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDZCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUNELEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBSUQsWUFBWSxVQUEwQjtRQUNwQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFsSHBCLFNBQUksR0FBVyxVQUFVLENBQUM7UUFDMUIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixhQUFRLEdBQWE7WUFDbkIsSUFBSSxFQUFFLEVBQUU7WUFDUixNQUFNLEVBQUUsY0FBYztZQUN0QixLQUFLLEVBQUUsUUFBUTtZQUNmLE1BQU0sRUFBRSxRQUFRO1NBQ2pCLENBQUM7UUFDRixXQUFNLEdBQVcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDeEMsYUFBUSxHQUFrQixJQUFJLENBQUMsQ0FBQyxhQUFhO1FBQzdDLHlCQUFvQixHQUFZLElBQUksQ0FBQztRQUNyQyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUN2QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsZ0VBQWdFO1FBQ2hFLFNBQUksR0FBVyxDQUFDLENBQUM7UUFDakIsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUNqQixxRkFBcUY7UUFDckYsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBMkZ2QixzRUFBWSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0Usc0VBQVksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxPQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkQsQ0FBQztRQUNELHlDQUF5QztRQUN6QyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDOUIsQ0FBQztRQUVELGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2QseUNBQXlDO1FBRXpDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRztnQkFDWCxFQUFFLEVBQUUsOENBQUssRUFBRSxDQUFDLFFBQVEsRUFBRTtnQkFDdEIsSUFBSSxFQUFFLFVBQVU7YUFDakIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOztBQXJMZSxnQkFBTyxHQUEyQjtJQUNoRCxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7Q0FDakM7QUFtTUksTUFBTSxVQUFXLFNBQVEsbUJBQW1CO0lBRWpELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7SUFDL0MsQ0FBQztJQUNELE1BQU0sS0FBSyxjQUFjO1FBQ3ZCLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBU0QsWUFBWSxVQUE0QjtRQUN0QyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFoQnRCLFlBQU8sR0FBVyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQWlCNUMsc0VBQVksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25GLHNFQUFZLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCxTQUFTO1FBQ1AsTUFBTSxVQUFVLEdBQWlDLEVBQUUsQ0FBQztRQUNwRCxzRUFBWSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQ3hELFVBQVUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLFVBQVUsQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1FBQy9CLE9BQU8sVUFBaUMsQ0FBQztJQUMzQyxDQUFDOztBQW5CZSxtQkFBUSxHQUEyQjtJQUNqRCxTQUFTLEVBQUUsQ0FBQztJQUNaLFNBQVMsRUFBRSxDQUFDO0lBQ1osTUFBTSxFQUFFLENBQUM7SUFDVCxXQUFXLEVBQUUsQ0FBQztJQUNkLFNBQVMsRUFBRSxDQUFDO0lBQ1osS0FBSyxFQUFFLENBQUM7Q0FDVDtBQXVDSDs7O0dBR0c7QUFDSSxNQUFNLGNBQWUsU0FBUSxtQkFBbUI7SUFDckQsTUFBTSxLQUFLLFFBQVE7UUFDakIsc0JBQXNCO1FBQ3RCLE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSTtZQUNSLENBQUMsRUFBRSxHQUFHO1lBQ04sRUFBRSxFQUFFLElBQUk7WUFDUixFQUFFLEVBQUUsSUFBSTtZQUNSLENBQUMsRUFBRSxHQUFHO1lBQ04sRUFBRSxFQUFFLElBQUk7WUFDUixHQUFHLEVBQUUsS0FBSztTQUNYLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxLQUFLLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDL0IsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixPQUFPLEVBQUUsQ0FBQztZQUNWLFFBQVEsRUFBRSx5REFBZ0I7WUFDMUIsV0FBVyxFQUFFLEVBQUU7WUFDZixhQUFhLEVBQUUsQ0FBQztZQUNoQixJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1NBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUNELE1BQU0sS0FBSyxZQUFZO1FBQ3JCLE1BQU0sRUFBRSxHQUFhLEVBQUUsQ0FBQztRQUN4QiwyQkFBMkI7UUFDM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxNQUFNLEtBQUssY0FBYztRQUN2QixNQUFNLEVBQUUsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBTUQsU0FBUztRQUNQLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixzRUFBWSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQzVELGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBWjFCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixhQUFRLEdBQVcseURBQWdCLENBQUM7UUFTbEMsc0VBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxzRUFBWSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU1RSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ1gsRUFBRSxFQUFFLDhDQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RCLElBQUksRUFBRSxnQkFBZ0I7YUFDdkIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFvQ0QsU0FBUyxxQkFBcUIsQ0FBQyxNQUFvQztJQUNqRSxJQUFJLE9BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDckUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0Q7O0dBRUc7QUFDSSxNQUFNLFVBQVcsU0FBUSxtQkFBbUI7SUFDakQsTUFBTSxLQUFLLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDL0IsU0FBUyxFQUFFLEVBQUU7WUFDYixNQUFNLEVBQUUsRUFBRTtZQUNWLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUk7WUFDckMsV0FBVyxFQUFFLEtBQUs7WUFDbEIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTTtTQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFPRCxNQUFNLEtBQUssVUFBVTtRQUNuQixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFDRCxNQUFNLEtBQUssU0FBUztRQUNsQixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUNELFlBQVksTUFBd0I7UUFDbEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO1FBQ3BDLHNFQUFZLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFDeEQsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLDBCQUEwQixDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFDTSxNQUFNLDJCQUEyQixHQUFHLEdBQUcsRUFBRTtJQUM5QyxtREFBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBeUIsRUFBRSxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkYsbURBQWMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQTBCLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFGLG1EQUFjLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUF5QixFQUFFLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2RixtREFBYyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkYsbURBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBaUMsRUFBRSxFQUFFLENBQUMsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkcsbURBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlFLG1EQUFjLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRixtREFBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUE0QixFQUFFLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRyxtREFBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBd0IsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEYsbURBQWMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQTJCLEVBQUUsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9GLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TbW8vLi9zcmMvc21vL2RhdGEvbm90ZU1vZGlmaWVycy50cz84NDg5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFtTbW9vc2ljXShodHRwczovL2dpdGh1Yi5jb20vQWFyb25EYXZpZE5ld21hbi9TbW9vc2ljKVxyXG4vLyBDb3B5cmlnaHQgKGMpIEFhcm9uIERhdmlkIE5ld21hbiAyMDIxLlxyXG4vKipcclxuICogQSBub3RlIG1vZGlmaWVyIGlzIGFueXRoaW5nIHRoYXQgaXMgbWFwcGVkIHRvIHRoZSBub3RlLCBidXQgbm90IHBhcnQgb2YgdGhlXHJcbiAqIHBpdGNoIGl0c2VsZi4gIFRoaXMgaW5jbHVkZXMgZ3JhY2Ugbm90ZXMsIGFuZCBub3RlLXRleHQgbGlrZSBseXJpY3MuXHJcbiAqIEBtb2R1bGUgL3Ntby9kYXRhL25vdGVNb2RpZmllcnNcclxuICovXHJcbmltcG9ydCB7IFNtb0F0dHJzLCBUaWNrcywgUGl0Y2gsIGdldElkLCBTbW9PYmplY3RQYXJhbXMsIFRyYW5zcG9zYWJsZSwgU3ZnQm94LCBTbW9Nb2RpZmllckJhc2UsIFxyXG4gIENsZWYsIElzQ2xlZiwgU21vRHluYW1pY0N0b3IgfSBmcm9tICcuL2NvbW1vbic7XHJcbmltcG9ydCB7IHNtb1NlcmlhbGl6ZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJpYWxpemF0aW9uSGVscGVycyc7XHJcbmltcG9ydCB7IFNtb011c2ljIH0gZnJvbSAnLi9tdXNpYyc7XHJcbmltcG9ydCB7IGRlZmF1bHROb3RlU2NhbGUsIEZvbnRJbmZvLCBnZXRDaG9yZFN5bWJvbEdseXBoRnJvbUNvZGUgfSBmcm9tICcuLi8uLi9jb21tb24vdmV4JztcclxuXHJcbi8qKlxyXG4gKiBBIG5vdGUgbW9kaWZpZXIgaXMgYW55dGhpbmcgdGhhdCBpcyBtYXBwZWQgdG8gdGhlIG5vdGUsIGJ1dCBub3QgcGFydCBvZiB0aGVcclxuICogcGl0Y2ggaXRzZWxmLiAgVGhpcyBpbmNsdWRlcyBncmFjZSBub3RlcywgYW5kIG5vdGUtdGV4dCBsaWtlIGx5cmljcy5cclxuICogQWxsIG5vdGUgbW9kaWZpZXJzIGhhdmUgYSBzZXJpYWxpemUgbWV0aG9kIGFuZCBhICdjdG9yJyBwYXJhbWV0ZXIgb3IgZGVzZXJpYWxpemF0aW9uXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTbW9Ob3RlTW9kaWZpZXJCYXNlIGltcGxlbWVudHMgU21vTW9kaWZpZXJCYXNlIHtcclxuICBhdHRyczogU21vQXR0cnM7XHJcbiAgY3Rvcjogc3RyaW5nO1xyXG4gIGxvZ2ljYWxCb3g6IFN2Z0JveCB8IG51bGwgPSBudWxsO1xyXG4gIGVsZW1lbnQ6IFNWR1NWR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBjb25zdHJ1Y3RvcihjdG9yOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYXR0cnMgPSB7XHJcbiAgICAgIGlkOiBnZXRJZCgpLnRvU3RyaW5nKCksXHJcbiAgICAgIHR5cGU6IGN0b3JcclxuICAgIH07XHJcbiAgICB0aGlzLmN0b3IgPSBjdG9yO1xyXG4gIH1cclxuICBzdGF0aWMgZGVzZXJpYWxpemUoanNvbk9iajogU21vT2JqZWN0UGFyYW1zKSB7XHJcbiAgICAvLyBIYW5kbGUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgdGhpbmdcclxuICAgIGlmIChqc29uT2JqLmN0b3IgPT09ICdTbW9NaWNyb3RvbmUnICYmIHR5cGVvZiAoKGpzb25PYmogYXMgYW55KS5waXRjaCkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIChqc29uT2JqIGFzIGFueSkucGl0Y2hJbmRleCA9IChqc29uT2JqIGFzIGFueSkucGl0Y2g7XHJcbiAgICB9XHJcbiAgICBpZiAoanNvbk9iai5jdG9yID09PSAnU21vTHlyaWMnKSB7XHJcbiAgICAgIGlmICh0eXBlb2YoKGpzb25PYmogYXMgYW55KS5fdGV4dCkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgKGpzb25PYmogYXMgYW55KS50ZXh0ID0gKGpzb25PYmogYXMgYW55KS5fdGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiAoU21vRHluYW1pY0N0b3JbanNvbk9iai5jdG9yXSkgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdvdWNoIGJhZCBjdG9yIGZvciAnICsganNvbk9iai5jdG9yKTtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJ2ID0gU21vRHluYW1pY0N0b3JbanNvbk9iai5jdG9yXShqc29uT2JqKTtcclxuICAgICAgcmV0dXJuIHJ2O1xyXG4gICAgfSBjYXRjaCAoZXhwKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ25vIGN0b3IgZm9yICcgKyBqc29uT2JqLmN0b3IpO1xyXG4gICAgICB0aHJvdyhleHApO1xyXG4gICAgfVxyXG4gIH1cclxuICBhYnN0cmFjdCBzZXJpYWxpemUoKTogYW55O1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2xlZkNoYW5nZVBhcmFtc1NlcihwYXJhbXM6IFBhcnRpYWw8U21vQ2xlZkNoYW5nZVBhcmFtc1Nlcj4pOiBwYXJhbXMgaXMgU21vQ2xlZkNoYW5nZVBhcmFtc1NlciB7XHJcbiAgaWYgKHR5cGVvZihwYXJhbXMuY2xlZikgPT09ICdzdHJpbmcnICYmIHBhcmFtcy5jdG9yID09PSAnU21vQ2xlZkNoYW5nZScpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICByZXR1cm4gZmFsc2U7XHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vQ2xlZkNoYW5nZVBhcmFtcyAge1xyXG4gIGNsZWY6IHN0cmluZ1xyXG59XHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgc2VyaWFsaXphdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9DbGVmQ2hhbmdlUGFyYW1zU2VyIGV4dGVuZHMgU21vQ2xlZkNoYW5nZVBhcmFtcyB7XHJcbiAgLyoqXHJcbiAgICogY29uc3RydWN0b3JcclxuICAgKi9cclxuICAgIGN0b3I6IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogYXR0cmlidXRlcyBmb3IgSURcclxuICAgICAqL1xyXG4gICAgYXR0cnM6IFNtb0F0dHJzO1xyXG59XHJcblxyXG4vKipcclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNtb0NsZWZDaGFuZ2UgZXh0ZW5kcyBTbW9Ob3RlTW9kaWZpZXJCYXNlIHtcclxuICBjbGVmOiBDbGVmO1xyXG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKSB7XHJcbiAgICBjb25zdCBydjogU21vQ2xlZkNoYW5nZVBhcmFtc1NlciA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBjbGVmOiAndHJlYmxlJyxcclxuICAgICAgY3RvcjogJ1Ntb0NsZWZDaGFuZ2UnLFxyXG4gICAgICBhdHRyczoge1xyXG4gICAgICAgIGlkOiBnZXRJZCgpLFxyXG4gICAgICAgIHR5cGU6ICdTbW9DbGVmQ2hhbmdlJ1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgICByZXR1cm4gcnY7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKGNsZWZQYXJhbXM6IFNtb0NsZWZDaGFuZ2VQYXJhbXMpIHtcclxuICAgIHN1cGVyKCdTbW9DbGVmQ2hhbmdlJyk7XHJcbiAgICBjb25zdCBjbGVmID0gY2xlZlBhcmFtcy5jbGVmO1xyXG4gICAgaWYgKCFJc0NsZWYoY2xlZikpIHtcclxuICAgICAgdGhpcy5jbGVmID0gJ3RyZWJsZSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsZWYgPSBjbGVmIGFzIENsZWY7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlcmlhbGl6ZSgpOiBTbW9DbGVmQ2hhbmdlUGFyYW1zU2VyIHtcclxuICAgIGNvbnN0IHBhcmFtczogUGFydGlhbDxTbW9DbGVmQ2hhbmdlUGFyYW1zU2VyPiA9IHsgY3RvcjogJ1Ntb0NsZWZDaGFuZ2UnIH07XHJcbiAgICBwYXJhbXMuY2xlZiA9IHRoaXMuY2xlZjtcclxuICAgIGlmICghaXNDbGVmQ2hhbmdlUGFyYW1zU2VyKHBhcmFtcykpIHtcclxuICAgICAgdGhyb3coJ2NvcnJ1cHQgY2xlZiBjaGFuZ2UnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG59XHJcbi8qKlxyXG4gKiB1c2VkIHRvIGNvbnN0cnVjdCB7QGxpbmsgU21vR3JhY2VOb3RlfVxyXG4gKiAgIGJlYW0gZ3JvdXAuXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgR3JhY2VOb3RlUGFyYW1zIGV4dGVuZHMgU21vTW9kaWZpZXJCYXNlIHtcclxuICAvKipcclxuICAgKiB1cCwgZG93biwgb3IgYXV0b1xyXG4gICAqL1xyXG4gIGZsYWdTdGF0ZTogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIHNhbWUgYXMgZm9yIHtAbGluayBTbW9Ob3RlfVxyXG4gICAqL1xyXG4gIG5vdGVUeXBlOiBzdHJpbmcsXHJcbiAgLyoqXHJcbiAgICogc2FtZSBhcyBmb3Ige0BsaW5rIFNtb05vdGV9XHJcbiAgICovXHJcbiAgYmVhbUJlYXRzOiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogc2FtZSBhcyBmb3Ige0BsaW5rIFNtb05vdGV9LiAgSW5kaWNhdGVzIGJyZWFrIGluIGJlYW0gZ3JvdXBcclxuICAgKi9cclxuICBlbmRCZWFtOiBib29sZWFuLFxyXG4gIC8qKlxyXG4gICAqIHNob3VsZCBiZSBzYW1lIGFzIG5vdGU/XHJcbiAgICovXHJcbiAgY2xlZjogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIHRoZXJlJ3MgcHJvYmFibHkgYSBuYW1lIGZvciB0aGlzLi4uXHJcbiAgICovXHJcbiAgc2xhc2g6IGJvb2xlYW4sXHJcbiAgLyoqXHJcbiAgICogb25seSB1c2VkIGZvciBiZWFtaW5nXHJcbiAgICovXHJcbiAgdGlja3M6IFRpY2tzLFxyXG4gIC8qKlxyXG4gICAqIFBpdGNoLCBzYW1lIGFzIGZvciB7QGxpbmsgU21vTm90ZX1cclxuICAgKi9cclxuICBwaXRjaGVzOiBQaXRjaFtdLFxyXG59XHJcblxyXG4vKipcclxuICogc2VyaWFsaXplZCBncmFjZSBub3RlXHJcbiAqIEBjYXRlZ29yeSBzZXJpYWxpemF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEdyYWNlTm90ZVBhcmFtc1NlciBleHRlbmRzIEdyYWNlTm90ZVBhcmFtcyB7XHJcbiAgLyoqXHJcbiAgICogY29uc3RydWN0b3JcclxuICAgKi9cclxuICBjdG9yOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogYXR0cmlidXRlcyBmb3IgSURcclxuICAgKi9cclxuICBhdHRyczogU21vQXR0cnM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzR3JhY2VOb3RlUGFyYW1zU2VyKHBhcmFtczogUGFydGlhbDxHcmFjZU5vdGVQYXJhbXNTZXI+KTogcGFyYW1zIGlzIEdyYWNlTm90ZVBhcmFtc1NlciB7XHJcbiAgaWYgKHR5cGVvZihwYXJhbXMuY3RvcikgIT09ICdzdHJpbmcnIHx8IHBhcmFtcy5jdG9yICE9PSAnU21vR3JhY2VOb3RlJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogQSBncmFjZSBub3RlcyBoYXMgbWFueSBvZiB0aGUgdGhpbmdzIGFuICdhY3R1YWwnIG5vdGUgY2FuIGhhdmUsIGJ1dCBpdCBkb2Vzbid0IHRha2UgdXBcclxuICogdGltZSBhZ2FpbnN0IHRoZSB0aW1lIHNpZ25hdHVyZVxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU21vR3JhY2VOb3RlIGV4dGVuZHMgU21vTm90ZU1vZGlmaWVyQmFzZSBpbXBsZW1lbnRzIFRyYW5zcG9zYWJsZSB7XHJcbiAgc3RhdGljIGdldCBmbGFnU3RhdGVzKCkge1xyXG4gICAgcmV0dXJuIHsgYXV0bzogMCwgdXA6IDEsIGRvd246IDIgfTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBkZWZhdWx0cygpOiBHcmFjZU5vdGVQYXJhbXMge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBmbGFnU3RhdGU6IFNtb0dyYWNlTm90ZS5mbGFnU3RhdGVzLmF1dG8sXHJcbiAgICAgIG5vdGVUeXBlOiAnbicsXHJcbiAgICAgIGJlYW1CZWF0czogNDA5NixcclxuICAgICAgZW5kQmVhbTogZmFsc2UsXHJcbiAgICAgIGNsZWY6ICd0cmVibGUnLFxyXG4gICAgICBzbGFzaDogZmFsc2UsXHJcbiAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgbnVtZXJhdG9yOiA0MDk2LFxyXG4gICAgICAgIGRlbm9taW5hdG9yOiAxLFxyXG4gICAgICAgIHJlbWFpbmRlcjogMFxyXG4gICAgICB9LFxyXG4gICAgICBwaXRjaGVzOiBbe1xyXG4gICAgICAgIGxldHRlcjogJ2InLFxyXG4gICAgICAgIG9jdGF2ZTogNCxcclxuICAgICAgICBhY2NpZGVudGFsOiAnJ1xyXG4gICAgICB9XVxyXG4gICAgfSkpO1xyXG4gIH1cclxuICAvLyBUT0RPOiBNYXRjaGVzIFNtb05vdGUgLSBtb3ZlIHRvIFNtb011c2ljP1xyXG4gIHN0YXRpYyBnZXQgcGFyYW1ldGVyQXJyYXkoKSB7XHJcbiAgICBjb25zdCBydjogc3RyaW5nW10gPSBbXTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gU21vR3JhY2VOb3RlLmRlZmF1bHRzKSB7XHJcbiAgICAgIHJ2LnB1c2goa2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBydjtcclxuICB9XHJcbiAgdGlja3M6IFRpY2tzID0gU21vR3JhY2VOb3RlLmRlZmF1bHRzLnRpY2tzO1xyXG4gIHBpdGNoZXM6IFBpdGNoW10gPSBbXTtcclxuICBzbGFzaDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNsZWY6IHN0cmluZyA9ICd0cmVibGUnO1xyXG4gIG5vdGVUeXBlOiBzdHJpbmcgPSAnbic7XHJcbiAgcmVuZGVySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGhhc1RhYk5vdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgdGlja0NvdW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGlja3MubnVtZXJhdG9yIC8gdGhpcy50aWNrcy5kZW5vbWluYXRvciArIHRoaXMudGlja3MucmVtYWluZGVyO1xyXG4gIH1cclxuXHJcbiAgdG9WZXhHcmFjZU5vdGUoKSB7XHJcbiAgICBjb25zdCBwID0gU21vTXVzaWMuc21vUGl0Y2hlc1RvVmV4KHRoaXMucGl0Y2hlcyk7XHJcbiAgICBjb25zdCBydiA9IHsgZHVyYXRpb246IFNtb011c2ljLmNsb3Nlc3RWZXhEdXJhdGlvbih0aGlzLnRpY2tDb3VudCgpKSwga2V5czogcCwgc2xhc2g6IHRoaXMuc2xhc2ggfTtcclxuICAgIHJldHVybiBydjtcclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZSgpOiBHcmFjZU5vdGVQYXJhbXNTZXIge1xyXG4gICAgY29uc3QgcGFyYW1zOiBQYXJ0aWFsPEdyYWNlTm90ZVBhcmFtc1Nlcj4gPSB7IGN0b3I6ICdTbW9HcmFjZU5vdGUnIH07XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlTm9uRGVmYXVsdChTbW9HcmFjZU5vdGUuZGVmYXVsdHMsXHJcbiAgICAgIFNtb0dyYWNlTm90ZS5wYXJhbWV0ZXJBcnJheSwgdGhpcywgcGFyYW1zKTtcclxuICAgIGlmICghaXNHcmFjZU5vdGVQYXJhbXNTZXIocGFyYW1zKSkge1xyXG4gICAgICB0aHJvdyAnYmFkIGdyYWNlIG5vdGUgJyArIEpTT04uc3RyaW5naWZ5KHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzOiBQYXJ0aWFsPEdyYWNlTm90ZVBhcmFtcz4pIHtcclxuICAgIHN1cGVyKCdTbW9HcmFjZU5vdGUnKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vR3JhY2VOb3RlLnBhcmFtZXRlckFycmF5LCBTbW9HcmFjZU5vdGUuZGVmYXVsdHMsIHRoaXMpO1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZShTbW9HcmFjZU5vdGUucGFyYW1ldGVyQXJyYXksIHBhcmFtZXRlcnMsIHRoaXMpO1xyXG4gIH1cclxufVxyXG5leHBvcnQgdHlwZSBTbW9BcnBlZ2dpb1R5cGUgPSAnZGlyZWN0aW9ubGVzcycgfCAncmFzcXVlZG9fdXAnIHwgJ3Jhc3F1ZWRvX2Rvd24nIFxyXG4gIHwgJ3JvbGxfdXAnIHwgJ3JvbGxfZG93bicgfCAnYnJ1c2hfdXAnIHwgJ2JydXNoX2Rvd24nIHwgJ25vbmUnO1xyXG5leHBvcnQgIGNvbnN0IFNtb0FycGVnZ2lvVHlwZXMgPSBbJ2RpcmVjdGlvbmxlc3MnLCAncmFzcXVlZG9fdXAnLCAncmFzcXVlZG9fZG93bicsXHJcbiAgJ3JvbGxfdXAnLCAncm9sbF9kb3duJywgJ2JydXNoX3VwJywgJ2JydXNoX2Rvd24nLCAnbm9uZSddO1xyXG5cclxuICAvKipcclxuICAgKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAgICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vQXJwZWdnaW9QYXJhbXMge1xyXG4gICB0eXBlOiBTbW9BcnBlZ2dpb1R5cGVcclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IHNlcmlhbGl6YXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vQXJwZWdnaW9QYXJhbXNTZXIge1xyXG4gIGN0b3I6IHN0cmluZztcclxuICAvKipcclxuICAgKiBzdHJpbmdpZmllZCBhcnBlZ2dpb24gZW51bWVyYXRpb25cclxuICAgKi9cclxuICB0eXBlOiBzdHJpbmc7XHJcbn1cclxuZnVuY3Rpb24gaXNTbW9BcnBlZ2dpb25QYXJhbXNTZXIocGFyYW1zOiBQYXJ0aWFsPFNtb0FycGVnZ2lvUGFyYW1zU2VyPik6IHBhcmFtcyBpcyBTbW9BcnBlZ2dpb1BhcmFtc1NlciB7XHJcbiAgaWYgKHR5cGVvZihwYXJhbXMuY3RvcikgIT09ICdzdHJpbmcnIHx8IHBhcmFtcy5jdG9yICE9PSAnU21vQXJwZWdnaW8nKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiB0cnVlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc0FycGVnZ2lvVHlwZSh0cDogU21vQXJwZWdnaW9UeXBlIHwgc3RyaW5nKTogdHAgaXMgU21vQXJwZWdnaW9UeXBlIHtcclxuICByZXR1cm4gU21vQXJwZWdnaW9UeXBlcy5pbmRleE9mKHRwKSA+PSAwO1xyXG59XHJcbi8qKlxyXG4gKiBBICdzcGxhdHRlcicgc3ltYm9sIG5leHQgdG8gYSBjaG9yZC5cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNtb0FycGVnZ2lvIGV4dGVuZHMgU21vTm90ZU1vZGlmaWVyQmFzZSB7XHJcbiAgc3RhdGljIF90eXBlczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xyXG4gIHN0YXRpYyBnZXQgdHlwZXMoKSB7XHJcbiAgICBpZiAodHlwZW9mKFNtb0FycGVnZ2lvLl90eXBlc1snZGlyZWN0aW9ubGVzcyddKSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgU21vQXJwZWdnaW8uX3R5cGVzWydkaXJlY3Rpb25sZXNzJ10gPSA3O1xyXG4gICAgICBTbW9BcnBlZ2dpby5fdHlwZXNbJ3Jhc3F1ZWRvX3VwJ10gPSA2O1xyXG4gICAgICBTbW9BcnBlZ2dpby5fdHlwZXNbJ3Jhc3F1ZWRvX2Rvd24nXSA9IDU7XHJcbiAgICAgIFNtb0FycGVnZ2lvLl90eXBlc1sncm9sbF91cCddID0gNDtcclxuICAgICAgU21vQXJwZWdnaW8uX3R5cGVzWydyb2xsX2Rvd24nXSA9IDM7XHJcbiAgICAgIFNtb0FycGVnZ2lvLl90eXBlc1snYnJ1c2hfdXAnXSA9IDI7XHJcbiAgICAgIFNtb0FycGVnZ2lvLl90eXBlc1snYnJ1c2hfZG93biddID0gMTtcclxuICAgICAgU21vQXJwZWdnaW8uX3R5cGVzWydub25lJ10gPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFNtb0FycGVnZ2lvLl90eXBlcztcclxuICB9ICAgIFxyXG4gIHR5cGVDb2RlOiBudW1iZXI7XHJcbiAgY29uc3RydWN0b3IocGFyYW1zOiBTbW9BcnBlZ2dpb1BhcmFtcykge1xyXG4gICAgc3VwZXIoJ1Ntb0FycGVnZ2lvJyk7XHJcbiAgICB0aGlzLnR5cGVDb2RlID0gU21vQXJwZWdnaW8udHlwZXNbcGFyYW1zLnR5cGVdO1xyXG4gIH1cclxuICBnZXQgdHlwZVN0cmluZygpOiBTbW9BcnBlZ2dpb1R5cGUge1xyXG4gICAgY29uc3Qgc3RyID0gU21vQXJwZWdnaW9UeXBlcy5maW5kKCh4KSA9PiBTbW9BcnBlZ2dpby50eXBlc1t4XSA9PT0gdGhpcy50eXBlQ29kZSk7XHJcbiAgICBjb25zdCB0eXBlID0gc3RyID8gc3RyIDogJ25vbmUnO1xyXG4gICAgcmV0dXJuIHR5cGUgYXMgU21vQXJwZWdnaW9UeXBlO1xyXG4gIH1cclxuICBzZXJpYWxpemUoKTogU21vQXJwZWdnaW9QYXJhbXNTZXIge1xyXG4gICAgY29uc3QgcnY6IFBhcnRpYWw8U21vQXJwZWdnaW9QYXJhbXNTZXI+ID0geyBjdG9yOiAnU21vQXJwZWdnaW8nIH1cclxuICAgIGNvbnN0IHN0ciA9IFNtb0FycGVnZ2lvVHlwZXMuZmluZCgoeCkgPT4gU21vQXJwZWdnaW8udHlwZXNbeF0gPT09IHRoaXMudHlwZUNvZGUpO1xyXG4gICAgcnYudHlwZSA9IHN0ciA/IHN0ciA6ICdub25lJztcclxuICAgIGlmICghaXNTbW9BcnBlZ2dpb25QYXJhbXNTZXIocnYpKSB7XHJcbiAgICAgIHRocm93ICdiYWQgYXJwZWdnaW8gJyArIEpTT04uc3RyaW5naWZ5KHJ2KTtcclxuICAgIH1cclxuICAgIHJldHVybiBydjtcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHtAbGluayBTbW9NaWNyb3RvbmV9XHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vTWljcm90b25lUGFyYW1zIGV4dGVuZHMgU21vT2JqZWN0UGFyYW1zIHtcclxuICAvKipcclxuICAgKiBpbmRpY2F0ZXMgd2hpY2ggbW9kaWZpZXIgdG8gYWx0ZXIgdGhlIHRvbmUgKGUuZy4gMS80IHNoYXJwKVxyXG4gICAqL1xyXG4gIHRvbmU6IHN0cmluZyxcclxuICAvKipcclxuICAgKiB0aGUgaW5kZXggb2YgdGhlIHBpdGNoIHRvIGFsdGVyXHJcbiAgICovXHJcbiAgcGl0Y2g6IG51bWJlclxyXG59XHJcbi8qKlxyXG4gKiBzZXJpYWxpemVkIG1pY3JvdG9uZXMuXHJcbiAqIEBjYXRlZ29yeSBzZXJpYWxpemF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb01pY3JvdG9uZVBhcmFtc1NlciBleHRlbmRzIFNtb01pY3JvdG9uZVBhcmFtcyB7XHJcbiAgY3Rvcjogc3RyaW5nLFxyXG4gIGF0dHJzOiBTbW9BdHRyc1xyXG59XHJcbmZ1bmN0aW9uIGlzU21vTWljcm90b25lUGFyYW1zU2VyKHBhcmFtczogUGFydGlhbDxTbW9NaWNyb3RvbmVQYXJhbXNTZXI+KTogcGFyYW1zIGlzIFNtb01pY3JvdG9uZVBhcmFtc1NlciB7XHJcbiAgaWYgKHR5cGVvZihwYXJhbXMuY3RvcikgIT09ICdzdHJpbmcnIHx8IHBhcmFtcy5jdG9yICE9PSAnU21vTWljcm90b25lJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWljcm90b25lcyBhcmUgdHJlYXRlZCBzaW1pbGFybHkgdG8gb3JuYW1lbnRzLiAgVGhlcmUgYXJlIG5vdFxyXG4gKiBydWxlcyBmb3IgcGVyc2lzdGluZyB0aHJvdWdob3V0IGEgbWVhc3VyZSwgY2FuY2VsIGV0Yy5cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4qL1xyXG5leHBvcnQgY2xhc3MgU21vTWljcm90b25lIGV4dGVuZHMgU21vTm90ZU1vZGlmaWVyQmFzZSB7XHJcbiAgdG9uZTogc3RyaW5nID0gJ2ZsYXQ3NXN6JztcclxuICBwaXRjaEluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICAvLyBUaGlzIGlzIGhvdyBWZXhGbG93IG5vdGF0ZXMgdGhlbVxyXG4gIHN0YXRpYyByZWFkb25seSBzbW9Ub1ZleDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgIGZsYXQ3NXN6OiAnZGInLFxyXG4gICAgZmxhdDI1c3o6ICdkJyxcclxuICAgIGZsYXQyNWFyOiAnYnMnLFxyXG4gICAgZmxhdDEyNWFyOiAnYWZoZicsXHJcbiAgICBzaGFycDc1OiAnKysnLFxyXG4gICAgc2hhcnAxMjU6ICdhc2hzJyxcclxuICAgIHNoYXJwMjU6ICcrJyxcclxuICAgIHNvcmk6ICdvJyxcclxuICAgIGtvcm9uOiAnaydcclxuICB9XHJcblxyXG4gIC8vIFRoZSBhdWRpbyBmcmVxdWVuY3kgb2Zmc2V0c1xyXG4gIHN0YXRpYyByZWFkb25seSBwaXRjaENvZWZmOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xyXG4gICAgZmxhdDc1c3o6IC0xLjUsXHJcbiAgICBmbGF0MjVzejogLTAuNSxcclxuICAgIGZsYXQyNWFyOiAtMC41LFxyXG4gICAgZmxhdDEyNWFyOiAtMi41LFxyXG4gICAgc2hhcnA3NTogMS41LFxyXG4gICAgc2hhcnAxMjU6IDIuNSxcclxuICAgIHNoYXJwMjU6IDAuNSxcclxuICAgIHNvcmk6IDAuNSxcclxuICAgIGtvcm9uOiAtMC41XHJcbiAgfVxyXG5cclxuICBnZXQgdG9QaXRjaENvZWZmKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gU21vTWljcm90b25lLnBpdGNoQ29lZmZbdGhpcy50b25lXTtcclxuICB9XHJcblxyXG4gIGdldCB0b1ZleCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNtb01pY3JvdG9uZS5zbW9Ub1ZleFt0aGlzLnRvbmVdO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb01pY3JvdG9uZVBhcmFtcyAge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBjdG9yOiAnU21vTWljcm90b25lJyxcclxuICAgICAgdG9uZTogJ2ZsYXQyNXN6JyxcclxuICAgICAgcGl0Y2g6IDBcclxuICAgIH0pKTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBwYXJhbWV0ZXJBcnJheSgpIHtcclxuICAgIGNvbnN0IHJ2OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBTbW9NaWNyb3RvbmUuZGVmYXVsdHMpIHtcclxuICAgICAgcnYucHVzaChrZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuICBzZXJpYWxpemUoKTogU21vTWljcm90b25lUGFyYW1zU2VyIHtcclxuICAgIGNvbnN0IHBhcmFtczogUGFydGlhbDxTbW9NaWNyb3RvbmVQYXJhbXNTZXI+ID0geyBjdG9yOiAnU21vTWljcm90b25lJyB9O1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZU5vbkRlZmF1bHQoU21vTWljcm90b25lLmRlZmF1bHRzLFxyXG4gICAgICBTbW9NaWNyb3RvbmUucGFyYW1ldGVyQXJyYXksIHRoaXMsIHBhcmFtcyk7XHJcbiAgICBpZiAoIWlzU21vTWljcm90b25lUGFyYW1zU2VyKHBhcmFtcykpIHtcclxuICAgICAgdGhyb3cgJ2JhZCBtaWNyb3RvbmUgJyArIEpTT04uc3RyaW5naWZ5KHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzOiBTbW9NaWNyb3RvbmVQYXJhbXMpIHtcclxuICAgIHN1cGVyKHBhcmFtZXRlcnMuY3Rvcik7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb01pY3JvdG9uZS5wYXJhbWV0ZXJBcnJheSwgU21vTWljcm90b25lLmRlZmF1bHRzLCB0aGlzKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vTWljcm90b25lLnBhcmFtZXRlckFycmF5LCBwYXJhbWV0ZXJzLCB0aGlzKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb25zdHJ1Y3RvciBmb3Ige0BsaW5rIFNtb09ybmFtZW50fVxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb09ybmFtZW50UGFyYW1zIHtcclxuICAvKipcclxuICAgKiBwb3N0aXRpb24sIGFib3ZlIG9yIGJlbG93XHJcbiAgICovXHJcbiAgcG9zaXRpb24/OiBzdHJpbmcsXHJcbiAgLyoqXHJcbiAgICogaG9yaXpvbnRhbCBvZmZzZXQgZnJvbSBub3RlIGhlYWRcclxuICAgKi8gIFxyXG4gIG9mZnNldD86IHN0cmluZyxcclxuICAvKipcclxuICAgKiBhY2NpZGVudGFsIGFib3ZlL2JlbG93XHJcbiAgICovXHJcbiAgYWNjaWRlbnRhbEFib3ZlPzogc3RyaW5nLFxyXG4gIGFjY2lkZW50YWxCZWxvdz86IHN0cmluZyxcclxuICAvKipcclxuICAgKiBjb2RlIGZvciB0aGUgb3JuYW1lbnRcclxuICAgKi9cclxuICBvcm5hbWVudDogc3RyaW5nLFxyXG59XHJcbi8qKlxyXG4gKiBzZXJpYWxpemFibGUgb3JuYW1lbnRcclxuICogQGNhdGVnb3J5IHNlcmlhbGl6YXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vT3JuYW1lbnRQYXJhbXNTZXIgZXh0ZW5kcyBTbW9Pcm5hbWVudFBhcmFtcyB7XHJcbiAgLyoqXHJcbiAgICogY29uc3RydWN0b3JcclxuICAgKi9cclxuICBjdG9yOiBzdHJpbmc7XHJcbn1cclxuZnVuY3Rpb24gaXNTbW9Pcm5hbWVudFBhcmFtc1NlcihwYXJhbXM6IFBhcnRpYWw8U21vT3JuYW1lbnRQYXJhbXNTZXI+KTogcGFyYW1zIGlzIFNtb09ybmFtZW50UGFyYW1zU2VyIHtcclxuICBpZiAodHlwZW9mKHBhcmFtcy5jdG9yKSAhPT0gJ3N0cmluZycgfHwgcGFyYW1zLmN0b3IgIT09ICdTbW9Pcm5hbWVudCcpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuLyoqXHJcbiAqIE9ybmFtZW50cyBtYXAgdG8gdmV4IG9ybmFtZW50cy4gIGFydGljdWxhdGlvbnMgdnMuIG9ybmFtZW50c1xyXG4gKiBpcyBraW5kIG9mIGFyYml0cmFyeVxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU21vT3JuYW1lbnQgZXh0ZW5kcyBTbW9Ob3RlTW9kaWZpZXJCYXNlIHsgIFxyXG4gIHN0YXRpYyByZWFkb25seSBvcm5hbWVudHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICBtb3JkZW50OiAnbW9yZGVudCcsXHJcbiAgICBtb3JkZW50X2ludmVydGVkOiAnbW9yZGVudF9pbnZlcnRlZCcsXHJcbiAgICB0dXJuOiAndHVybicsXHJcbiAgICB0dXJuX2ludmVydGVkOiAndHVybl9pbnZlcnRlZCcsXHJcbiAgICB0cmlsbDogJ3RyJyxcclxuICAgIHVwcHJhbGw6ICd1cHByYWxsJyxcclxuICAgIHByYWxsdXA6ICdwcmFsbHVwJyxcclxuICAgIHByYWxsZG93bjogJ3ByYWxsZG93bicsXHJcbiAgICB1cG1vcmRlbnQ6ICd1cG1vcmRlbnQnLFxyXG4gICAgZG93bm1vcmRlbnQ6ICdkb3dubW9yZGVudCcsXHJcbiAgICBjYWVzdXJhOiAnY2Flc3VyYScsXHJcbiAgICBsaW5lcHJhbGw6ICdsaW5lcHJhbGwnLFxyXG4gICAgcHJhbGxwcmFsbDogJ3ByYWxscHJhbGwnLFxyXG4gICAgc2Nvb3A6ICdzY29vcCcsXHJcbiAgICBmYWxsOiAnZmFsbCcsXHJcbiAgICBmYWxsTG9uZzogJ2ZhbGxMb25nJyxcclxuICAgIGJyZWF0aDogJ2JyZWF0aCcsXHJcbiAgICBkb2l0OiAnZG9pdCcsXHJcbiAgICBkb2l0TG9uZzogJ2RvaXRMb25nJyxcclxuICAgIGZsaXA6ICdmbGlwJyxcclxuICAgIHNtZWFyOiAnc21lYXInLFxyXG4gICAgYmVuZDogJ2JlbmQnLFxyXG4gICAgcGx1bmdlckNsb3NlZDogJ3BsdW5nZXJDbG9zZWQnLFxyXG4gICAgcGx1bmdlck9wZW46ICdwbHVuZ2VyT3BlbidcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSB4bWxPcm5hbWVudHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICBtb3JkZW50OiAnbW9yZGVudCcsXHJcbiAgICBtb3JkZW50X2ludmVydGVkOiAnaW52ZXJ0ZWQtbW9yZGVudCcsXHJcbiAgICB0dXJuOiAndHVybicsXHJcbiAgICB0dXJuX2ludmVydGVkOiAnaW52ZXJ0ZWQtdHVybicsXHJcbiAgICB1cG1vcmRlbnQ6ICdtb3JkZW50JyxcclxuICAgIGRvd25tb3JkZW50OiAnbW9yZGVudCcsXHJcbiAgICBsaW5lcHJhbGw6ICdzY2hsZWlmZXInLFxyXG4gICAgcHJhbGxwcmFsbDogJ3NjaGxlaWZlcicsXHJcbiAgICBwcmFsbHVwOiAnc2NobGVpZmVyJyxcclxuICAgIHRyOiAndHJpbGwtbWFyaydcclxuICB9XHJcbiAgc3RhdGljIHJlYWRvbmx5IHRleHROb3RlT3JuYW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ICA9IHtcclxuICAgIGJyZWF0aDogJ2JyZWF0aCcsXHJcbiAgICBjYWVzdXJhOiAnY2Flc3VyYV9zdHJhaWdodCdcclxuICB9XHJcbiAgLy8gamF6eiBvcm5hbWVudHMgaW4gdmV4IGFyZSBhcnRpY3VsYXRpb25zIGluIG11c2ljIHhtbFxyXG4gIHN0YXRpYyByZWFkb25seSB4bWxKYXp6OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgZG9pdDogJ2RvaXQnLFxyXG4gICAgc2Nvb3A6ICdzY29vcCcsXHJcbiAgICBkcm9wTG9uZzogJ2ZhbGxvZmYnLFxyXG4gICAgZHJvcDogJ3Bsb3AnXHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgamF6ek9ybmFtZW50cygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gWydzY29vcCcsICdmYWxsTG9uZycsICdkb2l0JywgJ2RvaXRMb25nJywgJ2ZsaXAnLCAnc21lYXInLCAnc2Nvb3AnLCAncGx1bmdlck9wZW4nLCAncGx1bmdlckNsb3NlZCcsICdiZW5kJ107XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgbGVnYWN5SmF6eigpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiB7J1NDT09QJzogU21vT3JuYW1lbnQub3JuYW1lbnRzLnNjb29wICxcclxuICAgICAgJ0ZBTExfU0hPUlQnOiBTbW9Pcm5hbWVudC5vcm5hbWVudHMuZmFsbCxcclxuICAgICAgJ0ZBTExfTE9ORyc6IFNtb09ybmFtZW50Lm9ybmFtZW50cy5mYWxsTG9uZyxcclxuICAgICAgJ0RPSVQnOiBTbW9Pcm5hbWVudC5vcm5hbWVudHMuZG9pdCxcclxuICAgICAgJ0xJRlQnOiBTbW9Pcm5hbWVudC5vcm5hbWVudHMubGlmdCxcclxuICAgICAgJ0ZMSVAnOiBTbW9Pcm5hbWVudC5vcm5hbWVudHMuZmxpcCxcclxuICAgICAgJ1NNRUFSJzogU21vT3JuYW1lbnQub3JuYW1lbnRzLnNtZWFyXHJcbiAgICB9O1xyXG4gIH1cclxuICB0b1ZleCgpIHtcclxuICAgIHJldHVybiBTbW9Pcm5hbWVudC5vcm5hbWVudHNbdGhpcy5vcm5hbWVudF07XHJcbiAgfVxyXG4gIGlzSmF6eigpIHtcclxuICAgIHJldHVybiBTbW9Pcm5hbWVudC5qYXp6T3JuYW1lbnRzLmluZGV4T2YodGhpcy5vcm5hbWVudCkgPj0gMDtcclxuICB9XHJcbiAgcG9zaXRpb246IHN0cmluZyA9IFNtb09ybmFtZW50LnBvc2l0aW9ucy5hYm92ZTtcclxuICBvZmZzZXQ6IHN0cmluZyA9ICdvbic7XHJcbiAgb3JuYW1lbnQ6IHN0cmluZyA9IFNtb09ybmFtZW50Lm9ybmFtZW50cy5tb3JkZW50O1xyXG5cclxuICBzdGF0aWMgZ2V0IHBhcmFtZXRlckFycmF5KCkge1xyXG4gICAgY29uc3QgcnY6IHN0cmluZ1tdID0gW107XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICAgIGZvciAoY29uc3Qga2V5IGluIFNtb09ybmFtZW50LmRlZmF1bHRzKSB7XHJcbiAgICAgIHJ2LnB1c2goa2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBydjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXQgcG9zaXRpb25zKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWJvdmU6ICdhYm92ZScsXHJcbiAgICAgIGJlbG93OiAnYmVsb3cnLFxyXG4gICAgICBhdXRvOiAnYXV0bydcclxuICAgIH07XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgb2Zmc2V0cygpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG9uOiAnb24nLFxyXG4gICAgICBhZnRlcjogJ2FmdGVyJ1xyXG4gICAgfTtcclxuICB9ICBcclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb09ybmFtZW50UGFyYW1zIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgY3RvcjogJ1Ntb09ybmFtZW50JyxcclxuICAgICAgb3JuYW1lbnQ6IFNtb09ybmFtZW50Lm9ybmFtZW50cy5tb3JkZW50LFxyXG4gICAgICBwb3NpdGlvbjogU21vT3JuYW1lbnQucG9zaXRpb25zLmF1dG8sXHJcbiAgICAgIG9mZnNldDogU21vT3JuYW1lbnQub2Zmc2V0cy5vblxyXG4gICAgfSkpO1xyXG4gIH1cclxuICBzZXJpYWxpemUoKTogU21vT3JuYW1lbnRQYXJhbXNTZXIge1xyXG4gICAgdmFyIHBhcmFtczogUGFydGlhbDxTbW9Pcm5hbWVudFBhcmFtc1Nlcj4gPSB7IGN0b3I6ICdTbW9Pcm5hbWVudCcgfTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2VOb25EZWZhdWx0KFNtb09ybmFtZW50LmRlZmF1bHRzLFxyXG4gICAgICBTbW9Pcm5hbWVudC5wYXJhbWV0ZXJBcnJheSwgdGhpcywgcGFyYW1zKTtcclxuICAgIGlmICghaXNTbW9Pcm5hbWVudFBhcmFtc1NlcihwYXJhbXMpKSB7XHJcbiAgICAgIHRocm93ICdiYWQgb3JuYW1lbnQgJyArIEpTT04uc3RyaW5naWZ5KHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzOiBTbW9Pcm5hbWVudFBhcmFtcykge1xyXG4gICAgc3VwZXIoJ1Ntb09ybmFtZW50Jyk7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb09ybmFtZW50LnBhcmFtZXRlckFycmF5LCBTbW9Pcm5hbWVudC5kZWZhdWx0cywgdGhpcyk7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb09ybmFtZW50LnBhcmFtZXRlckFycmF5LCBwYXJhbWV0ZXJzLCB0aGlzKTtcclxuICAgIC8vIGhhbmRsZSBzb21lIGxlZ2FjeSBjaGFuZ2VzXHJcbiAgICBpZiAodHlwZW9mKFNtb09ybmFtZW50LmxlZ2FjeUphenpbdGhpcy5vcm5hbWVudF0pID09PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLm9ybmFtZW50ID0gU21vT3JuYW1lbnQubGVnYWN5SmF6elt0aGlzLm9ybmFtZW50XTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGZvciB7QGxpbmsgU21vQXJ0aWN1bGF0aW9ufVxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0FydGljdWxhdGlvblBhcmFtZXRlcnMge1xyXG4gIC8qKlxyXG4gICAqIHBvc2l0aW9uLCBhYm92ZSBvciBiZWxvd1xyXG4gICAqL1xyXG4gIHBvc2l0aW9uPzogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIHggb2Zmc2V0XHJcbiAgICovXHJcbiAgb2Zmc2V0PzogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIGFydGljdWxhdGlvbiBjb2RlXHJcbiAgICovXHJcbiAgYXJ0aWN1bGF0aW9uOiBzdHJpbmdcclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IHNlcmlhbGl6YXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vQXJ0aWN1bGF0aW9uUGFyYW1ldGVyc1NlciBleHRlbmRzIFNtb0FydGljdWxhdGlvblBhcmFtZXRlcnMge1xyXG4gIGN0b3I6IHN0cmluZztcclxufVxyXG5mdW5jdGlvbiBpc1Ntb0FydGljdWxhdGlvblBhcmFtZXRlcnNTZXIocGFyYW1zOiBQYXJ0aWFsPFNtb0FydGljdWxhdGlvblBhcmFtZXRlcnNTZXI+KTogcGFyYW1zIGlzIFNtb0FydGljdWxhdGlvblBhcmFtZXRlcnNTZXIge1xyXG4gIGlmICh0eXBlb2YocGFyYW1zLmN0b3IpICE9PSAnc3RyaW5nJyB8fCBwYXJhbXMuY3RvciAhPT0gJ1Ntb0FydGljdWxhdGlvbicpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuLyoqXHJcbiAqIEFydGljdWxhdGlvbnMgbWFwIHRvIG5vdGVzLCBjYW4gYmUgcGxhY2VkIGFib3ZlL2JlbG93XHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9BcnRpY3VsYXRpb24gZXh0ZW5kcyBTbW9Ob3RlTW9kaWZpZXJCYXNlIHtcclxuICBzdGF0aWMgZ2V0IGFydGljdWxhdGlvbnMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhY2NlbnQ6ICdhY2NlbnQnLFxyXG4gICAgICBzdGFjY2F0bzogJ3N0YWNjYXRvJyxcclxuICAgICAgbWFyY2F0bzogJ21hcmNhdG8nLFxyXG4gICAgICB0ZW51dG86ICd0ZW51dG8nLFxyXG4gICAgICB1cFN0cm9rZTogJ3VwU3Ryb2tlJyxcclxuICAgICAgZG93blN0cm9rZTogJ2Rvd25TdHJva2UnLFxyXG4gICAgICBwaXp6aWNhdG86ICdwaXp6aWNhdG8nLFxyXG4gICAgICBib3dVcDogJ2Jvd1VwJyxcclxuICAgICAgYm93RG93bjogJ2Jvd0Rvd24nLFxyXG4gICAgICBmZXJtYXRhOiAnZmVybWF0YSdcclxuICAgIH07XHJcbiAgfVxyXG4gIHN0YXRpYyByZWFkb25seSB4bWxBcnRpY3VsYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgYWNjZW50OiAnYWNjZW50JyxcclxuICAgIHN0YWNjYXRvOiAnc3RhY2NhdG8nLFxyXG4gICAgdGVudXRvOiAndGVudXRvJyxcclxuICAgIG1hcmNhdG86ICdzdHJvbmctYWNjZW50J1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IHBvc2l0aW9ucygpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFib3ZlOiAnYWJvdmUnLFxyXG4gICAgICBiZWxvdzogJ2JlbG93JyxcclxuICAgICAgYXV0bzogJ2F1dG8nXHJcbiAgICB9O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGFydGljdWxhdGlvblRvVmV4KCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWNjZW50OiAnYT4nLFxyXG4gICAgICBzdGFjY2F0bzogJ2EuJyxcclxuICAgICAgbWFyY2F0bzogJ2FeJyxcclxuICAgICAgdGVudXRvOiAnYS0nLFxyXG4gICAgICB1cFN0cm9rZTogJ2F8JyxcclxuICAgICAgZG93blN0cm9rZTogJ2FtJyxcclxuICAgICAgcGl6emljYXRvOiAnYW8nLFxyXG4gICAgICBmZXJtYXRhOiAnYUBhJ1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXQgdmV4VG9BcnRpY3VsYXRpb24oKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnYT4nOiAnYWNjZW50JyxcclxuICAgICAgJ2EuJzogJ3N0YWNjYXRvJyxcclxuICAgICAgJ2FeJzogJ21hcmNhdG8nLFxyXG4gICAgICAnYS0nOiAndGVudXRvJyxcclxuICAgICAgJ2F8JzogJ3VwU3Ryb2tlJyxcclxuICAgICAgJ2FtJzogJ2Rvd25TdHJva2UnLFxyXG4gICAgICAnYW8nOiAncGl6emljYXRvJyxcclxuICAgICAgJ2FAYSc6ICdmZXJtYXRhJ1xyXG4gICAgfTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBwYXJhbWV0ZXJBcnJheSgpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBydjogc3RyaW5nW10gPSBbXTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gU21vQXJ0aWN1bGF0aW9uLmRlZmF1bHRzKSB7XHJcbiAgICAgIHJ2LnB1c2goa2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBydjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXQgcG9zaXRpb25Ub1ZleCgpOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdhYm92ZSc6IDMsXHJcbiAgICAgICdiZWxvdyc6IDRcclxuICAgIH07XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKTogU21vQXJ0aWN1bGF0aW9uUGFyYW1ldGVycyB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGN0b3I6ICdTbW9BcnRpY3VsYXRpb24nLFxyXG4gICAgICBwb3NpdGlvbjogU21vQXJ0aWN1bGF0aW9uLnBvc2l0aW9ucy5hYm92ZSxcclxuICAgICAgYXJ0aWN1bGF0aW9uOiBTbW9BcnRpY3VsYXRpb24uYXJ0aWN1bGF0aW9ucy5hY2NlbnRcclxuICAgIH0pKTtcclxuICB9XHJcbiAgcG9zaXRpb246IHN0cmluZyA9IFNtb09ybmFtZW50LnBvc2l0aW9ucy5hYm92ZTtcclxuICBvZmZzZXQ6IG51bWJlciA9IDA7XHJcbiAgYXJ0aWN1bGF0aW9uOiBzdHJpbmcgPSBTbW9BcnRpY3VsYXRpb24uYXJ0aWN1bGF0aW9ucy5hY2NlbnQ7XHJcbiAgYWRqWDogbnVtYmVyID0gMDtcclxuXHJcbiAgc2VyaWFsaXplKCk6IFNtb0FydGljdWxhdGlvblBhcmFtZXRlcnNTZXIge1xyXG4gICAgdmFyIHBhcmFtczogUGFydGlhbDxTbW9BcnRpY3VsYXRpb25QYXJhbWV0ZXJzU2VyPiA9IHsgY3RvcjogJ1Ntb0FydGljdWxhdGlvbid9O1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZU5vbkRlZmF1bHQoU21vQXJ0aWN1bGF0aW9uLmRlZmF1bHRzLFxyXG4gICAgICBTbW9BcnRpY3VsYXRpb24ucGFyYW1ldGVyQXJyYXksIHRoaXMsIHBhcmFtcyk7XHJcbiAgICBpZiAoIWlzU21vQXJ0aWN1bGF0aW9uUGFyYW1ldGVyc1NlcihwYXJhbXMpKSB7XHJcbiAgICAgIHRocm93ICdiYWQgYXJ0aWN1bGF0aW9uICcgKyBKU09OLnN0cmluZ2lmeShwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcmFtcztcclxuICB9XHJcbiAgY29uc3RydWN0b3IocGFyYW1ldGVyczogU21vQXJ0aWN1bGF0aW9uUGFyYW1ldGVycykge1xyXG4gICAgc3VwZXIoJ1Ntb0FydGljdWxhdGlvbicpO1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZShTbW9BcnRpY3VsYXRpb24ucGFyYW1ldGVyQXJyYXksIFNtb0FydGljdWxhdGlvbi5kZWZhdWx0cywgdGhpcyk7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb0FydGljdWxhdGlvbi5wYXJhbWV0ZXJBcnJheSwgcGFyYW1ldGVycywgdGhpcyk7XHJcbiAgICAvLyB0aGlzLnNlbGVjdG9yID0gcGFyYW1ldGVycy5zZWxlY3RvcjtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmV4QW5ub3RhdGlvblBhcmFtcyB7XHJcbiAgZ2x5cGg/OiBzdHJpbmcsXHJcbiAgc3ltYm9sTW9kaWZpZXI/OiBudW1iZXIsXHJcbiAgdGV4dD86IHN0cmluZ1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIHBlcnNpc3QteSBwYXJ0cyBvZiB7QGxpbmsgU21vTHlyaWNQYXJhbXN9LiBXZSBkb24ndCBwZXJzaXN0IHRoZSBzZWxlY3RvclxyXG4gKiBzaW5jZSB0aGF0IGNhbiBjaGFuZ2UgYmFzZWQgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBwYXJlbnQgbm90ZVxyXG4gKiBAY2F0ZWdvcnkgc2VyaWFsaXphdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9MeXJpY1BhcmFtc1NlciBleHRlbmRzIFNtb09iamVjdFBhcmFtcyB7XHJcbiAgLyoqXHJcbiAgICogY29uc3RydWN0b3JcclxuICAgKi9cclxuICBjdG9yOiBzdHJpbmcsXHJcbiAgLyoqXHJcbiAgICogYXR0cmlidXRlcyBmb3IgSURcclxuICAgKi9cclxuICBhdHRyczogU21vQXR0cnMsXHJcbiAgLyoqXHJcbiAgICogdGhlIGx5cmljIGZvbnRcclxuICAgKi9cclxuICBmb250SW5mbzogRm9udEluZm8sXHJcbiAgLyoqXHJcbiAgICogY2xhc3NlcyBmb3Igc3R5bGluZ1xyXG4gICAqL1xyXG4gIGNsYXNzZXM6IHN0cmluZyxcclxuICAvKipcclxuICAgKiB3aGljaCB2ZXJzZSB0aGUgbHlyaWMgZ29lcyB3aXRoXHJcbiAgICovXHJcbiAgdmVyc2U6IG51bWJlcixcclxuICAvKipcclxuICAgKiBseXJpY3MgYXJlIHVzZWQgZm9yIGNob3JkIGNoYW5nZXMgb3IgYW5ub3RhdGlvbnMsIHBhcnNlciBpcyBkaWZmZXJlbnQgZm9yIGVhY2hcclxuICAgKi9cclxuICBwYXJzZXI6IG51bWJlcixcclxuICAvKipcclxuICAgKiBpbmRpY2F0ZXMgd2Ugc2hvdWxkIGZvcm1hdCBmb3IgdGhlIHdpZHRoIG9mIHRoZSBseXJpY1xyXG4gICAqL1xyXG4gIGFkanVzdE5vdGVXaWR0aEx5cmljOiBib29sZWFuLFxyXG4gIC8qKlxyXG4gICAqIGluZGljYXRlcyB3ZSBzaG91bGQgZm9ybWF0IGZvciB0aGUgd2lkdGggb2YgdGhlIGNob3JkXHJcbiAgICovXHJcbiAgYWRqdXN0Tm90ZVdpZHRoQ2hvcmQ6IGJvb2xlYW4sXHJcbiAgLyoqXHJcbiAgICogZmlsbCBjb2xvciBmb3IgdGV4dFxyXG4gICAqL1xyXG4gIGZpbGw6IHN0cmluZyxcclxuICAvKipcclxuICAgKiB0cmFuc2xhdGUgdG8gYWxpZ24gbHlyaWNzLiAgUG9zc2libHkgdGhpcyBzaG91bGQgbm90IGJlIHNlcmlhbGl6ZWRcclxuICAgKi9cclxuICB0cmFuc2xhdGVYOiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogdHJhbnNsYXRlIHRvIGFsaWduIGx5cmljcy4gIFBvc3NpYmx5IHRoaXMgc2hvdWxkIG5vdCBiZSBzZXJpYWxpemVkXHJcbiAgICovXHJcbiAgdHJhbnNsYXRlWTogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIHRoZSBhY3R1YWwgdGV4dFxyXG4gICAqL1xyXG4gIHRleHQ6IHN0cmluZyB8IG51bGxcclxufVxyXG5cclxuZnVuY3Rpb24gaXNTbW9MeXJpY1BlcnNpc3QocGFyYW1zOiBQYXJ0aWFsPFNtb0x5cmljUGFyYW1zU2VyPik6IHBhcmFtcyBpcyBTbW9MeXJpY1BhcmFtc1NlciB7XHJcbiAgaWYgKHR5cGVvZihwYXJhbXMuY3RvcikgIT09ICdzdHJpbmcnIHx8IHBhcmFtcy5jdG9yICE9PSAnU21vTHlyaWMnKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBVc2VkIHRvIGNvbnN0cnVjdCBhIHtAbGluayBTbW9MeXJpY30gZm9yIGJvdGggY2hvcmRzIGFuZCBseXJpY3NcclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9MeXJpY1BhcmFtcyB7XHJcbiAgLyoqXHJcbiAgICogdGhlIGx5cmljIGZvbnRcclxuICAgKi9cclxuICBmb250SW5mbzogRm9udEluZm8sXHJcbiAgLyoqXHJcbiAgICogY2xhc3NlcyBmb3Igc3R5bGluZ1xyXG4gICAqL1xyXG4gIGNsYXNzZXM6IHN0cmluZyxcclxuICAvKipcclxuICAgKiB3aGljaCB2ZXJzZSB0aGUgbHlyaWMgZ29lcyB3aXRoXHJcbiAgICovXHJcbiAgdmVyc2U6IG51bWJlcixcclxuICAvKipcclxuICAgKiBseXJpY3MgYXJlIHVzZWQgZm9yIGNob3JkIGNoYW5nZXMgb3IgYW5ub3RhdGlvbnMsIHBhcnNlciBpcyBkaWZmZXJlbnQgZm9yIGVhY2hcclxuICAgKi9cclxuICBwYXJzZXI6IG51bWJlcixcclxuICAvKipcclxuICAgKiBpbmRpY2F0ZXMgd2Ugc2hvdWxkIGZvcm1hdCBmb3IgdGhlIHdpZHRoIG9mIHRoZSBseXJpY1xyXG4gICAqL1xyXG4gIGFkanVzdE5vdGVXaWR0aEx5cmljOiBib29sZWFuLFxyXG4gIC8qKlxyXG4gICAqIGluZGljYXRlcyB3ZSBzaG91bGQgZm9ybWF0IGZvciB0aGUgd2lkdGggb2YgdGhlIGNob3JkXHJcbiAgICovXHJcbiAgYWRqdXN0Tm90ZVdpZHRoQ2hvcmQ6IGJvb2xlYW4sXHJcbiAgLyoqXHJcbiAgICogZmlsbCBjb2xvciBmb3IgdGV4dFxyXG4gICAqL1xyXG4gIGZpbGw6IHN0cmluZyxcclxuICAvKipcclxuICAgKiB0cmFuc2xhdGUgdG8gYWxpZ24gbHlyaWNzLiAgUG9zc2libHkgdGhpcyBzaG91bGQgbm90IGJlIHNlcmlhbGl6ZWRcclxuICAgKi9cclxuICB0cmFuc2xhdGVYOiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogdHJhbnNsYXRlIHRvIGFsaWduIGx5cmljcy4gIFBvc3NpYmx5IHRoaXMgc2hvdWxkIG5vdCBiZSBzZXJpYWxpemVkXHJcbiAgICovXHJcbiAgdHJhbnNsYXRlWTogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIHRoZSBhY3R1YWwgdGV4dFxyXG4gICAqL1xyXG4gIHRleHQ6IHN0cmluZyB8IG51bGxcclxufVxyXG5cclxuLyoqXHJcbiAqIFNtb0x5cmljIGNvdmVycyBib3RoIGNob3JkcyBhbmQgbHlyaWNzLiAgVGhlIHBhcnNlciB0ZWxscyB5b3Ugd2hpY2hcclxuICogb25lIHlvdSBnZXQuXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9MeXJpYyBleHRlbmRzIFNtb05vdGVNb2RpZmllckJhc2Uge1xyXG4gIHN0YXRpYyByZWFkb25seSBwYXJzZXJzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xyXG4gICAgbHlyaWM6IDAsIGFuYXlseXNpczogMSwgY2hvcmQ6IDJcclxuICB9XHJcbiAgc3RhdGljIGdldCBkZWZhdWx0cygpOiBTbW9MeXJpY1BhcmFtcyB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGN0b3I6ICdTbW9MeXJpYycsXHJcbiAgICAgIHRleHQ6ICdcXHhhMCcsXHJcbiAgICAgIGVuZENoYXI6ICcnLFxyXG4gICAgICB2ZXJzZTogMCxcclxuICAgICAgZm9udEluZm86IHtcclxuICAgICAgICBzaXplOiAxMixcclxuICAgICAgICBmYW1pbHk6ICd0aW1lcycsXHJcbiAgICAgICAgc3R5bGU6ICdub3JtYWwnLFxyXG4gICAgICAgIHdlaWdodDogJ25vcm1hbCdcclxuICAgICAgfSxcclxuICAgICAgZmlsbDogJ2JsYWNrJyxcclxuICAgICAgY2xhc3NlczogJ3Njb3JlLXRleHQnLFxyXG4gICAgICB0cmFuc2xhdGVYOiAwLFxyXG4gICAgICB0cmFuc2xhdGVZOiAwLFxyXG4gICAgICBhZGp1c3ROb3RlV2lkdGhMeXJpYzogdHJ1ZSxcclxuICAgICAgYWRqdXN0Tm90ZVdpZHRoQ2hvcmQ6IGZhbHNlLFxyXG4gICAgICBwYXJzZXI6IFNtb0x5cmljLnBhcnNlcnMubHlyaWNcclxuICAgIH0pKTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBzeW1ib2xQb3NpdGlvbigpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIFNVUEVSU0NSSVBUOiAxLFxyXG4gICAgICBTVUJTQ1JJUFQ6IDIsXHJcbiAgICAgIE5PUk1BTDogM1xyXG4gICAgfTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBwZXJzaXN0QXJyYXkoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgcnY6IHN0cmluZ1tdID0gW107XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuICAgIGZvciAoY29uc3Qga2V5IGluIFNtb0x5cmljLmRlZmF1bHRzKSB7XHJcbiAgICAgIHJ2LnB1c2goa2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBydjtcclxuICB9XHJcbiAgc3RhdGljIGdldCBwYXJhbWV0ZXJBcnJheSgpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBydiA9IFNtb0x5cmljLnBlcnNpc3RBcnJheTtcclxuICAgIHJ2LnB1c2goJ3NlbGVjdG9yJywgJ3RleHQnKTtcclxuICAgIHJldHVybiBydjtcclxuICB9XHJcblxyXG4gIGN0b3I6IHN0cmluZyA9ICdTbW9MeXJpYyc7XHJcbiAgdGV4dDogc3RyaW5nID0gJyc7XHJcbiAgZm9udEluZm86IEZvbnRJbmZvID0ge1xyXG4gICAgc2l6ZTogMTIsXHJcbiAgICBmYW1pbHk6ICdNZXJyaXdlYXRoZXInLFxyXG4gICAgc3R5bGU6ICdub3JtYWwnLFxyXG4gICAgd2VpZ2h0OiAnbm9ybWFsJ1xyXG4gIH07XHJcbiAgcGFyc2VyOiBudW1iZXIgPSBTbW9MeXJpYy5wYXJzZXJzLmx5cmljO1xyXG4gIHNlbGVjdG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gdXNlZCBieSBVSVxyXG4gIGFkanVzdE5vdGVXaWR0aEx5cmljOiBib29sZWFuID0gdHJ1ZTtcclxuICBhZGp1c3ROb3RlV2lkdGhDaG9yZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlcnNlOiBudW1iZXIgPSAwO1xyXG4gIHNraXBSZW5kZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmaWxsOiBzdHJpbmcgPSAnJztcclxuICB0cmFuc2xhdGVYOiBudW1iZXIgPSAwO1xyXG4gIHRyYW5zbGF0ZVk6IG51bWJlciA9IDA7XHJcbiAgY2xhc3Nlczogc3RyaW5nID0gJyc7XHJcbiAgLy8gdXNlZCBieSB0aGUgcmVuZGVyZXIgdG8gY2FsY3VsYXRlIG9mZnNldHMgZm9yIGFsaWduaW5nIGx5cmljc1xyXG4gIGFkalg6IG51bWJlciA9IDA7XHJcbiAgYWRqWTogbnVtYmVyID0gMDtcclxuICAvLyB1c2VkIGJ5IHRoZSByZW5kZXJlciB0byBjYWxjdWxhdGUgdGhlIHkgb2Zmc2V0IGZvciBtdXNpYyB0aGF0IGdvZXMgYmVsb3cgdGhlIHN0YWZmXHJcbiAgbXVzaWNZT2Zmc2V0OiBudW1iZXIgPSAwO1xyXG4gIGh5cGhlblg6IG51bWJlciA9IDA7XHJcbiAgZGVsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZXJpYWxpemUoKTogU21vTHlyaWNQYXJhbXNTZXIge1xyXG4gICAgdmFyIHBhcmFtczogUGFydGlhbDxTbW9MeXJpY1BhcmFtc1Nlcj4gPSB7IGN0b3I6ICdTbW9MeXJpYycgfTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2VOb25EZWZhdWx0KFNtb0x5cmljLmRlZmF1bHRzLFxyXG4gICAgICBTbW9MeXJpYy5wZXJzaXN0QXJyYXksIHRoaXMsIHBhcmFtcyk7XHJcbiAgICBpZiAoIWlzU21vTHlyaWNQZXJzaXN0KHBhcmFtcykpIHtcclxuICAgICAgdGhyb3cgJ2JhZCBseXJpYyAnICsgSlNPTi5zdHJpbmdpZnkoJ3BhcmFtcycpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcmFtcztcclxuICB9XHJcbiAgLy8gRm9yIGx5cmljcywgd2UgZGVmYXVsdCB0byBhZGp1c3Qgbm90ZSB3aWR0aCBvbiBseXJpYyBzaXplLiAgRm9yIGNob3JkcywgdGhpcyBpcyBhbG1vc3QgbmV2ZXIgd2hhdFxyXG4gIC8vIHlvdSB3YW50LCBzbyBpdCBpcyBvZmYgYnkgZGVmYXVsdC5cclxuICBnZXQgYWRqdXN0Tm90ZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLnBhcnNlciA9PT0gU21vTHlyaWMucGFyc2Vycy5seXJpYykgPyB0aGlzLmFkanVzdE5vdGVXaWR0aEx5cmljIDogdGhpcy5hZGp1c3ROb3RlV2lkdGhDaG9yZDtcclxuICB9XHJcbiAgc2V0IGFkanVzdE5vdGVXaWR0aCh2YWwpIHtcclxuICAgIGlmICh0aGlzLnBhcnNlciA9PT0gU21vTHlyaWMucGFyc2Vycy5seXJpYykge1xyXG4gICAgICB0aGlzLmFkanVzdE5vdGVXaWR0aEx5cmljID0gdmFsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hZGp1c3ROb3RlV2lkdGhDaG9yZCA9IHZhbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICMjIyBnZXRDbGFzc1NlbGVjdG9yXHJcbiAgLy8gcmV0dXJucyBhIHNlbGVjdG9yIHVzZWQgdG8gZmluZCB0aGlzIHRleHQgYmxvY2sgd2l0aGluIGEgbm90ZS5cclxuICBnZXRDbGFzc1NlbGVjdG9yKCk6IHN0cmluZyB7XHJcbiAgICB2YXIgcGFyc2VyID0gKHRoaXMucGFyc2VyID09PSBTbW9MeXJpYy5wYXJzZXJzLmx5cmljID8gJ2x5cmljJyA6ICdjaG9yZCcpO1xyXG4gICAgcmV0dXJuICdnLicgKyBwYXJzZXIgKyAnLScgKyB0aGlzLnZlcnNlO1xyXG4gIH1cclxuXHJcbiAgc2V0VGV4dCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIC8vIEZvciBjaG9yZHMsIHRyaW0gYWxsIHdoaXRlc3BhY2VcclxuICAgIGlmICh0aGlzLnBhcnNlciAhPT0gU21vTHlyaWMucGFyc2Vycy5seXJpYykge1xyXG4gICAgICBpZiAodGV4dC50cmltKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgdGV4dC5yZXBsYWNlKC9cXHMvZywgJycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xyXG4gIH1cclxuXHJcbiAgaXNIeXBoZW5hdGVkKCkge1xyXG4gICAgY29uc3QgdGV4dCA9IHRoaXMudGV4dC50cmltKCk7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIgPT09IFNtb0x5cmljLnBhcnNlcnMubHlyaWMgJiZcclxuICAgICAgdGV4dC5sZW5ndGggJiZcclxuICAgICAgdGV4dFt0ZXh0Lmxlbmd0aCAtIDFdID09PSAnLSc7XHJcbiAgfVxyXG5cclxuICBnZXRUZXh0KCkge1xyXG4gICAgY29uc3QgdGV4dCA9IHRoaXMudGV4dC50cmltKCk7XHJcbiAgICBpZiAodGhpcy5pc0h5cGhlbmF0ZWQoKSkge1xyXG4gICAgICByZXR1cm4gc21vU2VyaWFsaXplLnRyeVBhcnNlVW5pY29kZSh0ZXh0LnN1YnN0cigwLCB0ZXh0Lmxlbmd0aCAtIDEpKS50cmltKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc21vU2VyaWFsaXplLnRyeVBhcnNlVW5pY29kZSh0ZXh0KTtcclxuICB9XHJcblxyXG4gIGlzRGFzaCgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldFRleHQoKS5sZW5ndGggPT09IDAgJiYgdGhpcy5pc0h5cGhlbmF0ZWQoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBfY2hvcmRHbHlwaEZyb21Db2RlKGNvZGU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGdldENob3JkU3ltYm9sR2x5cGhGcm9tQ29kZShjb2RlKTtcclxuICB9XHJcbiAgc3RhdGljIF90b2tlbml6ZUNob3JkU3RyaW5nKHN0cjogc3RyaW5nKSB7XHJcbiAgICAvLyB2YXIgc3RyID0gdGhpcy5fdGV4dDtcclxuICAgIGNvbnN0IHJlZyA9IC9eKFtBLVp8YS16fDAtOXxdKykvZztcclxuICAgIGxldCBtbW0gPSBzdHIubWF0Y2gocmVnKTtcclxuICAgIGxldCB0b2tlVHlwZTogc3RyaW5nID0gJyc7XHJcbiAgICBsZXQgdG9rZTogc3RyaW5nID0gJyc7XHJcbiAgICBjb25zdCB0b2tlbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICB3aGlsZSAoc3RyLmxlbmd0aCkge1xyXG4gICAgICBpZiAoIW1tbSkge1xyXG4gICAgICAgIHRva2VUeXBlID0gc3RyWzBdO1xyXG4gICAgICAgIHRva2Vucy5wdXNoKHRva2VUeXBlKTtcclxuICAgICAgICBzdHIgPSBzdHIuc2xpY2UoMSwgc3RyLmxlbmd0aCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdG9rZSA9IG1tbVswXS5zdWJzdHIoMCwgbW1tWzBdLmxlbmd0aCk7XHJcbiAgICAgICAgc3RyID0gc3RyLnNsaWNlKHRva2UubGVuZ3RoLCBzdHIubGVuZ3RoKTtcclxuICAgICAgICB0b2tlbnMucHVzaCh0b2tlKTtcclxuICAgICAgICB0b2tlVHlwZSA9ICcnO1xyXG4gICAgICAgIHRva2UgPSAnJztcclxuICAgICAgfVxyXG4gICAgICBtbW0gPSBzdHIubWF0Y2gocmVnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0b2tlbnM7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnM6IFNtb0x5cmljUGFyYW1zKSB7XHJcbiAgICBzdXBlcignU21vTHlyaWMnKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vTHlyaWMucGFyYW1ldGVyQXJyYXksIFNtb0x5cmljLmRlZmF1bHRzLCB0aGlzKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vTHlyaWMucGFyYW1ldGVyQXJyYXksIHBhcmFtZXRlcnMsIHRoaXMpO1xyXG4gICAgaWYgKHR5cGVvZih0aGlzLmZvbnRJbmZvLnNpemUpICE9PSAnbnVtYmVyJykge1xyXG4gICAgICB0aGlzLmZvbnRJbmZvLnNpemUgPSBTbW9MeXJpYy5kZWZhdWx0cy5mb250SW5mby5zaXplO1xyXG4gICAgfVxyXG4gICAgLy8gYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yIGx5cmljIHRleHRcclxuICAgIGlmIChwYXJhbWV0ZXJzLnRleHQpIHtcclxuICAgICAgdGhpcy50ZXh0ID0gcGFyYW1ldGVycy50ZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNhbGN1bGF0ZWQgYWRqdXN0bWVudHMgZm9yIGFsaWdubWVudCBwdXJwb3Nlc1xyXG4gICAgdGhpcy5hZGpZID0gMDtcclxuICAgIHRoaXMuYWRqWCA9IDA7XHJcbiAgICAvLyB0aGlzLnZlcnNlID0gcGFyc2VJbnQodGhpcy52ZXJzZSwgMTApO1xyXG5cclxuICAgIGlmICghdGhpcy5hdHRycykge1xyXG4gICAgICB0aGlzLmF0dHJzID0ge1xyXG4gICAgICAgIGlkOiBnZXRJZCgpLnRvU3RyaW5nKCksXHJcbiAgICAgICAgdHlwZTogJ1Ntb0x5cmljJ1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4vKipcclxuICogVXNlZCB0byBjcmVhdGUgYSB7QGxpbmsgU21vQmFybGluZX1cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vTm90ZUJhclBhcmFtcyB7XHJcbiAgYmFybGluZTogbnVtYmVyXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vTm90ZUJhclBhcmFtc1NlciBleHRlbmRzIFNtb05vdGVCYXJQYXJhbXMge1xyXG4gIGN0b3I6IHN0cmluZyxcclxuICBiYXJsaW5lOiBudW1iZXJcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNtb05vdGVCYXIgZXh0ZW5kcyBTbW9Ob3RlTW9kaWZpZXJCYXNlIHtcclxuICBiYXJsaW5lOiBudW1iZXIgPSBTbW9Ob3RlQmFyLmRlZmF1bHRzLmJhcmxpbmU7XHJcbiAgc3RhdGljIGdldCBkZWZhdWx0cygpOiBTbW9Ob3RlQmFyUGFyYW1zIHtcclxuICAgIHJldHVybiB7IGJhcmxpbmU6IFNtb05vdGVCYXIuYmFybGluZXMubm9CYXIgfVxyXG4gIH1cclxuICBzdGF0aWMgZ2V0IHBhcmFtZXRlckFycmF5KCkge1xyXG4gICAgcmV0dXJuIFsnYmFybGluZSddO1xyXG4gIH1cclxuICBzdGF0aWMgcmVhZG9ubHkgYmFybGluZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XHJcbiAgICBzaW5nbGVCYXI6IDAsXHJcbiAgICBkb3VibGVCYXI6IDEsXHJcbiAgICBlbmRCYXI6IDIsXHJcbiAgICBzdGFydFJlcGVhdDogMyxcclxuICAgIGVuZFJlcGVhdDogNCxcclxuICAgIG5vQmFyOiA1XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnM6IFNtb05vdGVCYXJQYXJhbXMpIHtcclxuICAgIHN1cGVyKCdTbW9Ob3RlQmFyJyk7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb05vdGVCYXIucGFyYW1ldGVyQXJyYXksIFNtb05vdGVCYXIuZGVmYXVsdHMsIHRoaXMpO1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZShTbW9MeXJpYy5wYXJhbWV0ZXJBcnJheSwgcGFyYW1ldGVycywgdGhpcyk7XHJcbiAgfVxyXG4gIHNlcmlhbGl6ZSgpOiBTbW9Ob3RlQmFyUGFyYW1zU2VyIHtcclxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IFBhcnRpYWw8U21vTm90ZUJhclBhcmFtc1Nlcj4gPSB7fTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2VOb25EZWZhdWx0KFNtb05vdGVCYXIuZGVmYXVsdHMsXHJcbiAgICAgIFNtb05vdGVCYXIucGFyYW1ldGVyQXJyYXksIHRoaXMsIHBhcmFtZXRlcnMpO1xyXG4gICAgcGFyYW1ldGVycy5jdG9yID0gJ1Ntb05vdGVCYXInO1xyXG4gICAgcmV0dXJuIHBhcmFtZXRlcnMgYXMgU21vTm90ZUJhclBhcmFtc1NlcjtcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIFRoZSBwZXJzaXN0ZWQgYml0cyBvZiB7QGxpbmsgU21vRHluYW1pY1RleHRQYXJhbXN9XHJcbiAqIEBjYXRlZ29yeSBzZXJpYWxpemF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0R5bmFtaWNUZXh0U2VyIGV4dGVuZHMgU21vT2JqZWN0UGFyYW1zIHtcclxuICBjdG9yOiBzdHJpbmcsXHJcbiAgeE9mZnNldDogbnVtYmVyLFxyXG4gIGZvbnRTaXplOiBudW1iZXIsXHJcbiAgeU9mZnNldExpbmU6IG51bWJlcixcclxuICB5T2Zmc2V0UGl4ZWxzOiBudW1iZXIsXHJcbiAgdGV4dDogc3RyaW5nXHJcbn1cclxuLyoqXHJcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHtAbGluayBTbW9EeW5hbWljVGV4dH1cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9EeW5hbWljVGV4dFBhcmFtcyBleHRlbmRzIFNtb0R5bmFtaWNUZXh0U2VyIHtcclxuICBjdG9yOiBzdHJpbmcsXHJcbiAgeE9mZnNldDogbnVtYmVyLFxyXG4gIGZvbnRTaXplOiBudW1iZXIsXHJcbiAgeU9mZnNldExpbmU6IG51bWJlcixcclxuICB5T2Zmc2V0UGl4ZWxzOiBudW1iZXIsXHJcbiAgdGV4dDogc3RyaW5nXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEeW5hbWljIHRleHQgdGVsbHMgeW91IGhvdyBsb3VkIG5vdCB0byBwbGF5LlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU21vRHluYW1pY1RleHQgZXh0ZW5kcyBTbW9Ob3RlTW9kaWZpZXJCYXNlIHtcclxuICBzdGF0aWMgZ2V0IGR5bmFtaWNzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgLy8gbWF0Y2hlcyBWRi5tb2RpZmllclxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgUFA6ICdwcCcsXHJcbiAgICAgIFA6ICdwJyxcclxuICAgICAgTVA6ICdtcCcsXHJcbiAgICAgIE1GOiAnbWYnLFxyXG4gICAgICBGOiAnZicsXHJcbiAgICAgIEZGOiAnZmYnLFxyXG4gICAgICBTRlo6ICdzZnonXHJcbiAgICB9O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb0R5bmFtaWNUZXh0UGFyYW1zIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgY3RvcjogJ1Ntb0R5bmFtaWNUZXh0JyxcclxuICAgICAgeE9mZnNldDogMCxcclxuICAgICAgZm9udFNpemU6IGRlZmF1bHROb3RlU2NhbGUsXHJcbiAgICAgIHlPZmZzZXRMaW5lOiAxMSxcclxuICAgICAgeU9mZnNldFBpeGVsczogMCxcclxuICAgICAgdGV4dDogU21vRHluYW1pY1RleHQuZHluYW1pY3MuTVAsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgcGVyc2lzdEFycmF5KCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHJ2OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBTbW9EeW5hbWljVGV4dC5kZWZhdWx0cykge1xyXG4gICAgICBydi5wdXNoKGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcnY7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgcGFyYW1ldGVyQXJyYXkoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgcnYgPSBTbW9EeW5hbWljVGV4dC5wZXJzaXN0QXJyYXk7XHJcbiAgICBydi5wdXNoKCdzZWxlY3RvcicpO1xyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuICB0ZXh0OiBzdHJpbmcgPSAnJztcclxuICB5T2Zmc2V0TGluZTogbnVtYmVyID0gMTE7XHJcbiAgeU9mZnNldFBpeGVsczogbnVtYmVyID0gMDtcclxuICB4T2Zmc2V0OiBudW1iZXIgPSAwO1xyXG4gIGZvbnRTaXplOiBudW1iZXIgPSBkZWZhdWx0Tm90ZVNjYWxlO1xyXG4gIHNlcmlhbGl6ZSgpOiBvYmplY3Qge1xyXG4gICAgdmFyIHBhcmFtcyA9IHt9O1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZU5vbkRlZmF1bHQoU21vRHluYW1pY1RleHQuZGVmYXVsdHMsXHJcbiAgICAgIFNtb0R5bmFtaWNUZXh0LnBlcnNpc3RBcnJheSwgdGhpcywgcGFyYW1zKTtcclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnM6IFNtb0R5bmFtaWNUZXh0UGFyYW1zKSB7XHJcbiAgICBzdXBlcignU21vRHluYW1pY1RleHQnKTtcclxuICAgIHNtb1NlcmlhbGl6ZS52ZXhNZXJnZSh0aGlzLCBTbW9EeW5hbWljVGV4dC5kZWZhdWx0cyk7XHJcbiAgICBzbW9TZXJpYWxpemUuZmlsdGVyZWRNZXJnZShTbW9EeW5hbWljVGV4dC5wYXJhbWV0ZXJBcnJheSwgcGFyYW1ldGVycywgdGhpcyk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmF0dHJzKSB7XHJcbiAgICAgIHRoaXMuYXR0cnMgPSB7XHJcbiAgICAgICAgaWQ6IGdldElkKCkudG9TdHJpbmcoKSxcclxuICAgICAgICB0eXBlOiAnU21vRHluYW1pY1RleHQnXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9UYWJCZW5kIHtcclxuICBiZW5kVHlwZTogbnVtYmVyLFxyXG4gIHJlbGVhc2U6IGJvb2xlYW4sXHJcbiAgdGV4dDogc3RyaW5nXHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vRnJldFBvc2l0aW9uIHtcclxuICBzdHJpbmc6IG51bWJlcixcclxuICBmcmV0OiBudW1iZXJcclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9UYWJOb3RlUGFyYW1zIHtcclxuICBwb3NpdGlvbnM6IFNtb0ZyZXRQb3NpdGlvbltdXHJcbiAgbm90ZUlkOiBzdHJpbmcsXHJcbiAgZmxhZ1N0YXRlOiBudW1iZXIsXHJcbiAgZmxhZ1Rocm91Z2g6IGJvb2xlYW4sXHJcbiAgbm90ZUhlYWQ6IG51bWJlcixcclxuICBpc0Fzc2lnbmVkOiBib29sZWFuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgc2VyaWFsaXphdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9UYWJOb3RlUGFyYW1zU2VyIGV4dGVuZHMgU21vVGFiTm90ZVBhcmFtcyB7XHJcbiAgY3Rvcjogc3RyaW5nXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzU21vVGFiTm90ZVBhcmFtc1NlcihwYXJhbXM6IFBhcnRpYWw8U21vVGFiTm90ZVBhcmFtc1Nlcj4pOiBwYXJhbXMgaXMgU21vVGFiTm90ZVBhcmFtc1NlciB7XHJcbiAgaWYgKHR5cGVvZihwYXJhbXMuY3RvcikgIT09ICdzdHJpbmcnIHx8IHBhcmFtcy5jdG9yICE9PSAnU21vVGFiTm90ZScpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9UYWJOb3RlIGV4dGVuZHMgU21vTm90ZU1vZGlmaWVyQmFzZSB7XHJcbiAgc3RhdGljIGdldCBkZWZhdWx0cygpOiBTbW9UYWJOb3RlUGFyYW1zICB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIHBvc2l0aW9uczogW10sXHJcbiAgICAgIG5vdGVJZDogJycsXHJcbiAgICAgIGlzQXNzaWduZWQ6IGZhbHNlLFxyXG4gICAgICBmbGFnU3RhdGU6IFNtb1RhYk5vdGUuZmxhZ1N0YXRlcy5Ob25lLFxyXG4gICAgICBmbGFnVGhyb3VnaDogZmFsc2UsXHJcbiAgICAgIG5vdGVIZWFkOiBTbW9UYWJOb3RlLm5vdGVIZWFkcy5udW1iZXJcclxuICAgIH0pKTtcclxuICB9XHJcbiAgcG9zaXRpb25zOiBTbW9GcmV0UG9zaXRpb25bXTtcclxuICBub3RlSWQ6IHN0cmluZztcclxuICBpc0Fzc2lnbmVkOiBib29sZWFuO1xyXG4gIG5vdGVIZWFkOiBudW1iZXI7XHJcbiAgZmxhZ1N0YXRlOiBudW1iZXI7XHJcbiAgZmxhZ1Rocm91Z2g6IGJvb2xlYW47XHJcbiAgc3RhdGljIGdldCBmbGFnU3RhdGVzKCkge1xyXG4gICAgcmV0dXJuIHsgTm9uZTogMCwgVXA6IDEsIERvd246IC0xIH07XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgbm90ZUhlYWRzKCkge1xyXG4gICAgcmV0dXJuIHsgbnVtYmVyOiAwLCB4OiAxIH07XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogU21vVGFiTm90ZVBhcmFtcykge1xyXG4gICAgc3VwZXIoJ1Ntb1RhYk5vdGUnKTtcclxuICAgIHRoaXMucG9zaXRpb25zID0gcGFyYW1zLnBvc2l0aW9uc1xyXG4gICAgdGhpcy5ub3RlSWQgPSAgcGFyYW1zLm5vdGVJZDtcclxuICAgIHRoaXMuaXNBc3NpZ25lZCA9IHBhcmFtcy5pc0Fzc2lnbmVkO1xyXG4gICAgdGhpcy5ub3RlSGVhZCA9IHBhcmFtcy5ub3RlSGVhZDtcclxuICAgIHRoaXMuZmxhZ1N0YXRlID0gcGFyYW1zLmZsYWdTdGF0ZTtcclxuICAgIHRoaXMuZmxhZ1Rocm91Z2ggPSBwYXJhbXMuZmxhZ1Rocm91Z2g7XHJcbiAgfVxyXG4gIHNlcmlhbGl6ZSgpOiBTbW9UYWJOb3RlUGFyYW1zU2VyIHtcclxuICAgIHZhciBwYXJhbXMgPSB7IGN0b3I6ICdTbW9UYWJOb3RlJyB9O1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZU5vbkRlZmF1bHQoU21vVGFiTm90ZS5kZWZhdWx0cyxcclxuICAgICAgWydwb3NpdGlvbnMnLCAnbm90ZUlkJywgJ2lzQXNzaWduZWQnLCAnbm90ZUhlYWQnLCAnZmxhZ1N0YXRlJywgJ2ZsYWdUaHJvdWdoJ10sIHRoaXMsIHBhcmFtcyk7XHJcbiAgICBpZiAoIWlzU21vVGFiTm90ZVBhcmFtc1NlcihwYXJhbXMpKSB7XHJcbiAgICAgIHRocm93ICdiYWQgcGFyYW1zIGluIFNtb1RhYk5vdGUnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcmFtcztcclxuICB9XHJcbn1cclxuZXhwb3J0IGNvbnN0IG5vdGVNb2RpZmllckR5bmFtaWNDdG9ySW5pdCA9ICgpID0+IHtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vQXJwZWdnaW8nXSA9IChwYXJhbXM6IFNtb0FycGVnZ2lvUGFyYW1zKSA9PiBuZXcgU21vQXJwZWdnaW8ocGFyYW1zKTtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vTWljcm90b25lJ10gPSAocGFyYW1zOiBTbW9NaWNyb3RvbmVQYXJhbXMpID0+IG5ldyBTbW9NaWNyb3RvbmUocGFyYW1zKTtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vT3JuYW1lbnQnXSA9IChwYXJhbXM6IFNtb09ybmFtZW50UGFyYW1zKSA9PiBuZXcgU21vT3JuYW1lbnQocGFyYW1zKTtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vR3JhY2VOb3RlJ10gPSAocGFyYW1zOiBHcmFjZU5vdGVQYXJhbXMpID0+IG5ldyBTbW9HcmFjZU5vdGUocGFyYW1zKTtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vQXJ0aWN1bGF0aW9uJ10gPSAocGFyYW1zOiBTbW9BcnRpY3VsYXRpb25QYXJhbWV0ZXJzKSA9PiBuZXcgU21vQXJ0aWN1bGF0aW9uKHBhcmFtcyk7XHJcbiAgU21vRHluYW1pY0N0b3JbJ1Ntb0x5cmljJ10gPSAocGFyYW1zOiBTbW9MeXJpY1BhcmFtcykgPT4gbmV3IFNtb0x5cmljKHBhcmFtcyk7XHJcbiAgU21vRHluYW1pY0N0b3JbJ1Ntb05vdGVCYXInXSA9IChwYXJhbXM6IFNtb05vdGVCYXJQYXJhbXMpID0+IG5ldyBTbW9Ob3RlQmFyKHBhcmFtcyk7XHJcbiAgU21vRHluYW1pY0N0b3JbJ1Ntb0R5bmFtaWNUZXh0J10gPSAocGFyYW1zOiBTbW9EeW5hbWljVGV4dFBhcmFtcykgPT4gbmV3IFNtb0R5bmFtaWNUZXh0KHBhcmFtcyk7XHJcbiAgU21vRHluYW1pY0N0b3JbJ1Ntb1RhYk5vdGUnXSA9IChwYXJhbXM6IFNtb1RhYk5vdGVQYXJhbXMpID0+IG5ldyBTbW9UYWJOb3RlKHBhcmFtcyk7XHJcbiAgU21vRHluYW1pY0N0b3JbJ1Ntb0NsZWZDaGFuZ2UnXSA9IChwYXJhbXM6IFNtb0NsZWZDaGFuZ2VQYXJhbXMpID0+IG5ldyBTbW9DbGVmQ2hhbmdlKHBhcmFtcyk7XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/smo/data/noteModifiers.ts\n");
|
|
538
538
|
|
|
539
539
|
/***/ }),
|
|
540
540
|
|
|
@@ -567,7 +567,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
567
567
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
568
568
|
|
|
569
569
|
"use strict";
|
|
570
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalLayoutAttributesArray: () => (/* binding */ GlobalLayoutAttributesArray),\n/* harmony export */ IsOscillatorType: () => (/* binding */ IsOscillatorType),\n/* harmony export */ SmoAudioPlayerSettings: () => (/* binding */ SmoAudioPlayerSettings),\n/* harmony export */ SmoFormattingManager: () => (/* binding */ SmoFormattingManager),\n/* harmony export */ SmoLayoutManager: () => (/* binding */ SmoLayoutManager),\n/* harmony export */ SmoPageLayout: () => (/* binding */ SmoPageLayout),\n/* harmony export */ SmoScoreInfoKeys: () => (/* binding */ SmoScoreInfoKeys),\n/* harmony export */ SmoScoreModifierBase: () => (/* binding */ SmoScoreModifierBase),\n/* harmony export */ SmoScorePreferenceBools: () => (/* binding */ SmoScorePreferenceBools),\n/* harmony export */ SmoScorePreferenceNumbers: () => (/* binding */ SmoScorePreferenceNumbers),\n/* harmony export */ SmoScorePreferences: () => (/* binding */ SmoScorePreferences),\n/* harmony export */ SmoSystemGroup: () => (/* binding */ SmoSystemGroup),\n/* harmony export */ scoreModifierDynamicCtorInit: () => (/* binding */ scoreModifierDynamicCtorInit)\n/* harmony export */ });\n/* harmony import */ var _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/serializationHelpers */ \"./src/common/serializationHelpers.js\");\n/* harmony import */ var _measureModifiers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./measureModifiers */ \"./src/smo/data/measureModifiers.ts\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./common */ \"./src/smo/data/common.ts\");\n/* harmony import */ var _xform_selections__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../xform/selections */ \"./src/smo/xform/selections.ts\");\n// [Smoosic](https://github.com/AaronDavidNewman/Smoosic)\n// Copyright (c) Aaron David Newman 2021.\n/**\n * A score modifier is anything that isn't mapped specifically to a musical object.\n * This includes score text, layout information\n * @module /smo/data/scoreModifier\n */\n\n\n\n\n/**\n * Base class for all {@link SmoScore} modifiers.\n * It is used to de/serialize the objects.\n * @category SmoObject\n */\nclass SmoScoreModifierBase {\n constructor(ctor) {\n /**\n * When rendered, keep track of the box\n *\n * @type {(SvgBox | null)}\n * @memberof SmoScoreModifierBase\n */\n this.logicalBox = null;\n this.ctor = ctor;\n this.attrs = {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_2__.getId)().toString(),\n type: ctor\n };\n }\n static deserialize(jsonObj) {\n const rv = _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor[jsonObj.ctor](jsonObj);\n return rv;\n }\n}\nconst SmoScoreInfoKeys = ['name', 'title', 'subTitle', 'composer', 'copyright'];\nconst SmoScorePreferenceBools = ['autoPlay', 'autoAdvance', 'showPiano', 'hideEmptyLines', 'transposingScore'];\nconst SmoScorePreferenceNumbers = ['defaultDupleDuration', 'defaultTripleDuration'];\n/**\n * Some default SMO behavior\n * @param autoPlay play a new note or chord\n * @param autoAdvance Sibelius-like behavior of advancing cursor when a letter note is placed\n * @param defaultDupleDuration in ticks, even metered measures\n * @param defaultTripleDuration in ticks, 6/8 etc.\n * @param showPiano show the piano widget in the score\n * @param hideEmptyLines Hide empty lines in full score\n * @param transposingScore Whether to show the score parts in concert key\n * @category SmoObject\n */\nclass SmoScorePreferences {\n static get defaults() {\n return {\n autoPlay: true,\n autoAdvance: true,\n defaultDupleDuration: 4096,\n defaultTripleDuration: 6144,\n showPiano: false,\n hideEmptyLines: false,\n transposingScore: false\n };\n }\n constructor(params) {\n this.autoPlay = true;\n this.autoAdvance = true;\n this.defaultDupleDuration = 4096;\n this.defaultTripleDuration = 6144;\n this.showPiano = false;\n this.hideEmptyLines = false;\n this.transposingScore = false;\n if (params) {\n SmoScorePreferenceBools.forEach((bb) => {\n this[bb] = params[bb];\n });\n SmoScorePreferenceNumbers.forEach((nn) => {\n this[nn] = params[nn];\n });\n }\n }\n serialize() {\n return Object.assign({}, this);\n }\n}\n/**\n * A score can have different views - one for the score itself and one for each\n * part, and each part can have its own formatting and text.\n * *Note*: I may move this to part info module.\n * @param measureFormats map of index to {@link SmoMeasureFormat} objects\n * @param partIndex the associated part, or -1 for the score\n * @category SmoObject\n */\nclass SmoFormattingManager extends SmoScoreModifierBase {\n static get forScore() {\n return -1;\n }\n static get defaults() {\n return {\n measureFormats: [new _measureModifiers__WEBPACK_IMPORTED_MODULE_1__.SmoMeasureFormat(_measureModifiers__WEBPACK_IMPORTED_MODULE_1__.SmoMeasureFormat.defaults)],\n partIndex: -1\n };\n }\n constructor(params) {\n super('SmoFormattingManager');\n this.partIndex = -1;\n if (typeof (params) === 'undefined') {\n params = {};\n }\n this.measureFormats = {};\n this.partIndex = SmoFormattingManager.forScore;\n if (typeof (params.partIndex) !== 'undefined') {\n this.partIndex = params.partIndex;\n }\n if (typeof (params.measureFormats) !== 'undefined' && params.measureFormats.length) {\n params.measureFormats.forEach((format) => {\n // 0 is default value, so fix case of first measure\n if (typeof (format.measureIndex) !== 'number') {\n format.measureIndex = 0;\n }\n this.measureFormats[format.measureIndex] = new _measureModifiers__WEBPACK_IMPORTED_MODULE_1__.SmoMeasureFormat(format);\n });\n }\n }\n /**\n * Update the measure format for the measure at the given index\n * @param format\n */\n updateMeasureFormat(format) {\n this.measureFormats[format.measureIndex] = format;\n }\n /**\n * Update the measure format based on the format of a given measure\n * @param measure\n */\n updateFormat(measure) {\n if (this.measureFormats[measure.measureNumber.measureIndex]) {\n measure.format = this.measureFormats[measure.measureNumber.measureIndex];\n }\n else {\n measure.format = new _measureModifiers__WEBPACK_IMPORTED_MODULE_1__.SmoMeasureFormat(_measureModifiers__WEBPACK_IMPORTED_MODULE_1__.SmoMeasureFormat.defaults);\n }\n }\n serialize() {\n const rv = [];\n const keys = Object.keys(this.measureFormats);\n keys.forEach((key) => {\n if (!this.measureFormats[key].isDefault) {\n rv.push(this.measureFormats[key].serialize());\n }\n });\n return rv;\n }\n}\n/**\n * web audio API defines this\n * @param otype\n * @returns\n */\nfunction IsOscillatorType(otype) {\n return ['sine', 'square', 'sawtooth', 'triangle', 'custom'].findIndex((x) => x === otype) >= 0;\n}\n/**\n * Audio playback parameters. Just fun stuff.\n * @category SmoObject\n */\nclass SmoAudioPlayerSettings extends SmoScoreModifierBase {\n static get defaults() {\n return ({\n playerType: 'sampler',\n waveform: 'sine',\n reverbEnable: true,\n reverbDelay: 0.5,\n reverbDecay: 2\n });\n }\n static get attributes() {\n return ['playerType', 'waveform', 'reverbEnable', 'reverbDelay', 'reverbDecay'];\n }\n constructor(params) {\n super('SmoAudioPlayerSettings');\n this.playerType = 'sampler';\n this.waveform = 'sine';\n this.reverbEnable = true;\n this.reverbDelay = 0.2;\n this.reverbDecay = 0.5;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMerge(SmoAudioPlayerSettings.attributes, SmoAudioPlayerSettings.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMerge(SmoAudioPlayerSettings.attributes, params, this);\n }\n serialize() {\n const params = {};\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMergeNonDefault(SmoAudioPlayerSettings.defaults, SmoAudioPlayerSettings.attributes, this, params);\n params.ctor = 'SmoAudioPlayerSettings';\n return params;\n }\n}\n/**\n * Define margins and other layout information associated with a specific page, and may\n * be different on different pages.\n * @category SmoObject\n */\nclass SmoPageLayout extends SmoScoreModifierBase {\n static get defaults() {\n return JSON.parse(JSON.stringify({\n leftMargin: 30,\n rightMargin: 30,\n topMargin: 144,\n bottomMargin: 72,\n interGap: 30,\n intraGap: 10\n }));\n }\n static get attributes() {\n return ['leftMargin', 'rightMargin', 'topMargin', 'bottomMargin', 'interGap', 'intraGap'];\n }\n constructor(params) {\n super('SmoPageLayout');\n this.leftMargin = 30;\n this.rightMargin = 30;\n this.topMargin = 40;\n this.bottomMargin = 40;\n this.interGap = 30;\n this.intraGap = 10;\n this.leftMargin = params.leftMargin;\n this.rightMargin = params.rightMargin;\n this.topMargin = params.topMargin;\n this.bottomMargin = params.bottomMargin;\n this.interGap = params.interGap;\n this.intraGap = params.intraGap;\n }\n serialize() {\n const params = {};\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMergeNonDefault(SmoPageLayout.defaults, SmoPageLayout.attributes, this, params);\n params.ctor = 'SmoPageLayout';\n return params;\n }\n}\nconst GlobalLayoutAttributesArray = ['pageWidth', 'pageHeight', 'noteSpacing', 'svgScale', 'zoomScale', 'proportionality', 'maxMeasureSystem'];\nfunction isSmoLayoutManagerParamsSer(params) {\n if (!params.ctor || params.ctor !== 'SmoLayoutManager') {\n return false;\n }\n return true;\n}\n/**\n * Storage and utilities for layout information in the score. Each\n * manager has one set of page height/width, since svg element\n * must have single length/width and viewbox.\n * Each page can have different margins.\n * @category SmoObject\n */\nclass SmoLayoutManager extends SmoScoreModifierBase {\n static get defaultLayout() {\n return {\n svgScale: 0.55,\n zoomScale: 2.0,\n noteSpacing: 1.0,\n pageWidth: 8 * 96 + 48,\n pageHeight: 11 * 96,\n proportionality: 5,\n maxMeasureSystem: 0\n };\n }\n static get defaults() {\n return {\n globalLayout: JSON.parse(JSON.stringify(SmoLayoutManager.defaultLayout)),\n pageLayouts: []\n };\n }\n static get attributes() {\n return ['pageWidth', 'pageHeight', 'noteSpacing', 'svgScale', 'zoomScale', 'maxMeasureSystem'];\n }\n // Attributes that are scaled by svgScale\n /* static get scalableAttributes(): Global {\n return ['pageWidth', 'pageHeight'];\n }*/\n static get scaledPageAttributes() {\n return ['leftMargin', 'rightMargin', 'topMargin', 'bottomMargin', 'interGap', 'intraGap'];\n }\n static get scaledGlobalAttributes() {\n return ['pageWidth', 'pageHeight'];\n }\n static areLayoutsEqual(g1, g2) {\n let rv = true;\n GlobalLayoutAttributesArray.forEach((attr) => {\n if (g1[attr] !== g2[attr]) {\n rv = false;\n }\n });\n return rv;\n }\n static isZoomChange(g1, g2) {\n let rv = true;\n GlobalLayoutAttributesArray.forEach((attr) => {\n if (g1[attr] !== g2[attr] && attr !== 'zoomScale') {\n rv = false;\n }\n });\n return rv;\n }\n /**\n * Adjust zoom width so the score takes up the whole score area\n */\n zoomToWidth(screenWidth) {\n const curWidth = this.globalLayout.pageWidth * this.globalLayout.svgScale;\n this.globalLayout.zoomScale = ((screenWidth - 350) / curWidth) * this.globalLayout.svgScale; // magic 350 for left controls....TODO standardize this\n }\n static getScaledPageLayout(globalLayout, pageLayout, pages) {\n const rv = {};\n SmoLayoutManager.scaledPageAttributes.forEach((attr) => {\n rv[attr] = pageLayout[attr] / globalLayout.svgScale;\n });\n SmoLayoutManager.scaledGlobalAttributes.forEach((attr) => {\n rv[attr] = globalLayout[attr] / globalLayout.svgScale;\n });\n // Note spacing is relative, so * it and not divide\n rv.noteSpacing = globalLayout.noteSpacing * globalLayout.svgScale;\n rv.svgScale = globalLayout.svgScale;\n rv.zoomScale = globalLayout.zoomScale;\n rv.maxMeasureSystem = globalLayout.maxMeasureSystem;\n return rv;\n }\n constructor(params) {\n super('SmoLayoutManager');\n this.pageLayouts = [];\n if (typeof (params.globalLayout.maxMeasureSystem) === 'undefined') {\n params.globalLayout.maxMeasureSystem = SmoLayoutManager.defaultLayout.maxMeasureSystem;\n }\n this.globalLayout = JSON.parse(JSON.stringify(params.globalLayout));\n if (params.pageLayouts.length) {\n params.pageLayouts.forEach((plp) => {\n const pageParams = SmoPageLayout.defaults;\n SmoPageLayout.attributes.forEach((attr) => {\n if (typeof (plp[attr]) !== 'undefined') {\n pageParams[attr] = plp[attr];\n }\n });\n this.pageLayouts.push(new SmoPageLayout(pageParams));\n });\n }\n else {\n this.pageLayouts.push(new SmoPageLayout(SmoPageLayout.defaults));\n }\n }\n trimPages(pageCount) {\n if (pageCount < this.pageLayouts.length - 1) {\n this.pageLayouts = this.pageLayouts.slice(0, pageCount + 1);\n }\n }\n getZoomScale() {\n return this.globalLayout.zoomScale;\n }\n serialize() {\n const rv = { ctor: 'SmoLayoutManager' };\n rv.pageLayouts = [];\n this.pageLayouts.forEach((pl) => {\n rv.pageLayouts.push(pl.serialize());\n });\n rv.globalLayout = JSON.parse(JSON.stringify(this.globalLayout));\n if (!isSmoLayoutManagerParamsSer(rv)) {\n throw 'bad layout manager ' + JSON.stringify(rv);\n }\n return rv;\n }\n updateGlobalLayout(params) {\n SmoLayoutManager.attributes.forEach((attr) => {\n if (typeof (params[attr]) !== 'undefined') {\n this.globalLayout[attr] = params[attr];\n }\n });\n }\n // ### addToPageLayouts\n // Make sure the next page has a layout. If not, copy settings from\n // previous page.\n addToPageLayouts(pageNum) {\n const lastLayout = this.pageLayouts[this.pageLayouts.length - 1];\n if (this.pageLayouts.length <= pageNum) {\n this.pageLayouts.push(new SmoPageLayout(lastLayout));\n }\n }\n getGlobalLayout() {\n return JSON.parse(JSON.stringify(this.globalLayout));\n }\n // Return a deep copy of the page parameters, adjusted for the global scale.\n getScaledPageLayout(pageIndex) {\n return SmoLayoutManager.getScaledPageLayout(this.globalLayout, this.pageLayouts[pageIndex], this.pageLayouts.length);\n }\n getPageLayout(pageIndex) {\n return new SmoPageLayout(this.pageLayouts[pageIndex]);\n }\n getPageLayouts() {\n const rv = [];\n this.pageLayouts.forEach((pl) => {\n rv.push(new SmoPageLayout(pl));\n });\n return rv;\n }\n updatePage(pageLayout, pageIndex) {\n if (this.pageLayouts.length > pageIndex) {\n this.pageLayouts[pageIndex] = new SmoPageLayout(pageLayout);\n }\n }\n}\nfunction isSmoSystemGroupParamsSer(params) {\n if (params.ctor === 'SmoSystemGroup') {\n return true;\n }\n return false;\n}\n/**\n * System group is the grouping of staves into a system.\n * @category SmoObject\n * */\nclass SmoSystemGroup extends SmoScoreModifierBase {\n static get connectorTypes() {\n return { brace: 0, bracket: 1, single: 2, double: 3 };\n }\n static get mapTypes() {\n return { allMeasures: 0, range: 1 };\n }\n static get attributes() {\n return ['leftConnector', 'rightConnector', 'text', 'shortText', 'justify',\n 'startSelector', 'endSelector', 'mapType'];\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n leftConnector: SmoSystemGroup.connectorTypes.single,\n rightConnector: SmoSystemGroup.connectorTypes.single,\n mapType: SmoSystemGroup.mapTypes.allMeasures,\n justify: true,\n startSelector: _xform_selections__WEBPACK_IMPORTED_MODULE_3__.SmoSelector.default,\n endSelector: _xform_selections__WEBPACK_IMPORTED_MODULE_3__.SmoSelector.default\n }));\n }\n static isSystemGroup(modifier) {\n return modifier.ctor === 'SmoSystemGroup';\n }\n constructor(params) {\n super('SmoSystemGroup');\n this.leftConnector = SmoSystemGroup.connectorTypes.single;\n this.rightConnector = SmoSystemGroup.connectorTypes.single;\n this.mapType = SmoSystemGroup.mapTypes.allMeasures;\n this.text = '';\n this.shortText = '';\n this.justify = true;\n this.startSelector = _xform_selections__WEBPACK_IMPORTED_MODULE_3__.SmoSelector.default;\n this.endSelector = _xform_selections__WEBPACK_IMPORTED_MODULE_3__.SmoSelector.default;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMerge(SmoSystemGroup.attributes, SmoSystemGroup.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMerge(SmoSystemGroup.attributes, params, this);\n this.attrs = {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_2__.getId)().toString(),\n type: 'SmoSystemGroup'\n };\n }\n stavesOverlap(group) {\n return (this.startSelector.staff >= group.startSelector.staff && this.startSelector.staff <= group.endSelector.staff) ||\n (this.endSelector.staff >= group.startSelector.staff && this.endSelector.staff <= group.endSelector.staff);\n }\n measuresOverlap(group) {\n return this.stavesOverlap(group) &&\n ((this.startSelector.measure >= group.startSelector.measure && this.endSelector.measure <= group.startSelector.measure) ||\n (this.endSelector.measure >= group.startSelector.measure && this.endSelector.measure <= group.endSelector.measure));\n }\n overlaps(group) {\n return (this.stavesOverlap(group) && this.mapType === SmoSystemGroup.mapTypes.allMeasures) ||\n (this.measuresOverlap(group) && this.mapType === SmoSystemGroup.mapTypes.range);\n }\n serialize() {\n const params = {};\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMergeNonDefault(SmoSystemGroup.defaults, SmoSystemGroup.attributes, this, params);\n params.ctor = 'SmoSystemGroup';\n if (!isSmoSystemGroupParamsSer(params)) {\n throw 'bad system group ' + JSON.stringify(params);\n }\n return params;\n }\n}\nconst scoreModifierDynamicCtorInit = () => {\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoScorePreferences'] = (params) => new SmoScorePreferences(params);\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoFormattingManager'] = (params) => new SmoFormattingManager(params);\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoAudioPlayerSettings'] = (params) => new SmoAudioPlayerSettings(params);\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoPageLayout'] = (params) => new SmoPageLayout(params);\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoLayoutManager'] = (params) => new SmoLayoutManager(params);\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoSystemGroup'] = (params) => new SmoSystemGroup(params);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LElBQUksR0FBRyxnQkFBZ0IsQ0FBQztRQUMvQixJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQUNNLE1BQU0sNEJBQTRCLEdBQUcsR0FBRyxFQUFFO0lBQy9DLG1EQUFjLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLE1BQWlDLEVBQUUsRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0csbURBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsTUFBa0MsRUFBRSxFQUFFLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsSCxtREFBYyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BILG1EQUFjLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUEyQixFQUFFLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RixtREFBYyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUE4QixFQUFFLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RHLG1EQUFjLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xHLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TbW8vLi9zcmMvc21vL2RhdGEvc2NvcmVNb2RpZmllcnMudHM/ZTJmZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBbU21vb3NpY10oaHR0cHM6Ly9naXRodWIuY29tL0Fhcm9uRGF2aWROZXdtYW4vU21vb3NpYylcclxuLy8gQ29weXJpZ2h0IChjKSBBYXJvbiBEYXZpZCBOZXdtYW4gMjAyMS5cclxuLyoqXHJcbiAqIEEgc2NvcmUgbW9kaWZpZXIgaXMgYW55dGhpbmcgdGhhdCBpc24ndCBtYXBwZWQgc3BlY2lmaWNhbGx5IHRvIGEgbXVzaWNhbCBvYmplY3QuXHJcbiAqIFRoaXMgaW5jbHVkZXMgc2NvcmUgdGV4dCwgbGF5b3V0IGluZm9ybWF0aW9uXHJcbiAqIEBtb2R1bGUgL3Ntby9kYXRhL3Njb3JlTW9kaWZpZXJcclxuICovXHJcbmltcG9ydCB7IHNtb1NlcmlhbGl6ZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJpYWxpemF0aW9uSGVscGVycyc7XHJcbmltcG9ydCB7IFNtb01lYXN1cmVGb3JtYXQsIFNtb01lYXN1cmVGb3JtYXRQYXJhbXNTZXIgfSBmcm9tICcuL21lYXN1cmVNb2RpZmllcnMnO1xyXG5pbXBvcnQgeyBTbW9BdHRycywgZ2V0SWQsIFNtb01vZGlmaWVyQmFzZSwgU3ZnQm94LCBcclxuICBTbW9EeW5hbWljQ3RvciB9IGZyb20gJy4vY29tbW9uJztcclxuaW1wb3J0IHsgU21vTWVhc3VyZSB9IGZyb20gJy4vbWVhc3VyZSc7XHJcbmltcG9ydCB7IFNtb1NlbGVjdG9yIH0gZnJvbSAnLi4veGZvcm0vc2VsZWN0aW9ucyc7XHJcbmltcG9ydCB7IGR5bmFtaWNDdG9ySW5pdCB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL2R5bmFtaWNJbml0JztcclxuXHJcbi8qKlxyXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwge0BsaW5rIFNtb1Njb3JlfSBtb2RpZmllcnMuIFxyXG4gKiBJdCBpcyB1c2VkIHRvIGRlL3NlcmlhbGl6ZSB0aGUgb2JqZWN0cy5cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNtb1Njb3JlTW9kaWZpZXJCYXNlIGltcGxlbWVudHMgU21vTW9kaWZpZXJCYXNlIHtcclxuICAvKipcclxuICAgKiBjb25zdHJ1Y3RvclxyXG4gICAqXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgU21vU2NvcmVNb2RpZmllckJhc2VcclxuICAgKi9cclxuICBjdG9yOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogV2hlbiByZW5kZXJlZCwga2VlcCB0cmFjayBvZiB0aGUgYm94XHJcbiAgICpcclxuICAgKiBAdHlwZSB7KFN2Z0JveCB8IG51bGwpfVxyXG4gICAqIEBtZW1iZXJvZiBTbW9TY29yZU1vZGlmaWVyQmFzZVxyXG4gICAqL1xyXG4gIGxvZ2ljYWxCb3g6IFN2Z0JveCB8IG51bGwgPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIGF0dHJpYnV0ZXMgZm9yIGlkZW50aWZpY2F0aW9uXHJcbiAgICpcclxuICAgKiBAdHlwZSB7U21vQXR0cnN9XHJcbiAgICogQG1lbWJlcm9mIFNtb1Njb3JlTW9kaWZpZXJCYXNlXHJcbiAgICovXHJcbiAgYXR0cnM6IFNtb0F0dHJzO1xyXG4gIGNvbnN0cnVjdG9yKGN0b3I6IHN0cmluZykge1xyXG4gICAgdGhpcy5jdG9yID0gY3RvcjtcclxuICAgIHRoaXMuYXR0cnMgPSB7XHJcbiAgICAgIGlkOiBnZXRJZCgpLnRvU3RyaW5nKCksXHJcbiAgICAgIHR5cGU6IGN0b3JcclxuICAgIH07XHJcbiAgfVxyXG4gIGFic3RyYWN0IHNlcmlhbGl6ZSgpOiBhbnk7XHJcbiAgc3RhdGljIGRlc2VyaWFsaXplKGpzb25PYmo6IGFueSkge1xyXG4gICAgY29uc3QgcnYgPSBTbW9EeW5hbWljQ3Rvcltqc29uT2JqLmN0b3JdKGpzb25PYmopO1xyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEZvciBnbG9iYWwvZGVmYXVsdCBmb250IHNldHRpbmdzLlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqIEBwYXJhbSBuYW1lIHRvIGRpc3Rpbmd1aXNoOiBjaG9yZCwgbHlyaWMgZXRjLlxyXG4gKiBAcGFyYW0gZmFtaWx5IGZvbnQgZmFtaWx5XHJcbiAqIEBwYXJhbSBzaXplIGluIHBvaW50c1xyXG4gKiBAcGFyYW0gY3VzdG9tIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYSBzcGVjaWZpYyB0ZXh0IGlzIG5vdCB0aGUgZGVmYXVsdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBGb250UHVycG9zZSB7XHJcbiAgLyoqXHJcbiAgICogbmFtZSBvZiB0aGUgcHVycG9zZVxyXG4gICAqIHsgRU5HUkFWSU5HOiAxLCBTQ09SRTogMiwgQ0hPUkRTOiAzLCBMWVJJQ1M6IDQgfVxyXG4gICAqL1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICAvKipcclxuICAgKiBwdXJwb3NlIGVudW1lcmF0aW9uXHJcbiAgICovXHJcbiAgcHVycG9zZTogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIGZvbnQgZmFtaWx5XHJcbiAgICovXHJcbiAgZmFtaWx5OiBzdHJpbmcsXHJcbiAgLyoqXHJcbiAgICogZGVmYXVsdCBmb250IHNpemVcclxuICAgKi9cclxuICBzaXplOiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogYSBmbGFnIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgaWYgdGhpcyBpcyB0aGUgZ2xvYmFsIGRlZmF1bHQsIG9yIGEgY3VzdG9taXphdGlvbi5cclxuICAgKiBGb3IgbHlyaWNzIGZvciBpbnN0YW5jZSwgbW9zdCBseXJpY3Mgd291bGQgdXNlIHRoZSBjdXN0b20gZm9udCwgdGhpcyB3b3VsZCBiZSB0cnVlIGlmXHJcbiAgICogaXQgd2FzIG92ZXJyaWRkZW5cclxuICAgKi9cclxuICBjdXN0b206IGJvb2xlYW5cclxufVxyXG5cclxuXHJcbi8vIEBpbnRlcm5hbFxyXG5leHBvcnQgdHlwZSBTbW9TY29yZUluZm9LZXkgPSAnbmFtZScgfCAndGl0bGUnIHwgJ3N1YlRpdGxlJyB8ICdjb21wb3NlcicgfCAnY29weXJpZ2h0JztcclxuZXhwb3J0IGNvbnN0IFNtb1Njb3JlSW5mb0tleXMgPSBbJ25hbWUnLCAndGl0bGUnLCAnc3ViVGl0bGUnLCAnY29tcG9zZXInLCAnY29weXJpZ2h0J107XHJcbi8qKlxyXG4gKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc2NvcmUgaXRzZWxmLCBsaWtlIGNvbXBvc2VyIGV0Yy5cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9TY29yZUluZm8ge1xyXG4gIC8qKlxyXG4gICAqIGRlcHJlY2F0ZWQsIG5vdyBkZWZhdWx0cyB0byB0aXRsZVxyXG4gICAqL1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICAvKipcclxuICAgKiBuYW1lIG9mIHNjb3JlXHJcbiAgICovXHJcbiAgdGl0bGU6IHN0cmluZyxcclxuICAvKipcclxuICAgKiBzdWJ0aXRsZS9vcHVzXHJcbiAgICovXHJcbiAgc3ViVGl0bGU6IHN0cmluZyxcclxuICAvKipcclxuICAgKiB3aG8gd3JvdGUgaXRcclxuICAgKi9cclxuICBjb21wb3Nlcjogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIGNvcHlyaWdodCBpbmZvcm1hdGlvblxyXG4gICAqL1xyXG4gIGNvcHlyaWdodDogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIGZvciB2ZXJzaW9uIHRyYWNraW5nXHJcbiAgICovXHJcbiAgdmVyc2lvbjogbnVtYmVyXHJcbn1cclxuXHJcblxyXG5leHBvcnQgdHlwZSBTbW9TY29yZVByZWZlcmVuY2VCb29sID0gJ2F1dG9QbGF5JyB8ICdhdXRvQWR2YW5jZScgfCAnc2hvd1BpYW5vJyB8ICdoaWRlRW1wdHlMaW5lcycgfCAndHJhbnNwb3NpbmdTY29yZSc7XHJcbmV4cG9ydCB0eXBlIFNtb1Njb3JlUHJlZmVyZW5jZU51bWJlciA9ICdkZWZhdWx0RHVwbGVEdXJhdGlvbicgfCAnZGVmYXVsdFRyaXBsZUR1cmF0aW9uJztcclxuZXhwb3J0IGNvbnN0IFNtb1Njb3JlUHJlZmVyZW5jZUJvb2xzOiBTbW9TY29yZVByZWZlcmVuY2VCb29sW10gPSBbJ2F1dG9QbGF5JywgJ2F1dG9BZHZhbmNlJywgJ3Nob3dQaWFubycsICdoaWRlRW1wdHlMaW5lcycsICd0cmFuc3Bvc2luZ1Njb3JlJ107XHJcbmV4cG9ydCBjb25zdCBTbW9TY29yZVByZWZlcmVuY2VOdW1iZXJzOiBTbW9TY29yZVByZWZlcmVuY2VOdW1iZXJbXSA9IFsnZGVmYXVsdER1cGxlRHVyYXRpb24nLCAnZGVmYXVsdFRyaXBsZUR1cmF0aW9uJ107XHJcbi8qKlxyXG4gKiBHbG9iYWwgc2NvcmUvcHJvZ3JhbSBiZWhhdmlvciBwcmVmZXJlbmNlcywgc2VlIGJlbG93IGZvciBwYXJhbWV0ZXJzXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vU2NvcmVQcmVmZXJlbmNlc1BhcmFtcyB7XHJcbiAgYXV0b1BsYXk6IGJvb2xlYW47XHJcbiAgYXV0b0FkdmFuY2U6IGJvb2xlYW47XHJcbiAgZGVmYXVsdER1cGxlRHVyYXRpb246IG51bWJlcjtcclxuICBkZWZhdWx0VHJpcGxlRHVyYXRpb246IG51bWJlcjtcclxuICBzaG93UGlhbm86IGJvb2xlYW47XHJcbiAgaGlkZUVtcHR5TGluZXM6IGJvb2xlYW47XHJcbiAgdHJhbnNwb3NpbmdTY29yZTogYm9vbGVhbjtcclxufVxyXG4vKipcclxuICogU29tZSBkZWZhdWx0IFNNTyBiZWhhdmlvclxyXG4gKiBAcGFyYW0gYXV0b1BsYXkgcGxheSBhIG5ldyBub3RlIG9yIGNob3JkXHJcbiAqIEBwYXJhbSBhdXRvQWR2YW5jZSBTaWJlbGl1cy1saWtlIGJlaGF2aW9yIG9mIGFkdmFuY2luZyBjdXJzb3Igd2hlbiBhIGxldHRlciBub3RlIGlzIHBsYWNlZFxyXG4gKiBAcGFyYW0gZGVmYXVsdER1cGxlRHVyYXRpb24gaW4gdGlja3MsIGV2ZW4gbWV0ZXJlZCBtZWFzdXJlc1xyXG4gKiBAcGFyYW0gZGVmYXVsdFRyaXBsZUR1cmF0aW9uIGluIHRpY2tzLCA2LzggZXRjLlxyXG4gKiBAcGFyYW0gc2hvd1BpYW5vIHNob3cgdGhlIHBpYW5vIHdpZGdldCBpbiB0aGUgc2NvcmVcclxuICogQHBhcmFtIGhpZGVFbXB0eUxpbmVzIEhpZGUgZW1wdHkgbGluZXMgaW4gZnVsbCBzY29yZVxyXG4gKiBAcGFyYW0gdHJhbnNwb3NpbmdTY29yZSBXaGV0aGVyIHRvIHNob3cgdGhlIHNjb3JlIHBhcnRzIGluIGNvbmNlcnQga2V5XHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9TY29yZVByZWZlcmVuY2VzIHtcclxuICBhdXRvUGxheTogYm9vbGVhbiA9IHRydWU7XHJcbiAgYXV0b0FkdmFuY2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGRlZmF1bHREdXBsZUR1cmF0aW9uOiBudW1iZXIgPSA0MDk2O1xyXG4gIGRlZmF1bHRUcmlwbGVEdXJhdGlvbjogbnVtYmVyID0gNjE0NDtcclxuICBzaG93UGlhbm86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoaWRlRW1wdHlMaW5lczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRyYW5zcG9zaW5nU2NvcmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb1Njb3JlUHJlZmVyZW5jZXNQYXJhbXMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYXV0b1BsYXk6IHRydWUsXHJcbiAgICAgIGF1dG9BZHZhbmNlOiB0cnVlLFxyXG4gICAgICBkZWZhdWx0RHVwbGVEdXJhdGlvbjogNDA5NixcclxuICAgICAgZGVmYXVsdFRyaXBsZUR1cmF0aW9uOiA2MTQ0LFxyXG4gICAgICBzaG93UGlhbm86IGZhbHNlLFxyXG4gICAgICBoaWRlRW1wdHlMaW5lczogZmFsc2UsXHJcbiAgICAgIHRyYW5zcG9zaW5nU2NvcmU6IGZhbHNlXHJcbiAgICB9O1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IFNtb1Njb3JlUHJlZmVyZW5jZXNQYXJhbXMpIHtcclxuICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgU21vU2NvcmVQcmVmZXJlbmNlQm9vbHMuZm9yRWFjaCgoYmIpID0+IHtcclxuICAgICAgICB0aGlzW2JiXSA9IHBhcmFtc1tiYl07XHJcbiAgICAgIH0pO1xyXG4gICAgICBTbW9TY29yZVByZWZlcmVuY2VOdW1iZXJzLmZvckVhY2goKG5uKSA9PiB7XHJcbiAgICAgICAgdGhpc1tubl0gPSBwYXJhbXNbbm5dO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VyaWFsaXplKCk6IFNtb1Njb3JlUHJlZmVyZW5jZXNQYXJhbXMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4udGhpc1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4vKipcclxuICogbm9uLW11c2ljYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNjb3JlXHJcbiAqIEBjYXRlZ29yeSBzZXJpYWxpemF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNjb3JlTWV0YWRhdGFTZXIge1xyXG4gIGZvbnRzOiBGb250UHVycG9zZVtdLFxyXG4gIHByZWZlcmVuY2VzOiBTbW9TY29yZVByZWZlcmVuY2VzUGFyYW1zLFxyXG4gIHJlbnVtYmVyaW5nTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxyXG4gIHNjb3JlSW5mbzogU21vU2NvcmVJbmZvXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNYXAgb2YgbWVhc3VyZSBmb3JtYXR0aW5nIHRvIG1lYXN1cmUgSURzLiAgV2Ugb25seSBzYXZlIG5vbi1kZWZhdWx0IGZvcm1hdHNcclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKiBAcGFyYW0gbWVhc3VyZUZvcm1hdHMgXHJcbiAqIEBwYXJhbSBwYXJ0SW5kZXggXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0Zvcm1hdHRpbmdNYW5hZ2VyUGFyYW1zIHtcclxuICAvKipcclxuICAgKiBtYXAgb2YgaW5kZXggdG8ge0BsaW5rIFNtb01lYXN1cmVGb3JtYXR9IG9iamVjdHNcclxuICAgKi9cclxuICBtZWFzdXJlRm9ybWF0cz86IFNtb01lYXN1cmVGb3JtYXRbXSxcclxuICAvKipcclxuICAgKiB0aGUgYXNzb2NpYXRlZCBwYXJ0LCBvciAtMSBmb3IgdGhlIHNjb3JlXHJcbiAgICovXHJcbiAgcGFydEluZGV4PzogbnVtYmVyXHJcbn1cclxuLyoqXHJcbiAqIEEgc2NvcmUgY2FuIGhhdmUgZGlmZmVyZW50IHZpZXdzIC0gb25lIGZvciB0aGUgc2NvcmUgaXRzZWxmIGFuZCBvbmUgZm9yIGVhY2hcclxuICogcGFydCwgYW5kIGVhY2ggcGFydCBjYW4gaGF2ZSBpdHMgb3duIGZvcm1hdHRpbmcgYW5kIHRleHQuXHJcbiAqICpOb3RlKjogSSBtYXkgbW92ZSB0aGlzIHRvIHBhcnQgaW5mbyBtb2R1bGUuXHJcbiAqIEBwYXJhbSBtZWFzdXJlRm9ybWF0cyBtYXAgb2YgaW5kZXggdG8ge0BsaW5rIFNtb01lYXN1cmVGb3JtYXR9IG9iamVjdHNcclxuICogQHBhcmFtIHBhcnRJbmRleCB0aGUgYXNzb2NpYXRlZCBwYXJ0LCBvciAtMSBmb3IgdGhlIHNjb3JlXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9Gb3JtYXR0aW5nTWFuYWdlciBleHRlbmRzIFNtb1Njb3JlTW9kaWZpZXJCYXNlIHtcclxuICBtZWFzdXJlRm9ybWF0czogUmVjb3JkPG51bWJlciwgU21vTWVhc3VyZUZvcm1hdD47XHJcbiAgcGFydEluZGV4OiBudW1iZXIgPSAtMTtcclxuICBzdGF0aWMgZ2V0IGZvclNjb3JlKCkge1xyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb0Zvcm1hdHRpbmdNYW5hZ2VyUGFyYW1zIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG1lYXN1cmVGb3JtYXRzOiBbbmV3IFNtb01lYXN1cmVGb3JtYXQoU21vTWVhc3VyZUZvcm1hdC5kZWZhdWx0cyldLFxyXG4gICAgICBwYXJ0SW5kZXg6IC0xXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocGFyYW1zOiBTbW9Gb3JtYXR0aW5nTWFuYWdlclBhcmFtcykge1xyXG4gICAgc3VwZXIoJ1Ntb0Zvcm1hdHRpbmdNYW5hZ2VyJyk7XHJcbiAgICBpZiAodHlwZW9mIChwYXJhbXMpID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBwYXJhbXMgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMubWVhc3VyZUZvcm1hdHMgPSB7fTtcclxuICAgIHRoaXMucGFydEluZGV4ID0gU21vRm9ybWF0dGluZ01hbmFnZXIuZm9yU2NvcmU7XHJcbiAgICBpZiAodHlwZW9mIChwYXJhbXMucGFydEluZGV4KSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgdGhpcy5wYXJ0SW5kZXggPSBwYXJhbXMucGFydEluZGV4O1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiAocGFyYW1zLm1lYXN1cmVGb3JtYXRzKSAhPT0gJ3VuZGVmaW5lZCcgJiYgcGFyYW1zLm1lYXN1cmVGb3JtYXRzLmxlbmd0aCkge1xyXG4gICAgICBwYXJhbXMubWVhc3VyZUZvcm1hdHMuZm9yRWFjaCgoZm9ybWF0KSA9PiB7XHJcbiAgICAgICAgLy8gMCBpcyBkZWZhdWx0IHZhbHVlLCBzbyBmaXggY2FzZSBvZiBmaXJzdCBtZWFzdXJlXHJcbiAgICAgICAgaWYgKHR5cGVvZihmb3JtYXQubWVhc3VyZUluZGV4KSAhPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIGZvcm1hdC5tZWFzdXJlSW5kZXggPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1lYXN1cmVGb3JtYXRzW2Zvcm1hdC5tZWFzdXJlSW5kZXhdID0gbmV3IFNtb01lYXN1cmVGb3JtYXQoZm9ybWF0KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB0aGUgbWVhc3VyZSBmb3JtYXQgZm9yIHRoZSBtZWFzdXJlIGF0IHRoZSBnaXZlbiBpbmRleFxyXG4gICAqIEBwYXJhbSBmb3JtYXQgXHJcbiAgICovXHJcbiAgdXBkYXRlTWVhc3VyZUZvcm1hdChmb3JtYXQ6IFNtb01lYXN1cmVGb3JtYXQpIHtcclxuICAgIHRoaXMubWVhc3VyZUZvcm1hdHNbZm9ybWF0Lm1lYXN1cmVJbmRleF0gPSBmb3JtYXQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB0aGUgbWVhc3VyZSBmb3JtYXQgYmFzZWQgb24gdGhlIGZvcm1hdCBvZiBhIGdpdmVuIG1lYXN1cmVcclxuICAgKiBAcGFyYW0gbWVhc3VyZSBcclxuICAgKi9cclxuICB1cGRhdGVGb3JtYXQobWVhc3VyZTogU21vTWVhc3VyZSkge1xyXG4gICAgaWYgKHRoaXMubWVhc3VyZUZvcm1hdHNbbWVhc3VyZS5tZWFzdXJlTnVtYmVyLm1lYXN1cmVJbmRleF0pIHtcclxuICAgICAgbWVhc3VyZS5mb3JtYXQgPSB0aGlzLm1lYXN1cmVGb3JtYXRzW21lYXN1cmUubWVhc3VyZU51bWJlci5tZWFzdXJlSW5kZXhdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWVhc3VyZS5mb3JtYXQgPSBuZXcgU21vTWVhc3VyZUZvcm1hdChTbW9NZWFzdXJlRm9ybWF0LmRlZmF1bHRzKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VyaWFsaXplKCk6IFNtb01lYXN1cmVGb3JtYXRQYXJhbXNTZXJbXSB7XHJcbiAgICBjb25zdCBydjogU21vTWVhc3VyZUZvcm1hdFBhcmFtc1NlcltdID0gW107XHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5tZWFzdXJlRm9ybWF0cyk7XHJcbiAgICBrZXlzLmZvckVhY2goKGtleTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5tZWFzdXJlRm9ybWF0c1trZXldLmlzRGVmYXVsdCkge1xyXG4gICAgICAgIHJ2LnB1c2godGhpcy5tZWFzdXJlRm9ybWF0c1trZXldLnNlcmlhbGl6ZSgpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcnY7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBTbW9BdWRpb1BsYXllclR5cGUgPSAnc2FtcGxlcicgfCAnc3ludGhlc2l6ZXInO1xyXG4vKipcclxuICogQ29uc3RydWN0b3IgcGFyYW1ldGVycyBmb3IgYXVkaW8gcGxheWVyXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vQXVkaW9QbGF5ZXJQYXJhbWV0ZXJzIHtcclxuICBwbGF5ZXJUeXBlPzogU21vQXVkaW9QbGF5ZXJUeXBlLFxyXG4gIHdhdmVmb3JtPzogT3NjaWxsYXRvclR5cGUsXHJcbiAgcmV2ZXJiRW5hYmxlPzogYm9vbGVhbixcclxuICByZXZlcmJEZWxheT86IG51bWJlcixcclxuICByZXZlcmJEZWNheT86IG51bWJlclxyXG59XHJcblxyXG4vKipcclxuICogd2ViIGF1ZGlvIEFQSSBkZWZpbmVzIHRoaXNcclxuICogQHBhcmFtIG90eXBlIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBJc09zY2lsbGF0b3JUeXBlKG90eXBlOiBPc2NpbGxhdG9yVHlwZSB8IHN0cmluZyk6IG90eXBlIGlzIE9zY2lsbGF0b3JUeXBlIHtcclxuICByZXR1cm4gWydzaW5lJywgJ3NxdWFyZScsICdzYXd0b290aCcsICd0cmlhbmdsZScsICdjdXN0b20nXS5maW5kSW5kZXgoKHgpID0+IHggPT09IG90eXBlKSA+PSAwO1xyXG59XHJcbi8qKlxyXG4gKiBBdWRpbyBwbGF5YmFjayBwYXJhbWV0ZXJzLiAgSnVzdCBmdW4gc3R1ZmYuXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9BdWRpb1BsYXllclNldHRpbmdzIGV4dGVuZHMgU21vU2NvcmVNb2RpZmllckJhc2Uge1xyXG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKTogU21vQXVkaW9QbGF5ZXJQYXJhbWV0ZXJzIHtcclxuICAgIHJldHVybiAoe1xyXG4gICAgICBwbGF5ZXJUeXBlOiAnc2FtcGxlcicsXHJcbiAgICAgIHdhdmVmb3JtOiAnc2luZScsXHJcbiAgICAgIHJldmVyYkVuYWJsZTogdHJ1ZSxcclxuICAgICAgcmV2ZXJiRGVsYXk6IDAuNSxcclxuICAgICAgcmV2ZXJiRGVjYXk6IDJcclxuICAgIH0pO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGF0dHJpYnV0ZXMoKSB7XHJcbiAgICByZXR1cm4gWydwbGF5ZXJUeXBlJywgJ3dhdmVmb3JtJywgJ3JldmVyYkVuYWJsZScsICdyZXZlcmJEZWxheScsICdyZXZlcmJEZWNheSddO1xyXG4gIH1cclxuXHJcbiAgcGxheWVyVHlwZTogU21vQXVkaW9QbGF5ZXJUeXBlID0gJ3NhbXBsZXInO1xyXG4gIHdhdmVmb3JtOiBPc2NpbGxhdG9yVHlwZSA9ICdzaW5lJztcclxuICByZXZlcmJFbmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHJldmVyYkRlbGF5OiBudW1iZXIgPSAwLjI7XHJcbiAgcmV2ZXJiRGVjYXk6IG51bWJlciA9IDAuNTtcclxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IFNtb0F1ZGlvUGxheWVyUGFyYW1ldGVycykge1xyXG4gICAgc3VwZXIoJ1Ntb0F1ZGlvUGxheWVyU2V0dGluZ3MnKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vQXVkaW9QbGF5ZXJTZXR0aW5ncy5hdHRyaWJ1dGVzLCBTbW9BdWRpb1BsYXllclNldHRpbmdzLmRlZmF1bHRzLCB0aGlzKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vQXVkaW9QbGF5ZXJTZXR0aW5ncy5hdHRyaWJ1dGVzLCBwYXJhbXMsIHRoaXMpO1xyXG4gIH1cclxuICBzZXJpYWxpemUoKTogYW55IHtcclxuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge307XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlTm9uRGVmYXVsdChTbW9BdWRpb1BsYXllclNldHRpbmdzLmRlZmF1bHRzLCBTbW9BdWRpb1BsYXllclNldHRpbmdzLmF0dHJpYnV0ZXMsIHRoaXMsIHBhcmFtcyk7XHJcbiAgICBwYXJhbXMuY3RvciA9ICdTbW9BdWRpb1BsYXllclNldHRpbmdzJztcclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IHR5cGUgU2NhbGVkUGFnZUF0dHJpYnV0ZXMgPSAnbGVmdE1hcmdpbicgfCAncmlnaHRNYXJnaW4nIHwgJ3RvcE1hcmdpbicgfCAnYm90dG9tTWFyZ2luJyB8ICdpbnRlckdhcCcgfCAnaW50cmFHYXAnO1xyXG4vKipcclxuICogQ29uc3RydWN0b3IgcGFyYW1ldGVycyBmb3Ige0BsaW5rIFNtb1BhZ2VMYXlvdXR9LCBwYXJ0IG9mIHtAbGluayBTbW9MYXlvdXRNYW5hZ2VyfVxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb1BhZ2VMYXlvdXRQYXJhbXMge1xyXG4gIGxlZnRNYXJnaW46IG51bWJlcixcclxuICByaWdodE1hcmdpbjogbnVtYmVyLFxyXG4gIHRvcE1hcmdpbjogbnVtYmVyLFxyXG4gIGJvdHRvbU1hcmdpbjogbnVtYmVyLFxyXG4gIGludGVyR2FwOiBudW1iZXIsXHJcbiAgaW50cmFHYXA6IG51bWJlclxyXG59XHJcblxyXG4vKipcclxuICogRGVmaW5lIG1hcmdpbnMgYW5kIG90aGVyIGxheW91dCBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBwYWdlLCBhbmQgbWF5XHJcbiAqIGJlIGRpZmZlcmVudCBvbiBkaWZmZXJlbnQgcGFnZXMuXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9QYWdlTGF5b3V0IGV4dGVuZHMgU21vU2NvcmVNb2RpZmllckJhc2Uge1xyXG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKTogU21vUGFnZUxheW91dFBhcmFtcyB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGxlZnRNYXJnaW46IDMwLFxyXG4gICAgICByaWdodE1hcmdpbjogMzAsXHJcbiAgICAgIHRvcE1hcmdpbjogMTQ0LFxyXG4gICAgICBib3R0b21NYXJnaW46IDcyLFxyXG4gICAgICBpbnRlckdhcDogMzAsXHJcbiAgICAgIGludHJhR2FwOiAxMFxyXG4gICAgfSkpO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGF0dHJpYnV0ZXMoKTogU2NhbGVkUGFnZUF0dHJpYnV0ZXNbXSB7XHJcbiAgICByZXR1cm4gWydsZWZ0TWFyZ2luJywgJ3JpZ2h0TWFyZ2luJywgJ3RvcE1hcmdpbicsICdib3R0b21NYXJnaW4nLCAnaW50ZXJHYXAnLCAnaW50cmFHYXAnXTtcclxuICB9XHJcbiAgbGVmdE1hcmdpbjogbnVtYmVyID0gMzA7XHJcbiAgcmlnaHRNYXJnaW46IG51bWJlciA9IDMwO1xyXG4gIHRvcE1hcmdpbjogbnVtYmVyID0gNDA7XHJcbiAgYm90dG9tTWFyZ2luOiBudW1iZXIgPSA0MDtcclxuICBpbnRlckdhcDogbnVtYmVyID0gMzA7XHJcbiAgaW50cmFHYXA6IG51bWJlciA9IDEwO1xyXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogU21vUGFnZUxheW91dFBhcmFtcykge1xyXG4gICAgc3VwZXIoJ1Ntb1BhZ2VMYXlvdXQnKTtcclxuICAgIHRoaXMubGVmdE1hcmdpbiA9IHBhcmFtcy5sZWZ0TWFyZ2luO1xyXG4gICAgdGhpcy5yaWdodE1hcmdpbiA9IHBhcmFtcy5yaWdodE1hcmdpbjtcclxuICAgIHRoaXMudG9wTWFyZ2luID0gcGFyYW1zLnRvcE1hcmdpbjtcclxuICAgIHRoaXMuYm90dG9tTWFyZ2luID0gcGFyYW1zLmJvdHRvbU1hcmdpbjtcclxuICAgIHRoaXMuaW50ZXJHYXAgPSBwYXJhbXMuaW50ZXJHYXA7XHJcbiAgICB0aGlzLmludHJhR2FwID0gcGFyYW1zLmludHJhR2FwO1xyXG4gIH1cclxuICBzZXJpYWxpemUoKTogYW55IHtcclxuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge307XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlTm9uRGVmYXVsdChTbW9QYWdlTGF5b3V0LmRlZmF1bHRzLCBTbW9QYWdlTGF5b3V0LmF0dHJpYnV0ZXMsIHRoaXMsIHBhcmFtcyk7XHJcbiAgICBwYXJhbXMuY3RvciA9ICdTbW9QYWdlTGF5b3V0JztcclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBTY2FsZWRHbG9iYWxBdHRyaWJ1dGVzID0gJ3BhZ2VXaWR0aCcgfCAncGFnZUhlaWdodCc7XHJcbmV4cG9ydCB0eXBlIEdsb2JhbExheW91dEF0dHJpYnV0ZXMgPSAncGFnZVdpZHRoJyB8ICdwYWdlSGVpZ2h0JyB8ICdub3RlU3BhY2luZycgfCAnc3ZnU2NhbGUnIHwgJ3pvb21TY2FsZScgfCAncHJvcG9ydGlvbmFsaXR5JyB8ICdtYXhNZWFzdXJlU3lzdGVtJztcclxuZXhwb3J0IGNvbnN0IEdsb2JhbExheW91dEF0dHJpYnV0ZXNBcnJheTogR2xvYmFsTGF5b3V0QXR0cmlidXRlc1tdICA9IFsncGFnZVdpZHRoJywgJ3BhZ2VIZWlnaHQnLCAnbm90ZVNwYWNpbmcnLCAnc3ZnU2NhbGUnLCAnem9vbVNjYWxlJywgJ3Byb3BvcnRpb25hbGl0eScsICdtYXhNZWFzdXJlU3lzdGVtJ107XHJcbi8qKlxyXG4gKiBHbG9iYWwgbGF5b3V0IGFyZSBwYXJhbWV0ZXJzIHRoYXQgZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgdGhlIHdob2xlIHNjb3JlLCBiZWNhdXNlIHRoZXkgYWZmZWN0IHRoZSBjb250YWluaW5nIHN2ZyBlbGVtZW50XHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vR2xvYmFsTGF5b3V0IHtcclxuICBzdmdTY2FsZTogbnVtYmVyO1xyXG4gIHpvb21TY2FsZTogbnVtYmVyO1xyXG4gIG5vdGVTcGFjaW5nOiBudW1iZXI7XHJcbiAgcGFnZVdpZHRoOiBudW1iZXI7XHJcbiAgcGFnZUhlaWdodDogbnVtYmVyO1xyXG4gIHByb3BvcnRpb25hbGl0eTogbnVtYmVyLFxyXG4gIG1heE1lYXN1cmVTeXN0ZW06IG51bWJlclxyXG59XHJcblxyXG4vKipcclxuICogVXNlZCB0byBjcmVhdGUge0BsaW5rIFNtb0xheW91dE1hbmFnZXJQYXJhbXN9XHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2NhbGVkUGFnZUxheW91dCB7XHJcbiAgc3ZnU2NhbGU6IG51bWJlcjtcclxuICB6b29tU2NhbGU6IG51bWJlcjtcclxuICBub3RlU3BhY2luZzogbnVtYmVyO1xyXG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xyXG4gIHBhZ2VIZWlnaHQ6IG51bWJlcjtcclxuICBsZWZ0TWFyZ2luOiBudW1iZXI7XHJcbiAgcmlnaHRNYXJnaW46IG51bWJlcjtcclxuICB0b3BNYXJnaW46IG51bWJlcjtcclxuICBib3R0b21NYXJnaW46IG51bWJlcjtcclxuICBpbnRlckdhcDogbnVtYmVyO1xyXG4gIGludHJhR2FwOiBudW1iZXI7XHJcbiAgcGFnZXM6IG51bWJlcjtcclxuICBtYXhNZWFzdXJlU3lzdGVtOiBudW1iZXI7XHJcbn1cclxuLyoqXHJcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHtAbGluayBTbW9MYXlvdXRNYW5hZ2VyfVxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0xheW91dE1hbmFnZXJQYXJhbXMge1xyXG4gIC8qKlxyXG4gICAqIGdsb2JhbCBzdmcgc2V0dGluZ3MgZm9yIHpvb20sIHBhZ2Ugd2lkdGgvaGVpZ2h0XHJcbiAgICovXHJcbiAgZ2xvYmFsTGF5b3V0OiBTbW9HbG9iYWxMYXlvdXQsXHJcbiAgLyoqXHJcbiAgICogcGFnZSBtYXJnaW5zIGZvciBlYWNoIHBhZ2VcclxuICAgKi9cclxuICBwYWdlTGF5b3V0czogU21vUGFnZUxheW91dFtdXHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBzZXJpYWxpemF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0xheW91dE1hbmFnZXJQYXJhbXNTZXIge1xyXG4gIC8qKlxyXG4gICAqIGNvbnN0cnVjdG9yXHJcbiAgICovXHJcbiAgY3Rvcjogc3RyaW5nOyBcclxuICAvKipcclxuICAgKiBnbG9iYWwgc3ZnIHNldHRpbmdzIGZvciB6b29tLCBwYWdlIHdpZHRoL2hlaWdodFxyXG4gICAqL1xyXG4gIGdsb2JhbExheW91dDogU21vR2xvYmFsTGF5b3V0LFxyXG4gIC8qKlxyXG4gICAqIHBhZ2UgbWFyZ2lucyBmb3IgZWFjaCBwYWdlXHJcbiAgICovXHJcbiAgcGFnZUxheW91dHM6IFNtb1BhZ2VMYXlvdXRQYXJhbXNbXVxyXG59XHJcbmZ1bmN0aW9uIGlzU21vTGF5b3V0TWFuYWdlclBhcmFtc1NlcihwYXJhbXM6IFBhcnRpYWw8U21vTGF5b3V0TWFuYWdlclBhcmFtc1Nlcj4pOiBwYXJhbXMgaXMgU21vTGF5b3V0TWFuYWdlclBhcmFtc1NlciB7XHJcbiAgaWYgKCFwYXJhbXMuY3RvciB8fCBwYXJhbXMuY3RvciAhPT0gJ1Ntb0xheW91dE1hbmFnZXInKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBTdG9yYWdlIGFuZCB1dGlsaXRpZXMgZm9yIGxheW91dCBpbmZvcm1hdGlvbiBpbiB0aGUgc2NvcmUuICBFYWNoXHJcbiAqIG1hbmFnZXIgaGFzIG9uZSBzZXQgb2YgcGFnZSBoZWlnaHQvd2lkdGgsIHNpbmNlIHN2ZyBlbGVtZW50XHJcbiAqIG11c3QgaGF2ZSBzaW5nbGUgbGVuZ3RoL3dpZHRoIGFuZCB2aWV3Ym94LlxyXG4gKiBFYWNoIHBhZ2UgY2FuIGhhdmUgZGlmZmVyZW50IG1hcmdpbnMuXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTbW9MYXlvdXRNYW5hZ2VyIGV4dGVuZHMgU21vU2NvcmVNb2RpZmllckJhc2Uge1xyXG4gIHN0YXRpYyBnZXQgZGVmYXVsdExheW91dCgpOiBTbW9HbG9iYWxMYXlvdXQge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc3ZnU2NhbGU6IDAuNTUsXHJcbiAgICAgIHpvb21TY2FsZTogMi4wLFxyXG4gICAgICBub3RlU3BhY2luZzogMS4wLFxyXG4gICAgICBwYWdlV2lkdGg6IDggKiA5NiArIDQ4LFxyXG4gICAgICBwYWdlSGVpZ2h0OiAxMSAqIDk2LFxyXG4gICAgICBwcm9wb3J0aW9uYWxpdHk6IDUsXHJcbiAgICAgIG1heE1lYXN1cmVTeXN0ZW06IDBcclxuICAgIH07XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKTogU21vTGF5b3V0TWFuYWdlclBhcmFtcyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBnbG9iYWxMYXlvdXQ6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoU21vTGF5b3V0TWFuYWdlci5kZWZhdWx0TGF5b3V0KSksXHJcbiAgICAgIHBhZ2VMYXlvdXRzOiBbXVxyXG4gICAgfTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBhdHRyaWJ1dGVzKCk6IEdsb2JhbExheW91dEF0dHJpYnV0ZXNbXSB7XHJcbiAgICByZXR1cm4gWydwYWdlV2lkdGgnLCAncGFnZUhlaWdodCcsICdub3RlU3BhY2luZycsICdzdmdTY2FsZScsICd6b29tU2NhbGUnLCAnbWF4TWVhc3VyZVN5c3RlbSddO1xyXG4gIH1cclxuICAvLyBBdHRyaWJ1dGVzIHRoYXQgYXJlIHNjYWxlZCBieSBzdmdTY2FsZVxyXG4gIC8qIHN0YXRpYyBnZXQgc2NhbGFibGVBdHRyaWJ1dGVzKCk6IEdsb2JhbCB7XHJcbiAgICByZXR1cm4gWydwYWdlV2lkdGgnLCAncGFnZUhlaWdodCddO1xyXG4gIH0qL1xyXG4gIHN0YXRpYyBnZXQgc2NhbGVkUGFnZUF0dHJpYnV0ZXMoKTogU2NhbGVkUGFnZUF0dHJpYnV0ZXNbXSB7XHJcbiAgICByZXR1cm4gWydsZWZ0TWFyZ2luJywgJ3JpZ2h0TWFyZ2luJywgJ3RvcE1hcmdpbicsICdib3R0b21NYXJnaW4nLCAnaW50ZXJHYXAnLCAnaW50cmFHYXAnXTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBzY2FsZWRHbG9iYWxBdHRyaWJ1dGVzKCk6IFNjYWxlZEdsb2JhbEF0dHJpYnV0ZXNbXSB7XHJcbiAgICByZXR1cm4gWydwYWdlV2lkdGgnLCAncGFnZUhlaWdodCddO1xyXG4gIH1cclxuICBzdGF0aWMgYXJlTGF5b3V0c0VxdWFsKGcxOiBTbW9HbG9iYWxMYXlvdXQsIGcyOiBTbW9HbG9iYWxMYXlvdXQpIHtcclxuICAgIGxldCBydiA9IHRydWU7XHJcbiAgICBHbG9iYWxMYXlvdXRBdHRyaWJ1dGVzQXJyYXkuZm9yRWFjaCgoYXR0cikgPT4ge1xyXG4gICAgICBpZiAoZzFbYXR0cl0gIT09IGcyW2F0dHJdKSB7XHJcbiAgICAgICAgcnYgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcnY7XHJcbiAgfVxyXG4gIHN0YXRpYyBpc1pvb21DaGFuZ2UoZzE6IFNtb0dsb2JhbExheW91dCwgZzI6IFNtb0dsb2JhbExheW91dCkge1xyXG4gICAgbGV0IHJ2ID0gdHJ1ZTtcclxuICAgIEdsb2JhbExheW91dEF0dHJpYnV0ZXNBcnJheS5mb3JFYWNoKChhdHRyKSA9PiB7XHJcbiAgICAgIGlmIChnMVthdHRyXSAhPT0gZzJbYXR0cl0gJiYgYXR0ciAhPT0gJ3pvb21TY2FsZScpIHtcclxuICAgICAgICBydiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBydjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQWRqdXN0IHpvb20gd2lkdGggc28gdGhlIHNjb3JlIHRha2VzIHVwIHRoZSB3aG9sZSBzY29yZSBhcmVhXHJcbiAgICovXHJcbiAgem9vbVRvV2lkdGgoc2NyZWVuV2lkdGg6IG51bWJlcikge1xyXG4gICAgY29uc3QgY3VyV2lkdGggPSB0aGlzLmdsb2JhbExheW91dC5wYWdlV2lkdGggKiB0aGlzLmdsb2JhbExheW91dC5zdmdTY2FsZTtcclxuICAgIHRoaXMuZ2xvYmFsTGF5b3V0Lnpvb21TY2FsZSA9ICgoc2NyZWVuV2lkdGggIC0gMzUwKSAvIGN1cldpZHRoKSAqIHRoaXMuZ2xvYmFsTGF5b3V0LnN2Z1NjYWxlOyAvLyBtYWdpYyAzNTAgZm9yIGxlZnQgY29udHJvbHMuLi4uVE9ETyBzdGFuZGFyZGl6ZSB0aGlzXHJcbiAgfVxyXG4gIHN0YXRpYyBnZXRTY2FsZWRQYWdlTGF5b3V0KGdsb2JhbExheW91dDogU21vR2xvYmFsTGF5b3V0LCBwYWdlTGF5b3V0OiBTbW9QYWdlTGF5b3V0LCBwYWdlczogbnVtYmVyKTogU2NhbGVkUGFnZUxheW91dCB7XHJcbiAgICBjb25zdCBydjogUGFydGlhbDxTY2FsZWRQYWdlTGF5b3V0PiA9IHt9O1xyXG4gICAgU21vTGF5b3V0TWFuYWdlci5zY2FsZWRQYWdlQXR0cmlidXRlcy5mb3JFYWNoKChhdHRyOiBTY2FsZWRQYWdlQXR0cmlidXRlcykgPT4ge1xyXG4gICAgICBydlthdHRyXSA9IHBhZ2VMYXlvdXRbYXR0cl0gLyBnbG9iYWxMYXlvdXQuc3ZnU2NhbGU7XHJcbiAgICB9KTtcclxuICAgIFNtb0xheW91dE1hbmFnZXIuc2NhbGVkR2xvYmFsQXR0cmlidXRlcy5mb3JFYWNoKChhdHRyOiBTY2FsZWRHbG9iYWxBdHRyaWJ1dGVzKSA9PiB7XHJcbiAgICAgIHJ2W2F0dHJdID0gZ2xvYmFsTGF5b3V0W2F0dHJdIC8gZ2xvYmFsTGF5b3V0LnN2Z1NjYWxlO1xyXG4gICAgfSk7XHJcbiAgICAvLyBOb3RlIHNwYWNpbmcgaXMgcmVsYXRpdmUsIHNvICogaXQgYW5kIG5vdCBkaXZpZGVcclxuICAgIHJ2Lm5vdGVTcGFjaW5nID0gZ2xvYmFsTGF5b3V0Lm5vdGVTcGFjaW5nICogZ2xvYmFsTGF5b3V0LnN2Z1NjYWxlO1xyXG4gICAgcnYuc3ZnU2NhbGUgPSBnbG9iYWxMYXlvdXQuc3ZnU2NhbGU7XHJcbiAgICBydi56b29tU2NhbGUgPSBnbG9iYWxMYXlvdXQuem9vbVNjYWxlO1xyXG4gICAgcnYubWF4TWVhc3VyZVN5c3RlbSA9IGdsb2JhbExheW91dC5tYXhNZWFzdXJlU3lzdGVtO1xyXG4gICAgXHJcbiAgICByZXR1cm4gcnYgYXMgU2NhbGVkUGFnZUxheW91dDtcclxuICB9XHJcbiAgZ2xvYmFsTGF5b3V0OiBTbW9HbG9iYWxMYXlvdXQ7XHJcbiAgcGFnZUxheW91dHM6IFNtb1BhZ2VMYXlvdXRbXSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogU21vTGF5b3V0TWFuYWdlclBhcmFtcykge1xyXG4gICAgc3VwZXIoJ1Ntb0xheW91dE1hbmFnZXInKTtcclxuICAgIGlmICh0eXBlb2YocGFyYW1zLmdsb2JhbExheW91dC5tYXhNZWFzdXJlU3lzdGVtKSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgcGFyYW1zLmdsb2JhbExheW91dC5tYXhNZWFzdXJlU3lzdGVtID0gU21vTGF5b3V0TWFuYWdlci5kZWZhdWx0TGF5b3V0Lm1heE1lYXN1cmVTeXN0ZW07XHJcbiAgICB9XHJcbiAgICB0aGlzLmdsb2JhbExheW91dCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGFyYW1zLmdsb2JhbExheW91dCkpO1xyXG4gICAgaWYgKHBhcmFtcy5wYWdlTGF5b3V0cy5sZW5ndGgpIHtcclxuICAgICAgcGFyYW1zLnBhZ2VMYXlvdXRzLmZvckVhY2goKHBscCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhZ2VQYXJhbXM6IFNtb1BhZ2VMYXlvdXRQYXJhbXMgPSBTbW9QYWdlTGF5b3V0LmRlZmF1bHRzO1xyXG4gICAgICAgIFNtb1BhZ2VMYXlvdXQuYXR0cmlidXRlcy5mb3JFYWNoKChhdHRyKSA9PiB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIChwbHBbYXR0cl0pICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBwYWdlUGFyYW1zW2F0dHJdID0gcGxwW2F0dHJdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucGFnZUxheW91dHMucHVzaChuZXcgU21vUGFnZUxheW91dChwYWdlUGFyYW1zKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdlTGF5b3V0cy5wdXNoKG5ldyBTbW9QYWdlTGF5b3V0KFNtb1BhZ2VMYXlvdXQuZGVmYXVsdHMpKTtcclxuICAgIH1cclxuICB9XHJcbiAgdHJpbVBhZ2VzKHBhZ2VDb3VudDogbnVtYmVyKSB7XHJcbiAgICBpZiAocGFnZUNvdW50IDwgdGhpcy5wYWdlTGF5b3V0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHRoaXMucGFnZUxheW91dHMgPSB0aGlzLnBhZ2VMYXlvdXRzLnNsaWNlKDAsIHBhZ2VDb3VudCArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRab29tU2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nbG9iYWxMYXlvdXQuem9vbVNjYWxlO1xyXG4gIH1cclxuICBzZXJpYWxpemUoKTogU21vTGF5b3V0TWFuYWdlclBhcmFtc1NlciB7XHJcbiAgICBjb25zdCBydjogUGFydGlhbDxTbW9MYXlvdXRNYW5hZ2VyUGFyYW1zU2VyPiA9IHsgY3RvcjogJ1Ntb0xheW91dE1hbmFnZXInIH07XHJcbiAgICBydi5wYWdlTGF5b3V0cyA9IFtdO1xyXG4gICAgdGhpcy5wYWdlTGF5b3V0cy5mb3JFYWNoKChwbCkgPT4ge1xyXG4gICAgICBydi5wYWdlTGF5b3V0cyEucHVzaChwbC5zZXJpYWxpemUoKSk7XHJcbiAgICB9KTtcclxuICAgIHJ2Lmdsb2JhbExheW91dCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5nbG9iYWxMYXlvdXQpKTtcclxuICAgIGlmICghaXNTbW9MYXlvdXRNYW5hZ2VyUGFyYW1zU2VyKHJ2KSkge1xyXG4gICAgICB0aHJvdyAnYmFkIGxheW91dCBtYW5hZ2VyICcgKyBKU09OLnN0cmluZ2lmeShydik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcnY7XHJcbiAgfVxyXG4gIHVwZGF0ZUdsb2JhbExheW91dChwYXJhbXM6IFNtb0dsb2JhbExheW91dCkge1xyXG4gICAgU21vTGF5b3V0TWFuYWdlci5hdHRyaWJ1dGVzLmZvckVhY2goKGF0dHI6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAodHlwZW9mICgocGFyYW1zIGFzIGFueSlbYXR0cl0pICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICh0aGlzLmdsb2JhbExheW91dCBhcyBhbnkpW2F0dHJdID0gKHBhcmFtcyBhcyBhbnkpW2F0dHJdO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8gIyMjIGFkZFRvUGFnZUxheW91dHNcclxuICAvLyBNYWtlIHN1cmUgdGhlIG5leHQgcGFnZSBoYXMgYSBsYXlvdXQuICBJZiBub3QsIGNvcHkgc2V0dGluZ3MgZnJvbVxyXG4gIC8vIHByZXZpb3VzIHBhZ2UuXHJcbiAgYWRkVG9QYWdlTGF5b3V0cyhwYWdlTnVtOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGxhc3RMYXlvdXQgPSB0aGlzLnBhZ2VMYXlvdXRzW3RoaXMucGFnZUxheW91dHMubGVuZ3RoIC0gMV07XHJcbiAgICBpZiAodGhpcy5wYWdlTGF5b3V0cy5sZW5ndGggPD0gcGFnZU51bSkge1xyXG4gICAgICB0aGlzLnBhZ2VMYXlvdXRzLnB1c2gobmV3IFNtb1BhZ2VMYXlvdXQobGFzdExheW91dCkpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRHbG9iYWxMYXlvdXQoKTogU21vR2xvYmFsTGF5b3V0IHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ2xvYmFsTGF5b3V0KSk7XHJcbiAgfVxyXG4gIC8vIFJldHVybiBhIGRlZXAgY29weSBvZiB0aGUgcGFnZSBwYXJhbWV0ZXJzLCBhZGp1c3RlZCBmb3IgdGhlIGdsb2JhbCBzY2FsZS5cclxuICBnZXRTY2FsZWRQYWdlTGF5b3V0KHBhZ2VJbmRleDogbnVtYmVyKTogU2NhbGVkUGFnZUxheW91dCB7XHJcbiAgICByZXR1cm4gU21vTGF5b3V0TWFuYWdlci5nZXRTY2FsZWRQYWdlTGF5b3V0KHRoaXMuZ2xvYmFsTGF5b3V0LCB0aGlzLnBhZ2VMYXlvdXRzW3BhZ2VJbmRleF0sIHRoaXMucGFnZUxheW91dHMubGVuZ3RoKTtcclxuICB9XHJcbiAgZ2V0UGFnZUxheW91dChwYWdlSW5kZXg6IG51bWJlcik6IFNtb1BhZ2VMYXlvdXQge1xyXG4gICAgcmV0dXJuIG5ldyBTbW9QYWdlTGF5b3V0KHRoaXMucGFnZUxheW91dHNbcGFnZUluZGV4XSk7XHJcbiAgfVxyXG4gIGdldFBhZ2VMYXlvdXRzKCk6IFNtb1BhZ2VMYXlvdXRbXSB7XHJcbiAgICBjb25zdCBydjogU21vUGFnZUxheW91dFtdID0gW107XHJcbiAgICB0aGlzLnBhZ2VMYXlvdXRzLmZvckVhY2goKHBsKSA9PiB7XHJcbiAgICAgIHJ2LnB1c2gobmV3IFNtb1BhZ2VMYXlvdXQocGwpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuICB1cGRhdGVQYWdlKHBhZ2VMYXlvdXQ6IFNtb1BhZ2VMYXlvdXQsIHBhZ2VJbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5wYWdlTGF5b3V0cy5sZW5ndGggPiBwYWdlSW5kZXgpIHtcclxuICAgICAgdGhpcy5wYWdlTGF5b3V0c1twYWdlSW5kZXhdID0gbmV3IFNtb1BhZ2VMYXlvdXQocGFnZUxheW91dCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogY29uc3RydWN0b3IgcGFyYW1ldGVycyBmb3Igc3lzdGVtIGdyb3VwcyAoZ3JvdXBpbmdzIG9mIHN0YXZlcyBpbiB0aGUgc2NvcmUpXHJcbiAqIEBwYXJhbSBsZWZ0Q29ubmVjdG9yXHJcbiAqIEBwYXJhbSByaWdodENvbm5lY3RvclxyXG4gKiBAcGFyYW0gbWFwVHlwZVxyXG4gKiBAcGFyYW0gdGV4dFxyXG4gKiBAcGFyYW0gc2hvcnRUZXh0XHJcbiAqIEBwYXJhbSBqdXN0aWZ5XHJcbiAqIEBwYXJhbSBzdGFydFNlbGVjdG9yIG5vdCB1c2VkXHJcbiAqIEBwYXJhbSBlbmRTZWxlY3RvciBub3QgdXNlZFxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb1N5c3RlbUdyb3VwUGFyYW1zIHtcclxuICAvKipcclxuICAgKiBicmFja2V0IGV0Yy5cclxuICAgKi9cclxuICBsZWZ0Q29ubmVjdG9yOiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogYnJhY2tldCBldGMuXHJcbiAgICovXHJcbiAgcmlnaHRDb25uZWN0b3I6IG51bWJlcixcclxuICAvKipcclxuICAgKiBmdXR1cmUsIHNjb3JlIGdyb3VwcyBjYW4gYmUgZGlmZmVyZW50IGZvciBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHNjb3JlXHJcbiAgICovXHJcbiAgbWFwVHlwZTogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIHdoZXRoZXIgdG8ganVzdGlmeSB0aGUgbm90ZXMgaW4gdGhlIGdyb3VwXHJcbiAgICovXHJcbiAganVzdGlmeTogYm9vbGVhbixcclxuICAvKipcclxuICAgKiBpZiBtYXBwZWQgdG8gYSByYW5nZSwgc3RhcnRcclxuICAgKi9cclxuICBzdGFydFNlbGVjdG9yOiBTbW9TZWxlY3RvcixcclxuICAvKipcclxuICAgKiBpZiBtYXBwZWQgdG8gYSByYW5nZSwgZW5kXHJcbiAgICovXHJcbiAgZW5kU2VsZWN0b3I6IFNtb1NlbGVjdG9yXHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBzZXJpYWxpemF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb1N5c3RlbUdyb3VwUGFyYW1zU2VyIGV4dGVuZHMgU21vU3lzdGVtR3JvdXBQYXJhbXN7XHJcbiAgLyoqIFxyXG4gICAqIGNvbnN0cnVjdG9yXHJcbiAgICovXHJcbiAgY3Rvcjogc3RyaW5nO1xyXG59XHJcbmZ1bmN0aW9uIGlzU21vU3lzdGVtR3JvdXBQYXJhbXNTZXIocGFyYW1zOiBQYXJ0aWFsPFNtb1N5c3RlbUdyb3VwUGFyYW1zU2VyPik6IHBhcmFtcyBpcyBTbW9TeXN0ZW1Hcm91cFBhcmFtc1NlciB7XHJcbiAgaWYgKHBhcmFtcy5jdG9yID09PSAnU21vU3lzdGVtR3JvdXAnKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbi8qKlxyXG4gKiBTeXN0ZW0gZ3JvdXAgaXMgdGhlIGdyb3VwaW5nIG9mIHN0YXZlcyBpbnRvIGEgc3lzdGVtLlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqICAqL1xyXG5leHBvcnQgY2xhc3MgU21vU3lzdGVtR3JvdXAgZXh0ZW5kcyBTbW9TY29yZU1vZGlmaWVyQmFzZSB7XHJcbiAgc3RhdGljIGdldCBjb25uZWN0b3JUeXBlcygpOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHtcclxuICAgIHJldHVybiB7IGJyYWNlOiAwLCBicmFja2V0OiAxLCBzaW5nbGU6IDIsIGRvdWJsZTogMyB9O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IG1hcFR5cGVzKCk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIHsgYWxsTWVhc3VyZXM6IDAsIHJhbmdlOiAxIH07XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgYXR0cmlidXRlcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gWydsZWZ0Q29ubmVjdG9yJywgJ3JpZ2h0Q29ubmVjdG9yJywgJ3RleHQnLCAnc2hvcnRUZXh0JywgJ2p1c3RpZnknLFxyXG4gICAgICAnc3RhcnRTZWxlY3RvcicsICdlbmRTZWxlY3RvcicsICdtYXBUeXBlJ107XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgZGVmYXVsdHMoKTogU21vU3lzdGVtR3JvdXBQYXJhbXMge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBsZWZ0Q29ubmVjdG9yOiBTbW9TeXN0ZW1Hcm91cC5jb25uZWN0b3JUeXBlcy5zaW5nbGUsXHJcbiAgICAgIHJpZ2h0Q29ubmVjdG9yOiBTbW9TeXN0ZW1Hcm91cC5jb25uZWN0b3JUeXBlcy5zaW5nbGUsXHJcbiAgICAgIG1hcFR5cGU6IFNtb1N5c3RlbUdyb3VwLm1hcFR5cGVzLmFsbE1lYXN1cmVzLFxyXG4gICAgICBqdXN0aWZ5OiB0cnVlLFxyXG4gICAgICBzdGFydFNlbGVjdG9yOiBTbW9TZWxlY3Rvci5kZWZhdWx0LFxyXG4gICAgICBlbmRTZWxlY3RvcjogU21vU2VsZWN0b3IuZGVmYXVsdFxyXG4gICAgfSkpO1xyXG4gIH1cclxuICBzdGF0aWMgaXNTeXN0ZW1Hcm91cChtb2RpZmllcjogU21vU3lzdGVtR3JvdXAgfCBTbW9Nb2RpZmllckJhc2UpOiBtb2RpZmllciBpcyBTbW9TeXN0ZW1Hcm91cCB7XHJcbiAgICByZXR1cm4gbW9kaWZpZXIuY3RvciA9PT0gJ1Ntb1N5c3RlbUdyb3VwJztcclxuICB9XHJcbiAgbGVmdENvbm5lY3RvcjogbnVtYmVyID0gU21vU3lzdGVtR3JvdXAuY29ubmVjdG9yVHlwZXMuc2luZ2xlO1xyXG4gIHJpZ2h0Q29ubmVjdG9yOiBudW1iZXIgPSBTbW9TeXN0ZW1Hcm91cC5jb25uZWN0b3JUeXBlcy5zaW5nbGU7XHJcbiAgbWFwVHlwZTogbnVtYmVyID0gU21vU3lzdGVtR3JvdXAubWFwVHlwZXMuYWxsTWVhc3VyZXM7XHJcbiAgdGV4dDogc3RyaW5nID0gJyc7XHJcbiAgc2hvcnRUZXh0OiBzdHJpbmcgPSAnJztcclxuICBqdXN0aWZ5OiBib29sZWFuID0gdHJ1ZTtcclxuICBzdGFydFNlbGVjdG9yOiBTbW9TZWxlY3RvciA9IFNtb1NlbGVjdG9yLmRlZmF1bHQ7XHJcbiAgZW5kU2VsZWN0b3I6IFNtb1NlbGVjdG9yID0gU21vU2VsZWN0b3IuZGVmYXVsdDtcclxuICBhdHRyczogU21vQXR0cnM7XHJcbiAgY29uc3RydWN0b3IocGFyYW1zOiBTbW9TeXN0ZW1Hcm91cFBhcmFtcykge1xyXG4gICAgc3VwZXIoJ1Ntb1N5c3RlbUdyb3VwJyk7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb1N5c3RlbUdyb3VwLmF0dHJpYnV0ZXMsIFNtb1N5c3RlbUdyb3VwLmRlZmF1bHRzLCB0aGlzKTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2UoU21vU3lzdGVtR3JvdXAuYXR0cmlidXRlcywgcGFyYW1zLCB0aGlzKTtcclxuICAgIHRoaXMuYXR0cnMgPSB7XHJcbiAgICAgIGlkOiBnZXRJZCgpLnRvU3RyaW5nKCksXHJcbiAgICAgIHR5cGU6ICdTbW9TeXN0ZW1Hcm91cCdcclxuICAgIH07XHJcbiAgfVxyXG4gIHN0YXZlc092ZXJsYXAoZ3JvdXA6IFNtb1N5c3RlbUdyb3VwKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuc3RhcnRTZWxlY3Rvci5zdGFmZiA+PSBncm91cC5zdGFydFNlbGVjdG9yLnN0YWZmICYmIHRoaXMuc3RhcnRTZWxlY3Rvci5zdGFmZiA8PSBncm91cC5lbmRTZWxlY3Rvci5zdGFmZikgfHxcclxuICAgICAgKHRoaXMuZW5kU2VsZWN0b3Iuc3RhZmYgPj0gZ3JvdXAuc3RhcnRTZWxlY3Rvci5zdGFmZiAmJiB0aGlzLmVuZFNlbGVjdG9yLnN0YWZmIDw9IGdyb3VwLmVuZFNlbGVjdG9yLnN0YWZmKTtcclxuICB9XHJcbiAgbWVhc3VyZXNPdmVybGFwKGdyb3VwOiBTbW9TeXN0ZW1Hcm91cCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdmVzT3ZlcmxhcChncm91cCkgJiZcclxuICAgICAgKCh0aGlzLnN0YXJ0U2VsZWN0b3IubWVhc3VyZSA+PSBncm91cC5zdGFydFNlbGVjdG9yLm1lYXN1cmUgJiYgdGhpcy5lbmRTZWxlY3Rvci5tZWFzdXJlIDw9IGdyb3VwLnN0YXJ0U2VsZWN0b3IubWVhc3VyZSkgfHxcclxuICAgICAgICAodGhpcy5lbmRTZWxlY3Rvci5tZWFzdXJlID49IGdyb3VwLnN0YXJ0U2VsZWN0b3IubWVhc3VyZSAmJiB0aGlzLmVuZFNlbGVjdG9yLm1lYXN1cmUgPD0gZ3JvdXAuZW5kU2VsZWN0b3IubWVhc3VyZSkpO1xyXG4gIH1cclxuICBvdmVybGFwcyhncm91cDogU21vU3lzdGVtR3JvdXApIHtcclxuICAgIHJldHVybiAodGhpcy5zdGF2ZXNPdmVybGFwKGdyb3VwKSAmJiB0aGlzLm1hcFR5cGUgPT09IFNtb1N5c3RlbUdyb3VwLm1hcFR5cGVzLmFsbE1lYXN1cmVzKSB8fFxyXG4gICAgICAodGhpcy5tZWFzdXJlc092ZXJsYXAoZ3JvdXApICYmIHRoaXMubWFwVHlwZSA9PT0gU21vU3lzdGVtR3JvdXAubWFwVHlwZXMucmFuZ2UpO1xyXG4gIH1cclxuICBzZXJpYWxpemUoKTogU21vU3lzdGVtR3JvdXBQYXJhbXNTZXIge1xyXG4gICAgY29uc3QgcGFyYW1zOiBQYXJ0aWFsPFNtb1N5c3RlbUdyb3VwUGFyYW1zU2VyPiA9IHt9O1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZU5vbkRlZmF1bHQoU21vU3lzdGVtR3JvdXAuZGVmYXVsdHMsIFNtb1N5c3RlbUdyb3VwLmF0dHJpYnV0ZXMsIHRoaXMsIHBhcmFtcyk7XHJcbiAgICBwYXJhbXMuY3RvciA9ICdTbW9TeXN0ZW1Hcm91cCc7XHJcbiAgICBpZiAoIWlzU21vU3lzdGVtR3JvdXBQYXJhbXNTZXIocGFyYW1zKSkge1xyXG4gICAgICB0aHJvdyAnYmFkIHN5c3RlbSBncm91cCAnICsgSlNPTi5zdHJpbmdpZnkocGFyYW1zKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBjb25zdCBzY29yZU1vZGlmaWVyRHluYW1pY0N0b3JJbml0ID0gKCkgPT4ge1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9TY29yZVByZWZlcmVuY2VzJ10gPSAocGFyYW1zOiBTbW9TY29yZVByZWZlcmVuY2VzUGFyYW1zKSA9PiBuZXcgU21vU2NvcmVQcmVmZXJlbmNlcyhwYXJhbXMpO1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9Gb3JtYXR0aW5nTWFuYWdlciddID0gKHBhcmFtczogU21vRm9ybWF0dGluZ01hbmFnZXJQYXJhbXMpID0+IG5ldyBTbW9Gb3JtYXR0aW5nTWFuYWdlcihwYXJhbXMpO1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9BdWRpb1BsYXllclNldHRpbmdzJ10gPSAocGFyYW1zOiBTbW9BdWRpb1BsYXllclBhcmFtZXRlcnMpID0+IG5ldyBTbW9BdWRpb1BsYXllclNldHRpbmdzKHBhcmFtcyk7XHJcbiAgU21vRHluYW1pY0N0b3JbJ1Ntb1BhZ2VMYXlvdXQnXSA9IChwYXJhbXM6IFNtb1BhZ2VMYXlvdXRQYXJhbXMpID0+IG5ldyBTbW9QYWdlTGF5b3V0KHBhcmFtcyk7XHJcbiAgU21vRHluYW1pY0N0b3JbJ1Ntb0xheW91dE1hbmFnZXInXSA9IChwYXJhbXM6IFNtb0xheW91dE1hbmFnZXJQYXJhbXMpID0+IG5ldyBTbW9MYXlvdXRNYW5hZ2VyKHBhcmFtcyk7XHJcbiAgU21vRHluYW1pY0N0b3JbJ1Ntb1N5c3RlbUdyb3VwJ10gPSAocGFyYW1zOiBTbW9TeXN0ZW1Hcm91cFBhcmFtcykgPT4gbmV3IFNtb1N5c3RlbUdyb3VwKHBhcmFtcyk7XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/smo/data/scoreModifiers.ts\n");
|
|
570
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalLayoutAttributesArray: () => (/* binding */ GlobalLayoutAttributesArray),\n/* harmony export */ IsOscillatorType: () => (/* binding */ IsOscillatorType),\n/* harmony export */ SmoAudioPlayerSettings: () => (/* binding */ SmoAudioPlayerSettings),\n/* harmony export */ SmoFormattingManager: () => (/* binding */ SmoFormattingManager),\n/* harmony export */ SmoLayoutManager: () => (/* binding */ SmoLayoutManager),\n/* harmony export */ SmoPageLayout: () => (/* binding */ SmoPageLayout),\n/* harmony export */ SmoScoreInfoKeys: () => (/* binding */ SmoScoreInfoKeys),\n/* harmony export */ SmoScoreModifierBase: () => (/* binding */ SmoScoreModifierBase),\n/* harmony export */ SmoScorePreferenceBools: () => (/* binding */ SmoScorePreferenceBools),\n/* harmony export */ SmoScorePreferenceNumbers: () => (/* binding */ SmoScorePreferenceNumbers),\n/* harmony export */ SmoScorePreferences: () => (/* binding */ SmoScorePreferences),\n/* harmony export */ SmoSystemGroup: () => (/* binding */ SmoSystemGroup),\n/* harmony export */ scoreModifierDynamicCtorInit: () => (/* binding */ scoreModifierDynamicCtorInit)\n/* harmony export */ });\n/* harmony import */ var _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/serializationHelpers */ \"./src/common/serializationHelpers.js\");\n/* harmony import */ var _measureModifiers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./measureModifiers */ \"./src/smo/data/measureModifiers.ts\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./common */ \"./src/smo/data/common.ts\");\n/* harmony import */ var _xform_selections__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../xform/selections */ \"./src/smo/xform/selections.ts\");\n// [Smoosic](https://github.com/AaronDavidNewman/Smoosic)\n// Copyright (c) Aaron David Newman 2021.\n/**\n * A score modifier is anything that isn't mapped specifically to a musical object.\n * This includes score text, layout information\n * @module /smo/data/scoreModifier\n */\n\n\n\n\n/**\n * Base class for all {@link SmoScore} modifiers.\n * It is used to de/serialize the objects.\n * @category SmoObject\n */\nclass SmoScoreModifierBase {\n constructor(ctor) {\n /**\n * When rendered, keep track of the box\n *\n * @type {(SvgBox | null)}\n * @memberof SmoScoreModifierBase\n */\n this.logicalBox = null;\n this.ctor = ctor;\n this.attrs = {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_2__.getId)().toString(),\n type: ctor\n };\n }\n static deserialize(jsonObj) {\n const rv = _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor[jsonObj.ctor](jsonObj);\n return rv;\n }\n}\nconst SmoScoreInfoKeys = ['name', 'title', 'subTitle', 'composer', 'copyright'];\nconst SmoScorePreferenceBools = ['autoPlay', 'autoAdvance', 'showPiano', 'hideEmptyLines',\n 'transposingScore', 'autoScrollPlayback'];\nconst SmoScorePreferenceNumbers = ['defaultDupleDuration', 'defaultTripleDuration'];\n/**\n * Some default SMO behavior\n * @param autoPlay play a new note or chord\n * @param autoAdvance Sibelius-like behavior of advancing cursor when a letter note is placed\n * @param defaultDupleDuration in ticks, even metered measures\n * @param defaultTripleDuration in ticks, 6/8 etc.\n * @param showPiano show the piano widget in the score\n * @param hideEmptyLines Hide empty lines in full score\n * @param transposingScore Whether to show the score parts in concert key\n * @category SmoObject\n */\nclass SmoScorePreferences {\n static get defaults() {\n return {\n autoPlay: true,\n autoAdvance: true,\n defaultDupleDuration: 4096,\n defaultTripleDuration: 6144,\n autoScrollPlayback: true,\n showPiano: false,\n hideEmptyLines: false,\n transposingScore: false\n };\n }\n constructor(params) {\n this.autoPlay = true;\n this.autoAdvance = true;\n this.defaultDupleDuration = 4096;\n this.defaultTripleDuration = 6144;\n this.showPiano = false;\n this.hideEmptyLines = false;\n this.autoScrollPlayback = true;\n this.transposingScore = false;\n if (params) {\n SmoScorePreferenceBools.forEach((bb) => {\n this[bb] = params[bb];\n });\n SmoScorePreferenceNumbers.forEach((nn) => {\n this[nn] = params[nn];\n });\n // legacy, added later\n if (typeof (params.autoScrollPlayback) === 'undefined') {\n this.autoScrollPlayback = true;\n }\n }\n }\n serialize() {\n return Object.assign({}, this);\n }\n}\n/**\n * A score can have different views - one for the score itself and one for each\n * part, and each part can have its own formatting and text.\n * *Note*: I may move this to part info module.\n * @param measureFormats map of index to {@link SmoMeasureFormat} objects\n * @param partIndex the associated part, or -1 for the score\n * @category SmoObject\n */\nclass SmoFormattingManager extends SmoScoreModifierBase {\n static get forScore() {\n return -1;\n }\n static get defaults() {\n return {\n measureFormats: [new _measureModifiers__WEBPACK_IMPORTED_MODULE_1__.SmoMeasureFormat(_measureModifiers__WEBPACK_IMPORTED_MODULE_1__.SmoMeasureFormat.defaults)],\n partIndex: -1\n };\n }\n constructor(params) {\n super('SmoFormattingManager');\n this.partIndex = -1;\n if (typeof (params) === 'undefined') {\n params = {};\n }\n this.measureFormats = {};\n this.partIndex = SmoFormattingManager.forScore;\n if (typeof (params.partIndex) !== 'undefined') {\n this.partIndex = params.partIndex;\n }\n if (typeof (params.measureFormats) !== 'undefined' && params.measureFormats.length) {\n params.measureFormats.forEach((format) => {\n // 0 is default value, so fix case of first measure\n if (typeof (format.measureIndex) !== 'number') {\n format.measureIndex = 0;\n }\n this.measureFormats[format.measureIndex] = new _measureModifiers__WEBPACK_IMPORTED_MODULE_1__.SmoMeasureFormat(format);\n });\n }\n }\n /**\n * Update the measure format for the measure at the given index\n * @param format\n */\n updateMeasureFormat(format) {\n this.measureFormats[format.measureIndex] = format;\n }\n /**\n * Update the measure format based on the format of a given measure\n * @param measure\n */\n updateFormat(measure) {\n if (this.measureFormats[measure.measureNumber.measureIndex]) {\n measure.format = this.measureFormats[measure.measureNumber.measureIndex];\n }\n else {\n measure.format = new _measureModifiers__WEBPACK_IMPORTED_MODULE_1__.SmoMeasureFormat(_measureModifiers__WEBPACK_IMPORTED_MODULE_1__.SmoMeasureFormat.defaults);\n }\n }\n serialize() {\n const rv = [];\n const keys = Object.keys(this.measureFormats);\n keys.forEach((key) => {\n if (!this.measureFormats[key].isDefault) {\n rv.push(this.measureFormats[key].serialize());\n }\n });\n return rv;\n }\n}\n/**\n * web audio API defines this\n * @param otype\n * @returns\n */\nfunction IsOscillatorType(otype) {\n return ['sine', 'square', 'sawtooth', 'triangle', 'custom'].findIndex((x) => x === otype) >= 0;\n}\n/**\n * Audio playback parameters. Just fun stuff.\n * @category SmoObject\n */\nclass SmoAudioPlayerSettings extends SmoScoreModifierBase {\n static get defaults() {\n return ({\n playerType: 'sampler',\n waveform: 'sine',\n reverbEnable: true,\n reverbDelay: 0.5,\n reverbDecay: 2\n });\n }\n static get attributes() {\n return ['playerType', 'waveform', 'reverbEnable', 'reverbDelay', 'reverbDecay'];\n }\n constructor(params) {\n super('SmoAudioPlayerSettings');\n this.playerType = 'sampler';\n this.waveform = 'sine';\n this.reverbEnable = true;\n this.reverbDelay = 0.2;\n this.reverbDecay = 0.5;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMerge(SmoAudioPlayerSettings.attributes, SmoAudioPlayerSettings.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMerge(SmoAudioPlayerSettings.attributes, params, this);\n }\n serialize() {\n const params = {};\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMergeNonDefault(SmoAudioPlayerSettings.defaults, SmoAudioPlayerSettings.attributes, this, params);\n params.ctor = 'SmoAudioPlayerSettings';\n return params;\n }\n}\n/**\n * Define margins and other layout information associated with a specific page, and may\n * be different on different pages.\n * @category SmoObject\n */\nclass SmoPageLayout extends SmoScoreModifierBase {\n static get defaults() {\n return JSON.parse(JSON.stringify({\n leftMargin: 30,\n rightMargin: 30,\n topMargin: 144,\n bottomMargin: 72,\n interGap: 30,\n intraGap: 10\n }));\n }\n static get attributes() {\n return ['leftMargin', 'rightMargin', 'topMargin', 'bottomMargin', 'interGap', 'intraGap'];\n }\n constructor(params) {\n super('SmoPageLayout');\n this.leftMargin = 30;\n this.rightMargin = 30;\n this.topMargin = 40;\n this.bottomMargin = 40;\n this.interGap = 30;\n this.intraGap = 10;\n this.leftMargin = params.leftMargin;\n this.rightMargin = params.rightMargin;\n this.topMargin = params.topMargin;\n this.bottomMargin = params.bottomMargin;\n this.interGap = params.interGap;\n this.intraGap = params.intraGap;\n }\n serialize() {\n const params = {};\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMergeNonDefault(SmoPageLayout.defaults, SmoPageLayout.attributes, this, params);\n params.ctor = 'SmoPageLayout';\n return params;\n }\n}\nconst GlobalLayoutAttributesArray = ['pageWidth', 'pageHeight', 'noteSpacing', 'svgScale', 'zoomScale', 'proportionality', 'maxMeasureSystem'];\nfunction isSmoLayoutManagerParamsSer(params) {\n if (!params.ctor || params.ctor !== 'SmoLayoutManager') {\n return false;\n }\n return true;\n}\n/**\n * Storage and utilities for layout information in the score. Each\n * manager has one set of page height/width, since svg element\n * must have single length/width and viewbox.\n * Each page can have different margins.\n * @category SmoObject\n */\nclass SmoLayoutManager extends SmoScoreModifierBase {\n static get defaultLayout() {\n return {\n svgScale: 0.55,\n zoomScale: 2.0,\n noteSpacing: 1.0,\n pageWidth: 8 * 96 + 48,\n pageHeight: 11 * 96,\n proportionality: 5,\n maxMeasureSystem: 0\n };\n }\n static get defaults() {\n return {\n globalLayout: JSON.parse(JSON.stringify(SmoLayoutManager.defaultLayout)),\n pageLayouts: []\n };\n }\n static get attributes() {\n return ['pageWidth', 'pageHeight', 'noteSpacing', 'svgScale', 'zoomScale', 'maxMeasureSystem'];\n }\n // Attributes that are scaled by svgScale\n /* static get scalableAttributes(): Global {\n return ['pageWidth', 'pageHeight'];\n }*/\n static get scaledPageAttributes() {\n return ['leftMargin', 'rightMargin', 'topMargin', 'bottomMargin', 'interGap', 'intraGap'];\n }\n static get scaledGlobalAttributes() {\n return ['pageWidth', 'pageHeight'];\n }\n static areLayoutsEqual(g1, g2) {\n let rv = true;\n GlobalLayoutAttributesArray.forEach((attr) => {\n if (g1[attr] !== g2[attr]) {\n rv = false;\n }\n });\n return rv;\n }\n static isZoomChange(g1, g2) {\n let rv = true;\n GlobalLayoutAttributesArray.forEach((attr) => {\n if (g1[attr] !== g2[attr] && attr !== 'zoomScale') {\n rv = false;\n }\n });\n return rv;\n }\n /**\n * Adjust zoom width so the score takes up the whole score area\n */\n zoomToWidth(screenWidth) {\n const curWidth = this.globalLayout.pageWidth * this.globalLayout.svgScale;\n this.globalLayout.zoomScale = ((screenWidth - 350) / curWidth) * this.globalLayout.svgScale; // magic 350 for left controls....TODO standardize this\n }\n static getScaledPageLayout(globalLayout, pageLayout, pages) {\n const rv = {};\n SmoLayoutManager.scaledPageAttributes.forEach((attr) => {\n rv[attr] = pageLayout[attr] / globalLayout.svgScale;\n });\n SmoLayoutManager.scaledGlobalAttributes.forEach((attr) => {\n rv[attr] = globalLayout[attr] / globalLayout.svgScale;\n });\n // Note spacing is relative, so * it and not divide\n rv.noteSpacing = globalLayout.noteSpacing * globalLayout.svgScale;\n rv.svgScale = globalLayout.svgScale;\n rv.zoomScale = globalLayout.zoomScale;\n rv.maxMeasureSystem = globalLayout.maxMeasureSystem;\n return rv;\n }\n constructor(params) {\n super('SmoLayoutManager');\n this.pageLayouts = [];\n if (typeof (params.globalLayout.maxMeasureSystem) === 'undefined') {\n params.globalLayout.maxMeasureSystem = SmoLayoutManager.defaultLayout.maxMeasureSystem;\n }\n this.globalLayout = JSON.parse(JSON.stringify(params.globalLayout));\n if (params.pageLayouts.length) {\n params.pageLayouts.forEach((plp) => {\n const pageParams = SmoPageLayout.defaults;\n SmoPageLayout.attributes.forEach((attr) => {\n if (typeof (plp[attr]) !== 'undefined') {\n pageParams[attr] = plp[attr];\n }\n });\n this.pageLayouts.push(new SmoPageLayout(pageParams));\n });\n }\n else {\n this.pageLayouts.push(new SmoPageLayout(SmoPageLayout.defaults));\n }\n }\n trimPages(pageCount) {\n if (pageCount < this.pageLayouts.length - 1) {\n this.pageLayouts = this.pageLayouts.slice(0, pageCount + 1);\n }\n }\n getZoomScale() {\n return this.globalLayout.zoomScale;\n }\n serialize() {\n const rv = { ctor: 'SmoLayoutManager' };\n rv.pageLayouts = [];\n this.pageLayouts.forEach((pl) => {\n rv.pageLayouts.push(pl.serialize());\n });\n rv.globalLayout = JSON.parse(JSON.stringify(this.globalLayout));\n if (!isSmoLayoutManagerParamsSer(rv)) {\n throw 'bad layout manager ' + JSON.stringify(rv);\n }\n return rv;\n }\n updateGlobalLayout(params) {\n SmoLayoutManager.attributes.forEach((attr) => {\n if (typeof (params[attr]) !== 'undefined') {\n this.globalLayout[attr] = params[attr];\n }\n });\n }\n // ### addToPageLayouts\n // Make sure the next page has a layout. If not, copy settings from\n // previous page.\n addToPageLayouts(pageNum) {\n const lastLayout = this.pageLayouts[this.pageLayouts.length - 1];\n if (this.pageLayouts.length <= pageNum) {\n this.pageLayouts.push(new SmoPageLayout(lastLayout));\n }\n }\n getGlobalLayout() {\n return JSON.parse(JSON.stringify(this.globalLayout));\n }\n // Return a deep copy of the page parameters, adjusted for the global scale.\n getScaledPageLayout(pageIndex) {\n return SmoLayoutManager.getScaledPageLayout(this.globalLayout, this.pageLayouts[pageIndex], this.pageLayouts.length);\n }\n getPageLayout(pageIndex) {\n return new SmoPageLayout(this.pageLayouts[pageIndex]);\n }\n getPageLayouts() {\n const rv = [];\n this.pageLayouts.forEach((pl) => {\n rv.push(new SmoPageLayout(pl));\n });\n return rv;\n }\n updatePage(pageLayout, pageIndex) {\n if (this.pageLayouts.length > pageIndex) {\n this.pageLayouts[pageIndex] = new SmoPageLayout(pageLayout);\n }\n }\n}\nfunction isSmoSystemGroupParamsSer(params) {\n if (params.ctor === 'SmoSystemGroup') {\n return true;\n }\n return false;\n}\n/**\n * System group is the grouping of staves into a system.\n * @category SmoObject\n * */\nclass SmoSystemGroup extends SmoScoreModifierBase {\n static get connectorTypes() {\n return { brace: 0, bracket: 1, single: 2, double: 3 };\n }\n static get mapTypes() {\n return { allMeasures: 0, range: 1 };\n }\n static get attributes() {\n return ['leftConnector', 'rightConnector', 'text', 'shortText', 'justify',\n 'startSelector', 'endSelector', 'mapType'];\n }\n static get defaults() {\n return JSON.parse(JSON.stringify({\n leftConnector: SmoSystemGroup.connectorTypes.single,\n rightConnector: SmoSystemGroup.connectorTypes.single,\n mapType: SmoSystemGroup.mapTypes.allMeasures,\n justify: true,\n startSelector: _xform_selections__WEBPACK_IMPORTED_MODULE_3__.SmoSelector.default,\n endSelector: _xform_selections__WEBPACK_IMPORTED_MODULE_3__.SmoSelector.default\n }));\n }\n static isSystemGroup(modifier) {\n return modifier.ctor === 'SmoSystemGroup';\n }\n constructor(params) {\n super('SmoSystemGroup');\n this.leftConnector = SmoSystemGroup.connectorTypes.single;\n this.rightConnector = SmoSystemGroup.connectorTypes.single;\n this.mapType = SmoSystemGroup.mapTypes.allMeasures;\n this.text = '';\n this.shortText = '';\n this.justify = true;\n this.startSelector = _xform_selections__WEBPACK_IMPORTED_MODULE_3__.SmoSelector.default;\n this.endSelector = _xform_selections__WEBPACK_IMPORTED_MODULE_3__.SmoSelector.default;\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMerge(SmoSystemGroup.attributes, SmoSystemGroup.defaults, this);\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMerge(SmoSystemGroup.attributes, params, this);\n this.attrs = {\n id: (0,_common__WEBPACK_IMPORTED_MODULE_2__.getId)().toString(),\n type: 'SmoSystemGroup'\n };\n }\n stavesOverlap(group) {\n return (this.startSelector.staff >= group.startSelector.staff && this.startSelector.staff <= group.endSelector.staff) ||\n (this.endSelector.staff >= group.startSelector.staff && this.endSelector.staff <= group.endSelector.staff);\n }\n measuresOverlap(group) {\n return this.stavesOverlap(group) &&\n ((this.startSelector.measure >= group.startSelector.measure && this.endSelector.measure <= group.startSelector.measure) ||\n (this.endSelector.measure >= group.startSelector.measure && this.endSelector.measure <= group.endSelector.measure));\n }\n overlaps(group) {\n return (this.stavesOverlap(group) && this.mapType === SmoSystemGroup.mapTypes.allMeasures) ||\n (this.measuresOverlap(group) && this.mapType === SmoSystemGroup.mapTypes.range);\n }\n serialize() {\n const params = {};\n _common_serializationHelpers__WEBPACK_IMPORTED_MODULE_0__.smoSerialize.serializedMergeNonDefault(SmoSystemGroup.defaults, SmoSystemGroup.attributes, this, params);\n params.ctor = 'SmoSystemGroup';\n if (!isSmoSystemGroupParamsSer(params)) {\n throw 'bad system group ' + JSON.stringify(params);\n }\n return params;\n }\n}\nconst scoreModifierDynamicCtorInit = () => {\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoScorePreferences'] = (params) => new SmoScorePreferences(params);\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoFormattingManager'] = (params) => new SmoFormattingManager(params);\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoAudioPlayerSettings'] = (params) => new SmoAudioPlayerSettings(params);\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoPageLayout'] = (params) => new SmoPageLayout(params);\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoLayoutManager'] = (params) => new SmoLayoutManager(params);\n _common__WEBPACK_IMPORTED_MODULE_2__.SmoDynamicCtor['SmoSystemGroup'] = (params) => new SmoSystemGroup(params);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUUsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xHLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TbW8vLi9zcmMvc21vL2RhdGEvc2NvcmVNb2RpZmllcnMudHM/ZTJmZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBbU21vb3NpY10oaHR0cHM6Ly9naXRodWIuY29tL0Fhcm9uRGF2aWROZXdtYW4vU21vb3NpYylcclxuLy8gQ29weXJpZ2h0IChjKSBBYXJvbiBEYXZpZCBOZXdtYW4gMjAyMS5cclxuLyoqXHJcbiAqIEEgc2NvcmUgbW9kaWZpZXIgaXMgYW55dGhpbmcgdGhhdCBpc24ndCBtYXBwZWQgc3BlY2lmaWNhbGx5IHRvIGEgbXVzaWNhbCBvYmplY3QuXHJcbiAqIFRoaXMgaW5jbHVkZXMgc2NvcmUgdGV4dCwgbGF5b3V0IGluZm9ybWF0aW9uXHJcbiAqIEBtb2R1bGUgL3Ntby9kYXRhL3Njb3JlTW9kaWZpZXJcclxuICovXHJcbmltcG9ydCB7IHNtb1NlcmlhbGl6ZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJpYWxpemF0aW9uSGVscGVycyc7XHJcbmltcG9ydCB7IFNtb01lYXN1cmVGb3JtYXQsIFNtb01lYXN1cmVGb3JtYXRQYXJhbXNTZXIgfSBmcm9tICcuL21lYXN1cmVNb2RpZmllcnMnO1xyXG5pbXBvcnQgeyBTbW9BdHRycywgZ2V0SWQsIFNtb01vZGlmaWVyQmFzZSwgU3ZnQm94LCBcclxuICBTbW9EeW5hbWljQ3RvciB9IGZyb20gJy4vY29tbW9uJztcclxuaW1wb3J0IHsgU21vTWVhc3VyZSB9IGZyb20gJy4vbWVhc3VyZSc7XHJcbmltcG9ydCB7IFNtb1NlbGVjdG9yIH0gZnJvbSAnLi4veGZvcm0vc2VsZWN0aW9ucyc7XHJcbmltcG9ydCB7IGR5bmFtaWNDdG9ySW5pdCB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL2R5bmFtaWNJbml0JztcclxuXHJcbi8qKlxyXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwge0BsaW5rIFNtb1Njb3JlfSBtb2RpZmllcnMuIFxyXG4gKiBJdCBpcyB1c2VkIHRvIGRlL3NlcmlhbGl6ZSB0aGUgb2JqZWN0cy5cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNtb1Njb3JlTW9kaWZpZXJCYXNlIGltcGxlbWVudHMgU21vTW9kaWZpZXJCYXNlIHtcclxuICAvKipcclxuICAgKiBjb25zdHJ1Y3RvclxyXG4gICAqXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgU21vU2NvcmVNb2RpZmllckJhc2VcclxuICAgKi9cclxuICBjdG9yOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogV2hlbiByZW5kZXJlZCwga2VlcCB0cmFjayBvZiB0aGUgYm94XHJcbiAgICpcclxuICAgKiBAdHlwZSB7KFN2Z0JveCB8IG51bGwpfVxyXG4gICAqIEBtZW1iZXJvZiBTbW9TY29yZU1vZGlmaWVyQmFzZVxyXG4gICAqL1xyXG4gIGxvZ2ljYWxCb3g6IFN2Z0JveCB8IG51bGwgPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIGF0dHJpYnV0ZXMgZm9yIGlkZW50aWZpY2F0aW9uXHJcbiAgICpcclxuICAgKiBAdHlwZSB7U21vQXR0cnN9XHJcbiAgICogQG1lbWJlcm9mIFNtb1Njb3JlTW9kaWZpZXJCYXNlXHJcbiAgICovXHJcbiAgYXR0cnM6IFNtb0F0dHJzO1xyXG4gIGNvbnN0cnVjdG9yKGN0b3I6IHN0cmluZykge1xyXG4gICAgdGhpcy5jdG9yID0gY3RvcjtcclxuICAgIHRoaXMuYXR0cnMgPSB7XHJcbiAgICAgIGlkOiBnZXRJZCgpLnRvU3RyaW5nKCksXHJcbiAgICAgIHR5cGU6IGN0b3JcclxuICAgIH07XHJcbiAgfVxyXG4gIGFic3RyYWN0IHNlcmlhbGl6ZSgpOiBhbnk7XHJcbiAgc3RhdGljIGRlc2VyaWFsaXplKGpzb25PYmo6IGFueSkge1xyXG4gICAgY29uc3QgcnYgPSBTbW9EeW5hbWljQ3Rvcltqc29uT2JqLmN0b3JdKGpzb25PYmopO1xyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEZvciBnbG9iYWwvZGVmYXVsdCBmb250IHNldHRpbmdzLlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqIEBwYXJhbSBuYW1lIHRvIGRpc3Rpbmd1aXNoOiBjaG9yZCwgbHlyaWMgZXRjLlxyXG4gKiBAcGFyYW0gZmFtaWx5IGZvbnQgZmFtaWx5XHJcbiAqIEBwYXJhbSBzaXplIGluIHBvaW50c1xyXG4gKiBAcGFyYW0gY3VzdG9tIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYSBzcGVjaWZpYyB0ZXh0IGlzIG5vdCB0aGUgZGVmYXVsdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBGb250UHVycG9zZSB7XHJcbiAgLyoqXHJcbiAgICogbmFtZSBvZiB0aGUgcHVycG9zZVxyXG4gICAqIHsgRU5HUkFWSU5HOiAxLCBTQ09SRTogMiwgQ0hPUkRTOiAzLCBMWVJJQ1M6IDQgfVxyXG4gICAqL1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICAvKipcclxuICAgKiBwdXJwb3NlIGVudW1lcmF0aW9uXHJcbiAgICovXHJcbiAgcHVycG9zZTogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIGZvbnQgZmFtaWx5XHJcbiAgICovXHJcbiAgZmFtaWx5OiBzdHJpbmcsXHJcbiAgLyoqXHJcbiAgICogZGVmYXVsdCBmb250IHNpemVcclxuICAgKi9cclxuICBzaXplOiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogYSBmbGFnIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgaWYgdGhpcyBpcyB0aGUgZ2xvYmFsIGRlZmF1bHQsIG9yIGEgY3VzdG9taXphdGlvbi5cclxuICAgKiBGb3IgbHlyaWNzIGZvciBpbnN0YW5jZSwgbW9zdCBseXJpY3Mgd291bGQgdXNlIHRoZSBjdXN0b20gZm9udCwgdGhpcyB3b3VsZCBiZSB0cnVlIGlmXHJcbiAgICogaXQgd2FzIG92ZXJyaWRkZW5cclxuICAgKi9cclxuICBjdXN0b206IGJvb2xlYW5cclxufVxyXG5cclxuXHJcbi8vIEBpbnRlcm5hbFxyXG5leHBvcnQgdHlwZSBTbW9TY29yZUluZm9LZXkgPSAnbmFtZScgfCAndGl0bGUnIHwgJ3N1YlRpdGxlJyB8ICdjb21wb3NlcicgfCAnY29weXJpZ2h0JztcclxuZXhwb3J0IGNvbnN0IFNtb1Njb3JlSW5mb0tleXMgPSBbJ25hbWUnLCAndGl0bGUnLCAnc3ViVGl0bGUnLCAnY29tcG9zZXInLCAnY29weXJpZ2h0J107XHJcbi8qKlxyXG4gKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc2NvcmUgaXRzZWxmLCBsaWtlIGNvbXBvc2VyIGV0Yy5cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9TY29yZUluZm8ge1xyXG4gIC8qKlxyXG4gICAqIGRlcHJlY2F0ZWQsIG5vdyBkZWZhdWx0cyB0byB0aXRsZVxyXG4gICAqL1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICAvKipcclxuICAgKiBuYW1lIG9mIHNjb3JlXHJcbiAgICovXHJcbiAgdGl0bGU6IHN0cmluZyxcclxuICAvKipcclxuICAgKiBzdWJ0aXRsZS9vcHVzXHJcbiAgICovXHJcbiAgc3ViVGl0bGU6IHN0cmluZyxcclxuICAvKipcclxuICAgKiB3aG8gd3JvdGUgaXRcclxuICAgKi9cclxuICBjb21wb3Nlcjogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIGNvcHlyaWdodCBpbmZvcm1hdGlvblxyXG4gICAqL1xyXG4gIGNvcHlyaWdodDogc3RyaW5nLFxyXG4gIC8qKlxyXG4gICAqIGZvciB2ZXJzaW9uIHRyYWNraW5nXHJcbiAgICovXHJcbiAgdmVyc2lvbjogbnVtYmVyXHJcbn1cclxuXHJcblxyXG5leHBvcnQgdHlwZSBTbW9TY29yZVByZWZlcmVuY2VCb29sID0gJ2F1dG9QbGF5JyB8ICdhdXRvQWR2YW5jZScgfCAnc2hvd1BpYW5vJyB8ICdoaWRlRW1wdHlMaW5lcycgfCAndHJhbnNwb3NpbmdTY29yZScgfCAnYXV0b1Njcm9sbFBsYXliYWNrJztcclxuZXhwb3J0IHR5cGUgU21vU2NvcmVQcmVmZXJlbmNlTnVtYmVyID0gJ2RlZmF1bHREdXBsZUR1cmF0aW9uJyB8ICdkZWZhdWx0VHJpcGxlRHVyYXRpb24nO1xyXG5leHBvcnQgY29uc3QgU21vU2NvcmVQcmVmZXJlbmNlQm9vbHM6IFNtb1Njb3JlUHJlZmVyZW5jZUJvb2xbXSA9IFsnYXV0b1BsYXknLCAnYXV0b0FkdmFuY2UnLCAnc2hvd1BpYW5vJywgJ2hpZGVFbXB0eUxpbmVzJywgXHJcbiAgJ3RyYW5zcG9zaW5nU2NvcmUnLCAnYXV0b1Njcm9sbFBsYXliYWNrJ107XHJcbmV4cG9ydCBjb25zdCBTbW9TY29yZVByZWZlcmVuY2VOdW1iZXJzOiBTbW9TY29yZVByZWZlcmVuY2VOdW1iZXJbXSA9IFsnZGVmYXVsdER1cGxlRHVyYXRpb24nLCAnZGVmYXVsdFRyaXBsZUR1cmF0aW9uJ107XHJcbi8qKlxyXG4gKiBHbG9iYWwgc2NvcmUvcHJvZ3JhbSBiZWhhdmlvciBwcmVmZXJlbmNlcywgc2VlIGJlbG93IGZvciBwYXJhbWV0ZXJzXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21vU2NvcmVQcmVmZXJlbmNlc1BhcmFtcyB7XHJcbiAgYXV0b1BsYXk6IGJvb2xlYW47XHJcbiAgYXV0b0FkdmFuY2U6IGJvb2xlYW47XHJcbiAgYXV0b1Njcm9sbFBsYXliYWNrOiBib29sZWFuO1xyXG4gIGRlZmF1bHREdXBsZUR1cmF0aW9uOiBudW1iZXI7XHJcbiAgZGVmYXVsdFRyaXBsZUR1cmF0aW9uOiBudW1iZXI7XHJcbiAgc2hvd1BpYW5vOiBib29sZWFuO1xyXG4gIGhpZGVFbXB0eUxpbmVzOiBib29sZWFuO1xyXG4gIHRyYW5zcG9zaW5nU2NvcmU6IGJvb2xlYW47XHJcbn1cclxuLyoqXHJcbiAqIFNvbWUgZGVmYXVsdCBTTU8gYmVoYXZpb3JcclxuICogQHBhcmFtIGF1dG9QbGF5IHBsYXkgYSBuZXcgbm90ZSBvciBjaG9yZFxyXG4gKiBAcGFyYW0gYXV0b0FkdmFuY2UgU2liZWxpdXMtbGlrZSBiZWhhdmlvciBvZiBhZHZhbmNpbmcgY3Vyc29yIHdoZW4gYSBsZXR0ZXIgbm90ZSBpcyBwbGFjZWRcclxuICogQHBhcmFtIGRlZmF1bHREdXBsZUR1cmF0aW9uIGluIHRpY2tzLCBldmVuIG1ldGVyZWQgbWVhc3VyZXNcclxuICogQHBhcmFtIGRlZmF1bHRUcmlwbGVEdXJhdGlvbiBpbiB0aWNrcywgNi84IGV0Yy5cclxuICogQHBhcmFtIHNob3dQaWFubyBzaG93IHRoZSBwaWFubyB3aWRnZXQgaW4gdGhlIHNjb3JlXHJcbiAqIEBwYXJhbSBoaWRlRW1wdHlMaW5lcyBIaWRlIGVtcHR5IGxpbmVzIGluIGZ1bGwgc2NvcmVcclxuICogQHBhcmFtIHRyYW5zcG9zaW5nU2NvcmUgV2hldGhlciB0byBzaG93IHRoZSBzY29yZSBwYXJ0cyBpbiBjb25jZXJ0IGtleVxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU21vU2NvcmVQcmVmZXJlbmNlcyB7XHJcbiAgYXV0b1BsYXk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGF1dG9BZHZhbmNlOiBib29sZWFuID0gdHJ1ZTtcclxuICBkZWZhdWx0RHVwbGVEdXJhdGlvbjogbnVtYmVyID0gNDA5NjtcclxuICBkZWZhdWx0VHJpcGxlRHVyYXRpb246IG51bWJlciA9IDYxNDQ7XHJcbiAgc2hvd1BpYW5vOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGlkZUVtcHR5TGluZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhdXRvU2Nyb2xsUGxheWJhY2s6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHRyYW5zcG9zaW5nU2NvcmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb1Njb3JlUHJlZmVyZW5jZXNQYXJhbXMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYXV0b1BsYXk6IHRydWUsXHJcbiAgICAgIGF1dG9BZHZhbmNlOiB0cnVlLFxyXG4gICAgICBkZWZhdWx0RHVwbGVEdXJhdGlvbjogNDA5NixcclxuICAgICAgZGVmYXVsdFRyaXBsZUR1cmF0aW9uOiA2MTQ0LFxyXG4gICAgICBhdXRvU2Nyb2xsUGxheWJhY2s6IHRydWUsXHJcbiAgICAgIHNob3dQaWFubzogZmFsc2UsXHJcbiAgICAgIGhpZGVFbXB0eUxpbmVzOiBmYWxzZSxcclxuICAgICAgdHJhbnNwb3NpbmdTY29yZTogZmFsc2VcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogU21vU2NvcmVQcmVmZXJlbmNlc1BhcmFtcykge1xyXG4gICAgaWYgKHBhcmFtcykgeyAgICAgIFxyXG4gICAgICBTbW9TY29yZVByZWZlcmVuY2VCb29scy5mb3JFYWNoKChiYikgPT4ge1xyXG4gICAgICAgIHRoaXNbYmJdID0gcGFyYW1zW2JiXTtcclxuICAgICAgfSk7XHJcbiAgICAgIFNtb1Njb3JlUHJlZmVyZW5jZU51bWJlcnMuZm9yRWFjaCgobm4pID0+IHtcclxuICAgICAgICB0aGlzW25uXSA9IHBhcmFtc1tubl07XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBsZWdhY3ksIGFkZGVkIGxhdGVyXHJcbiAgICAgIGlmICh0eXBlb2YocGFyYW1zLmF1dG9TY3JvbGxQbGF5YmFjaykgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgdGhpcy5hdXRvU2Nyb2xsUGxheWJhY2sgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlcmlhbGl6ZSgpOiBTbW9TY29yZVByZWZlcmVuY2VzUGFyYW1zIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnRoaXNcclxuICAgIH1cclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIG5vbi1tdXNpY2FsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzY29yZVxyXG4gKiBAY2F0ZWdvcnkgc2VyaWFsaXphdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTY29yZU1ldGFkYXRhU2VyIHtcclxuICBmb250czogRm9udFB1cnBvc2VbXSxcclxuICBwcmVmZXJlbmNlczogU21vU2NvcmVQcmVmZXJlbmNlc1BhcmFtcyxcclxuICByZW51bWJlcmluZ01hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcclxuICBzY29yZUluZm86IFNtb1Njb3JlSW5mb1xyXG59XHJcblxyXG4vKipcclxuICogTWFwIG9mIG1lYXN1cmUgZm9ybWF0dGluZyB0byBtZWFzdXJlIElEcy4gIFdlIG9ubHkgc2F2ZSBub24tZGVmYXVsdCBmb3JtYXRzXHJcbiAqIEBjYXRlZ29yeSBTbW9PYmplY3RcclxuICogQHBhcmFtIG1lYXN1cmVGb3JtYXRzIFxyXG4gKiBAcGFyYW0gcGFydEluZGV4IFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9Gb3JtYXR0aW5nTWFuYWdlclBhcmFtcyB7XHJcbiAgLyoqXHJcbiAgICogbWFwIG9mIGluZGV4IHRvIHtAbGluayBTbW9NZWFzdXJlRm9ybWF0fSBvYmplY3RzXHJcbiAgICovXHJcbiAgbWVhc3VyZUZvcm1hdHM/OiBTbW9NZWFzdXJlRm9ybWF0W10sXHJcbiAgLyoqXHJcbiAgICogdGhlIGFzc29jaWF0ZWQgcGFydCwgb3IgLTEgZm9yIHRoZSBzY29yZVxyXG4gICAqL1xyXG4gIHBhcnRJbmRleD86IG51bWJlclxyXG59XHJcbi8qKlxyXG4gKiBBIHNjb3JlIGNhbiBoYXZlIGRpZmZlcmVudCB2aWV3cyAtIG9uZSBmb3IgdGhlIHNjb3JlIGl0c2VsZiBhbmQgb25lIGZvciBlYWNoXHJcbiAqIHBhcnQsIGFuZCBlYWNoIHBhcnQgY2FuIGhhdmUgaXRzIG93biBmb3JtYXR0aW5nIGFuZCB0ZXh0LlxyXG4gKiAqTm90ZSo6IEkgbWF5IG1vdmUgdGhpcyB0byBwYXJ0IGluZm8gbW9kdWxlLlxyXG4gKiBAcGFyYW0gbWVhc3VyZUZvcm1hdHMgbWFwIG9mIGluZGV4IHRvIHtAbGluayBTbW9NZWFzdXJlRm9ybWF0fSBvYmplY3RzXHJcbiAqIEBwYXJhbSBwYXJ0SW5kZXggdGhlIGFzc29jaWF0ZWQgcGFydCwgb3IgLTEgZm9yIHRoZSBzY29yZVxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU21vRm9ybWF0dGluZ01hbmFnZXIgZXh0ZW5kcyBTbW9TY29yZU1vZGlmaWVyQmFzZSB7XHJcbiAgbWVhc3VyZUZvcm1hdHM6IFJlY29yZDxudW1iZXIsIFNtb01lYXN1cmVGb3JtYXQ+O1xyXG4gIHBhcnRJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgc3RhdGljIGdldCBmb3JTY29yZSgpIHtcclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBkZWZhdWx0cygpOiBTbW9Gb3JtYXR0aW5nTWFuYWdlclBhcmFtcyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtZWFzdXJlRm9ybWF0czogW25ldyBTbW9NZWFzdXJlRm9ybWF0KFNtb01lYXN1cmVGb3JtYXQuZGVmYXVsdHMpXSxcclxuICAgICAgcGFydEluZGV4OiAtMVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogU21vRm9ybWF0dGluZ01hbmFnZXJQYXJhbXMpIHtcclxuICAgIHN1cGVyKCdTbW9Gb3JtYXR0aW5nTWFuYWdlcicpO1xyXG4gICAgaWYgKHR5cGVvZiAocGFyYW1zKSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgcGFyYW1zID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLm1lYXN1cmVGb3JtYXRzID0ge307XHJcbiAgICB0aGlzLnBhcnRJbmRleCA9IFNtb0Zvcm1hdHRpbmdNYW5hZ2VyLmZvclNjb3JlO1xyXG4gICAgaWYgKHR5cGVvZiAocGFyYW1zLnBhcnRJbmRleCkgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHRoaXMucGFydEluZGV4ID0gcGFyYW1zLnBhcnRJbmRleDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgKHBhcmFtcy5tZWFzdXJlRm9ybWF0cykgIT09ICd1bmRlZmluZWQnICYmIHBhcmFtcy5tZWFzdXJlRm9ybWF0cy5sZW5ndGgpIHtcclxuICAgICAgcGFyYW1zLm1lYXN1cmVGb3JtYXRzLmZvckVhY2goKGZvcm1hdCkgPT4ge1xyXG4gICAgICAgIC8vIDAgaXMgZGVmYXVsdCB2YWx1ZSwgc28gZml4IGNhc2Ugb2YgZmlyc3QgbWVhc3VyZVxyXG4gICAgICAgIGlmICh0eXBlb2YoZm9ybWF0Lm1lYXN1cmVJbmRleCkgIT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICBmb3JtYXQubWVhc3VyZUluZGV4ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tZWFzdXJlRm9ybWF0c1tmb3JtYXQubWVhc3VyZUluZGV4XSA9IG5ldyBTbW9NZWFzdXJlRm9ybWF0KGZvcm1hdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIG1lYXN1cmUgZm9ybWF0IGZvciB0aGUgbWVhc3VyZSBhdCB0aGUgZ2l2ZW4gaW5kZXhcclxuICAgKiBAcGFyYW0gZm9ybWF0IFxyXG4gICAqL1xyXG4gIHVwZGF0ZU1lYXN1cmVGb3JtYXQoZm9ybWF0OiBTbW9NZWFzdXJlRm9ybWF0KSB7XHJcbiAgICB0aGlzLm1lYXN1cmVGb3JtYXRzW2Zvcm1hdC5tZWFzdXJlSW5kZXhdID0gZm9ybWF0O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIG1lYXN1cmUgZm9ybWF0IGJhc2VkIG9uIHRoZSBmb3JtYXQgb2YgYSBnaXZlbiBtZWFzdXJlXHJcbiAgICogQHBhcmFtIG1lYXN1cmUgXHJcbiAgICovXHJcbiAgdXBkYXRlRm9ybWF0KG1lYXN1cmU6IFNtb01lYXN1cmUpIHtcclxuICAgIGlmICh0aGlzLm1lYXN1cmVGb3JtYXRzW21lYXN1cmUubWVhc3VyZU51bWJlci5tZWFzdXJlSW5kZXhdKSB7XHJcbiAgICAgIG1lYXN1cmUuZm9ybWF0ID0gdGhpcy5tZWFzdXJlRm9ybWF0c1ttZWFzdXJlLm1lYXN1cmVOdW1iZXIubWVhc3VyZUluZGV4XTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1lYXN1cmUuZm9ybWF0ID0gbmV3IFNtb01lYXN1cmVGb3JtYXQoU21vTWVhc3VyZUZvcm1hdC5kZWZhdWx0cyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlcmlhbGl6ZSgpOiBTbW9NZWFzdXJlRm9ybWF0UGFyYW1zU2VyW10ge1xyXG4gICAgY29uc3QgcnY6IFNtb01lYXN1cmVGb3JtYXRQYXJhbXNTZXJbXSA9IFtdO1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMubWVhc3VyZUZvcm1hdHMpO1xyXG4gICAga2V5cy5mb3JFYWNoKChrZXk6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMubWVhc3VyZUZvcm1hdHNba2V5XS5pc0RlZmF1bHQpIHtcclxuICAgICAgICBydi5wdXNoKHRoaXMubWVhc3VyZUZvcm1hdHNba2V5XS5zZXJpYWxpemUoKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU21vQXVkaW9QbGF5ZXJUeXBlID0gJ3NhbXBsZXInIHwgJ3N5bnRoZXNpemVyJztcclxuLyoqXHJcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIGF1ZGlvIHBsYXllclxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0F1ZGlvUGxheWVyUGFyYW1ldGVycyB7XHJcbiAgcGxheWVyVHlwZT86IFNtb0F1ZGlvUGxheWVyVHlwZSxcclxuICB3YXZlZm9ybT86IE9zY2lsbGF0b3JUeXBlLFxyXG4gIHJldmVyYkVuYWJsZT86IGJvb2xlYW4sXHJcbiAgcmV2ZXJiRGVsYXk/OiBudW1iZXIsXHJcbiAgcmV2ZXJiRGVjYXk/OiBudW1iZXJcclxufVxyXG5cclxuLyoqXHJcbiAqIHdlYiBhdWRpbyBBUEkgZGVmaW5lcyB0aGlzXHJcbiAqIEBwYXJhbSBvdHlwZSBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gSXNPc2NpbGxhdG9yVHlwZShvdHlwZTogT3NjaWxsYXRvclR5cGUgfCBzdHJpbmcpOiBvdHlwZSBpcyBPc2NpbGxhdG9yVHlwZSB7XHJcbiAgcmV0dXJuIFsnc2luZScsICdzcXVhcmUnLCAnc2F3dG9vdGgnLCAndHJpYW5nbGUnLCAnY3VzdG9tJ10uZmluZEluZGV4KCh4KSA9PiB4ID09PSBvdHlwZSkgPj0gMDtcclxufVxyXG4vKipcclxuICogQXVkaW8gcGxheWJhY2sgcGFyYW1ldGVycy4gIEp1c3QgZnVuIHN0dWZmLlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU21vQXVkaW9QbGF5ZXJTZXR0aW5ncyBleHRlbmRzIFNtb1Njb3JlTW9kaWZpZXJCYXNlIHtcclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb0F1ZGlvUGxheWVyUGFyYW1ldGVycyB7XHJcbiAgICByZXR1cm4gKHtcclxuICAgICAgcGxheWVyVHlwZTogJ3NhbXBsZXInLFxyXG4gICAgICB3YXZlZm9ybTogJ3NpbmUnLFxyXG4gICAgICByZXZlcmJFbmFibGU6IHRydWUsXHJcbiAgICAgIHJldmVyYkRlbGF5OiAwLjUsXHJcbiAgICAgIHJldmVyYkRlY2F5OiAyXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBhdHRyaWJ1dGVzKCkge1xyXG4gICAgcmV0dXJuIFsncGxheWVyVHlwZScsICd3YXZlZm9ybScsICdyZXZlcmJFbmFibGUnLCAncmV2ZXJiRGVsYXknLCAncmV2ZXJiRGVjYXknXTtcclxuICB9XHJcblxyXG4gIHBsYXllclR5cGU6IFNtb0F1ZGlvUGxheWVyVHlwZSA9ICdzYW1wbGVyJztcclxuICB3YXZlZm9ybTogT3NjaWxsYXRvclR5cGUgPSAnc2luZSc7XHJcbiAgcmV2ZXJiRW5hYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICByZXZlcmJEZWxheTogbnVtYmVyID0gMC4yO1xyXG4gIHJldmVyYkRlY2F5OiBudW1iZXIgPSAwLjU7XHJcbiAgY29uc3RydWN0b3IocGFyYW1zOiBTbW9BdWRpb1BsYXllclBhcmFtZXRlcnMpIHtcclxuICAgIHN1cGVyKCdTbW9BdWRpb1BsYXllclNldHRpbmdzJyk7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb0F1ZGlvUGxheWVyU2V0dGluZ3MuYXR0cmlidXRlcywgU21vQXVkaW9QbGF5ZXJTZXR0aW5ncy5kZWZhdWx0cywgdGhpcyk7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb0F1ZGlvUGxheWVyU2V0dGluZ3MuYXR0cmlidXRlcywgcGFyYW1zLCB0aGlzKTtcclxuICB9XHJcbiAgc2VyaWFsaXplKCk6IGFueSB7XHJcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZU5vbkRlZmF1bHQoU21vQXVkaW9QbGF5ZXJTZXR0aW5ncy5kZWZhdWx0cywgU21vQXVkaW9QbGF5ZXJTZXR0aW5ncy5hdHRyaWJ1dGVzLCB0aGlzLCBwYXJhbXMpO1xyXG4gICAgcGFyYW1zLmN0b3IgPSAnU21vQXVkaW9QbGF5ZXJTZXR0aW5ncyc7XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCB0eXBlIFNjYWxlZFBhZ2VBdHRyaWJ1dGVzID0gJ2xlZnRNYXJnaW4nIHwgJ3JpZ2h0TWFyZ2luJyB8ICd0b3BNYXJnaW4nIHwgJ2JvdHRvbU1hcmdpbicgfCAnaW50ZXJHYXAnIHwgJ2ludHJhR2FwJztcclxuLyoqXHJcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHtAbGluayBTbW9QYWdlTGF5b3V0fSwgcGFydCBvZiB7QGxpbmsgU21vTGF5b3V0TWFuYWdlcn1cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9QYWdlTGF5b3V0UGFyYW1zIHtcclxuICBsZWZ0TWFyZ2luOiBudW1iZXIsXHJcbiAgcmlnaHRNYXJnaW46IG51bWJlcixcclxuICB0b3BNYXJnaW46IG51bWJlcixcclxuICBib3R0b21NYXJnaW46IG51bWJlcixcclxuICBpbnRlckdhcDogbnVtYmVyLFxyXG4gIGludHJhR2FwOiBudW1iZXJcclxufVxyXG5cclxuLyoqXHJcbiAqIERlZmluZSBtYXJnaW5zIGFuZCBvdGhlciBsYXlvdXQgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgcGFnZSwgYW5kIG1heVxyXG4gKiBiZSBkaWZmZXJlbnQgb24gZGlmZmVyZW50IHBhZ2VzLlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU21vUGFnZUxheW91dCBleHRlbmRzIFNtb1Njb3JlTW9kaWZpZXJCYXNlIHtcclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb1BhZ2VMYXlvdXRQYXJhbXMge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBsZWZ0TWFyZ2luOiAzMCxcclxuICAgICAgcmlnaHRNYXJnaW46IDMwLFxyXG4gICAgICB0b3BNYXJnaW46IDE0NCxcclxuICAgICAgYm90dG9tTWFyZ2luOiA3MixcclxuICAgICAgaW50ZXJHYXA6IDMwLFxyXG4gICAgICBpbnRyYUdhcDogMTBcclxuICAgIH0pKTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBhdHRyaWJ1dGVzKCk6IFNjYWxlZFBhZ2VBdHRyaWJ1dGVzW10ge1xyXG4gICAgcmV0dXJuIFsnbGVmdE1hcmdpbicsICdyaWdodE1hcmdpbicsICd0b3BNYXJnaW4nLCAnYm90dG9tTWFyZ2luJywgJ2ludGVyR2FwJywgJ2ludHJhR2FwJ107XHJcbiAgfVxyXG4gIGxlZnRNYXJnaW46IG51bWJlciA9IDMwO1xyXG4gIHJpZ2h0TWFyZ2luOiBudW1iZXIgPSAzMDtcclxuICB0b3BNYXJnaW46IG51bWJlciA9IDQwO1xyXG4gIGJvdHRvbU1hcmdpbjogbnVtYmVyID0gNDA7XHJcbiAgaW50ZXJHYXA6IG51bWJlciA9IDMwO1xyXG4gIGludHJhR2FwOiBudW1iZXIgPSAxMDtcclxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IFNtb1BhZ2VMYXlvdXRQYXJhbXMpIHtcclxuICAgIHN1cGVyKCdTbW9QYWdlTGF5b3V0Jyk7XHJcbiAgICB0aGlzLmxlZnRNYXJnaW4gPSBwYXJhbXMubGVmdE1hcmdpbjtcclxuICAgIHRoaXMucmlnaHRNYXJnaW4gPSBwYXJhbXMucmlnaHRNYXJnaW47XHJcbiAgICB0aGlzLnRvcE1hcmdpbiA9IHBhcmFtcy50b3BNYXJnaW47XHJcbiAgICB0aGlzLmJvdHRvbU1hcmdpbiA9IHBhcmFtcy5ib3R0b21NYXJnaW47XHJcbiAgICB0aGlzLmludGVyR2FwID0gcGFyYW1zLmludGVyR2FwO1xyXG4gICAgdGhpcy5pbnRyYUdhcCA9IHBhcmFtcy5pbnRyYUdhcDtcclxuICB9XHJcbiAgc2VyaWFsaXplKCk6IGFueSB7XHJcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZU5vbkRlZmF1bHQoU21vUGFnZUxheW91dC5kZWZhdWx0cywgU21vUGFnZUxheW91dC5hdHRyaWJ1dGVzLCB0aGlzLCBwYXJhbXMpO1xyXG4gICAgcGFyYW1zLmN0b3IgPSAnU21vUGFnZUxheW91dCc7XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU2NhbGVkR2xvYmFsQXR0cmlidXRlcyA9ICdwYWdlV2lkdGgnIHwgJ3BhZ2VIZWlnaHQnO1xyXG5leHBvcnQgdHlwZSBHbG9iYWxMYXlvdXRBdHRyaWJ1dGVzID0gJ3BhZ2VXaWR0aCcgfCAncGFnZUhlaWdodCcgfCAnbm90ZVNwYWNpbmcnIHwgJ3N2Z1NjYWxlJyB8ICd6b29tU2NhbGUnIHwgJ3Byb3BvcnRpb25hbGl0eScgfCAnbWF4TWVhc3VyZVN5c3RlbSc7XHJcbmV4cG9ydCBjb25zdCBHbG9iYWxMYXlvdXRBdHRyaWJ1dGVzQXJyYXk6IEdsb2JhbExheW91dEF0dHJpYnV0ZXNbXSAgPSBbJ3BhZ2VXaWR0aCcsICdwYWdlSGVpZ2h0JywgJ25vdGVTcGFjaW5nJywgJ3N2Z1NjYWxlJywgJ3pvb21TY2FsZScsICdwcm9wb3J0aW9uYWxpdHknLCAnbWF4TWVhc3VyZVN5c3RlbSddO1xyXG4vKipcclxuICogR2xvYmFsIGxheW91dCBhcmUgcGFyYW1ldGVycyB0aGF0IGRldGVybWluZSB0aGUgbGF5b3V0IG9mIHRoZSB3aG9sZSBzY29yZSwgYmVjYXVzZSB0aGV5IGFmZmVjdCB0aGUgY29udGFpbmluZyBzdmcgZWxlbWVudFxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtb0dsb2JhbExheW91dCB7XHJcbiAgc3ZnU2NhbGU6IG51bWJlcjtcclxuICB6b29tU2NhbGU6IG51bWJlcjtcclxuICBub3RlU3BhY2luZzogbnVtYmVyO1xyXG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xyXG4gIHBhZ2VIZWlnaHQ6IG51bWJlcjtcclxuICBwcm9wb3J0aW9uYWxpdHk6IG51bWJlcixcclxuICBtYXhNZWFzdXJlU3lzdGVtOiBudW1iZXJcclxufVxyXG5cclxuLyoqXHJcbiAqIFVzZWQgdG8gY3JlYXRlIHtAbGluayBTbW9MYXlvdXRNYW5hZ2VyUGFyYW1zfVxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNjYWxlZFBhZ2VMYXlvdXQge1xyXG4gIHN2Z1NjYWxlOiBudW1iZXI7XHJcbiAgem9vbVNjYWxlOiBudW1iZXI7XHJcbiAgbm90ZVNwYWNpbmc6IG51bWJlcjtcclxuICBwYWdlV2lkdGg6IG51bWJlcjtcclxuICBwYWdlSGVpZ2h0OiBudW1iZXI7XHJcbiAgbGVmdE1hcmdpbjogbnVtYmVyO1xyXG4gIHJpZ2h0TWFyZ2luOiBudW1iZXI7XHJcbiAgdG9wTWFyZ2luOiBudW1iZXI7XHJcbiAgYm90dG9tTWFyZ2luOiBudW1iZXI7XHJcbiAgaW50ZXJHYXA6IG51bWJlcjtcclxuICBpbnRyYUdhcDogbnVtYmVyO1xyXG4gIHBhZ2VzOiBudW1iZXI7XHJcbiAgbWF4TWVhc3VyZVN5c3RlbTogbnVtYmVyO1xyXG59XHJcbi8qKlxyXG4gKiBDb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGZvciB7QGxpbmsgU21vTGF5b3V0TWFuYWdlcn1cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9MYXlvdXRNYW5hZ2VyUGFyYW1zIHtcclxuICAvKipcclxuICAgKiBnbG9iYWwgc3ZnIHNldHRpbmdzIGZvciB6b29tLCBwYWdlIHdpZHRoL2hlaWdodFxyXG4gICAqL1xyXG4gIGdsb2JhbExheW91dDogU21vR2xvYmFsTGF5b3V0LFxyXG4gIC8qKlxyXG4gICAqIHBhZ2UgbWFyZ2lucyBmb3IgZWFjaCBwYWdlXHJcbiAgICovXHJcbiAgcGFnZUxheW91dHM6IFNtb1BhZ2VMYXlvdXRbXVxyXG59XHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgc2VyaWFsaXphdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9MYXlvdXRNYW5hZ2VyUGFyYW1zU2VyIHtcclxuICAvKipcclxuICAgKiBjb25zdHJ1Y3RvclxyXG4gICAqL1xyXG4gIGN0b3I6IHN0cmluZzsgXHJcbiAgLyoqXHJcbiAgICogZ2xvYmFsIHN2ZyBzZXR0aW5ncyBmb3Igem9vbSwgcGFnZSB3aWR0aC9oZWlnaHRcclxuICAgKi9cclxuICBnbG9iYWxMYXlvdXQ6IFNtb0dsb2JhbExheW91dCxcclxuICAvKipcclxuICAgKiBwYWdlIG1hcmdpbnMgZm9yIGVhY2ggcGFnZVxyXG4gICAqL1xyXG4gIHBhZ2VMYXlvdXRzOiBTbW9QYWdlTGF5b3V0UGFyYW1zW11cclxufVxyXG5mdW5jdGlvbiBpc1Ntb0xheW91dE1hbmFnZXJQYXJhbXNTZXIocGFyYW1zOiBQYXJ0aWFsPFNtb0xheW91dE1hbmFnZXJQYXJhbXNTZXI+KTogcGFyYW1zIGlzIFNtb0xheW91dE1hbmFnZXJQYXJhbXNTZXIge1xyXG4gIGlmICghcGFyYW1zLmN0b3IgfHwgcGFyYW1zLmN0b3IgIT09ICdTbW9MYXlvdXRNYW5hZ2VyJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogU3RvcmFnZSBhbmQgdXRpbGl0aWVzIGZvciBsYXlvdXQgaW5mb3JtYXRpb24gaW4gdGhlIHNjb3JlLiAgRWFjaFxyXG4gKiBtYW5hZ2VyIGhhcyBvbmUgc2V0IG9mIHBhZ2UgaGVpZ2h0L3dpZHRoLCBzaW5jZSBzdmcgZWxlbWVudFxyXG4gKiBtdXN0IGhhdmUgc2luZ2xlIGxlbmd0aC93aWR0aCBhbmQgdmlld2JveC5cclxuICogRWFjaCBwYWdlIGNhbiBoYXZlIGRpZmZlcmVudCBtYXJnaW5zLlxyXG4gKiBAY2F0ZWdvcnkgU21vT2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU21vTGF5b3V0TWFuYWdlciBleHRlbmRzIFNtb1Njb3JlTW9kaWZpZXJCYXNlIHtcclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRMYXlvdXQoKTogU21vR2xvYmFsTGF5b3V0IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHN2Z1NjYWxlOiAwLjU1LFxyXG4gICAgICB6b29tU2NhbGU6IDIuMCxcclxuICAgICAgbm90ZVNwYWNpbmc6IDEuMCxcclxuICAgICAgcGFnZVdpZHRoOiA4ICogOTYgKyA0OCxcclxuICAgICAgcGFnZUhlaWdodDogMTEgKiA5NixcclxuICAgICAgcHJvcG9ydGlvbmFsaXR5OiA1LFxyXG4gICAgICBtYXhNZWFzdXJlU3lzdGVtOiAwXHJcbiAgICB9O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb0xheW91dE1hbmFnZXJQYXJhbXMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZ2xvYmFsTGF5b3V0OiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KFNtb0xheW91dE1hbmFnZXIuZGVmYXVsdExheW91dCkpLFxyXG4gICAgICBwYWdlTGF5b3V0czogW11cclxuICAgIH07XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgYXR0cmlidXRlcygpOiBHbG9iYWxMYXlvdXRBdHRyaWJ1dGVzW10ge1xyXG4gICAgcmV0dXJuIFsncGFnZVdpZHRoJywgJ3BhZ2VIZWlnaHQnLCAnbm90ZVNwYWNpbmcnLCAnc3ZnU2NhbGUnLCAnem9vbVNjYWxlJywgJ21heE1lYXN1cmVTeXN0ZW0nXTtcclxuICB9XHJcbiAgLy8gQXR0cmlidXRlcyB0aGF0IGFyZSBzY2FsZWQgYnkgc3ZnU2NhbGVcclxuICAvKiBzdGF0aWMgZ2V0IHNjYWxhYmxlQXR0cmlidXRlcygpOiBHbG9iYWwge1xyXG4gICAgcmV0dXJuIFsncGFnZVdpZHRoJywgJ3BhZ2VIZWlnaHQnXTtcclxuICB9Ki9cclxuICBzdGF0aWMgZ2V0IHNjYWxlZFBhZ2VBdHRyaWJ1dGVzKCk6IFNjYWxlZFBhZ2VBdHRyaWJ1dGVzW10ge1xyXG4gICAgcmV0dXJuIFsnbGVmdE1hcmdpbicsICdyaWdodE1hcmdpbicsICd0b3BNYXJnaW4nLCAnYm90dG9tTWFyZ2luJywgJ2ludGVyR2FwJywgJ2ludHJhR2FwJ107XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgc2NhbGVkR2xvYmFsQXR0cmlidXRlcygpOiBTY2FsZWRHbG9iYWxBdHRyaWJ1dGVzW10ge1xyXG4gICAgcmV0dXJuIFsncGFnZVdpZHRoJywgJ3BhZ2VIZWlnaHQnXTtcclxuICB9XHJcbiAgc3RhdGljIGFyZUxheW91dHNFcXVhbChnMTogU21vR2xvYmFsTGF5b3V0LCBnMjogU21vR2xvYmFsTGF5b3V0KSB7XHJcbiAgICBsZXQgcnYgPSB0cnVlO1xyXG4gICAgR2xvYmFsTGF5b3V0QXR0cmlidXRlc0FycmF5LmZvckVhY2goKGF0dHIpID0+IHtcclxuICAgICAgaWYgKGcxW2F0dHJdICE9PSBnMlthdHRyXSkge1xyXG4gICAgICAgIHJ2ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuICBzdGF0aWMgaXNab29tQ2hhbmdlKGcxOiBTbW9HbG9iYWxMYXlvdXQsIGcyOiBTbW9HbG9iYWxMYXlvdXQpIHtcclxuICAgIGxldCBydiA9IHRydWU7XHJcbiAgICBHbG9iYWxMYXlvdXRBdHRyaWJ1dGVzQXJyYXkuZm9yRWFjaCgoYXR0cikgPT4ge1xyXG4gICAgICBpZiAoZzFbYXR0cl0gIT09IGcyW2F0dHJdICYmIGF0dHIgIT09ICd6b29tU2NhbGUnKSB7XHJcbiAgICAgICAgcnYgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcnY7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEFkanVzdCB6b29tIHdpZHRoIHNvIHRoZSBzY29yZSB0YWtlcyB1cCB0aGUgd2hvbGUgc2NvcmUgYXJlYVxyXG4gICAqL1xyXG4gIHpvb21Ub1dpZHRoKHNjcmVlbldpZHRoOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGN1cldpZHRoID0gdGhpcy5nbG9iYWxMYXlvdXQucGFnZVdpZHRoICogdGhpcy5nbG9iYWxMYXlvdXQuc3ZnU2NhbGU7XHJcbiAgICB0aGlzLmdsb2JhbExheW91dC56b29tU2NhbGUgPSAoKHNjcmVlbldpZHRoICAtIDM1MCkgLyBjdXJXaWR0aCkgKiB0aGlzLmdsb2JhbExheW91dC5zdmdTY2FsZTsgLy8gbWFnaWMgMzUwIGZvciBsZWZ0IGNvbnRyb2xzLi4uLlRPRE8gc3RhbmRhcmRpemUgdGhpc1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0U2NhbGVkUGFnZUxheW91dChnbG9iYWxMYXlvdXQ6IFNtb0dsb2JhbExheW91dCwgcGFnZUxheW91dDogU21vUGFnZUxheW91dCwgcGFnZXM6IG51bWJlcik6IFNjYWxlZFBhZ2VMYXlvdXQge1xyXG4gICAgY29uc3QgcnY6IFBhcnRpYWw8U2NhbGVkUGFnZUxheW91dD4gPSB7fTtcclxuICAgIFNtb0xheW91dE1hbmFnZXIuc2NhbGVkUGFnZUF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cjogU2NhbGVkUGFnZUF0dHJpYnV0ZXMpID0+IHtcclxuICAgICAgcnZbYXR0cl0gPSBwYWdlTGF5b3V0W2F0dHJdIC8gZ2xvYmFsTGF5b3V0LnN2Z1NjYWxlO1xyXG4gICAgfSk7XHJcbiAgICBTbW9MYXlvdXRNYW5hZ2VyLnNjYWxlZEdsb2JhbEF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cjogU2NhbGVkR2xvYmFsQXR0cmlidXRlcykgPT4ge1xyXG4gICAgICBydlthdHRyXSA9IGdsb2JhbExheW91dFthdHRyXSAvIGdsb2JhbExheW91dC5zdmdTY2FsZTtcclxuICAgIH0pO1xyXG4gICAgLy8gTm90ZSBzcGFjaW5nIGlzIHJlbGF0aXZlLCBzbyAqIGl0IGFuZCBub3QgZGl2aWRlXHJcbiAgICBydi5ub3RlU3BhY2luZyA9IGdsb2JhbExheW91dC5ub3RlU3BhY2luZyAqIGdsb2JhbExheW91dC5zdmdTY2FsZTtcclxuICAgIHJ2LnN2Z1NjYWxlID0gZ2xvYmFsTGF5b3V0LnN2Z1NjYWxlO1xyXG4gICAgcnYuem9vbVNjYWxlID0gZ2xvYmFsTGF5b3V0Lnpvb21TY2FsZTtcclxuICAgIHJ2Lm1heE1lYXN1cmVTeXN0ZW0gPSBnbG9iYWxMYXlvdXQubWF4TWVhc3VyZVN5c3RlbTtcclxuICAgIFxyXG4gICAgcmV0dXJuIHJ2IGFzIFNjYWxlZFBhZ2VMYXlvdXQ7XHJcbiAgfVxyXG4gIGdsb2JhbExheW91dDogU21vR2xvYmFsTGF5b3V0O1xyXG4gIHBhZ2VMYXlvdXRzOiBTbW9QYWdlTGF5b3V0W10gPSBbXTtcclxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IFNtb0xheW91dE1hbmFnZXJQYXJhbXMpIHtcclxuICAgIHN1cGVyKCdTbW9MYXlvdXRNYW5hZ2VyJyk7XHJcbiAgICBpZiAodHlwZW9mKHBhcmFtcy5nbG9iYWxMYXlvdXQubWF4TWVhc3VyZVN5c3RlbSkgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHBhcmFtcy5nbG9iYWxMYXlvdXQubWF4TWVhc3VyZVN5c3RlbSA9IFNtb0xheW91dE1hbmFnZXIuZGVmYXVsdExheW91dC5tYXhNZWFzdXJlU3lzdGVtO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nbG9iYWxMYXlvdXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBhcmFtcy5nbG9iYWxMYXlvdXQpKTtcclxuICAgIGlmIChwYXJhbXMucGFnZUxheW91dHMubGVuZ3RoKSB7XHJcbiAgICAgIHBhcmFtcy5wYWdlTGF5b3V0cy5mb3JFYWNoKChwbHApID0+IHtcclxuICAgICAgICBjb25zdCBwYWdlUGFyYW1zOiBTbW9QYWdlTGF5b3V0UGFyYW1zID0gU21vUGFnZUxheW91dC5kZWZhdWx0cztcclxuICAgICAgICBTbW9QYWdlTGF5b3V0LmF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cikgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiAocGxwW2F0dHJdKSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgcGFnZVBhcmFtc1thdHRyXSA9IHBscFthdHRyXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnBhZ2VMYXlvdXRzLnB1c2gobmV3IFNtb1BhZ2VMYXlvdXQocGFnZVBhcmFtcykpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnZUxheW91dHMucHVzaChuZXcgU21vUGFnZUxheW91dChTbW9QYWdlTGF5b3V0LmRlZmF1bHRzKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHRyaW1QYWdlcyhwYWdlQ291bnQ6IG51bWJlcikge1xyXG4gICAgaWYgKHBhZ2VDb3VudCA8IHRoaXMucGFnZUxheW91dHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICB0aGlzLnBhZ2VMYXlvdXRzID0gdGhpcy5wYWdlTGF5b3V0cy5zbGljZSgwLCBwYWdlQ291bnQgKyAxKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0Wm9vbVNjYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2xvYmFsTGF5b3V0Lnpvb21TY2FsZTtcclxuICB9XHJcbiAgc2VyaWFsaXplKCk6IFNtb0xheW91dE1hbmFnZXJQYXJhbXNTZXIge1xyXG4gICAgY29uc3QgcnY6IFBhcnRpYWw8U21vTGF5b3V0TWFuYWdlclBhcmFtc1Nlcj4gPSB7IGN0b3I6ICdTbW9MYXlvdXRNYW5hZ2VyJyB9O1xyXG4gICAgcnYucGFnZUxheW91dHMgPSBbXTtcclxuICAgIHRoaXMucGFnZUxheW91dHMuZm9yRWFjaCgocGwpID0+IHtcclxuICAgICAgcnYucGFnZUxheW91dHMhLnB1c2gocGwuc2VyaWFsaXplKCkpO1xyXG4gICAgfSk7XHJcbiAgICBydi5nbG9iYWxMYXlvdXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ2xvYmFsTGF5b3V0KSk7XHJcbiAgICBpZiAoIWlzU21vTGF5b3V0TWFuYWdlclBhcmFtc1NlcihydikpIHtcclxuICAgICAgdGhyb3cgJ2JhZCBsYXlvdXQgbWFuYWdlciAnICsgSlNPTi5zdHJpbmdpZnkocnYpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJ2O1xyXG4gIH1cclxuICB1cGRhdGVHbG9iYWxMYXlvdXQocGFyYW1zOiBTbW9HbG9iYWxMYXlvdXQpIHtcclxuICAgIFNtb0xheW91dE1hbmFnZXIuYXR0cmlidXRlcy5mb3JFYWNoKChhdHRyOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiAoKHBhcmFtcyBhcyBhbnkpW2F0dHJdKSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAodGhpcy5nbG9iYWxMYXlvdXQgYXMgYW55KVthdHRyXSA9IChwYXJhbXMgYXMgYW55KVthdHRyXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vICMjIyBhZGRUb1BhZ2VMYXlvdXRzXHJcbiAgLy8gTWFrZSBzdXJlIHRoZSBuZXh0IHBhZ2UgaGFzIGEgbGF5b3V0LiAgSWYgbm90LCBjb3B5IHNldHRpbmdzIGZyb21cclxuICAvLyBwcmV2aW91cyBwYWdlLlxyXG4gIGFkZFRvUGFnZUxheW91dHMocGFnZU51bTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBsYXN0TGF5b3V0ID0gdGhpcy5wYWdlTGF5b3V0c1t0aGlzLnBhZ2VMYXlvdXRzLmxlbmd0aCAtIDFdO1xyXG4gICAgaWYgKHRoaXMucGFnZUxheW91dHMubGVuZ3RoIDw9IHBhZ2VOdW0pIHtcclxuICAgICAgdGhpcy5wYWdlTGF5b3V0cy5wdXNoKG5ldyBTbW9QYWdlTGF5b3V0KGxhc3RMYXlvdXQpKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0R2xvYmFsTGF5b3V0KCk6IFNtb0dsb2JhbExheW91dCB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdsb2JhbExheW91dCkpO1xyXG4gIH1cclxuICAvLyBSZXR1cm4gYSBkZWVwIGNvcHkgb2YgdGhlIHBhZ2UgcGFyYW1ldGVycywgYWRqdXN0ZWQgZm9yIHRoZSBnbG9iYWwgc2NhbGUuXHJcbiAgZ2V0U2NhbGVkUGFnZUxheW91dChwYWdlSW5kZXg6IG51bWJlcik6IFNjYWxlZFBhZ2VMYXlvdXQge1xyXG4gICAgcmV0dXJuIFNtb0xheW91dE1hbmFnZXIuZ2V0U2NhbGVkUGFnZUxheW91dCh0aGlzLmdsb2JhbExheW91dCwgdGhpcy5wYWdlTGF5b3V0c1twYWdlSW5kZXhdLCB0aGlzLnBhZ2VMYXlvdXRzLmxlbmd0aCk7XHJcbiAgfVxyXG4gIGdldFBhZ2VMYXlvdXQocGFnZUluZGV4OiBudW1iZXIpOiBTbW9QYWdlTGF5b3V0IHtcclxuICAgIHJldHVybiBuZXcgU21vUGFnZUxheW91dCh0aGlzLnBhZ2VMYXlvdXRzW3BhZ2VJbmRleF0pO1xyXG4gIH1cclxuICBnZXRQYWdlTGF5b3V0cygpOiBTbW9QYWdlTGF5b3V0W10ge1xyXG4gICAgY29uc3QgcnY6IFNtb1BhZ2VMYXlvdXRbXSA9IFtdO1xyXG4gICAgdGhpcy5wYWdlTGF5b3V0cy5mb3JFYWNoKChwbCkgPT4ge1xyXG4gICAgICBydi5wdXNoKG5ldyBTbW9QYWdlTGF5b3V0KHBsKSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBydjtcclxuICB9XHJcbiAgdXBkYXRlUGFnZShwYWdlTGF5b3V0OiBTbW9QYWdlTGF5b3V0LCBwYWdlSW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMucGFnZUxheW91dHMubGVuZ3RoID4gcGFnZUluZGV4KSB7XHJcbiAgICAgIHRoaXMucGFnZUxheW91dHNbcGFnZUluZGV4XSA9IG5ldyBTbW9QYWdlTGF5b3V0KHBhZ2VMYXlvdXQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHN5c3RlbSBncm91cHMgKGdyb3VwaW5ncyBvZiBzdGF2ZXMgaW4gdGhlIHNjb3JlKVxyXG4gKiBAcGFyYW0gbGVmdENvbm5lY3RvclxyXG4gKiBAcGFyYW0gcmlnaHRDb25uZWN0b3JcclxuICogQHBhcmFtIG1hcFR5cGVcclxuICogQHBhcmFtIHRleHRcclxuICogQHBhcmFtIHNob3J0VGV4dFxyXG4gKiBAcGFyYW0ganVzdGlmeVxyXG4gKiBAcGFyYW0gc3RhcnRTZWxlY3RvciBub3QgdXNlZFxyXG4gKiBAcGFyYW0gZW5kU2VsZWN0b3Igbm90IHVzZWRcclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9TeXN0ZW1Hcm91cFBhcmFtcyB7XHJcbiAgLyoqXHJcbiAgICogYnJhY2tldCBldGMuXHJcbiAgICovXHJcbiAgbGVmdENvbm5lY3RvcjogbnVtYmVyLFxyXG4gIC8qKlxyXG4gICAqIGJyYWNrZXQgZXRjLlxyXG4gICAqL1xyXG4gIHJpZ2h0Q29ubmVjdG9yOiBudW1iZXIsXHJcbiAgLyoqXHJcbiAgICogZnV0dXJlLCBzY29yZSBncm91cHMgY2FuIGJlIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBzY29yZVxyXG4gICAqL1xyXG4gIG1hcFR5cGU6IG51bWJlcixcclxuICAvKipcclxuICAgKiB3aGV0aGVyIHRvIGp1c3RpZnkgdGhlIG5vdGVzIGluIHRoZSBncm91cFxyXG4gICAqL1xyXG4gIGp1c3RpZnk6IGJvb2xlYW4sXHJcbiAgLyoqXHJcbiAgICogaWYgbWFwcGVkIHRvIGEgcmFuZ2UsIHN0YXJ0XHJcbiAgICovXHJcbiAgc3RhcnRTZWxlY3RvcjogU21vU2VsZWN0b3IsXHJcbiAgLyoqXHJcbiAgICogaWYgbWFwcGVkIHRvIGEgcmFuZ2UsIGVuZFxyXG4gICAqL1xyXG4gIGVuZFNlbGVjdG9yOiBTbW9TZWxlY3RvclxyXG59XHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgc2VyaWFsaXphdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTbW9TeXN0ZW1Hcm91cFBhcmFtc1NlciBleHRlbmRzIFNtb1N5c3RlbUdyb3VwUGFyYW1ze1xyXG4gIC8qKiBcclxuICAgKiBjb25zdHJ1Y3RvclxyXG4gICAqL1xyXG4gIGN0b3I6IHN0cmluZztcclxufVxyXG5mdW5jdGlvbiBpc1Ntb1N5c3RlbUdyb3VwUGFyYW1zU2VyKHBhcmFtczogUGFydGlhbDxTbW9TeXN0ZW1Hcm91cFBhcmFtc1Nlcj4pOiBwYXJhbXMgaXMgU21vU3lzdGVtR3JvdXBQYXJhbXNTZXIge1xyXG4gIGlmIChwYXJhbXMuY3RvciA9PT0gJ1Ntb1N5c3RlbUdyb3VwJykge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIHJldHVybiBmYWxzZTtcclxufVxyXG4vKipcclxuICogU3lzdGVtIGdyb3VwIGlzIHRoZSBncm91cGluZyBvZiBzdGF2ZXMgaW50byBhIHN5c3RlbS5cclxuICogQGNhdGVnb3J5IFNtb09iamVjdFxyXG4gKiAgKi9cclxuZXhwb3J0IGNsYXNzIFNtb1N5c3RlbUdyb3VwIGV4dGVuZHMgU21vU2NvcmVNb2RpZmllckJhc2Uge1xyXG4gIHN0YXRpYyBnZXQgY29ubmVjdG9yVHlwZXMoKTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiB7XHJcbiAgICByZXR1cm4geyBicmFjZTogMCwgYnJhY2tldDogMSwgc2luZ2xlOiAyLCBkb3VibGU6IDMgfTtcclxuICB9XHJcbiAgc3RhdGljIGdldCBtYXBUeXBlcygpOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHtcclxuICAgIHJldHVybiB7IGFsbE1lYXN1cmVzOiAwLCByYW5nZTogMSB9O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGF0dHJpYnV0ZXMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFsnbGVmdENvbm5lY3RvcicsICdyaWdodENvbm5lY3RvcicsICd0ZXh0JywgJ3Nob3J0VGV4dCcsICdqdXN0aWZ5JyxcclxuICAgICAgJ3N0YXJ0U2VsZWN0b3InLCAnZW5kU2VsZWN0b3InLCAnbWFwVHlwZSddO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGRlZmF1bHRzKCk6IFNtb1N5c3RlbUdyb3VwUGFyYW1zIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgbGVmdENvbm5lY3RvcjogU21vU3lzdGVtR3JvdXAuY29ubmVjdG9yVHlwZXMuc2luZ2xlLFxyXG4gICAgICByaWdodENvbm5lY3RvcjogU21vU3lzdGVtR3JvdXAuY29ubmVjdG9yVHlwZXMuc2luZ2xlLFxyXG4gICAgICBtYXBUeXBlOiBTbW9TeXN0ZW1Hcm91cC5tYXBUeXBlcy5hbGxNZWFzdXJlcyxcclxuICAgICAganVzdGlmeTogdHJ1ZSxcclxuICAgICAgc3RhcnRTZWxlY3RvcjogU21vU2VsZWN0b3IuZGVmYXVsdCxcclxuICAgICAgZW5kU2VsZWN0b3I6IFNtb1NlbGVjdG9yLmRlZmF1bHRcclxuICAgIH0pKTtcclxuICB9XHJcbiAgc3RhdGljIGlzU3lzdGVtR3JvdXAobW9kaWZpZXI6IFNtb1N5c3RlbUdyb3VwIHwgU21vTW9kaWZpZXJCYXNlKTogbW9kaWZpZXIgaXMgU21vU3lzdGVtR3JvdXAge1xyXG4gICAgcmV0dXJuIG1vZGlmaWVyLmN0b3IgPT09ICdTbW9TeXN0ZW1Hcm91cCc7XHJcbiAgfVxyXG4gIGxlZnRDb25uZWN0b3I6IG51bWJlciA9IFNtb1N5c3RlbUdyb3VwLmNvbm5lY3RvclR5cGVzLnNpbmdsZTtcclxuICByaWdodENvbm5lY3RvcjogbnVtYmVyID0gU21vU3lzdGVtR3JvdXAuY29ubmVjdG9yVHlwZXMuc2luZ2xlO1xyXG4gIG1hcFR5cGU6IG51bWJlciA9IFNtb1N5c3RlbUdyb3VwLm1hcFR5cGVzLmFsbE1lYXN1cmVzO1xyXG4gIHRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHNob3J0VGV4dDogc3RyaW5nID0gJyc7XHJcbiAganVzdGlmeTogYm9vbGVhbiA9IHRydWU7XHJcbiAgc3RhcnRTZWxlY3RvcjogU21vU2VsZWN0b3IgPSBTbW9TZWxlY3Rvci5kZWZhdWx0O1xyXG4gIGVuZFNlbGVjdG9yOiBTbW9TZWxlY3RvciA9IFNtb1NlbGVjdG9yLmRlZmF1bHQ7XHJcbiAgYXR0cnM6IFNtb0F0dHJzO1xyXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogU21vU3lzdGVtR3JvdXBQYXJhbXMpIHtcclxuICAgIHN1cGVyKCdTbW9TeXN0ZW1Hcm91cCcpO1xyXG4gICAgc21vU2VyaWFsaXplLnNlcmlhbGl6ZWRNZXJnZShTbW9TeXN0ZW1Hcm91cC5hdHRyaWJ1dGVzLCBTbW9TeXN0ZW1Hcm91cC5kZWZhdWx0cywgdGhpcyk7XHJcbiAgICBzbW9TZXJpYWxpemUuc2VyaWFsaXplZE1lcmdlKFNtb1N5c3RlbUdyb3VwLmF0dHJpYnV0ZXMsIHBhcmFtcywgdGhpcyk7XHJcbiAgICB0aGlzLmF0dHJzID0ge1xyXG4gICAgICBpZDogZ2V0SWQoKS50b1N0cmluZygpLFxyXG4gICAgICB0eXBlOiAnU21vU3lzdGVtR3JvdXAnXHJcbiAgICB9O1xyXG4gIH1cclxuICBzdGF2ZXNPdmVybGFwKGdyb3VwOiBTbW9TeXN0ZW1Hcm91cCkge1xyXG4gICAgcmV0dXJuICh0aGlzLnN0YXJ0U2VsZWN0b3Iuc3RhZmYgPj0gZ3JvdXAuc3RhcnRTZWxlY3Rvci5zdGFmZiAmJiB0aGlzLnN0YXJ0U2VsZWN0b3Iuc3RhZmYgPD0gZ3JvdXAuZW5kU2VsZWN0b3Iuc3RhZmYpIHx8XHJcbiAgICAgICh0aGlzLmVuZFNlbGVjdG9yLnN0YWZmID49IGdyb3VwLnN0YXJ0U2VsZWN0b3Iuc3RhZmYgJiYgdGhpcy5lbmRTZWxlY3Rvci5zdGFmZiA8PSBncm91cC5lbmRTZWxlY3Rvci5zdGFmZik7XHJcbiAgfVxyXG4gIG1lYXN1cmVzT3ZlcmxhcChncm91cDogU21vU3lzdGVtR3JvdXApIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXZlc092ZXJsYXAoZ3JvdXApICYmXHJcbiAgICAgICgodGhpcy5zdGFydFNlbGVjdG9yLm1lYXN1cmUgPj0gZ3JvdXAuc3RhcnRTZWxlY3Rvci5tZWFzdXJlICYmIHRoaXMuZW5kU2VsZWN0b3IubWVhc3VyZSA8PSBncm91cC5zdGFydFNlbGVjdG9yLm1lYXN1cmUpIHx8XHJcbiAgICAgICAgKHRoaXMuZW5kU2VsZWN0b3IubWVhc3VyZSA+PSBncm91cC5zdGFydFNlbGVjdG9yLm1lYXN1cmUgJiYgdGhpcy5lbmRTZWxlY3Rvci5tZWFzdXJlIDw9IGdyb3VwLmVuZFNlbGVjdG9yLm1lYXN1cmUpKTtcclxuICB9XHJcbiAgb3ZlcmxhcHMoZ3JvdXA6IFNtb1N5c3RlbUdyb3VwKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuc3RhdmVzT3ZlcmxhcChncm91cCkgJiYgdGhpcy5tYXBUeXBlID09PSBTbW9TeXN0ZW1Hcm91cC5tYXBUeXBlcy5hbGxNZWFzdXJlcykgfHxcclxuICAgICAgKHRoaXMubWVhc3VyZXNPdmVybGFwKGdyb3VwKSAmJiB0aGlzLm1hcFR5cGUgPT09IFNtb1N5c3RlbUdyb3VwLm1hcFR5cGVzLnJhbmdlKTtcclxuICB9XHJcbiAgc2VyaWFsaXplKCk6IFNtb1N5c3RlbUdyb3VwUGFyYW1zU2VyIHtcclxuICAgIGNvbnN0IHBhcmFtczogUGFydGlhbDxTbW9TeXN0ZW1Hcm91cFBhcmFtc1Nlcj4gPSB7fTtcclxuICAgIHNtb1NlcmlhbGl6ZS5zZXJpYWxpemVkTWVyZ2VOb25EZWZhdWx0KFNtb1N5c3RlbUdyb3VwLmRlZmF1bHRzLCBTbW9TeXN0ZW1Hcm91cC5hdHRyaWJ1dGVzLCB0aGlzLCBwYXJhbXMpO1xyXG4gICAgcGFyYW1zLmN0b3IgPSAnU21vU3lzdGVtR3JvdXAnO1xyXG4gICAgaWYgKCFpc1Ntb1N5c3RlbUdyb3VwUGFyYW1zU2VyKHBhcmFtcykpIHtcclxuICAgICAgdGhyb3cgJ2JhZCBzeXN0ZW0gZ3JvdXAgJyArIEpTT04uc3RyaW5naWZ5KHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxufVxyXG5leHBvcnQgY29uc3Qgc2NvcmVNb2RpZmllckR5bmFtaWNDdG9ySW5pdCA9ICgpID0+IHtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vU2NvcmVQcmVmZXJlbmNlcyddID0gKHBhcmFtczogU21vU2NvcmVQcmVmZXJlbmNlc1BhcmFtcykgPT4gbmV3IFNtb1Njb3JlUHJlZmVyZW5jZXMocGFyYW1zKTtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vRm9ybWF0dGluZ01hbmFnZXInXSA9IChwYXJhbXM6IFNtb0Zvcm1hdHRpbmdNYW5hZ2VyUGFyYW1zKSA9PiBuZXcgU21vRm9ybWF0dGluZ01hbmFnZXIocGFyYW1zKTtcclxuICBTbW9EeW5hbWljQ3RvclsnU21vQXVkaW9QbGF5ZXJTZXR0aW5ncyddID0gKHBhcmFtczogU21vQXVkaW9QbGF5ZXJQYXJhbWV0ZXJzKSA9PiBuZXcgU21vQXVkaW9QbGF5ZXJTZXR0aW5ncyhwYXJhbXMpO1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9QYWdlTGF5b3V0J10gPSAocGFyYW1zOiBTbW9QYWdlTGF5b3V0UGFyYW1zKSA9PiBuZXcgU21vUGFnZUxheW91dChwYXJhbXMpO1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9MYXlvdXRNYW5hZ2VyJ10gPSAocGFyYW1zOiBTbW9MYXlvdXRNYW5hZ2VyUGFyYW1zKSA9PiBuZXcgU21vTGF5b3V0TWFuYWdlcihwYXJhbXMpO1xyXG4gIFNtb0R5bmFtaWNDdG9yWydTbW9TeXN0ZW1Hcm91cCddID0gKHBhcmFtczogU21vU3lzdGVtR3JvdXBQYXJhbXMpID0+IG5ldyBTbW9TeXN0ZW1Hcm91cChwYXJhbXMpO1xyXG59XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/smo/data/scoreModifiers.ts\n");
|
|
571
571
|
|
|
572
572
|
/***/ }),
|
|
573
573
|
|
|
@@ -1240,7 +1240,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1240
1240
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1241
1241
|
|
|
1242
1242
|
"use strict";
|
|
1243
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SuiEndBarButtonComponent: () => (/* binding */ SuiEndBarButtonComponent),\n/* harmony export */ SuiEndingsAdapter: () => (/* binding */ SuiEndingsAdapter),\n/* harmony export */ SuiEndingsDialog: () => (/* binding */ SuiEndingsDialog),\n/* harmony export */ SuiRepeatSymbolButtonComponent: () => (/* binding */ SuiRepeatSymbolButtonComponent),\n/* harmony export */ SuiStartBarButtonComponent: () => (/* binding */ SuiStartBarButtonComponent)\n/* harmony export */ });\n/* harmony import */ var _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../smo/data/measureModifiers */ \"./src/smo/data/measureModifiers.ts\");\n/* harmony import */ var _adapter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adapter */ \"./src/ui/dialogs/adapter.ts\");\n/* harmony import */ var _components_buttonArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/buttonArray */ \"./src/ui/dialogs/components/buttonArray.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n/**\n * @category SuiDialog\n * Buttons with ending or repeat functions\n * @returns SuiButtonArrayParameters\n */\nconst endingsButtonFactory = () => {\n const params = {\n label: 'Measure Endings',\n rows: [{\n label: 'Endings',\n classes: 'pad-span',\n buttons: [\n {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-end_rpt',\n id: 'endRepeat',\n label: 'end repeat',\n smoName: 'endRepeat'\n }, {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-end_bar',\n id: 'endBar',\n label: 'end barline',\n smoName: 'endBar'\n }, {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-end_bar',\n id: 'doubleBar',\n label: 'double barline',\n smoName: 'doubleBar'\n }, {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text',\n id: 'noBarEnd',\n label: 'no barline',\n smoName: 'noBar'\n }, {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-single_bar',\n id: 'singleBarEnd',\n label: 'single bar',\n smoName: 'singleBar'\n }\n ]\n }\n ]\n };\n return params;\n};\n/**\n * @category SuiDialog\n * Buttons with ending or repeat functions\n * @returns SuiButtonArrayParameters\n */\nconst startBarButtonFactory = () => {\n const params = {\n label: 'Measure Endings',\n rows: [{\n label: 'Start Bar',\n classes: 'text-span',\n buttons: [\n {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-start_rpt',\n id: 'startRepeat',\n label: 'start repeat',\n smoName: 'startRepeat'\n },\n {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text',\n id: 'noBarStart',\n label: 'no barline',\n smoName: 'noBar'\n }, {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-single_bar',\n id: 'singleBarStart',\n label: 'single bar',\n smoName: 'singleBar'\n }\n ]\n }]\n };\n return params;\n};\n/**\n * @category SuiDialog\n * Buttons with ending or repeat functions\n * @returns SuiButtonArrayParameters\n */\nconst repeatSymbolButtonFactory = () => {\n const params = {\n label: 'Repeat Symbols',\n rows: [{\n label: 'Repeat',\n classes: 'text-span',\n buttons: [\n {\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'DcAlCoda',\n label: 'DC Al Coda',\n text: 'DC Al Coda',\n smoName: 'DcAlCoda'\n }, {\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'DsAlCoda',\n label: 'DS Al Coda',\n text: 'DS Al Coda',\n smoName: 'DsAlCoda'\n }, {\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'ToCoda',\n label: 'to Coda',\n text: 'to Coda',\n smoName: 'ToCoda'\n }\n ]\n }, {\n label: 'Text',\n classes: 'pad-span',\n buttons: [{\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'DcAlFine',\n label: 'DC Al Fine',\n text: 'DC Al Fine',\n smoName: 'DcAlFine'\n }, {\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'DsAlFine',\n label: 'DS Al Fine',\n text: 'DS Al Fine',\n smoName: 'DsAlFine'\n }, {\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'Fine',\n label: 'Fine',\n text: 'Fine',\n smoName: 'Fine'\n }]\n }, {\n label: 'Symbols',\n classes: 'pad-span',\n buttons: [{\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-bravura ribbon-button-text icon-lg icon-segno',\n id: 'Segno',\n label: 'Segno',\n smoName: 'Segno'\n },\n {\n icon: 'icon-bravura icon-lg icon-coda',\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n smoName: 'Coda',\n label: 'Coda',\n id: 'Coda'\n }\n ]\n }]\n };\n return params;\n};\n/**\n * @category SuiDialog\n */\nclass SuiEndBarButtonComponent extends _components_buttonArray__WEBPACK_IMPORTED_MODULE_2__.SuiButtonArrayComponent {\n constructor(dialog, parameter) {\n super(dialog, parameter, endingsButtonFactory);\n }\n}\n/**\n * @category SuiDialog\n */\nclass SuiStartBarButtonComponent extends _components_buttonArray__WEBPACK_IMPORTED_MODULE_2__.SuiButtonArrayComponent {\n constructor(dialog, parameter) {\n super(dialog, parameter, startBarButtonFactory);\n }\n}\n/**\n * @category SuiDialog\n */\nclass SuiRepeatSymbolButtonComponent extends _components_buttonArray__WEBPACK_IMPORTED_MODULE_2__.SuiButtonArrayComponent {\n constructor(dialog, parameter) {\n super(dialog, parameter, repeatSymbolButtonFactory);\n }\n}\n/**\n * Smo dialog adapter for measure endings and repeats.\n * @category SuiDialog\n */\nclass SuiEndingsAdapter extends _adapter__WEBPACK_IMPORTED_MODULE_1__.SuiComponentAdapter {\n constructor(view) {\n super(view);\n this.view.groupUndo(true);\n const measure = this.view.tracker.selections[0].measure;\n this.startBarCode = _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlineString(measure.getStartBarline());\n this.endBarCode = _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlineString(measure.getEndBarline());\n const rs = measure.getRepeatSymbol();\n if (rs) {\n this.repeatSymbolCode = _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.repeatSymbolString(rs);\n }\n else {\n this.repeatSymbolCode = '';\n }\n }\n get repeatSymbolComponent() {\n return this.repeatSymbolCode;\n }\n set repeatSymbolComponent(value) {\n this.repeatSymbolCode = value;\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Coda) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Coda);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.ToCoda) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.ToCoda);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Segno) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Segno);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DsAlCoda) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DsAlCoda);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DcAlCoda) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DcAlCoda);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DsAlFine) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DsAlFine);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DcAlFine) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DcAlFine);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Fine) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Fine);\n }\n }\n get endBarComponent() {\n return this.endBarCode;\n }\n set endBarComponent(value) {\n this.endBarCode = value;\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.endRepeat) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.endRepeat);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.startRepeat) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.start, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.startRepeat);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.singleBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.singleBar);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.doubleBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.doubleBar);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.endBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.endBar);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.noBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.noBar);\n }\n }\n get startBarComponent() {\n return this.startBarCode;\n }\n set startBarComponent(value) {\n this.startBarCode = value;\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.startRepeat) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.start, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.startRepeat);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.singleBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.start, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.singleBar);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.noBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.start, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.noBar);\n }\n }\n commit() {\n return __awaiter(this, void 0, void 0, function* () {\n });\n }\n cancel() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.view.undo();\n });\n }\n remove() {\n return __awaiter(this, void 0, void 0, function* () {\n });\n }\n}\n/**\n * @category SuiDialog\n */\nclass SuiEndingsDialog extends _adapter__WEBPACK_IMPORTED_MODULE_1__.SuiDialogAdapterBase {\n static get applyTo() {\n return {\n score: 0, selected: 1, remaining: 3\n };\n }\n constructor(parameters) {\n const adapter = new SuiEndingsAdapter(parameters.view);\n super(SuiEndingsDialog.dialogElements, Object.assign({ adapter }, parameters));\n this.displayOptions = ['BINDCOMPONENTS', 'DRAGGABLE', 'KEYBOARD_CAPTURE', 'MODIFIERPOS', 'HIDEREMOVE'];\n }\n changed() {\n const _super = Object.create(null, {\n changed: { get: () => super.changed }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this.view.undoTrackerMeasureSelections('endings dialog');\n yield _super.changed.call(this);\n });\n }\n}\n// export type Clef = 'treble' | 'bass' | 'tenor' | 'alto' | 'soprano' | 'percussion'\n//| 'mezzo-soprano' | 'baritone-c' | 'baritone-f' | 'subbass' | 'french';\nSuiEndingsDialog.dialogElements = {\n label: 'Measure Endings',\n elements: [{\n smoName: 'startBarComponent',\n control: 'SuiStartBarButtonComponent',\n label: 'Measure Start'\n }, {\n smoName: 'endBarComponent',\n control: 'SuiEndBarButtonComponent',\n label: 'Measure End'\n }, {\n smoName: 'repeatSymbolComponent',\n control: 'SuiRepeatSymbolButtonComponent',\n label: 'Repeat Symbol'\n }],\n staticText: []\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RSwwQkFBMEI7WUFDbkMsS0FBSyxFQUFFLGFBQWE7U0FDckIsRUFBRTtZQUNELE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxLQUFLLEVBQUUsZUFBZTtTQUN2QixDQUFDO0lBQ0osVUFBVSxFQUFFLEVBQUU7Q0FDZixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU21vLy4vc3JjL3VpL2RpYWxvZ3MvZW5kaW5ncy50cz8yN2UyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFtTbW9vc2ljXShodHRwczovL2dpdGh1Yi5jb20vQWFyb25EYXZpZE5ld21hbi9TbW9vc2ljKVxyXG4vLyBDb3B5cmlnaHQgKGMpIEFhcm9uIERhdmlkIE5ld21hbiAyMDIxLlxyXG5pbXBvcnQgeyBTdWlTY29yZVZpZXdPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vcmVuZGVyL3N1aS9zY29yZVZpZXdPcGVyYXRpb25zJztcclxuaW1wb3J0IHsgRGlhbG9nRGVmaW5pdGlvbiwgU3VpRGlhbG9nUGFyYW1zIH0gZnJvbSAnLi9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTbW9CYXJsaW5lLCBTbW9SZXBlYXRTeW1ib2wgfSBmcm9tICcuLi8uLi9zbW8vZGF0YS9tZWFzdXJlTW9kaWZpZXJzJztcclxuaW1wb3J0IHsgcmV2ZXJzZVN0YXRpY01hcCB9IGZyb20gJy4uLy4uL3Ntby9kYXRhL2NvbW1vbic7XHJcbmltcG9ydCB7IFN1aUNvbXBvbmVudEFkYXB0ZXIsIFN1aURpYWxvZ0FkYXB0ZXJCYXNlIH0gZnJvbSAnLi9hZGFwdGVyJztcclxuaW1wb3J0IHsgZ2V0QnV0dG9uc0ZjbiwgU3VpQnV0dG9uQXJyYXlDb21wb25lbnQsIFN1aUJ1dHRvbkFycmF5UGFyYW1ldGVycyB9IGZyb20gJy4vY29tcG9uZW50cy9idXR0b25BcnJheSc7XHJcbmltcG9ydCB7IFN1aURpYWxvZ05vdGlmaWVyLCBTdWlCYXNlQ29tcG9uZW50UGFyYW1zIH0gZnJvbSAnLi9jb21wb25lbnRzL2Jhc2VDb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBTdWlEaWFsb2dcclxuICogQnV0dG9ucyB3aXRoIGVuZGluZyBvciByZXBlYXQgZnVuY3Rpb25zXHJcbiAqIEByZXR1cm5zIFN1aUJ1dHRvbkFycmF5UGFyYW1ldGVyc1xyXG4gKi9cclxuY29uc3QgZW5kaW5nc0J1dHRvbkZhY3Rvcnk6IGdldEJ1dHRvbnNGY24gPSAoKSA9PiB7XHJcbiAgY29uc3QgcGFyYW1zOiBTdWlCdXR0b25BcnJheVBhcmFtZXRlcnMgPSB7XHJcbiAgICBsYWJlbDogJ01lYXN1cmUgRW5kaW5ncycsXHJcbiAgICByb3dzOiBbe1xyXG4gICAgICBsYWJlbDogJ0VuZGluZ3MnLFxyXG4gICAgICBjbGFzc2VzOiAncGFkLXNwYW4nLFxyXG4gICAgICBidXR0b25zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xhc3NlczogJ2ljb24gY29sbGFwc2VQYXJlbnQgYnV0dG9uLWFycmF5JyxcclxuICAgICAgICAgIGNvbnRyb2w6ICdTdWlCdXR0b25BcnJheUJ1dHRvbicsXHJcbiAgICAgICAgICBpY29uOiAnaWNvbi1zbW8gcmliYm9uLWJ1dHRvbi10ZXh0IGljb24tZW5kX3JwdCcsXHJcbiAgICAgICAgICBpZDogJ2VuZFJlcGVhdCcsXHJcbiAgICAgICAgICBsYWJlbDogJ2VuZCByZXBlYXQnLFxyXG4gICAgICAgICAgc21vTmFtZTogJ2VuZFJlcGVhdCdcclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXknLFxyXG4gICAgICAgICAgY29udHJvbDogJ1N1aUJ1dHRvbkFycmF5QnV0dG9uJyxcclxuICAgICAgICAgIGljb246ICdpY29uLXNtbyByaWJib24tYnV0dG9uLXRleHQgaWNvbi1lbmRfYmFyJyxcclxuICAgICAgICAgIGlkOiAnZW5kQmFyJyxcclxuICAgICAgICAgIGxhYmVsOiAnZW5kIGJhcmxpbmUnLFxyXG4gICAgICAgICAgc21vTmFtZTogJ2VuZEJhcidcclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXknLFxyXG4gICAgICAgICAgY29udHJvbDogJ1N1aUJ1dHRvbkFycmF5QnV0dG9uJyxcclxuICAgICAgICAgIGljb246ICdpY29uLXNtbyByaWJib24tYnV0dG9uLXRleHQgaWNvbi1lbmRfYmFyJyxcclxuICAgICAgICAgIGlkOiAnZG91YmxlQmFyJyxcclxuICAgICAgICAgIGxhYmVsOiAnZG91YmxlIGJhcmxpbmUnLFxyXG4gICAgICAgICAgc21vTmFtZTogJ2RvdWJsZUJhcidcclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXknLFxyXG4gICAgICAgICAgY29udHJvbDogJ1N1aUJ1dHRvbkFycmF5QnV0dG9uJyxcclxuICAgICAgICAgIGljb246ICdpY29uLXNtbyByaWJib24tYnV0dG9uLXRleHQnLFxyXG4gICAgICAgICAgaWQ6ICdub0JhckVuZCcsXHJcbiAgICAgICAgICBsYWJlbDogJ25vIGJhcmxpbmUnLFxyXG4gICAgICAgICAgc21vTmFtZTogJ25vQmFyJ1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheScsXHJcbiAgICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgICAgaWNvbjogJ2ljb24tc21vIHJpYmJvbi1idXR0b24tdGV4dCBpY29uLXNpbmdsZV9iYXInLFxyXG4gICAgICAgICAgaWQ6ICdzaW5nbGVCYXJFbmQnLFxyXG4gICAgICAgICAgbGFiZWw6ICdzaW5nbGUgYmFyJyxcclxuICAgICAgICAgIHNtb05hbWU6ICdzaW5nbGVCYXInXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9XHJcbiAgICBdXHJcbiAgfVxyXG4gIHJldHVybiBwYXJhbXM7XHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBTdWlEaWFsb2dcclxuICogQnV0dG9ucyB3aXRoIGVuZGluZyBvciByZXBlYXQgZnVuY3Rpb25zXHJcbiAqIEByZXR1cm5zIFN1aUJ1dHRvbkFycmF5UGFyYW1ldGVyc1xyXG4gKi9cclxuY29uc3Qgc3RhcnRCYXJCdXR0b25GYWN0b3J5OiBnZXRCdXR0b25zRmNuID0gKCkgPT4ge1xyXG4gIGNvbnN0IHBhcmFtczogU3VpQnV0dG9uQXJyYXlQYXJhbWV0ZXJzID0ge1xyXG4gICAgbGFiZWw6ICdNZWFzdXJlIEVuZGluZ3MnLFxyXG4gICAgcm93czogW3tcclxuICAgICAgbGFiZWw6ICdTdGFydCBCYXInLFxyXG4gICAgICBjbGFzc2VzOiAndGV4dC1zcGFuJyxcclxuICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheScsXHJcbiAgICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgICAgaWNvbjogJ2ljb24tc21vIHJpYmJvbi1idXR0b24tdGV4dCBpY29uLXN0YXJ0X3JwdCcsXHJcbiAgICAgICAgICBpZDogJ3N0YXJ0UmVwZWF0JyxcclxuICAgICAgICAgIGxhYmVsOiAnc3RhcnQgcmVwZWF0JyxcclxuICAgICAgICAgIHNtb05hbWU6ICdzdGFydFJlcGVhdCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheScsXHJcbiAgICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgICAgaWNvbjogJ2ljb24tc21vIHJpYmJvbi1idXR0b24tdGV4dCcsXHJcbiAgICAgICAgICBpZDogJ25vQmFyU3RhcnQnLFxyXG4gICAgICAgICAgbGFiZWw6ICdubyBiYXJsaW5lJyxcclxuICAgICAgICAgIHNtb05hbWU6ICdub0JhcidcclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXknLFxyXG4gICAgICAgICAgY29udHJvbDogJ1N1aUJ1dHRvbkFycmF5QnV0dG9uJyxcclxuICAgICAgICAgIGljb246ICdpY29uLXNtbyByaWJib24tYnV0dG9uLXRleHQgaWNvbi1zaW5nbGVfYmFyJyxcclxuICAgICAgICAgIGlkOiAnc2luZ2xlQmFyU3RhcnQnLFxyXG4gICAgICAgICAgbGFiZWw6ICdzaW5nbGUgYmFyJyxcclxuICAgICAgICAgIHNtb05hbWU6ICdzaW5nbGVCYXInXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9XVxyXG4gIH07XHJcbiAgcmV0dXJuIHBhcmFtcztcclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IFN1aURpYWxvZ1xyXG4gKiBCdXR0b25zIHdpdGggZW5kaW5nIG9yIHJlcGVhdCBmdW5jdGlvbnNcclxuICogQHJldHVybnMgU3VpQnV0dG9uQXJyYXlQYXJhbWV0ZXJzXHJcbiAqL1xyXG5jb25zdCByZXBlYXRTeW1ib2xCdXR0b25GYWN0b3J5OiBnZXRCdXR0b25zRmNuID0gKCkgPT4ge1xyXG4gIGNvbnN0IHBhcmFtczogU3VpQnV0dG9uQXJyYXlQYXJhbWV0ZXJzID0ge1xyXG4gICAgbGFiZWw6ICdSZXBlYXQgU3ltYm9scycsXHJcbiAgICByb3dzOiBbe1xyXG4gICAgICBsYWJlbDogJ1JlcGVhdCcsXHJcbiAgICAgIGNsYXNzZXM6ICd0ZXh0LXNwYW4nLFxyXG4gICAgICBidXR0b25zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xhc3NlczogJ2ljb24gY29sbGFwc2VQYXJlbnQgYnV0dG9uLWFycmF5IHJlcGV0ZXh0JyxcclxuICAgICAgICAgIGNvbnRyb2w6ICdTdWlCdXR0b25BcnJheUJ1dHRvbicsXHJcbiAgICAgICAgICBpY29uOiAnJyxcclxuICAgICAgICAgIGlkOiAnRGNBbENvZGEnLFxyXG4gICAgICAgICAgbGFiZWw6ICdEQyBBbCBDb2RhJyxcclxuICAgICAgICAgIHRleHQ6ICdEQyBBbCBDb2RhJyxcclxuICAgICAgICAgIHNtb05hbWU6ICdEY0FsQ29kYSdcclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXkgcmVwZXRleHQnLFxyXG4gICAgICAgICAgY29udHJvbDogJ1N1aUJ1dHRvbkFycmF5QnV0dG9uJyxcclxuICAgICAgICAgIGljb246ICcnLFxyXG4gICAgICAgICAgaWQ6ICdEc0FsQ29kYScsXHJcbiAgICAgICAgICBsYWJlbDogJ0RTIEFsIENvZGEnLFxyXG4gICAgICAgICAgdGV4dDogJ0RTIEFsIENvZGEnLFxyXG4gICAgICAgICAgc21vTmFtZTogJ0RzQWxDb2RhJ1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheSByZXBldGV4dCcsXHJcbiAgICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgICAgaWNvbjogJycsXHJcbiAgICAgICAgICBpZDogJ1RvQ29kYScsXHJcbiAgICAgICAgICBsYWJlbDogJ3RvIENvZGEnLFxyXG4gICAgICAgICAgdGV4dDogJ3RvIENvZGEnLFxyXG4gICAgICAgICAgc21vTmFtZTogJ1RvQ29kYSdcclxuICAgICAgICB9XVxyXG4gICAgfSwge1xyXG4gICAgICBsYWJlbDogJ1RleHQnLFxyXG4gICAgICBjbGFzc2VzOiAncGFkLXNwYW4nLFxyXG4gICAgICBidXR0b25zOiBbe1xyXG4gICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheSByZXBldGV4dCcsXHJcbiAgICAgICAgY29udHJvbDogJ1N1aUJ1dHRvbkFycmF5QnV0dG9uJyxcclxuICAgICAgICBpY29uOiAnJyxcclxuICAgICAgICBpZDogJ0RjQWxGaW5lJyxcclxuICAgICAgICBsYWJlbDogJ0RDIEFsIEZpbmUnLFxyXG4gICAgICAgIHRleHQ6ICdEQyBBbCBGaW5lJyxcclxuICAgICAgICBzbW9OYW1lOiAnRGNBbEZpbmUnXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXkgcmVwZXRleHQnLFxyXG4gICAgICAgIGNvbnRyb2w6ICdTdWlCdXR0b25BcnJheUJ1dHRvbicsXHJcbiAgICAgICAgaWNvbjogJycsXHJcbiAgICAgICAgaWQ6ICdEc0FsRmluZScsXHJcbiAgICAgICAgbGFiZWw6ICdEUyBBbCBGaW5lJyxcclxuICAgICAgICB0ZXh0OiAnRFMgQWwgRmluZScsXHJcbiAgICAgICAgc21vTmFtZTogJ0RzQWxGaW5lJ1xyXG4gICAgICB9LCB7XHJcbiAgICAgICAgY2xhc3NlczogJ2ljb24gY29sbGFwc2VQYXJlbnQgYnV0dG9uLWFycmF5IHJlcGV0ZXh0JyxcclxuICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgIGljb246ICcnLFxyXG4gICAgICAgIGlkOiAnRmluZScsXHJcbiAgICAgICAgbGFiZWw6ICdGaW5lJyxcclxuICAgICAgICB0ZXh0OiAnRmluZScsXHJcbiAgICAgICAgc21vTmFtZTogJ0ZpbmUnXHJcbiAgICAgIH1dXHJcbiAgICB9LCB7XHJcbiAgICAgIGxhYmVsOiAnU3ltYm9scycsXHJcbiAgICAgIGNsYXNzZXM6ICdwYWQtc3BhbicsXHJcbiAgICAgIGJ1dHRvbnM6IFt7XHJcbiAgICAgICAgY2xhc3NlczogJ2ljb24gY29sbGFwc2VQYXJlbnQgYnV0dG9uLWFycmF5JyxcclxuICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgIGljb246ICdpY29uLWJyYXZ1cmEgcmliYm9uLWJ1dHRvbi10ZXh0IGljb24tbGcgaWNvbi1zZWdubycsXHJcbiAgICAgICAgaWQ6ICdTZWdubycsXHJcbiAgICAgICAgbGFiZWw6ICdTZWdubycsXHJcbiAgICAgICAgc21vTmFtZTogJ1NlZ25vJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWNvbjogJ2ljb24tYnJhdnVyYSBpY29uLWxnIGljb24tY29kYScsXHJcbiAgICAgICAgY2xhc3NlczogJ2ljb24gY29sbGFwc2VQYXJlbnQgYnV0dG9uLWFycmF5JyxcclxuICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgIHNtb05hbWU6ICdDb2RhJyxcclxuICAgICAgICBsYWJlbDogJ0NvZGEnLFxyXG4gICAgICAgIGlkOiAnQ29kYSdcclxuICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9XVxyXG4gIH07XHJcbiAgcmV0dXJuIHBhcmFtcztcclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IFN1aURpYWxvZ1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN1aUVuZEJhckJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIFN1aUJ1dHRvbkFycmF5Q29tcG9uZW50IHtcclxuICBjb25zdHJ1Y3RvcihkaWFsb2c6IFN1aURpYWxvZ05vdGlmaWVyLCBwYXJhbWV0ZXI6IFN1aUJhc2VDb21wb25lbnRQYXJhbXMpIHtcclxuICAgIHN1cGVyKGRpYWxvZywgcGFyYW1ldGVyLCBlbmRpbmdzQnV0dG9uRmFjdG9yeSk7XHJcbiAgfVxyXG59XHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgU3VpRGlhbG9nXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3VpU3RhcnRCYXJCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBTdWlCdXR0b25BcnJheUNvbXBvbmVudCB7XHJcbiAgY29uc3RydWN0b3IoZGlhbG9nOiBTdWlEaWFsb2dOb3RpZmllciwgcGFyYW1ldGVyOiBTdWlCYXNlQ29tcG9uZW50UGFyYW1zKSB7XHJcbiAgICBzdXBlcihkaWFsb2csIHBhcmFtZXRlciwgc3RhcnRCYXJCdXR0b25GYWN0b3J5KTtcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBTdWlEaWFsb2dcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTdWlSZXBlYXRTeW1ib2xCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBTdWlCdXR0b25BcnJheUNvbXBvbmVudCB7XHJcbiAgY29uc3RydWN0b3IoZGlhbG9nOiBTdWlEaWFsb2dOb3RpZmllciwgcGFyYW1ldGVyOiBTdWlCYXNlQ29tcG9uZW50UGFyYW1zKSB7XHJcbiAgICBzdXBlcihkaWFsb2csIHBhcmFtZXRlciwgcmVwZWF0U3ltYm9sQnV0dG9uRmFjdG9yeSk7XHJcbiAgfVxyXG59XHJcbi8qKlxyXG4gKiBTbW8gZGlhbG9nIGFkYXB0ZXIgZm9yIG1lYXN1cmUgZW5kaW5ncyBhbmQgcmVwZWF0cy5cclxuICogQGNhdGVnb3J5IFN1aURpYWxvZ1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN1aUVuZGluZ3NBZGFwdGVyIGV4dGVuZHMgU3VpQ29tcG9uZW50QWRhcHRlciB7XHJcbiAgc3RhcnRCYXJDb2RlOiBzdHJpbmc7XHJcbiAgZW5kQmFyQ29kZTogc3RyaW5nO1xyXG4gIHJlcGVhdFN5bWJvbENvZGU6IHN0cmluZztcclxuICBjb25zdHJ1Y3Rvcih2aWV3OiBTdWlTY29yZVZpZXdPcGVyYXRpb25zKSB7XHJcbiAgICBzdXBlcih2aWV3KTtcclxuICAgIHRoaXMudmlldy5ncm91cFVuZG8odHJ1ZSk7XHJcbiAgICBjb25zdCBtZWFzdXJlID0gdGhpcy52aWV3LnRyYWNrZXIuc2VsZWN0aW9uc1swXS5tZWFzdXJlO1xyXG4gICAgdGhpcy5zdGFydEJhckNvZGUgPSBTbW9CYXJsaW5lLmJhcmxpbmVTdHJpbmcobWVhc3VyZS5nZXRTdGFydEJhcmxpbmUoKSk7XHJcbiAgICB0aGlzLmVuZEJhckNvZGUgPSBTbW9CYXJsaW5lLmJhcmxpbmVTdHJpbmcobWVhc3VyZS5nZXRFbmRCYXJsaW5lKCkpO1xyXG4gICAgY29uc3QgcnMgPSBtZWFzdXJlLmdldFJlcGVhdFN5bWJvbCgpO1xyXG4gICAgaWYgKHJzKSB7XHJcbiAgICAgIHRoaXMucmVwZWF0U3ltYm9sQ29kZSA9IFNtb1JlcGVhdFN5bWJvbC5yZXBlYXRTeW1ib2xTdHJpbmcocnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZXBlYXRTeW1ib2xDb2RlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCByZXBlYXRTeW1ib2xDb21wb25lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXBlYXRTeW1ib2xDb2RlO1xyXG4gIH1cclxuICBzZXQgcmVwZWF0U3ltYm9sQ29tcG9uZW50KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucmVwZWF0U3ltYm9sQ29kZSA9IHZhbHVlO1xyXG4gICAgaWYgKFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzW3ZhbHVlXSA9PT0gU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuQ29kYSkge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0UmVwZWF0U3ltYm9sKFNtb1JlcGVhdFN5bWJvbC5wb3NpdGlvbnMuZW5kLCBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5Db2RhKTtcclxuICAgIH1cclxuICAgIGlmIChTbW9SZXBlYXRTeW1ib2wuc3ltYm9sc1t2YWx1ZV0gPT09IFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzLlRvQ29kYSkge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0UmVwZWF0U3ltYm9sKFNtb1JlcGVhdFN5bWJvbC5wb3NpdGlvbnMuZW5kLCBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5Ub0NvZGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzW3ZhbHVlXSA9PT0gU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuU2Vnbm8pIHtcclxuICAgICAgdGhpcy52aWV3LnNldFJlcGVhdFN5bWJvbChTbW9SZXBlYXRTeW1ib2wucG9zaXRpb25zLmVuZCwgU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuU2Vnbm8pO1xyXG4gICAgfVxyXG4gICAgaWYgKFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzW3ZhbHVlXSA9PT0gU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuRHNBbENvZGEpIHtcclxuICAgICAgdGhpcy52aWV3LnNldFJlcGVhdFN5bWJvbChTbW9SZXBlYXRTeW1ib2wucG9zaXRpb25zLmVuZCwgU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuRHNBbENvZGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzW3ZhbHVlXSA9PT0gU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuRGNBbENvZGEpIHtcclxuICAgICAgdGhpcy52aWV3LnNldFJlcGVhdFN5bWJvbChTbW9SZXBlYXRTeW1ib2wucG9zaXRpb25zLmVuZCwgU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuRGNBbENvZGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzW3ZhbHVlXSA9PT0gU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuRHNBbEZpbmUpIHtcclxuICAgICAgdGhpcy52aWV3LnNldFJlcGVhdFN5bWJvbChTbW9SZXBlYXRTeW1ib2wucG9zaXRpb25zLmVuZCwgU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuRHNBbEZpbmUpO1xyXG4gICAgfVxyXG4gICAgaWYgKFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzW3ZhbHVlXSA9PT0gU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuRGNBbEZpbmUpIHtcclxuICAgICAgdGhpcy52aWV3LnNldFJlcGVhdFN5bWJvbChTbW9SZXBlYXRTeW1ib2wucG9zaXRpb25zLmVuZCwgU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuRGNBbEZpbmUpO1xyXG4gICAgfVxyXG4gICAgaWYgKFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzW3ZhbHVlXSA9PT0gU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuRmluZSkge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0UmVwZWF0U3ltYm9sKFNtb1JlcGVhdFN5bWJvbC5wb3NpdGlvbnMuZW5kLCBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5GaW5lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBlbmRCYXJDb21wb25lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lbmRCYXJDb2RlO1xyXG4gIH1cclxuICBzZXQgZW5kQmFyQ29tcG9uZW50KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZW5kQmFyQ29kZSA9IHZhbHVlO1xyXG4gICAgaWYgKFNtb0JhcmxpbmUuYmFybGluZXNbdmFsdWVdID09PSBTbW9CYXJsaW5lLmJhcmxpbmVzLmVuZFJlcGVhdCkge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0QmFybGluZShTbW9CYXJsaW5lLnBvc2l0aW9ucy5lbmQsIFNtb0JhcmxpbmUuYmFybGluZXMuZW5kUmVwZWF0KTtcclxuICAgIH1cclxuICAgIGlmIChTbW9CYXJsaW5lLmJhcmxpbmVzW3ZhbHVlXSA9PT0gU21vQmFybGluZS5iYXJsaW5lcy5zdGFydFJlcGVhdCkge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0QmFybGluZShTbW9CYXJsaW5lLnBvc2l0aW9ucy5zdGFydCwgU21vQmFybGluZS5iYXJsaW5lcy5zdGFydFJlcGVhdCk7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vQmFybGluZS5iYXJsaW5lc1t2YWx1ZV0gPT09IFNtb0JhcmxpbmUuYmFybGluZXMuc2luZ2xlQmFyKSB7XHJcbiAgICAgIHRoaXMudmlldy5zZXRCYXJsaW5lKFNtb0JhcmxpbmUucG9zaXRpb25zLmVuZCwgU21vQmFybGluZS5iYXJsaW5lcy5zaW5nbGVCYXIpO1xyXG4gICAgfVxyXG4gICAgaWYgKFNtb0JhcmxpbmUuYmFybGluZXNbdmFsdWVdID09PSBTbW9CYXJsaW5lLmJhcmxpbmVzLmRvdWJsZUJhcikge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0QmFybGluZShTbW9CYXJsaW5lLnBvc2l0aW9ucy5lbmQsIFNtb0JhcmxpbmUuYmFybGluZXMuZG91YmxlQmFyKTtcclxuICAgIH1cclxuICAgIGlmIChTbW9CYXJsaW5lLmJhcmxpbmVzW3ZhbHVlXSA9PT0gU21vQmFybGluZS5iYXJsaW5lcy5lbmRCYXIpIHtcclxuICAgICAgdGhpcy52aWV3LnNldEJhcmxpbmUoU21vQmFybGluZS5wb3NpdGlvbnMuZW5kLCBTbW9CYXJsaW5lLmJhcmxpbmVzLmVuZEJhcik7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vQmFybGluZS5iYXJsaW5lc1t2YWx1ZV0gPT09IFNtb0JhcmxpbmUuYmFybGluZXMubm9CYXIpIHtcclxuICAgICAgdGhpcy52aWV3LnNldEJhcmxpbmUoU21vQmFybGluZS5wb3NpdGlvbnMuZW5kLCBTbW9CYXJsaW5lLmJhcmxpbmVzLm5vQmFyKTtcclxuICAgIH0gICBcclxuICB9XHJcbiAgZ2V0IHN0YXJ0QmFyQ29tcG9uZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhcnRCYXJDb2RlO1xyXG4gIH1cclxuICBzZXQgc3RhcnRCYXJDb21wb25lbnQodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdGFydEJhckNvZGUgPSB2YWx1ZTtcclxuICAgIGlmIChTbW9CYXJsaW5lLmJhcmxpbmVzW3ZhbHVlXSA9PT0gU21vQmFybGluZS5iYXJsaW5lcy5zdGFydFJlcGVhdCkge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0QmFybGluZShTbW9CYXJsaW5lLnBvc2l0aW9ucy5zdGFydCwgU21vQmFybGluZS5iYXJsaW5lcy5zdGFydFJlcGVhdCk7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vQmFybGluZS5iYXJsaW5lc1t2YWx1ZV0gPT09IFNtb0JhcmxpbmUuYmFybGluZXMuc2luZ2xlQmFyKSB7XHJcbiAgICAgIHRoaXMudmlldy5zZXRCYXJsaW5lKFNtb0JhcmxpbmUucG9zaXRpb25zLnN0YXJ0LCBTbW9CYXJsaW5lLmJhcmxpbmVzLnNpbmdsZUJhcik7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vQmFybGluZS5iYXJsaW5lc1t2YWx1ZV0gPT09IFNtb0JhcmxpbmUuYmFybGluZXMubm9CYXIpIHtcclxuICAgICAgdGhpcy52aWV3LnNldEJhcmxpbmUoU21vQmFybGluZS5wb3NpdGlvbnMuc3RhcnQsIFNtb0JhcmxpbmUuYmFybGluZXMubm9CYXIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBhc3luYyBjb21taXQoKSB7XHJcbiAgfVxyXG4gIGFzeW5jIGNhbmNlbCgpIHtcclxuICAgIGF3YWl0IHRoaXMudmlldy51bmRvKCk7XHJcbiAgfVxyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBTdWlEaWFsb2dcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTdWlFbmRpbmdzRGlhbG9nIGV4dGVuZHMgU3VpRGlhbG9nQWRhcHRlckJhc2U8U3VpRW5kaW5nc0FkYXB0ZXI+IHtcclxuICBzdGF0aWMgZ2V0IGFwcGx5VG8oKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzY29yZTogMCwgc2VsZWN0ZWQ6IDEsIHJlbWFpbmluZzogM1xyXG4gICAgfTtcclxuICB9XHJcbiAgLy8gZXhwb3J0IHR5cGUgQ2xlZiA9ICd0cmVibGUnIHwgJ2Jhc3MnIHwgJ3Rlbm9yJyB8ICdhbHRvJyB8ICdzb3ByYW5vJyB8ICdwZXJjdXNzaW9uJ1xyXG4gIC8vfCAnbWV6em8tc29wcmFubycgfCAnYmFyaXRvbmUtYycgfCAnYmFyaXRvbmUtZicgfCAnc3ViYmFzcycgfCAnZnJlbmNoJztcclxuICBzdGF0aWMgZGlhbG9nRWxlbWVudHM6IERpYWxvZ0RlZmluaXRpb24gPVxyXG4gICAge1xyXG4gICAgICBsYWJlbDogJ01lYXN1cmUgRW5kaW5ncycsXHJcbiAgICAgIGVsZW1lbnRzOlxyXG4gICAgICAgIFt7XHJcbiAgICAgICAgICBzbW9OYW1lOiAnc3RhcnRCYXJDb21wb25lbnQnLFxyXG4gICAgICAgICAgY29udHJvbDogJ1N1aVN0YXJ0QmFyQnV0dG9uQ29tcG9uZW50JyxcclxuICAgICAgICAgIGxhYmVsOiAnTWVhc3VyZSBTdGFydCdcclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICBzbW9OYW1lOiAnZW5kQmFyQ29tcG9uZW50JyxcclxuICAgICAgICAgIGNvbnRyb2w6ICdTdWlFbmRCYXJCdXR0b25Db21wb25lbnQnLFxyXG4gICAgICAgICAgbGFiZWw6ICdNZWFzdXJlIEVuZCdcclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICBzbW9OYW1lOiAncmVwZWF0U3ltYm9sQ29tcG9uZW50JyxcclxuICAgICAgICAgIGNvbnRyb2w6ICdTdWlSZXBlYXRTeW1ib2xCdXR0b25Db21wb25lbnQnLFxyXG4gICAgICAgICAgbGFiZWw6ICdSZXBlYXQgU3ltYm9sJ1xyXG4gICAgICAgIH1dLFxyXG4gICAgICBzdGF0aWNUZXh0OiBbXVxyXG4gICAgfTtcclxuICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzOiBTdWlEaWFsb2dQYXJhbXMpIHtcclxuICAgIGNvbnN0IGFkYXB0ZXIgPSBuZXcgU3VpRW5kaW5nc0FkYXB0ZXIocGFyYW1ldGVycy52aWV3KTtcclxuICAgIHN1cGVyKFN1aUVuZGluZ3NEaWFsb2cuZGlhbG9nRWxlbWVudHMsIHsgYWRhcHRlciwgLi4ucGFyYW1ldGVycyB9KTtcclxuICAgIHRoaXMuZGlzcGxheU9wdGlvbnMgPSBbJ0JJTkRDT01QT05FTlRTJywgJ0RSQUdHQUJMRScsICdLRVlCT0FSRF9DQVBUVVJFJywgJ01PRElGSUVSUE9TJywgJ0hJREVSRU1PVkUnXTtcclxuICB9XHJcbiAgYXN5bmMgY2hhbmdlZCgpIHtcclxuICAgIHRoaXMudmlldy51bmRvVHJhY2tlck1lYXN1cmVTZWxlY3Rpb25zKCdlbmRpbmdzIGRpYWxvZycpO1xyXG4gICAgYXdhaXQgc3VwZXIuY2hhbmdlZCgpO1xyXG4gIH1cclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/dialogs/endings.ts\n");
|
|
1243
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SuiEndBarButtonComponent: () => (/* binding */ SuiEndBarButtonComponent),\n/* harmony export */ SuiEndingsAdapter: () => (/* binding */ SuiEndingsAdapter),\n/* harmony export */ SuiEndingsDialog: () => (/* binding */ SuiEndingsDialog),\n/* harmony export */ SuiRepeatSymbolButtonComponent: () => (/* binding */ SuiRepeatSymbolButtonComponent),\n/* harmony export */ SuiStartBarButtonComponent: () => (/* binding */ SuiStartBarButtonComponent),\n/* harmony export */ endingsButtonFactory: () => (/* binding */ endingsButtonFactory)\n/* harmony export */ });\n/* harmony import */ var _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../smo/data/measureModifiers */ \"./src/smo/data/measureModifiers.ts\");\n/* harmony import */ var _adapter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adapter */ \"./src/ui/dialogs/adapter.ts\");\n/* harmony import */ var _components_buttonArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/buttonArray */ \"./src/ui/dialogs/components/buttonArray.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n/**\n * @category SuiDialog\n * Buttons with ending or repeat functions\n * @returns SuiButtonArrayParameters\n */\nconst endingsButtonFactory = () => {\n const params = {\n label: 'Measure Endings',\n rows: [{\n label: 'Endings',\n classes: 'pad-span',\n buttons: [\n {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-end_rpt',\n id: 'endRepeat',\n label: 'end repeat',\n smoName: 'endRepeat'\n }, {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-end_bar',\n id: 'endBar',\n label: 'end barline',\n smoName: 'endBar'\n }, {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-end_bar',\n id: 'doubleBar',\n label: 'double barline',\n smoName: 'doubleBar'\n }, {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text',\n id: 'noBarEnd',\n label: 'no barline',\n smoName: 'noBar'\n }, {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-single_bar',\n id: 'singleBarEnd',\n label: 'single bar',\n smoName: 'singleBar'\n }\n ]\n }\n ]\n };\n return params;\n};\n/**\n * @category SuiDialog\n * Buttons with ending or repeat functions\n * @returns SuiButtonArrayParameters\n */\nconst startBarButtonFactory = () => {\n const params = {\n label: 'Measure Endings',\n rows: [{\n label: 'Start Bar',\n classes: 'text-span',\n buttons: [\n {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-start_rpt',\n id: 'startRepeat',\n label: 'start repeat',\n smoName: 'startRepeat'\n },\n {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text',\n id: 'noBarStart',\n label: 'no barline',\n smoName: 'noBar'\n }, {\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-smo ribbon-button-text icon-single_bar',\n id: 'singleBarStart',\n label: 'single bar',\n smoName: 'singleBar'\n }\n ]\n }]\n };\n return params;\n};\n/**\n * @category SuiDialog\n * Buttons with ending or repeat functions\n * @returns SuiButtonArrayParameters\n */\nconst repeatSymbolButtonFactory = () => {\n const params = {\n label: 'Repeat Symbols',\n rows: [{\n label: 'Repeat',\n classes: 'text-span',\n buttons: [\n {\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'DcAlCoda',\n label: 'DC Al Coda',\n text: 'DC Al Coda',\n smoName: 'DcAlCoda'\n }, {\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'DsAlCoda',\n label: 'DS Al Coda',\n text: 'DS Al Coda',\n smoName: 'DsAlCoda'\n }, {\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'ToCoda',\n label: 'to Coda',\n text: 'to Coda',\n smoName: 'ToCoda'\n }\n ]\n }, {\n label: 'Text',\n classes: 'pad-span',\n buttons: [{\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'DcAlFine',\n label: 'DC Al Fine',\n text: 'DC Al Fine',\n smoName: 'DcAlFine'\n }, {\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'DsAlFine',\n label: 'DS Al Fine',\n text: 'DS Al Fine',\n smoName: 'DsAlFine'\n }, {\n classes: 'icon collapseParent button-array repetext',\n control: 'SuiButtonArrayButton',\n icon: '',\n id: 'Fine',\n label: 'Fine',\n text: 'Fine',\n smoName: 'Fine'\n }]\n }, {\n label: 'Symbols',\n classes: 'pad-span',\n buttons: [{\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n icon: 'icon-bravura ribbon-button-text icon-lg icon-segno',\n id: 'Segno',\n label: 'Segno',\n smoName: 'Segno'\n },\n {\n icon: 'icon-bravura icon-lg icon-coda',\n classes: 'icon collapseParent button-array',\n control: 'SuiButtonArrayButton',\n smoName: 'Coda',\n label: 'Coda',\n id: 'Coda'\n }\n ]\n }]\n };\n return params;\n};\n/**\n * @category SuiDialog\n */\nclass SuiEndBarButtonComponent extends _components_buttonArray__WEBPACK_IMPORTED_MODULE_2__.SuiButtonArrayComponent {\n constructor(dialog, parameter) {\n super(dialog, parameter, endingsButtonFactory);\n }\n}\n/**\n * @category SuiDialog\n */\nclass SuiStartBarButtonComponent extends _components_buttonArray__WEBPACK_IMPORTED_MODULE_2__.SuiButtonArrayComponent {\n constructor(dialog, parameter) {\n super(dialog, parameter, startBarButtonFactory);\n }\n}\n/**\n * @category SuiDialog\n */\nclass SuiRepeatSymbolButtonComponent extends _components_buttonArray__WEBPACK_IMPORTED_MODULE_2__.SuiButtonArrayComponent {\n constructor(dialog, parameter) {\n super(dialog, parameter, repeatSymbolButtonFactory);\n }\n}\n/**\n * Smo dialog adapter for measure endings and repeats.\n * @category SuiDialog\n */\nclass SuiEndingsAdapter extends _adapter__WEBPACK_IMPORTED_MODULE_1__.SuiComponentAdapter {\n constructor(view) {\n super(view);\n this.view.groupUndo(true);\n const measure = this.view.tracker.selections[0].measure;\n this.startBarCode = _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlineString(measure.getStartBarline());\n this.endBarCode = _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlineString(measure.getEndBarline());\n const rs = measure.getRepeatSymbol();\n if (rs) {\n this.repeatSymbolCode = _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.repeatSymbolString(rs);\n }\n else {\n this.repeatSymbolCode = '';\n }\n }\n get repeatSymbolComponent() {\n return this.repeatSymbolCode;\n }\n set repeatSymbolComponent(value) {\n this.repeatSymbolCode = value;\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Coda) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Coda);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.ToCoda) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.ToCoda);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Segno) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Segno);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DsAlCoda) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DsAlCoda);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DcAlCoda) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DcAlCoda);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DsAlFine) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DsAlFine);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DcAlFine) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.DcAlFine);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Fine) {\n this.view.setRepeatSymbol(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoRepeatSymbol.symbols.Fine);\n }\n }\n get endBarComponent() {\n return this.endBarCode;\n }\n set endBarComponent(value) {\n this.endBarCode = value;\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.endRepeat) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.endRepeat);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.startRepeat) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.start, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.startRepeat);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.singleBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.singleBar);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.doubleBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.doubleBar);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.endBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.endBar);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.noBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.end, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.noBar);\n }\n }\n get startBarComponent() {\n return this.startBarCode;\n }\n set startBarComponent(value) {\n this.startBarCode = value;\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.startRepeat) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.start, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.startRepeat);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.singleBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.start, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.singleBar);\n }\n if (_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines[value] === _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.noBar) {\n this.view.setBarline(_smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.positions.start, _smo_data_measureModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoBarline.barlines.noBar);\n }\n }\n commit() {\n return __awaiter(this, void 0, void 0, function* () {\n });\n }\n cancel() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.view.undo();\n });\n }\n remove() {\n return __awaiter(this, void 0, void 0, function* () {\n });\n }\n}\n/**\n * @category SuiDialog\n */\nclass SuiEndingsDialog extends _adapter__WEBPACK_IMPORTED_MODULE_1__.SuiDialogAdapterBase {\n static get applyTo() {\n return {\n score: 0, selected: 1, remaining: 3\n };\n }\n constructor(parameters) {\n const adapter = new SuiEndingsAdapter(parameters.view);\n super(SuiEndingsDialog.dialogElements, Object.assign({ adapter }, parameters));\n this.displayOptions = ['BINDCOMPONENTS', 'DRAGGABLE', 'KEYBOARD_CAPTURE', 'MODIFIERPOS', 'HIDEREMOVE'];\n }\n changed() {\n const _super = Object.create(null, {\n changed: { get: () => super.changed }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this.view.undoTrackerMeasureSelections('endings dialog');\n yield _super.changed.call(this);\n });\n }\n}\n// export type Clef = 'treble' | 'bass' | 'tenor' | 'alto' | 'soprano' | 'percussion'\n//| 'mezzo-soprano' | 'baritone-c' | 'baritone-f' | 'subbass' | 'french';\nSuiEndingsDialog.dialogElements = {\n label: 'Measure Endings',\n elements: [{\n smoName: 'startBarComponent',\n control: 'SuiStartBarButtonComponent',\n label: 'Measure Start'\n }, {\n smoName: 'endBarComponent',\n control: 'SuiEndBarButtonComponent',\n label: 'Measure End'\n }, {\n smoName: 'repeatSymbolComponent',\n control: 'SuiRepeatSymbolButtonComponent',\n label: 'Repeat Symbol'\n }],\n staticText: []\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUUsMEJBQTBCO1lBQ25DLEtBQUssRUFBRSxhQUFhO1NBQ3JCLEVBQUU7WUFDRCxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsS0FBSyxFQUFFLGVBQWU7U0FDdkIsQ0FBQztJQUNKLFVBQVUsRUFBRSxFQUFFO0NBQ2YsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL1Ntby8uL3NyYy91aS9kaWFsb2dzL2VuZGluZ3MudHM/MjdlMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBbU21vb3NpY10oaHR0cHM6Ly9naXRodWIuY29tL0Fhcm9uRGF2aWROZXdtYW4vU21vb3NpYylcclxuLy8gQ29weXJpZ2h0IChjKSBBYXJvbiBEYXZpZCBOZXdtYW4gMjAyMS5cclxuaW1wb3J0IHsgU3VpU2NvcmVWaWV3T3BlcmF0aW9ucyB9IGZyb20gJy4uLy4uL3JlbmRlci9zdWkvc2NvcmVWaWV3T3BlcmF0aW9ucyc7XHJcbmltcG9ydCB7IERpYWxvZ0RlZmluaXRpb24sIFN1aURpYWxvZ1BhcmFtcyB9IGZyb20gJy4vZGlhbG9nJztcclxuaW1wb3J0IHsgU21vQmFybGluZSwgU21vUmVwZWF0U3ltYm9sIH0gZnJvbSAnLi4vLi4vc21vL2RhdGEvbWVhc3VyZU1vZGlmaWVycyc7XHJcbmltcG9ydCB7IHJldmVyc2VTdGF0aWNNYXAgfSBmcm9tICcuLi8uLi9zbW8vZGF0YS9jb21tb24nO1xyXG5pbXBvcnQgeyBTdWlDb21wb25lbnRBZGFwdGVyLCBTdWlEaWFsb2dBZGFwdGVyQmFzZSB9IGZyb20gJy4vYWRhcHRlcic7XHJcbmltcG9ydCB7IGdldEJ1dHRvbnNGY24sIFN1aUJ1dHRvbkFycmF5Q29tcG9uZW50LCBTdWlCdXR0b25BcnJheVBhcmFtZXRlcnMgfSBmcm9tICcuL2NvbXBvbmVudHMvYnV0dG9uQXJyYXknO1xyXG5pbXBvcnQgeyBTdWlEaWFsb2dOb3RpZmllciwgU3VpQmFzZUNvbXBvbmVudFBhcmFtcyB9IGZyb20gJy4vY29tcG9uZW50cy9iYXNlQ29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgU3VpRGlhbG9nXHJcbiAqIEJ1dHRvbnMgd2l0aCBlbmRpbmcgb3IgcmVwZWF0IGZ1bmN0aW9uc1xyXG4gKiBAcmV0dXJucyBTdWlCdXR0b25BcnJheVBhcmFtZXRlcnNcclxuICovXHJcbmV4cG9ydCBjb25zdCBlbmRpbmdzQnV0dG9uRmFjdG9yeTogZ2V0QnV0dG9uc0ZjbiA9ICgpID0+IHtcclxuICBjb25zdCBwYXJhbXM6IFN1aUJ1dHRvbkFycmF5UGFyYW1ldGVycyA9IHtcclxuICAgIGxhYmVsOiAnTWVhc3VyZSBFbmRpbmdzJyxcclxuICAgIHJvd3M6IFt7XHJcbiAgICAgIGxhYmVsOiAnRW5kaW5ncycsXHJcbiAgICAgIGNsYXNzZXM6ICdwYWQtc3BhbicsXHJcbiAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXknLFxyXG4gICAgICAgICAgY29udHJvbDogJ1N1aUJ1dHRvbkFycmF5QnV0dG9uJyxcclxuICAgICAgICAgIGljb246ICdpY29uLXNtbyByaWJib24tYnV0dG9uLXRleHQgaWNvbi1lbmRfcnB0JyxcclxuICAgICAgICAgIGlkOiAnZW5kUmVwZWF0JyxcclxuICAgICAgICAgIGxhYmVsOiAnZW5kIHJlcGVhdCcsXHJcbiAgICAgICAgICBzbW9OYW1lOiAnZW5kUmVwZWF0J1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheScsXHJcbiAgICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgICAgaWNvbjogJ2ljb24tc21vIHJpYmJvbi1idXR0b24tdGV4dCBpY29uLWVuZF9iYXInLFxyXG4gICAgICAgICAgaWQ6ICdlbmRCYXInLFxyXG4gICAgICAgICAgbGFiZWw6ICdlbmQgYmFybGluZScsXHJcbiAgICAgICAgICBzbW9OYW1lOiAnZW5kQmFyJ1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheScsXHJcbiAgICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgICAgaWNvbjogJ2ljb24tc21vIHJpYmJvbi1idXR0b24tdGV4dCBpY29uLWVuZF9iYXInLFxyXG4gICAgICAgICAgaWQ6ICdkb3VibGVCYXInLFxyXG4gICAgICAgICAgbGFiZWw6ICdkb3VibGUgYmFybGluZScsXHJcbiAgICAgICAgICBzbW9OYW1lOiAnZG91YmxlQmFyJ1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheScsXHJcbiAgICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgICAgaWNvbjogJ2ljb24tc21vIHJpYmJvbi1idXR0b24tdGV4dCcsXHJcbiAgICAgICAgICBpZDogJ25vQmFyRW5kJyxcclxuICAgICAgICAgIGxhYmVsOiAnbm8gYmFybGluZScsXHJcbiAgICAgICAgICBzbW9OYW1lOiAnbm9CYXInXHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgY2xhc3NlczogJ2ljb24gY29sbGFwc2VQYXJlbnQgYnV0dG9uLWFycmF5JyxcclxuICAgICAgICAgIGNvbnRyb2w6ICdTdWlCdXR0b25BcnJheUJ1dHRvbicsXHJcbiAgICAgICAgICBpY29uOiAnaWNvbi1zbW8gcmliYm9uLWJ1dHRvbi10ZXh0IGljb24tc2luZ2xlX2JhcicsXHJcbiAgICAgICAgICBpZDogJ3NpbmdsZUJhckVuZCcsXHJcbiAgICAgICAgICBsYWJlbDogJ3NpbmdsZSBiYXInLFxyXG4gICAgICAgICAgc21vTmFtZTogJ3NpbmdsZUJhcidcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICAgIF1cclxuICB9XHJcbiAgcmV0dXJuIHBhcmFtcztcclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IFN1aURpYWxvZ1xyXG4gKiBCdXR0b25zIHdpdGggZW5kaW5nIG9yIHJlcGVhdCBmdW5jdGlvbnNcclxuICogQHJldHVybnMgU3VpQnV0dG9uQXJyYXlQYXJhbWV0ZXJzXHJcbiAqL1xyXG5jb25zdCBzdGFydEJhckJ1dHRvbkZhY3Rvcnk6IGdldEJ1dHRvbnNGY24gPSAoKSA9PiB7XHJcbiAgY29uc3QgcGFyYW1zOiBTdWlCdXR0b25BcnJheVBhcmFtZXRlcnMgPSB7XHJcbiAgICBsYWJlbDogJ01lYXN1cmUgRW5kaW5ncycsXHJcbiAgICByb3dzOiBbe1xyXG4gICAgICBsYWJlbDogJ1N0YXJ0IEJhcicsXHJcbiAgICAgIGNsYXNzZXM6ICd0ZXh0LXNwYW4nLFxyXG4gICAgICBidXR0b25zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xhc3NlczogJ2ljb24gY29sbGFwc2VQYXJlbnQgYnV0dG9uLWFycmF5JyxcclxuICAgICAgICAgIGNvbnRyb2w6ICdTdWlCdXR0b25BcnJheUJ1dHRvbicsXHJcbiAgICAgICAgICBpY29uOiAnaWNvbi1zbW8gcmliYm9uLWJ1dHRvbi10ZXh0IGljb24tc3RhcnRfcnB0JyxcclxuICAgICAgICAgIGlkOiAnc3RhcnRSZXBlYXQnLFxyXG4gICAgICAgICAgbGFiZWw6ICdzdGFydCByZXBlYXQnLFxyXG4gICAgICAgICAgc21vTmFtZTogJ3N0YXJ0UmVwZWF0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xhc3NlczogJ2ljb24gY29sbGFwc2VQYXJlbnQgYnV0dG9uLWFycmF5JyxcclxuICAgICAgICAgIGNvbnRyb2w6ICdTdWlCdXR0b25BcnJheUJ1dHRvbicsXHJcbiAgICAgICAgICBpY29uOiAnaWNvbi1zbW8gcmliYm9uLWJ1dHRvbi10ZXh0JyxcclxuICAgICAgICAgIGlkOiAnbm9CYXJTdGFydCcsXHJcbiAgICAgICAgICBsYWJlbDogJ25vIGJhcmxpbmUnLFxyXG4gICAgICAgICAgc21vTmFtZTogJ25vQmFyJ1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheScsXHJcbiAgICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgICAgaWNvbjogJ2ljb24tc21vIHJpYmJvbi1idXR0b24tdGV4dCBpY29uLXNpbmdsZV9iYXInLFxyXG4gICAgICAgICAgaWQ6ICdzaW5nbGVCYXJTdGFydCcsXHJcbiAgICAgICAgICBsYWJlbDogJ3NpbmdsZSBiYXInLFxyXG4gICAgICAgICAgc21vTmFtZTogJ3NpbmdsZUJhcidcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1dXHJcbiAgfTtcclxuICByZXR1cm4gcGFyYW1zO1xyXG59XHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgU3VpRGlhbG9nXHJcbiAqIEJ1dHRvbnMgd2l0aCBlbmRpbmcgb3IgcmVwZWF0IGZ1bmN0aW9uc1xyXG4gKiBAcmV0dXJucyBTdWlCdXR0b25BcnJheVBhcmFtZXRlcnNcclxuICovXHJcbmNvbnN0IHJlcGVhdFN5bWJvbEJ1dHRvbkZhY3Rvcnk6IGdldEJ1dHRvbnNGY24gPSAoKSA9PiB7XHJcbiAgY29uc3QgcGFyYW1zOiBTdWlCdXR0b25BcnJheVBhcmFtZXRlcnMgPSB7XHJcbiAgICBsYWJlbDogJ1JlcGVhdCBTeW1ib2xzJyxcclxuICAgIHJvd3M6IFt7XHJcbiAgICAgIGxhYmVsOiAnUmVwZWF0JyxcclxuICAgICAgY2xhc3NlczogJ3RleHQtc3BhbicsXHJcbiAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXkgcmVwZXRleHQnLFxyXG4gICAgICAgICAgY29udHJvbDogJ1N1aUJ1dHRvbkFycmF5QnV0dG9uJyxcclxuICAgICAgICAgIGljb246ICcnLFxyXG4gICAgICAgICAgaWQ6ICdEY0FsQ29kYScsXHJcbiAgICAgICAgICBsYWJlbDogJ0RDIEFsIENvZGEnLFxyXG4gICAgICAgICAgdGV4dDogJ0RDIEFsIENvZGEnLFxyXG4gICAgICAgICAgc21vTmFtZTogJ0RjQWxDb2RhJ1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheSByZXBldGV4dCcsXHJcbiAgICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgICAgaWNvbjogJycsXHJcbiAgICAgICAgICBpZDogJ0RzQWxDb2RhJyxcclxuICAgICAgICAgIGxhYmVsOiAnRFMgQWwgQ29kYScsXHJcbiAgICAgICAgICB0ZXh0OiAnRFMgQWwgQ29kYScsXHJcbiAgICAgICAgICBzbW9OYW1lOiAnRHNBbENvZGEnXHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgY2xhc3NlczogJ2ljb24gY29sbGFwc2VQYXJlbnQgYnV0dG9uLWFycmF5IHJlcGV0ZXh0JyxcclxuICAgICAgICAgIGNvbnRyb2w6ICdTdWlCdXR0b25BcnJheUJ1dHRvbicsXHJcbiAgICAgICAgICBpY29uOiAnJyxcclxuICAgICAgICAgIGlkOiAnVG9Db2RhJyxcclxuICAgICAgICAgIGxhYmVsOiAndG8gQ29kYScsXHJcbiAgICAgICAgICB0ZXh0OiAndG8gQ29kYScsXHJcbiAgICAgICAgICBzbW9OYW1lOiAnVG9Db2RhJ1xyXG4gICAgICAgIH1dXHJcbiAgICB9LCB7XHJcbiAgICAgIGxhYmVsOiAnVGV4dCcsXHJcbiAgICAgIGNsYXNzZXM6ICdwYWQtc3BhbicsXHJcbiAgICAgIGJ1dHRvbnM6IFt7XHJcbiAgICAgICAgY2xhc3NlczogJ2ljb24gY29sbGFwc2VQYXJlbnQgYnV0dG9uLWFycmF5IHJlcGV0ZXh0JyxcclxuICAgICAgICBjb250cm9sOiAnU3VpQnV0dG9uQXJyYXlCdXR0b24nLFxyXG4gICAgICAgIGljb246ICcnLFxyXG4gICAgICAgIGlkOiAnRGNBbEZpbmUnLFxyXG4gICAgICAgIGxhYmVsOiAnREMgQWwgRmluZScsXHJcbiAgICAgICAgdGV4dDogJ0RDIEFsIEZpbmUnLFxyXG4gICAgICAgIHNtb05hbWU6ICdEY0FsRmluZSdcclxuICAgICAgfSwge1xyXG4gICAgICAgIGNsYXNzZXM6ICdpY29uIGNvbGxhcHNlUGFyZW50IGJ1dHRvbi1hcnJheSByZXBldGV4dCcsXHJcbiAgICAgICAgY29udHJvbDogJ1N1aUJ1dHRvbkFycmF5QnV0dG9uJyxcclxuICAgICAgICBpY29uOiAnJyxcclxuICAgICAgICBpZDogJ0RzQWxGaW5lJyxcclxuICAgICAgICBsYWJlbDogJ0RTIEFsIEZpbmUnLFxyXG4gICAgICAgIHRleHQ6ICdEUyBBbCBGaW5lJyxcclxuICAgICAgICBzbW9OYW1lOiAnRHNBbEZpbmUnXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXkgcmVwZXRleHQnLFxyXG4gICAgICAgIGNvbnRyb2w6ICdTdWlCdXR0b25BcnJheUJ1dHRvbicsXHJcbiAgICAgICAgaWNvbjogJycsXHJcbiAgICAgICAgaWQ6ICdGaW5lJyxcclxuICAgICAgICBsYWJlbDogJ0ZpbmUnLFxyXG4gICAgICAgIHRleHQ6ICdGaW5lJyxcclxuICAgICAgICBzbW9OYW1lOiAnRmluZSdcclxuICAgICAgfV1cclxuICAgIH0sIHtcclxuICAgICAgbGFiZWw6ICdTeW1ib2xzJyxcclxuICAgICAgY2xhc3NlczogJ3BhZC1zcGFuJyxcclxuICAgICAgYnV0dG9uczogW3tcclxuICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXknLFxyXG4gICAgICAgIGNvbnRyb2w6ICdTdWlCdXR0b25BcnJheUJ1dHRvbicsXHJcbiAgICAgICAgaWNvbjogJ2ljb24tYnJhdnVyYSByaWJib24tYnV0dG9uLXRleHQgaWNvbi1sZyBpY29uLXNlZ25vJyxcclxuICAgICAgICBpZDogJ1NlZ25vJyxcclxuICAgICAgICBsYWJlbDogJ1NlZ25vJyxcclxuICAgICAgICBzbW9OYW1lOiAnU2Vnbm8nXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpY29uOiAnaWNvbi1icmF2dXJhIGljb24tbGcgaWNvbi1jb2RhJyxcclxuICAgICAgICBjbGFzc2VzOiAnaWNvbiBjb2xsYXBzZVBhcmVudCBidXR0b24tYXJyYXknLFxyXG4gICAgICAgIGNvbnRyb2w6ICdTdWlCdXR0b25BcnJheUJ1dHRvbicsXHJcbiAgICAgICAgc21vTmFtZTogJ0NvZGEnLFxyXG4gICAgICAgIGxhYmVsOiAnQ29kYScsXHJcbiAgICAgICAgaWQ6ICdDb2RhJ1xyXG4gICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1dXHJcbiAgfTtcclxuICByZXR1cm4gcGFyYW1zO1xyXG59XHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgU3VpRGlhbG9nXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3VpRW5kQmFyQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgU3VpQnV0dG9uQXJyYXlDb21wb25lbnQge1xyXG4gIGNvbnN0cnVjdG9yKGRpYWxvZzogU3VpRGlhbG9nTm90aWZpZXIsIHBhcmFtZXRlcjogU3VpQmFzZUNvbXBvbmVudFBhcmFtcykge1xyXG4gICAgc3VwZXIoZGlhbG9nLCBwYXJhbWV0ZXIsIGVuZGluZ3NCdXR0b25GYWN0b3J5KTtcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBTdWlEaWFsb2dcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTdWlTdGFydEJhckJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIFN1aUJ1dHRvbkFycmF5Q29tcG9uZW50IHtcclxuICBjb25zdHJ1Y3RvcihkaWFsb2c6IFN1aURpYWxvZ05vdGlmaWVyLCBwYXJhbWV0ZXI6IFN1aUJhc2VDb21wb25lbnRQYXJhbXMpIHtcclxuICAgIHN1cGVyKGRpYWxvZywgcGFyYW1ldGVyLCBzdGFydEJhckJ1dHRvbkZhY3RvcnkpO1xyXG4gIH1cclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IFN1aURpYWxvZ1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN1aVJlcGVhdFN5bWJvbEJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIFN1aUJ1dHRvbkFycmF5Q29tcG9uZW50IHtcclxuICBjb25zdHJ1Y3RvcihkaWFsb2c6IFN1aURpYWxvZ05vdGlmaWVyLCBwYXJhbWV0ZXI6IFN1aUJhc2VDb21wb25lbnRQYXJhbXMpIHtcclxuICAgIHN1cGVyKGRpYWxvZywgcGFyYW1ldGVyLCByZXBlYXRTeW1ib2xCdXR0b25GYWN0b3J5KTtcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIFNtbyBkaWFsb2cgYWRhcHRlciBmb3IgbWVhc3VyZSBlbmRpbmdzIGFuZCByZXBlYXRzLlxyXG4gKiBAY2F0ZWdvcnkgU3VpRGlhbG9nXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3VpRW5kaW5nc0FkYXB0ZXIgZXh0ZW5kcyBTdWlDb21wb25lbnRBZGFwdGVyIHtcclxuICBzdGFydEJhckNvZGU6IHN0cmluZztcclxuICBlbmRCYXJDb2RlOiBzdHJpbmc7XHJcbiAgcmVwZWF0U3ltYm9sQ29kZTogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKHZpZXc6IFN1aVNjb3JlVmlld09wZXJhdGlvbnMpIHtcclxuICAgIHN1cGVyKHZpZXcpO1xyXG4gICAgdGhpcy52aWV3Lmdyb3VwVW5kbyh0cnVlKTtcclxuICAgIGNvbnN0IG1lYXN1cmUgPSB0aGlzLnZpZXcudHJhY2tlci5zZWxlY3Rpb25zWzBdLm1lYXN1cmU7XHJcbiAgICB0aGlzLnN0YXJ0QmFyQ29kZSA9IFNtb0JhcmxpbmUuYmFybGluZVN0cmluZyhtZWFzdXJlLmdldFN0YXJ0QmFybGluZSgpKTtcclxuICAgIHRoaXMuZW5kQmFyQ29kZSA9IFNtb0JhcmxpbmUuYmFybGluZVN0cmluZyhtZWFzdXJlLmdldEVuZEJhcmxpbmUoKSk7XHJcbiAgICBjb25zdCBycyA9IG1lYXN1cmUuZ2V0UmVwZWF0U3ltYm9sKCk7XHJcbiAgICBpZiAocnMpIHtcclxuICAgICAgdGhpcy5yZXBlYXRTeW1ib2xDb2RlID0gU21vUmVwZWF0U3ltYm9sLnJlcGVhdFN5bWJvbFN0cmluZyhycyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlcGVhdFN5bWJvbENvZGUgPSAnJztcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHJlcGVhdFN5bWJvbENvbXBvbmVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnJlcGVhdFN5bWJvbENvZGU7XHJcbiAgfVxyXG4gIHNldCByZXBlYXRTeW1ib2xDb21wb25lbnQodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5yZXBlYXRTeW1ib2xDb2RlID0gdmFsdWU7XHJcbiAgICBpZiAoU21vUmVwZWF0U3ltYm9sLnN5bWJvbHNbdmFsdWVdID09PSBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5Db2RhKSB7XHJcbiAgICAgIHRoaXMudmlldy5zZXRSZXBlYXRTeW1ib2woU21vUmVwZWF0U3ltYm9sLnBvc2l0aW9ucy5lbmQsIFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzLkNvZGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzW3ZhbHVlXSA9PT0gU21vUmVwZWF0U3ltYm9sLnN5bWJvbHMuVG9Db2RhKSB7XHJcbiAgICAgIHRoaXMudmlldy5zZXRSZXBlYXRTeW1ib2woU21vUmVwZWF0U3ltYm9sLnBvc2l0aW9ucy5lbmQsIFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzLlRvQ29kYSk7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vUmVwZWF0U3ltYm9sLnN5bWJvbHNbdmFsdWVdID09PSBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5TZWdubykge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0UmVwZWF0U3ltYm9sKFNtb1JlcGVhdFN5bWJvbC5wb3NpdGlvbnMuZW5kLCBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5TZWdubyk7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vUmVwZWF0U3ltYm9sLnN5bWJvbHNbdmFsdWVdID09PSBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5Ec0FsQ29kYSkge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0UmVwZWF0U3ltYm9sKFNtb1JlcGVhdFN5bWJvbC5wb3NpdGlvbnMuZW5kLCBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5Ec0FsQ29kYSk7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vUmVwZWF0U3ltYm9sLnN5bWJvbHNbdmFsdWVdID09PSBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5EY0FsQ29kYSkge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0UmVwZWF0U3ltYm9sKFNtb1JlcGVhdFN5bWJvbC5wb3NpdGlvbnMuZW5kLCBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5EY0FsQ29kYSk7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vUmVwZWF0U3ltYm9sLnN5bWJvbHNbdmFsdWVdID09PSBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5Ec0FsRmluZSkge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0UmVwZWF0U3ltYm9sKFNtb1JlcGVhdFN5bWJvbC5wb3NpdGlvbnMuZW5kLCBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5Ec0FsRmluZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vUmVwZWF0U3ltYm9sLnN5bWJvbHNbdmFsdWVdID09PSBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5EY0FsRmluZSkge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0UmVwZWF0U3ltYm9sKFNtb1JlcGVhdFN5bWJvbC5wb3NpdGlvbnMuZW5kLCBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5EY0FsRmluZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vUmVwZWF0U3ltYm9sLnN5bWJvbHNbdmFsdWVdID09PSBTbW9SZXBlYXRTeW1ib2wuc3ltYm9scy5GaW5lKSB7XHJcbiAgICAgIHRoaXMudmlldy5zZXRSZXBlYXRTeW1ib2woU21vUmVwZWF0U3ltYm9sLnBvc2l0aW9ucy5lbmQsIFNtb1JlcGVhdFN5bWJvbC5zeW1ib2xzLkZpbmUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZEJhckNvbXBvbmVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmVuZEJhckNvZGU7XHJcbiAgfVxyXG4gIHNldCBlbmRCYXJDb21wb25lbnQodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5lbmRCYXJDb2RlID0gdmFsdWU7XHJcbiAgICBpZiAoU21vQmFybGluZS5iYXJsaW5lc1t2YWx1ZV0gPT09IFNtb0JhcmxpbmUuYmFybGluZXMuZW5kUmVwZWF0KSB7XHJcbiAgICAgIHRoaXMudmlldy5zZXRCYXJsaW5lKFNtb0JhcmxpbmUucG9zaXRpb25zLmVuZCwgU21vQmFybGluZS5iYXJsaW5lcy5lbmRSZXBlYXQpO1xyXG4gICAgfVxyXG4gICAgaWYgKFNtb0JhcmxpbmUuYmFybGluZXNbdmFsdWVdID09PSBTbW9CYXJsaW5lLmJhcmxpbmVzLnN0YXJ0UmVwZWF0KSB7XHJcbiAgICAgIHRoaXMudmlldy5zZXRCYXJsaW5lKFNtb0JhcmxpbmUucG9zaXRpb25zLnN0YXJ0LCBTbW9CYXJsaW5lLmJhcmxpbmVzLnN0YXJ0UmVwZWF0KTtcclxuICAgIH1cclxuICAgIGlmIChTbW9CYXJsaW5lLmJhcmxpbmVzW3ZhbHVlXSA9PT0gU21vQmFybGluZS5iYXJsaW5lcy5zaW5nbGVCYXIpIHtcclxuICAgICAgdGhpcy52aWV3LnNldEJhcmxpbmUoU21vQmFybGluZS5wb3NpdGlvbnMuZW5kLCBTbW9CYXJsaW5lLmJhcmxpbmVzLnNpbmdsZUJhcik7XHJcbiAgICB9XHJcbiAgICBpZiAoU21vQmFybGluZS5iYXJsaW5lc1t2YWx1ZV0gPT09IFNtb0JhcmxpbmUuYmFybGluZXMuZG91YmxlQmFyKSB7XHJcbiAgICAgIHRoaXMudmlldy5zZXRCYXJsaW5lKFNtb0JhcmxpbmUucG9zaXRpb25zLmVuZCwgU21vQmFybGluZS5iYXJsaW5lcy5kb3VibGVCYXIpO1xyXG4gICAgfVxyXG4gICAgaWYgKFNtb0JhcmxpbmUuYmFybGluZXNbdmFsdWVdID09PSBTbW9CYXJsaW5lLmJhcmxpbmVzLmVuZEJhcikge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0QmFybGluZShTbW9CYXJsaW5lLnBvc2l0aW9ucy5lbmQsIFNtb0JhcmxpbmUuYmFybGluZXMuZW5kQmFyKTtcclxuICAgIH1cclxuICAgIGlmIChTbW9CYXJsaW5lLmJhcmxpbmVzW3ZhbHVlXSA9PT0gU21vQmFybGluZS5iYXJsaW5lcy5ub0Jhcikge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0QmFybGluZShTbW9CYXJsaW5lLnBvc2l0aW9ucy5lbmQsIFNtb0JhcmxpbmUuYmFybGluZXMubm9CYXIpO1xyXG4gICAgfSAgIFxyXG4gIH1cclxuICBnZXQgc3RhcnRCYXJDb21wb25lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGFydEJhckNvZGU7XHJcbiAgfVxyXG4gIHNldCBzdGFydEJhckNvbXBvbmVudCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0YXJ0QmFyQ29kZSA9IHZhbHVlO1xyXG4gICAgaWYgKFNtb0JhcmxpbmUuYmFybGluZXNbdmFsdWVdID09PSBTbW9CYXJsaW5lLmJhcmxpbmVzLnN0YXJ0UmVwZWF0KSB7XHJcbiAgICAgIHRoaXMudmlldy5zZXRCYXJsaW5lKFNtb0JhcmxpbmUucG9zaXRpb25zLnN0YXJ0LCBTbW9CYXJsaW5lLmJhcmxpbmVzLnN0YXJ0UmVwZWF0KTtcclxuICAgIH1cclxuICAgIGlmIChTbW9CYXJsaW5lLmJhcmxpbmVzW3ZhbHVlXSA9PT0gU21vQmFybGluZS5iYXJsaW5lcy5zaW5nbGVCYXIpIHtcclxuICAgICAgdGhpcy52aWV3LnNldEJhcmxpbmUoU21vQmFybGluZS5wb3NpdGlvbnMuc3RhcnQsIFNtb0JhcmxpbmUuYmFybGluZXMuc2luZ2xlQmFyKTtcclxuICAgIH1cclxuICAgIGlmIChTbW9CYXJsaW5lLmJhcmxpbmVzW3ZhbHVlXSA9PT0gU21vQmFybGluZS5iYXJsaW5lcy5ub0Jhcikge1xyXG4gICAgICB0aGlzLnZpZXcuc2V0QmFybGluZShTbW9CYXJsaW5lLnBvc2l0aW9ucy5zdGFydCwgU21vQmFybGluZS5iYXJsaW5lcy5ub0Jhcik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIGNvbW1pdCgpIHtcclxuICB9XHJcbiAgYXN5bmMgY2FuY2VsKCkge1xyXG4gICAgYXdhaXQgdGhpcy52aWV3LnVuZG8oKTtcclxuICB9XHJcbiAgYXN5bmMgcmVtb3ZlKCkge1xyXG4gIH1cclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IFN1aURpYWxvZ1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN1aUVuZGluZ3NEaWFsb2cgZXh0ZW5kcyBTdWlEaWFsb2dBZGFwdGVyQmFzZTxTdWlFbmRpbmdzQWRhcHRlcj4ge1xyXG4gIHN0YXRpYyBnZXQgYXBwbHlUbygpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNjb3JlOiAwLCBzZWxlY3RlZDogMSwgcmVtYWluaW5nOiAzXHJcbiAgICB9O1xyXG4gIH1cclxuICAvLyBleHBvcnQgdHlwZSBDbGVmID0gJ3RyZWJsZScgfCAnYmFzcycgfCAndGVub3InIHwgJ2FsdG8nIHwgJ3NvcHJhbm8nIHwgJ3BlcmN1c3Npb24nXHJcbiAgLy98ICdtZXp6by1zb3ByYW5vJyB8ICdiYXJpdG9uZS1jJyB8ICdiYXJpdG9uZS1mJyB8ICdzdWJiYXNzJyB8ICdmcmVuY2gnO1xyXG4gIHN0YXRpYyBkaWFsb2dFbGVtZW50czogRGlhbG9nRGVmaW5pdGlvbiA9XHJcbiAgICB7XHJcbiAgICAgIGxhYmVsOiAnTWVhc3VyZSBFbmRpbmdzJyxcclxuICAgICAgZWxlbWVudHM6XHJcbiAgICAgICAgW3tcclxuICAgICAgICAgIHNtb05hbWU6ICdzdGFydEJhckNvbXBvbmVudCcsXHJcbiAgICAgICAgICBjb250cm9sOiAnU3VpU3RhcnRCYXJCdXR0b25Db21wb25lbnQnLFxyXG4gICAgICAgICAgbGFiZWw6ICdNZWFzdXJlIFN0YXJ0J1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIHNtb05hbWU6ICdlbmRCYXJDb21wb25lbnQnLFxyXG4gICAgICAgICAgY29udHJvbDogJ1N1aUVuZEJhckJ1dHRvbkNvbXBvbmVudCcsXHJcbiAgICAgICAgICBsYWJlbDogJ01lYXN1cmUgRW5kJ1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIHNtb05hbWU6ICdyZXBlYXRTeW1ib2xDb21wb25lbnQnLFxyXG4gICAgICAgICAgY29udHJvbDogJ1N1aVJlcGVhdFN5bWJvbEJ1dHRvbkNvbXBvbmVudCcsXHJcbiAgICAgICAgICBsYWJlbDogJ1JlcGVhdCBTeW1ib2wnXHJcbiAgICAgICAgfV0sXHJcbiAgICAgIHN0YXRpY1RleHQ6IFtdXHJcbiAgICB9O1xyXG4gIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnM6IFN1aURpYWxvZ1BhcmFtcykge1xyXG4gICAgY29uc3QgYWRhcHRlciA9IG5ldyBTdWlFbmRpbmdzQWRhcHRlcihwYXJhbWV0ZXJzLnZpZXcpO1xyXG4gICAgc3VwZXIoU3VpRW5kaW5nc0RpYWxvZy5kaWFsb2dFbGVtZW50cywgeyBhZGFwdGVyLCAuLi5wYXJhbWV0ZXJzIH0pO1xyXG4gICAgdGhpcy5kaXNwbGF5T3B0aW9ucyA9IFsnQklORENPTVBPTkVOVFMnLCAnRFJBR0dBQkxFJywgJ0tFWUJPQVJEX0NBUFRVUkUnLCAnTU9ESUZJRVJQT1MnLCAnSElERVJFTU9WRSddO1xyXG4gIH1cclxuICBhc3luYyBjaGFuZ2VkKCkge1xyXG4gICAgdGhpcy52aWV3LnVuZG9UcmFja2VyTWVhc3VyZVNlbGVjdGlvbnMoJ2VuZGluZ3MgZGlhbG9nJyk7XHJcbiAgICBhd2FpdCBzdXBlci5jaGFuZ2VkKCk7XHJcbiAgfVxyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/dialogs/endings.ts\n");
|
|
1244
1244
|
|
|
1245
1245
|
/***/ }),
|
|
1246
1246
|
|
|
@@ -1460,7 +1460,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1460
1460
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1461
1461
|
|
|
1462
1462
|
"use strict";
|
|
1463
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SuiScorePreferencesAdapter: () => (/* binding */ SuiScorePreferencesAdapter),\n/* harmony export */ SuiScorePreferencesDialog: () => (/* binding */ SuiScorePreferencesDialog)\n/* harmony export */ });\n/* harmony import */ var _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../smo/data/scoreModifiers */ \"./src/smo/data/scoreModifiers.ts\");\n/* harmony import */ var _adapter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adapter */ \"./src/ui/dialogs/adapter.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n// [Smoosic](https://github.com/AaronDavidNewman/Smoosic)\n// Copyright (c) Aaron David Newman 2021.\n\n\nconst deepCopy = (x) => JSON.parse(JSON.stringify(x));\n/**\n * @category SuiDialog\n */\nclass SuiScorePreferencesAdapter extends _adapter__WEBPACK_IMPORTED_MODULE_1__.SuiComponentAdapter {\n constructor(view) {\n super(view);\n this.preferences = new _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoScorePreferences(view.score.preferences);\n this.backup = JSON.parse(JSON.stringify(this.preferences));\n this.originalTransposeScore = this.preferences.transposingScore;\n }\n get autoAdvance() {\n return this.preferences.autoAdvance;\n }\n set autoAdvance(value) {\n this.preferences.autoAdvance = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get autoPlay() {\n return this.preferences.autoPlay;\n }\n set autoPlay(value) {\n this.preferences.autoPlay = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get showPiano() {\n return this.preferences.showPiano;\n }\n set showPiano(value) {\n this.preferences.showPiano = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get hideEmptyLines() {\n return this.preferences.hideEmptyLines;\n }\n set hideEmptyLines(value) {\n this.preferences.hideEmptyLines = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get defaultDupleDuration() {\n return this.preferences.defaultDupleDuration;\n }\n set defaultDupleDuration(value) {\n this.preferences.defaultDupleDuration = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get defaultTripleDuration() {\n return this.preferences.defaultTripleDuration;\n }\n set defaultTripleDuration(value) {\n this.preferences.defaultTripleDuration = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get transposingScore() {\n return this.preferences.transposingScore;\n }\n set transposingScore(value) {\n this.preferences.transposingScore = value;\n this.view.updateScorePreferences(this.preferences);\n }\n cancel() {\n return __awaiter(this, void 0, void 0, function* () {\n const p1 = JSON.stringify(this.preferences);\n const p2 = JSON.stringify(this.backup);\n if (p1 !== p2) {\n yield this.view.updateScorePreferences(this.backup);\n }\n });\n }\n commit() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.originalTransposeScore !== this.preferences.transposingScore) {\n yield this.view.refreshViewport();\n return;\n }\n return;\n });\n }\n}\n/**\n * @category SuiDialog\n */\nclass SuiScorePreferencesDialog extends _adapter__WEBPACK_IMPORTED_MODULE_1__.SuiDialogAdapterBase {\n constructor(params) {\n const adapter = new SuiScorePreferencesAdapter(params.view);\n super(SuiScorePreferencesDialog.dialogElements, Object.assign({ adapter }, params));\n }\n}\nSuiScorePreferencesDialog.dialogElements = {\n label: 'Score Preferences',\n elements: [{\n smoName: 'autoAdvance',\n control: 'SuiToggleComponent',\n label: 'Auto-advance after pitch'\n }, {\n smoName: 'autoPlay',\n control: 'SuiToggleComponent',\n label: 'Auto-play sounds for note entry'\n }, {\n smoName: 'showPiano',\n control: 'SuiToggleComponent',\n label: 'Show Piano widget'\n }, {\n smoName: 'transposingScore',\n control: 'SuiToggleComponent',\n label: 'Tranpose Score'\n }, {\n smoName: 'hideEmptyLines',\n control: 'SuiToggleComponent',\n label: 'Hide Empty Lines'\n }, {\n smoName: 'defaultDupleDuration',\n control: 'SuiDropdownComponent',\n label: 'Default Duration (even meter)',\n dataType: 'int',\n options: [{\n value: 4096,\n label: '1/4'\n }, {\n value: 2048,\n label: '1/8'\n }]\n }, {\n smoName: 'defaultTripleDuration',\n control: 'SuiDropdownComponent',\n label: 'Default Duration (triple meter)',\n dataType: 'int',\n options: [{\n value: 6144,\n label: 'dotted 1/4'\n }, {\n value: 2048,\n label: '1/8'\n }]\n }],\n staticText: []\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O1NBQ0gsQ0FBQztJQUNGLFVBQVUsRUFBRSxFQUFFO0NBQ2YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TbW8vLi9zcmMvdWkvZGlhbG9ncy9wcmVmZXJlbmNlcy50cz8zZTkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFtTbW9vc2ljXShodHRwczovL2dpdGh1Yi5jb20vQWFyb25EYXZpZE5ld21hbi9TbW9vc2ljKVxyXG4vLyBDb3B5cmlnaHQgKGMpIEFhcm9uIERhdmlkIE5ld21hbiAyMDIxLlxyXG5pbXBvcnQgeyBTbW9TY29yZVByZWZlcmVuY2VzIH0gZnJvbSAnLi4vLi4vc21vL2RhdGEvc2NvcmVNb2RpZmllcnMnO1xyXG5pbXBvcnQgeyBTdWlTY29yZVZpZXdPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vcmVuZGVyL3N1aS9zY29yZVZpZXdPcGVyYXRpb25zJztcclxuaW1wb3J0IHsgU3VpQ29tcG9uZW50QWRhcHRlciwgU3VpRGlhbG9nQWRhcHRlckJhc2UgfSBmcm9tICcuL2FkYXB0ZXInO1xyXG5pbXBvcnQgeyBEaWFsb2dEZWZpbml0aW9uLCBTdWlEaWFsb2dQYXJhbXMgfSBmcm9tICcuL2RpYWxvZyc7XHJcbmltcG9ydCB7IFByb21pc2VIZWxwZXJzIH0gZnJvbSAnLi4vLi4vY29tbW9uL3Byb21pc2VIZWxwZXJzJztcclxuXHJcbmRlY2xhcmUgdmFyICQ6IGFueTtcclxuXHJcbmNvbnN0IGRlZXBDb3B5ID0gKHg6IGFueSkgPT4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh4KSk7XHJcblxyXG4vKipcclxuICogQGNhdGVnb3J5IFN1aURpYWxvZ1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN1aVNjb3JlUHJlZmVyZW5jZXNBZGFwdGVyIGV4dGVuZHMgU3VpQ29tcG9uZW50QWRhcHRlciB7XHJcbiAgcHJlZmVyZW5jZXM6IFNtb1Njb3JlUHJlZmVyZW5jZXM7XHJcbiAgYmFja3VwOiBTbW9TY29yZVByZWZlcmVuY2VzO1xyXG4gIG9yaWdpbmFsVHJhbnNwb3NlU2NvcmU6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IodmlldzogU3VpU2NvcmVWaWV3T3BlcmF0aW9ucykge1xyXG4gICAgc3VwZXIodmlldyk7XHJcbiAgICB0aGlzLnByZWZlcmVuY2VzID0gbmV3IFNtb1Njb3JlUHJlZmVyZW5jZXModmlldy5zY29yZS5wcmVmZXJlbmNlcyk7XHJcbiAgICB0aGlzLmJhY2t1cCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wcmVmZXJlbmNlcykpO1xyXG4gICAgdGhpcy5vcmlnaW5hbFRyYW5zcG9zZVNjb3JlID0gdGhpcy5wcmVmZXJlbmNlcy50cmFuc3Bvc2luZ1Njb3JlO1xyXG4gIH1cclxuICBnZXQgYXV0b0FkdmFuY2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmVmZXJlbmNlcy5hdXRvQWR2YW5jZTtcclxuICB9XHJcbiAgc2V0IGF1dG9BZHZhbmNlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnByZWZlcmVuY2VzLmF1dG9BZHZhbmNlID0gdmFsdWU7XHJcbiAgICB0aGlzLnZpZXcudXBkYXRlU2NvcmVQcmVmZXJlbmNlcyh0aGlzLnByZWZlcmVuY2VzKTtcclxuICB9XHJcbiAgZ2V0IGF1dG9QbGF5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJlZmVyZW5jZXMuYXV0b1BsYXk7XHJcbiAgfVxyXG4gIHNldCBhdXRvUGxheSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5wcmVmZXJlbmNlcy5hdXRvUGxheSA9IHZhbHVlO1xyXG4gICAgdGhpcy52aWV3LnVwZGF0ZVNjb3JlUHJlZmVyZW5jZXModGhpcy5wcmVmZXJlbmNlcyk7XHJcbiAgfVxyXG4gIGdldCBzaG93UGlhbm8oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmVmZXJlbmNlcy5zaG93UGlhbm87XHJcbiAgfVxyXG4gIHNldCBzaG93UGlhbm8odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucHJlZmVyZW5jZXMuc2hvd1BpYW5vID0gdmFsdWU7XHJcbiAgICB0aGlzLnZpZXcudXBkYXRlU2NvcmVQcmVmZXJlbmNlcyh0aGlzLnByZWZlcmVuY2VzKTtcclxuICB9XHJcbiAgZ2V0IGhpZGVFbXB0eUxpbmVzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJlZmVyZW5jZXMuaGlkZUVtcHR5TGluZXM7XHJcbiAgfVxyXG4gIHNldCBoaWRlRW1wdHlMaW5lcyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5wcmVmZXJlbmNlcy5oaWRlRW1wdHlMaW5lcyA9IHZhbHVlO1xyXG4gICAgdGhpcy52aWV3LnVwZGF0ZVNjb3JlUHJlZmVyZW5jZXModGhpcy5wcmVmZXJlbmNlcyk7XHJcbiAgfVxyXG4gIGdldCBkZWZhdWx0RHVwbGVEdXJhdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VzLmRlZmF1bHREdXBsZUR1cmF0aW9uO1xyXG4gIH1cclxuICBzZXQgZGVmYXVsdER1cGxlRHVyYXRpb24odmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5wcmVmZXJlbmNlcy5kZWZhdWx0RHVwbGVEdXJhdGlvbiA9IHZhbHVlO1xyXG4gICAgdGhpcy52aWV3LnVwZGF0ZVNjb3JlUHJlZmVyZW5jZXModGhpcy5wcmVmZXJlbmNlcyk7XHJcbiAgfVxyXG4gIGdldCBkZWZhdWx0VHJpcGxlRHVyYXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmVmZXJlbmNlcy5kZWZhdWx0VHJpcGxlRHVyYXRpb247XHJcbiAgfVxyXG4gIHNldCBkZWZhdWx0VHJpcGxlRHVyYXRpb24odmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5wcmVmZXJlbmNlcy5kZWZhdWx0VHJpcGxlRHVyYXRpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMudmlldy51cGRhdGVTY29yZVByZWZlcmVuY2VzKHRoaXMucHJlZmVyZW5jZXMpO1xyXG4gIH1cclxuICBnZXQgdHJhbnNwb3NpbmdTY29yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VzLnRyYW5zcG9zaW5nU2NvcmU7XHJcbiAgfVxyXG4gIHNldCB0cmFuc3Bvc2luZ1Njb3JlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnByZWZlcmVuY2VzLnRyYW5zcG9zaW5nU2NvcmUgPSB2YWx1ZTtcclxuICAgIHRoaXMudmlldy51cGRhdGVTY29yZVByZWZlcmVuY2VzKHRoaXMucHJlZmVyZW5jZXMpO1xyXG4gIH1cclxuICBhc3luYyBjYW5jZWwoKSB7XHJcbiAgICBjb25zdCBwMSA9IEpTT04uc3RyaW5naWZ5KHRoaXMucHJlZmVyZW5jZXMpO1xyXG4gICAgY29uc3QgcDIgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmJhY2t1cCk7XHJcbiAgICBpZiAocDEgIT09IHAyKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMudmlldy51cGRhdGVTY29yZVByZWZlcmVuY2VzKHRoaXMuYmFja3VwKTtcclxuICAgIH1cclxuICB9XHJcbiAgYXN5bmMgY29tbWl0KCkge1xyXG4gICAgaWYgKHRoaXMub3JpZ2luYWxUcmFuc3Bvc2VTY29yZSAhPT0gdGhpcy5wcmVmZXJlbmNlcy50cmFuc3Bvc2luZ1Njb3JlKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMudmlldy5yZWZyZXNoVmlld3BvcnQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxufVxyXG4vKipcclxuICogQGNhdGVnb3J5IFN1aURpYWxvZ1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN1aVNjb3JlUHJlZmVyZW5jZXNEaWFsb2cgZXh0ZW5kcyBTdWlEaWFsb2dBZGFwdGVyQmFzZTxTdWlTY29yZVByZWZlcmVuY2VzQWRhcHRlcj4ge1xyXG4gIHN0YXRpYyBkaWFsb2dFbGVtZW50czogRGlhbG9nRGVmaW5pdGlvbiA9XHJcbiAgICB7XHJcbiAgICAgIGxhYmVsOiAnU2NvcmUgUHJlZmVyZW5jZXMnLFxyXG4gICAgICBlbGVtZW50czogW3tcclxuICAgICAgICBzbW9OYW1lOiAnYXV0b0FkdmFuY2UnLFxyXG4gICAgICAgIGNvbnRyb2w6ICdTdWlUb2dnbGVDb21wb25lbnQnLFxyXG4gICAgICAgIGxhYmVsOiAnQXV0by1hZHZhbmNlIGFmdGVyIHBpdGNoJ1xyXG4gICAgICB9LCB7XHJcbiAgICAgICAgc21vTmFtZTogJ2F1dG9QbGF5JyxcclxuICAgICAgICBjb250cm9sOiAnU3VpVG9nZ2xlQ29tcG9uZW50JyxcclxuICAgICAgICBsYWJlbDogJ0F1dG8tcGxheSBzb3VuZHMgZm9yIG5vdGUgZW50cnknXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBzbW9OYW1lOiAnc2hvd1BpYW5vJyxcclxuICAgICAgICBjb250cm9sOiAnU3VpVG9nZ2xlQ29tcG9uZW50JyxcclxuICAgICAgICBsYWJlbDogJ1Nob3cgUGlhbm8gd2lkZ2V0J1xyXG4gICAgICB9LCAge1xyXG4gICAgICAgIHNtb05hbWU6ICd0cmFuc3Bvc2luZ1Njb3JlJyxcclxuICAgICAgICBjb250cm9sOiAnU3VpVG9nZ2xlQ29tcG9uZW50JyxcclxuICAgICAgICBsYWJlbDogJ1RyYW5wb3NlIFNjb3JlJ1xyXG4gICAgICB9LCB7XHJcbiAgICAgICAgc21vTmFtZTogJ2hpZGVFbXB0eUxpbmVzJyxcclxuICAgICAgICBjb250cm9sOiAnU3VpVG9nZ2xlQ29tcG9uZW50JyxcclxuICAgICAgICBsYWJlbDogJ0hpZGUgRW1wdHkgTGluZXMnXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBzbW9OYW1lOiAnZGVmYXVsdER1cGxlRHVyYXRpb24nLFxyXG4gICAgICAgIGNvbnRyb2w6ICdTdWlEcm9wZG93bkNvbXBvbmVudCcsXHJcbiAgICAgICAgbGFiZWw6ICdEZWZhdWx0IER1cmF0aW9uIChldmVuIG1ldGVyKScsXHJcbiAgICAgICAgZGF0YVR5cGU6ICdpbnQnLFxyXG4gICAgICAgIG9wdGlvbnM6IFt7XHJcbiAgICAgICAgICB2YWx1ZTogNDA5NixcclxuICAgICAgICAgIGxhYmVsOiAnMS80J1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIHZhbHVlOiAyMDQ4LFxyXG4gICAgICAgICAgbGFiZWw6ICcxLzgnXHJcbiAgICAgICAgfV1cclxuICAgICAgfSwge1xyXG4gICAgICAgIHNtb05hbWU6ICdkZWZhdWx0VHJpcGxlRHVyYXRpb24nLFxyXG4gICAgICAgIGNvbnRyb2w6ICdTdWlEcm9wZG93bkNvbXBvbmVudCcsXHJcbiAgICAgICAgbGFiZWw6ICdEZWZhdWx0IER1cmF0aW9uICh0cmlwbGUgbWV0ZXIpJyxcclxuICAgICAgICBkYXRhVHlwZTogJ2ludCcsXHJcbiAgICAgICAgb3B0aW9uczogW3tcclxuICAgICAgICAgIHZhbHVlOiA2MTQ0LFxyXG4gICAgICAgICAgbGFiZWw6ICdkb3R0ZWQgMS80J1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIHZhbHVlOiAyMDQ4LFxyXG4gICAgICAgICAgbGFiZWw6ICcxLzgnXHJcbiAgICAgICAgfV1cclxuICAgICAgfV0sXHJcbiAgICAgIHN0YXRpY1RleHQ6IFtdXHJcbiAgICB9XHJcbiAgY29uc3RydWN0b3IocGFyYW1zOiBTdWlEaWFsb2dQYXJhbXMpIHtcclxuICAgIGNvbnN0IGFkYXB0ZXIgPSBuZXcgU3VpU2NvcmVQcmVmZXJlbmNlc0FkYXB0ZXIocGFyYW1zLnZpZXcpO1xyXG4gICAgc3VwZXIoU3VpU2NvcmVQcmVmZXJlbmNlc0RpYWxvZy5kaWFsb2dFbGVtZW50cywgeyBhZGFwdGVyLCAuLi5wYXJhbXMgfSk7XHJcbiAgfVxyXG59XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/dialogs/preferences.ts\n");
|
|
1463
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SuiScorePreferencesAdapter: () => (/* binding */ SuiScorePreferencesAdapter),\n/* harmony export */ SuiScorePreferencesDialog: () => (/* binding */ SuiScorePreferencesDialog)\n/* harmony export */ });\n/* harmony import */ var _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../smo/data/scoreModifiers */ \"./src/smo/data/scoreModifiers.ts\");\n/* harmony import */ var _adapter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adapter */ \"./src/ui/dialogs/adapter.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n// [Smoosic](https://github.com/AaronDavidNewman/Smoosic)\n// Copyright (c) Aaron David Newman 2021.\n\n\nconst deepCopy = (x) => JSON.parse(JSON.stringify(x));\n/**\n * @category SuiDialog\n */\nclass SuiScorePreferencesAdapter extends _adapter__WEBPACK_IMPORTED_MODULE_1__.SuiComponentAdapter {\n constructor(view) {\n super(view);\n this.preferences = new _smo_data_scoreModifiers__WEBPACK_IMPORTED_MODULE_0__.SmoScorePreferences(view.score.preferences);\n this.backup = JSON.parse(JSON.stringify(this.preferences));\n this.originalTransposeScore = this.preferences.transposingScore;\n }\n get autoAdvance() {\n return this.preferences.autoAdvance;\n }\n set autoAdvance(value) {\n this.preferences.autoAdvance = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get autoPlay() {\n return this.preferences.autoPlay;\n }\n set autoPlay(value) {\n this.preferences.autoPlay = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get showPiano() {\n return this.preferences.showPiano;\n }\n set showPiano(value) {\n this.preferences.showPiano = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get autoScrollPlayback() {\n return this.preferences.autoScrollPlayback;\n }\n set autoScrollPlayback(value) {\n this.preferences.autoScrollPlayback = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get hideEmptyLines() {\n return this.preferences.hideEmptyLines;\n }\n set hideEmptyLines(value) {\n this.preferences.hideEmptyLines = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get defaultDupleDuration() {\n return this.preferences.defaultDupleDuration;\n }\n set defaultDupleDuration(value) {\n this.preferences.defaultDupleDuration = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get defaultTripleDuration() {\n return this.preferences.defaultTripleDuration;\n }\n set defaultTripleDuration(value) {\n this.preferences.defaultTripleDuration = value;\n this.view.updateScorePreferences(this.preferences);\n }\n get transposingScore() {\n return this.preferences.transposingScore;\n }\n set transposingScore(value) {\n this.preferences.transposingScore = value;\n this.view.updateScorePreferences(this.preferences);\n }\n cancel() {\n return __awaiter(this, void 0, void 0, function* () {\n const p1 = JSON.stringify(this.preferences);\n const p2 = JSON.stringify(this.backup);\n if (p1 !== p2) {\n yield this.view.updateScorePreferences(this.backup);\n }\n });\n }\n commit() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.originalTransposeScore !== this.preferences.transposingScore) {\n yield this.view.refreshViewport();\n return;\n }\n return;\n });\n }\n}\n/**\n * @category SuiDialog\n */\nclass SuiScorePreferencesDialog extends _adapter__WEBPACK_IMPORTED_MODULE_1__.SuiDialogAdapterBase {\n constructor(params) {\n const adapter = new SuiScorePreferencesAdapter(params.view);\n super(SuiScorePreferencesDialog.dialogElements, Object.assign({ adapter }, params));\n }\n}\nSuiScorePreferencesDialog.dialogElements = {\n label: 'Score Preferences',\n elements: [{\n smoName: 'autoAdvance',\n control: 'SuiToggleComponent',\n label: 'Auto-advance after pitch'\n }, {\n smoName: 'autoPlay',\n control: 'SuiToggleComponent',\n label: 'Auto-play sounds for note entry'\n }, {\n smoName: 'autoScrollPlayback',\n control: 'SuiToggleComponent',\n label: 'Auto-Scroll Playback'\n }, {\n smoName: 'showPiano',\n control: 'SuiToggleComponent',\n label: 'Show Piano widget'\n }, {\n smoName: 'transposingScore',\n control: 'SuiToggleComponent',\n label: 'Tranpose Score'\n }, {\n smoName: 'hideEmptyLines',\n control: 'SuiToggleComponent',\n label: 'Hide Empty Lines'\n }, {\n smoName: 'defaultDupleDuration',\n control: 'SuiDropdownComponent',\n label: 'Default Duration (even meter)',\n dataType: 'int',\n options: [{\n value: 4096,\n label: '1/4'\n }, {\n value: 2048,\n label: '1/8'\n }]\n }, {\n smoName: 'defaultTripleDuration',\n control: 'SuiDropdownComponent',\n label: 'Default Duration (triple meter)',\n dataType: 'int',\n options: [{\n value: 6144,\n label: 'dotted 1/4'\n }, {\n value: 2048,\n label: '1/8'\n }]\n }],\n staticText: []\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUFBRSxLQUFLO2lCQUNiLEVBQUU7b0JBQ0QsS0FBSyxFQUFFLElBQUk7b0JBQ1gsS0FBSyxFQUFFLEtBQUs7aUJBQ2IsQ0FBQztTQUNILEVBQUU7WUFDRCxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLE9BQU8sRUFBRSxzQkFBc0I7WUFDL0IsS0FBSyxFQUFFLGlDQUFpQztZQUN4QyxRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxDQUFDO29CQUNSLEtBQUssRUFBRSxJQUFJO29CQUNYLEtBQUssRUFBRSxZQUFZO2lCQUNwQixFQUFFO29CQUNELEtBQUssRUFBRSxJQUFJO29CQUNYLEtBQUssRUFBRSxLQUFLO2lCQUNiLENBQUM7U0FDSCxDQUFDO0lBQ0YsVUFBVSxFQUFFLEVBQUU7Q0FDZiIsInNvdXJjZXMiOlsid2VicGFjazovL1Ntby8uL3NyYy91aS9kaWFsb2dzL3ByZWZlcmVuY2VzLnRzPzNlOTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gW1Ntb29zaWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9BYXJvbkRhdmlkTmV3bWFuL1Ntb29zaWMpXHJcbi8vIENvcHlyaWdodCAoYykgQWFyb24gRGF2aWQgTmV3bWFuIDIwMjEuXHJcbmltcG9ydCB7IFNtb1Njb3JlUHJlZmVyZW5jZXMgfSBmcm9tICcuLi8uLi9zbW8vZGF0YS9zY29yZU1vZGlmaWVycyc7XHJcbmltcG9ydCB7IFN1aVNjb3JlVmlld09wZXJhdGlvbnMgfSBmcm9tICcuLi8uLi9yZW5kZXIvc3VpL3Njb3JlVmlld09wZXJhdGlvbnMnO1xyXG5pbXBvcnQgeyBTdWlDb21wb25lbnRBZGFwdGVyLCBTdWlEaWFsb2dBZGFwdGVyQmFzZSB9IGZyb20gJy4vYWRhcHRlcic7XHJcbmltcG9ydCB7IERpYWxvZ0RlZmluaXRpb24sIFN1aURpYWxvZ1BhcmFtcyB9IGZyb20gJy4vZGlhbG9nJztcclxuaW1wb3J0IHsgUHJvbWlzZUhlbHBlcnMgfSBmcm9tICcuLi8uLi9jb21tb24vcHJvbWlzZUhlbHBlcnMnO1xyXG5cclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5cclxuY29uc3QgZGVlcENvcHkgPSAoeDogYW55KSA9PiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHgpKTtcclxuXHJcbi8qKlxyXG4gKiBAY2F0ZWdvcnkgU3VpRGlhbG9nXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3VpU2NvcmVQcmVmZXJlbmNlc0FkYXB0ZXIgZXh0ZW5kcyBTdWlDb21wb25lbnRBZGFwdGVyIHtcclxuICBwcmVmZXJlbmNlczogU21vU2NvcmVQcmVmZXJlbmNlcztcclxuICBiYWNrdXA6IFNtb1Njb3JlUHJlZmVyZW5jZXM7XHJcbiAgb3JpZ2luYWxUcmFuc3Bvc2VTY29yZTogYm9vbGVhbjtcclxuICBjb25zdHJ1Y3Rvcih2aWV3OiBTdWlTY29yZVZpZXdPcGVyYXRpb25zKSB7XHJcbiAgICBzdXBlcih2aWV3KTtcclxuICAgIHRoaXMucHJlZmVyZW5jZXMgPSBuZXcgU21vU2NvcmVQcmVmZXJlbmNlcyh2aWV3LnNjb3JlLnByZWZlcmVuY2VzKTtcclxuICAgIHRoaXMuYmFja3VwID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnByZWZlcmVuY2VzKSk7XHJcbiAgICB0aGlzLm9yaWdpbmFsVHJhbnNwb3NlU2NvcmUgPSB0aGlzLnByZWZlcmVuY2VzLnRyYW5zcG9zaW5nU2NvcmU7XHJcbiAgfVxyXG4gIGdldCBhdXRvQWR2YW5jZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VzLmF1dG9BZHZhbmNlO1xyXG4gIH1cclxuICBzZXQgYXV0b0FkdmFuY2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucHJlZmVyZW5jZXMuYXV0b0FkdmFuY2UgPSB2YWx1ZTtcclxuICAgIHRoaXMudmlldy51cGRhdGVTY29yZVByZWZlcmVuY2VzKHRoaXMucHJlZmVyZW5jZXMpO1xyXG4gIH1cclxuICBnZXQgYXV0b1BsYXkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmVmZXJlbmNlcy5hdXRvUGxheTtcclxuICB9XHJcbiAgc2V0IGF1dG9QbGF5KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnByZWZlcmVuY2VzLmF1dG9QbGF5ID0gdmFsdWU7XHJcbiAgICB0aGlzLnZpZXcudXBkYXRlU2NvcmVQcmVmZXJlbmNlcyh0aGlzLnByZWZlcmVuY2VzKTtcclxuICB9XHJcbiAgZ2V0IHNob3dQaWFubygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VzLnNob3dQaWFubztcclxuICB9XHJcbiAgc2V0IHNob3dQaWFubyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5wcmVmZXJlbmNlcy5zaG93UGlhbm8gPSB2YWx1ZTtcclxuICAgIHRoaXMudmlldy51cGRhdGVTY29yZVByZWZlcmVuY2VzKHRoaXMucHJlZmVyZW5jZXMpO1xyXG4gIH1cclxuICBnZXQgYXV0b1Njcm9sbFBsYXliYWNrKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJlZmVyZW5jZXMuYXV0b1Njcm9sbFBsYXliYWNrO1xyXG4gIH1cclxuICBzZXQgYXV0b1Njcm9sbFBsYXliYWNrKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnByZWZlcmVuY2VzLmF1dG9TY3JvbGxQbGF5YmFjayA9IHZhbHVlO1xyXG4gICAgdGhpcy52aWV3LnVwZGF0ZVNjb3JlUHJlZmVyZW5jZXModGhpcy5wcmVmZXJlbmNlcyk7XHJcbiAgfVxyXG4gIGdldCBoaWRlRW1wdHlMaW5lcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnByZWZlcmVuY2VzLmhpZGVFbXB0eUxpbmVzO1xyXG4gIH1cclxuICBzZXQgaGlkZUVtcHR5TGluZXModmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucHJlZmVyZW5jZXMuaGlkZUVtcHR5TGluZXMgPSB2YWx1ZTtcclxuICAgIHRoaXMudmlldy51cGRhdGVTY29yZVByZWZlcmVuY2VzKHRoaXMucHJlZmVyZW5jZXMpO1xyXG4gIH1cclxuICBnZXQgZGVmYXVsdER1cGxlRHVyYXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmVmZXJlbmNlcy5kZWZhdWx0RHVwbGVEdXJhdGlvbjtcclxuICB9XHJcbiAgc2V0IGRlZmF1bHREdXBsZUR1cmF0aW9uKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMucHJlZmVyZW5jZXMuZGVmYXVsdER1cGxlRHVyYXRpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMudmlldy51cGRhdGVTY29yZVByZWZlcmVuY2VzKHRoaXMucHJlZmVyZW5jZXMpO1xyXG4gIH1cclxuICBnZXQgZGVmYXVsdFRyaXBsZUR1cmF0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJlZmVyZW5jZXMuZGVmYXVsdFRyaXBsZUR1cmF0aW9uO1xyXG4gIH1cclxuICBzZXQgZGVmYXVsdFRyaXBsZUR1cmF0aW9uKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMucHJlZmVyZW5jZXMuZGVmYXVsdFRyaXBsZUR1cmF0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLnZpZXcudXBkYXRlU2NvcmVQcmVmZXJlbmNlcyh0aGlzLnByZWZlcmVuY2VzKTtcclxuICB9XHJcbiAgZ2V0IHRyYW5zcG9zaW5nU2NvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmVmZXJlbmNlcy50cmFuc3Bvc2luZ1Njb3JlO1xyXG4gIH1cclxuICBzZXQgdHJhbnNwb3NpbmdTY29yZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5wcmVmZXJlbmNlcy50cmFuc3Bvc2luZ1Njb3JlID0gdmFsdWU7XHJcbiAgICB0aGlzLnZpZXcudXBkYXRlU2NvcmVQcmVmZXJlbmNlcyh0aGlzLnByZWZlcmVuY2VzKTtcclxuICB9XHJcbiAgYXN5bmMgY2FuY2VsKCkge1xyXG4gICAgY29uc3QgcDEgPSBKU09OLnN0cmluZ2lmeSh0aGlzLnByZWZlcmVuY2VzKTtcclxuICAgIGNvbnN0IHAyID0gSlNPTi5zdHJpbmdpZnkodGhpcy5iYWNrdXApO1xyXG4gICAgaWYgKHAxICE9PSBwMikge1xyXG4gICAgICBhd2FpdCB0aGlzLnZpZXcudXBkYXRlU2NvcmVQcmVmZXJlbmNlcyh0aGlzLmJhY2t1cCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIGNvbW1pdCgpIHtcclxuICAgIGlmICh0aGlzLm9yaWdpbmFsVHJhbnNwb3NlU2NvcmUgIT09IHRoaXMucHJlZmVyZW5jZXMudHJhbnNwb3NpbmdTY29yZSkge1xyXG4gICAgICBhd2FpdCB0aGlzLnZpZXcucmVmcmVzaFZpZXdwb3J0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIEBjYXRlZ29yeSBTdWlEaWFsb2dcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTdWlTY29yZVByZWZlcmVuY2VzRGlhbG9nIGV4dGVuZHMgU3VpRGlhbG9nQWRhcHRlckJhc2U8U3VpU2NvcmVQcmVmZXJlbmNlc0FkYXB0ZXI+IHtcclxuICBzdGF0aWMgZGlhbG9nRWxlbWVudHM6IERpYWxvZ0RlZmluaXRpb24gPVxyXG4gICAge1xyXG4gICAgICBsYWJlbDogJ1Njb3JlIFByZWZlcmVuY2VzJyxcclxuICAgICAgZWxlbWVudHM6IFt7XHJcbiAgICAgICAgc21vTmFtZTogJ2F1dG9BZHZhbmNlJyxcclxuICAgICAgICBjb250cm9sOiAnU3VpVG9nZ2xlQ29tcG9uZW50JyxcclxuICAgICAgICBsYWJlbDogJ0F1dG8tYWR2YW5jZSBhZnRlciBwaXRjaCdcclxuICAgICAgfSwge1xyXG4gICAgICAgIHNtb05hbWU6ICdhdXRvUGxheScsXHJcbiAgICAgICAgY29udHJvbDogJ1N1aVRvZ2dsZUNvbXBvbmVudCcsXHJcbiAgICAgICAgbGFiZWw6ICdBdXRvLXBsYXkgc291bmRzIGZvciBub3RlIGVudHJ5J1xyXG4gICAgICB9LCB7XHJcbiAgICAgICAgc21vTmFtZTogJ2F1dG9TY3JvbGxQbGF5YmFjaycsXHJcbiAgICAgICAgY29udHJvbDogJ1N1aVRvZ2dsZUNvbXBvbmVudCcsXHJcbiAgICAgICAgbGFiZWw6ICdBdXRvLVNjcm9sbCBQbGF5YmFjaydcclxuICAgICAgfSwge1xyXG4gICAgICAgIHNtb05hbWU6ICdzaG93UGlhbm8nLFxyXG4gICAgICAgIGNvbnRyb2w6ICdTdWlUb2dnbGVDb21wb25lbnQnLFxyXG4gICAgICAgIGxhYmVsOiAnU2hvdyBQaWFubyB3aWRnZXQnXHJcbiAgICAgIH0sICB7XHJcbiAgICAgICAgc21vTmFtZTogJ3RyYW5zcG9zaW5nU2NvcmUnLFxyXG4gICAgICAgIGNvbnRyb2w6ICdTdWlUb2dnbGVDb21wb25lbnQnLFxyXG4gICAgICAgIGxhYmVsOiAnVHJhbnBvc2UgU2NvcmUnXHJcbiAgICAgIH0sIHtcclxuICAgICAgICBzbW9OYW1lOiAnaGlkZUVtcHR5TGluZXMnLFxyXG4gICAgICAgIGNvbnRyb2w6ICdTdWlUb2dnbGVDb21wb25lbnQnLFxyXG4gICAgICAgIGxhYmVsOiAnSGlkZSBFbXB0eSBMaW5lcydcclxuICAgICAgfSwge1xyXG4gICAgICAgIHNtb05hbWU6ICdkZWZhdWx0RHVwbGVEdXJhdGlvbicsXHJcbiAgICAgICAgY29udHJvbDogJ1N1aURyb3Bkb3duQ29tcG9uZW50JyxcclxuICAgICAgICBsYWJlbDogJ0RlZmF1bHQgRHVyYXRpb24gKGV2ZW4gbWV0ZXIpJyxcclxuICAgICAgICBkYXRhVHlwZTogJ2ludCcsXHJcbiAgICAgICAgb3B0aW9uczogW3tcclxuICAgICAgICAgIHZhbHVlOiA0MDk2LFxyXG4gICAgICAgICAgbGFiZWw6ICcxLzQnXHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgdmFsdWU6IDIwNDgsXHJcbiAgICAgICAgICBsYWJlbDogJzEvOCdcclxuICAgICAgICB9XVxyXG4gICAgICB9LCB7XHJcbiAgICAgICAgc21vTmFtZTogJ2RlZmF1bHRUcmlwbGVEdXJhdGlvbicsXHJcbiAgICAgICAgY29udHJvbDogJ1N1aURyb3Bkb3duQ29tcG9uZW50JyxcclxuICAgICAgICBsYWJlbDogJ0RlZmF1bHQgRHVyYXRpb24gKHRyaXBsZSBtZXRlciknLFxyXG4gICAgICAgIGRhdGFUeXBlOiAnaW50JyxcclxuICAgICAgICBvcHRpb25zOiBbe1xyXG4gICAgICAgICAgdmFsdWU6IDYxNDQsXHJcbiAgICAgICAgICBsYWJlbDogJ2RvdHRlZCAxLzQnXHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgdmFsdWU6IDIwNDgsXHJcbiAgICAgICAgICBsYWJlbDogJzEvOCdcclxuICAgICAgICB9XVxyXG4gICAgICB9XSxcclxuICAgICAgc3RhdGljVGV4dDogW11cclxuICAgIH1cclxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IFN1aURpYWxvZ1BhcmFtcykge1xyXG4gICAgY29uc3QgYWRhcHRlciA9IG5ldyBTdWlTY29yZVByZWZlcmVuY2VzQWRhcHRlcihwYXJhbXMudmlldyk7XHJcbiAgICBzdXBlcihTdWlTY29yZVByZWZlcmVuY2VzRGlhbG9nLmRpYWxvZ0VsZW1lbnRzLCB7IGFkYXB0ZXIsIC4uLnBhcmFtcyB9KTtcclxuICB9XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/dialogs/preferences.ts\n");
|
|
1464
1464
|
|
|
1465
1465
|
/***/ }),
|
|
1466
1466
|
|