From b675a89279dee24b82ec4372da6688fa68d55dc6 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 8 Jun 2020 18:13:11 +0200 Subject: [PATCH 01/83] Modified symbols test-sib --- test/sibmeiTestSibs/symbols.sib | Bin 38817 -> 38917 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/sibmeiTestSibs/symbols.sib b/test/sibmeiTestSibs/symbols.sib index 082a1f2b09a866899efee05f7209550dc24d2663..36a99fb6f5a0e8b4385eacf39c78be00ad0df021 100644 GIT binary patch literal 38917 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

wpCkg}AbymY-$;&XvSdRSim0(; zWH+c>(Hx%p{|~$xrl-Y_SzJ&%HYzkVbIPc0&sHp_Xq|aAX=ik zWBmxLu`274091vCiCofA;LBgXCg(-V>cvtaQg7G??a`F~loLt#?zejCcwiZ?PKrE` zb;R^e01!*b{)LOZVv?N3DuIJycsGh%A}UdA;Of>mgam!Sj!j7-@`@ z!~Y&k1}`ELhWazBxa>W}H!Tv}7-mfCJGYVx5y8abaT7v`Ny9HHeX0hxc$cE@8~2b8$1K;YOI5Vhb|RwhP=qoofiPPeNYR zLfU&aH0Y$2rElI4{v&Vc_V+oU`R%?xlSn+=9kp%0%E9UhFSd_9{<}R$dSVO@Dz%nf zdoJTFpIrKauR^=UMEAsUl_lt72u;2V!?8$C(QCRTJ%6Z`T*SL9{bA59u^x_-XQ#2U zgctLcs6A9=-H&+9ohcaSh&Zx0x$X#$Y^}d>mRX3Ym5y1Dg!h@wlF{lKrd;D?pY)Y2 z-GeTOVEy3F2+rWP8p{%9PnwP3+mX{?7RtR3-R|Ri6;rs&p7FN)dW!%?KeGURL8MD2 zjs&g@cb2lp#hqzg3wle~<;eJ!%uriZOnQm?S$WrUyJ+jjI6ah49!4HOZ&D*#X;7Y}6-Pu1u3|>2MtrLP; z?C`hS_G8}V`PXeGaa+)vYJ~<2

6P&G&WI@1s_gfDq}(S>x`tINSY~3=I`L9qX8+ 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 literal 38817 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 From 7af1549e3c1e6e7e4c3d1ef9f04f7b9da2e4a881 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 8 Jun 2020 18:14:45 +0200 Subject: [PATCH 02/83] Added symbol styles --- src/SymbolStyles.mss | 61 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/SymbolStyles.mss diff --git a/src/SymbolStyles.mss b/src/SymbolStyles.mss new file mode 100644 index 0000000..e25d9cb --- /dev/null +++ b/src/SymbolStyles.mss @@ -0,0 +1,61 @@ +// TODO: Missing symbols +// '240' double staccato +// '241' tripe staccato +// '242' quadruple staccato + + +function InitModifierSymbols () { + //$module(SymbolStyles.mss) + + // Create a dictionary with symbol index number as key (sobj.Index) and a value that determines the element that has to be created + // All the symbols defined here should be created as children of note elements (modifier) + // Artic() is the element that has to be created like -> modifier = libmei.Artic(); + // Every other SparseArray determines an attribute that needs to be added to modifier + // E.g.: '52' becomes + + modifierMap = CreateDictionary( + '52', CreateSparseArray('Artic', CreateSparseArray('artic','heel')), //heel + '53', CreateSparseArray('Artic', CreateSparseArray('artic','toe')), //toe + '54', CreateSparseArray('Artic', CreateSparseArray('artic','toe')), //toe (2) + '160', CreateSparseArray('Artic', CreateSparseArray('artic','stop')), //stop + '162', CreateSparseArray('Artic', CreateSparseArray('artic','open')), //open + '163', CreateSparseArray('Artic', CreateSparseArray('artic','damp')), //damp + '164', CreateSparseArray('Artic', CreateSparseArray('artic','damp')), //damp (2) + '165', CreateSparseArray('Artic', CreateSparseArray('artic','damp')), //damp (3) + '166', CreateSparseArray('Artic', CreateSparseArray('artic','damp')), //damp (4) + '212', CreateSparseArray('Artic', CreateSparseArray('artic','ten'),CreateSparseArray('place','above')), //ten above + '214', CreateSparseArray('Artic', CreateSparseArray('artic','marc'),CreateSparseArray('place','above')), //marc above + '217', CreateSparseArray('Artic', CreateSparseArray('artic','upbow'),CreateSparseArray('place','above')), //upbow above + '218', CreateSparseArray('Artic', CreateSparseArray('artic','dnbow'),CreateSparseArray('place','above')), //dnbow above + '233', CreateSparseArray('Artic', CreateSparseArray('artic','upbow'),CreateSparseArray('place','below')), //upbow below + '234', CreateSparseArray('Artic', CreateSparseArray('artic','dnbow'),CreateSparseArray('place','below')), //dnbow below + '243', CreateSparseArray('Artic', CreateSparseArray('artic','snap')), //snap + '480', CreateSparseArray('Artic', CreateSparseArray('artic','scoop')), //scoop + '481', CreateSparseArray('Artic', CreateSparseArray('artic','fall')), //fall + '490', CreateSparseArray('Artic', CreateSparseArray('artic','fingernail')), //fingernail + '494', CreateSparseArray('Artic', CreateSparseArray('artic','doit')), //doit + '495', CreateSparseArray('Artic', CreateSparseArray('artic','plop')) //plop + ); + + return modifierMap; +} //$end + +function InitControlEventSymbols () { + //$module(SymbolStyles.mss) + + // Create a dictionary with symbol index number as key (sobj.Index) and a value that determines the element that has to be created + // All the symbols defined here should be created as children of measure (control events) + // Turn() is the element that has to be created like -> controlEvent = libmei.Turn(); + // Every other SparseArray determines an attribute that needs to be added to modifier + // E.g.: '36' becomes + + controlEventMap = CreateDictionary( + '36', CreateSparseArray('Mordent', CreateSparseArray('form', 'lower')), //inverted mordent + '37', CreateSparseArray('Mordent', CreateSparseArray('form','upper')), //mordent + '38', CreateSparseArray('Turn', CreateSparseArray('form', 'upper')), //turn + '39', CreateSparseArray('Turn', CreateSparseArray('form', 'lower')) //inverted turn + ); + + return controlEventMap; + +} //$end From 9e058abcae25fad9b28c964d5dc0c80d597f6ace Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 8 Jun 2020 18:15:18 +0200 Subject: [PATCH 03/83] Trying to implement new symbols libmei methods aren't found yet --- src/ExportProcessors.mss | 345 ++++----------------------------------- 1 file changed, 30 insertions(+), 315 deletions(-) diff --git a/src/ExportProcessors.mss b/src/ExportProcessors.mss index cf5899d..e2f93d6 100644 --- a/src/ExportProcessors.mss +++ b/src/ExportProcessors.mss @@ -503,335 +503,50 @@ function ProcessSymbol (sobj) { warnings.Push(utils.Format(_ObjectAssignedToAllVoicesWarning, bar.BarNumber, voicenum, 'Symbol')); } - switch (sobj.Index) + // trills are special + if (sobj.Index = '32') { - case ('32') - { - // trill - trill = GenerateTrill(sobj); - mlines = Self._property:MeasureObjects; - mlines.Push(trill._id); - } - - case ('36') - { - // inverted mordent - mordent = libmei.Mordent(); - libmei.AddAttribute(mordent, 'form', 'lower'); - mordent = AddBarObjectInfoToElement(sobj, mordent); - mlines = Self._property:MeasureObjects; - mlines.Push(mordent._id); - } - - case ('37') - { - // mordent - mordent = libmei.Mordent(); - libmei.AddAttribute(mordent, 'form', 'upper'); - mordent = AddBarObjectInfoToElement(sobj, mordent); - mlines = Self._property:MeasureObjects; - mlines.Push(mordent._id); - } - - case ('38') - { - // turn - turn = libmei.Turn(); - libmei.AddAttribute(turn, 'form', 'upper'); - turn = AddBarObjectInfoToElement(sobj, turn); - mlines = Self._property:MeasureObjects; - mlines.Push(turn._id); - } - - case ('39') - { - // inverted turn - turn = libmei.Turn(); - libmei.AddAttribute(turn, 'form', 'lower'); - turn = AddBarObjectInfoToElement(sobj, turn); - mlines = Self._property:MeasureObjects; - mlines.Push(turn._id); - } - case ('52') - { - nobj = GetNoteObjectAtPosition(sobj); - - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'heel'); - libmei.AddChild(nobj, artic); - } - } - case ('53') - { - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'heel'); - libmei.AddChild(nobj, artic); - } - - } - case ('54') - { - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'toe'); - libmei.AddChild(nobj, artic); - } - - } - case ('55') - { - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'toe'); - libmei.AddChild(nobj, artic); - } - - } - case ('160') - { - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'stop'); - libmei.AddChild(nobj, artic); - } - } - case ('162') - { - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'open'); - libmei.AddChild(nobj, artic); - } - } - case ('163') - { - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'damp'); - libmei.AddChild(nobj, artic); - } - } - case ('164') - { - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'damp'); - libmei.AddChild(nobj, artic); - } - - } - case ('165') - { - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'damp'); - libmei.AddChild(nobj, artic); - } - } - case ('166') - { - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'damp'); - libmei.AddChild(nobj, artic); - } - - } - case ('212') - { - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'ten'); - libmei.AddAttribute(artic, 'place', 'above'); - libmei.AddChild(nobj, artic); - } - } - case ('214') - { - nobj = GetNoteObjectAtPosition(sobj); - - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'marc'); - libmei.AddAttribute(artic, 'place', 'above'); - libmei.AddChild(nobj, artic); - } - } - case ('217') - { - // up-bow above - nobj = GetNoteObjectAtPosition(sobj); - - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'upbow'); - libmei.AddAttribute(artic, 'place', 'above'); - libmei.AddChild(nobj, artic); - } - } - case ('218') - { - // down-bow above - nobj = GetNoteObjectAtPosition(sobj); - - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'dnbow'); - libmei.AddAttribute(artic, 'place', 'above'); - libmei.AddChild(nobj, artic); - } - - } - case ('233') - { - // up-bow below - nobj = GetNoteObjectAtPosition(sobj); - - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'upbow'); - libmei.AddAttribute(artic, 'place', 'below'); - libmei.AddChild(nobj, artic); - } - } - case ('234') - { - // down-bow below - nobj = GetNoteObjectAtPosition(sobj); + // trill + trill = GenerateTrill(sobj); + mlines = Self._property:MeasureObjects; + mlines.Push(trill._id); + } - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttribute(artic, 'artic', 'dnbow'); - libmei.AddAttribute(artic, 'place', 'below'); - libmei.AddChild(nobj, artic); - } - else - { - warnings = Self._property:warnings; - warnings.Push(utils.Format(_ObjectCouldNotFindAttachment, bar.BarNumber, voicenum, sobj.Name)); - } - } - case ('240') - { - // double staccato - return null; - } - case ('241') - { - // triple staccato - return null; - } - case ('242') + // load symbol style dictionaries + // TODO: load them once within Run()? + if (Self._property:ModifierMap = null) { - // quadruple staccato - return null; + Self._property:ModifierMap = InitModifierSymbols(); } - case ('243') - { - // snap - nobj = GetNoteObjectAtPosition(sobj); + modifierMap = Self._property:ModifierMap; - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttributeValue(artic, 'artic', 'snap'); - libmei.AddChild(nobj, artic); - } - else - { - warnings = Self._property:warnings; - warnings.Push(utils.Format(_ObjectCouldNotFindAttachment, bar.BarNumber, voicenum, sobj.Name)); - } - } - case ('480') + if (Self._property:ControlEventMap = null) { - //scoop - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttributeValue(artic, 'artic', 'scoop'); - libmei.AddChild(nobj, artic); - } + Self._property:ControlEventMap = InitControlEventSymbols(); } - case ('481') - { - //fall - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttributeValue(artic, 'artic', 'fall'); - libmei.AddChild(nobj, artic); - } + controlEventMap = Self._property:ControlEventMap; - } - case ('490') - { - nobj = GetNoteObjectAtPosition(sobj); + // iterate over controlEventMap + if(controlEventMap.PropertyExists(sobj.Index)) + { + mapValue = controlEventMap[sobj.Index]; - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttributeValue(artic, 'artic', 'fingernail'); - libmei.AddChild(nobj, artic); - } - } - case ('494') + makeElement = mapValue[0]; + trace(makeElement); + for atts = 1 to mapValue.Length { - //doit - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttributeValue(artic, 'artic', 'doit'); - libmei.AddChild(nobj, artic); - } - + att = mapValue[atts]; + trace(att[0] & att[1]); } - case ('495') - { - //plop - nobj = GetNoteObjectAtPosition(sobj); - if (nobj != null) - { - artic = libmei.Artic(); - libmei.AddAttributeValue(artic, 'artic', 'plop'); - libmei.AddChild(nobj, artic); - } - - } + trace(libmei.MethodExists(makeElement)); + //symbol = libmei.CallMethod(makeElement); + //symbol = AddBarObjectInfoToElement(sobj, symbol); + //mlines = Self._property:MeasureObjects; + //mlines.Push(symbol._id); } + } //$end function ProcessEndingSlurs (bar) { From b2cbf42abf66ab80507289abddacb8abd92a3d4a Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 9 Jun 2020 16:00:56 +0200 Subject: [PATCH 04/83] Changed attributes to Dictionaries --- src/SymbolStyles.mss | 50 ++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/SymbolStyles.mss b/src/SymbolStyles.mss index e25d9cb..82a83a7 100644 --- a/src/SymbolStyles.mss +++ b/src/SymbolStyles.mss @@ -14,27 +14,27 @@ function InitModifierSymbols () { // E.g.: '52' becomes modifierMap = CreateDictionary( - '52', CreateSparseArray('Artic', CreateSparseArray('artic','heel')), //heel - '53', CreateSparseArray('Artic', CreateSparseArray('artic','toe')), //toe - '54', CreateSparseArray('Artic', CreateSparseArray('artic','toe')), //toe (2) - '160', CreateSparseArray('Artic', CreateSparseArray('artic','stop')), //stop - '162', CreateSparseArray('Artic', CreateSparseArray('artic','open')), //open - '163', CreateSparseArray('Artic', CreateSparseArray('artic','damp')), //damp - '164', CreateSparseArray('Artic', CreateSparseArray('artic','damp')), //damp (2) - '165', CreateSparseArray('Artic', CreateSparseArray('artic','damp')), //damp (3) - '166', CreateSparseArray('Artic', CreateSparseArray('artic','damp')), //damp (4) - '212', CreateSparseArray('Artic', CreateSparseArray('artic','ten'),CreateSparseArray('place','above')), //ten above - '214', CreateSparseArray('Artic', CreateSparseArray('artic','marc'),CreateSparseArray('place','above')), //marc above - '217', CreateSparseArray('Artic', CreateSparseArray('artic','upbow'),CreateSparseArray('place','above')), //upbow above - '218', CreateSparseArray('Artic', CreateSparseArray('artic','dnbow'),CreateSparseArray('place','above')), //dnbow above - '233', CreateSparseArray('Artic', CreateSparseArray('artic','upbow'),CreateSparseArray('place','below')), //upbow below - '234', CreateSparseArray('Artic', CreateSparseArray('artic','dnbow'),CreateSparseArray('place','below')), //dnbow below - '243', CreateSparseArray('Artic', CreateSparseArray('artic','snap')), //snap - '480', CreateSparseArray('Artic', CreateSparseArray('artic','scoop')), //scoop - '481', CreateSparseArray('Artic', CreateSparseArray('artic','fall')), //fall - '490', CreateSparseArray('Artic', CreateSparseArray('artic','fingernail')), //fingernail - '494', CreateSparseArray('Artic', CreateSparseArray('artic','doit')), //doit - '495', CreateSparseArray('Artic', CreateSparseArray('artic','plop')) //plop + '52', CreateSparseArray('Artic', CreateDictionary('artic','heel')), //heel + '53', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe + '54', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe (2) + '160', CreateSparseArray('Artic', CreateDictionary('artic','stop')), //stop + '162', CreateSparseArray('Artic', CreateDictionary('artic','open')), //open + '163', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp + '164', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp (2) + '165', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp (3) + '166', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp (4) + '212', CreateSparseArray('Artic', CreateDictionary('artic','ten'),CreateDictionary('place','above')), //ten above + '214', CreateSparseArray('Artic', CreateDictionary('artic','marc'),CreateDictionary('place','above')), //marc above + '217', CreateSparseArray('Artic', CreateDictionary('artic','upbow'),CreateDictionary('place','above')), //upbow above + '218', CreateSparseArray('Artic', CreateDictionary('artic','dnbow'),CreateDictionary('place','above')), //dnbow above + '233', CreateSparseArray('Artic', CreateDictionary('artic','upbow'),CreateDictionary('place','below')), //upbow below + '234', CreateSparseArray('Artic', CreateDictionary('artic','dnbow'),CreateDictionary('place','below')), //dnbow below + '243', CreateSparseArray('Artic', CreateDictionary('artic','snap')), //snap + '480', CreateSparseArray('Artic', CreateDictionary('artic','scoop')), //scoop + '481', CreateSparseArray('Artic', CreateDictionary('artic','fall')), //fall + '490', CreateSparseArray('Artic', CreateDictionary('artic','fingernail')), //fingernail + '494', CreateSparseArray('Artic', CreateDictionary('artic','doit')), //doit + '495', CreateSparseArray('Artic', CreateDictionary('artic','plop')) //plop ); return modifierMap; @@ -50,10 +50,10 @@ function InitControlEventSymbols () { // E.g.: '36' becomes controlEventMap = CreateDictionary( - '36', CreateSparseArray('Mordent', CreateSparseArray('form', 'lower')), //inverted mordent - '37', CreateSparseArray('Mordent', CreateSparseArray('form','upper')), //mordent - '38', CreateSparseArray('Turn', CreateSparseArray('form', 'upper')), //turn - '39', CreateSparseArray('Turn', CreateSparseArray('form', 'lower')) //inverted turn + '36', CreateSparseArray('Mordent', CreateDictionary('form', 'lower')), //inverted mordent + '37', CreateSparseArray('Mordent', CreateDictionary('form','upper')), //mordent + '38', CreateSparseArray('Turn', CreateDictionary('form', 'upper')), //turn + '39', CreateSparseArray('Turn', CreateDictionary('form', 'lower')) //inverted turn ); return controlEventMap; From 960b8c85a79280db1587a9525f28de1df43b963c Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 9 Jun 2020 16:01:19 +0200 Subject: [PATCH 05/83] Solved libmei function call --- src/ExportProcessors.mss | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/ExportProcessors.mss b/src/ExportProcessors.mss index e2f93d6..5a8c3aa 100644 --- a/src/ExportProcessors.mss +++ b/src/ExportProcessors.mss @@ -536,15 +536,18 @@ function ProcessSymbol (sobj) { for atts = 1 to mapValue.Length { att = mapValue[atts]; - trace(att[0] & att[1]); + for each Pair n in att + { + trace(n.Name & n.Value); + } } - trace(libmei.MethodExists(makeElement)); - - //symbol = libmei.CallMethod(makeElement); - //symbol = AddBarObjectInfoToElement(sobj, symbol); - //mlines = Self._property:MeasureObjects; - //mlines.Push(symbol._id); + trace(makeElement); + + symbol = libmei.@makeElement(); + symbol = AddBarObjectInfoToElement(sobj, symbol); + mlines = Self._property:MeasureObjects; + mlines.Push(symbol._id); } } //$end From a35769a53454911c4306288bb446eb484e633b92 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 9 Jun 2020 16:27:21 +0200 Subject: [PATCH 06/83] Correcting dictionaries Using dictionaries in the proper way helps... --- src/SymbolStyles.mss | 50 ++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/SymbolStyles.mss b/src/SymbolStyles.mss index 82a83a7..fe7db42 100644 --- a/src/SymbolStyles.mss +++ b/src/SymbolStyles.mss @@ -14,27 +14,27 @@ function InitModifierSymbols () { // E.g.: '52' becomes modifierMap = CreateDictionary( - '52', CreateSparseArray('Artic', CreateDictionary('artic','heel')), //heel - '53', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe - '54', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe (2) - '160', CreateSparseArray('Artic', CreateDictionary('artic','stop')), //stop - '162', CreateSparseArray('Artic', CreateDictionary('artic','open')), //open - '163', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp - '164', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp (2) - '165', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp (3) - '166', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp (4) - '212', CreateSparseArray('Artic', CreateDictionary('artic','ten'),CreateDictionary('place','above')), //ten above - '214', CreateSparseArray('Artic', CreateDictionary('artic','marc'),CreateDictionary('place','above')), //marc above - '217', CreateSparseArray('Artic', CreateDictionary('artic','upbow'),CreateDictionary('place','above')), //upbow above - '218', CreateSparseArray('Artic', CreateDictionary('artic','dnbow'),CreateDictionary('place','above')), //dnbow above - '233', CreateSparseArray('Artic', CreateDictionary('artic','upbow'),CreateDictionary('place','below')), //upbow below - '234', CreateSparseArray('Artic', CreateDictionary('artic','dnbow'),CreateDictionary('place','below')), //dnbow below - '243', CreateSparseArray('Artic', CreateDictionary('artic','snap')), //snap - '480', CreateSparseArray('Artic', CreateDictionary('artic','scoop')), //scoop - '481', CreateSparseArray('Artic', CreateDictionary('artic','fall')), //fall - '490', CreateSparseArray('Artic', CreateDictionary('artic','fingernail')), //fingernail - '494', CreateSparseArray('Artic', CreateDictionary('artic','doit')), //doit - '495', CreateSparseArray('Artic', CreateDictionary('artic','plop')) //plop + '52', CreateSparseArray('Artic', CreateDictionary('artic','heel')), //heel + '53', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe + '54', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe (2) + '160', CreateSparseArray('Artic', CreateDictionary('artic','stop')), //stop + '162', CreateSparseArray('Artic', CreateDictionary('artic','open')), //open + '163', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp + '164', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp (2) + '165', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp (3) + '166', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp (4) + '212', CreateSparseArray('Artic', CreateDictionary('artic','ten', 'place','above')), //ten above + '214', CreateSparseArray('Artic', CreateDictionary('artic','marc', 'place','above')), //marc above + '217', CreateSparseArray('Artic', CreateDictionary('artic','upbow', 'place','above')), //upbow above + '218', CreateSparseArray('Artic', CreateDictionary('artic','dnbow', 'place','above')), //dnbow above + '233', CreateSparseArray('Artic', CreateDictionary('artic','upbow', 'place','below')), //upbow below + '234', CreateSparseArray('Artic', CreateDictionary('artic','dnbow', 'place','below')), //dnbow below + '243', CreateSparseArray('Artic', CreateDictionary('artic','snap')), //snap + '480', CreateSparseArray('Artic', CreateDictionary('artic','scoop')), //scoop + '481', CreateSparseArray('Artic', CreateDictionary('artic','fall')), //fall + '490', CreateSparseArray('Artic', CreateDictionary('artic','fingernail')), //fingernail + '494', CreateSparseArray('Artic', CreateDictionary('artic','doit')), //doit + '495', CreateSparseArray('Artic', CreateDictionary('artic','plop')) //plop ); return modifierMap; @@ -50,10 +50,10 @@ function InitControlEventSymbols () { // E.g.: '36' becomes controlEventMap = CreateDictionary( - '36', CreateSparseArray('Mordent', CreateDictionary('form', 'lower')), //inverted mordent - '37', CreateSparseArray('Mordent', CreateDictionary('form','upper')), //mordent - '38', CreateSparseArray('Turn', CreateDictionary('form', 'upper')), //turn - '39', CreateSparseArray('Turn', CreateDictionary('form', 'lower')) //inverted turn + '36', CreateSparseArray('Mordent', CreateDictionary('form', 'lower')), //inverted mordent + '37', CreateSparseArray('Mordent', CreateDictionary('form','upper')), //mordent + '38', CreateSparseArray('Turn', CreateDictionary('form', 'upper')), //turn + '39', CreateSparseArray('Turn', CreateDictionary('form', 'lower')) //inverted turn ); return controlEventMap; From edf045dd83130c742ed1d1eb414c98e9d8700266 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 9 Jun 2020 16:27:45 +0200 Subject: [PATCH 07/83] Added creation of defined attributes --- src/ExportProcessors.mss | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ExportProcessors.mss b/src/ExportProcessors.mss index 5a8c3aa..560053a 100644 --- a/src/ExportProcessors.mss +++ b/src/ExportProcessors.mss @@ -532,19 +532,19 @@ function ProcessSymbol (sobj) { mapValue = controlEventMap[sobj.Index]; makeElement = mapValue[0]; - trace(makeElement); - for atts = 1 to mapValue.Length + + symbol = libmei.@makeElement(); + + // add attributes if necessary + if (mapValue.Length = 2) { - att = mapValue[atts]; - for each Pair n in att + atts = mapValue[1]; + for each Pair att in atts { - trace(n.Name & n.Value); + libmei.AddAttribute(symbol, att.Name, att.Value); } } - trace(makeElement); - - symbol = libmei.@makeElement(); symbol = AddBarObjectInfoToElement(sobj, symbol); mlines = Self._property:MeasureObjects; mlines.Push(symbol._id); From f77b1d54e1f0813161d75b4afcf97479bd3453ec Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 9 Jun 2020 16:55:39 +0200 Subject: [PATCH 08/83] Started with articulations in test-sib --- test/sibmeiTestSibs/symbols.sib | Bin 38917 -> 39351 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/sibmeiTestSibs/symbols.sib b/test/sibmeiTestSibs/symbols.sib index 36a99fb6f5a0e8b4385eacf39c78be00ad0df021..57de3eea380922baf04d8a3314e67f110f3888d1 100644 GIT binary patch literal 39351 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

wpCkg}AbymY-$;&XvSdRSim0(; zWH+c>(Hx%p{|~$xrl-Y_SzJ&%HYzkVbIPc0&sHp_Xq|aAX=ik zWBmxLu`274091vCiCofA;LBgXCg(-V>cvtaQg7G??a`F~loLt#?zejCcwiZ?PKrE` zb;R^e01!*b{)LOZVv?N3DuIJycsGh%A}UdA;Of>mgam!Sj!j7-@`@ z!~Y&k1}`ELhWazBxa>W}H!Tv}7-mfCJGYVx5y8abaT7v`Ny9HHeX0hxc$cE@8~2b8$1K;YOI5Vhb|RwhP=qoofiPPeNYR zLfU&aH0Y$2rElI4{v&Vc_V+oU`R%?xlSn+=9kp%0%E9UhFSd_9{<}R$dSVO@Dz%nf zdoJTFpIrKauR^=UMEAsUl_lt72u;2V!?8$C(QCRTJ%6Z`T*SL9{bA59u^x_-XQ#2U zgctLcs6A9=-H&+9ohcaSh&Zx0x$X#$Y^}d>mRX3Ym5y1Dg!h@wlF{lKrd;D?pY)Y2 z-GeTOVEy3F2+rWP8p{%9PnwP3+mX{?7RtR3-R|Ri6;rs&p7FN)dW!%?KeGURL8MD2 zjs&g@cb2lp#hqzg3wle~<;eJ!%uriZOnQm?S$WrUyJ+jjI6ah49!4HOZ&D*#X;7Y}6-Pu1u3|>2MtrLP; z?C`hS_G8}V`PXeGaa+)vYJ~<2

6P&G&WI@1s_gfDq}(S>x`tINSY~3=I`L9qX8+ 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 From 96b542d7b13ef8dc52a111784c8a73ba99ec42cb Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 9 Jun 2020 16:56:15 +0200 Subject: [PATCH 09/83] Symbol 52 seems to be a second heel --- src/SymbolStyles.mss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SymbolStyles.mss b/src/SymbolStyles.mss index fe7db42..5d92952 100644 --- a/src/SymbolStyles.mss +++ b/src/SymbolStyles.mss @@ -15,8 +15,8 @@ function InitModifierSymbols () { modifierMap = CreateDictionary( '52', CreateSparseArray('Artic', CreateDictionary('artic','heel')), //heel - '53', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe - '54', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe (2) + '53', CreateSparseArray('Artic', CreateDictionary('artic','heel')), //heel (2) (was toe in previous version, but this seems to be wrong) + '54', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe '160', CreateSparseArray('Artic', CreateDictionary('artic','stop')), //stop '162', CreateSparseArray('Artic', CreateDictionary('artic','open')), //open '163', CreateSparseArray('Artic', CreateDictionary('artic','damp')), //damp From e4c4bc67c38d285c736eb9ec9e8469b6409f7897 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 9 Jun 2020 17:24:06 +0200 Subject: [PATCH 10/83] Added generic modifier export --- src/ExportProcessors.mss | 35 ++++++++++++++++++++++++++++++-- test/sibmeiTestSibs/symbols.sib | Bin 39351 -> 39343 bytes 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/ExportProcessors.mss b/src/ExportProcessors.mss index 560053a..73a228b 100644 --- a/src/ExportProcessors.mss +++ b/src/ExportProcessors.mss @@ -526,11 +526,10 @@ function ProcessSymbol (sobj) { } controlEventMap = Self._property:ControlEventMap; - // iterate over controlEventMap + // iterate over controlEventMap to process symbols that belong to measure if(controlEventMap.PropertyExists(sobj.Index)) { mapValue = controlEventMap[sobj.Index]; - makeElement = mapValue[0]; symbol = libmei.@makeElement(); @@ -549,6 +548,38 @@ function ProcessSymbol (sobj) { mlines = Self._property:MeasureObjects; mlines.Push(symbol._id); } + + // iterate over modifierMap to process symbols that belong to a single note + if(modifierMap.PropertyExists(sobj.Index)) + { + mapValue = modifierMap[sobj.Index]; + makeElement = mapValue[0]; + + nobj = GetNoteObjectAtPosition(sobj); + + if (nobj != null) + { + modifier = libmei.@makeElement(); + + // add attributes + if (mapValue.Length = 2) + { + atts = mapValue[1]; + for each Pair att in atts + { + libmei.AddAttribute(modifier, att.Name, att.Value); + } + } + + libmei.AddChild(nobj, modifier); + } + else + { + warnings = Self._property:warnings; + warnings.Push(utils.Format(_ObjectCouldNotFindAttachment, bar.BarNumber, voicenum, sobj.Name)); + } + + } } //$end diff --git a/test/sibmeiTestSibs/symbols.sib b/test/sibmeiTestSibs/symbols.sib index 57de3eea380922baf04d8a3314e67f110f3888d1..399d1252624ac6a3c649821a898be446bad5d0be 100644 GIT binary patch literal 39343 zcmV)8K*qlhQ%OQaOi5K!002J#1^`TszyJUMFaQ7m0ssI20RR91DgXcg0000001s11 zLPbnTRZ{=}KL7>*000000024w0001F;E&=v4bvtu)xpas4(ftOLP2FxxTkVwe|)zJ zePqeg1V2+my!4#L`n~B(j2q+NbFbBri>XuBC9|8mN&o-=01x3)Pb62;386Zsk(eL1 zx8XKzZ3&Ta{ll(?LZY_rE~09nE^ zy(3bOvFc4oxbj}FGSdxWExWNH`cgyY1+0E5iD^7Em5;^5-!?=NXTuX!zevAs9}%hJ_BEQj$a)S+6ayW`rpi# zP=iiFNK9FEutmjo{n1-L`uC@A3XSMP(lXK{QiMHcuuL`ex5b}$Lhfj7x7SqvP5m?} zm5RJ^RtB;uncuD2LJ0{!2-WuV7@(&dzCHpiLh3DNbyzn5XGf`QeHKm$y(^OOG6Sth z5)V4FSuX3ThmTANb&MapCq5DqJ%IzF;*O^T{+O-akD@n@A){vTwieBaNlcF3U9B1s zx7Zkt@}{!7do0H@SMuA!ax=mGxSIOA-O|Zpitx6=h}#!D&pVD}w`29<@Ax*0h}B_M zgbOS88M4J}OE!utfq;BCI@{qXCeAuEaYBP_NtZw{K)69}uWtiOUu!C6-fB5V_aA5* z!v-Rgy;>8-OZa^+!G3@AlVn1bK9H^uuuP_uo~Y}tzQ&`aLwjwJfj{Bam3Necj@0b` z&Kcwom4*@V@X&qxg#nR&t_>D7GU>bjP$0h0Gu-5kK2f6*&eR3al(%iumlM_j5`qDE zK=?EmuBZ)z6kVx9szFohm+-{wRE+nVb&B*WyxUtqmb&Q;o z$RXU(JhzXk?GM*(BOh28*lFwJC&y{C_i7Nb8qsPg8)Z7P_VEEuvnpL&|0O2SHQVl` zJo3Fr25ZjUj5QB$Jdi$`&u8(~i|frKzFUbm#yUSJRFWUyVa=A;N(heeqM1Vjc zI0Al()K^0$DrlSG5{Ou{lVJs^7%%T)2lo2sXj}nRb>+G<1!bF8%+VDwaC#H<6{pF5 zR{PlOpYZ|Wy~h1Cy6XAkdT>=`%IX74n~CA)n%=-K-+JIG6#~kKpY|+BKg6n1q+cnQta2~(3_)0OSvfjc3%pY}hQut7HJC>17{MZzU?`R#n^qVhz!@65 zKinTcw!V@-;4mxVI4t2hWNaPODXWfYWjq6L97lXfgAOZQUPyY!?lW)3D9|;+oYTA; z_jn*h#7tkQzlVGOF{-Z(YAGqEL>zom`YI>7O$*+sD3#T+JESQiWg#pqP6$wUGpwcv z4c>*_9Su^x#`XIX4yTb;W-Tg?>gc&q#T=~9&oQH#tB};g=yI%ws164xb;Um|#<;0x zl4%lF0~r2#Z)sPJH2R%#-f7ga3hSlSW!H7uyNww?Y+&dI#324JY@9ES<@$Etd}3p| zm$e`2Fj1@Uw|{iNv~KH03@kFeA^dsPTB~`~10gg-CY@4q1ia!nq&p8r^Z3jg8Yo@@ zXF~qU?DPd{Ir~+B6oX3k@v4(sx{3x4&4q00QH8cxgoSKO>kz!uC>1NOBm)~}NZOI- zq=obi+`ub=I9KJkAz;cOH|gj+k~bOAUV<{x0aD&riVS}+1;mWzQ4UABoSOh&aC?t* zx4Vb2CoG@IO7~s|94Msznj`8{3Q^N;iBvWHl2K(QqF!sM-u=Dr9@L<3Y(ctNKB#}uL`KaT}V?2eJI`=b-1dw%p+QL1lo;;$661ub>Y zswZ83=dkd`l^96t-};qCsA^$j)ddj`j&cFC7(cU4J$@Tr6Be_7NS|aTzUjwbs0^pX zj-~f)-9ta8EgH-nLS|o74zItf?g0{5QN}~FaF8pZIx$dAxs}sZ))?nf9{)&d8{W?f z$jQ>htJJvFVIK!Iho7;N1`@F23O1=HU97yGn{OHjAP2sl8$gB**^j03-LgBr03_dY;!yd)wROa#@+bC;Hl&-<& zz>9VSJ5(yq*DhI<59LQyMi;{yjucBvylWvZRS{%Qbjb0STa@l6y^+KI5Ucu7L z{UbA-n+(^H`-8{IaIPQAfpmL4s3O04QeX`#ZH`cRS2iqVs(~M}_gU=^C>f;2x4?Od z@Dg0S=~(pf^uR3zxxzn*-Tn{qgJ%3toTVny`Hpv#WOjhrUro!KdFX4RtPjUgA??GB z;@LZyVwh6K$uq=k8Kw%Wk__hoe^^ihYYBC@M1^iuSD;>u_EFh^TDSfu96p zEdCm75SG!`tLpfa%w?6fg+ks;)HDv%umY70zmUOjgZRdg+@80yJ7yKH1idsjs>$R=vM2 zJ2we9G7^iGdah6<(#PkOiiBSoLQ~p$#=Y4-@xD=ki{5- zfi2w^(k5tslf`d@zOS!?#B~&wyO>32f!Vc4G`irznx4nJ?a%V!qMjBteX{Oqcg~{e zfMYw?VMg_Z*$?#Lq{c5=1hUJaRkj2!#)heG5XkqEenT+D7}h%-Z^zon9`o^ zZP$(vJ8DrqNJ5@sFd0`m!A*uXsP#NXn){JR?_rRQ9f!dQi^Ap7l0frGz7BL zu+pv~3EW(TG|6J<%>O$uSwSmWyl3B63K;Cd<4%T)0r*9M8BVWfRA-O|hyN8w9Mt90 zvUibl#Qyz3M#0-mFR&#F6gzB|mTn9e8GEPt(M{lfqB-*)k0d1MMNF^Z)Mu_6feoTQ z=<`FdfUSgsDoq!rZ5wXi%1(TpU=(-ZKI=fewFmY5pP3?>VfbNsPQfs=J$FQ^CN^yd zkz{KWu$Ni^qV|0kNCZ_=f6v3A%u2=DKW~>l*!maO4;I;~uyOYFa2mJ$OY;t-oE;^t=y@Eoo{n*ilLg$s&3Xi7_{4rt)a6+md8o=V3t*Y%@4ZKVR9C0OP>s9V}%5EA%33!WG*Km*0#AY^( z8o*PGW!R6qy|MO!caM$R%Gd0XPO>xP=${7A(AdtaKraWkfSvU}Umc8`N(fx8=FT|L zKsSnkqx?l6;YR;QrzbqAnuB)PW~qR@30nhLIvea)Svq_Nt>%`EN{FIk zlb6`%@jqFP_8`h`{De@Awt2@1kzP3AZ~S$ePlr1zECv&sJR8HJPr>($P?&y-aXM8t z58QonK~m&01N3F5zY4F&T^1j;{WJ-3NDmBg$17K$IaU1Oe}!gMxI=CxLm=N5<2~ijI(}gu*(gTh_jBBsGb?XM8=vn8y2h< z!&a{dR`Gv}Ltc(8p5iq#?kA?YUNdFy-^G#w!TtC$s?M)n-q^IIasg<0hkja#Co)V= zz*ezqyX+g*@hv9%j&oaMn53VH09^}hW87aNEV6|Qno)^Ay^e-KIByLYFNYNazywxc zUKO8pVa*+y6ebP2{((NWD<-Zx&D?Z?stH!LK3SALh7bVV zEx9O?f@)1Bs1n(HqH8~CSF0h(+GzZ^M(IkT`OI~^r*!7`_)^hy8?is98=h{*Cmg__ zp*Dt_6buLXwUBh$%I5GK5uC}@GETYg4ScGI9f#+4Y7aZvVv=M-B&G%{Iwj8C3 zk_bx_m#%0OgF=Kt;eAbN{Kh44-l!*=`3Ljsu7xm8V3!yx>D2Ybvo&Rsa~~6#VDZOi z=1{ErrxPS0D-q7X!NO$vLdx>H=F&%_j&6kf;U0I1?e6G|IUIgM|K=%SaPHj722HkWo zaP$a71ESfh_{<3A+xR<~LddcrnJXyN#qEVmK*Ikyl>CaLu@1P3le9_K@bf>GLPomir0DjiR;Z@*L+Yl}t~!(-En^SlfC3N$XG|qg@D~J;iUuh?Nd@lX+>p7?yjt`G9&Ih2%gZ@fb9JC)zDzJ+Cxkc#4Z^zWPoBZ}SChioW4Gbr=`V}z+AdSf zEEU{`zb$|)Y303gV89;vhhC5nu#Yl2hIrBcr{t5vGI8o#HptKD&t=gOT=McHQmYCY z$I&DEi;|P}ZBjod0ywA3l=KgU*oVq|`s)R&W>@9hjjn;AiP?aD+F1;kf%!+l`5(L! z!mP{;iSv<7I`9rBq#s$B7o8PPtXYG{t4!)V4I7QomF5|J;0a~=GgpAc6XNAOl93&}GW?DH zv;xIIY51ru9DT_*JBD|t@aOxKeb}4>PqS#tMz^hwwYdA5#nig9_-OUE1{-p8QnNT` zbpAOmaHfXW8H3z;YVd(jFl@~_fpy+Q%~iy;N4_6W*wDSV^VDt1!PvsXaQ0XN{h-<1 z_!-&cVzyIJiN1(W1%`G^8msG{nx+Ga9spGmWb~?S@U3NJJ|;d>w%$ZtxGV=mFtn<% zs}!H;>B)$hRHX@-WXReF?r%Zm1j~Ti?H!Z)lLWBRE5ZyIqg*87N(A^-IM@$X3$pL! zLuq)Z5Z84gaOXt~KoaJ>q1FlO50*@oFey*bRxk_rX?O`!jDGLL+ak>0cO_YZdn|;i z1t)utaFX#^)8<`_OGrXkgUfZkp+y`u%0z5pdv==mW&RbGte4=I@=0_N5rnw*%fE=~ zzVp^qqW^iV|l{pC=?@ z^H43Q)XXx2ns2FcgBd(u5tNpY5AUszAGZT!Ml-xRd(`OpHaOXdnVl0Spky$|6Rr|| zhn6rdz;9t$|6bNK8U<;ijXTni#yf)c_Pn*sM7m4#xrd|dN@ljfsdq&;JG4;z+A)y# zM_dQ@wIM#yx(#-`7qQnA_t)tSCOXL-1+%VXA#f2M$25XY^ss-c!v{{(%`d;O&!yc- zQXLHvcw?_x7wOQ4vd92wGS&_7FI|G z9%7!e$G^{FRT*hvgSda8+w0qjm-(YC$%W(5YwNjKBAc>x0gF_{3P^7UAGmhPu&$bK zcU0!s%-J|nVJA0&K`LnG;tQM_1E2Cx^t^0eQkTa!ODivQSAepaS8+Tmz6u}GpQb7e zXsr#{%^=z5^r=kG`R}vJE`kQJ)b})87fjX}p4mm=p!$X?XML9r@$gTe z(mY5|ZUakXYsItP|7b^GLZ}vK$m*OJtJR<=4f>!z-MvOJXZM(ABbm2lGc|gl&;fNC z^QMh0_fe3%S_IyfnJZl{QI8o9in17<;~~EywNiTbgFr|NP6(+$kiexO z6ND7>?9*GV;tD(9v8_1o2;&5C)aNrgQl;Zty){)f^M%Y|1akOh_{C_(V~4b`prZ66 zQYf-NgxhwJfwJ1Sk+SyGwRjvssBfPuK>#D@TdFbfr{8a^e?F60SBN}U7Om)Tao)Uk z14$UDdu4UiOBwQ5yXEQoOqf%FQ1Y>hVjtKs(_ro?G*xuPm&Z>ATA$lQQihl`L?|1H zB?k;-38#v@}m z$+l7zE#_rs_&F(H=;TEo&FhyR;69IR8B2p=LHv%3(3_4u!6#R<&OrcSB!OxaA*vqB zA6HN0sYu)rn?Mpq>}j$|IqQv)Qpqn^+?S+oSz6g?9d0WX5u03N*fmITQVsaLL*(f? zKc*Z(-_6ymK^5a-JUCf7kF-qb_n?OAnVls2e4olvm6NlCrvx)T*|k8zT90sH%^jdB z;|JLDRa>J70`v3sk^%b^+<5Z6vxjhz35U&^M(3Z8zT5<>r`ivD2F!l4{RQW4Hwm6F zmLwuuLpYSGORX(R0etCt4oBl(91{`N8_$`H?UYFJ#nS%V^Ls1^J3Q{;^h8AG_f4aOZb1!fE6i%Q%q%~#b zkt7Iol^9$bW3p_6ROh2y*hVXOrw@MNwp^^O*IM*PJMtGJ2D>SVI<+=km3IG0mqX)& z9$~x6LnPFQIauq~ZpVA56+M1EC11A4$CPt%*@tpl<1_Ud$*b1;+c)6cUZ$hDYy2Y~ zy6_AodAQ3WI8b~ctX!brgK@d{`_w4dD_CHwcl3g=`cJe(`|D>U1_V@5$q8o1RXy$3k_>OycRSMpl?*FzQk34q{o>QRLTy)7-;4M6?H} zM-^3!J0@Z4)USEFLqKya@&G?34= z5suYOfyy$is-w`)`}N7F`j8u@n(Ffr&nRGZ)V3c()m;BstcG*y5TkTe;4Z^`@z7p# z?7Y^nQZM-U)yiarNV5MdaOgEVZ0oDWT7c6u6iG;U`SHRq4cGPqerPCiF2k7LIJ}m6 zVI%|6tii(>D|i1^>D&!c;hx9zc%u_FcAGih*odCu&y?rS5BPGnYg*r`pX1#B_}q1n zP!>z3p#qWakYAUG))29eNg;~fnZ_Y3k8#5YHaf7rX^P24AFgz}b@Nd0QYl}tzSL4J z_DJ|!S}tP_X7`?M|3VJtShU}s_1)2~7_HGRC z!e>&=-_zAMG4U$W$v;K_|G>eLItVk{CQW6@n=G)0cdL{LBR!Og>>pMQvOB&r)fE)wf5RuL|&P4pfgD|}OvDIsxLiX%u zr_SH@A}LbT@TbG*6IUOyXnYZaF3$eA``GxC$^122h1RHhl%3W-?OhiSB28yOpeL+P z^UKB-%xL#)00tb8S!Df=^fK&Xc{Y6t%g9u>ye>)mQ0tDn z_Q$hMohCPEL^F|14Gu8=Ux$ z+$Y&a33U#On&1{2V~hux>(mVv{~IzO(=C;o4l=P&#r#NgDG(ER$IN7~`GNQNwbxf1 zJ0)u7Q53lgfbEAhm0Dy<+4ZL>pHZ62D2eJ%_e%3jqO*D-?{)+@ z?G3?=fu`E~R630s1*ZMsn3f?>VqrXb>9>Nz_2v5FR1dqeWi)glr`~6y@6Zn;4vehk z02Tqln<7g>-YUFVZ0B5zx`Jd<$dQ_t=hhYUnyPpI$BoqdlvThaOg{m6N5pV62#8al z^c_PR&BF!t@eSH?MX7{*zx+)j7YFKJ5ryQ35m2NPjOP3Tct@cPMgK_)O@N++c8&=I7O_DH_#o^~uS65nFHMJBzouXF z-ksoRXCD0Ljbb;2VkNbpqre$v!Qoa^tlEbUE3^zLx`_$o?({`PpsZZtNePEJpWrKM zkcZxxr$Zx+$iN5$m#18-KxtLACkQq?O>2TLC7r=F7rfo(6CWt(fnQ3hpHH?4S4u{T z%q>=cCwSmCMubp7wJPlN+vO4+kt5BS9#T|pRrdex)NZwHgJ==v$1H=d&NA_w>Lx!z zdN`)uOK2!=2)QsTPiftWj024^IVhd8fJ${Ek5ghHYUk@UxUlyWmtm^mqm+fs1QMsI ztk1culLoQ)%uv>(9K zDxgzqwxlxg1w{>rmG(<0j@LOrM1N+~d>Bw~M1+_2`$g6`IXqwBWk-tX?3dw7GSWJB3_ zgEgI3oK2B^Ns;A+)-J05j&2ga42}oYF^VmKy-f|ADBw;AsP7_?y-Da&zDtw(t>;m` zXPIAJ2aaLLTdVtuKW5Z?@TcEUb45vhmpEI)NBuyQG>q*qMXE$$?irBdJyASFiHv0~ z(&b00Ke`H{)=fhlQ8*YXXNxwK7CJF%6dNuZn?w!-;5>=wQKM;S=Kxy5OO!OWd4h9X zUX9zh_IG$FK=kZIhLajOZ{!*upk@e1f`gTsnGV6aC^Lp3yi0vping_Q;VGBDckb4$Pj zYR?d+l|_RBMo_v=9YprUiyMMA4^NlT8b zZ^gPcK)eT&k0Zh1xdX884cj;)8-85mk!fzan-)xwBq zrV8o3s+1>+Ax>+}F|J6+C0M!Bf3@;|xp3Cy|5x#xlz?D$kxBpH*OvebbGcFeDB zYkDZxZPK)>*_-~}*P3c>yc{+*Ri&}t;=x}zC)=+sXXNN91G)%Zsr+zVr<<;RpFFJR z=Flc5)Qw3>pV?RjTxhQx&w{hvODR+(HXbn{0H8*bsBB3l2G>A+55@=dq;hiIAm+rs#NjJWbB8T z17j+QKKcgb^ERyjVeA#Vk#jUU-7Ymb`6W|81Ph`5Rm|iTfVLV2G*!WQ`g!hM6fN-d zF{k>->3YHgam2euKSfjerxr4WIH*ezftQPns6f9(XaGEYVZ`_zu&8fI@bphC)=Fkb zxeU6CD}=Xd8oO{@LjC5s^?^PmEUXRSqKmZ|l&1&%j7J)tvO1hGT>P+`{%G2+E!c^9 z26)Vv*FQ54_y8?Zv6jj}r2h(Ce-r?P6BobS+KSzBDlA5d=~)SHt}?(4ozQFumQHcF8DE7fmJCmXZRWC$fAG9CnO6olQt;Lg>YOLRvF9W)(? zjw}Tg#B#_M6U%9>{qzD=|-^5n*(&3$MDi{uiQ1^n_|X!m$Ly z^TCrpzJ+Eum(>pUl6dO@xNslrge6b`l5K5fnfIR=?c2#Yj`{?jFXzQ|FUkO-7cjoo z14pw@5yZ`0%8ci7vogj7pzD(C5gI@NW@nUNq7D7ZV$P?*d}e0yVN`=N?6LLy zTJanV3jQS-GPtu3QPOS98fcp>f#P!rDk@@vm>avVt62&5t9YmH^RU@4a5iN%^T5|&V9o<&NU zKPt)@+s~UU_?SqygGu)r>&rs|+IRYx)HB`b5qJd+v!Xr8zT#kYl-D{@utawHg;_5d z#rB;UUm8(04H&k`I*_d4e(TIseOn2~s<^cdfFwVumATu$X^_3ZMrgGfnh&FcyN{J1 zyQQjfc2^c13UL+$lD@6}Pl)!aiOL8ar4P3*10kT}5|nemCO$itGgdZ|1|Ix8SIvRp zMLuVA!znu_Zx{b&a6&ur)lPVC2>kz)|(7R#E8d13=C19IBzXW_Okupb28Y2jv0==oh&H} zLiAgRs@P$zO0Flh#gB&L025+OC;`&bY7HVYFQ;i4j|Pv3bxJgy)%L9f^x^@(xDq4> z3q(F7f|e(_lO|Qz{7tW2VQ!A>Nc7M1+fTX{3z`0HP(40Dhwy>N1 z3g_+`p$*jR5-T%$8-pUH-WnY~_YcT$c3rqPtuSyJccTOjdwjrd@oY>65)b{xM!Fsh zEG+AFUM2D=%ot*=hyFw(1ap`aW`&iIgHC-yMbzhNn^w+~nA-mTT~!fwXDA=s-+k?r zVZY4_$S&mJ;|@Y{e$VtpviBBz>c9I0Bu-U209Q^%zRVNbb{Uj{k}rU@v0>Ld|v?AyXCRm^AY!zgI3X_nq$_UOf0qAWngd%O^B*!};oK}q? zgp{g0QEv?$YS*+(e{Q>e#FjAFa<(6tq&2|!AKe^?B-5=Dutl@usZ}ktl*cyv#ZhnH z-njfrIQEJdm9ml9n-&WBp0&2qA6}m>s#PN-XY9qaLSOM=n|N@51)RtHz)sZ4WImCL zZy4r%+)m0AB#-`gSV&=}V9{B|Q1&(EaA-@~9ORwjeW?fz0#`jcKn#zfExcy8?jsJs zV~`&_&AO8c=Rl6j7qP)&jSK5!^-kn)Ylfc+AmzcSpoi5Tmm-vd9`Qum^6ec_bx!A` zE4W(_-F8vRgkl?Yt@in2I`M$^x%Olu-+gh3d^S4!p)1k5@^WdS*Z0UFDOtogGWZ$oX?28pY$je!#fSUnu4%R;9qdr?x$P+)pq;>IpMaf! zx#16U(CqHLY;tvbgRd)3r8r6Z_6DrN<0Z6OkH zF4hO}${%rh6xA(-lh@&Ld>?55kUGyo>L|&YeQAgX-O6aBquK2kHde6^HEk2rP)qGO z0eN%_@NP1+y^HOGlVC0z&`ax$(a2Mcck! z0wV=5aE}MN*ZN1;J9lPy=JrzXjEvE@RZ0Lz!Np`+2dA;h%Okkf`&SvJFzFedZ>bwg zIUc`+z!tNK2We^>V}QOtzB7Ob_XS9OZ>LI1zy#!2FTnP$q zTz>w&c1GxwtmoBaBwZw;xB#4M{|rfBohpgJ#B)(p6j+mYGF zWh;GIhB(JavGMyDX2pZ>Ou(;fZaEQ9I`V%_-I`tscC4?kdWP&CnVWtW0AmAL4+MZC z4reHWLJC8%Vt>@>XbHs}G^;YqOO5)ArK*b*Kp?&@ED_<&F*z+lW2HLoCmAiBPqSw5 zDJ-j~%JBAXI60fy?7o&_S;YA&azHJ5KUxA4ZqJ~HocUzIP1pDsEW)s8g-g! z1f)t4CKSzg^>-sJ=t8@Av}*W1x`l3O*-Gu#xw~LnH@kjfEJ2h1FdyykP#EqbxxIEU z#`2jlvR$pzFh!A=OoX+T9E#h?ipH>N*>8yQ4rq+RhC&jZvIyk3#228?#Q<%+ssn>h zJFpaJ?>g$lHTdd()mrYqBn9qcf^EZEr-VJZ<&tl7OBf|03?_%fv3WiF>i zhuXO-cYFAdFpG2kzXZGZ;zPn48%3-Uj^d&}e1B^Dp4XTNug0Q&SLM|-*-VcxGLYwE zoF-H#vp?PWEXtLlMZ=P`42P9ZA?aklAxV$2hp?1mH3o20*~!?*S1KAWyj=JR-V-Su z{Md*Gd>WoYRSx38(->S@IrlqqXe3KR!GCNA03o-iiF(Zh>+b~UwexsO2pzvn++R3n zUOVL9QV072wX!z@8Xc)dUS+oYf!cN`PVP~*uEQ4`8Kf2ka=K`P$#Mo7+V2?fS5mdp zl4a??1S5XQvHWB3VmL=mQQUJy;klSkNsEW8q_3f*Gm{K~ZN%bqqQgXxW0{!YPHDO~ zJr$HcU7_OXul>(Ux?-igBTD<;ae978!mq-a1Iy}}9M@>@(~Cv@;?JLe4E)XJOmN&E z#6|8l>jm7#iX7VwiVnATP&8xNJCsn@=gxFJ%N0LmgiNroVX+EH)t96pJlVNN=2k(= zH*3Y4pttlADnO=i)U?xN{A5I7HM)h zU1(EFJ##ZB-nyD)Kp!RJty8_EtZ}!3Dq=`Y%CMd`&+-8WWh7Ud8DtMpsvhHHtPyy? zlhSyLz(Yne%2%cahuDRv=Lpv>Wd7i8cV-rS`5$#yAV#ULdgc?Wtc97p8CAX;ko+Rn*W4yusk1`!ZVn?|Va)LN?7^otv*4bvoEGi)uhCxRJT;69cqoXLhvrJQ zJVo$6Zsd4XqukfkE82O0RxK~H{AWSJa(rhq-2k!MjYqgQJhL456S~ZFA=3L=u{Quw z!amo1YR<52-wU3jQg3qZD+!@PO#&$N#O$nvNuq7&>mnkN#4GBBE7fHQYQzg8X2<9Kqj+6tkdA0tqEIoa^QQJfE*N2BH}2R9}FZ>9A%S zs2>P?K7zSO2xss=dUEVP37JOvCL6;{&~^@7{-Caa(ncBA5AJ{ICW}>L6C-QKbi`9= zByzxUqc=STO2dHf4qwSUagxJ*-sqazZ$HYa4iVg#r&w^md~J7^L{Pc+OEN<8L9&QJ znI92{@Fx}9?;dY`>fAFG}bAS4TNylW>}?31US@DUAMRHfWa;POcl4u?&8yCyVcT8fojOXa7W_tN5kPR zB(k9jTqd^*ewM_Caxfzuf;xLP%N%-Mxp9wr>8DCA0sjIffTj~NIW34rMB*KF{m2&p z7#xD&yaeQ`z=>=y{o0r$u1))o0`-nFd@W6+TaVA-5 zB?!@L3o87JnQ=E53~CJq#%cU(wLgzL`$V|ZCx%N*oovf>pEATEce#<@>9YFF3;>uDL%s+RR0o|pD zzWkj8T{PjV#H*s_;H8M75SI2nCI4uUe)X<@7|pl}TQp{fDTg}4b)Xj}A#93vzb(#S z`2giYvZ=Q)8}SCk2xUg(2Yf#&w1_IF%|((L+LL7Nfso&KxHF{qp+GQq@)CJNxZ$WQ z><@R-$5r$J|VqZYE#7bhkOD4~zDf`eGNt$<8^YVZNfSuyZp~hSl4fI=0@CM@B%x*+s0BpxaMSz)n1%PQ>=0oah}jrXjcXapztv45mX(Cb zpwj!h25^oWz=PB1VNHgPdYE1o(+G+!%;02L4yxr|0A){AA_X>TnE&IayX|Z*W-YAM zRam4JEM{7f3~Bua(Rv2Gy{I*okBRnR2zrP!l)a{u2v;84GEprSPV>AB>Hc0ygbElC zTJ%UoW9Rgp*dzLLKJYXV%JgO8=IGHd$ljuASpg+(g)4z4Li!Mj5ab$qtT}51p;Q$@ zpzR6#oFIrOVk4C!+x-Abz+t+oXzVl|X91K;{!mbGqSd29F(;lB&OvU@-~W5rJeZ7o zQ9szK!@VRT6%Zj)AIXx%aNwDq+tQ zi1xnayA|HR!dB8Ll4=w!08Z>>{`)*LZ?V5^_4$mTdKjwW$?q~Y;Kh5g@-q?+RXiR3 zpvqgk+;pSSr96lWUuBchdGu>i`0ub#@((s;9hax8(B7b!1MZ?2RlVB!R);c0P>u{? z^dk+*{Y*`2d}{#+CowxXmLZ6@u`T~qRsl-^eEuUJkb#@cP9ymW?AeP9tNDs6K?8F zWqY^hFsN;jD*p(Y)-?jq|7XEhGs+f@SMACk!S-&5oEJ<#mMN0JA$Z8SrljLbf8X~# zt}0%ca2XrNen?@{NE2D~>b|gUI2EJX_w-?wU(Q6GC9BJ$T^KM14y{I4Qas=VQXxEQ zVVyZJ7s$puO*CIPE6!S|_Vm$MTFj8;!p-u)#7x`y;bUCtZ^M5^alB}jzJ|emx_KIs z_SjSNr$vfPgI;c7Uub4N+X1e1#%16sG=1(4DwI;jWZ5Hf;vuC#fZ1@?eO3cbFJ8_K zkMQ^RGe%^*mq5-KhqT}Z%d**ZDrCqg3m5xt;~!pC_0Xe zi+i~1wDhW~*~wk_nv=DQo3@Htgjg@Dq6>TL46B^6pK|>M-5YlrMoE(D_Z92?2xsyD zTJ7s|9I7%4WlLzxe;4ZB9#P+a{3W&&)?w^hqOTV8q(pe~+F8ScGPvM+jE!Lp`j>u7t~1dVnUkc+QHaK3WT|8j(l_V@4j#Ua8)!8;!e z@`VJvRVM<`KU~Z3Ppdn+%NDv4 z5I0$?cHAHV#AFNsF|rQF*DYo>uTCiySO)svrR)z^8Na`)YM8L=2{BT`+LSI8;LGMy z)I^GB!SK!$lufDO4F>=5e9)UHdV|=}4kGQ5CpBZB631OMk2Lz?UH?Ugw$;`ASys1Yxj1Z(O$ir$Lu3n`Ik) zK=IG|2$(V%YJ&`KD1dvKQ{o*3l1`^kC-}}&)viOqX!Z_JypCS`V$f3bA#Fs}LLiKGSjF=PQ=go$ zuQG&?DlKv9?oQ7Z(~-oKkO(I99PAc(1uKIN;a}Qm*lU4v_<~jG}daE zq}!D6RWZZXazZ)uJ%3mBLb;+dRfGlr)jK94?A+MUEavaM_7mSz66+cZMmnrDrrP{If8 zLRdC#RX6I^;F@h9%n^3dM|SPU$9t!AL}%mmelr)sy@bt?sv{2+pV&Fkh2>f*UuN3H zjGZ9VWthAC)YyS~9D0hostJv!@Tt*nVgJ5NPVVr#PRzcoGJ|Peq9b@A6m{OXs$>@w zE}c;w>Q@2sntgc|l~`ucZ#F{{k%aKY(Tm{~duj8=5ozNHecq+l#~}F{x~diD|3j;# ze`CFIop`qumAimwm#4K8{_O}!!4US1!k(?Z3f#YkFS?9^BBLkoVIOKz+Hb1IBF5v6 ziIcJ8-$r2U1`Oqpk{>MNA^papEHw$t^ zJdZbqLGvo$iD^iPM98E0n}u(4NaG#eDi(dBP`9qwNI6)uJgjE} zvqg}dv5~IgWYul{+o!GkLzFA~~)jcr%Y7>7(EgJSoCCwgn7ys0>Ui?dAlJ1iRjRLXP_@QUuvz24dQq|IQX5`AfY6VNigEw zws>^LED-A*Uzf;68=CnXeFhfwIQX|}^sgn&>e7Ns4)OxHpJR8fb+?X$eUN&1PZZgp$PV|&4!`#Gtfc#oE;9YLU zfXUi^rEEGX85g=6e!R$DT&@+AcA>ZnaPL;$?zDSGfPqm~jGrE}3^nmX7k%5!`_E6*rf#v#1`fz0H-4((8){?{re6KZ&~ z30t~h8qV;5E5%VG$6Lk#JXTJ!n#C6{x(ugSyI_P%BBuzl{F9&_YS_DYb;x`DF|3x_ zK68SMQ*`n)_r01@d#`gghf(hvVkI-Qy^yX?`mZlC&szH383FBgL&WuoEIvjUIYRg2 zgm#ho{wJa;rD2v&(thAA05L$$zr{XiW?Li@hm*q5lIu54XCoiB0+?s`s(w4^Nbc(^ zcNy%k&#!7_>0T${Y@j-&=9{Ei-20X&k5~IrY05TKBe%Lhyl}nGP{}}F2q}|8!v37G z7@O5yRSdl@r7;+nnXNHLlGX|yiZbTe)aF1sjE1E_eZDm9#D6qXl+EgjD)0RT(Z!!2 zz&Lz-R&Oo8WF?(On}%>^XEmi}5d8ZHtjC1+Fc0ZXY4+~E*aE3m`YDDKr^Ei4 z_t0M_o(4zoU=1%1#=E!Y^wkE99Lv_dMGyqi!DL&#EPoaHm&uGJFE0cdp3!&Hnnj?g zoRiuZ_W=3k@&=Fvp8=uYKmLK{AfuVvW)-eGw~!DjtS8U~Cn=1y6Ta|gOJON!^KBaa z)`qEzSGxh~MKZnbagVm-}d<@w&FRO|B zzd}XtHf7}gDO|_viwQGJvXuk#7O_Er@5zFthUQGJ!s>& z!JU4JAjjMO%yR2|IVVi%DS=FRe$>8qi-ysvK-#pC@6am=QLf}9T;3}~@E`{N*j2%c zJz+$oCr8r?JEq*k5tMKjzu&`9mKgOfW8*15Iz&WIVU+V{Uo_`fRTjj)mm`@2>#Gu< zM#KSIF)18kqDj+}K*R35CaaX2ecidq9#G(;b}a6o0%}m;X-HKYp+@vBxeCds6~$@i zHTBI@J`HL{v5{M!j?6Fa)2$|71^YSOfdBOO4-oJ?!;U&WQ%@W(E&Nt)M|ckZ=u)k= zVG_5>44Q1}Us)g{^~F4;E7e7*MRg#)#3~m*yZ$rneCPU+VHO@U{1{ieNz6IveHq26 z7PTgplb%f1kUgU8h|P=eI;Ugj+wYnQRsUIsX$eXVKBnB~oNca=N+0ej&J$Ru86w|X zUowJpUNUbeFWsf5v-x2NjR5UX@smdaNIknCPj;c+BlzW9LD(zHC<1nuPYo%X7!GT% zDn|#m^YoQ5XPw@$=S~QM$90g0^G4YXI>Os}xm+udXIuXJu+bf-#| zJI(YzH}Y9VW;E6#fG>KnFzp;*0cT#1e@85^-L}CPUcHh;A?RE#i!%x__H6s;p;Ob$ zbrWf4DLfQY0*-;}Z|MmrXzLI>o36T&<|QgLF2pvPdjqhE!*iawL!}FKwd}XLb*sjqH#`^ zscJ$!U8{S2ARBO2D8p~Utq9@PfO7L2s=D$o%j5Ws(>t)MO!+{qWH7XJx$| zdn#?XXRP|G{))DW#V%n-bC5}V!`AiU<(Bg^dJ8e2%K1zrr7-9@0D0WLQyaV;vs?D@VBr0?XiZ{gWlM)gY>5aje4{qORy2}t0+K?}O9*yXgSniMVS&8t1Wk7(|{Yygp9kWVNv_X$U z@s_sdmAJTKcT4G*bOJ}+DGOC`Ts(!Mk2QoXwjE;+$fKlSFqHl=-<<*I~( zZcs;>;k@q6s=oX?$NAhO9%W1d4fn=-C(j=-1iKE6$K@mUEQqP$tZ2SFm9SpKa{GzZ zXEUy;s~UU)Q{sW6-Xk>5EDD zugQGxM0m+32$5t5fb(!B#}iLe6^5rnKmOq{&vc{OnMr?qXR83-c+I#geGX=7>S@a- zqKZ7=*Eszf(MF}MhY|6tW@)tYR$(!wFaB!(efWx1V~boWNWivXTP3)S<#VKg1_ zdM;EK)zmKLwgpAPN2Iy!#=84VAa`g?|6ERXp*H1^x|iZ>Xb`qz3G-K^R_mQBQBW0B zRo*TOE%hfgnq8r8mU12u@ zqjBO$sqh&kT8I>;uJR2TXh+BLRIknK~mpML3lfIJL`pH6*UK$~x977{iK>nc+7*wp-_ z(WBh=`q*EwFz#OqIo%HcFq3V1-V;@Q8EMjZn@FnOm`DjMqb~Ub{SS9k>BL*U;@T14 zjE1WtaODiPD*5(SeXO4J;$t8S8DrWv3a1*L)^^GNFJ={H8B zIme~qJ62iq7Gvdy;$EhTG$NuPT!N22=D25V~xWBI!kowp8n9la@R^g_tm?)J5g*YKbo!eC+} z^76Mto_||Bw?0jsP%t%EKbL)A!!RmdW?&0D+__}>ja29sO_<3U>L$Bu^3Gqg%@J z&hrvrE3Lk1DsY6cVPXD0nmeL^vWwR)gobp!5clGixjb%SP&mdk;~f4GmkSK;J;Tg~ z`r??#^GGgS;acWs;s9rNY}8B8u93+;IB5S+xhb8|f}GOO638ZeOYj*&m+0-i8H$Ew z)$nF}fEQ^Vl^5Va-dw{_@lOdNrUkN4xKa&&8eXSPzmIf4CZ&mMMxV5f zTm<&r{&nybYy)KzMQkHFk|pZNA;^0+aA~ag$pJZKOyk?!q3a;+T_L*+OXf+>02o_F zKMX%28$m9={WW>(Gq&nY&P}>T64E1iB;z|}G_r)F?c2#uk~_VY#2rJqM94C3rr`iY z*n498n%>ff5(0-x!2TA{Z8cSQK=A1hp-5H_!c?dnTZipAKpQY&UqC`3{F$hwYawSb z3;Niu_GH2ZxikxgJlxO=R~qZMBN>SP^CtpF_6{WIrvgeGfr4vRV3zP~@8i3J-#@or z@GW{{us%XD1q<_6*w&CdPVnyA_xi!yP#c2E8> ze}DYovCm95vZkFXY(-wtNBI5+?_xwW)vm*2Tg zvM*OSWP${g*^26A(KTHC^ik;QN!Zr)xP(J_D1vTmA!toR^FP&J4d#}3`2}doXr!F$ z`x5JeIDO8~9LsF)KnguEUDM$4o1-eS1g}5=Z5pkA;TQn$uQjj|FT##=d!g@_3@Z(a z=uo(~aR-XGa@LmEQ1y|DWTt*i!Z?DDnJuwtq z?NVaCKR*{OvaLHDM&H>hq=^j zZGZV@v|{q;wZyIFH~GYBW8Kry{*jR~$RZ4NOYGZT*Q(+H`YlVF5*-{-SyHQKTWaGD z^xy&jGgqzm@j`f!W9{~ZfV3d}akQU+h_|p=Ah#xG1l^pfg0C6&lk9p>HVaaqDl~#4 zlShr`OxzIaBC*_^(siF7UktW?y$d$5k~LMD@&7isr`bO9JvjjZjnbDOJ^39iaBoVe z4ySYC2EC7QkZ&efILmC4M(EN$k?+G2nn5VEaDU_sHa!}|+Q4!5kl zfm3OBR3ZC-F!B?6-L4@sn?C|yT8&Q*9dRP);agq?rlQ>OHULmplB4ggPwo6JT>L%c z03qI8ncsfg^S;Wv+ZzbhOt##~`uW1*Cp^Yx{%k<)D#03TTrvg{>&1QpfJ~#Q|PmQzqs40DASLx>h-bm?OuB5Oh0Q zz0z2&C(n?|CGps5cRBRFH_dJpty=81ddl<@fa4azP5`{TF8iv)Ic_kx$A-0sM6)He zDZ^BoW}?(~Sn^kKi`TQMgwrs>R z!LTbdo^43O+He3CZXc#2=nXw_3ot@PzL=dytqFjtwGc0C8kz;3b$o&loLV-3L~ayDW5B5ylj3aNS>(5Cgu>qB!cT{{4nbU&REU7b^F?V^o#Bi zZd1X8LAT_frr?FhWzCC5-d0AeLOGM&p{E3v`&u&PK8K*Ieg08iKU`Xg+s1FD)@Kzs zh*nBu-tZ^><DRN_8&NuXTb$jyhN+1IuPu>*bq3Zj} z86?v=v$z(ZHUGZZ-vMrBY;8^mJBl}lDl~Za^=;kTY>P*Pm`I=h#t<}@6xJUZ~4exU5okh+B396?x+ zaj`L1^Y{9e&`Gd;QT5doR&%DWr63}w_-nQQ`AtR%R|Rf##&8T?52}WyqGRnd{yry) z1H}pYp6tE$_0YvYjRMhp*9=)DBx!|$;-dH#^&3nzH`g=SR=e$df7aEg%K6)-1VnU- z$3rt$YlGwXo&FU8;ve;a=DS9A@G;Ff-vm->j>ZN7U)Eb%Np3q+`Z`uuEo@^he|)PuVk z2fOm_o8#n5Ibj2o!>a&s_CWm~i|9|@YB8U%n2Wz!M97t_`778kBqRZQI7q~GD-Q5d zf~N-E^`ZUHf!j9SJf<3<9f+0LWG7H1>GWgR{?KevEP4t{XFa_S3;^zI}H}A zmVdow=1JJ~PzR$Dm923}d16MvTW_^l-Y@hdR7_FboEqAv`<+OHj>{VQhL~ftmP}lz zUKdO+I&tZ@1*TiVXf9P&N0EGMF*z%(U~o&62J*&~e(y~#AKI7>u7|R%iL3o5Ege!w zI0MpY?NOkFRzs4^A{wPpq}-NR zSYPQ(G4?dqVs4dRG%yymHzkX7T`B?EfiAi>M~A?UZ)CAkdI*{@)iq~Uv-x7iK^i|o3U6O)RLP03x;v-c zNWYsD`a`P8sX6v)Y(wQE8L&Xu5h`Lq$D&2FTSmT)?hexZ~bX6A9V@WyYbH_ywzInse0Byui6SNHJTZ*kOV`KYPKeFg3s zFN9((Ji0x&xoPRdKF%C~n|PWw35VM>{CuA6abU}g2dprSBCW?g^FqsH>pu>vQ)}kO zG%TKJOx1@#5G$v4g&3^<@^g&D{}}X;H^K45GuN8xuu}5G8H+l4GSq;OP9M_*s$oX1 zrAHS$1?-L^DRKFaTrMJ}30)og9-SkmxLL{i>$F*#WNpMBCho94a7Cg3hj1Uk2FiC} zbY1+xs``Yku88eBTfSsvET1!ZzDA`y0%vxVsn%TWy*QQTw@P`9n^Y1uW(xA=8JdSZ zI*Tkgsrw$3rQoS8i^8G;f|3h$%C0X>NC0&bh1&R37f_CeH7d8t6h#9D%XAT533c`` zFP(R(G|MJ94EVOH#W42Ww=H=7(;X`QPVu}-3v>NoMz-pe%-?FgKqx0Pl6UaI#G83?#hHiH+=HZd8`La=cz)T>z?)}0CtH`FhI6Hjz} zmBDPX!Zd+nuvD4HUCoTZd~)WL;*^GL@MY~W)a{6sxbI?1Itr>e3f__; zeYnJttX16unt=Rs0{v>p)f?wC3SngM*U3}q81VqF`Rjza0q56EMvmZZKoPqo=mUZV zTt4uwz2rJENa@)v+~SLZk{D}=JB!Agr8yKr99R2y>oRURFX~lB&E`y!M33r*_Q_eO zx!xtNMizK4TaM#b6@Y;C*-W6J5vIi~O;D`dc{o|Xh?R*wo7$8D1gK&9`r= z^-wBx(YjddE(+V`$YQ28D~To?Am)DifH|Tk#Xx=T)WY}?-MlGr(pu!xre;Lm@5r7Yky8SVCqs@CMOFQ&o(O{U%bG%dDXx>zeVwNd+DaD-f%$L}O za6Swc8XFb&wg9nV&5?R52D|;;IDr+B$dA*&A->k>kbpr3Rd*IUz0O$CNBFcbG`3Ax zo6nyCTC~I`S)dTjcM7E!_(FgM`hs>0$SHCs>@H)=vXMkS=-9iE&E+n2^)q}Iu-McJ z9eW44c=Pu6N7Fm%cZ~yM)2Rf>1!wyqFxCf)ppyQ=wC4}hF{8S@W-P_S<273zts6=$ zD%p>^?S|%bTsL1CoT1cOky$mT1j_5^Tc~&CM>{JY35EIC|3OgYy|?|t0vvr~%^I3z z$w{BfCaQDJ;fNZoEYlb#-U#|`$aP)g- z*@tV4R{^U*Sq!qhfcnd^5^KtJzOGWWT4;bLj*Tv``qi#uP=0;>6M-o`S|MXE|C~JL z&ozo0ls}j0vxTh{6m4(q#S?OW75l`Sd_%${$Flgk2V}vm10LYZ>y$NGwprRrd@puw zSJVSqG3s5^0S$G9gWD0RGo%$WxSi5gtW-p*STa=@8GFOphG>jBDPe^okd>+)glMNU zVXZ><&4q)4pVGYOzoC9{5^Qj>J>ZPsL?Q(1uq5D*PLiko3KKM-ZjZ~Q%V~6|K^OO1 zBEt}z=iUYX+YK$`D0q>E3A~vWR^z7oQUclWJ)LvK1nL98ffJw>ji? zFqzRzlQXXn)HN%L!@2w;KxpS9iT#znBa5fUN1|X;{H3au@1{p!#Qm1X7 zTlf;6sCN&fn<05D_Pj6|HcP>A53Xc62q5jtH+sYdME%?pncw!Gqk$Hsn5g(FW}2>} zw_XOpYIdLm@WvN_H#1kTxvb=q^ic9nYQCGy5d!YmYH$_;qRvutn!@%&?T=>?;06B& zdY|b**T{*~s1WyKbszjkXY-7-7qd?Q|He09mj-p^o@LF788xbE=A!_xbK&Lz4G)KO zWC?E_!B! zAx7p%tZ^=8bv5~nfqpt3jsWV(Hf-X)X%%l^LWWtd7SDGZZSLA3ic9C+-HGB?u{1;^ z*V9s1r?cT7R*aGumvcFd#7kM}>N&{ASS$XAWAfk7%NPLqfdm=Ti-3BhO^TwmB_UYHFJ{V@FM~ z{gv82Z9!8tj`zcV0D zz|D{7y1oHuD4Yb0Zz`JeX?JtB5-Hb&?>Hdxg0(oZaS^9r=r_0i!gX)GIX%8bjLsQY z6y<^?wKvbtC(;3lJqx8v;j>LQy`AI%8ZWn+!tV1=L6vd9D52Sc#4=<$81oQ#%9kD2 zm>5Pldf9DQ-r3^L2}5F~a;!$EP%QXF=P?QscX~(_`8@>Q(Ec7G+?llT8kE?o->^t@ z@(wDHy)j{|0XTx_%y#wcfU22IVDF=srl$?*7DeSd!U!lOD=pMNxm<)YS;0U)$G4jQSeSV z<$`H-m@{7^$+r5j@DQ1uOf-#>=E8+>Ag z0)oIY5e3pLar|$%pg30Gk)0SjEti^ZC4AQI*b~Cx`EREwSn1LIA7@5C$Jxt>Yk2G) zp+B(nH{t|g1Yl9iQpsNJOid1V;jk3?I#eq+={|1lk$o<11wQ2a^;SOl4y-WOM^0>T zW*6L#E?mSxtQx)Fq_{n>RZ`R(PzJV@52s3u4X9Wc%*p$WSLjoU?z5bHetmj!h= z7528O+CZJKepkrHKb`fOyS>mxn=NKa{3NVJZf+S(x#V@NcWUc~B0j>~B+AZ@_plDS zC{cNqX~jN?fG!SpVWW~?M#+W+qp$PLS;o-6M0tOETLDiq@yt$s?x7hnCUS}c1$X-R zqlj6C2w556nE7L;45Z4?(>S*+#Zbw~bCfq!(Vr000IuiC`6^?*C#{U3FsN2JVWY6q zWmB@Hx#c(|#>G!pASL(RdH3^)IJu+DQM(shnDlK9PQkM5{uyMB)(^h6txR*ngpsYi zTm!t-f2VwHPJXC8QlD4>Q9;9DMkP2dXFdgTHBaF#SSkzSN{6+pGiBX$qx4p!13jN}$ z$3s#WS{+D+T$I(fcoYc^D+Z%G;Jw-Mu#0(XMNRSJw+LuC$o6i+#5wtYni86bklE1m zG?4fhsG%0hFGW+RFwA1twOfp{3_ymlW(azW2l6gHcXSl*_6HE^}#v+(-491d#-Na|l zFzvkJ7jr^ke}M)br%zO|Ico*sQ0nr`^~VeFuTWi zwWbt#Dnvsq=Vz)wGk0#c7o)q5j-oQ+IWi#Q-Kj-YRuiga+ZkOnafJyw0yo>zDM)CU zSZtQ0`ay!t;r{1mM&-2D?ik@g0!WB~)Q<2C$)i1fQ)P?wsNqT_i$>twkjvW`c{K@? zKS|)a&wdh;@6|#xxyZ6q?_!BcD$q*7QD{1uW4cxorG4FRjt_ZmAtnC>u(PM?Ft-Co z@^DZ7Kqx%ZX>b^*3Qj`VB>R<+NP~I;Lp`Sq;>{t2WM)Ge1Su_{Vkt#{0}JeA{IqA4 zQGq4bQ!|`FAdBGMIx-10-E1q%8a-2dS-e+OG$?KhyG3-uzbll#+fu%7I{5Cdi8&WK zRduVoc5utK$B=Q3e2jDBAwS+JjQg}iq)_+7j>NO>BK#b3JFr_f%~tEP6M^8r7f?Qn z!Co3YM~|L@7%D$OH!E-bigucy;@Whj@Vb`O7CX&a04= zR{&lQ@P9PapD5)f(LRqGg#Z@u_xN}O*;S+Lb)LD;#qm~-SO_t1fL=Wj=apqv_QNeM zZH0ul@6}frGf#=6e}&bE?j;mX*Fgpm?3e5(ndTi_)3H^c4s3Td)Ga1mZcz^bEkXg^ z+j8~d4abHxN$TLL`Fu)stBLQ>m23`1+-ZO>Dy&kv7a|npV~7be6(dIt_u`94sDDFB z&ArihC{xfm$OStVw)p=}`zt4jD}7mn-?5L86GH{$yF8jZGF{c9ym4PuA~XPl`?&D? z@QgqFM%>=(jOU=O-y%j2CTo3%iy34N(*Jo$uzhDrFK@Klg2MDyBJw-ZtrIl)RRc}y z(^pUNVkk=fv;qE?4-f;Qd~M^z4UdM=nyh)K2gw#5gs54{9u_t#WX^zRb`E%H2}$dv z6YVa$a~AyLyDMig2pj;?s7vi|=k`&$_d|;Wmysqa_PiF=>I4rwmODfUIuv@n&C&j5 zr3yAV%V1;A5x(&3I019|Ri@^skV^&{E&sj(wDDY|elw*yvm&xMGfNwNM!X)-78%)% zNdR3!Vac6#-{o}@y)KmJrYCb~yt~3wx8ToDQJyXb3gKEGn~0LKUkX>D4LEJ!5_8%8ykvZqFqf_kCNSxcaVu1fCFyy zW?P^!@eur}%g}6cY1t`ZIJD@N$T6a4-DO3iYE6+Z4c|cIjcv#^UdTAyt-W0*h(W;c z7*1xC((r#g_>M^SLCtn>N-*kNKU#OtiT{)5Jfn~8hDz|=HX_3A)XBE=F56t+?8Ep& zij-Bm{)2J0Ucy6&6Li?AYbwMi3!V=>%nORD%6PT!? zJQL+vfHYC+vzigP4ZhSY?JATZR>SNl`)aH+h4u|om> z6PXItYr+Sc?bH1wN;^W4o6%?;!5iiLlP+m+^2?5(SsK9&8hfujpocsnvHXn@jAr5= zd< zh^o*U;rNmMm~oO7|US!@zJWju0CPW#7$BXfF? z6As<_jApYznW-?X4xp~{y)&&3*^cU7X*ISI?QjCc`CBeuPA0%FQbD;uZT?Rr4a`|P zz@-T<$c_hZzOI+hhYr?o1--*izw5xZLGK&$@$09=h1J_SV5CmR4XC~U5fL}fI|PET2|$l7lF4Bak`*mSrs&SKBS zaY`VYA!xHv!u|nZ+Gs8<$jNP37Ss%<;zWiq*B>0MGL7d?jxq;r*xaCi&u&u--c;| z3HLVUDRq|nTcIu@-ntr&#&DwOmvzt)E(dz5&|==kQzf|*5_*5py+o@gt`@O(`kDaZ zOhWfCEq_&d+o67CrF~z^ay4$*v9c{T3Vpp zV=!gvgCn!#MWMCq1wqxNH98+YL;4@@ZR2PC# z5kJPCZRSpJ@$gFcJ8B^x;VCAIZ1zuy8qI=se&jnE2gyXxd5yVIO~Lqs=U7Bc2HFED zvst$-_9=0$A!VR~Lj+0=Licya6mD_;<$_d^5_s#CV9#@>TF~f>8dk<=P{In-3jYqo zuBVVdpf2(*eTsB{YxVs@(#a%XQuA%k?JU}# zT85pMWL`0RQ5vDdor6|zwI0{2C_(@Cm>)kF7uy=gBXmgt91B&p}=auW_p- zwLt!&fzALuuR79=Z$NhU;D0fEb3u3$A;xc;s(D^Av%GT1L05u+#QEr`D~|HsSroYr zxDl~}zwo!ZlSLT^NFh{bV4f2Gsxa%Hnq9pp94NjoI5)>`YqO@Y{gn3}CWKbV-!b}#@aupZ8Z3md`SRkKrkRVG( z>UMjHTwI1$Sc$wyRI7lcpCyDO(5D?UI__ZxqfG0db>p-&TC`jD!;}ZHcT&hGv{C6c z^nrGPn2t#+rI;T#5-f_Q8Q)V;D|?yqW|egre5!h3)WZ-}*z!mp%%mJz6}9(ltXclO zCm?RNZl_Vc+zNY3qRFe_B;%z#c9+-Z_qPr0MZ*oyKzM8$7-K9fh+0VgZ}Q7(=6gl9 zDC$4#R|mA~&hN>#5}y1w5#rX~{jJ^BApUft!ZK^90ox{OW0BD$l?+C!MovIIM=T!i zJ8Hdqr~)}lNO#Xg124RuB9V)?<}KCVP54FZ_BtwhPU~d#pDOH_M4tS%a8eI3PG-7h z#`q%*SA$5}2;a*oI;CUte~fk4SUk8k4{i=!2@NfdiG;L0G85|rQ4ko|+tl^@oRs($b8Ap`V2|Lb%}DnoN!@!Ag{!I@ZGnv{O(a&(`W)d@*-WN=NiIx%Qz zWH~G259h-{tH{eEA*=X zus8w0qOHO=K@G&iPPG*rW2iP_sC!bSx65<))*t@RXmH=k;1AT;2Op12A%Y3R*~ueu zl{h*3TN&+)=F8xFdK!b`lmT3=lXN+;`t3)mdDHXhR8}+Al@b3+vO?XS7$PzJjU6%Z zZ?`sEfX1_qVQ%Vr`)wb2nL)3Wl*@syEo1@(vC8#Q{Mka*tgH%z29jLrrkSynx7T@h z2^B5%ZAaV-HlLrvlTW}4QF+4Qce6F6BhtcXLDL;&CmVFmm)8k+(Ha`1vQgz@gmeTj zCi-tWGg)$do}u&ZCLw7sqhF;NxaLGR(xRCr4e^(hjxZ94PgL0ah#azf@m%_R5BB~Q zo?8kfxPT>l9bb+jJh3{zbYM7T(|!wGl@m;HO0Wqwm37q+GX zy$SI0cu23V8&z_#q7T;~lWSs2l{gWJg7V?&Li<_aN)S>b9vceqa9}^7$jPEm=C@`> z*WP7IF_%&Qi5HnZuPOPLl^X=$v=ARQF*A9bNR-XT`c1;{9Q2VsG?5A4KTMWE)IBZ1 zG{<}E0Ubfiq}d1JoxFFwHK{uim~?L{&8Mv(9pz_iZnPxJ8NzecU>5J&^VEbec9V&Z zn{cKy_%dbeH$b5{i-6~m-9t4M2=(`=;aL)h_I{=CNcCT=MWQ5Z<;>x&Pgee+Iws;4yA9;}tJ3K{ zD2eUf93}3*)?-zllVnC|&#)d)-wRA(M7i+mgv97VeKhvhDM3bm01-E)aC*EFZbR^p zlv&*{JvqL--1ZV{8PTk_*HIv}yDSOXpZ6Ki>(`mRnuKaRvCH0EpxM4k;=*dxrZQSh zTacUw4BJ6VlIEb?P~mmP_}_#geJU2l%hr;D(^z!oge8_HZ?e_XMnq}YDpX+R)yuqgFBVbv3}rTqt%N+!^7^a7{Tp#0zx_ZRbe(x0Rq- z1fH%RKb}$6*xcHk6s6ISkF5UszNo4W39yKGcwXHT0ZOH!P&CnM*RN1FpFl2`A$3a{ z6>172vs{CFcT`xiBw+z;BXfo3h8aVmNkrrOEVOZW-Q*h&_%qr0%Q@|kQu7?C9fMrZ z_viRpJg&mrXrrZ&B@(B<#_#@vqXMkSB6+V&7Gj10kul&CtUH_p3?X6ijJJL$v7|uL zR!aGEPw>|Fhx66iSV`GVO(Eu`R&Wi*9PVRu2i};*Dud82^D)hQtjVG&_3WoPG)Eq$ zV%ge$#ze7$K)HO}Aq-iH;nkux%-@^HcZ~E*NijWe^Uj@L1B<{y-Gp1D2rgBlbj2$s zZQMBsa;$i7dx|byHjt4<(=V21Ls;XsW4Fbynx-~IHb&fxjyY{-o+^9+&$JLokImk- zEajJ6{ODLk(*+U5r9jVBnbTFIO9hhaYS`}WPfx1AOi|GX!QOX~f%mM=LQQi&THKPC zWN%$}nD8jA#bOUI>T?l4MBly(O<867^CD$ROaOHD;1o+<&C{fG@`ql_Ka-x^7L=XG)XjL6j`IFNdG%as^BK{vsrU*L{KO3D5VH0mn=^ zH@L-=^7AOR^ADfef93(fqGr`tU-~t+EQCiI0yl6W4mPrdtZhkYP>4FzY8PW8LRDgysYnGXm1&@I8vwWRhO;ST) zzL$U2Sp0n?JM>^;gtxPJ+-&Z{L&~hP(yTbL4%V7h=0-kf7R*-UTR!}4%2^^^AGY+R zLb7-UK#-m5{u8Q=yW~Rv`=*&Gl{Or}2<&I-g7(|Kfz^@{ z;QHdXZ38YQG^j%mJ*dhn3!XO{OBO$)mkxY3rVkB`+7L+hgk?6j$4P>J4$6gqKqWPe z1cCcA$B>B~XZ8`fWig-0_kU_7Xc2J7nS9qJg^#XbP{d%$0!fK8x9($>4y+2ij8=?* zPMT?EbpuO>mer^h+a1&xMt`$VR9ur?nb^Zrv(y4M41fCht(aV~;zagMz)=}73(KE_ zPP5_XYWhm1e53J6PrVv|+vQpP{2Kf8_3Rkd{I~nG{d>!UCj&(Zq;7j_Q*d6bh`6py zfH(l40Mhsow(s|?$--%)9zlJ#PW<4lK>9V(rcCTq%|?(=J&biy&GmctlgIkM5z;5m zmJnR7xe&V}9(_(#(f#ox137fPZ|viv6qD9qVjy{Tk|P`ZJ77s)(&;8nRRK9JjfO|S zEBrJLM1B4dmv-eGl>;(Opdy~>JDUT}`|*X%7J6lHh3j4GczIS)8?Xa#dJTd$U;Ik) zrVoO%Ad|#7gbo8J+2DD4tU}kNMGE{%{!OLH>v*wM&!0zTgS$Ztw~F92-|+Of_X)jB zUJ#3e-aQI~zl?Q%ds0NxNK#wws zLgX1Xx5_Gb;Mn*-TiX2k)-Z&I2C($3yug?U^q$?H8H#!L^Yg(`4g;WfY?*4lL!&v( zLbZ6gTQa|^781C_{aB1jlKdcu(HFh0jHONST9Y^5lo{qqqaS7IQPjY}i zJI=1_m`@_RGlioULoO^s?>h}2s;6{j-e7CASlS7lX(7vdi$TzdsgZ**clo&N7CLM_ ze3f`>#SNe5^H(-)37mS}XqQf%>=Gt5|D%0{n2UzQ;W}JMxSK|M1>ud%Q%_1*=sEa2 zx-(6AGc`0PpT$(hQpQ-31~P;GYsYaJ0q3JJ!2~4z2S;K)_mz;b)U0^mjb0g)J`(&N ztnyugE#jN#qxYbI;cd1;ihvP!t(*q!r!7c*(wZ%H8&lz?87mbcxV1}mODW>{ZEL0V z(r8opupE`bhx*!LbY=W|sw4s~q(?sxu&&E2tUhy|MH*ey~f4O~W7r8e^` z+$kYzvQiETF)RKfZ^3B|D|+==(>WtKnv1Pe*>nvisvANmy!h zXZBfkK=BkU&+FO!>n~3`gKi{czP*YYS_U~h-FE)Dy2rR&JKx)mK;j7fc+l zCXR%f-=2TTs(CX*qf9n|HNNrrg(sS#s`UVPRd9P73&y z0N=`AX;~#64vBzR(nlR=;0ZyvdO;8~gZ;3R&Lg0`L2ZnXSY>eySjxk^X$pj(NBaEJ zcq#1eI?pR2<5x9yvNmvyM=t?aPF~Ol90pzPVmZNK7A&K5|8r)FROb+O;RC9(V2}J9 z1N6xQ2oBmXB~MzyKXe#OgWNwTw|xH2Uk3BaNv&tw`7`{k~*9}M)Z)=;qE$+d>EIVYdQnP#iTo)LV#&{cM+*#s)L_e= zottNjCDnz#noZh<-r^2Ddlb&X_^=ODSj921`nH)zYNRBSAs&^<+T=!KjY$9ig`vZ= zQEF0|}0wSx^ zClO&X(VNhA&$NlWS^E%InH_Bt2C*o~?>AoxwUoS~R z{Y)>7a4c3AmP^s{d8Ik#1Z4Cg(h&(FzEOScbE~X-N!TPo=f&k&8Xa@r!1+F?3zQ_+ zxe7_X%w>BW2XENz%25HdcCp@!?O~{*D|5uW-uIkhU^gKZ&9qWY7Un_#q`BvcH+D6b z5WqNbey~@y+4Jq5G%yo-4=EC^!((}$SNgYojLi`>?)~lbMnhmwby%il^{>ey)b^|4 z$2`hMYOXxK{$hp4$c3-QJKnHPTV-U1bi!#jK%9=!60OSn(v}>^es(!yGO)@HC93TG zM`o@cNhwaUa~Sbm0uhEvokU}`m#yY~e%?sjv#NZn#X{w`@> zm=$tD*EODPmk9FTqFJO4Ro&eciaq4h>D{vBX6^e8rZTCEeSz4imo(ufE4A`d)9l>$ zHM4l4r6l-lBs()qS=drWF7LI6MpM}+5v9kb96g%nM21Ol( zx+pV9FZ!j9tPiO#3MPp~C0kOJLhBx|z`B+Y)T{lvvrQqHr`d~%`teV~=SG(fzk<~W7&9*XXY9iguN>9{nR=YHNl$Ma zX`RR(avib%9Jzkb-xyd}HaK@C2g)4mkw%Jh_E-94=fz9BjW|O#Nr^5w=`h95TKRx2 zj7Vrpra~0@I0G46GTniG0fMZDtu~6qi9yz$V8fYlHRL2tPx;BfbmcF`FUYRFXXRvP zWTl`@e@IHNJd&b)C8Ei>@;r<^1wFMfYa|+mIZo7;>0R-{y~|1G2{!9S^4waRcQ782 zbl8(m!Lny)&7!(@DKxjM{S0)mpQg8?wT5_UjfY95i~~_mMH@_@c81g#gB4Sjf?Cf# z)ZsPM(wOT;c1UusmwuQZ#zG;sk77hI`S0_+gj31g_XZ0nK~_6@2k4aaJo1ka2Eoa8 zrA)!L9L;;`M_KaDtMFnw`aJf{oUq11YjdLsNlC(U{E@I{HdwFFaw^;A!qo_NpOY^r57krxZ1}#XFE`iClu!SxrPKrR`N8=@o&L`fiPvMN?Es zfT+7?=(aK*mYwbP7b?2f*aBuqpQ4L^k5K+^o<|xpNtc1Y17qR|lHhNV_^g)t9iD<& zF%mixva} zu1_DW^wE|A_)Q0fIOy4!R`Jvy09aEu)^K#3jJH4A@y2)42yHFw;9{+t*nCK3-J@=X zBgut~ou|2&v2@u0M>!@U1y^6zA*%je2n4OVDKWk)Jo~`QSLy*~o!1DUsW+0+nRzMP za0v~e=oBX2d9{H%7?L;@t=YA7)C&_=rm*qWh)*(DoahFR8#DTO`9|WIdf4BR{AB)3 zrPXjTMvx1ylP+^G$lvPJm3&uFhxF|wa0PiVh>|Sj+Iw?;q3B^aWXG0UZdMHNqD(oa z=ZRRbRcJ?VZ{%Cx<`6sCF(2Qb>WU=1XE?hHYo!;>L2#jEsF4zH3y5t${&*F1xH(Z* zUv0^dAWF*@$KoSJgL>uLTF}_y)brT%Jo_HLl#IFk>o+x%!&(-{KJkRAiW%q0NwW?8 z`F!pmFv8S8hCE~>rwVYb{JZV-yUoRYF=Pj&bf?}MN(wDm{63DK?e~%Dm=onT{ROKY zch22!&50(IcEKI@S+YjUV3To(rdt!oUJ2^L5DxR)I896kUZYuEzoN^AL{H6Sf!Dx` zzHtSNS$s20ziI`*dF7w!p!aoGqq!;850k0@KHa_+CLi4K?#FV)OD;3dhZ?E#dl#Cd zl}-3G$qu=Y1yInW&Q=@^?IQU|8TsU3uP7 z>wToQK~DGskZoHeo6o1Cb1QgW`Hi@*X?aZwg$CaBz>n5?dge_W=F&P>0NHe{p>MeTgm^jp474GBE= zmauIDz{vTRXGL$xnE?+;3Sxe@H|QEtl;&&Kwi!NDAX`snrZRKbFqh1x+8DDg3LaGlO9Bc**O8UJM9JBasJE zb{bw1jTDFCHVyw6)BL-r+Z2SrHi}aXXpl33KBHuy36Ha_fP-<&JJqOvX5qgI&Rh)zj_%L>98nSSCRKBdJRxS+`dO zjL^zi)-EXb48-0&;VLi9Q_}nf?9roAv8q*OSPX75Ui&f1%FKqGvPf;UE+=iLG7OKn z73xgelPQ2O1`hrIHj%P*(=Jk^X@A=LdR5;JG4{mHWN{T#G78IOyIF;H7`jYUPYBncm6MDywI%=8%=?n?zVTAtRPV2y$`NkL!V1PsB!K*YST0=((R#W8 zoy3R_)5yhFw8&>e!*NmespO}+3=?741KtZta;TI_@DVYy2wE25&KlbVijdE8tWsv4 zp)sKHc!#9Gbbhr+#(bTSbPRn9s$lcmp;cM>P~9B#PDE=r^lPsgBA@KFl^bunFF~ew zCEhy+EJ+hq9d@DEcye0J$oVnuRbi%dNh}BKKD$I7mh{wJMev&ouzExnx@HL8UnWUhjNaOKHMp~ z>Jv+T_0B1LmY{Hxh=-evruK1YpI#W2l6&hSBC1sDdQfE?w`^wm!oRM1a8+xY3 zfqo)LYQt>W+E%=1ITxLUS1{xCxA$w>+U&K>GiWvM!eKMSlrV&Y|41;04#w_325eDM zP0mxVV56Zy7oOeh#e2FELxR9>b4+JX+>8UJ+nNUN+C+@OHMRLU%u=vYQAy>F`4z`2 z1qrM2i;s(J-S4mimpKW{lYQ!4jZlk)Na@y54AN-OxEMrOvQ5&E7$fM530Z}SY$hRI zE=2UKK_dqnLtOgmi4UZ*3oG(q^s%9|CP}nB{Hiahr1ZA)Npy?YMhs6UXoU_xi^GU< z;1A!im1H6n^>&e1dbu#w07bt8n=WWn?P*;NC{$3w9Bw0kabg@Ztr{wxaGDp=YLg@S94Y?44qL%f$%;mg{*E> zKOe2&NT(BszS4G;hFvpYIY2Bj#|dng{eGja+33fsQtTVixe9)PUum|TDa0c^naaBy z#SioNK8qvUf0ih5s!N@gi$&($h273LvF#Ur+;^@H0~&#l1{Ph~fr7E^v*Uot_d)fF z&GExT!mscb5`qREp7D}WGccb|yhF>rvYFs$5|(1!04G6wE>23v^`~7Gv9nW!KZD?* zm)JG^T98i^d@&UH4T&aaZIgsm3sYO6fmB zff7%OkVG>4`n5J_`D-$gWx|}v4cMhT)hwxDTy3>5k21h1Hr8> zeCST&l+wnIvrof~j%pwZ8}@|PGlrYP}Y7Kigq_8E|s+-Q)Ob_MIG*Z+6v(@}=e<}+DS2l5gf zuwZTCLJR?(5>a2gsShaZovapVQO@|WIaU035GPz`vB%{4ou=qp=As*;v!7Wrx=BsE zbYk`4Ge(@60_nT`u^@QIx>q+qr{sYLGE|d8h&v9it93t58?Dv+iphdJhQG8EIC}Sq zM|y5U|BWR1p{IO^#?2C?vIXrA zRPKTUAvIun0K-Nl=0#gAZW=;Ixht%QKBGo|oiCNLu+v}}}> z4cvor&Pp4<8ngtz~TEn zf^b7YQu`>wSny*d`4srLjL*O76x&>#TT*aFKXoOU?f!S{yA0`4Jb?1*7Xpx4Nn(jV zq?UopLJH3F~iC`w+9mgr{zcGOs9z&v{WW&u>xTpAsJ2so&&eT#^y zjUuu&2q{tl?MQOGlAO|B0`6{wDb&N6BbJ-gM}}oz$PSPSAqeQc0Fq#pfTw+iIuhms zWjbU>8dTf<+(@5y?+MOFGk!$U!y!y|IoahNJfY~)NCxEm#?OhCl}Jag9yHQ|?O7HK zf*9^e_E~h)GSTz|j~FfI&{Je${=Ik>{RPUC9PNhd*A{K}DD)Z_PYo*9J_C%WEDs|H z{}7WLsnAH}W(dLOy{TH7>bXaZl{p0q|;dK1d}2S~|1){~8h>7s20s6pK& zEZ-%Q`JF_~>&_te}(1)Iz$Q)+T_!)~v(yD0Evb2gDi*$U5C*gkH+rVef4 zR8zRj7f&uN6B`@w=9iz2)IgP5F@&V5O$W_L2doOwv^ai%;vHma;+FBAzHoj`p$_WD z?#i>$%@jzD!UVWy&|{<&8{aEqv}}}7*j3-^?c{)i;yufzQV(~-3?#IZt)&hLy=8xY zKu)!kW>?Eb6;lh5xwWfsl3vT|1qtx1T)4Zl7!VU3L53oEZq)6r7b>U}@U@ocJbwAU z?dr)PlVkc@64ySXS||*Z*)Uek)g3l%3Sp8;7YZ&;QS&=~#K}=oXNGZ9evRi%RC-T2 zCNAskbBuqDcJPyg7vbU7*h^p#5Gv#@Oqd`on(AEr4BXW^e9dqgvoja7O(OryiAU+* zVUEf&)0Y&7o-Fs#`=R~EU77}q-XpBwbDj6XZyne3Z0YS%IUDGFnK{X^`f-K()laI~ z9gd`ETCC^oNDSO?7>>(Q@`U@-WNH-9vw{B{^Ra6tFQ=$gC9-@Pvq%V?2Ijqbh^UxXgjarJ5EnJqHrE6b0gjw z7mQX!RQDC+*r4r1>Vt0nnLNgC_G!kUy{&*(6~nmyyDAzK2I5~fYDp0ly;07g`9QZ3 zY2FuU@TMq>c4i|nx&<&1_hBz6(9r&(-;jMK9Tf?*CQz$DIsYjxVcn8r)v>pfOs@Gb z#I4SVName^4yxGp9_wM`@L8Ta!OreWc0Fb$NK3aH!lviM@>xY{tON#Nv0Fo;QU{ua zY~RFpn%Lu{+MTq+-0G4d-=Na#n1yPl0cqXQS}4FH*}`j+LjD|FCGn&v`(Vm#%adjU zGS*DjSe-7%Pn6${AfF<)pw)~=!Mt|Im|d60#cWkGCQ+ub{x)Wbt`6e3z#E91GKx6|lx-*Bs^~87eiwObt#`n%pZY@t3{hQ#huTZqn*8_2~ zj*ccyN#r$l16(rr`aBx@FytX`rmpdNit5M1--2a?<%kNTx|5&j8O2*MklX_?(j`Df z$;SI22G>Vc^myx3Wdlj;26g{m4mLhog{BJxri#Rc^8^y=2lI)1bvdfQ?D=*N&uT^| zW)f#D%~<^W`sfBfD62_6+Es7o1w_JNwqL$7jgolRgf(;+(TGO(#lD6DaDi($Zb+DJ zMI{vYQ!t3Q{ePXHbcA?t(ZBi9S9a=K9}^a3i0oaXn{g;Lu2u5H=Aza!7zplsf`8zj zRh3MkRnikgBhnWu!AVMUAkrhXGHx-ip*000000024w0000{Cy?V~73%;2lkow`8`k7)4Ux1@KQ85Yua6OB zwIh(faje*92Cr{k4~VQ*`2wSNuT9*6OhQU{W*?O&Y)*%W$@zg)(VnMH;{9mrx%n9~3z z+?}NCBuD9_#Et(9&*4mamA*t5B~&YoC4P*`4jX6{=eJ|M%WGHwP!JAQh_lkM4WpBB zUgQ%f@WpZDF3^a~wp0|Z?Rt{dp-{;WpD{98dSnAU^)?_|Vt2p6jbF!pwSdVP(AmQ2 zs&d|;+FP$Aii&$(sQBjYg_fr2SOL(6NLVuOX)EhIB!+pJZ%{tHDUOT#K>4O5>xgZm zk4+UgXiVtSc;B!vsIO5;F?9HH6QiDO`c%P zKsA>(&V?U3S_wk40v{1}tEfb7u~HE|QX#Bi!!?^WqDD7dX-0`OY|IT>ZnXZRqdf^O zz~EMfaGymKm=MCUMNI#~>_T8mV(1Q+7nn%C!`%8chpg1^*TR^pr-u2#?PylmTY6di za}xXq|7b6WM-gzS<|?NvC0J)tvWm=JW#sWLUcT&TURF3v>r(TgL2cG`!9b z0=(c6!^k`|Fh_)ctom+{MmV@HQMKc+SvxZ)w@NWo%2(fdG&gEz~3^#1fA(raOf2*V(QsE+NO%;OD{de?jSdHHWes4w{A`n z_;5T;7H>CBWH5|!N=lM}JF^bNQ4A{r>IV)-WG@S%TUiG|R!61<95<6P~SWghT(IY1K*oF?se*(tX;uZ-Sg zO%;`rMvtd5*CLC6hkgOl0aMqLzOyE&Ce&~T=e0w=or|EL5D)Pg%@?x-kKMF(VlHw7 z^obpa3oO3dGKUq70g)6vnnRTqO^~g!IcHA(KKAHrnleClN{=f}PiRpd7KNFQq&g%m zBBV_6kzY10L$qw9$}(OXTe8=2KT3fgjAa%s3s)i*{K_q=*ecDy;@3`3&-clWxFaK8d?msw2wo!I(@(}52=k1}jxd-Ll z*4hSoOsl6M%MNHq7)fKK1Z~!b=-UfepFdu*JJoNWrTsr+Rje#U=tU|-`kNT|4g`%> z9lQtZJ0R6zj|9UcPsJdua}%)^ULFH;BVBd zx1oM2pHw%~Blpr6&_7U?e8Yc5LRmla=^JT7uT~!Afi6%$u-w`Q$mSK@KLjVw%xO#b z#ZcGe9lYjEe-{MO^nufSN8}gL4JfY*pxIL6^Kmzh9*Nvoew6VaF5Vrduw)jM)zes| zxkP&_ulY8=RS4r4)$$Rzu=u>gpVOF_-o}(rlU42$RfO1@a4~3S;gDceKluionv6l` z25X9do!%8Sp?nehF&2ydCGqUfLQ3M>ZO`X)>{9&TF+fa56rpXG1JRF3k?~4*=jpE~ zQ)4*hghpWAF1GY#R7b782ON-E`csZTR(*a^8magOtXqTYw*`6JNQsNh<`W z3>vn>-->D3_)3Zyxwb_=yGvm6RLkiJLR?OkzY~pMA1Wg*KKM%F~x`Wbdl+3}Awm@{kJn0Le7p5>k!u z;_hhW$enx5Ahc(|M5OpF4J||1-cNO|l%_G@P-e((rf%4bgI{5FZK^^fO!V+Lk=#JePO<$k{z!xIToz0r5N0)Wy0Ti)2 zYXP8T zC`24*Pt(bZ`xyD&RYDBfFU$c96H%}qJ0o1kA-BlTKbc#fH`(*T?bEXf9PVe1A6=%( zc*$+WIySNn0OjYJ& z{*ZvaKn~Gs&TZotF`>mQG(pX5ad1}Kq;$uxV@!0qY|GrxU?KU}EzTAz-Y%TvWfB(i z4|-|w+MRzMR8|lIGx&-Srh2RH`Z74sQ9heY$34^Vm{GccKw?XL+Wy zb@uWm&sUSIoWwl~CM%FpcD-!)yw}o$nF~lEPc=_3Q>Dy`r}0vjj>N2b2kL^^aAp|3 z1!Y^q$j%^+3EO4fZBp0gRb3_L!T@hze|`LaHqZ$NAaW&Z zOF{JmFDoj7l)04^BJh9K(*4}|`CMr)@DB{{O5GRMxJKxGL%lolB8oEp6O__%7$ zP~-VDs5DgL^=qvTJxBCq21N&Xk}B{%r~69HdS6m{KokY|T<<35LbB`IzU&nNKM0@A zD{1v^zCR`B?6C#)bvIo5d*O#l7UPp978N7`)nHCFj$hH^e932orSCGUioE-6G~zUC zsOo5Yj{reI;SQG&(`@e+bM!k&8OgvwV-It#m3yu<$F#1dpXQ_!UkeQVLciC!9N@@L zMg;f3($4=-zyz?lt#X=z-Xm75#mq1pKmU0q=&at;I_!?2;H0%S_B$gClHN6<`5kcs zjoDdWb_5&^^)@c>@T9{UpGKQ_?L#cy^3T*(E{wMq#>)`a9Xwd?vrk}x%G$wWgm_g` z%#2N%Mv%I*6@55}ALB-3XY2*?s-IJ`9x_ovZN<3Oo2154qjhn}X9^qT?5rdbp@=sm zD#qf=Hml>cCos&SAD>p6P@4cDj@}D_oS2l)RUA7*%b|(TfcaeNmSnN^V7pIr6|ggG z3bbFVa2F8=zu7SpTS@pB;oi0F$TcM}Z-KwgUxymhS=0D3ygx^ztr{WKR17yXm8#@q z!U1E6T1nHBTx~8%U;8I8(Wn&a2q1wIQ{NL`)j!IdHx-k`eOiMM?#)BD{GQ*JeGiZb z)7h!lXMSIvl0#epm$@f4sVIgEMUdMc8|H}c1cE1$XRqy>p?PC{`w4j^FEPe$5vfw| zf*g7O8eTBM;TX@js*-h}y8n!+*7Nwj4hp{ppaD{=LdsO4SlT)PhVkM;uGt(%uMUgk zvy^lJFWE>28PYWFY1pUJX)X)70UqpA7a%4RrGC{Cs?*BX!;)RER+ouxQ<`p&Jq1$L zd-!yqj#v?I$C_lY1es6@!s|IRCDZRRnleXYv^+ePqrpjy8u<%mkkl|HuQk6#FsX_z z9UQzw_3cOQo_<*ov}lqUW^HF3^EAFs19bWOVUGE3P~xb&>mEX!(9P)r#%JvXtVW_+ zOv7Q^(`802@CL4jjDZ+Ip7C4huetRO1CmuKQku-mJ#p~w8QotP2MRnWV6Mm3`wQk_uVvyN%fD-bD@C-31gfGV4|2GbB3J)mon}Sra2#1Iu`ma)t2?)! zu>lmTtIRm|2awH!VuaaiVl%;c63%$L9Ar%kc`3CZHa9=+4-vlR5^g96LBFh&%>x`B z;GSyH^idG44HX6T?pb{Uk`r%RF3o%*Y0y&=i^QiK5NOe2dkZ02!o*>*T>#AFw;zvT zo2HMD*|M?Li%`vp!mnlxf#n(R6wRacL6G`_`uG1|5d~ zG=i!D^FaccYx1f@bDnM5pX>mHRZ|~zCHiuab_M7LR-^&XY9Z6nNwA~KJkUD{X2?0P z&@Nwra*uTC87HMt)Ry-H^Y~&C2+=6B%+S$i!1(CrLn;ql607VXc?|xwa}6eYf(SrB zM%DDgHLmsS!8O3grUb7R!{!1)4qg{X&K@-zVCHv|+8aO@r5iv_0G0DlA>p5cNd(hf{=B<^msZeee3W{xI_o9I z6u@tejf72zjeC&FP%05wp_P2J(^1i+$73Rqd+??c@5Q-(qgb^8yTh^-ey*ON)ko1A zaM9=OunNiyC|CRi=5|eM_bfp8tD(FHQ001fZ+-kr?d`K1~Jx{S@<B29nZg<6|K!;r!{ z{|@J*W^SQAqhWa|6KrJOmIGkMi%v_D{?1#Sul6(dCR{@`Fu)s;P+CnJU#9lRV({Jg zf!6ZTrqhzHcG2AV>iVf)JQWv=sFjq3!a_1RWCdgBWo>~Y!1*yPj9W3%fr7}Iy0yqJ z;p}Z;Uc~<*aK*=^x+BH&yhITj$%U`{W2w}_KOnw8X(;ILJvdjmYmYqtKstMw_SWg@ z0H+E3xC_YnN5*&y_LeRrWQ{(~kIJM-oWe%$C8ltrvI<%N6JA?4#eKnS-2zOLc~%y+ zN+|cdF8|RW9IVz=kkQ6^G683O%wEraH8t}yWR`gXWjbHo`96wzijX~sY-QMiRif;L zE+lX$9yd1^+DQe3)KNj7`Lw08xfO%ayTN}L`63Zyxnp3I8QouJzS!K>MDWHBR^(P0 zg&pPnV^7exEgX9{iThBb$X(6Cpd->ay*NwKhNb*oxC=F%!abu!28Q4CJX+7i)C>%! zPtq<9YjM2G^}Su#$VP?GTCAKPCO+*o zhuWDgpOy$dZ(n_Go97zuJ$AAPmYz;`raBnbf%6xbd4<%Cvda4o?hqpT+13xwY1&ga z5Ju+YgHD^{izcUE5zV?;TSnVfpoL)=EMXUY8OQR2)4#GV)J6a(`)Eafv(Iyt@)MKK=7zUF5;Ajy7AmiWw;x~x&j7DNX@#8mh#Uu? zR!^!E>GduhT9<|SheznuBYY=NQ0H}!4imEiAw5M5D%RpkaKKL1UWRZ3j0u5TI$;Z& zZ&n(Q_ed0xQ(e;VdD|kRB_(G=&%jrvlT|e@&u?X?h|z}LAWbwyL>_TwNTXXz?1aH| z9G=*l{#Pi`vJm2hh~^kkSAXuP2@U)4Dx3{B!LYh70X^DvcqbdlWoK2=ZfPrV?&}X) z+_kkZW34R&%A#A#AqSf8>{|v$krQT)`T!u9Q`}q!3G)N+{^$qa&hpBVyrcGDB%rJp zj42g{Ny^5O#ejaD$2lGMkmTD67_d;S7}c!pyRx*{1F8SkPo&pO2KiiByuARm9$Ae2 za>+Dm%x2A3TSRe=)q{xF&P0^cln8~r9zr|Ra%eJh(c~J@n5*4W8979l!(m$Bv8nk{ z_AlI5hiHfrwoRHiTc#sa+Zdggo{Nw8;lFoj=&{rP)kcNfzriOHGqr`i*M5Tk_i*T3 zFOzCqD_$PEt)LRAOuv8k;rwk^A?6TIcQn)4X&(`2IHp2P_w}+Xu>b0hV$q+f4pBq3}oa-dF+~4e6$M~ zb`+#dFbYqM4F=|cM7?~{wb`||SzLEDls;T)IF8WFs|6s-9fdIUUx;fK$d$pHe%`W{ zD_gmsX^Lt7uTrrtY6f?vHkG~$d^n}2Pt8^bFYkTSI)k=+nwS^sl31sltkp&8}3Z^b!DB**%-1S@b3-SWK z`$i44B&PyxQ?EBTw-{9dF>?xW_AT&|+SVm-ld8`Ts4ULm@exA*3~8G!O}>q=npKtU z3J}z00j6$lt^01>C4E#;ZMuCsWiF8=dvYx*0_ z`vRWw&|QzcyvtAD8>}DXJ|zH43YHL}YukK(G2T`VDLZ_o9It130fw~28;fB`uHG%9 z6CLUUAb%C#Ro%3A?bpfH{JM@CnX^ixMeh5=UeN>2ko#w((@MMO4Mh?8P7lG%j!jOpY;gTTy$gLk^{=YZM42z_`}`f(&Q&x$L3W7eYE_hMz;`JJPuGZ1QWn_IN!B7E z5KJfr>_|0pP4-zkBQ74ug5&eW8#0tNSF+-xmZr=1fNk1bD|9{{?Gy`4Kdr^Ck$GEp zq|zASA?+O4=6EGulTTGrtcy94*a-d-i%*%G0U?)*8I*O^{$up;b8{h+uD>qoHm;5W zY$x#$I!Hd@HUEISj4+6YV@XM$X&$T@uBbEkQLkHPzlM0viJ6<$*sOLLeYoYv524F# z^sk2}u2a^KDZsDfQ|<9Qnq8x0$3*FM&@NfOKz=00Y0Zw3-G2rZ=~Mj=26o*iy_MJV z=E(P?0hCELrQ6Fg)h4gn^Shu1^08%R0;D{YfneAF6EQtYUSrn$?N2}wd8<-gSWdp8 z>epq?77+rpZRv$6?cr}4oj?Z#RT~Nw;=Ck1jss!bb2NW?pxOEbqKJPfu3R2VOlo<$ z3z^Dh>r(mu8qc#Ko6`4ZSw@m96DJjl_z3gh{R6ejYUk@sLCZbP=&hNzZgnA~((mj;1AKsEU792G>SlWqr5VQ{ zrUR)l^0v`58Vzccb_s7u`{K^%B07ll?FQsV_Q+j)G-TZ|HB*)UBztm8L8M(HN%uKL z?THLJ+EdZn%ySexM3dx6q%{Ka1m2H1fOj_DzLT|RApK>FKyTDCYl8XAX|1GtYsPY` zt+4C+vMZOF543mxljQ1cVVBz((M{PEU)FixA+%kYnMy(H?$Xs<9Ry4pZ8pH&K|_Xf zmi$Z&O{-UD>+Xz=BPn~m>oCgwRdC+C|CR17^<;Ur0oeI1nMF=Sr4z5J@l?cDqWu?xjLeha16ArB6;<=5?(3G4Z&6cJI{!MCLg~K z+cHbMd;NVSN7DPWQCfV$94{94KF`jdvvr$I`$NP|>e_ml#v69v)V3hY9~-5o#GDl<}yHCM7M)0ig&1dn#E#)`(bqD1a7?`gOz&qIwrux2Fw8ssy!%YO+0IIlqQ z)_O|r$>k7YI9ZG5Q_Ke^edOXo^uiqjLHA8NmmG-cL5SPfsFiAd0P2%>NdO0#GuMdy z*=~(m8Y1TBsaxCEXRV95~_g<&P9|REfcE7KWsR zO-c*3rOI(6=3@+pFrO_&mtVBml*%0j@k+*O^%6I|14g-Q;m@Hs z=LSpfw}i(Ri9vdB7H{=4`Lr>AN0d)RH&~YefjFmA6w*S_ZP@4VmDh{Tsf$?T@Ssks zP$TF?(N)mSbCzXXJ|I6h^;*9MUhGyWz`LEzk;x9N6oM*r zNR(<$^oc^$=SKk)XP@gubrNT+2L-{rTB(}bCt70-0`St!3VXwGt-p6Nrlo7$Por?Q ztHhWT+qLhYuo+vxIWu|{+bjEz1@tBR!O|?k-ntce2-6-@Ljyvs+P(`B!^yOJ{;!tJ zDv^Al3CNr3jdnV1>sdYC(*v=6?dZKL0Q?le$KxbWC+hh<5NZebsmtO$hZvN2+ZwsKMuFNLEb3uH?WC?>IShr3#o-nbUwfJ;zGZ`J%3YeJnif7 zxxGmYynbEv5kz7<*AUz~Bul=1qZ7){3{OHs4Iieny@Nxn#`>QsCH~sJ`3`wd!9;qK zut&^U7!y9BS{e^gZ))SecU_2Y=~NbM?$Ubrf9G-uwWrQnJ=G6~?JY_4=$Qd*$IKZK zXL&n)OHYx^m26^}Aj-(}I(qQ6iT2I_V|xJpuo^wH8y!wnA_M65&ld0AV- z#^(K5sb~G?5(Jg!{$Zcc^edsrEe^LpIAnI#M|;P-1`GBPZy4AA=aB&ivx^*NX?=NK zwNDgV;crIPr<}^38HA9$^Ifr{uFQ=22fQ_Wvtlt^#e$|-ggq;c1T*yM(dmYF=mwok zXfGz?>zBjI19!=*n{yq$ERd$FQ_(MTRU=0hXSS!l zjCvS;p_c+COt4A;N_&t1#%^V}=g|-)szbzQb9bk>eO*zAX#< zN)GhGPuKm)*G9(qpQ~FCNn4wmeDkxLT=MIq{?H5wskamD277X10?FrwoU+qv%lzOB znaBRQQAwbP!#+rmKA+{ClowWAE;uKy-}|ktGh`ISz{Z#~Vs8opE4EjqK&43fg$YBo z|3Z&|c7&Yeo4~>nxdwJ`IyQ^~W8Qd++(4dz4|ZA+)j6lH&W^*6F;RX|^E8-4jX-6{ z4Y+9T_L^Qe>sGRNM65^0oq!AjtCDVaqog^xzVjF1_Q&RWcovTxy~R%HbFyUg;7Q$d z4i8;?A?j{YcN6P`W0J@VW49H~4fqe!voEAZ(_vI;$ztJ)0GHdoKTJpVvJz~wb;FMc zaz^Hj#OfqUPbnUPgAiTiFTFGifhJ~iyyMaV-&2<`RhGyvO#Z!Y0EkvNTHUi{fNBt3 zbEUHB2Z&mkjd1hr18j$(0}wGOux z`Jyj_fcCtWyeq;N zB3A(N`GH-QtI6x)1}i_I5pt$S2-c7{1FZ_tvYfj4%%(d!qI_ZBE!H zjSg>2zFk%dk#ne8U+}vn^LgE6Ss@X16Bk#`X(H zq`QT`PKZI6r*TMELKGUIGmW4NumT@Hg_}wG&|84L!e4Ea9+Wse+=K7f3PDkgz!#UtNAJB7>h zz;Zy3V(Q{1ogt=bP`%OH?EiaGgSDr$v&?3*r+kP|gv9Ku%TiJ4E*>DlDv0x!`P@GR zBuE-gC`xTgn5f0Bc%o0--Ks^}v7vmXV7C~Fmv8ncyn|ndH6x^e_Om<(t3LCMs?0cf zRz|IP*73GO2h8TUEUKqE+BmA-c=!L)$q5F5R1L=H>rE>H3y1Xns)l`zE$2wZBK~br zV{u8*S6eJ?-mFQXwhW>d9+LKlb=1~OK^Bf4Lk;-2FONdx$H+ZJfvy)3C(uJof`)R6 zm(Xd(@oaXF;&(G5ul7C_M;kT%BG&6*on(XQP}X_8zxyMff>b=ojn5af+1`&I*lFWu z)8Q+red;zC-LXSh>iP`DC5vm(RPNx)MRAKY;`$YiG`NLXjZX{uGnNSxY$Jw$nJGGl z7I13f&#Y*c=*W)mm<%4761WKJl_bmePc_^lZRP@=mCkPUf*Gp)fJ_d1Q{%o(lVTX9 zFVK0}$8%AsY7NSnCytjVl~T_lN=oNKN#83ZSk{+UpPp*OZCME9MLX0c z`g7IQij|Jf~N2|DeO-uw%BJn zXIkU9#`m9JRHahX)yyUSzIFPgaRN(%<&<6qeBstIks6l*072=+7p}#UOsgbA)(Dh_ zUH}YmGRbgczRHh&(qBTmgV)O*H5VQ@P1O|ZR7P-~gMzgi-muTT<8|>bY0BK$>~7m1FGrE$#cyn3pmxQ{ar}_! zD%sqlb)g#KiYk31_TNC&a>9}-vJWz!=S^Iol7ie9yyvlGZ&{)dH|xu|aC|~DH02$$ z>?ZHcVtAwD|8YEG@*-g7K%Cj%`vN$2Y$a}^*1Ci?a$dPJSJ|~FFF6PvX5F{aBkN*M za{}DmN;x(={B?%^WB(_=dO};d4UR_={Av0q$wTOKGj{+YKwB?ODuJDO8tCj4re_t8 zyt)WRnS*0&HEnR&D6GM$>mv%;AD+!d+33Im0NrU+T8HStb$2MJ7YdMUF>RJIHysLi zOplw#PSo@PqX`N&cgY7KYH1y6&KWXDZTsNkDvx3EmmmK0N5~gNOp~eEOcBihf+|g$ zh|8AL|8+k#m6vp)I)wA<&t6*Ee9|^6hdz`FDw2w(qg)4 z#F;Ee|0`trP0;tQc%YzKh>){bXkp8M-rd$+R)vn;m5nE`q60UOuD#ZaB$rXf1T1Cn<{unshGd#IuA7)G# z%X@U|Aerr~o~5R#*{e2+sR3sdhIdtm#xUG!_P47|!;0uHy*c9sCV_RpF}cD9s*eWZ zu?ti15Yfs(u(~DFhAbpG->tWog!S>&lQw22=oO@y@w6C0?F?@-6>g}R?_2g)`x&f5 zj1h$5En!5JM1y`wyPDfC@t6wuy1PPB?O?%^D!|-XW9wScN<;t@FkaYJivyVSRRVcf zG-u%;I|v^bnyZ!|R19wD4XBH}37cP7RVF(I%?S>B^v9zpVdEda7L`suOU7JX zMw*R?Ztx#Bl)ruiLdSH+BB8(FQ_hG=flp6B-7#KoIW)MSo9$|mG#&*%JG-H5rzLAZ zmHA}bC!y&4f_8yYDe>}>Om^o6Q=Mu9?)gcSjSIViLY zy^NdpCig4h=H5Z1KV`P%uM)3Gt$MYLb3T!%GOELRQRnRF<5{%P`zhX)_G1@UU|<9y zd*eW`QbhFDwwKoP51b<1_#>1aL#u;Gg3J`D6~~UzOJA=CRk6B}I#R+WIB6o{kWv}K z3;zxg{k!_dG=*GotXd*2N&T__6j4%)2zQW5$ zv%;!B16E5HL|pQbp$$jh1uUIdz4aN#2Y5*1S97OXEPw2U@daLurrgtZoLvrZ)XVW` zqw8!%_wCYrKgdzo1q4whK4-PkXrzd2HAQ%y{0Oynsbm&Y;b1bh71zkG*-rQ~eGS=b zZpPWUZhuz)hu3FUSawjTyR2mFsRvC_mXEg?bK;bDze%ZA5V=5LpLFpZ2K%LUKo1C(9Z%9v*RSty&} z33oa>3hxeagIh3bg`u_osTW*PUB-%dY{ur}VpHOtolcET?pAxjN6{PdTYF{6qgF%l z7jli^*NhuaLgk{)sVTB~=nR+xAfCoX z_GorSdpT1rO#N~=A6AT<0jR&So?)jRu#i`LxTt4@D#AD49^(NN1>F&0G^uBbeg%)J z9v)>fykqVH7Cf&hi?+W>d^6__?|b&BU}kWG0E5WKnmPzeW&0-y)R}AN$DG@?nd>ts zNX?R-?%-RrsK%n+&h!P{s!6b%wpH zs#8PSzq=aWM|_4{Glf5gPvHgX!Yz4yA@f-?87lw8YU4&mu2%q;vN1CI(?4)e<^Q3cB79&@$*jhC@ z2G%+7Vuw*^GE<4nLRT#c7Z~DQ9ZGD^X%r2Is_y$|%!m^4DE0|`6?f-yn8EO-nHg;H z1Lt#KfS0WhzEcV*Y7A?&%Q=@g@ywYdSS67XBu6O8R72W+!g4=Ka@>QwISA+zv z2<5p3Jr&EFn1cTfmhnW^N`)~q%Se?-b=2=z!qnFzha4!mc$^a(B7cQbiWDu{kzYam zg$8b&sJtfh3oC@YNu+HEq=;M=Us|ECQkKv(`iSU0NU|$whrzFRYsbrz%18z_jU8SE z0>9C8NSqQ8$XLag72YoM{{zZ{ZTPkZvLW# z1AY%T)F5*6!0ZKI)9h&VN9@upx^x-ofIw`4w_?BO_g?(b-mNL5Gj_h;p{qVENB`du zKOt^YfAt5+3J@}JLIl%u1}~f3bP6V&+&a35qmOKJ^Ppp!{Y%3pc2iEl2h7E|GOIEm zY7-uQmrjKs7N}oZVkFu(=C4u&u~D(AGq1KPDE+eSl zBm#%iM#wOsHBdV$!v6PY>tuVb3z~HX@auISy{=+O=-6BkOvPyRP@j8p3g%Kh`Jf%( z+j(l1An1cXwdF9A0_7Lw`e{ViN2%FiVh^`!Om1O=c#9cfJ5k#&cBC- zHk_!rs%}B4G5;!20DiB#)$J{rQ#$GG7$;TXz^YYzp)tWb=5%yAywrq#f* z3i^b1Tu4MkYB(P$6&7+sg{}eFxo| zA9V9RKo>iB^t zU5mAnsOc0*vrjGqQkfO2P?DkO-Ppf!N!|B`?s|4T(C@91MQ9{a{=t38UkQTmx)~N4uB$sPKb@ zguVH-Sim{`680ewzj7kYJ*1 z%K;v-?1u8EsVrL53Sa&3m+dK z=DsY=*wVJM_|3%%u?OgQRLPV&wcZXaO7kT&%vvn|ru(5P~fkn*zmvm2~-X?92dz)#FqTn*q4trw=Dv=eKc8aS%e zTu*Q(;#%RuOwf=_=9Q?BcEbsMN??nK;{{ROO)M)eq_0OU!mb>d6!Nw)0PTg>UI_;_ zH1(vq_3;F|!w*y$ch^A-={q8XnJ~?U?l+pVzB4JXxBOv5kP)?yo)PT+E-CbXB~PSk zstFzPjd(dRzxoDb*-pE=52zY8EfN`gV@fY%1xkx1t6eQ0F ze;e|P=krtVZ+7kT&Ra`m_bEw39%U$qKfsU729L= zh?;8X;s3C{v;1wr(#xTkeNO-5J9TXnT!o1=W1_iSKveL>234D!)*GY zAR{eZric%mnaX|$@&!q7lObG%`T>0tZV=IIge`OeuUOmpQYSzPLp5K}jRg<4{O=>< z&jR`K{pUmz@-Y1e_6A}&t4S)p&EPpkzZbK}DZBGgPin?jnf^HJ8z(T!h(ach_oY^$ zh(3M=Zn8x$S#NG}i8Ec!ltqz4I(?d&T&r{tB%Es^Bw_sBPGWnyplnEHwttv8MmwY> zB@QDDu!VQOhpu9EBC7>qG|J5j_j2=9veg$I+QJSFrRlnPPa2Z);-v!mDF*_(*W@=B z+7a@DOa@{-e}oV#v@1|j^p{MQa+=%@_rB*>m7vr?f2(d;G}$NRY0Z4ljNT)Z9=O71;DH+YJzSP zq#LOqVA$ZOmcjSOcqyAO`KuL~bY1|}0HvpxQh5c|7bcu;Vc^bR@&@S@zg^Wfy5!Z; zZYXk@t!>m|c+pP|P|>ZGa1(v@L>HX(-^RCJ1^gtHE#@Nq5hZoSO!6qaY*UE*!be^}4&Op)k;Y=REv? z6dvMyu)boW9BQPPRZkO~P1)jZy74Al5?KoN)t!R%d%ymj3+NpZ{i0vO=0tM30K@k0 zaFrz~`^Asy{+hGwfp>QosK~@F2Be3+RIh2}5A>?)n|>ojPQl3L>Gx7aLAO zMl&|rpSEIG<0J&nKnv#C-BS>B?&FBBHq*EfQsP6Tpll`U{wWm~mOJ>Mao$lT4s zoq?)0W5R%N02G0E8Z(YdT|_QqCGxD<-#wZ_2oA@z-8vT~JX+L3ha)z0V%aWZ5g*S+ z>w1Fmuy&cgr?q9{&J)(Ru|;hOTNE4jKmnf`Z?G;}Iq_a9XU#IMe^&6yg7hy+ghA7K zzTDd>&j*ZFt@sy3WcaOygAwe0twq``BOa}jGA&>cGCo%6`aGzJik~w=z=t(@m8*N0 zxfTY2Q(m)E2bW_G94F1-iL1%AFvHP3pF4V0M-O4IshA*Pw4fl42Ihw%i1SOYXf?9| zMqm4e{wU9hg3gV;K1xbQRkKAPy6YVzakvr3d9T$Sn$x6A2sy!K$nZ9sb9P~_6~{eE zQ!&qzN2on7Xr}e+w|c~a&ei4503kr$zc6=fQq@ThIvqQ*s$wkM!7eu;c7Rxl-9nII zv9fS}**zv(Tfrk$9ZsY^=OjIB?yJF7FXqJLF(0$gE=}A!xe%&{0*y0*e2f!y<{Meo z?%y#@0I&Unxh4ok0r4i3rJwD1xHj*I*1FUSN_;*iwEo$;i-mgS0z?~8`dBK`zV2|p zgk~wUpMp_q`&pj?tc4eG`*?X$=7o-ebhT69_(ENH6^6YAX9Nw!m3@|P&iXd?j%1OCqUW=k`n~G+?lJKM z!;76jv%A&0JjeNU(mu10(%7N^5NL0?-k;5}M4@ja595hHE8*AZ@@5f7c4X2xaMT(; zf5EMG;4t@Ti(H)=>ey9NpUYJ})7)~Rn&zv)^F013h9Qc-7?=fu2CWa#EoK2!?tcQ9 z+PyBi=r#Q$Hk~2uU}AAbJgu2l*m{NW5V?NUiwd43r~$y&(=DxG5zgflhCPBg^$R`k ze{ATAh6VXga)$MY#Klwh{w>WyQz1Hi#i&v()f~D1{D?D#d49D0ci#gs=Mc*zq0IVO zFPL0bytuG}bO6hm>VPDAJ405;U|bD;IHn)A{MHNztA#er*1$f`iEitjxS0Cp-N#Nh zmM*2|U;M08J&4modeFxTOPe2sHq8o`y`9|x!U=YX}M;x6xp$%D;OY*gvnLRR;*bI>IPGH8KN7^{#Z8VroZN`n1cDtTldrcrukd~$Py2a zF9f3IeiPU}ElXp*Q7@L8qg^U*Q0QcRcQ-1SaAfe$@_q{dbuaBFvLlw=C36|L*omky^Dw+uARq?*h|7v)Vuh^Ud@vAxvu0fYUf@i(>Os;xlWw| z6>f*_TJeJDwNj<>q{8ZaT@QyRCGot1+!kuaWCSzXS5VLA0DrlBi{k7(?FQ4} zSamvTa8cog6m}Loe>TWkWXZz&7BMt$835ZB0mP2x)!6HK5?HTu&H^hRno~TFU*Ci^7g{ep_xB6FWr|X}?LPh?6!bI9DkK%;yWOC<)qHMYEtyp5+NK>|e}U~#qCf^yLSCheHrqDmTeXwN2W z!3qXyd#rFaJpSnX9%*i3U_x0N6YXB`)`7xb)}UCv_CnSN*M78iJ$xPg`s#P^GIsS& zYZZ|Ck2O?wuUN+sNQ%0V;TgYAWCLL>RxGK=B=EqJ- z|1XQ^UdS=UQe%PuKDN~WDBzC8JXP;H(Gqu0VID$4@H(GZoGoPZ3HKxbj5=vN13B0R z*43C+j3B!tmQ8&p2XP9|aOCAeRG>p^Bf3*_v+NGW;8)^siK}Xi4BlQ?t>afwaY%Q` zg|ChkDIFlZ{~(je`BiEK+P+89SiDd>Oqps<7SW;;XQm3B@n0TszP_$xsiI&{#Uq%H zDhL<8rEu;jYkUg!O%BzGSKrh9Yst^eVx8f$JN;Z`GvD>z6SlkH2j72nEUvwB?#I?{ zz&6Uu_M4i~aPCBxPg$^9lIzQn%n=;+#7^4MEvNl{(5;3(1;SD8y0t(Bjr9)!fPaeEOdp5P2511Fb9L( z3cE(sGwY1e=(AIxG;AVuF;_aW7e@Ch(o?cxCAr23GJ^tr3w-`pW#_3lg?D)yap2_8 zseNC*$^arB8tNgLDGj7pAK#nz-4SR_xEOIYgqS!g+~E7RK;r)-k$ghCZ_p_OI5nQm zAdoZh95T)bmj6j&Xi-$|ITub1S|igv3M6GchU^mPZ#zH2X#l%O_*q}Y3;o@E6blmO z4Mu;A{(W{{1+*i?v?>0&X%K!!8XX9OKZtbrFDZ`@rRTk@5fC#<3=MJVdN++A+khd> z9n3Ntu6e*(1^s<LFK!(+a>6Dr#u^|j$KB|7G#U2oWSDBDQw zETd{5t1m%f<4?S<1%Qn7&A%WESNmg_Q!_75VeD`Ouip2!tlrfD;co$uue~-=d{+T- z^^Y0Z}rjFuX^TzZJ%u5mHU_FMN>y-VF=dR9*oB08)aP z6UUO>&>z}Lw8h$JX*db9q_fx?7Sy5(88_AM@>x-79Vx0AbT2?jb{)IuG$5oEUnEd21h&W$66Ug8E36RxQh(D!AwobWC(C48u%z*Ii7*<3N7#a&(>I7aqgS z8(0debt2cw!Mx9;G8Uf&c>|sp;dRu$W!8y9yT9k{@}0KRdxl~_>gY&oNlHOiu}5KD z9*p`FKFqe1l3dLLHC)DwlGc7|Lg3*jo8#drevis!Nlap8;=t(@x2w?*zd4E}01=&d zF#$$6G!wxk&~oGIUZHUqVa(8_etgMXMlF1&MsA|Yu6Ur3#P7rgyIk+R1 zGaMqw0{yu}ZNp8Qt}r{!5at}M2H9YPb@Ga9i+vjv$toj`<*SJs^u_P?lNWhr)vwUj z*su#~LCwBB{Sk8m4d01l%xNL+LHbdkv7GZs&SvRe1QRr(oBdF0>R(r}gp^-~5<(VQSPR0q-Xn24=5r~6cX8uxw#5Z{mCGcj z>}jSdrP31y_3)GP>Vuj_5MbC_gb|+#e}ODQ_KsHw7{X6!FOSL<8+>mplznz%M2z2~Fs-nbO7qJE zgx3-Tpc_|`R^pOHm7GAcV$Y$LQYD*-Ndg`XQeOO8=+ez*i41UK7Ur%R_g?bQ6^Z3l z`vOZ5xJiG9sXz1)?ckIYq~aS0ivR-8Il654BSc_Wk1Mt&5bBUgw9?jFSdt+3Q@&6g z2w)(M4OHN>jfevhMLbB7p)!fborT>4G)dff5^g=Bizt4{5ehr{$LT2_@{&8?=~X0K zCayzTg9_hV6RGz!41k{B**67Wh$uw_{2r6|b|#(}%^M%;kFBFV2Vlj0Ot@j@IM*P_ z`~L+i?gy==pu&bKWAG80yAa9KYZG(EMDH8Az*uOHnW_jIYF4Q&wbib{xA+o3>B&%L zj&c3=Z65icahP!1ZBGJH`uu0ms~~HSDyM(UwZTIX?u*PWZ0U%EE)Jp5#79Zl($q-U zvJCY^gg8>_m^D7^STl4Q4cbnZVS-jLB*sZuVoDjLH&DVNnXCX%9$LoJGo+&+`2i|s z^Mw#_+wdL)0qSYxJ5b2xMJN%(U#H;w^;pcKQW)p>ZYb2WN-!fFV|meE=JlS{zc#z< zWPbOIWwf>=)~)O;ul40;-68D{^`v%=NQlH7_&2sS9&TpZ=uGd zI{GH$?nq;h?e3A6P*^aK2r5Awqe8VrCu1P{bj6+Zh>>5kMg4HtN z%3?|pK~NeJ%$0N}_a=o_>mszF6%`WG`*;#o1`oH_nfFRib6?0)bU<%BzgE191?j63 zPEN7~BgtI6YD4E)ufq2N-*oeRddB`p^Vt8_2OAad#tjYkXr6&z-`UXU5x)&gi|%3D z!VDo%8r}&;=SSwJO6lI6k8keF(c11f=w;Ocn}5;pz?>hXUt2n!OtN-=c!!tGeCr=> zx1mvjt6?o9h7RWJ&+a!5{K41sqi)n9(^j^>TQwwxpdRb*Cl4=0*TVZU!$JSNUoJ~1 zy9Ps?Y1MM0CJPw>je|1}sfrv}Tvv}`)7RUwM$r4`&PJ*_{zR{9xDYuX#n9;xwWi0aNU;6++NXKdN&gS+FqG}DjyhEx4bsMUNEb;-CC4~_oqd&Sz!K9{^* zO`5QyntJN&Ik>#y7bw@>J#^4Bf3tB!J*Q?U3;p*&I2Jj%1oRs4-5y0A)k2aAbno*r zZZ=00Ss=$36Qpg-b&{gCYX(Hz#JUdGth#FuP>1$u5t!J@BuA)vs`9G_O>lif7|>N+%X?3rh=ihuyUk$o$I3Osm&!j^@oOW|~*&XGdSf?i@@XT!@dfRx%@sDv9qO_HhNVoOnu z7W5l?1lQv*D{fY_KI}WW>BGeD8tw!*cO&}(jm;&d7hM;ypfMyC^hr$grSx46G`QXz zq=IUQ3w2G1EF-Gbbbu9nH>=Wz7Ic-bw6jrLQea|zA3|z=CRqR5ENx(AqYjO&floh~{6`gHXbiY^QfPjlOQFJme7|v1labB$3YLjfu zWP(c5s=ZN*Nl*}^mGfW?e-?t~q`ZH?L?^4v3dt&wYZm)=@Pak1_2MAh3&Iib)a5*y zh*G3{c7}->T6XDLd+9dl)uCSf0dzl%R^uTmBy zEZ)aHO83l~T^@9~rQq**p_GD>98DLLQnnyPpSnWWnR1ag@Ne{T4%{LCkpO6JMh^N# z1{J^HFLRnbs%)bE%CnURm|T)gwJMqL!gRcqm~sjva?Y}f_Ze&QcN%h0%YrIIS!HaQ zk1_lQO`;n+uZshIeobAQQyskU6Uvw+cJ}bGqg%lix3fdxWmD94;!&O6QGYZ)IflCo zxud~*ocaiTduDR6Fk$JytE>*(PDkL*DSK&x+JJ6kbWBp(HFGq`SXhT&AToD+&C zj4SPW6sP$`XL6zE8X|~S)dtK{jZM+XFX_qP%&=tF#)o2yOGi`Qj&b+H_B(Bb^L(fkK@j zWOQ6|IfD?OrJkywCLg!*uHQw!CY(2Bs>~zMYL*tviTk8b9C8SZ(oA9m_?}#b=*kgO zR4Mj+JNxlPET{bPq1s7fIbOoV8x@Bgb~<@4(LaYUt+z`w`QwF*AVfy4`(PAYu}TS# z&<$ZKowPtS!F1jhfYE?vwq`-80i7M#K9Zoj1#&|~ZrAIx&*kaA zea42=l$O*#+A;}BH`=*hev}ogE<6isS$SMhMn&>Q2YR)}yVc|se1ERPLA@|GZD4Mo zpsYnBlx|*Ki7F?uD3c84vmPJIFw=@8L?0T5Pb~z>C zYpz1|Bgk_{jt0{pQr}Mukd>;%XTe+qJNuY$YkH2cF4{M+{57>XV5(vwT=E>l-Rv&~ z{}wjVFyZEia(g`1dR&jg6yc|C*3Kfm29E>2{^~@XD&X(vWxoQG$tEWC$Wt z$Z#tZN>liHnz`J$M6JU{d$Cvl?h8!nit^vz3ET>|SCRiJL!oveK6-Zhf8>4;em0ZIUJXM9XBG{6<7V&%DK{wa7+mhN}DSpd)%bN_0 z=bFgzJIu5NJ_ zD8;)^G|lahsGg!msL^AusJ>&5NhWeVvDK;dN&^!7%giSII}V=Yj_kh5H%UvAO1KM&(?L*WCvEPYMTE z9So#-ct@?eXzOvpB|ENE$Eb5X(O}bzL0l9R{iD1N<*p-9$OiuVX`A;j z`kD4jB$_QITs|7c%>J#bFt_XQFPO~cgaOPOqfs~56>h)767XFkda@-A`PV@ksG}-H=^1u${RJG z^1Xvgj32x~wVJP77!)%ZdkEqIuT3i1xHeol2=`@u+sjYaG?IkWRN^UG`TMR*eSl#8Vs9Z866QTn6?_KyCj2JQrEWExYSnfa zk1DWBh)op@c$P6azdfL63TuqB%aAoQoAbr(s_04j%NDVBz9uA;>%s@(kiuLf`#3LO z4~6DaotfYSx_+zWNZ}jI?GY6KJED-Zyb#?UHV)=iWn59f$td>)W)y?AloGc^_iII0 zUQ-u@P)0OWkR?dwZ)0j@Ff9!1w>?R}snKlm5#YNEmH1Qr`#dq6X^Y#l7&mtGP;lUJ zHyOOlK}4WgX_rII2lFSv20ur)tVp9Rz=* zGj-wENkQL8lMX6cgEGLiD))e_*u^P z{r(ZhObsiXoa*i<8|!#Nw=@2TAYiy~jik<&EkbW{*C~riXuA{LS5qGdRw1VXcahic4?<|0< zi5rlTl+S#C3p>%}u!4&Lz9#f!(2Mc<R|2--+vUdY*SCMh^Ume&uhfz(2RiQUeKz?qlmQPuuAoM7-l8Jh(}eBs(o z9}E1ww&;c2Ehg|E=vQoWQR8q4*^aE^gR#i#&xSuzltOu(<>YAAyfDeSS^Z%Gij!Mu z0-1#BSP6Ldg^Jtd#FLr8dbS+Ha{%c3nHmrmcG69`>;APIM{u^kQ=MmwsjT?`)8df< z-fR#$>teDTxQx7O%s`V&)P-T%0knHcuaBq0R>~nna;!+owR|bw01`hy|=kbj<6*8&5o!n@(O*@ zU4r}Vh8RlXbbV|GLY5iL=`0ACG~o(jVtd7kc=nnQ$gyZR*BBm?rDdIe=8g-e9N5es z>RIQlgxQ7=8y;z?KobAb3*`9OL9#ELeq9qPzrq2Z2LveEscnVkV*vI(Vxi!#m9fcn zdrXGmilQxAl)T*h-DQv7VU1B9j!R{Hfx)c^3$96gMgIDsCkH`^XOa0nc5CLG7bTTf z^mN!s_wRxoJZW(eHC1iibr6rRy?X#h87sOG<}RRC zjZ?k)`w5mo9jp}dh$wW&HfSTNPp2O|^D@OfU;ip_t@FmAz9rW(2G|M`15H=y(Rbl8 zdln_CJ1gjS5}}GV{diqvO4y@+4zVOe+G!MsW+3;y`xQel)F3)ayOac;RLlVYdl&5} zH=?E?Pz z3VZ9>wi%RM96{|W#Ywb2QoNSyxf>|HDyo@#-5dFD_AjlSJ|~yr)3-E_85Q|mO6C`zT|+adABAQ8zsO%aOZUPcZn-m6hOg$V5N&}X70%#^SMT2Ui=av zTs_ZoPx9K#Y+_maz^P2eV*DbDLj*LsFWX)Ls-r1NVGDN~LPz!gG{TASPN z+O-9%f9FBZQX77@^DggJ_y+L)e&EmcWpPkoak&`yvFXGV-pOhhljV>&|4PuEY`Wuh z-uGx9v1pm4TSP`xrkJ=OO|04ej;G}MeEj?G{4cXuFd=l+K;c-CT z*=&(<4A211uwnz@aMXU)zX_D`*7NLv{WJ-ho2m-E=6Ok>2L#86A84t_-|4qc)t)87 z@ao@@8#syTi3K84i5uu%PO2X9HtyF%cZ@L9QWYaw)%ulc=XOuK-Rtu7H)353QLRfB z@sm3&>Dat#ypoeEA5D9HiH7X38}t;MU-LoW2o`XTx?vJ2kOHQ6au+snWBS%N*%&z< z|Mq==H6LSYK>eLxmz@9Z4xaw7M!C;` zM`+oCrJISNawI)(=cgW zK*}EiRGqTi;kl?}7S8D1hW=lI__k2q=h}f2C6X>3T{)f!m;jd(fj;QU+XiO~S!J10 zGIFTaXOyzpczii3<(9IPoIzOdt8d8&_BF2qyQSr!Qba7H$2Vp1$QxTMC#!W|z5ICt z;7oE-&*WZaskRFZM|y>=lENzQ`{GLdCT2dPEkbF5R%h#hC*%Z-dOP?`Z>HK0pXvTb ztw6k4@9lhiS;!PV0$(@WnaMm|y6Q=%eOzAIx`5FQLwLRhAy?au6eDg!z{g`)km{ol zdKn3NLT?m(nzR_tEfX2xKS+CfHW}YU93Vf6)*RJ`#Z@|ejC)Lr7%_q*>Gyf#tk%*@LJJQw~OWO z+7!O0OW!ACr^vMkA!k2sX>guM^&Clbq!EAN^s_m@Jn>Xnu`+K46URgXsC~nR8e4!= z!%eMB;?-ZuciUFy)Qb}u12fjSYGS}!4hR;_LM68AEpreT1*Ka?ItRy5)~I^!15pSi zdA6S5Itwh; zWKw}g%1RzPoMmNsbF>Vs#SG1UQiFb`IH8iBXyxyEj>-E5Qk^fMcq^(mzWhzTL-&$Iiglm5H1?;5Av zYq)`~N~mH1VKM84zl#C+BW=4`r+faLYjYR?N}SfLaIO+k@RW`1kc6MRxJB!dGI26F z=N}wy{w7Fn?kM&VpcARQ0rxd2cqXO2d91pDXCzDZH7+(aYNYz2yd~g~4;d9QUaSVmevY->^4|?y`LD+kEN%!AM>$#b>M96G`zxi=c@k$9NWB=3; z&5`aU_~yXE9ty$X?gdK3HTdZ7YkpJieVgx^+3&JCzBMD;r0xU`#CUX`~wduMlo~~qMFca-) z@>A&#NgT`tZvc=t>Jf6)pwX8wRqM7BIai7ZMY&k36mQz%Y(}`8zEUfQ)z732=n)yGj2% z2@vsG;o@?$Ha65eneiH$U~Y$DUCvN2)0z-c6Ut`CB{!OMpfewl@VWzfC?3-C)a3cf zI0*hcFSzw|9q-Q1M#ox)f2SqNR#Wno6OLr1U0lQU%yLdlbZa$@u;YzdJKr~p?bIQj zHX+{JR_p$YMYIe+T%ozyF6~mQ4S2XDQ(pZBx}DnXbU9@x3QXEh=WTmgAEP9BHk4j9*hgf{%12;c1PMB@lr-nSINy^q$m2)J`nYCy}iDk5*aOt({>W< zsjeS82@0xhsQWI!v?~DO4g*AvVRyhYcA{;be?$@4ih^!|k>HvIudX$eCOdBhH??QL z8twxBHRMj%?Cc4_v1WotD;i}~yz0cPhStvsIulEf8b$r8I3(mVhiw$M1yTP1ITRIc_uDN?~y?6S3XPX z8xsa3qBj6w&CuJ0eAeBg-81k1rkO`r<29MmW=uFR!DYr5y)mzaZebV43m#h{} zWtqPHl(0W0-43ccW@V31M$5&?*w||`oAU+pC>PtA!d;S;AO8r`Gmrc-<=Xab7t%q) z>#LUS*LT+^>1>+5M4vbza!2sW0W1;0$j*c09IWDvy*N;LkdqPo@-jA@eFeIse6d3L zc_}%olP|(iV3_PXb&4c2P8sh$<(sHgH%;)S0wX781y7^*o(|;OHFzp!>$tI642qo^ zJEh=bGVht1R*PII>Er_)?KYZMJ6RN8fJk2&G9pADS%an2o!)?Vka~8=u|ka13}-*= z5kq-QZQt(F1r>2~u7t!BiT(wHWH0d39hx1}=c42h6-4^)TWk=v#pyemB@Dt9>Ocy_ z?%=NT{HMg$zLm_&s|$;>n*6t~tZ6q4pA$eJCVIH%*1BX|_nL}56dDqu>X3D5#P{ga z+OFZJ3?2Rn_ng~HZ6EgR`mVeeZ47>8ni*Ws^^1GY=1$7*IH67eiG5;~eo2vffQplI zZl(<`{vrFL3T-=Sb7%bX_?q!~V0C4KCS)GL+8fm3uQO`Mce57Vv%53wyh+y8Ci#$_ z2BJ#;kf)I<^G#k!#-QFztn%|g5Ya!7DDNg|u=W#rn~DOvqYa?Gu3spmpk*W3Dih)jsbXl9_@sv&CoX;DmvsD~v&%2q&P zw1SA92a3-I`jx{e`#1TJt?3PPNsd9gVyPpb(&|3XMosgAjgqcmiyT?xMzQgSjD5(- z2LJPkKqVaOQE|5`AxPcgB2Se`pYpJ_Oxn_<@^a4s)M0@sz+L1Q#~7*(zp2(nbQf+k zkL{fm*P;N+k=#vYv?lsCw8p=Dbpkh!qG#G0YekhodU`OLXD*mhLzuT@2qdUc)dAGb zcFj$RViq-V1)rm4n6Wn6I2D)o{$$Ogr2!9yJnP)T*0{>GFXYqoh-g*k@k?8LS=N~H z+>vIC%Q8EyE-swKm7oefo6jq;lalVEchO6aC5}6Zgw+9KH)LFl zB2}3MW0Jf(;<-V6%FDYR`U;fK4s zVCzu(L$10Ol)U(<+O**Gr|EWtk-sy2%`!Q(lxA%#UGGv=tl}28saC?{MShA$De9S? z+J0^4w?NnNLSr!Kc)dP# z{6)hsrqvZj&+N|O!7MEA6SSR5rt$PqDEfHl2jECR6vMgxHK}KtJYMwYsbY03>_ShT zM1{^bb@{XnU_k}+Ac;vAI{->g!6BtsT`(ASLpK*j?}Bzzngbqho6Pw3>N;p^{FLQ9kt~C4CA(l01dB$I5)e8l>Q zIqO!72sy*NQQ^%JV}WiWERT67UnM6AR>eSL`q+6a_UW6VBB!77=Lu-G{C9tNu5w9= z95{6N{X=?99d4z`TkP5`kN4_*KTM#ySUAsvLmWjP#w}Yy1uqNi$=q;_?W;{0!^=IP zQQ*j0xSf;L2pJ~d&sPY_yo&6A+G;igkmZrD*ixbbCZY|Ih0!^i7$%@i+>@IR z+Ip%FFuY8bk2KaoDu&DKqxX!+9o6B}II4aLAt(k{g9SyRC9HAfFV5fOBGm0yJLKr5 zgLC!DRQMpTi<(auC}LT9DdvA*qW8~hq3Q_fHIR%fkQkJSv4`3{=BUH0@}UR$UbVBQTJ1lK{gEYuP136uC=tdjp-;===af-H?<)NkW z0qVsL#nC8(@NPc(anCpNy%?qARZ-`WhoFMk{dH~ZP0*@{sZe9Dn_;(Kx44{OY1|=#NFCPXvyR#`pDYuyZ< zOp#35zE1kXHHc&6*}gB$x+{JU=OhzD7oG*l6U8sxwjh( z;~rvpt;`6>&ACJE^&L&qNKLWNM3XQWohQq+ex!X$}y zu6)ALOO1{8;(&|sbf`+3YqC(dtA?74mse-c1R@=AiOKlCx3g7TX0a0OW+AJZSFIh! zw;XiHqY*4(x{Z%?aXcttEpR51>C%tfcO;G=3!7@8?}--3FU!x(218DoN4l4t)Z>5( zy>GLro0?dOeLAc???){##TjV!Kqi{ko~5}Gb?AU-v2l*raDK&030{6ER~y->nkCLY z-n~0-k>6YZPoZRMLhDUPpFE{Zbn(tGVS_+0@tdfaFeOrxI+q4)XD z_$(q0Ou)CC?@okscb@t<`j}>#>)rBhgRJ{>y{LS5T#N1QG2`4&(}ZLHyGXYg zAsj6{oG?&N)v4cnAzKjXb|fQ2=CIy_1Cs|Nx|<&g@)eN zXW1a+is!DQKHDpZ-e#}0s146W(agV?20jGcU=<118N;clWhpwqxr2Dq+bSi*c$-7n z4tQ~Y-4D*v&a`}!&%3FRdo7%L``6?MUmLqm1auf6TORW!Hu%Pbz|U_foqn{Ba*E@x zMkjJP4D#DQzB82pL>*u`JCpC5*V$|vjah5pPvfkmxTeE|Ea+yxsOn^UUwBQZ2!w&Q zA%(KCNVwtfA-NV(X)orpc2Z6HVcIWTz1%~Pv(_b5UK`RV)VQFh;kDbP-+AM@brhu9 zc)|DB7A;;WSRoDyUM|jDgP@!M`;Mu1B1ouBCzU)Rk~6o-oeZ4&zZcW-i2M`0cRV=F zFoZW8fANSrWEE7hLach)&k>z?qHhOgCXK3@FfG4W@LR?L2VgL`h8`rBQ>u-8@`eovTop|Sar3wi%=xtxgXUIc8Cfz~s*Pp<@Kxyq2a_iIr0 zZ(gIVle_xui z5JX>8+2CeJCb^8X%pediowIKu5p;`JMxnmyk{Rl1oRoFI0U%7VoM6~wEqscS-Gj|= zw$QXaJqjcs32eH{%y$1PbLH_~3=_8KS(zIXpBke+m>@;;H{A&K#l8M!?!?c7jsIUUI7C=Ih zi8aR9u3rN}w353?*1?kBV8}4J89pvh^|VRLC<_jhc_F)Eo@GjxXvNPz6$h{EhNt}9 z-EFQE)s!$f?INp{kN};q_3VFSbHy#;fo76~^fD%0wzoQ6nY`os6Ounz?=D#lHGDyX z;dQuoTay4&dKt&$uM=XtFCHz=sV1wJU3i#Qk(EsAQFBcDBki)cg)k87LW#LdP*sZo-JwoV4 zNWBij

qeSMw-V<_EeyKxCgU@8x-R)?koUW~xOIOx6E3>(2EhsBq=+CO`e5b>9e zTU@4}RB3?_O64r}E+EYd@ZkU4RJf%EjN^us0B1-li>hGnz^%#&8q;;=lUlE7pWdhaQ?yyQ#}XseeQ{1R>>2Ci_m#?u{51#l-x>g4LS6tD zAi7(z5DumNgwz&O8;yj57{8(ms*T_y9r`e=@cq>s9H>Ops@RV`;s45h$IfmTWf}}+ zW7t&3Pa8ew%q!3&A5fNUO(5X!dr1Mc9$1PDJ`2p>!%bSD{CrKga+TUG+TM<%6Fq(&p0V_Z^Gj`Rj_eyaD< zXaD0&M?zsXSZ(5S@t>v0_jeUIIrj?6I8>k|s{A&|%%xWQdqF;RDIAB!I`re`mtwLF zcK|xwAx32PjCh2`&w&y|7}Zdf$Lv!%28Aoc#Rae4a0ZTN+H?roabC{UT~O`dSL;srKR6xL%GV6=OgW!k0g|XfRw#=socwrr9AMc!pqeFBF68<5uQG*-#a_;RQ$mx zsQWV6!z<;^U@^4M`aZDaMbmVjF-zk2K;@3>AnuU4x!*nG5zCGq~>VuUO}ih zNg{MJ8?`LdDEt9g8K&k9LXhpaghh_7lT7o|kcu$Nktpwk{lzQ~avUOtbRTIU3e`2& zIg?gg<|wS(t4z=m9b-=U87~5f`AQIC1XsWa?Y|Q6J{rP83aL4Es z#$Zl_4I$hjjgw>Hn5KJ~?)4uXKleEJC~HHSz08!CG0x?|dif+EiK)zRv-}bn;eH)X z-=|hf^xMrlH;^X4%QI(>d{ReN%-HCGT>K#>M+lHXP5}TR$HmRp@IYk)+f_Cfrv){x zgnstNH_{rvd6#H<7yU$vLJ5&EK+xNq4T^roEl3n?oYJ44)L>X+Tkw)sdMY^>!WMVB zn)1Y}lb<4Qq1F0h*@x`8 zY};}-ZP>dlPMaV|SI_L8<8wWC8WE%TN)d6B`U(H{2a-aV%$Xlmb_g+Q(3yO#0ML-d zd`pu(>-lHRHYbldBa|6f3l2q?+v&H?=mucfdtL$-Q14;67i5BkwU&cUr>IWvbukW> zUzg1I^gHJvaXueE8Wkh81lW{hvU_i*xD*TbV*@|Qu^2zhVPB#)R)CmiE|>@avbnRx z9khWW5J8zpl8wxLHi&$3NV$wM_$BQ}lh+F!eD#Ui`Z`#1y)yW&l7yA+(9Ka0rJ(YL zhoB1*e^E7)eIKaF=HOW#9WUp1Nw?oo=u61Ie8U?K#5)zz)a6XWXkSL&DEp~Li}*@| z7t~*Y>k*QX(lsT4TQL-RT2T{zEjP*P|A}Y?jU6AT0)P|}{r&M|^Eqee%{E);u08IU zSdmM1tWmDq2IRZt#e271SkX~tHRMgO)TB(&w>8Ukf8}P=w?tOk=(cAORExkB1!*Do z0c9CY5$MLD#pVkgKOvwRYBUhotF|4K~8mwjv28sCjGs>Vpa|Zr*ry zEB6(xI-1EzurMThjvN=XeBk(_JS6i7TqrUU(|NUxiar`i zFSYQKc^tiQp0t{CMMX{d(yXxO(`88qu!6>S@4pB#76q^hxjb(Uf0#k>JW7&=7wv&A z9~mZED^QB}?%?=}27F9L7 z+W>ij6NB)Y5yhWp3qZ&y))Vjax5$7=`0{)qLT4q(%aQn4X;{#oH2+@i@EIR>Omo*s zt9`%c`s|oZ2n(h0c6_@WibN_@D-ryq8!rY4Lla4Is z{)cu6L$r)&wejQSx_pz}Er#XJ>Sj6dmxfCZ74X@8X)zr_Co@)3$xk;mQX`E(%*-aY zTnwtf#KiS^J%+L={;5^Oo*9;@k}C|AWKx2Q3l_42*1LeFGj=eY#B?kBWm@eX&ofC( z*K>u>jzZ`C=ridGi(^HBE4+3fIrlw`s#;S1Kw~kL`fZ+w(X^ltVJA}bJ(oltHcs7| z-5*KtyEA0E(YiIHRP>s!AQ6e8*Tnzpviciz9OS5QE$l=RJ91CC2erxGO*&=jcwiy? zwpC#Fatyo&k}ZV9UY$Kf81$7&G;c8Z*}Ij6~8M`Pt`~dB2c6q3FF$8Bh|5dRTxHhL9e` z+ba-`XB5J5g6hDF*4lHpE(#gXVv4k9ik|)56ZL8MT4>GMr5tV^J)+1k7YZ`{bDc-L zhuB0^+rp}v=$t;`8d-`!W&g4Z^gG->&BmPh{dC7BV~r}kR{ai*vllR9spOQ2O4Nu& zRrYC6`D+`w7Q1~*HuoLR2W`4T>-(d&(GRQ6B?D$OXTZd~B$m}22yqw*#{_MhHU|S5 zQv$)P7dxZ;{x%N!$>#w%!K$wE;tvd{COg1N#4X$(8=)b(q_$5nE$*5wvOj(g=eTHw zceE8esIXKAP!yaY`7ZTn6Cazy-qd%7kUL>`SOs#|;g-|k7GViQ{2-))EQQQx3rm$) z3G<)G%yb=@DUk60r+g{>ER)QmZpEsH>eUGQtP8183uTj@FO~%jzM%A>o>`&dJ9l@p(0LK^;)4Nr>S7Y5Sm6Iou}Rx5sTk^)8+&7(Q?)Sfv*VeQb1$7qQ0ZJJmb(6IRu}$MU)oR zNk(+wF{Hj1#R0$tbrMT(Dm&E<;WKO5knThV=Fl?GgJ^Lt>!dYvTFiLa&U3^MQRB$0-ieHjHK9@(r^@K>Z#_4iq4?0#i!8^I z^tslw+t#MV6=aky^hIGvKP`pfCNdChYTuI+0vSgsUN`CAGsPGwkn6_(Tw6TO{Zexe zu?ZOkc2-lYLvc)`-d0?{gsU&oGgJ)`X=%1i&7J1J$=47v8gm3D_t^L11ER6GkzV;T z5S1Xrx-+geuS?oe?A*PGwmf`c;h`=GBNKMG%x&0Op#EUie^46*M*0X>sf6d9gGrX| zPly-vY?8NL-WXnyKJRl=eGI29NYN0$=Wrw)@247IC6b>ldrN|R)m*j>_4T#WIjZ(m zB;X!9k5w&qwgZmlXFF;zg_>W4+L%riot8WLV(-BL_4L#o3@fXyWw{g5hnl(m$=`LZ z-)M6$YbWC&I^EHEtVLoH(7#%wjDzWR^j$!=qE+CL^>7z^jr&i9YQB z`e-k$*3~I;Lk>(4ky}-F9&)GwVo)#<_MOaJxW_I6RoWgZS7xU4c$U)|`epWdZ(XSE zK8hv29$!~<8F?)@TN}eI$z>Hyp0s>lhaZ%!Ux6X+jfh$_KWP`S-UP8c6ML;*%!C?w zkECiGv7ifflLs(_0(g{EoQLgU`Y=TQ{*w^Fxhyqk(@q%uEInX;+kJKgdNg&?7G_LY zS{^6We2W;bEA?s#r}Gkw^ee0*1)NjAD{ML)8$INIGVE*#AAiQY8?n7FBB__)Q z1a4fe5z#N49_~kppkUf1K3FQ^1Cv-dP!N@$O+j<2dh$tlR9A+r*0JX73Ntk9PB=!*)yF(u5f{t|i z9rPIagpgxw^;*d|!djbs;B5{bimBy8w#*Mh@o=xU7?0lNvc{rgCg=AZ8z+mgeAg@f zkX0-CcpPsX!|kZ~Sy9Un9GruDfJO@K*fJmOcE8&=OXij5t~Ltc1-LlDW^qw>E&8WTyzcLWv;O}yvcK)6xoev5)ti+;>5|23J$Ee zn~s|o6OfdxgqSn>0mJA>Fs$v)ZWy?D)5_wTa zA8HN-f$?k8YoDHq4Y<)?ZlL^Oy-EDtN<1|XE^!UIT+A1E0*7PbPOhMj0|r8u?0kwA zurVd8=@JcpmBIr}W=}RKJxu1f$xN-xO6sRtP?thiPvLC<`Hp1;p=mH&3locK9u%~{ zfphY1IEjkMYuld;P!+bQi?(mra&)t`lwzdk=Kt&e-SV}69{=Oq2KS+e)1!!Qgnl^ zl*lND!L}9Si%n-lMz&tqoV{oM?8-1aH9|e<7lRED%x11-DY+P*l%_(A&K_btQnqw~ zc!?Eiawy}A=cy{@emyld3S zk1AfRUY|PiD-Jza2*$hHq4nil>IWMjkwK5b)KjHYLmc88F4SaAc#adrU24Ajj`j3* z1HZ58Jfay+P4=VN@cwREhr>t7ZSwBSj)@e-qGzlR62uGs+5mvadi_%5RXCi{eA5LZ_#m$IzBZ{){=`h|{)RqP_;$eY8Ma~k55X{cMkM??$1xjdpZ5eNfeB80?mNI&k(M&33 z$p=Q6IBFc@aMiq7M^s55fF(bC$9ZsGAvX=oxrFL4U|il?)Um?ns7E8Pc`2rozaoJD)&?ngzM_X1bK} zT#?ifLuKzz+xnH)U7Bqj+S7PJPQ0VmFi2&CIU}Y!&h#6HAu2t;?H@nXZhS8lk}Db3 zfDQ(uKtfN@G?#l7gLR83zYlKVtkQ`9{0=7$tXl*o*m3JBc?>Gj;Z;EQjKoqd*x9{L-3gxGXa!`M#H}%lE^e2 z<%G_JimcfvOi{rWm0S|DjxMceJN{95Iu@)K zq5sX6KV_Eb-uD~7=QJY-g{d2-jqXc7=%BM#g1xh_kfdt&kU*?vVn>5A=ae|+pr$k) zwJ@KJFG3LC)+Zw!PXOg2`lVruasjj9tF&mElRUKJQIy|KB3%X{^{_n=6+`Nf&LMRV zCd{j-T*d#{DI=9!;d!U~a{wOV;*?eZ=Sm(j@exdJ?X z@b##*jqi|E6<6uUYVKt$*AV_CUhdthg>iau+EG3zYAY}6&csNL?q3Ht7F@ryA;97+ zT|9-g>=rcck#n>i?}&V8N+iebzPJXWHT?5xWU(<=F=Y@}XKyD+GB#2J1(53C`UVtc z`)Rjg3zBa1^$ghsu5#{bt1l`B)C_1I$3NDpmf9{>qlnIWCetY#$4ZFyD@llOuoEE7 z2C1M{vPnT-RTMV$U`!8SRb-mmpTU-ygDG{vPFN*FE581ps6RI^9-U^MebX5Uw$W)I z%$kW!u673YhnEZ=mMSf)@h}L5XQ&;`JZ4otF&BsV2TXCp(_I&v)r}`4r1w$eHpOp$ zpp+95NnMQ9zUoxpi;?!>m?ZjEC9=Eucpxv+-cTSFwi1XgBKve0qpjkyVm;_NRpFy0 ze!<3V4DEb=9p0p6Gok5LWh^C~o?dpQFL!i@G_ODEqHrxw;@X4P8(0sQu zFZr%dXAQ~XIc~@pvK**@fAs^a&bye*I5mf}RpQcWt1-0G= z0))W692%D>hv%fp8T2-ynDX6X>%lv%%z* z?*1DyJ3pcKV$A|76r`BzxJla`&Zj*L^(uL0mIXX_)Gk=%q@(zI43gE&yAA=wizikl zhW{cWNfBNiu>k%i4(`D^UN^H3FfXZ)lnEPa7OM8OTr0=F%yaQR+}Ri=G#CL^WTC>T)X*^Dq$H~(tQYL?=zEF!f0-;JcgpK8P>YdaF#4Nmb~Oz z%{*RP@vMjHJS5Zb%IwX>*NBQ>r~g}lpvs Date: Mon, 15 Jun 2020 10:50:15 +0200 Subject: [PATCH 11/83] Extract symbol tests --- test/mocha/test-mei40.js | 18 ------------------ test/mocha/test-symbols.js | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 test/mocha/test-symbols.js diff --git a/test/mocha/test-mei40.js b/test/mocha/test-mei40.js index 307df92..deeb21c 100644 --- a/test/mocha/test-mei40.js +++ b/test/mocha/test-mei40.js @@ -9,7 +9,6 @@ const meiHead = utils.getTestMeiDom('header.mei'); const meiMdivs = utils.getTestMeiDom('mdivs.mei'); const meiNRsmall = utils.getTestMeiDom('nrsmall.mei'); const meiBarRests = utils.getTestMeiDom('barrests.mei'); -const meiSymbols = utils.getTestMeiDom('symbols.mei'); describe("Head 4.0", () => { it("correct meiversion is set", () => { @@ -105,20 +104,3 @@ describe("Measure rests and repeats", () => { assert.strictEqual(xpath.evaluateXPath('//*:measure[@n="8"]//*:multiRpt', meiBarRests).getAttribute('num'), '4'); }); }); - -describe("Updated attributes for symbols (mordents and turns)", () => { - const mordents = xpath.evaluateXPath('//*:mordent', meiSymbols); - const turns = xpath.evaluateXPath('//*:turn', meiSymbols); - it("Mordent has @form='upper'", () => { - utils.assertAttrOnElements(mordents, [0], 'form', 'upper'); - }); - it("Inverted mordent has @form='lower'", () => { - utils.assertAttrOnElements(mordents, [1], 'form', 'lower'); - }); - it("Turn has @form='upper'", () => { - utils.assertAttrOnElements(turns, [0], 'form', 'upper'); - }); - it("Inverted turn has @form='lower'", () => { - utils.assertAttrOnElements(turns, [1], 'form', 'lower'); - }); -}); diff --git a/test/mocha/test-symbols.js b/test/mocha/test-symbols.js new file mode 100644 index 0000000..abfb785 --- /dev/null +++ b/test/mocha/test-symbols.js @@ -0,0 +1,25 @@ +"use strict"; + +const assert = require('assert'); +const xpath = require('fontoxpath'); +const utils = require('./utils'); + +const meiSymbols = utils.getTestMeiDom('symbols.mei'); + +describe("Expected attributes for symbols (mordents and turns)", () => { + const mordents = xpath.evaluateXPath('//*:mordent', meiSymbols); + const turns = xpath.evaluateXPath('//*:turn', meiSymbols); + it("Mordent has @form='upper'", () => { + utils.assertAttrOnElements(mordents, [0], 'form', 'upper'); + }); + it("Inverted mordent has @form='lower'", () => { + utils.assertAttrOnElements(mordents, [1], 'form', 'lower'); + }); + it("Turn has @form='upper'", () => { + utils.assertAttrOnElements(turns, [0], 'form', 'upper'); + }); + it("Inverted turn has @form='lower'", () => { + utils.assertAttrOnElements(turns, [1], 'form', 'lower'); + }); + }); + \ No newline at end of file From 8c1415c090f6575cd416640a374908a4c367b987 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 15 Jun 2020 10:10:54 +0200 Subject: [PATCH 12/83] Reduce redundant/unnecessary code --- src/ExportConverters.mss | 11 +++------ src/ExportGenerators.mss | 5 +--- src/Initialize.mss | 25 +++++++++++++++++++- src/Run.mss | 2 ++ src/Utilities.mss | 49 ++++++++-------------------------------- test/sib-test/Run.mss | 1 + 6 files changed, 41 insertions(+), 52 deletions(-) diff --git a/src/ExportConverters.mss b/src/ExportConverters.mss index c75dd7d..b86bee9 100644 --- a/src/ExportConverters.mss +++ b/src/ExportConverters.mss @@ -592,15 +592,11 @@ function ConvertSibeliusStructure (score) { { for each Bar b in s { - if (bar_to_staff.PropertyExists(b.BarNumber)) - { - bar_to_staff[b.BarNumber].Push(s.StaffNum); - } - else + if (not bar_to_staff.PropertyExists(b.BarNumber)) { bar_to_staff[b.BarNumber] = CreateSparseArray(); - bar_to_staff[b.BarNumber].Push(s.StaffNum); } + bar_to_staff[b.BarNumber].Push(s.StaffNum); } } return bar_to_staff; @@ -611,8 +607,7 @@ function ConvertColor (nrest) { r = nrest.ColorRed; g = nrest.ColorGreen; b = nrest.ColorBlue; - a_dec = nrest.ColorAlpha & '.0'; - a = a_dec / 255.0; + a = nrest.ColorAlpha / 255.0; return 'rgba(' & r & ',' & g & ',' & b & ',' & a & ')'; } //$end diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 261a581..baa9379 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -354,9 +354,6 @@ function GenerateMeasure (num) { libmei.AddAttribute(m, 'metcon', 'false'); } - systf = score.SystemStaff; - sysBar = systf[num]; - if (sysBar.NthBarInSystem = 0) { Self._property:SystemBreak = libmei.Sb(); @@ -999,7 +996,7 @@ function GenerateNote (nobj) { ptuplet = nobj.ParentNoteRest.ParentTupletIfAny; pnum = ptuplet.Left; pden = ptuplet.Right; - floatgesdur = (pden & '.0' / pnum & '.0') * dur; + floatgesdur = (pden * 1.0 / pnum) * dur; gesdur = Round(floatgesdur); } else diff --git a/src/Initialize.mss b/src/Initialize.mss index 77bd623..c69c8f6 100644 --- a/src/Initialize.mss +++ b/src/Initialize.mss @@ -1,10 +1,33 @@ function Initialize() { Self._property:Logfile = GetTempDir() & LOGFILE; + AddToPluginsMenu(PluginName,'Run'); +} //$end + + +function InitGlobals () { if (Sibelius.FileExists(Self._property:Logfile) = False) { Sibelius.CreateTextFile(Self._property:Logfile); } - AddToPluginsMenu(PluginName,'Run'); + Self._property:TypeHasEndBarNumberProperty = CreateDictionary( + // We omit 'ArpeggioLine'. It technically has an EndBarNumber property, + // but Sibelius does not allow creating an Arpeggio with a Duration + // other than 0, which means the EndBarNumber is always the same as the + // start bar number. + 'BeamLine', true, + 'Bend', true, + 'Box', true, + 'CrescendoLine', true, + 'DiminuendoLine', true, + 'GlissandoLine', true, + 'Line', true, + 'OctavaLine', true, + 'PedalLine', true, + 'RepeatTimeLine', true, + 'RitardLine', true, + 'Slur', true, + 'Trill', true + ); } //$end diff --git a/src/Run.mss b/src/Run.mss index dca4374..132b078 100644 --- a/src/Run.mss +++ b/src/Run.mss @@ -45,6 +45,8 @@ function DoExport (filename) { Self._property:libmei = libmei4; libmei.destroy(); + InitGlobals(); + // Deal with the Progress GUI // set the active score here so we can refer to it throughout the plugin Self._property:ActiveScore = Sibelius.ActiveScore; diff --git a/src/Utilities.mss b/src/Utilities.mss index 80d44ff..4ccefff 100644 --- a/src/Utilities.mss +++ b/src/Utilities.mss @@ -290,47 +290,18 @@ function AddBarObjectInfoToElement (bobj, element) { libmei.AddAttribute(element, 'tstamp', ConvertPositionToTimestamp(bobj.Position, bar)); - switch (bobj.Type) + start_obj = GetNoteObjectAtPosition(bobj); + if (start_obj != null) { - case('SymbolItem') - { - start_obj = GetNoteObjectAtPosition(bobj); - if (start_obj != null) - { - libmei.AddAttribute(element, 'startid', '#' & start_obj._id); - } - } - case('NoteRest') - { - start_obj = GetNoteObjectAtPosition(bobj); - if (start_obj != null) - { - libmei.AddAttribute(element, 'startid', '#' & start_obj._id); - } - } - case('ArpeggioLine') - { - start_obj = GetNoteObjectAtPosition(bobj); - if (start_obj != null) - { - libmei.AddAttribute(element, 'startid', '#' & start_obj._id); - } - } - // at default add tstamp2 and try to find startid and endid - default - { - libmei.AddAttribute(element, 'tstamp2', ConvertPositionWithDurationToTimestamp(bobj)); - start_obj = GetNoteObjectAtPosition(bobj); - end_obj = GetNoteObjectAtEndPosition(bobj); - if (start_obj != null) - { - libmei.AddAttribute(element, 'startid', '#' & start_obj._id); - } + libmei.AddAttribute(element, 'startid', '#' & start_obj._id); + } - if (end_obj != null) - { - libmei.AddAttribute(element, 'endid', '#' & end_obj._id); - } + if (TypeHasEndBarNumberProperty[bobj.Type]) { + libmei.AddAttribute(element, 'tstamp2', ConvertPositionWithDurationToTimestamp(bobj)); + end_obj = GetNoteObjectAtEndPosition(bobj); + if (end_obj != null) + { + libmei.AddAttribute(element, 'endid', '#' & end_obj._id); } } diff --git a/test/sib-test/Run.mss b/test/sib-test/Run.mss index bab85fe..25684f9 100644 --- a/test/sib-test/Run.mss +++ b/test/sib-test/Run.mss @@ -2,6 +2,7 @@ function Run() { Self._property:libmei = libmei4; Self._property:sibmei = sibmei4; sibmei4._property:libmei = libmei; + sibmei.InitGlobals(); plugins = Sibelius.Plugins; From db550dd37e15293ffe45688ee20d4cc2bdcbcd34 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 15 Jun 2020 12:15:36 +0200 Subject: [PATCH 13/83] Text rewrite: Extremely dirty WIP --- src/ExportConverters.mss | 83 ------- src/ExportGenerators.mss | 14 +- src/TextStyles.mss | 484 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 486 insertions(+), 95 deletions(-) create mode 100644 src/TextStyles.mss diff --git a/src/ExportConverters.mss b/src/ExportConverters.mss index b86bee9..2bd0d4d 100644 --- a/src/ExportConverters.mss +++ b/src/ExportConverters.mss @@ -875,89 +875,6 @@ function ConvertBarline (linetype) { } } //$end -function ConvertText (textobj) { - //$module(ExportConverters.mss) - styleid = textobj.StyleId; - switch (styleid) - { - case ('text.staff.expression') - { - dynam = libmei.Dynam(); - libmei.SetText(dynam, lstrip(textobj.Text)); - libmei.AddAttribute(dynam, 'staff', textobj.ParentBar.ParentStaff.StaffNum); - libmei.AddAttribute(dynam, 'tstamp', ConvertPositionToTimestamp(textobj.Position, textobj.ParentBar)); - - if (textobj.Dx != 0) - { - libmei.AddAttribute(dynam, 'ho', ConvertOffsetsToMEI(textobj.Dx)); - } - - if (textobj.Dy != 0) - { - libmei.AddAttribute(dynam, 'vo', ConvertOffsetsToMEI(textobj.Dy)); - } - return dynam; - } - case ('text.system.page_aligned.title') - { - text = ConvertSubstitution(textobj.Text); - atext = libmei.AnchoredText(); - title = libmei.Title(); - - libmei.AddChild(atext, title); - libmei.SetText(title, text); - - return atext; - } - case ('text.system.page_aligned.composer') - { - return ConvertTextElement(textobj); - } - case ('text.system.tempo') - { - tempo = libmei.Tempo(); - atext = ConvertTextElement(textobj); - libmei.AddAttribute(tempo, 'tstamp', ConvertPositionToTimestamp(textobj.Position, textobj.ParentBar)); - libmei.AddChild(tempo, atext); - return tempo; - } - case ('text.staff.space.figuredbass') - { - harm = libmei.Harm(); - harm = AddBarObjectInfoToElement(textobj, harm); - fb = libmei.Fb(); - libmei.AddChild(harm, fb); - ConvertFbFigures(fb, textobj); - return harm; - } - default - { - return null; - } - } -} //$end - -function ConvertTextElement (textobj) { - //$module(ExportConverters.mss) - obj = libmei.AnchoredText(); - - text = ConvertSubstitution(textobj.Text); - - libmei.SetText(obj, text); - - if (textobj.Dx != 0) - { - libmei.AddAttribute(obj, 'ho', ConvertOffsetsToMEI(textobj.Dx)); - } - - if (textobj.Dy != 0) - { - libmei.AddAttribute(obj, 'vo', ConvertOffsetsToMEI(textobj.Dy)); - } - - return obj; -} //$end - function ConvertFbFigures (fb, bobj) { //$module(ExportConverters) if (Self._property:FigbassCharMap = null) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index baa9379..c2f23d3 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -425,7 +425,7 @@ function GenerateMeasure (num) { textobjs = systemtext[num]; for each textobj in textobjs { - text = ConvertText(textobj); + text = HandleText(textobj); if (text != null) { @@ -698,17 +698,7 @@ function GenerateLayers (staffnum, measurenum) { } case('Text') { - mobj = ConvertText(bobj); - if (mobj != null) - { - //Try to get note at position of bracket and put id - obj = GetNoteObjectAtPosition(bobj); - - if (obj != null) - { - libmei.AddAttribute(mobj, 'startid', '#' & obj._id); - } - } + mobj = HandleText(bobj); } } diff --git a/src/TextStyles.mss b/src/TextStyles.mss new file mode 100644 index 0000000..22a8664 --- /dev/null +++ b/src/TextStyles.mss @@ -0,0 +1,484 @@ +function InitTextHandlers() { + // QUESTION: We could also take an argument and throw all text handlers from + // extensions into the same dictionary + + Self._property:TextHandlers = CreateDictionary( + 'text.staff.expression', 'ExpressionTextHandler', + 'text.system.page_aligned.title', 'PageTitleHandler', + 'text.system.page_aligned.composer', 'PageComposerTextHandler', + 'text.staff.space.figuredbass', 'FiguredBassTextHandler' + ); + + Self._property:TextSubstituteMap = CreateDictionary( + 'Title', CreateSparseArray('Title'), + // , , , and + // are only allowed in a few places, e.g. metadata or title pages. + // We therfore use mor generic elements + 'Composer', CreateSparseArray('PersName', 'role', 'Composer'), + 'Arranger', CreateSparseArray('PersName', 'role', 'Arranger'), + 'Lyricist', CreateSparseArray('PersName', 'role', 'Lyricist'), + 'Artist', CreateSparseArray('PersName', 'role', 'Artist'), + // is only allowed on , so use generic element + 'Copyright', CreateSparseArray('Seg', 'type', 'Copyright'), + // is only allowed in a few places, so use generic element + // We don't even know if it's a person or an institution + 'Publisher', CreateSparseArray('Seg', 'type', 'Publisher'), + 'MoreInfo', CreateSparseArray('Seg', 'type', 'MoreInfo'), + 'PartName', CreateSparseArray('Seg', 'type', 'PartName') + ); +} //$end + + +function HandleText (textObject) { + // TODO: Move this to a global initialization function + InitTextHandlers(); + Trace('handle text'); + if (null != Self._property:Extension and null != Extension.TextHandlers) + { + // TODO: We need to check for both StyleId *and* StyleAsText so we can + // handle custom styles + textHandler = Extension.TextHandlers[textObject.StyleId]; + if (null != textHandler) + { + return Extension.@textHandler(textObject); + } + } + + textHandler = TextHandlers[textObject.StyleId]; + if (null != textHandler) + { + return @textHandler(textObject); + } +} //$end + + +function ExpressionTextHandler (textObj) { + dynam = AddBarObjectInfoToElement(textObj, libmei.Dynam()); + AddFormattedText(dynam, textObj); + return dynam; +} //$end + + +function PageTitleHandler (textObject) { + atext = libmei.AnchoredText(); + title = libmei.Title(); + + libmei.AddChild(atext, title); + libmei.SetText(title, text); + + return atext; +} //$end + + +function PageComposerTextHandler (textObject) { + // 'text.system.page_aligned.composer' + return AddBarObjectInfoToElement(textObj, CreateAnchoredText(textObj)); +} //$end + + +function TempoTextHandler (textObject) { + // 'text.system.tempo' + tempo = libmei.Tempo(); + libmei.AddChild(tempo, CreateAnchoredText(textObj)); + return tempo; +} //$end + + +function FiguredBassTextHandler (textObject) { + // 'text.staff.space.figuredbass' + harm = AddBarObjectInfoToElement(textObj, libmei.Harm()); + fb = libmei.Fb(); + libmei.AddChild(harm, fb); + ConvertFbFigures(fb, textObj); + return harm; +} //$end + + +function CreateAnchoredText (textObj) { + //$module(ExportConverters.mss) + anchoredText = libmei.AnchoredText(); + libmei.SetText(anchoredText, ConvertSubstitution(textObj.Text)); + return anchoredText; +} //$end + + +function AddFormattedText (parentElement, textObj) { + textWithFormatting = textObj.TextWithFormatting; + if (textWithFormatting.NumChildren < 2 and CharAt(textWithFormatting, 0) != '\\') + { + parentElement.SetText(textObj.Text); + return null; + } + + state = CreateDictionary( + 'currentText', null, + 'rendAttributes', null, + 'rendFlags', null, + 'nodes', null, + 'paragraphs', null + ); + + for each component in textObj.TextWithFormatting + { + switch (Substring(component, 0, 2)) + { + case ('\\n') + { + state.nodes.Push(libmei.Lb()); + } + case ('\\N') + { + // TODO: Add

if it is allowed within parentElement (look at .name) + state.nodes.Push(libmei.Lb()); + } + case ('\\B') + { + SwitchTextStyle(state, 'fontweight', 'bold'); + } + case ('\\b') + { + SwitchTextStyle(state, 'fontweight', 'normal'); + } + case ('\\I') + { + SwitchTextStyle(state, 'fontstyle', 'italic'); + } + case ('\\i') + { + SwitchTextStyle(state, 'fontstyle', 'normal'); + } + case ('\\U') + { + SwitchTextStyle(state, 'rend', 'underline', true); + } + case ('\\u') + { + SwitchTextStyle(state, 'rend', 'underline', false); + } + case ('\\f') + { + SwitchFont(state, GetTextCommandArg(component)); + } + case ('\\c') + { + // TODO: Can we sensibly handle a character style change? The + // only built-in one seem to be `text.character.musictext` + ; + } + case ('\\s') + { + fontsize = ConvertOffsetsToMEI(GetTextCommandArg(component)); + SwitchTextStyle(state, 'fontsize', fontsize); + } + case ('\\v') + { + // Vertical scale change (vertical stretching). Probably not + // possible to handle + ; + } + case ('\\h') + { + // Horizontal scale change (horizontal stretching). Probably not + // possible to handle + ; + } + case ('\\t') + { + // Tracking. Probably not possible to handle. + ; + } + case ('\\p') + { + SwitchBaselineAdjust(state, GetTextCommandArg(component)); + } + case ('\\$') { + AddTextSubstitute(state, substituteName); + } + case ('\\\\') + { + // According to the documentation, 'backslashes themselves are + // represented by \\ , to avoid conflicting with the above + // commands'. Though that does not seem to work, but in case + // Avid fixes this at some point, let's just assume it works. + // We strip one leading backspace. + state.currentText = state.currentText & Substring(component, 1); + } + default + { + // This is regular text + state.currentText = state.currentText & component; + } + } + } +} //$end + + +function NewTextParagraph (state) { + ; +} //$end + + +function GetTextCommandArg (command) { + // Remove leading part, e.g. the '\$' or '\s' and trailing '\' + return Substring(2, Length(command) - 3); +} //$end + + +function SwitchBaselineAdjust (state, param) { + sup = (param = 'superscript'); + sub = (param = 'subscript'); + if (sup != state.rendFlags['sup'] or sub != state.rendFlags['sub']) { + AppendStyledText(state); + } + state.rendFlags['sup'] = sup; + state.rendFlags['sub'] = sub; +} //$end + + +function SwitchFont (state, fontName) { + if (fontName = '_') + { + // Before resetting the style, we have to add text preceding the '\f_\' + // style reset – but only if the style reset actually changes something. + + textNotYetAppended = true; + + if (null != state.rendAttributes) + { + for each Name attName in state.rendAttributes + { + if (textNotYetAppended and state.rendAttributes[attName] != null) + { + AppendStyledText(state); + textNotYetAppended = false; + } + state.rendAttributes[attName] = null; + } + } + if (null != state.rendFlags) + { + for each Name flagName in state.rendFlags + { + if (textNotYetAppended and state.rendFlags[flagName]) + { + AppendStyledText(state); + textNotYetAppended = false; + } + state.rendFlags[flagName] = false; + } + } + } + else + { + SwitchTextStyle(state, 'fontfam', fontName); + } +} //$end + + +function SwitchTextStyle (state, attName, value) { + if (state.rendAttributes[attName] != value) + { + // Style changes, so append current text before modifying style state + AppendStyledText(state); + } + state.rendAttributes[attName] = value; +} //$end + + +function SwitchRendFlags (state, flagName, value) { + if (state.rendFlags[flagName] != value) + { + AppendStyledText(state); + } + state.rendFlags[flagName] = value; +} //$end + + +function AppendStyledText (state) { + if (null != state.currentText) + { + rendAttributes = GetRendAttributes(state); + if (null = rendAttributes) + { + nodes = state.nodes; + if (null = nodes) + { + state.nodes = CreateSparseArray(currentText); + } + else + { + currentNode = nodes[nodes.Length - 1]; + if (IsObject(currentNode)) + { + // This is an element + newTail = libmei.GetTail(currentElement) & state.currentText; + libmei.SetTail(currentElement, newTail); + } + else + { + // currentNode is plain text + nodes[nodes.Length - 1] = currentNode & state.currentText; + } + } + } + else + { + rend = libmei.Rend(); + for each Name attName in rendAttributes + { + rend.AddAttribute(attName, rendAttributes[attName]); + } + // TODO: Continue this + } + } + + state.currentText = ''; +} //$end + + +function GetRendAttributes (state) { + rendAttributes = null; + + if (null != state.rendAttributes) + { + for each Name attName in state.rendAttributes + { + value = state.rendAttributes[attName]; + if (null != value) + { + if (null = rendAttributes) { + rendAttributes = CreateDictionary(); + } + rendAttributes[attName] = value; + } + } + } + + if (null != state.rendFlags) + { + rendFlags = null; + for each Name flagName in state.rendFlags + { + flagActive = state.rendFlags[flagName]; + if (flagActive) + { + if (null != rendFlags) + { + rendFlags = CreateSparseArray(); + } + rendFlags.Push(flagName); + } + } + if (null != rendFlags) + { + if (null = rendAttributes) { + rendAttributes = CreateDictionary(); + } + rendAttributes['rend'] = rendFlags.Join(' '); + } + } + + return rendAttributes; +} //$end + + +function AppendTextSubstitute (state, substituteName) { + score = Self._property:ActiveScore; + substitutedText = score.@substituteName; + if (substitutedText = '') { + // TODO: Also check for all-whitespace text + return null; + } + + textSubstituteInfo = TextSubstituteMap[substituteName]; + if (null = textSubstituteInfo) + { + // No known substitution. Sibelius renders those literally. + state.currentText = state.currentText & '\\$' & substituteName & '\\'; + return null; + } + + elementName = textSubstituteInfo[0]; + element = libmei.@elementName(); + state.nodes.Push(element); + for i = 1 to textSubstituteInfo.Length step 2 + { + libmei.AddAttribute(textSubstituteInfo[i], textSubstituteInfo[i + 1]); + } + + /* + // Use this instead of a Dictionary mapping? May be a little clearer and + // allows allows the analysis script to check it properly. + element = null; + + switch (substituteName) + { + case ('Title') + { + element = libmei.Title(); + } + case ('Composer') + { + element = libmei.Composer(); + } + case ('Arranger') + { + element = libmei.Arranger(); + } + case ('Lyricist') + { + element = libmei.Lyricist(); + } + case ('MoreInfo') + { + element = libmei.Seg(); + libmei.AddAttribute(element, 'type', 'MoreInfo'); + } + case ('Artist') + { + element = libmei.PersName(); + libmei.AddAttribute(element, 'role', 'Artist'); + } + case ('Copyright') + { + // is only allowed on , so use generic element + element = libmei.Seg(); + libmei.AddAttribute(element, 'type', 'Copyright'); + } + case ('Publisher') + { + // is only allowed in a few places, so use generic element + // We don't even know if it's a person or an institution + element = libmei.Seg(); + libmei.AddAttribute(element, 'type', 'Publisher'); + } + case ('PartName') + { + element = libmei.Seg(); + libmei.AddAttribute(element, 'type', 'PartName'); + } + default + { + state.currentText = state.currentText & '\\$' & substituteName & '\\'; + return null; + } + }*/ + + + rendAttributes = GetRendAttributes(state); + rendElement = null; + if (null = rendAttributes) + { + libmei.SetText(element, substitutedText); + } + else + { + rendElement = libmei.Rend(); + libmei.AddChild(element, rendElement); + for each Name attName in rendAttributes + { + libmei.AddAttribute(rendElement, attName, rendAttributes[attName]); + } + libmei.SetText(rendElement, substitutedText); + } +} //$end From 67a7ae89422afe2f7304e0f8c83c7db2090a3ebd Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 15 Jun 2020 13:16:57 +0200 Subject: [PATCH 14/83] Added tests for every symbol --- test/mocha/test-symbols.js | 46 +++++++++++++++++++++----------- test/sibmeiTestSibs/symbols.sib | Bin 39343 -> 43812 bytes 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/test/mocha/test-symbols.js b/test/mocha/test-symbols.js index abfb785..c04fee7 100644 --- a/test/mocha/test-symbols.js +++ b/test/mocha/test-symbols.js @@ -6,20 +6,36 @@ const utils = require('./utils'); const meiSymbols = utils.getTestMeiDom('symbols.mei'); -describe("Expected attributes for symbols (mordents and turns)", () => { - const mordents = xpath.evaluateXPath('//*:mordent', meiSymbols); - const turns = xpath.evaluateXPath('//*:turn', meiSymbols); - it("Mordent has @form='upper'", () => { - utils.assertAttrOnElements(mordents, [0], 'form', 'upper'); +describe("Symbols", function() { + describe("Control events: Expected attributes (mordents and turns)", function() { + const mordents = xpath.evaluateXPath('//*:mordent', meiSymbols); + const turns = xpath.evaluateXPath('//*:turn', meiSymbols); + it("Mordent has @form='upper'", function() { + utils.assertAttrOnElements(mordents, [0], 'form', 'upper'); + }); + it("Inverted mordent has @form='lower'", function() { + utils.assertAttrOnElements(mordents, [1], 'form', 'lower'); + }); + it("Turn has @form='upper'", function() { + utils.assertAttrOnElements(turns, [0], 'form', 'upper'); + }); + it("Inverted turn has @form='lower'", function() { + utils.assertAttrOnElements(turns, [1], 'form', 'lower'); + }); + }); + describe("Modifiers (children of note): Articulations", function() { + var artics = xpath.evaluateXPath('//*:artic', meiSymbols); + it(" is child of ", function() { + for (let count = 0; count < artics.length; count++) { + assert.strictEqual(artics[count].parentNode.localName, "note", ' ${i} is not a child of '); + } + }); + it("every has @artic", function() { + utils.assertHasAttr(artics, "artic"); + }); + it(" with @place", function() { + utils.assertElsHasAttr(artics, [9, 10, 11, 12, 13, 14], 'place'); + }); }); - it("Inverted mordent has @form='lower'", () => { - utils.assertAttrOnElements(mordents, [1], 'form', 'lower'); - }); - it("Turn has @form='upper'", () => { - utils.assertAttrOnElements(turns, [0], 'form', 'upper'); - }); - it("Inverted turn has @form='lower'", () => { - utils.assertAttrOnElements(turns, [1], 'form', 'lower'); - }); - }); +}); \ No newline at end of file diff --git a/test/sibmeiTestSibs/symbols.sib b/test/sibmeiTestSibs/symbols.sib index 399d1252624ac6a3c649821a898be446bad5d0be..7f7c353b2f0c8fb64bbdda5f2fb44169d94f587d 100644 GIT binary patch literal 43812 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 literal 39343 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 Date: Mon, 15 Jun 2020 13:49:58 +0200 Subject: [PATCH 15/83] Load symbolStyles in DoExport() --- src/ExportProcessors.mss | 10 ---------- src/Run.mss | 10 ++++++++++ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ExportProcessors.mss b/src/ExportProcessors.mss index 73a228b..c4c0351 100644 --- a/src/ExportProcessors.mss +++ b/src/ExportProcessors.mss @@ -513,17 +513,7 @@ function ProcessSymbol (sobj) { } // load symbol style dictionaries - // TODO: load them once within Run()? - if (Self._property:ModifierMap = null) - { - Self._property:ModifierMap = InitModifierSymbols(); - } modifierMap = Self._property:ModifierMap; - - if (Self._property:ControlEventMap = null) - { - Self._property:ControlEventMap = InitControlEventSymbols(); - } controlEventMap = Self._property:ControlEventMap; // iterate over controlEventMap to process symbols that belong to measure diff --git a/src/Run.mss b/src/Run.mss index dca4374..84b3365 100644 --- a/src/Run.mss +++ b/src/Run.mss @@ -52,6 +52,16 @@ function DoExport (filename) { // Set up the warnings tracker Self._property:warnings = CreateSparseArray(); + // Initialize symbol styles + if (Self._property:ModifierMap = null) + { + Self._property:ModifierMap = InitModifierSymbols(); + } + if (Self._property:ControlEventMap = null) + { + Self._property:ControlEventMap = InitControlEventSymbols(); + } + progCount = Sibelius.ActiveScore.SystemStaff.BarCount; fn = utils.ExtractFileName(filename); progressTitle = utils.Format(_InitialProgressTitle, fn); From 43a359459e61ae195da8a9eee495c3a6310bd82d Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 15 Jun 2020 13:52:12 +0200 Subject: [PATCH 16/83] Fixed mordent test after changing order of symbols in test-sib --- test/mocha/test-symbols.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/mocha/test-symbols.js b/test/mocha/test-symbols.js index c04fee7..bbb2fde 100644 --- a/test/mocha/test-symbols.js +++ b/test/mocha/test-symbols.js @@ -11,10 +11,10 @@ describe("Symbols", function() { const mordents = xpath.evaluateXPath('//*:mordent', meiSymbols); const turns = xpath.evaluateXPath('//*:turn', meiSymbols); it("Mordent has @form='upper'", function() { - utils.assertAttrOnElements(mordents, [0], 'form', 'upper'); + utils.assertAttrOnElements(mordents, [1], 'form', 'upper'); }); it("Inverted mordent has @form='lower'", function() { - utils.assertAttrOnElements(mordents, [1], 'form', 'lower'); + utils.assertAttrOnElements(mordents, [0], 'form', 'lower'); }); it("Turn has @form='upper'", function() { utils.assertAttrOnElements(turns, [0], 'form', 'upper'); From b00aef911fc838f575470f099426e1cf150a5c18 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 15 Jun 2020 14:00:32 +0200 Subject: [PATCH 17/83] WIP: Make something work --- src/TextStyles.mss | 151 +++++++++++++++++++++++++++------------------ 1 file changed, 91 insertions(+), 60 deletions(-) diff --git a/src/TextStyles.mss b/src/TextStyles.mss index 22a8664..84d5cfb 100644 --- a/src/TextStyles.mss +++ b/src/TextStyles.mss @@ -32,7 +32,6 @@ function InitTextHandlers() { function HandleText (textObject) { // TODO: Move this to a global initialization function InitTextHandlers(); - Trace('handle text'); if (null != Self._property:Extension and null != Extension.TextHandlers) { // TODO: We need to check for both StyleId *and* StyleAsText so we can @@ -104,17 +103,19 @@ function CreateAnchoredText (textObj) { function AddFormattedText (parentElement, textObj) { textWithFormatting = textObj.TextWithFormatting; - if (textWithFormatting.NumChildren < 2 and CharAt(textWithFormatting, 0) != '\\') + if (textWithFormatting.NumChildren < 2 and CharAt(textWithFormatting[0], 0) != '\\') { parentElement.SetText(textObj.Text); return null; } + nodes = CreateSparseArray(); + state = CreateDictionary( 'currentText', null, - 'rendAttributes', null, - 'rendFlags', null, - 'nodes', null, + 'rendAttributes', CreateDictionary(), + 'rendFlags', CreateDictionary(), + 'nodes', nodes, 'paragraphs', null ); @@ -124,12 +125,14 @@ function AddFormattedText (parentElement, textObj) { { case ('\\n') { - state.nodes.Push(libmei.Lb()); + PushStyledText(state); + nodes.Push(libmei.Lb()); } case ('\\N') { + PushStyledText(state); // TODO: Add

if it is allowed within parentElement (look at .name) - state.nodes.Push(libmei.Lb()); + nodes.Push(libmei.Lb()); } case ('\\B') { @@ -192,7 +195,7 @@ function AddFormattedText (parentElement, textObj) { SwitchBaselineAdjust(state, GetTextCommandArg(component)); } case ('\\$') { - AddTextSubstitute(state, substituteName); + AppendTextSubstitute(state, GetTextCommandArg(component)); } case ('\\\\') { @@ -210,17 +213,55 @@ function AddFormattedText (parentElement, textObj) { } } } + + PushStyledText(state); + + nodeCount = nodes.Length; + precedingElement = null; + + nodeIndex = 0; + while (nodeIndex < nodeCount) + { + node = nodes[nodeIndex]; + if (IsObject(node)) + { + // We have an element + libmei.AddChild(parentElement, node); + precedingElement = node; + } + else + { + // We have a text node + text = node; + // If there are multiple adjacent text nodes, we need to join them + while (nodeIndex < nodeCount and not IsObject(nodes[nodeIndex + 1])) { + nodeIndex = nodeIndex + 1; + text = text & nodes[nodeIndex]; + } + + if (precedingElement = null) + { + libmei.SetText(parentElement, text); + } + else + { + libmei.SetTail(precedingElement, text); + } + } + nodeIndex = nodeIndex + 1; + } } //$end function NewTextParagraph (state) { + // TODO! ; } //$end function GetTextCommandArg (command) { // Remove leading part, e.g. the '\$' or '\s' and trailing '\' - return Substring(2, Length(command) - 3); + return Substring(command, 2, Length(command) - 3); } //$end @@ -228,7 +269,7 @@ function SwitchBaselineAdjust (state, param) { sup = (param = 'superscript'); sub = (param = 'subscript'); if (sup != state.rendFlags['sup'] or sub != state.rendFlags['sub']) { - AppendStyledText(state); + PushStyledText(state); } state.rendFlags['sup'] = sup; state.rendFlags['sub'] = sub; @@ -249,7 +290,7 @@ function SwitchFont (state, fontName) { { if (textNotYetAppended and state.rendAttributes[attName] != null) { - AppendStyledText(state); + PushStyledText(state); textNotYetAppended = false; } state.rendAttributes[attName] = null; @@ -261,7 +302,7 @@ function SwitchFont (state, fontName) { { if (textNotYetAppended and state.rendFlags[flagName]) { - AppendStyledText(state); + PushStyledText(state); textNotYetAppended = false; } state.rendFlags[flagName] = false; @@ -279,7 +320,7 @@ function SwitchTextStyle (state, attName, value) { if (state.rendAttributes[attName] != value) { // Style changes, so append current text before modifying style state - AppendStyledText(state); + PushStyledText(state); } state.rendAttributes[attName] = value; } //$end @@ -288,55 +329,44 @@ function SwitchTextStyle (state, attName, value) { function SwitchRendFlags (state, flagName, value) { if (state.rendFlags[flagName] != value) { - AppendStyledText(state); + PushStyledText(state); } state.rendFlags[flagName] = value; } //$end -function AppendStyledText (state) { - if (null != state.currentText) +function PushStyledText (state) { + if (state.currentText = '') { - rendAttributes = GetRendAttributes(state); - if (null = rendAttributes) - { - nodes = state.nodes; - if (null = nodes) - { - state.nodes = CreateSparseArray(currentText); - } - else - { - currentNode = nodes[nodes.Length - 1]; - if (IsObject(currentNode)) - { - // This is an element - newTail = libmei.GetTail(currentElement) & state.currentText; - libmei.SetTail(currentElement, newTail); - } - else - { - // currentNode is plain text - nodes[nodes.Length - 1] = currentNode & state.currentText; - } - } - } - else - { - rend = libmei.Rend(); - for each Name attName in rendAttributes - { - rend.AddAttribute(attName, rendAttributes[attName]); - } - // TODO: Continue this + return null; + } + + nodes = state.nodes; + if (null = nodes) + { + state.nodes = CreateSparseArray(); + } + + styleAttributes = GetStyleAttributes(state); + if (null = styleAttributes) + { + nodes.Push(state.currentText); + } + else + { + rend = libmei.Rend(); + for each Name attName in styleAttributes { + libmei.AddAttribute(rend, attName, styleAttributes[attName]); } + libmei.SetText(rend, state.currentText); + nodes.Push(rend); } state.currentText = ''; } //$end -function GetRendAttributes (state) { +function GetStyleAttributes (state) { rendAttributes = null; if (null != state.rendAttributes) @@ -384,11 +414,6 @@ function GetRendAttributes (state) { function AppendTextSubstitute (state, substituteName) { score = Self._property:ActiveScore; - substitutedText = score.@substituteName; - if (substitutedText = '') { - // TODO: Also check for all-whitespace text - return null; - } textSubstituteInfo = TextSubstituteMap[substituteName]; if (null = textSubstituteInfo) @@ -398,17 +423,23 @@ function AppendTextSubstitute (state, substituteName) { return null; } + substitutedText = score.@substituteName; + if (substitutedText = '') { + // TODO: Also check for all-whitespace text + return null; + } + elementName = textSubstituteInfo[0]; element = libmei.@elementName(); state.nodes.Push(element); for i = 1 to textSubstituteInfo.Length step 2 { - libmei.AddAttribute(textSubstituteInfo[i], textSubstituteInfo[i + 1]); + libmei.AddAttribute(element, textSubstituteInfo[i], textSubstituteInfo[i + 1]); } /* // Use this instead of a Dictionary mapping? May be a little clearer and - // allows allows the analysis script to check it properly. + // allows the analysis script to check it properly. element = null; switch (substituteName) @@ -465,9 +496,9 @@ function AppendTextSubstitute (state, substituteName) { }*/ - rendAttributes = GetRendAttributes(state); + styleAttributes = GetStyleAttributes(state); rendElement = null; - if (null = rendAttributes) + if (null = styleAttributes) { libmei.SetText(element, substitutedText); } @@ -475,9 +506,9 @@ function AppendTextSubstitute (state, substituteName) { { rendElement = libmei.Rend(); libmei.AddChild(element, rendElement); - for each Name attName in rendAttributes + for each Name attName in styleAttributes { - libmei.AddAttribute(rendElement, attName, rendAttributes[attName]); + libmei.AddAttribute(rendElement, attName, styleAttributes[attName]); } libmei.SetText(rendElement, substitutedText); } From a08cbcec65c898aa8677dafc60ba1dd1c3a181d9 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 15 Jun 2020 10:10:54 +0200 Subject: [PATCH 18/83] Reduce redundant/unnecessary code --- src/ExportConverters.mss | 11 +++------ src/ExportGenerators.mss | 5 +--- src/Initialize.mss | 25 +++++++++++++++++++- src/Run.mss | 2 ++ src/Utilities.mss | 49 ++++++++-------------------------------- test/sib-test/Run.mss | 1 + 6 files changed, 41 insertions(+), 52 deletions(-) diff --git a/src/ExportConverters.mss b/src/ExportConverters.mss index c75dd7d..b86bee9 100644 --- a/src/ExportConverters.mss +++ b/src/ExportConverters.mss @@ -592,15 +592,11 @@ function ConvertSibeliusStructure (score) { { for each Bar b in s { - if (bar_to_staff.PropertyExists(b.BarNumber)) - { - bar_to_staff[b.BarNumber].Push(s.StaffNum); - } - else + if (not bar_to_staff.PropertyExists(b.BarNumber)) { bar_to_staff[b.BarNumber] = CreateSparseArray(); - bar_to_staff[b.BarNumber].Push(s.StaffNum); } + bar_to_staff[b.BarNumber].Push(s.StaffNum); } } return bar_to_staff; @@ -611,8 +607,7 @@ function ConvertColor (nrest) { r = nrest.ColorRed; g = nrest.ColorGreen; b = nrest.ColorBlue; - a_dec = nrest.ColorAlpha & '.0'; - a = a_dec / 255.0; + a = nrest.ColorAlpha / 255.0; return 'rgba(' & r & ',' & g & ',' & b & ',' & a & ')'; } //$end diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 261a581..baa9379 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -354,9 +354,6 @@ function GenerateMeasure (num) { libmei.AddAttribute(m, 'metcon', 'false'); } - systf = score.SystemStaff; - sysBar = systf[num]; - if (sysBar.NthBarInSystem = 0) { Self._property:SystemBreak = libmei.Sb(); @@ -999,7 +996,7 @@ function GenerateNote (nobj) { ptuplet = nobj.ParentNoteRest.ParentTupletIfAny; pnum = ptuplet.Left; pden = ptuplet.Right; - floatgesdur = (pden & '.0' / pnum & '.0') * dur; + floatgesdur = (pden * 1.0 / pnum) * dur; gesdur = Round(floatgesdur); } else diff --git a/src/Initialize.mss b/src/Initialize.mss index 77bd623..c69c8f6 100644 --- a/src/Initialize.mss +++ b/src/Initialize.mss @@ -1,10 +1,33 @@ function Initialize() { Self._property:Logfile = GetTempDir() & LOGFILE; + AddToPluginsMenu(PluginName,'Run'); +} //$end + + +function InitGlobals () { if (Sibelius.FileExists(Self._property:Logfile) = False) { Sibelius.CreateTextFile(Self._property:Logfile); } - AddToPluginsMenu(PluginName,'Run'); + Self._property:TypeHasEndBarNumberProperty = CreateDictionary( + // We omit 'ArpeggioLine'. It technically has an EndBarNumber property, + // but Sibelius does not allow creating an Arpeggio with a Duration + // other than 0, which means the EndBarNumber is always the same as the + // start bar number. + 'BeamLine', true, + 'Bend', true, + 'Box', true, + 'CrescendoLine', true, + 'DiminuendoLine', true, + 'GlissandoLine', true, + 'Line', true, + 'OctavaLine', true, + 'PedalLine', true, + 'RepeatTimeLine', true, + 'RitardLine', true, + 'Slur', true, + 'Trill', true + ); } //$end diff --git a/src/Run.mss b/src/Run.mss index 84b3365..19d93d9 100644 --- a/src/Run.mss +++ b/src/Run.mss @@ -45,6 +45,8 @@ function DoExport (filename) { Self._property:libmei = libmei4; libmei.destroy(); + InitGlobals(); + // Deal with the Progress GUI // set the active score here so we can refer to it throughout the plugin Self._property:ActiveScore = Sibelius.ActiveScore; diff --git a/src/Utilities.mss b/src/Utilities.mss index 80d44ff..4ccefff 100644 --- a/src/Utilities.mss +++ b/src/Utilities.mss @@ -290,47 +290,18 @@ function AddBarObjectInfoToElement (bobj, element) { libmei.AddAttribute(element, 'tstamp', ConvertPositionToTimestamp(bobj.Position, bar)); - switch (bobj.Type) + start_obj = GetNoteObjectAtPosition(bobj); + if (start_obj != null) { - case('SymbolItem') - { - start_obj = GetNoteObjectAtPosition(bobj); - if (start_obj != null) - { - libmei.AddAttribute(element, 'startid', '#' & start_obj._id); - } - } - case('NoteRest') - { - start_obj = GetNoteObjectAtPosition(bobj); - if (start_obj != null) - { - libmei.AddAttribute(element, 'startid', '#' & start_obj._id); - } - } - case('ArpeggioLine') - { - start_obj = GetNoteObjectAtPosition(bobj); - if (start_obj != null) - { - libmei.AddAttribute(element, 'startid', '#' & start_obj._id); - } - } - // at default add tstamp2 and try to find startid and endid - default - { - libmei.AddAttribute(element, 'tstamp2', ConvertPositionWithDurationToTimestamp(bobj)); - start_obj = GetNoteObjectAtPosition(bobj); - end_obj = GetNoteObjectAtEndPosition(bobj); - if (start_obj != null) - { - libmei.AddAttribute(element, 'startid', '#' & start_obj._id); - } + libmei.AddAttribute(element, 'startid', '#' & start_obj._id); + } - if (end_obj != null) - { - libmei.AddAttribute(element, 'endid', '#' & end_obj._id); - } + if (TypeHasEndBarNumberProperty[bobj.Type]) { + libmei.AddAttribute(element, 'tstamp2', ConvertPositionWithDurationToTimestamp(bobj)); + end_obj = GetNoteObjectAtEndPosition(bobj); + if (end_obj != null) + { + libmei.AddAttribute(element, 'endid', '#' & end_obj._id); } } diff --git a/test/sib-test/Run.mss b/test/sib-test/Run.mss index bab85fe..25684f9 100644 --- a/test/sib-test/Run.mss +++ b/test/sib-test/Run.mss @@ -2,6 +2,7 @@ function Run() { Self._property:libmei = libmei4; Self._property:sibmei = sibmei4; sibmei4._property:libmei = libmei; + sibmei.InitGlobals(); plugins = Sibelius.Plugins; From d60c15ac509058ed4646b1bec72f73ed38b973a3 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 15 Jun 2020 16:21:18 +0200 Subject: [PATCH 19/83] Added init of symbol styles to InitGlobals() --- src/Initialize.mss | 11 +++++++++++ src/Run.mss | 10 ---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Initialize.mss b/src/Initialize.mss index c69c8f6..0a7aafd 100644 --- a/src/Initialize.mss +++ b/src/Initialize.mss @@ -30,4 +30,15 @@ function InitGlobals () { 'Slur', true, 'Trill', true ); + + // Initialize symbol styles + if (Self._property:ModifierMap = null) + { + Self._property:ModifierMap = InitModifierSymbols(); + } + if (Self._property:ControlEventMap = null) + { + Self._property:ControlEventMap = InitControlEventSymbols(); + } + } //$end diff --git a/src/Run.mss b/src/Run.mss index 19d93d9..132b078 100644 --- a/src/Run.mss +++ b/src/Run.mss @@ -54,16 +54,6 @@ function DoExport (filename) { // Set up the warnings tracker Self._property:warnings = CreateSparseArray(); - // Initialize symbol styles - if (Self._property:ModifierMap = null) - { - Self._property:ModifierMap = InitModifierSymbols(); - } - if (Self._property:ControlEventMap = null) - { - Self._property:ControlEventMap = InitControlEventSymbols(); - } - progCount = Sibelius.ActiveScore.SystemStaff.BarCount; fn = utils.ExtractFileName(filename); progressTitle = utils.Format(_InitialProgressTitle, fn); From 1e6483fe7a05919fbf9c0927a259af97dbf380d3 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 15 Jun 2020 16:25:04 +0200 Subject: [PATCH 20/83] Fixed error in test-sib and added test to check for artics --- test/mocha/test-symbols.js | 3 +++ test/sibmeiTestSibs/symbols.sib | Bin 43812 -> 43808 bytes 2 files changed, 3 insertions(+) diff --git a/test/mocha/test-symbols.js b/test/mocha/test-symbols.js index bbb2fde..ebc6da1 100644 --- a/test/mocha/test-symbols.js +++ b/test/mocha/test-symbols.js @@ -25,6 +25,9 @@ describe("Symbols", function() { }); describe("Modifiers (children of note): Articulations", function() { var artics = xpath.evaluateXPath('//*:artic', meiSymbols); + it("21 articulations were created", function () { + assert.strictEqual(artics.length, 21, "Not all 21 articulations were created"); + }); it(" is child of ", function() { for (let count = 0; count < artics.length; count++) { assert.strictEqual(artics[count].parentNode.localName, "note", ' ${i} is not a child of '); diff --git a/test/sibmeiTestSibs/symbols.sib b/test/sibmeiTestSibs/symbols.sib index 7f7c353b2f0c8fb64bbdda5f2fb44169d94f587d..54816b72b47199d2bb0b3353d54f8386ae7eabdb 100644 GIT binary patch literal 43808 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

34{sCb9_Winm~#YNP6_{s?VQ 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 From fa82059450cc68736a6334424723d0c68ee1570d Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 15 Jun 2020 19:48:25 +0200 Subject: [PATCH 21/83] Text rewrite: Make most things work and cleanup --- src/ExportConverters.mss | 57 ------------ src/TextStyles.mss | 185 +++++++++++++++------------------------ src/Utilities.mss | 8 +- 3 files changed, 77 insertions(+), 173 deletions(-) diff --git a/src/ExportConverters.mss b/src/ExportConverters.mss index 2bd0d4d..1c0b5f9 100644 --- a/src/ExportConverters.mss +++ b/src/ExportConverters.mss @@ -1059,60 +1059,3 @@ function ConvertTimeStamp (time) { isodate = utils.Format('%s:%s:%s', hours, mins, secs); return isodate; } //$end - - -function ConvertSubstitution (string) { - //$module(ExportConverters.mss) - // if the string does not start with a substitution, send back the original string. - if (Substring(string, 0, 2) != '\\$') - { - return string; - } - - score = Self._property:ActiveScore; - // it's 3 because of the two chars at the beginning, and then the last backslash. - fieldname = Substring(string, 2, Length(string) - 3); - - switch (fieldname) - { - case ('Title') - { - return score.Title; - } - case ('Composer') - { - return score.Composer; - } - case ('Arranger') - { - return score.Arranger; - } - case ('Lyricist') - { - return score.Lyricist; - } - case ('MoreInfo') - { - return score.MoreInfo; - } - case ('Artist') - { - return score.Artist; - } - case ('Copyright') - { - return score.Copyright; - } - case ('Publisher') - { - return score.Publisher; - } - case ('PartName') - { - return score.PartName; - } - } - - // if it doesn't match anything, return the original string. - return string; -} //$end diff --git a/src/TextStyles.mss b/src/TextStyles.mss index 84d5cfb..67be7c9 100644 --- a/src/TextStyles.mss +++ b/src/TextStyles.mss @@ -5,12 +5,16 @@ function InitTextHandlers() { Self._property:TextHandlers = CreateDictionary( 'text.staff.expression', 'ExpressionTextHandler', 'text.system.page_aligned.title', 'PageTitleHandler', + 'text.system.page_aligned.subtitle', 'PageTitleHandler', 'text.system.page_aligned.composer', 'PageComposerTextHandler', + 'text.system.tempo', 'TempoTextHandler', 'text.staff.space.figuredbass', 'FiguredBassTextHandler' ); Self._property:TextSubstituteMap = CreateDictionary( 'Title', CreateSparseArray('Title'), + 'Subtitle', CreateSparseArray('Title', 'type', 'subordinate'), + 'Dedication', CreateSparseArray('Dedication'), // , , , and // are only allowed in a few places, e.g. metadata or title pages. // We therfore use mor generic elements @@ -30,7 +34,7 @@ function InitTextHandlers() { function HandleText (textObject) { - // TODO: Move this to a global initialization function + // TODO: Move InitTextHandlers() call to a global initialization function InitTextHandlers(); if (null != Self._property:Extension and null != Extension.TextHandlers) { @@ -51,44 +55,48 @@ function HandleText (textObject) { } //$end -function ExpressionTextHandler (textObj) { - dynam = AddBarObjectInfoToElement(textObj, libmei.Dynam()); - AddFormattedText(dynam, textObj); +function ExpressionTextHandler (textObject) { + dynam = AddBarObjectInfoToElement(textObject, libmei.Dynam()); + AddFormattedText(dynam, textObject); return dynam; } //$end function PageTitleHandler (textObject) { - atext = libmei.AnchoredText(); + anchoredText = libmei.AnchoredText(); title = libmei.Title(); + if (textObject.StyleId = 'text.system.page_aligned.subtitle') + { + libmei.AddAttribute(title, 'type', 'subordinate'); + } - libmei.AddChild(atext, title); - libmei.SetText(title, text); + libmei.AddChild(anchoredText, title); + AddFormattedText(title, textObject); - return atext; + return anchoredText; } //$end function PageComposerTextHandler (textObject) { // 'text.system.page_aligned.composer' - return AddBarObjectInfoToElement(textObj, CreateAnchoredText(textObj)); + return AddBarObjectInfoToElement(textObject, CreateAnchoredText(textObject)); } //$end function TempoTextHandler (textObject) { // 'text.system.tempo' tempo = libmei.Tempo(); - libmei.AddChild(tempo, CreateAnchoredText(textObj)); + libmei.AddChild(tempo, CreateAnchoredText(textObject)); return tempo; } //$end function FiguredBassTextHandler (textObject) { // 'text.staff.space.figuredbass' - harm = AddBarObjectInfoToElement(textObj, libmei.Harm()); + harm = AddBarObjectInfoToElement(textObject, libmei.Harm()); fb = libmei.Fb(); libmei.AddChild(harm, fb); - ConvertFbFigures(fb, textObj); + ConvertFbFigures(fb, textObject); return harm; } //$end @@ -96,7 +104,7 @@ function FiguredBassTextHandler (textObject) { function CreateAnchoredText (textObj) { //$module(ExportConverters.mss) anchoredText = libmei.AnchoredText(); - libmei.SetText(anchoredText, ConvertSubstitution(textObj.Text)); + AddFormattedText(anchoredText, textObj); return anchoredText; } //$end @@ -105,7 +113,7 @@ function AddFormattedText (parentElement, textObj) { textWithFormatting = textObj.TextWithFormatting; if (textWithFormatting.NumChildren < 2 and CharAt(textWithFormatting[0], 0) != '\\') { - parentElement.SetText(textObj.Text); + libmei.SetText(parentElement, textObj.Text); return null; } @@ -115,6 +123,8 @@ function AddFormattedText (parentElement, textObj) { 'currentText', null, 'rendAttributes', CreateDictionary(), 'rendFlags', CreateDictionary(), + // TODO: Also track the active character style (mainly + // `\ctext.character.musictext\`, and custom styles) 'nodes', nodes, 'paragraphs', null ); @@ -131,7 +141,7 @@ function AddFormattedText (parentElement, textObj) { case ('\\N') { PushStyledText(state); - // TODO: Add

if it is allowed within parentElement (look at .name) + // TODO: Add

if it is allowed within parentElement (use libmei.GetName()) nodes.Push(libmei.Lb()); } case ('\\B') @@ -165,7 +175,9 @@ function AddFormattedText (parentElement, textObj) { case ('\\c') { // TODO: Can we sensibly handle a character style change? The - // only built-in one seem to be `text.character.musictext` + // only built-in one seem to be `text.character.musictext`. We + // might want to allow Extensions to handle custom character + // styles. ; } case ('\\s') @@ -201,8 +213,9 @@ function AddFormattedText (parentElement, textObj) { { // According to the documentation, 'backslashes themselves are // represented by \\ , to avoid conflicting with the above - // commands'. Though that does not seem to work, but in case - // Avid fixes this at some point, let's just assume it works. + // commands'. Though that does not seem to work, let's just + // assume it does in case Avid fixes this. + // We strip one leading backspace. state.currentText = state.currentText & Substring(component, 1); } @@ -269,6 +282,7 @@ function SwitchBaselineAdjust (state, param) { sup = (param = 'superscript'); sub = (param = 'subscript'); if (sup != state.rendFlags['sup'] or sub != state.rendFlags['sub']) { + // Style changed, push the previous text before changing the style PushStyledText(state); } state.rendFlags['sup'] = sup; @@ -276,37 +290,45 @@ function SwitchBaselineAdjust (state, param) { } //$end -function SwitchFont (state, fontName) { - if (fontName = '_') +function ResetTextStyles (state, infoOnly) { + // If `infoOnly` is `true`, does not make any changes, only tells us if + // there are re-settable styles + if (null != state.rendAttributes) { - // Before resetting the style, we have to add text preceding the '\f_\' - // style reset – but only if the style reset actually changes something. - - textNotYetAppended = true; - - if (null != state.rendAttributes) + for each Name attName in state.rendAttributes { - for each Name attName in state.rendAttributes + if (infoOnly and state.rendAttributes[attName] != null) { - if (textNotYetAppended and state.rendAttributes[attName] != null) - { - PushStyledText(state); - textNotYetAppended = false; - } - state.rendAttributes[attName] = null; + return true; } + state.rendAttributes[attName] = null; } - if (null != state.rendFlags) + } + + if (null != state.rendFlags) + { + for each Name flagName in state.rendFlags { - for each Name flagName in state.rendFlags + if (infoOnly and state.rendFlags[flagName]) { - if (textNotYetAppended and state.rendFlags[flagName]) - { - PushStyledText(state); - textNotYetAppended = false; - } - state.rendFlags[flagName] = false; + return true; } + state.rendFlags[flagName] = false; + } + } + return false; +} //$end + + +function SwitchFont (state, fontName) { + if (fontName = '_') + { + // Before resetting the style, we have to add text preceding the '\f_\' + // style reset – but only if the style reset actually changes something. + if (ResetTextStyles(state, true)) + { + PushStyledText(state); + ResetTextStyles(state, false); } } else @@ -341,16 +363,11 @@ function PushStyledText (state) { return null; } - nodes = state.nodes; - if (null = nodes) - { - state.nodes = CreateSparseArray(); - } - styleAttributes = GetStyleAttributes(state); if (null = styleAttributes) { - nodes.Push(state.currentText); + // We attach unstyled text without wrapping it in + state.nodes.Push(state.currentText); } else { @@ -359,7 +376,7 @@ function PushStyledText (state) { libmei.AddAttribute(rend, attName, styleAttributes[attName]); } libmei.SetText(rend, state.currentText); - nodes.Push(rend); + state.nodes.Push(rend); } state.currentText = ''; @@ -386,25 +403,21 @@ function GetStyleAttributes (state) { if (null != state.rendFlags) { - rendFlags = null; + rendAttValue = ''; for each Name flagName in state.rendFlags { flagActive = state.rendFlags[flagName]; if (flagActive) { - if (null != rendFlags) - { - rendFlags = CreateSparseArray(); - } - rendFlags.Push(flagName); + rendAttValue = rendAttValue & flagName & ' '; } } - if (null != rendFlags) + if (rendAttValue != '') { if (null = rendAttributes) { rendAttributes = CreateDictionary(); } - rendAttributes['rend'] = rendFlags.Join(' '); + rendAttributes['rend'] = rendAttValue; } } @@ -437,64 +450,6 @@ function AppendTextSubstitute (state, substituteName) { libmei.AddAttribute(element, textSubstituteInfo[i], textSubstituteInfo[i + 1]); } - /* - // Use this instead of a Dictionary mapping? May be a little clearer and - // allows the analysis script to check it properly. - element = null; - - switch (substituteName) - { - case ('Title') - { - element = libmei.Title(); - } - case ('Composer') - { - element = libmei.Composer(); - } - case ('Arranger') - { - element = libmei.Arranger(); - } - case ('Lyricist') - { - element = libmei.Lyricist(); - } - case ('MoreInfo') - { - element = libmei.Seg(); - libmei.AddAttribute(element, 'type', 'MoreInfo'); - } - case ('Artist') - { - element = libmei.PersName(); - libmei.AddAttribute(element, 'role', 'Artist'); - } - case ('Copyright') - { - // is only allowed on , so use generic element - element = libmei.Seg(); - libmei.AddAttribute(element, 'type', 'Copyright'); - } - case ('Publisher') - { - // is only allowed in a few places, so use generic element - // We don't even know if it's a person or an institution - element = libmei.Seg(); - libmei.AddAttribute(element, 'type', 'Publisher'); - } - case ('PartName') - { - element = libmei.Seg(); - libmei.AddAttribute(element, 'type', 'PartName'); - } - default - { - state.currentText = state.currentText & '\\$' & substituteName & '\\'; - return null; - } - }*/ - styleAttributes = GetStyleAttributes(state); rendElement = null; diff --git a/src/Utilities.mss b/src/Utilities.mss index 4ccefff..1b354a5 100644 --- a/src/Utilities.mss +++ b/src/Utilities.mss @@ -219,10 +219,16 @@ function GetNoteObjectAtPosition (bobj) { // If one isn't found exactly at the end position, it will first look back (previous) // and then look forward, for candidate objects. + voice_num = bobj.VoiceNumber; + if (voice_num = 0) + { + // Things like titles or composer text needn't/shouldn't be attached to + // voices or notes. + return null; + } objectPositions = Self._property:ObjectPositions; staff_num = bobj.ParentBar.ParentStaff.StaffNum; bar_num = bobj.ParentBar.BarNumber; - voice_num = bobj.VoiceNumber; staffObjectPositions = objectPositions[staff_num]; barObjectPositions = staffObjectPositions[bar_num]; From 87135afa643f8e59f4314416bcb3f2b093a32f5d Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 15 Jun 2020 19:50:42 +0200 Subject: [PATCH 22/83] Add text.sib test file (without the actual test code) --- test/sibmeiTestSibs/text.sib | Bin 0 -> 42841 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/sibmeiTestSibs/text.sib diff --git a/test/sibmeiTestSibs/text.sib b/test/sibmeiTestSibs/text.sib new file mode 100644 index 0000000000000000000000000000000000000000..e4810174a7bb40bd52734d83e453dd3f9aa67caf GIT binary patch literal 42841 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 Date: Tue, 16 Jun 2020 09:31:53 +0200 Subject: [PATCH 23/83] Add DataToMEI() --- src/TextStyles.mss | 28 +++++++---------- src/Utilities.mss | 76 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 17 deletions(-) diff --git a/src/TextStyles.mss b/src/TextStyles.mss index 67be7c9..eb6b2f9 100644 --- a/src/TextStyles.mss +++ b/src/TextStyles.mss @@ -13,22 +13,22 @@ function InitTextHandlers() { Self._property:TextSubstituteMap = CreateDictionary( 'Title', CreateSparseArray('Title'), - 'Subtitle', CreateSparseArray('Title', 'type', 'subordinate'), + 'Subtitle', CreateSparseArray('Title', CreateDictionary('type', 'subordinate')), 'Dedication', CreateSparseArray('Dedication'), // , , , and // are only allowed in a few places, e.g. metadata or title pages. - // We therfore use mor generic elements - 'Composer', CreateSparseArray('PersName', 'role', 'Composer'), - 'Arranger', CreateSparseArray('PersName', 'role', 'Arranger'), - 'Lyricist', CreateSparseArray('PersName', 'role', 'Lyricist'), - 'Artist', CreateSparseArray('PersName', 'role', 'Artist'), + // We therfore use more generic elements + 'Composer', CreateSparseArray('PersName', CreateDictionary('role', 'Composer')), + 'Arranger', CreateSparseArray('PersName', CreateDictionary('role', 'Arranger')), + 'Lyricist', CreateSparseArray('PersName', CreateDictionary('role', 'Lyricist')), + 'Artist', CreateSparseArray('PersName', CreateDictionary('role', 'Artist')), // is only allowed on , so use generic element - 'Copyright', CreateSparseArray('Seg', 'type', 'Copyright'), + 'Copyright', CreateSparseArray('Seg', CreateDictionary('type', 'Copyright')), // is only allowed in a few places, so use generic element // We don't even know if it's a person or an institution - 'Publisher', CreateSparseArray('Seg', 'type', 'Publisher'), - 'MoreInfo', CreateSparseArray('Seg', 'type', 'MoreInfo'), - 'PartName', CreateSparseArray('Seg', 'type', 'PartName') + 'Publisher', CreateSparseArray('Seg', CreateDictionary('type', 'Publisher')), + 'MoreInfo', CreateSparseArray('Seg', CreateDictionary('type', 'MoreInfo')), + 'PartName', CreateSparseArray('Seg', CreateDictionary('type', 'PartName')) ); } //$end @@ -442,14 +442,8 @@ function AppendTextSubstitute (state, substituteName) { return null; } - elementName = textSubstituteInfo[0]; - element = libmei.@elementName(); + element = DataToMEI(textSubstituteInfo); state.nodes.Push(element); - for i = 1 to textSubstituteInfo.Length step 2 - { - libmei.AddAttribute(element, textSubstituteInfo[i], textSubstituteInfo[i + 1]); - } - styleAttributes = GetStyleAttributes(state); rendElement = null; diff --git a/src/Utilities.mss b/src/Utilities.mss index 1b354a5..8d8052f 100644 --- a/src/Utilities.mss +++ b/src/Utilities.mss @@ -822,3 +822,79 @@ function AppendToLayer (meielement, l, beam, tuplet) { } } } //$end + + +function DataToMEI (data) { + /* + Allows creating MEI from data structures, e.g. for templating purposes. + Takes an array with the following content: + + 0. The capitalized tag name + 1. A dictionary with attribute names and values (unlike tag names, + attribute names are not capitalized). Can be null if no + attributes are declared. + 2. A child node (optional), represented by either a string for text + or a SparseArray of the same form for a child element. + 3. Any number of additional child nodes. + ... + + Note that all element names are capitalized, but attribute names remain + lower case. + + Example: + + DataToMEI(CreateSparseArray( + 'P', null, + 'This is ', + CreateSparseArray('Rend', CreateDictionary('rend', 'italic'), + 'declarative' + ), + ' MEI generation.' + )); + + Output: + +

This is declarative MEI generation.

+ */ + tagName = data[0]; + element = libmei.@tagName(); + + attributes = data[1]; + if (null != attributes) + { + for each Name attName in attributes + { + libmei.AddAttribute(element, attName, attributes[attName]); + } + } + + if (data.Length > 2) + { + // Add children + currentChild = null; + for i = 2 to data.Length + { + childData = data[i]; + if (IsObject(childData)) + { + // We have a child element + currentChild = DataToMEI(childData); + libmei.AddChild(element, currentChild); + } + else + { + // We have a text child + if (currentChild = null) + { + libmei.SetText(element, libmei.GetText(element) & childData); + } + else + { + libmei.SetTail(currentChild, libmei.GetTail(currentChild) & childData); + } + } + } + } + + return element; +} //$end From 0c308f660188d756213070677b630900e05ea5be Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 16 Jun 2020 11:44:56 +0200 Subject: [PATCH 24/83] Prevent spaces at the end of single flag rend attributes --- src/TextStyles.mss | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/TextStyles.mss b/src/TextStyles.mss index eb6b2f9..6baefa6 100644 --- a/src/TextStyles.mss +++ b/src/TextStyles.mss @@ -404,12 +404,21 @@ function GetStyleAttributes (state) { if (null != state.rendFlags) { rendAttValue = ''; + firstRendFlag = true; for each Name flagName in state.rendFlags { flagActive = state.rendFlags[flagName]; if (flagActive) { - rendAttValue = rendAttValue & flagName & ' '; + if (firstRendFlag = true) + { + rendAttValue = rendAttValue & flagName; + firstRendFlag = false; + } + else + { + rendAttValue = rendAttValue & ' ' & flagName; + } } } if (rendAttValue != '') From d8d8b5031d65c29b4f5a66b97e2717e52edd0efa Mon Sep 17 00:00:00 2001 From: annplaksin Date: Wed, 17 Jun 2020 18:09:18 +0200 Subject: [PATCH 25/83] WIP: text tests... not finished!!! --- test/mocha/test-text.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 test/mocha/test-text.js diff --git a/test/mocha/test-text.js b/test/mocha/test-text.js new file mode 100644 index 0000000..0983317 --- /dev/null +++ b/test/mocha/test-text.js @@ -0,0 +1,27 @@ +"use strict"; + +const assert = require('assert'); +const xpath = require('fontoxpath'); +const utils = require('./utils'); + +const meiText = utils.getTestMeiDom('text.mei'); + +describe("Text elements", function() { + it("figured bass elements in measure 4", function() { + const m4harms = xpath.evaluateXPath("//*:measure[@n='4']/*:harm", meiText); + assert.strictEqual(m4harms.length, 3, "There should be 3 elements in measure 4"); + }); + it("check for in measure 6", function() { + const tempo = xpath.evaluateXPath("//*:measure[@n='6']/*:tempo", meiText); + assert.notStrictEqual(tempo.length, null ," in measure 6 is missing"); + }); + // test for dynam + it("two elements", function() { + const dynams = xpath.evaluateXPath("//*:dynam", meiText); + assert.strictEqual(dynams.length,2,"there should be 2 elements"); + }); + // test for title, subtitle & composer + // test for plain text + // test formatting: bold, subscript, superscript,italic, font change, font size + +}); \ No newline at end of file From 413c9e24a3c3985e7a9dd7d357a80fff05643e33 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 29 Jun 2020 12:15:13 +0200 Subject: [PATCH 26/83] Added simple more tests and fixed tempo test Composer label, subtitle, subscript and superscript --- test/mocha/test-text.js | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/test/mocha/test-text.js b/test/mocha/test-text.js index 0983317..c099d6c 100644 --- a/test/mocha/test-text.js +++ b/test/mocha/test-text.js @@ -13,15 +13,31 @@ describe("Text elements", function() { }); it("check for in measure 6", function() { const tempo = xpath.evaluateXPath("//*:measure[@n='6']/*:tempo", meiText); - assert.notStrictEqual(tempo.length, null ," in measure 6 is missing"); + assert.notStrictEqual(tempo.length, 0 ," in measure 6 is missing"); }); // test for dynam it("two elements", function() { const dynams = xpath.evaluateXPath("//*:dynam", meiText); - assert.strictEqual(dynams.length,2,"there should be 2 elements"); + assert.strictEqual(dynams.length, 2,"there should be 2 elements"); }); // test for title, subtitle & composer - // test for plain text - // test formatting: bold, subscript, superscript,italic, font change, font size - + it("check for composer label in measure 1", function() { + const composerEl = xpath.evaluateXPath("//*:measure[@n='1']//*:persName[@role='Composer']", meiText); + assert.notStrictEqual(composerEl.length, 0,"The composer label is missing"); + }); + it("check for subordinate title in measure 1", function() { + const subTitle = xpath.evaluateXPath("//*:measure[@n='1']//*:title[@type='subordinate']", meiText); + assert.notStrictEqual(subTitle.length, 0, "The subtitle is missing"); + }); + // test for plain text (not implemented yet) + // test formatting: subscript, superscript + it("check for superscript", function() { + const superscript = xpath.evaluateXPath("//*:measure[@n='1']//*:title[@type='subordinate']/*:rend[@rend='sup']", meiText); + assert.notStrictEqual(superscript.length, 0, "Superscript in subtitle is missing"); + }); + it("check for subscript", function() { + const subscript = xpath.evaluateXPath("//*:measure[@n='1']//*:title[@type='subordinate']/*:rend[@rend='sub']", meiText); + assert.notStrictEqual(subscript.length, 0, "Subscript in subtitle is missing"); + }); + // test formatting: bold, italic, font change, font size }); \ No newline at end of file From 5153a7de7f7d90cf82cc1c41220011fc57dee26a Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 29 Jun 2020 16:17:26 +0200 Subject: [PATCH 27/83] Started with SymbolHandler adjustments according to TextHandlers --- src/ExportGenerators.mss | 2 +- src/ExportProcessors.mss | 85 --------------------------- src/Initialize.mss | 9 +-- src/SymbolStyles.mss | 122 +++++++++++++++++++++++++++++++++++---- 4 files changed, 112 insertions(+), 106 deletions(-) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index c2f23d3..37ff186 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -728,7 +728,7 @@ function GenerateLayers (staffnum, measurenum) { for each SymbolItem sobj in bar { - ProcessSymbol(sobj); + HandleSymbol(sobj); } ProcessEndingSlurs(bar); diff --git a/src/ExportProcessors.mss b/src/ExportProcessors.mss index c4c0351..6fdfd7a 100644 --- a/src/ExportProcessors.mss +++ b/src/ExportProcessors.mss @@ -488,91 +488,6 @@ function ProcessTremolo (bobj) { } //$end -function ProcessSymbol (sobj) { - //$module(ExportProcessors.mss) - Log('symbol index: ' & sobj.Index & ' name: ' & sobj.Name); - Log(sobj.VoiceNumber); - voicenum = sobj.VoiceNumber; - bar = sobj.ParentBar; - - if (voicenum = 0) - { - // assign it to the first voice, since we don't have any notes in voice/layer 0. - sobj.VoiceNumber = 1; - warnings = Self._property:warnings; - warnings.Push(utils.Format(_ObjectAssignedToAllVoicesWarning, bar.BarNumber, voicenum, 'Symbol')); - } - - // trills are special - if (sobj.Index = '32') - { - // trill - trill = GenerateTrill(sobj); - mlines = Self._property:MeasureObjects; - mlines.Push(trill._id); - } - - // load symbol style dictionaries - modifierMap = Self._property:ModifierMap; - controlEventMap = Self._property:ControlEventMap; - - // iterate over controlEventMap to process symbols that belong to measure - if(controlEventMap.PropertyExists(sobj.Index)) - { - mapValue = controlEventMap[sobj.Index]; - makeElement = mapValue[0]; - - symbol = libmei.@makeElement(); - - // add attributes if necessary - if (mapValue.Length = 2) - { - atts = mapValue[1]; - for each Pair att in atts - { - libmei.AddAttribute(symbol, att.Name, att.Value); - } - } - - symbol = AddBarObjectInfoToElement(sobj, symbol); - mlines = Self._property:MeasureObjects; - mlines.Push(symbol._id); - } - - // iterate over modifierMap to process symbols that belong to a single note - if(modifierMap.PropertyExists(sobj.Index)) - { - mapValue = modifierMap[sobj.Index]; - makeElement = mapValue[0]; - - nobj = GetNoteObjectAtPosition(sobj); - - if (nobj != null) - { - modifier = libmei.@makeElement(); - - // add attributes - if (mapValue.Length = 2) - { - atts = mapValue[1]; - for each Pair att in atts - { - libmei.AddAttribute(modifier, att.Name, att.Value); - } - } - - libmei.AddChild(nobj, modifier); - } - else - { - warnings = Self._property:warnings; - warnings.Push(utils.Format(_ObjectCouldNotFindAttachment, bar.BarNumber, voicenum, sobj.Name)); - } - - } - -} //$end - function ProcessEndingSlurs (bar) { //$module(ExportProcessors.mss) slur_resolver = Self._property:SlurResolver; diff --git a/src/Initialize.mss b/src/Initialize.mss index 0a7aafd..4989bb5 100644 --- a/src/Initialize.mss +++ b/src/Initialize.mss @@ -32,13 +32,6 @@ function InitGlobals () { ); // Initialize symbol styles - if (Self._property:ModifierMap = null) - { - Self._property:ModifierMap = InitModifierSymbols(); - } - if (Self._property:ControlEventMap = null) - { - Self._property:ControlEventMap = InitControlEventSymbols(); - } + InitSymbolHandlers(); } //$end diff --git a/src/SymbolStyles.mss b/src/SymbolStyles.mss index 5d92952..836c699 100644 --- a/src/SymbolStyles.mss +++ b/src/SymbolStyles.mss @@ -3,8 +3,7 @@ // '241' tripe staccato // '242' quadruple staccato - -function InitModifierSymbols () { +function InitSymbolHandlers () { //$module(SymbolStyles.mss) // Create a dictionary with symbol index number as key (sobj.Index) and a value that determines the element that has to be created @@ -13,7 +12,7 @@ function InitModifierSymbols () { // Every other SparseArray determines an attribute that needs to be added to modifier // E.g.: '52' becomes - modifierMap = CreateDictionary( + Self._property:ModifierMap = CreateDictionary( '52', CreateSparseArray('Artic', CreateDictionary('artic','heel')), //heel '53', CreateSparseArray('Artic', CreateDictionary('artic','heel')), //heel (2) (was toe in previous version, but this seems to be wrong) '54', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe @@ -37,25 +36,124 @@ function InitModifierSymbols () { '495', CreateSparseArray('Artic', CreateDictionary('artic','plop')) //plop ); - return modifierMap; -} //$end - -function InitControlEventSymbols () { - //$module(SymbolStyles.mss) - // Create a dictionary with symbol index number as key (sobj.Index) and a value that determines the element that has to be created // All the symbols defined here should be created as children of measure (control events) // Turn() is the element that has to be created like -> controlEvent = libmei.Turn(); // Every other SparseArray determines an attribute that needs to be added to modifier // E.g.: '36' becomes - controlEventMap = CreateDictionary( + Self._property:ControlEventMap = CreateDictionary( '36', CreateSparseArray('Mordent', CreateDictionary('form', 'lower')), //inverted mordent '37', CreateSparseArray('Mordent', CreateDictionary('form','upper')), //mordent '38', CreateSparseArray('Turn', CreateDictionary('form', 'upper')), //turn '39', CreateSparseArray('Turn', CreateDictionary('form', 'lower')) //inverted turn - ); + ); + + /*if (Self._property:ModifierMap = null) + { + Self._property:ModifierMap = modifierMap; + } + + if (Self._property:ControlEventMap = null) + { + Self._property:ControlEventMap = controlEventMap; + }*/ + +}//$end + + +function HandleSymbol (sobj) { + //$module(SymbolStyles.mss) + Log('symbol index: ' & sobj.Index & ' name: ' & sobj.Name); + Log(sobj.VoiceNumber); + voicenum = sobj.VoiceNumber; + bar = sobj.ParentBar; + + if (voicenum = 0) + { + // assign it to the first voice, since we don't have any notes in voice/layer 0. + sobj.VoiceNumber = 1; + warnings = Self._property:warnings; + warnings.Push(utils.Format(_ObjectAssignedToAllVoicesWarning, bar.BarNumber, voicenum, 'Symbol')); + } + + // trills are special + if (sobj.Index = '32') + { + // trill + trill = GenerateTrill(sobj); + mlines = Self._property:MeasureObjects; + mlines.Push(trill._id); + } + + // load symbol style dictionaries + modifierMap = Self._property:ModifierMap; + controlEventMap = Self._property:ControlEventMap; + + // iterate over controlEventMap to process symbols that belong to measure + if(controlEventMap.PropertyExists(sobj.Index)) + { + HandleControlEvents(sobj,controlEventMap[sobj.Index]); + } - return controlEventMap; + // iterate over modifierMap to process symbols that belong to a single note + if(modifierMap.PropertyExists(sobj.Index)) + { + HandleModifier(sobj,modifierMap[sobj.Index]); + } + +} //$end + +function HandleModifier(sobj, mapValue){ + //$module(SymbolStyles.mss) + + makeElement = mapValue[0]; + + nobj = GetNoteObjectAtPosition(sobj); + + if (nobj != null) + { + modifier = libmei.@makeElement(); + + // add attributes + if (mapValue.Length = 2) + { + atts = mapValue[1]; + for each Pair att in atts + { + libmei.AddAttribute(modifier, att.Name, att.Value); + } + } + + libmei.AddChild(nobj, modifier); + } + else + { + warnings = Self._property:warnings; + warnings.Push(utils.Format(_ObjectCouldNotFindAttachment, bar.BarNumber, voicenum, sobj.Name)); + } } //$end + +function HandleControlEvents(sobj, mapValue){ + //$module(SymbolStyles.mss) + + makeElement = mapValue[0]; + + symbol = libmei.@makeElement(); + + // add attributes if necessary + if (mapValue.Length = 2) + { + atts = mapValue[1]; + for each Pair att in atts + { + libmei.AddAttribute(symbol, att.Name, att.Value); + } + } + + symbol = AddBarObjectInfoToElement(sobj, symbol); + mlines = Self._property:MeasureObjects; + mlines.Push(symbol._id); + +} //$end \ No newline at end of file From 67cca7dc1f16413e2bfaa02ac993d967fb1e6635 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 29 Jun 2020 18:11:01 +0200 Subject: [PATCH 28/83] Merged Modifier & Control Events, created Handler + Symbol Map Trying to work with dictionary.SetMethod() failed --- src/SymbolStyles.mss | 100 +++++++++++++++++++++++++++---------------- 1 file changed, 62 insertions(+), 38 deletions(-) diff --git a/src/SymbolStyles.mss b/src/SymbolStyles.mss index 836c699..3074fcc 100644 --- a/src/SymbolStyles.mss +++ b/src/SymbolStyles.mss @@ -6,13 +6,56 @@ function InitSymbolHandlers () { //$module(SymbolStyles.mss) - // Create a dictionary with symbol index number as key (sobj.Index) and a value that determines the element that has to be created - // All the symbols defined here should be created as children of note elements (modifier) - // Artic() is the element that has to be created like -> modifier = libmei.Artic(); - // Every other SparseArray determines an attribute that needs to be added to modifier - // E.g.: '52' becomes + symbIndexHandler = CreateDictionary( + '36', 'HandleControlEvents', //inverted mordent + '37', 'HandleControlEvents', //mordent + '38', 'HandleControlEvents', //turn + '39', 'HandleControlEvents', //inverted turn + '52', 'HandleModifier', //heel + '53', 'HandleModifier', //heel (2) (was toe in previous version, but this seems to be wrong) + '54', 'HandleModifier', //toe + '160', 'HandleModifier', //stop + '162', 'HandleModifier', //open + '163', 'HandleModifier', //damp + '164', 'HandleModifier', //damp (2) + '165', 'HandleModifier', //damp (3) + '166', 'HandleModifier', //damp (4) + '212', 'HandleModifier', //ten above + '214', 'HandleModifier', //marc above + '217', 'HandleModifier', //upbow above + '218', 'HandleModifier', //dnbow above + '233', 'HandleModifier', //upbow below + '234', 'HandleModifier', //dnbow below + '243', 'HandleModifier', //snap + '480', 'HandleModifier', //scoop + '481', 'HandleModifier', //fall + '490', 'HandleModifier', //fingernail + '494', 'HandleModifier', //doit + '495', 'HandleModifier' //plop + ); + + if(Self._property:SymbolIndexHandlers = null) + { + /*symbMethods = CreateDictionary(); + + for each Pair symb in symbIndexHandler + { + symbMethods.SetMethod(symb.Name, Self, symb.Value); + }*/ + + Self._property:SymbolIndexHandlers = symbIndexHandler; + } - Self._property:ModifierMap = CreateDictionary( + // Create a dictionary with symbol index number as key (sobj.Index) and a value that determines the element that has to be created + // 0th element in SparseArray is the element name as function call + // following Dictionary contains attributes + // TODO: key, CreateDictionary(Element, CreateDictionary(attname, attvalue)) + + symbIndexMap = CreateDictionary( + '36', CreateSparseArray('Mordent', CreateDictionary('form', 'lower')), //inverted mordent + '37', CreateSparseArray('Mordent', CreateDictionary('form','upper')), //mordent + '38', CreateSparseArray('Turn', CreateDictionary('form', 'upper')), //turn + '39', CreateSparseArray('Turn', CreateDictionary('form', 'lower')), //inverted turn '52', CreateSparseArray('Artic', CreateDictionary('artic','heel')), //heel '53', CreateSparseArray('Artic', CreateDictionary('artic','heel')), //heel (2) (was toe in previous version, but this seems to be wrong) '54', CreateSparseArray('Artic', CreateDictionary('artic','toe')), //toe @@ -34,30 +77,16 @@ function InitSymbolHandlers () { '490', CreateSparseArray('Artic', CreateDictionary('artic','fingernail')), //fingernail '494', CreateSparseArray('Artic', CreateDictionary('artic','doit')), //doit '495', CreateSparseArray('Artic', CreateDictionary('artic','plop')) //plop - ); + ); - // Create a dictionary with symbol index number as key (sobj.Index) and a value that determines the element that has to be created - // All the symbols defined here should be created as children of measure (control events) - // Turn() is the element that has to be created like -> controlEvent = libmei.Turn(); - // Every other SparseArray determines an attribute that needs to be added to modifier - // E.g.: '36' becomes - - Self._property:ControlEventMap = CreateDictionary( - '36', CreateSparseArray('Mordent', CreateDictionary('form', 'lower')), //inverted mordent - '37', CreateSparseArray('Mordent', CreateDictionary('form','upper')), //mordent - '38', CreateSparseArray('Turn', CreateDictionary('form', 'upper')), //turn - '39', CreateSparseArray('Turn', CreateDictionary('form', 'lower')) //inverted turn - ); - - /*if (Self._property:ModifierMap = null) + if(Self._property:SymbolIndexMap = null) { - Self._property:ModifierMap = modifierMap; + Self._property:SymbolIndexMap = symbIndexMap; } - if (Self._property:ControlEventMap = null) - { - Self._property:ControlEventMap = controlEventMap; - }*/ + // Dictionary to handle symbols by name + Self._property:SymbolNameHandlers = CreateDictionary(); + Self._property:SymbolNameMap = CreateDictionary(); }//$end @@ -86,20 +115,15 @@ function HandleSymbol (sobj) { mlines.Push(trill._id); } - // load symbol style dictionaries - modifierMap = Self._property:ModifierMap; - controlEventMap = Self._property:ControlEventMap; - - // iterate over controlEventMap to process symbols that belong to measure - if(controlEventMap.PropertyExists(sobj.Index)) - { - HandleControlEvents(sobj,controlEventMap[sobj.Index]); - } + // get SymbolIndexHandlers and SymbolIndexMap + symbolHandlers = Self._property:SymbolIndexHandlers; + symbolMap = Self._property:SymbolIndexMap; - // iterate over modifierMap to process symbols that belong to a single note - if(modifierMap.PropertyExists(sobj.Index)) + // look for symbol in SymbolIndexHandlers + if(symbolHandlers.PropertyExists(sobj.Index)) { - HandleModifier(sobj,modifierMap[sobj.Index]); + handler = symbolHandlers[sobj.Index]; + @handler(sobj, symbolMap[sobj.Index]); } } //$end From 8d32d265ed0dd47db4190c424dcfbf4fe8782fa9 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 30 Jun 2020 10:53:54 +0200 Subject: [PATCH 29/83] Renamed HandleControlEvents to HandleControlEvent --- src/SymbolStyles.mss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/SymbolStyles.mss b/src/SymbolStyles.mss index 3074fcc..5ac4853 100644 --- a/src/SymbolStyles.mss +++ b/src/SymbolStyles.mss @@ -7,10 +7,10 @@ function InitSymbolHandlers () { //$module(SymbolStyles.mss) symbIndexHandler = CreateDictionary( - '36', 'HandleControlEvents', //inverted mordent - '37', 'HandleControlEvents', //mordent - '38', 'HandleControlEvents', //turn - '39', 'HandleControlEvents', //inverted turn + '36', 'HandleControlEvent', //inverted mordent + '37', 'HandleControlEvent', //mordent + '38', 'HandleControlEvent', //turn + '39', 'HandleControlEvent', //inverted turn '52', 'HandleModifier', //heel '53', 'HandleModifier', //heel (2) (was toe in previous version, but this seems to be wrong) '54', 'HandleModifier', //toe @@ -159,7 +159,7 @@ function HandleModifier(sobj, mapValue){ } //$end -function HandleControlEvents(sobj, mapValue){ +function HandleControlEvent(sobj, mapValue){ //$module(SymbolStyles.mss) makeElement = mapValue[0]; From f83c8d6c66ff293404941e1a59f0fbc9dfa29657 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 30 Jun 2020 16:37:59 +0200 Subject: [PATCH 30/83] Added Pedal to symbol.sib --- test/sibmeiTestSibs/symbols.sib | Bin 43808 -> 44005 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/sibmeiTestSibs/symbols.sib b/test/sibmeiTestSibs/symbols.sib index 54816b72b47199d2bb0b3353d54f8386ae7eabdb..7b34e6e21fc59c9492b888d8b77ec7daf1cc4eed 100644 GIT binary patch literal 44005 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 literal 43808 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

qk65$qq+>&f^rpt zKI%dGiPWOGKYUw3(P?uoKg3kmb;QK}NM*9&$HT=H<4Y7QC!GXXBuDyt{eJOoNZ5I? z&Q^;lHj`VY0w|>M@L~~UI@qux*CF=!Kr))^+vSYA2bEN^kF+Wvv$tKj8Uk_Q@Mnl^ z&1Yo-m><{W;|-h0<)A!#^@Pturm-Ol>!UEw(zM#kLEKkmH0`k8l`Or2n=edq~gTgjLI!s?vv77aWeX1es=`|Cc9#aS-Tvz)VA7v}50 za6++)p8m~abKM(P$YpK-%y_aQA&Kklz#t|7nn{$yQ{72PT!- zEN2e><6%?=xoOuBF9HD+%Dzg~R)C5fV9RluiWqGRGEjxzdc{pi<~Za0sI%NUTl-g^ z@5xsp6bhJ>M~^Ls$SVG`4JpyO$Lr|LR)CAsXlSt-84IBa~CD##=OI1b*Ssp)Y2naZHQ%zA@4Jg!8*&L3c0+ZINA29 z=N8yiVjL~xu8w4k&UFWbyM2j+A|KzG!+#fOcL$>dtzEZ}F4V*opGr7iVOB)h$fLUO FM{ei{LIwZ; literal 0 HcmV?d00001 From db6e9c52c15f5dd8b009827e63c631a8b83a5c0c Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 7 Jul 2020 11:49:47 +0200 Subject: [PATCH 38/83] Move initialization of libmei to InitGlobals --- src/Initialize.mss | 4 ++++ src/Run.mss | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Initialize.mss b/src/Initialize.mss index d72eb5f..f9fb36d 100644 --- a/src/Initialize.mss +++ b/src/Initialize.mss @@ -8,6 +8,10 @@ function Initialize() { function InitGlobals () { //$module(Initialize.mss) + + // initialize libmei as soon as possible + Self._property:libmei = libmei4; + if (Sibelius.FileExists(Self._property:Logfile) = False) { Sibelius.CreateTextFile(Self._property:Logfile); diff --git a/src/Run.mss b/src/Run.mss index 5a52539..3958fec 100644 --- a/src/Run.mss +++ b/src/Run.mss @@ -53,7 +53,7 @@ function DoExport (filename) { } // first, ensure we're running with a clean slate. - Self._property:libmei = libmei4; + // (initialization of libmei has moved to InitGlobals()) libmei.destroy(); // set the active score here so we can refer to it throughout the plugin From ed093c3cf729d9224e4e7304f604b7d59fc62d69 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 29 Jun 2020 12:15:13 +0200 Subject: [PATCH 39/83] Added simple more tests and fixed tempo test Composer label, subtitle, subscript and superscript --- test/mocha/test-text.js | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/test/mocha/test-text.js b/test/mocha/test-text.js index 0983317..c099d6c 100644 --- a/test/mocha/test-text.js +++ b/test/mocha/test-text.js @@ -13,15 +13,31 @@ describe("Text elements", function() { }); it("check for in measure 6", function() { const tempo = xpath.evaluateXPath("//*:measure[@n='6']/*:tempo", meiText); - assert.notStrictEqual(tempo.length, null ," in measure 6 is missing"); + assert.notStrictEqual(tempo.length, 0 ," in measure 6 is missing"); }); // test for dynam it("two elements", function() { const dynams = xpath.evaluateXPath("//*:dynam", meiText); - assert.strictEqual(dynams.length,2,"there should be 2 elements"); + assert.strictEqual(dynams.length, 2,"there should be 2 elements"); }); // test for title, subtitle & composer - // test for plain text - // test formatting: bold, subscript, superscript,italic, font change, font size - + it("check for composer label in measure 1", function() { + const composerEl = xpath.evaluateXPath("//*:measure[@n='1']//*:persName[@role='Composer']", meiText); + assert.notStrictEqual(composerEl.length, 0,"The composer label is missing"); + }); + it("check for subordinate title in measure 1", function() { + const subTitle = xpath.evaluateXPath("//*:measure[@n='1']//*:title[@type='subordinate']", meiText); + assert.notStrictEqual(subTitle.length, 0, "The subtitle is missing"); + }); + // test for plain text (not implemented yet) + // test formatting: subscript, superscript + it("check for superscript", function() { + const superscript = xpath.evaluateXPath("//*:measure[@n='1']//*:title[@type='subordinate']/*:rend[@rend='sup']", meiText); + assert.notStrictEqual(superscript.length, 0, "Superscript in subtitle is missing"); + }); + it("check for subscript", function() { + const subscript = xpath.evaluateXPath("//*:measure[@n='1']//*:title[@type='subordinate']/*:rend[@rend='sub']", meiText); + assert.notStrictEqual(subscript.length, 0, "Subscript in subtitle is missing"); + }); + // test formatting: bold, italic, font change, font size }); \ No newline at end of file From 5ecb6bd349e5a5f49eef0dea75b2b25f9a894edc Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 27 Jul 2020 09:54:11 +0200 Subject: [PATCH 40/83] Added front matter to test-sib --- test/sibmeiTestSibs/text.sib | Bin 42841 -> 42998 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/sibmeiTestSibs/text.sib b/test/sibmeiTestSibs/text.sib index e4810174a7bb40bd52734d83e453dd3f9aa67caf..76de7ac70762706dacb316f3e5b291fcb82cffae 100644 GIT binary patch literal 42998 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≤X0d8@MwQf|W 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 z z@;-uFcJ08Usjwl%`8;Wr3B+~ISCHiK|0mXMShorHJ|IW2zUPfiVlT>6BmXkH7!bhXje~>L=vTM7lsCSG_u46eJ~eND~P>@e>a`I1-V)Rk7jnHxU11m^-=is zswo0)gbSG)fJzqT@jv8V_t)^krU%D*j1`)BOu;G$4*>GF*HXQY+)pdXbpTNN;MYC| zmUe_}KCe*0Nr|T3<}4~*b8SjC6u9i`Sc<7p9@H=tay2&T@nJ$1$+^2`9on~gzN%#c zM_M@JW~?}X8Zj|7oi)aijPwdvv;9b4uzN)^QZ1fj9l(KhiEoiscC67aCmfohOkuyS zB{(5Xr)S3H_DQUV_cDzU14D^kHp2V|`0fuFT^#du&A|-FM{$`ImNV73A5fU+i|v=q#1Orv54j!8dr8o`_B7!cR|Qp4rUoHG|0@;(UAuuxR3; zPf$*U@aIo&v+56pm`G2Y>PUa%u8i04B*p>rev?5s+HcB`DtX=PuIIe$)u{OZ`q!N= zCIHil`wCxekvElI=UugXxC3Ob^zC;%67V(VYQhlqpsF)pL0L_eDaq17_mEzJIG3;P zhBwXwJ&@^xXgXo%{1iShAi@aHa4+xpeO7VKLY+OL()kB7!@L+A&W2B)P#t<>S^HZZHvnH)w69AIQ#a*! z@2^_)S&W2roeMYH3{cl_jxS?V>~NpVCue4P*yy#ZO>~Uu<79|NZAllqH%hR&b0iw1 zKB+t4k3{24j1LmuHlKp6NrmBHTL9jsBashTxYEAQdD}Idp)zYgSYKSQ< z*zQ-=U@8_DA*&kf3YODgPgBWXkCp!t3{7!&SO^a^Xri|+e@y#4u{wL9Hib+WtciBa zMn5Aqdv*><`-gh@X~SGHyX)gr@u^7w$P!Re!VP3YNmd@?+YP7VJ0-~u`~p|m%~ut) z!eb_&SN`Q1khvi;ceUhYG;Cc4lJ5z%Tq(S4F)y51B;PIWeHcbwz>z09=40-;uGjMr z@8Jc?8*Y{CvIvEpCug7L7q#@r!AHx+`1siWd<0ks#yAr`Lt@*lSHKrPe;I=h7I83sYJIX3X|eu%HGyAc zQ)^!)`nJDwIX?L=WMyXkcZ}&RS08Qa-EcHJC4g$@Z+&+?_ruJ`vXtJ! zE8lMAm-ECB8)`l1p1mScwTigrT)D{>7bBRhlJ0b-j! zZ^_XswuNgDInpAxj_Gz0Ff-&+F$x;?aEJjjS%!addEa|jUU+SNE^z7uiN;}PLz!U6aGYq~Cah>Ez%Z}@`};ncHymn%(sY2Jn~Ea2*& zi1?O$;YgvosGOi`oPP@-6);d9>Ud)vxC1^%cLeh^*>dJj}^)RA8%ek$Y zek6Khj5miNO`h~+DNw`ROqM1OSUtN(PyinGObWtOLuc0EKwJ%YrJcV{)Gr zH7O1ZVTUN6RtTz=xj#l4LD7BQ4@N&t%qvG*Wv#I=+pMfQ5ilCPc|s8h0yJf&WZ;&8 z|9Qh|)e>6zW$AKApymT|E8GG5Wr_bSU}X+zVQjFWhg&=uI`2Mdz>y*)Tl&z#Xy8^NMw+Q|m9Y5MB_JP$GZw z61eSb;y+eA&yY-3v!GI27)Cb5>Fh9$*aoorSCO(MKhi)(6vy%fe9>wkU*!kk#=p*gz!Td~lQ z^_t!LN*XSp%2qQO2zGA^g^n{Is#BaF8_}*V(7HLh?jQWSA}yxD!;N40QPrWgk6@Rb z(85IxLWnWLNj3{Idn85BiqRXort&u$Ih=H1639nIGOdi@tBZ=pR6SB3d8=(82Fj`t zUM=g#l-6DipfrHy6S(^u`{sQuHhx}Ot>D4wvF0Z3%jb)S*3#2TYGrm+zf1=^`XAHM z$&QB$qEfBw7{RRkVD`WG=8<=Lye=Z>qBFOMdWG~FQ^m@>nTDakG~$kj8;meCq>W%L zIk*a>uPrA~(qzBjHq+N8t~7fd&O^;^>zW4fe{c13?#7G>)fyt&NQ`3a=euu`QCs8S7<8t z=pr2z?LT*Sdrjkk=5T&;-=zI=onnzBYc95cz0M3vqx!ORw!sN zhw=Q@B0+pq1#R^@$1^O+NdxrAQf=f&PS;B)H=2w2KV&LOD1`(i$1?LMy^nJ(o*((! z2Z4l^-$|S3XyTjo3o;G=bkcu0z+)|IHY)4dE|IB*Y=3Q zRyS_=8RkZF#_rJ@egf?YaLsq^K{S+aAb@~AVjDD0ZR;5MSZF1KTMf*rqb|&6?bJMS zZ1`vSVRJel&U6jkFXYGh9e))T{pq*HyGbrz@>np05XHq^a#jG3H9M^+FW@%>-NVX9 zrqC;!x|ERhGXZVlTK;{k*Qz0RZb5SQC7Epq8^DaR7?0WazO3Z_{b{BEc-Yl&gyt@! zu^3b%7P}(YjEVYU{uvVg*(a&|9G%c5GA@koV+D^ibQ0q?N_i_vmmWkg$O$ZY5lu1p z$8R}y)@R~gGALn9?>WooY~iI~(VCW*GLQeC_}>E#QM$g~h>{<)IV(zl2o`yNUOU}~ zck&0|v;{kajdF@cx8s}D5eIKxkE*m96(Nc!;lUiYy^9Q7oKOvkH~6QXY5MV8TRCGt zt0ABif8*CK!ML%@bD+J7s3_(m{Oa;z_z7L++O#7SksaEayCFINsoLCdWz~Amt%|@4 z@!ywA{N}9q#lfuc06?4;1s>TL;b<>H`xVp|1)qD3z$gnImEU=-P2@a7 z{F>uRuq0zz@jx7yhMtQCD|Xm^1>+N5tOlp}*0SyWU9035BMq(?1_Keqz}mm4GC54Z z%b;83hyz~x7DtggibZ2I)ARZO31q`j_`_+$;U$Op6P&wG^iZY1FqL4f4~Hv>)m*Wu z2DiH$`_#g`yg#K11B_F}RA=2%BWVXl-YXw#OYB9-(38xZpjS110!CV^_(1QF(N~&d z{hUnpvuDZY86K*1mQJRW;+uJxK=84iLY-1tcmPPVV6*|)oM3Ld+up2v*N!uuK{WpQbNkZ_)sD z&I}Y;zfYakvY8!!qoVtNp5?+Ff>TBeDhC%ra35%H5I zz$jzi%OM|LEeO>2mZMME`qe{GQdapyw;dG0N!j|wfyS(6c>LLwEh`fu8{*5s-!m%O zDydnyyGJga6Iz@74fuRb*YYxvhGr1}{G7wl4;wqL-pDcPIV2RU`HftNR|}}ClyY1~ zVn8LS^7gpbTW)&Ln2`M=&-yY_oBnJ9-VkOQ81(@U5{4nr=_T1iJ7_gW z{W>fYe$h2yuB(RgxoV&j0>>d5B7dwRt4p6#AvJ`vbBcZg>4= z7=E3=?=fz(0>FBADVaum!g!Fa*s6|(_KCB`T+^}orD_4cJkQ6hxKtxKmvxSR9|{Bx z5;%mA=D7zKb5FX{B}%>pu|_-ET{Zm&=0Q2Z`6~jDS*Ki4WgLw6Vo?6T?WO-{k&G~W z;D^|&L*2_|?p%s(>3$AO9zP;Jqn>6>*4*joVT!cB%Rz6`CIeBqY{N!X3vB2J0gS$S zTRQSwmg^a|XzI}ksYfBLSZ6tad@ViVWm#9|wwT91Y2SIb;B6&Hn`Hr%-o&lxGRR$` zQyIYTDu&WE%lj)B?#_ zjsr&J{kK~Q7E9BhxLJlSThZXsl>ax_m`2zBZlZ^H!eY`NoCXoxi;`BZfBuKq(cGGY$&81FbigG_P>NF^rA(Wbb=*tjr#x&|j`AEkJZrY~4Y-y>}m zUJ{Cy`%p_HVbS6#ZVP100az3yszog@d43_Ey?0YTz#z6Gz|K)gnhmRVW9AqncTUnU z5-Vh73@}KVN@=~`A%dS;>m+yJy2Q+6U&{EcMwjs!QQig~*zN*wSBktDZY=M?zyPw< zGh))Hg+m3NP+yC{d^F_*Z)rggfX+EXo&(kq;>Ik34VcIezz?+|SG3bTB3nmW5;51> zv*-@Ve|$H=P;t1c{L^!g{6xKm6Nbj}dh~a>(ZS1RAW#Xve|;*FKq(Jb&2q0M3UY+e z698|XQAp+($#YjBkgmQhfr6c|`y&m}9%3~bIgC}L`lhSXk79|B6*~st7;XnRMrH#D&L17n=0EGE!(QdwF(m#x#zy5Q-#LH8blZun%vK_O;$H1s7bOMY`29{H#p6v z2$+q_EcdanV1bi`{@P^9W(VU9QL0I|g|^lnHvD8*2>~Suh4BH%pT671CvK+a{D?aa zbL($-OPQG=wAzA@Rb!_GIjg z-^#+#tIO1L_(|HJy1GxklraspI`7(hUF1)G+L=C>qzU|(_SclNIv?7}^#ho{ z?g}Gj;mkS~3nii~dNK}o{J7DdH~8dCyaa|*Y8e(YvR#`A5YqmV!RR!VVTI7h z7)O1fTm3CWT)GtO*66OtkD0AV6n>;_4I7@~3k0KCMaaHf(yhfR>}3m!iR!j3!Fyw0ZbXHD z|J)wUJ_kfZb+`5|O@cM>;oVb-T2tMEt{(=bhZ~4KU7cgAG`lpVy;tm+s||3SK@R+Zdc0Q z>VchD>-unFMvyS(mShz`q0i{FbpDTId~|L`g&rTp%Z7g$>H!FhiSW|#5wcM#jksMD zs0@fU9%b{m|IAybqlEg#ILG-{(#^5GS3(qni7j(X?QnmZV~o{?XHE_W9Vkl$Q?;qb zOOVdYoq~sNbXCD0hF(gtb`7xv9gqox7Bk#e=u15j`&W_OD?95s!dtty8vK6@QF0cp#XOgRo*^eW)Oy z*S9CFAZ$N^GajP+F%Niy znNeM)X`b0kE(bY<=haZH8uHa%*#Z@0MG~l7Z6-74VcMtKb#SaiQ0;>WP)?E#1uX8U zd?*FKnzKSki7z=AI}`HTJr6=3;FUMSO9(&oXmY!eOBZ{&G z%r@aPbiDBKcux33tzUbI%9_}#9Y;_wbjCRpYivmrqI=p~r7`oarq+XvCh(0(en{E$ zf>doA@g9t9i9C`6DNE?seu$gQ&ovDRf8cXkK2d%f-j)}K4XH8PkQpFi!<){YRWGk zs&H|EKk_O55<&*wB5f!D@`pk0Wv?!RKF{aQNBCLIERA%-l!1&4Zn2==N3J7%!N%F= zVW(fUUCJNzRiFmXmSDQVfSDJ{uS&o7OHy8?DJX0VLTf=yiTHoKr=vT7q0`#cULK76zj=nE z8(qPqfkv6btWvZ!UMbC}yw&?NjC3Obi@|Vva6$DTz6amv1SdNseXQEXWvE`LWTuI4 z_Xnj&Gj&LO`bsw<(U{B146jl;mrK|850)Sd8hF5Ri<}nH^DnZH#M?X0XABF?zD6?a zJBZ6vaQ@EXNh${Uy3E*d8`Is$k;+RTv-Et>2U0bX@T?Vj9?GpI&r9YTVgmXRSz1V{ zXLbckahUmaPLsPz*x&+RCasRFv1Gs7@p24%G7YWb@1Tf$AjobC;_YGl>mBf&ch_ZM zrlZf}%Y*i7RPbqFejm$n=peQOQe<@lM9E79NJBP}K4t+@Wc@lJWc&CRGJX0GThc9XLK;{!eO7iB2QXA+`%q zzzDB%*kv5SrK2AMFEee9gpHBZ;ze%J1x=PR+W^?l?blI+SRvd8+B{fQ%KdwA7Z|NO zZ`iYtWgmB4nA=(T(Z3Wk^pqlMs{RIb+}+NFXsc`aoA)-4NGyL%)a@~(NnV(B6Pe;n z$>HAELEwM<_dJS|cAN(l=dF|6WzFbD!WH$sYsRVk0Y0M0VfN3gIZ?B!cvVUyclvT} zFfX6z)U7TzAw+>TtLwL_c%4jBwb z13W+&TX+_^~cSy$ERv?V{IoB zWuE$o__S^H!QeEPjpZ0u3PEkclizhVD}9_;pwKi5#h30?4nB%gL^x9`6Nhd0#;=#)$jU#|#SWpIRB#K8w?KKYGgI z7Oj5CsxN5Po&l#_)LK>={|?qq?4Pc&SWpkzJh>QiwaMfMXZkWv0#Cw=okKBUvws!u zXUVo|hR(l9dG`iWV7KhWBP4o><4Klnq;}9egA1HSj>8T&w}U zt34BkAAj;EOQ^krwG2{Vl3?R5;FHAnp z`gO{{pFlVhxXx{40jjezE!c8a-eAgMsKo&X{#&j|@P18y^P8kkyg=?7j_Xt&Z3T#o z?S_F(l!K{%-H}Jw%CizkmIoTfQ5dUEdokPtK{2QM*4PBBcaOH1rfy!_i zN73*w3lhd$C(rI=N8w8a+* zy`_0K!^pYE1@m|yNJ))OUTo6XX)t{B%zXykIbKWrE{JLKld*LhaW67_)dtklt`iTcZXK93>@*!b~#E$P3sa)vf3^ZUg<04{!DCb|}HoF0Ba-D&~aU^i@4cr{gl z+6(HXCaHN0iee(*>hQ&1V{jcc$y~I^c1m96#N{!Uj6=ZvYrQ7uhz`uGwPXEl;O-Ul z_1=qFq=Nt-3`nMQzmxapF4tvv*Fs`L{qk_#&E=h)u1x^p3dDMy;@?Ic^kj`9;F;M+-|JmPdZRjOnr zZEQqCZWzbaisD|p^5x|c-G*{YrykALI(!;IHe+2ERlKPFpUFw$9d$- z4S@!BH^62yJP7qoj$a#O`~Ps);+;v@iDjR|g{$1B2A*SX-G8;2tR8bAg5I@#N>j{i|H6D8o zZlK;;=CmFlw_B0E*0zh2K$d7P1U14pAAPvhIE{cv=pK(d%3#TTP;!4}FY@7npKG@H zRpf|SZblVGX7cUHFZ<)5d*>DNPY}2}GDNZ7_@SwRU~!A%d5U$9GX+B5qp*UkU3BM- z(W+OJW(3T8FXk!a`k&9{pe)-b=MUeIv8cDLnb2O5@h0ZAAoHl;42s70-vACkiX}-? z9x-8=pxHgjfQU{DpS?-;qD%@M*`x8P%|_5V{Le0hlSeLzMSvX?i58^a1lAj|@lyLk z_SDUd;hy8$FU9q=g+*#m_?e5p6CCEgTF~65(UxLX%3NA$C6Y?<(!6<1#M3qSxQ{X6T177)z{hjDXa4 zT2B);r{n~%hV(6Drb*P~!7YR6VUM}%e4v&%m0la-^{o9`3PG&7Bwr#3NRRQ|U6oFx zPV&-kA)#bWkEue|pFUDT)|IIws5?5tdQ1v`J-9Sg?TV%QF#O=6sy-q|v$m3a6@{Py0e6#u6y4(1l7M^(X!${;m*=OFI6`ZcLH-_6y8jWOpMnO5J`0SQ zX=h!f3rqI&px3mG^QkMFvU6DnR0#=KO(gg$R4 z7kq~e6Ae--S@%s*TS26f6~$X3=`ZX=EVZrzc<`4EuXIeV_>7!uQ$h07PtOnG=y5g_ z=`7Dd=|hF)ztDR48sZfaDAKfOGC@`>XYX{3iT%JVJ1Alr{mZA`bos`8T8vW=lp|!6 z;piGEIFc&AM*c|FF@>`2NLk~!cgwGMLxB^fmQhQbIxZ{i)lECpjY`u*-F!o%C~-$l zV>XEYMTKpXsV-mb{IaDa`v`)8An$&`k@0aap;$FxEvnJ%BS4BC-u+g^XB+SAhwpSvkr$X@+JHxn+bY|(WNS>km58?b|KF7+I&9)x$V*zjHZeq z%b0d`2<=bK+t(k3!$Ub$!qrk4vY*j<7B5a^i?((-$#=|8kVuAgzg~!HJc<4fqp*_| z8c?x+Htg+4#9U#ose$8OLmbDZ($+&&jloB)CwI5cthaS`HYLT5_98|fjZ%>v-W7^f z#m;)X4TA5&>gDs`ADsA2Mf2&rnzIsbGI(fi1z;`j^=Wa(3V%ZY8U>sH!}**IZb*;a z@bDek?Vc7n;G0s7OVKD5+-jTGZQ3?@($6i%ZmV6th=|mU2}7y7EF$JQ z!O;bgbxJifW?whpkqg~`JJMrHk#dR1o0?@Gf6x)c$p}%7CkPay0P0mxp@$K%7*W&w z$m)R^lo~k;RyXGfqf_*Au>hL}?5c_8uo~RTt^@kZQAC*ZLh!ncQXg?i3GVZp5BZt? zh2sz|xVig55nuhN|441Nn3Tfo%D#5zHBGOigEBZKs0RU#x8{aPfR(p6!u?#JK~T0r z>&53DFAKqPw>GZZ_IF-fb=lazMWqYPfp$e0vEpztJB_{xG&5;XQvz4g@fXdb$Mn2M zBx#DmD3UO8x_7B)(y`B@fZ>) z5@X*+^m%q&-_PX8lX%%HNfCEIQ?*ULXdWgsA^8q@84PyvR!9Du%M_4lm|+l0`$t&~ zo`$f6`Pj=bQ$udQ0hT9e*yaxUS6-0_St)Vfg|JGfNleP+g_N^99|cm7w@v?MF6uDR zq)A&2z?4bk8o5AgA{XkxcPTo(%F}?Oc?O^&h7DK#rkxl2J~a^>XlArV78N8S~}i z@HNWImj9mx22cls%ASoJFUsQ?*bRieP1dSOHHRPzZA>CDSdPEiZO?de0z7u3P1j|{ z#N~Lurd~%x*3AhWmlSNaKPamIm>)N&N7FfiWs_-BF$V_deF<7lkVx{j2_;WshOe@^ zIcYTtgR=-~xq5CQ4my1~&HbY|WoiNRB@>ZlPbL9jZE7$sQh zDHjg%mLGIi|Ed1YcnJqE!x=*6X*7tpG~m9u$!@Ag@WF1&=R%`ZtHx!r(ug@?n$oD) zM@jhLu?$X(hBLkfZx4I6)_Cm}fQ+N$=22{)X-lYYnp&qGyVlxR3+1=-2wWAtt)M=_>#GiS^M|(Ln-rQBOq^0@)n0vZH+q zBTAEaB1x*x6lA*Sy-&gNqBCO#JHr!vmt?4TbTXmNCjz%hLum63H;`{a2ArhDMTXo^ zp>^J(MYqzlaotXt@G5Eml(36fnS^Jl67;6)COVdCfvmnUMjlJ65$?rh@7U{)o?-%4 zhC(-{-S-Q}o(%3LUOVU~r-dDISj-%+sXE@mJzn@kw=4Qwso0XFSV~9vQS1gqebcUC z>f-JWdp=_@$x1dTZj6fBswFkYA=&`n?`5j z^jx%`wQPZ$30pOlrAiv~_kQk5c%;H7UIsKq+&Y_mQ!1#Y_|8u(Q3x(^sS@TI3We|qzcd%{z(4gKHUn({01GR$C5I|gu6v)&-d@x65 zf+pjWa5!L$NIp$CvW= z*;_J*f85>oWZfD$K`ulYP--;b@tb1XIDXijKvjbkI0C3W)+UwT@z+{22Uy{S1aYs=v zR$i!ksqJJ%yRi~nHV#i%9Y7Nw$LvsJt8k2_k{8tXbZiU1j-sB#wdayPh1ac7!A4s_ zW3ZeotQk+98OsSjGB`I3kS}zq;khS#g7)`0R>V}sV9~SbWqL7O_5Xp>TyrQrnSn{O zqV$FHJYUyAHqNcgjlNoEIF(Im#T^_d{67ze`gk?qUm_fnP<2_I z%bN1GTLN-pW(O25{O*E4K1L=mgq}5^#J&B-xRgJPPezY1ZaF4;xnycSj8(iKldJgj zHluahh4v{Nt@~lZ*BsEy9(TGLCzb5aLko_8T~gd#SztL&kzS|9M+%cR^KRzQFXbx` z{BZ^btcz~{PH2FFGrr^6Ltfl->evvFOfn8p<2@!q|Bg$}tP<>Q{2Gw%#NKe2yZ!a$ zzm`Z~>7RvXvLXB&C0#3SIJpVJ(x|zq`zcXumvUx;hB$XHW;2Hqz;iZTOwVTd-5>*s zmYiBeNlX=!qVIgqUITEIvFkMtaH!mfS6%C^|}#V#e1Qn70$ ziLbuO<*peB@%=>%)tl>s*@n@6NuVU+@NZMsIgzYUZUq`M9@KQN+%H~K4X))c%h5h? z=>oaupFHS2>9hE%Vd$1C;*%`J9fQ?Y0Ab(pL(Kg&zgNFiJOHHt~OI3c7s18U@ zRQTapUm{>{IjdoXJw^ZJxXhsr97k_Qcsv*BPe}l7i=!}YWFUE zpC$FvC=PjaIqlv_692qdpe{c)#pWZqh_$V=8n2soqLgOfH@+LEb4VGKaoSW@vdVF$ zKT}ZG413KjAVXQ56uPC3!{~~AFAOU1%#Oie0a6V!^amBQ&L!HyVo9Aw!I|Ad6H?Y36fj_z8ol zfQL?5pzc6jWxSpK7Vgq4%^3J*JTUz0LVv2Y55&)iPI#?XpL!v*i*ue}2l?g4J*ux# zmngmOS6k)3P{(lKH039CS*%#TjrR~%4+xZf2ebFF8#OR-ks^EB?UzVg`=+^q*YdEB zCh^0EgmGnjo0s}ONo6)~2^sL9sW6Dc%2uw8!-*$(@9zq8@*DRDYaqKzl_Q@ONe7S^(VGIPn02*XC!? zs9Z>@UDItaAAx1LhD9gVKm&uiEsRb62*|m^1{W>3x zYM)gC_y^MBL_nX|)L<8l^7NK&htn)gRGx>hwLH?4pxpf%?Z&C#x;6%ZD5p{C4cSWb zk(^{)tdL{SjT0&szE)IOkxC!utcVRMU$UD6!?9G=Oc;YBqUdEK5ovf+X|3A zMoj4go-tyId~INhZ>q%tXOq@dKNh!;!V4zjTAACiDHhc~stOpQms2=aVIS?FaE*!V z%NkS5)b%Y|G~*wkQ^K*^m#*HbDFHr_5hXvLWa=!!pZExyt}FX04ieX&NkE}{Kk4=+ z1AFk;LhTwX!&GcDd?4u~t+lTVgiwwNzgGP1xY!9h0GEpnA0Y1C6c7B;=qyyb9DD9=_qb z{XvIDb;nUHy7*abYM*HE5T0ytY9A&@Tzx>waJEMl*ofFZIGAWQ`OXRG5}J4qn=@bjd{CYNE~zjOXd8qZw_wV`IVy#g1ymt*;l03Jysk?l%h z!}s)U{K^v$ck-<{cbrEv+Vrz;MPfb>XmO z0V&F;Q8QnpFj;Zsj&VB?EOkrF{Z1uo0((6z@SX>yT1>pVWNpSVTd7U);(psKR*%vi zIdvwhLAbsO_5J%~!zfR?Ei-y#8!-6;1)e8Sm7=%%)}CFvG2<%$h^PRr8sF6{Lw$94 z70{*g*CIxRFs3~Wg8|A2WVm5R+2BmfkMt4td7A>SdgBzM31oqTth{ebx8 zM05#f!S0QpxJyF@Yi0`v4*Xdyu(%WI%B2jNkq&ojBO+ECEzk@#%;gn#w?VN@kbX|T zldlTcv_wcdEis#F+1Hlxr|woqhAHJwUH+zc-58@W)B#?K@3^5pGYpgO%*iMX12KFX zP0pXS4oD_{C&w?uP?}K8=f6URf0T|ys?K5&7h%iC3#n+J(D5_E-FWBLJxLtbwFaog zQu~@mPatUL-=pMSDj%Fk#T<;y@%EZ4fk4KjY2-mJF!|A)v8!q105PPXHr%?Pum}0d z-d-Q9x5utW2hJrANjfZvJs{6Q(w0xcmf#JW2px=H;ZsXa6@?U*B(v$Ro?wSdg%I8P za%11*i0Zv>jBG$Zfh81~I_xG%3=C{Pdhtz`a;$8ik$ox5A*tWDdpm%s5Sw+n?dB0N z3sJZ6B98Cuy}oAr{k}r$G_T?W8OFMmqaIg8LwG0~JlLS|MWoi{(iBvK10~ZhkEkOo zG_o6I>4}+45tjfXo3Y6kXpKvlV#IItczs)>{$L@r!`*1$wF{IApW$?b7n(lU*bP99 zSSE+i2g6e_=bzDaZ%jzto7L{WEA=~Xr`QS<{<}=MuNeuOb;@%2vn+==RBt<-<*qw5 zKrXy*Db=rh32-NI!ns3(y%hA_%~Yubx@cNRl-IWl#z@d6IIbTXX z4t`Cn&G$ljpbYZoJmv^UKG7$n6c%?pBbmuC@-Bod?Wb|<(GkHPv}mfq|8fqjWF*!-mla7hk4@ z7M?Fl&Iki8|Gw(c`kTyFpS{4*Jo9Vnw&_v%>5nn<1w?dzP*-=yF}sTI<3CrzcU3%? zJh%+F;OXPJIeE-mycN$9Djs-!=}d0_%iZg|%csYHrq5n4X{xw4a}M?_*o{K#D4j6B z9wcXO0pLV;5P0lAjjYdjS$kijs0a^su*_)A6TIdtp z0scP^6~n*UUap)$>;@3xQO?7*;Kr!8Ik&hO?O2eiJ1J$Ex%dpq*bPSLHV^)exn>%i zITiax1z=0a)tLq_<>it)Y@Eqh1y(u-pzHgSu?t3h3x(&82W*G zI`-b@-edeg@L;Sh^0<8B)QAcAlUHzh+#8LJM&}lb+yJ{lhrF+V-U!_YluZuvjt4=Z zW#|^s4ZQMv>MxwH8#kYbla?CMEXhEP3JVwQQ2W^xjS}6_9Q}F;*B7|#7r>87u^`f# zsS5v`=)bi29vPV|f|>6Z-KK}P$^o^cv1{2WbjVS(7;AdU96rFhx9&fIXXI4N)Ycc= zdm6j-9FPmQ7034je@~Mi7xFOQ7P|XsYb}C45AJeK{Q{k%?%5rk{VM1jH z&bT-FBvMLX>Kge%FS^O$@jfA@jb3Ss^Ir3wC@_)YbefgBG`f_|hoYc0Z?@Ujec@tm z!IICV6HvQyca9#Kt+;~w8G?LX2%R(I85@7AZM9x@SvE;96jt_DnGtrXV@92W$)!7j zhJ96K9_l%m;N@_9x0qrcL9~l2XzWu4{H1RFPep4l_AD+x$HVKKC}d!9EJ~p8h>9B!40aVx`R#YCnLMaj zNKrTVsCKP9CdOjVJS(qA5B^PuNfL zkbCON6aF{Cree@SXBqL1eKa=*H`jj1JR%PIn=Ztc3PQqQ8ciGF9{cN;Q zr@9@82&rVBN=cwr#!0wG>yyCZ9~2K{UtfLtwGzS8yFA3P<~~>D;sNirb)iPO>n=nj zuJSzu=u3YIusa=sy}%qmY1L8$X~T`Tt_Yqga8=kw!+2LDCa{6D>Km^bp06@~1evLh z^X*FT-N1;sZ34SaaGL+4&9YyRP6=hGtUIKeVN)Ls*N7R;`zlG<&Q$$-v;ySq7i=KN zb2vo7eQ&6n*+Ld5sB*V@bdw0zOe-j3qBPc&v7`$jP@wP_8I|f;@fz(LW3cB`I38V` z*md{3ddHC@Y=sYKLQxemP)1r@-y9lD^Np_MR~EBGT!CMxXx02{V39bVjaJRf ztqq(4RH5&)JC?7Lg$%CaKlbV%ynK|NfVdD7rxkX{d;ad!LESa9B)u~!WH=MVxb=pc z|BN`9I063PPUqL&3sm9_oHj_hRTV`>DL_>boC-m|B=8q*5h& zDoZa9`msbL*tP@AtFvn+c@z-^IEy&h@)GMdLN&CiQW)po0DVO_B|{wuMBcYuVbqtY zQgFzJ>g{Q|bWVN8QBUIU)xo%lY)yquxwW~?&F}sV1MG}P zc-_Z=`Xc=JOuFlEi)&AGh?SSx4iK-WQI@V=%I9#mZwI-fR!2e>Dr}IPRMl~#p6e;6*RZj%-!(c)_V^F}U ztpfHx?5g=FWSDD#yv9AyG_j+XkN%!s*K#<8NAN$kY1(3JwNbUlprP1Mo$LF5XDK3( z`OUE4uO_Y9y%xtne0TR=T;9wko%4`ZS=B$$0elq`lyqpJUzq0$_OdwH?@H-Ac|n3!Qks9!lef%83Ge|3BMIiW@O+5cO1vDIQ1K z9-3MMN*NBP^Qu+YksMbTJ+p^&9e4M#;A9o&%0Hy`DF~&etvO2<9Pz}0SO1U9_i5Tc z1fu7XXc@~JkR%j}xKmu5t_X2qTWRo`mx_@sUPi}Of2`hSHdA{SB$KwCu)oQ3 zD92WO3?XoAS14q8z9~lpWI~EtL4kb4_YV~NppS=SPcda42LNNuBg_3;xcRerXi#~e z6oi&AWa7~h|5bNr`htZQKzn&2%{MWM(`o*yzt*Q+FCj0XX4~d*Eaxe?G^*@DF`};H z0qMz?&6KkRWg>2jQ%|niJmUP&f=v4incltuQp)UgHkzEX9o8n`24Z>sJ(~d47<|sf7cnN=E^Ti*M;fFx!Z2GI82~TMp z34$nkpxmp3Yefe@^uf>vS8!`R*0iECUJBrTK2BsndWLI|t7AW`(y|a>*QQUKVg9Xd zXU%8d;AT1oZ^b5zm`oXye+s9HPaf|b=#@J&YC$*c`JUy7ovJf<9FL5t*JGT)p zIuM9Zh;T_ZRuXcDLGv|NwY0fWzud#3#gkHMZ&uVC@|a{F*ECGtcDxJ8T4y`&xIUla zhk%3P*x5}49QjlCnkL_wmJ@^SF)q1Cryy|d4o0Sr<~ZTZV-r27+8_wyAs9HZezw9< z#6Jp-nF)(JO=7dwhyXTa40eFt3K(wl|J>-LgKj#zckjv*XCUi^M#b3&^Ka}^Xd~W zsjgz!JdXd}TPlJEf>LYWQR+L*v~q?5KeAeg)|x1ZojmCpDBrXyz|JCYKsIreWmV}- zxRY_nDvyaZ>II_(8PIw`M%sK)(W%OvZ2pc<8O4mdq=u(7=h2bSNBM-b2R*Q%Nxp~lEFU7J zmjU?})o}raQ)oKeh?i7d_=SXOqhc~b&C@JFiOR`0^6s<>PIiEl2-o>GT_?=(ONYOH zw>`tQ8z7?QMWWZ|i_&lncwIPBKKVqBIEG7zj?vp;RB>$UAy<8g>eFf_aBj8w;ikw5 z;YoI8g<8>bfo>nDp| zLeHV^C58p2%tRKJ=-roSO5{3i1vPifhg_HvAKbx+T{mGyhw?^D7M{P z(I3lnT$W@t%G^lv27TV(6#y+&iLB7vSVug%EYS1N(s|$zt|Q<)h#udX zPX^V}GZT(Hmsqg${10`=md;Dpm-(zDb@=(^$n-$Nl64<2=4=^ypEf3oK02?nfvo6E zFKD=J$`M+wGd?>Y0qUPewEm`BI}lH%9a}(Nj4{``&=xvxk~fCiZY+X`hRPsVV1{0u&0&Y*pYYefhEN< zjygC9YmILqlFia0M0$c^;|cjftV<*#OS{u!Le%WW%yj%Br}tyq+BFS z;-!!(HZjFui-2Hi)7{SWAO&B#Gjm>e2o*20tYiYw>$!8p0z=v}@l{olVZw;32V@-M z6VxI+T*{U4SPuRy>07~_ecT)hU5;_F@0)aV-kh~hLA9DdKC`;p0-hBG^euAv&qJWs z7S2PDj1We8N-dy#h~ufliO%^X0GaAcd;LG6bq+#(ali^?O-04lt}pzYx9o=r!=H|# zT-GLH$Y=R*!(aP#f`ji$iDFm6NqNU*y~YFQhI~ZBA#R%2i%C5Hs(DBii7oL)#D`q9 z_&9%8j5AX|snY>a*uj;QGr0UhZaRm5kfWOShMT3);10=llE5%~ia#3-!V=vMY*#Urf0&e{k(ZwJLDb`!V62&O>IK5{sa zVQpCchwaBLQta5(i-h2`KvIFt9rFEOyC0bwjKfP`_ldB7(9FL?lccMqG-7xuo1UBC zX06d(?*Qb8o_sV=ErMFWI@{S2TQuuygGk{zX2_13>KLiwl<3Bdqi^P7auq~{6&jLEyJv~DkA*zJ z-PO+~bic83MI~?~Rc-s60ln~HojQD;q~-}$e_@r9%dU2$GzQS{EnZw9p0Rl6H*s?Y z$XYH5@T!Ji=b^U*!;oJ1%(F1fj2%w6fXJ=k30{eH{O9gD6A$v5qLA-#w9CRrZ;%zY z=1M%y{Z_e4J1Ep8t5N6es@vcEWk@?W5A$cFAqWl}HT63D8R9?xpM2>KnkBG_t+{=` zc^UL*OA9&U5_3e)pWk!sRZtz|n+8AY;kL&&eS%^-3N-lJWmSHT%F{ zWAD`9J%~bgg{F;#cQ_aPk@-~^YnIs}eLy}pCGvuUdIxFo<&UP-N8EdGJD%jSRnz&^ z(83D5$qP|^BC}O$8^)eVQ$(fx3Zvd`qz$sz2hik*wSpFG%jT2 zoc6=A<^!7*7UN(Sswj7HV1lYD_tTz{wv#`h1RGqRXvc@pmo2wCaE;_*6Qw1x2}HU* zfIQgG^4M=xO624GjfX#F^a?iGog7rptRBEg8|LO#tXrbN)uQ-j7_xctq7 zj0V@THe(6i>jxQ@WPVk5*Pnh5O2R}sKrknh=K}l$KHX80iSlvy)bR7U+y~R<5F>(M zq1fiq8SW0Wt$S2d3k3qk&7lancG}B6X$fB5kMC}swP~^NpN-WOUf+gkOh!iqH7VMc zTaaQvFH5cG*jTL&;6EdP=d97>U`#+9{@>Bhj-WTaHf@DF=E&j622ZcYfG6RPMu;o) zfNU;J^VJg3Uq490x@>T`-;GnuIkvT5Skq~%OWCxx-cr9i>pmDX$=`W2zy~()?Z`+g z;A-*HpawjG>o?f7NV(=~jN%;C)6eajy_k>=ZdUeItya))`~GA87D*eSd%3xOBlI}MqPxmQ|<<FYhf$PMm-LBi&?%Kzz-xoE=qXMZ?I zH&Lm-XwV5Cy_&HQrViyUZKyWo%vC% zU?%4z8|6)*|M3qd>A_)U^u7-gvli#8NR>Hy%6t=A8@lNB&H{LzI}Zm_knEcYb_Gpr zZGLOK;fjssO5_q3c89QS6qy&5>#^0;`tW#h@VjjXtztGQiHC!op790S0^!GfXcDKE zMDwJ?;?A-O<2wO&bGKyfnwdGBOMUmHbtnj?DB-UeUL_@QW5PC?=s*Y@M*|@nqEbXC OZOU7Y#Fu*?{6t_yGH;&% literal 42841 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 Date: Mon, 27 Jul 2020 09:57:04 +0200 Subject: [PATCH 41/83] Added reference to MeiFactory in SymbolHandlers --- src/SymbolHandler.mss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/SymbolHandler.mss b/src/SymbolHandler.mss index b02493f..4f494a2 100644 --- a/src/SymbolHandler.mss +++ b/src/SymbolHandler.mss @@ -52,8 +52,7 @@ function InitSymbolMap () { //$module(SymbolHandler.mss) // Create a dictionary with symbol index number as key (sobj.Index) and a value that determines the element that has to be created // 0th element in SparseArray is the element name as function call - // following Dictionary contains attributes - // TODO: key, CreateDictionary(Element, CreateDictionary(attname, attvalue)) + // see for further instructions Utilities/MeiFactory() return CreateDictionary( '36', CreateSparseArray('Mordent', CreateDictionary('form', 'lower')), //inverted mordent From a1931cd1e5e66908bc4cf96a34b2558429993df9 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 27 Jul 2020 09:57:40 +0200 Subject: [PATCH 42/83] Renamed TextStyles in TextHandler --- src/{TextStyles.mss => TextHandler.mss} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{TextStyles.mss => TextHandler.mss} (100%) diff --git a/src/TextStyles.mss b/src/TextHandler.mss similarity index 100% rename from src/TextStyles.mss rename to src/TextHandler.mss From fc618b945827587e7e558ec484b687f0d99ba2bc Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 27 Jul 2020 10:11:22 +0200 Subject: [PATCH 43/83] Check for front matter --- test/mocha/test-text.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/mocha/test-text.js b/test/mocha/test-text.js index c099d6c..c6dc85c 100644 --- a/test/mocha/test-text.js +++ b/test/mocha/test-text.js @@ -39,5 +39,10 @@ describe("Text elements", function() { const subscript = xpath.evaluateXPath("//*:measure[@n='1']//*:title[@type='subordinate']/*:rend[@rend='sub']", meiText); assert.notStrictEqual(subscript.length, 0, "Subscript in subtitle is missing"); }); + // check for front matter + it("check for front matter", function() { + const firstMusicChild = xpath.evaluateXPath("//*:music/element()[1]", meiText); + assert.strictEqual(firstMusicChild.localName, "front"); + }); // test formatting: bold, italic, font change, font size }); \ No newline at end of file From 4da727af9b0bba1da28df1d5fdb0e4ac95b5965e Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 27 Jul 2020 10:11:39 +0200 Subject: [PATCH 44/83] Check for plain text in measure 2 --- test/mocha/test-text.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/mocha/test-text.js b/test/mocha/test-text.js index c6dc85c..36d7a9d 100644 --- a/test/mocha/test-text.js +++ b/test/mocha/test-text.js @@ -30,6 +30,10 @@ describe("Text elements", function() { assert.notStrictEqual(subTitle.length, 0, "The subtitle is missing"); }); // test for plain text (not implemented yet) + it("check for plain text in measure 2", function() { + const plain = xpath.evaluateXPath("//*:measure[@n='2']/*:anchoredText", meiText); + assert.notStrictEqual(plain.length, 0 ,"plain text in measure 2 is missing"); + }); // test formatting: subscript, superscript it("check for superscript", function() { const superscript = xpath.evaluateXPath("//*:measure[@n='1']//*:title[@type='subordinate']/*:rend[@rend='sup']", meiText); From 501780bc1bdd54b783dc5a800ce139b07265628b Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 27 Jul 2020 14:08:40 +0200 Subject: [PATCH 45/83] Added tests for text formatting --- test/mocha/test-text.js | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/test/mocha/test-text.js b/test/mocha/test-text.js index 36d7a9d..2addd9d 100644 --- a/test/mocha/test-text.js +++ b/test/mocha/test-text.js @@ -48,5 +48,36 @@ describe("Text elements", function() { const firstMusicChild = xpath.evaluateXPath("//*:music/element()[1]", meiText); assert.strictEqual(firstMusicChild.localName, "front"); }); - // test formatting: bold, italic, font change, font size + // test formatting: these tests all depend on the test file looking like this, working with content querying + // make sure that no false positives occur by checking for the length of the arrays first... + // bold: "Title text" @fontweight="bold" + it("check for bold text", function() { + const bold = xpath.evaluateXPath("//*:rend[./text()='Title text' or ./text()='poco']", meiText); + assert.strictEqual(bold.length, 2, "There are only " + bold.length + " elements queried!"); + utils.assertAttrOnElements(bold, [0, 1], "fontweight", "bold"); + }); + // italic: "Subtitle Text" @fontstyle="italic" + it("check for italic text", function() { + const subtitleText = xpath.evaluateXPath("//*:rend[./text()='Subtitle Text']", meiText); + assert.notStrictEqual(subtitleText.length, 0, "No matching elements to assert were found!"); + utils.assertAttrOnElements(subtitleText, [0], "fontstyle", "italic"); + }); + // underline: "underlined for me" @rend="underline" + it("check for underlined text", function() { + const underline = xpath.evaluateXPath("//*:rend[./text()='underlined for me']", meiText); + assert.notStrictEqual(underline.length, 0, "No matching elements to assert were found!"); + utils.assertAttrOnElements(underline, [0], "rend", "underline"); + }); + // font change: @fontfam "change " & "the font" + it("check for font change", function() { + const changeTheFont = xpath.evaluateXPath("//*:rend[./text()='change ' or ./text()='the font']", meiText); + assert.strictEqual(changeTheFont.length, 2, "There are only " + changeTheFont.length + " elements queried!"); + utils.assertHasAttr(changeTheFont, "fontfam"); + }); + // font size: @fontsize "larger" + it("check for font size", function() { + const larger = xpath.evaluateXPath("//*:rend[./text()='larger']", meiText); + assert.notStrictEqual(larger.length, 0, "No matching elements to assert were found!"); + utils.assertHasAttr(larger, "fontsize"); + }); }); \ No newline at end of file From 4520c1fa4bad03b8255d86906df73922498fae13 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 27 Jul 2020 15:05:56 +0200 Subject: [PATCH 46/83] Added plain text to output --- src/TextHandler.mss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/TextHandler.mss b/src/TextHandler.mss index 54a6f93..b6d1ad1 100644 --- a/src/TextHandler.mss +++ b/src/TextHandler.mss @@ -8,7 +8,8 @@ function InitTextHandlers() { 'text.system.page_aligned.subtitle', 'PageTitleHandler', 'text.system.page_aligned.composer', 'PageComposerTextHandler', 'text.system.tempo', 'TempoTextHandler', - 'text.staff.space.figuredbass', 'FiguredBassTextHandler' + 'text.staff.space.figuredbass', 'FiguredBassTextHandler', + 'text.staff.plain', 'CreateAnchoredText' ); Self._property:TextSubstituteMap = CreateDictionary( From d3b08a7b274d78f9a2f37770b5bf86aa86ca66cd Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 27 Jul 2020 15:06:23 +0200 Subject: [PATCH 47/83] Don't put an in --- src/TextHandler.mss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TextHandler.mss b/src/TextHandler.mss index b6d1ad1..6d3ac1b 100644 --- a/src/TextHandler.mss +++ b/src/TextHandler.mss @@ -87,7 +87,7 @@ function PageComposerTextHandler (textObject) { function TempoTextHandler (textObject) { // 'text.system.tempo' tempo = libmei.Tempo(); - libmei.AddChild(tempo, CreateAnchoredText(textObject)); + AddFormattedText(tempo, textObject); return tempo; } //$end From 16f5a65a2aecfb250422ac50b0c18c291c3abdae Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 27 Jul 2020 15:10:00 +0200 Subject: [PATCH 48/83] Corrected errors in formatting tests --- test/mocha/test-text.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/mocha/test-text.js b/test/mocha/test-text.js index 2addd9d..d4398f3 100644 --- a/test/mocha/test-text.js +++ b/test/mocha/test-text.js @@ -52,7 +52,7 @@ describe("Text elements", function() { // make sure that no false positives occur by checking for the length of the arrays first... // bold: "Title text" @fontweight="bold" it("check for bold text", function() { - const bold = xpath.evaluateXPath("//*:rend[./text()='Title text' or ./text()='poco']", meiText); + const bold = xpath.evaluateXPath("//*:rend[./text()='Title Text' or ./text()='poco']", meiText); assert.strictEqual(bold.length, 2, "There are only " + bold.length + " elements queried!"); utils.assertAttrOnElements(bold, [0, 1], "fontweight", "bold"); }); @@ -60,13 +60,13 @@ describe("Text elements", function() { it("check for italic text", function() { const subtitleText = xpath.evaluateXPath("//*:rend[./text()='Subtitle Text']", meiText); assert.notStrictEqual(subtitleText.length, 0, "No matching elements to assert were found!"); - utils.assertAttrOnElements(subtitleText, [0], "fontstyle", "italic"); + assert.strictEqual(subtitleText.getAttribute("fontstyle"), "italic", "Italic rendering is missing"); }); // underline: "underlined for me" @rend="underline" it("check for underlined text", function() { - const underline = xpath.evaluateXPath("//*:rend[./text()='underlined for me']", meiText); - assert.notStrictEqual(underline.length, 0, "No matching elements to assert were found!"); - utils.assertAttrOnElements(underline, [0], "rend", "underline"); + const underline = xpath.evaluateXPath("//*:rend[./text()='underlined ' or ./text()='for me']", meiText); + assert.strictEqual(underline.length, 2, "There are only " + underline.length + " elements queried!"); + utils.assertAttrOnElements(underline, [0, 1], "rend", "underline"); }); // font change: @fontfam "change " & "the font" it("check for font change", function() { @@ -78,6 +78,6 @@ describe("Text elements", function() { it("check for font size", function() { const larger = xpath.evaluateXPath("//*:rend[./text()='larger']", meiText); assert.notStrictEqual(larger.length, 0, "No matching elements to assert were found!"); - utils.assertHasAttr(larger, "fontsize"); + assert.notEqual(larger.getAttribute("fontsize"), null, "@fontsize is missing"); }); }); \ No newline at end of file From 1c55c16662d2519a469f44ac6ab19c97cdd54c94 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Sat, 1 Aug 2020 18:47:40 +0200 Subject: [PATCH 49/83] Support extension initialization without showing dialog --- lib/sibmei4_batch_mxml.plg | 2 +- lib/sibmei4_batch_sib.plg | 6 +++--- src/Extensions.mss | 20 +++++++++++++++++--- src/Initialize.mss | 11 +++++++---- src/Run.mss | 2 +- test/sib-test/Run.mss | 4 ++-- 6 files changed, 31 insertions(+), 14 deletions(-) diff --git a/lib/sibmei4_batch_mxml.plg b/lib/sibmei4_batch_mxml.plg index f76c558..7c7662a 100644 --- a/lib/sibmei4_batch_mxml.plg +++ b/lib/sibmei4_batch_mxml.plg @@ -11,7 +11,7 @@ if (IsObject(folder)) { - sibmei4.InitGlobals(); + sibmei4.InitGlobals(null); // count files for progress dialog numFiles = folder.FileCount('XML'); diff --git a/lib/sibmei4_batch_sib.plg b/lib/sibmei4_batch_sib.plg index 288ac16..e1c2cdf 100644 --- a/lib/sibmei4_batch_sib.plg +++ b/lib/sibmei4_batch_sib.plg @@ -10,11 +10,11 @@ folder = Sibelius.SelectFolder(); if (null != folder) { - ConvertFolder(folder); + ConvertFolder(folder, null); } }" - ConvertFolder "(folder) + ConvertFolder "(folder, extensions) { if (not IsObject(folder)) @@ -23,7 +23,7 @@ } else { - sibmei4.InitGlobals(); + sibmei4.InitGlobals(extensions); // count files for progress dialog numFiles = folder.FileCount('SIB'); diff --git a/src/Extensions.mss b/src/Extensions.mss index b716ba1..28168eb 100644 --- a/src/Extensions.mss +++ b/src/Extensions.mss @@ -99,7 +99,13 @@ function DeselectAllExtensions () { } //$end -function InitExtensions () { +function InitExtensions (extensions) { + // To let the user choose extensions via dialog, pass `null` as argument. + // If extensions should be activated without showing the dialog, pass a + // SparseArray with the 'PLG names' of the extensions, i.e. the names that + // `RegisterAvailableExtensions()` will use as keys. This is useful e.g. + // for running tests without requiring user interaction. + // // Returns false if the user aborted the selection of extensions or if there // are any errors, otherwise returns true. @@ -112,9 +118,17 @@ function InitExtensions () { } chosenExtensions = CreateDictionary(); - if (not ChooseExtensions(AvailableExtensions, chosenExtensions)) + if (null = extensions) { - return false; + if (not ChooseExtensions(AvailableExtensions, chosenExtensions)) + { + return false; + } + } else { + for each plgName in extensions + { + chosenExtensions[plgName] = AvailableExtensions[plgName]; + } } apiObject = CreateApiObject(); diff --git a/src/Initialize.mss b/src/Initialize.mss index f9fb36d..0e14045 100644 --- a/src/Initialize.mss +++ b/src/Initialize.mss @@ -6,12 +6,15 @@ function Initialize() { } //$end -function InitGlobals () { +function InitGlobals (extensions) { //$module(Initialize.mss) - + + // `extensions` can be null or a SparseArray. See `InitExtensions()` for + // more detailed information. + // initialize libmei as soon as possible Self._property:libmei = libmei4; - + if (Sibelius.FileExists(Self._property:Logfile) = False) { Sibelius.CreateTextFile(Self._property:Logfile); @@ -41,7 +44,7 @@ function InitGlobals () { Self._property:SymbolHandlers = InitSymbolHandlers(); Self._property:SymbolMap = InitSymbolMap(); - if (not InitExtensions()) + if (not InitExtensions(extensions)) { return false; } diff --git a/src/Run.mss b/src/Run.mss index 3958fec..7ae7f01 100644 --- a/src/Run.mss +++ b/src/Run.mss @@ -25,7 +25,7 @@ function Run() { activeFileName = utils.ExtractFileName(activeFileNameFull); activePath = Sibelius.GetDocumentsFolder(); - if (not InitGlobals()) + if (not InitGlobals(null)) { return false; } diff --git a/test/sib-test/Run.mss b/test/sib-test/Run.mss index 25684f9..0bd93c4 100644 --- a/test/sib-test/Run.mss +++ b/test/sib-test/Run.mss @@ -2,7 +2,7 @@ function Run() { Self._property:libmei = libmei4; Self._property:sibmei = sibmei4; sibmei4._property:libmei = libmei; - sibmei.InitGlobals(); + sibmei.InitGlobals(CreateSparseArray('sibmei4_extension_test')); plugins = Sibelius.Plugins; @@ -38,7 +38,7 @@ function Run() { suite.Run(); - sibmei4_batch_sib.ConvertFolder(Sibelius.GetFolder(_SibTestFileDirectory)); + sibmei4_batch_sib.ConvertFolder(Sibelius.GetFolder(_SibTestFileDirectory), extensions); // We do not 'clean up' with Sibelius.CloseAllWindows() here because it // sometimes causes Sibelius crashes. From dd5689db725e9a91287fbb29b579be3885ac250c Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Sat, 1 Aug 2020 18:54:19 +0200 Subject: [PATCH 50/83] Rename DataToMei to MeiFactory --- src/Extensions.mss | 2 +- src/SymbolHandler.mss | 4 ++-- src/TextHandler.mss | 2 +- src/Utilities.mss | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Extensions.mss b/src/Extensions.mss index 28168eb..9fa92fa 100644 --- a/src/Extensions.mss +++ b/src/Extensions.mss @@ -161,5 +161,5 @@ function ExtensionAPI_RegisterTextHandlers (this, textHandlerDict, plugin) { } //$end function ExtensionAPI_MeiFactory (this, templateObject) { - DataToMEI(templateObject); + MeiFactory(templateObject); } //$end diff --git a/src/SymbolHandler.mss b/src/SymbolHandler.mss index ea31e81..7898d54 100644 --- a/src/SymbolHandler.mss +++ b/src/SymbolHandler.mss @@ -139,7 +139,7 @@ function HandleModifier(this, sobj, mapValue){ if (nobj != null) { - modifier = DataToMEI(mapValue); + modifier = MeiFactory(mapValue); libmei.AddChild(nobj, modifier); } @@ -156,7 +156,7 @@ function HandleModifier(this, sobj, mapValue){ function HandleControlEvent(this, sobj, mapValue){ //$module(SymbolHandler.mss) - symbol = DataToMEI(mapValue); + symbol = MeiFactory(mapValue); symbol = AddBarObjectInfoToElement(sobj, symbol); mlines = Self._property:MeasureObjects; diff --git a/src/TextHandler.mss b/src/TextHandler.mss index 6d3ac1b..516ccb6 100644 --- a/src/TextHandler.mss +++ b/src/TextHandler.mss @@ -452,7 +452,7 @@ function AppendTextSubstitute (state, substituteName) { return null; } - element = DataToMEI(textSubstituteInfo); + element = MeiFactory(textSubstituteInfo); state.nodes.Push(element); styleAttributes = GetStyleAttributes(state); diff --git a/src/Utilities.mss b/src/Utilities.mss index 8d8052f..b544c9f 100644 --- a/src/Utilities.mss +++ b/src/Utilities.mss @@ -824,7 +824,7 @@ function AppendToLayer (meielement, l, beam, tuplet) { } //$end -function DataToMEI (data) { +function MeiFactory (data) { /* Allows creating MEI from data structures, e.g. for templating purposes. Takes an array with the following content: @@ -843,7 +843,7 @@ function DataToMEI (data) { Example: - DataToMEI(CreateSparseArray( + MeiFactory(CreateSparseArray( 'P', null, 'This is ', CreateSparseArray('Rend', CreateDictionary('rend', 'italic'), @@ -878,7 +878,7 @@ function DataToMEI (data) { if (IsObject(childData)) { // We have a child element - currentChild = DataToMEI(childData); + currentChild = MeiFactory(childData); libmei.AddChild(element, currentChild); } else From 854fb93c145dac21d91817aba5783bdd9248e17d Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Sat, 1 Aug 2020 19:27:30 +0200 Subject: [PATCH 51/83] Replace GenerateFormattedString() with AddFormattedText() --- src/ExportGenerators.mss | 241 --------------------------------------- src/ExportProcessors.mss | 5 +- src/TextHandler.mss | 4 +- 3 files changed, 5 insertions(+), 245 deletions(-) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 37ff186..7d63117 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -1816,247 +1816,6 @@ function GenerateChordSymbol (bobj) { return harm; } //$end -function GenerateFormattedString (bobj) { - //$module(ExportGenerators.mss) - /* - Returns an array containing at least one paragraph - tag, formatted with the element. - - Multiple paragraph tags may be returned if the formatting string contains - a '\n\' (new paragraph) - */ - - FORMATOPEN = 1; - FORMATCLOSE = 2; - FORMATTAG = 3; - FORMATINFO = 4; - TEXTSTR = 5; - - // initialize context as a text string, since we may not always open with a formatting tag. - ctx = TEXTSTR; - tag = null; - activeinfo = ''; - activetext = ''; - - ret = CreateSparseArray(); - activeDiv = libmei.Div(); - activePara = libmei.P(); - libmei.AddChild(activeDiv, activePara); - ret.Push(activeDiv); - - text = bobj.TextWithFormattingAsString; - - if (text = '') - { - return ret; - } - - for i = 0 to Length(text) - { - c = CharAt(text, i); - - if (c = '\\') - { - if (ctx = FORMATINFO or ctx = FORMATTAG) - { - /* - If we have an open format context or - we are looking at format info and see - a slash, we are closing the format context - */ - ctx = FORMATCLOSE; - } - else - { - if (ctx = TEXTSTR or ctx = FORMATCLOSE) - { - /* If we have a slash we are either switching - into a new formatting tag context - or we are opening a new formatting tag - immediately after closing one. - */ - ctx = FORMATOPEN; - } - } - } - else - { - switch (ctx) - { - case (FORMATOPEN) - { - // the previous iteration gave us an opening - // formatting string, so the next character is - // the formatting tag - ctx = FORMATTAG; - } - - case (FORMATTAG) - { - /* - After seeing a tag we will expect to find some - info. If there is no info, the next character will - be a \ and it will be caught above. - */ - ctx = FORMATINFO; - activeinfo = activeinfo & c; - } - - case (FORMATINFO) - { - // keep appending the active info until - // we reach the end. - activeinfo = activeinfo & c; - } - - case (FORMATCLOSE) - { - // the previous context was a closing format tag, - // so the next character, if it is not another opening - // tag, is a text string. Assume it is a text string - // which will be corrected on the next go-round. - ctx = TEXTSTR; - activetext = activetext & c; - } - - case (TEXTSTR) - { - activetext = activetext & c; - } - } - } - - // now that we have figured out what context we are in, we - // can do something about it. - switch (ctx) - { - case (FORMATTAG) - { - tag = c; - - if (tag = 'n') - { - if (activetext != '') - { - libmei.SetText(activePara, activetext); - activetext = ''; - } - - activePara = libmei.P(); - libmei.AddChild(activeDiv, activePara); - } - - if (tag = 'N') - { - if (activetext != '') - { - children = activePara.children; - - if (children.Length > 0) - { - lastLbId = children[-1]; - lastLb = libmei.getElementById(lastLbId); - libmei.SetTail(lastLb, activetext); - } - else - { - libmei.SetText(activePara, activetext); - } - } - activetext = ''; - - lb = libmei.Lb(); - libmei.AddChild(activePara, lb); - } - } - - case (TEXTSTR) - { - ; - } - - case (FORMATOPEN) - { - // if we have hit a new format opening tag and we have some previous text. - // if (activetext != '') - // { - // // we have some pending text that needs to be dealt with - // libmei.SetText(activePara, activetext); - // activetext = ''; - // } - ; - } - - case (FORMATCLOSE) - { - if (activeinfo != '') - { - // tags that have info. - switch (tag) - { - case ('s') - { - // our info block should contain units. - // Log('Units: ' & activeinfo); - ; - } - - case ('c') - { - // our info block should contain a style - // Log('Style: ' & activeinfo); - ; - } - - case ('f') - { - // our info block should either contain - // a font name or an underscore to switch - // back to the default font. - // Log('Font: ' & activeinfo); - ; - } - - case ('$') - { - // our info block should contain a substitution - // Log('Substitution: ' & activeinfo); - ; - } - } - - activeinfo = ''; - tag = ''; - } - } - default - { - // Log('default: ' & ctx); - ; - } - } - } - - // - if (ctx = TEXTSTR and activetext != '') - { - // if we end the text on a text string, append it to the active paragraph element. - children = activePara.children; - if (children.Length > 0) - { - lastLbId = children[-1]; - lastLb = libmei.getElementById(lastLbId); - libmei.SetTail(lastLb, activetext); - } - else - { - libmei.SetText(activePara, activetext); - } - } - - return ret; -} //$end - function GenerateSmuflAltsym (glyphnum, glyphname) { //$module(ExportGenerators.mss) if (Self._property:SmuflSymbolIds = null) diff --git a/src/ExportProcessors.mss b/src/ExportProcessors.mss index 6fdfd7a..051a34a 100644 --- a/src/ExportProcessors.mss +++ b/src/ExportProcessors.mss @@ -406,10 +406,9 @@ function ProcessFrontMatter (bobj) { libmei.AddAttribute(pb, 'n', pnum); frontmatter[pnum] = CreateSparseArray(pb); } - pagematter = frontmatter[pnum]; - text = GenerateFormattedString(bobj); - frontmatter[pnum] = pagematter.Concat(text); + text = AddFormattedText(libmei.Div(), bobj); + frontmatter[pnum].Push(text); } //$end diff --git a/src/TextHandler.mss b/src/TextHandler.mss index 516ccb6..fda4bf6 100644 --- a/src/TextHandler.mss +++ b/src/TextHandler.mss @@ -115,7 +115,7 @@ function AddFormattedText (parentElement, textObj) { if (textWithFormatting.NumChildren < 2 and CharAt(textWithFormatting[0], 0) != '\\') { libmei.SetText(parentElement, textObj.Text); - return null; + return parentElement; } nodes = CreateSparseArray(); @@ -226,6 +226,8 @@ function AddFormattedText (parentElement, textObj) { state.currentText = state.currentText & component; } } + + return parentElement; } PushStyledText(state); From f2bfcb469443e657522a8c86dbd03f92b92de168 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Sat, 1 Aug 2020 19:27:59 +0200 Subject: [PATCH 52/83] Initialize text handlers in InitGlobals() --- src/Initialize.mss | 2 ++ src/TextHandler.mss | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Initialize.mss b/src/Initialize.mss index 0e14045..07e971e 100644 --- a/src/Initialize.mss +++ b/src/Initialize.mss @@ -43,6 +43,8 @@ function InitGlobals (extensions) { // Initialize symbol styles Self._property:SymbolHandlers = InitSymbolHandlers(); Self._property:SymbolMap = InitSymbolMap(); + Self._property:TextHandlers = InitTextHandlers(); + Self._property:TextSubstituteMap = InitTextSubstituteMap(); if (not InitExtensions(extensions)) { diff --git a/src/TextHandler.mss b/src/TextHandler.mss index fda4bf6..013cbe0 100644 --- a/src/TextHandler.mss +++ b/src/TextHandler.mss @@ -2,7 +2,7 @@ function InitTextHandlers() { // QUESTION: We could also take an argument and throw all text handlers from // extensions into the same dictionary - Self._property:TextHandlers = CreateDictionary( + return CreateDictionary( 'text.staff.expression', 'ExpressionTextHandler', 'text.system.page_aligned.title', 'PageTitleHandler', 'text.system.page_aligned.subtitle', 'PageTitleHandler', @@ -11,8 +11,10 @@ function InitTextHandlers() { 'text.staff.space.figuredbass', 'FiguredBassTextHandler', 'text.staff.plain', 'CreateAnchoredText' ); +} //$end - Self._property:TextSubstituteMap = CreateDictionary( +function InitTextSubstituteMap() { + return CreateDictionary( 'Title', CreateSparseArray('Title'), 'Subtitle', CreateSparseArray('Title', CreateDictionary('type', 'subordinate')), 'Dedication', CreateSparseArray('Dedication'), @@ -35,8 +37,6 @@ function InitTextHandlers() { function HandleText (textObject) { - // TODO: Move InitTextHandlers() call to a global initialization function - InitTextHandlers(); if (null != Self._property:Extension and null != Extension.TextHandlers) { // TODO: We need to check for both StyleId *and* StyleAsText so we can From bad304116d4a0b28d7ac5d6a227ecacfedda90c9 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 14 Sep 2020 11:30:09 +0200 Subject: [PATCH 53/83] Fix text export --- src/TextHandler.mss | 64 ++++++++++++++------------- test/sib-test/Run.mss | 100 ++++++++++++++++++++++-------------------- 2 files changed, 85 insertions(+), 79 deletions(-) diff --git a/src/TextHandler.mss b/src/TextHandler.mss index 013cbe0..01ee03f 100644 --- a/src/TextHandler.mss +++ b/src/TextHandler.mss @@ -2,15 +2,24 @@ function InitTextHandlers() { // QUESTION: We could also take an argument and throw all text handlers from // extensions into the same dictionary - return CreateDictionary( - 'text.staff.expression', 'ExpressionTextHandler', - 'text.system.page_aligned.title', 'PageTitleHandler', - 'text.system.page_aligned.subtitle', 'PageTitleHandler', - 'text.system.page_aligned.composer', 'PageComposerTextHandler', - 'text.system.tempo', 'TempoTextHandler', - 'text.staff.space.figuredbass', 'FiguredBassTextHandler', - 'text.staff.plain', 'CreateAnchoredText' + textHandlers = CreateDictionary( + 'StyleId', CreateDictionary(), + 'StyleAsText', CreateDictionary() ); + + RegisterHandlers(textHandlers, CreateDictionary( + 'StyleId', CreateDictionary( + 'text.staff.expression', 'ExpressionTextHandler', + 'text.system.page_aligned.title', 'PageTitleHandler', + 'text.system.page_aligned.subtitle', 'PageTitleHandler', + 'text.system.page_aligned.composer', 'PageComposerTextHandler', + 'text.system.tempo', 'TempoTextHandler', + 'text.staff.space.figuredbass', 'FiguredBassTextHandler', + 'text.staff.plain', 'CreateAnchoredText' + ) + ), Self); + + return textHandlers; } //$end function InitTextSubstituteMap() { @@ -37,33 +46,27 @@ function InitTextSubstituteMap() { function HandleText (textObject) { - if (null != Self._property:Extension and null != Extension.TextHandlers) - { - // TODO: We need to check for both StyleId *and* StyleAsText so we can - // handle custom styles - textHandler = Extension.TextHandlers[textObject.StyleId]; - if (null != textHandler) + // Step through the different ID types ('StyleId' and 'StyleAsText') and + // check for text handlers for this type + for each Name idType in TextHandlers { + handlersForIdType = TextHandlers.@idType; + idValue = textObject.@idType; + if(handlersForIdType.MethodExists(idValue)) { - return Extension.@textHandler(textObject); + return handlersForIdType.@idValue(textObject); } } - - textHandler = TextHandlers[textObject.StyleId]; - if (null != textHandler) - { - return @textHandler(textObject); - } } //$end -function ExpressionTextHandler (textObject) { +function ExpressionTextHandler (this, textObject) { dynam = AddBarObjectInfoToElement(textObject, libmei.Dynam()); AddFormattedText(dynam, textObject); return dynam; } //$end -function PageTitleHandler (textObject) { +function PageTitleHandler (this, textObject) { anchoredText = libmei.AnchoredText(); title = libmei.Title(); if (textObject.StyleId = 'text.system.page_aligned.subtitle') @@ -78,13 +81,15 @@ function PageTitleHandler (textObject) { } //$end -function PageComposerTextHandler (textObject) { +function PageComposerTextHandler (this, textObject) { // 'text.system.page_aligned.composer' - return AddBarObjectInfoToElement(textObject, CreateAnchoredText(textObject)); + anchoredText = libmei.AnchoredText(); + AddFormattedText(anchoredText, textObject); + return anchoredText; } //$end -function TempoTextHandler (textObject) { +function TempoTextHandler (this, textObject) { // 'text.system.tempo' tempo = libmei.Tempo(); AddFormattedText(tempo, textObject); @@ -92,7 +97,7 @@ function TempoTextHandler (textObject) { } //$end -function FiguredBassTextHandler (textObject) { +function FiguredBassTextHandler (this, textObject) { // 'text.staff.space.figuredbass' harm = AddBarObjectInfoToElement(textObject, libmei.Harm()); fb = libmei.Fb(); @@ -102,7 +107,7 @@ function FiguredBassTextHandler (textObject) { } //$end -function CreateAnchoredText (textObj) { +function CreateAnchoredText (this, textObj) { //$module(ExportConverters.mss) anchoredText = libmei.AnchoredText(); AddFormattedText(anchoredText, textObj); @@ -226,8 +231,6 @@ function AddFormattedText (parentElement, textObj) { state.currentText = state.currentText & component; } } - - return parentElement; } PushStyledText(state); @@ -450,7 +453,6 @@ function AppendTextSubstitute (state, substituteName) { substitutedText = score.@substituteName; if (substitutedText = '') { - // TODO: Also check for all-whitespace text return null; } diff --git a/test/sib-test/Run.mss b/test/sib-test/Run.mss index 0bd93c4..ebf5048 100644 --- a/test/sib-test/Run.mss +++ b/test/sib-test/Run.mss @@ -1,70 +1,74 @@ function Run() { - Self._property:libmei = libmei4; - Self._property:sibmei = sibmei4; - sibmei4._property:libmei = libmei; - sibmei.InitGlobals(CreateSparseArray('sibmei4_extension_test')); + Self._property:libmei = libmei4; + Self._property:sibmei = sibmei4; + sibmei4._property:libmei = libmei; + sibmei.InitGlobals(CreateSparseArray('sibmei4_extension_test')); - plugins = Sibelius.Plugins; + plugins = Sibelius.Plugins; - if (not (plugins.Contains('Test'))) { - Sibelius.MessageBox('Please install the Test plugin!'); - ExitPlugin(); - } + if (not (plugins.Contains('Test'))) + { + Sibelius.MessageBox('Please install the Test plugin!'); + ExitPlugin(); + } - // In an attempt to minimize the chance of Sibelius crashing randomly, close - // all scores before running the tests. - if (not Sibelius.YesNoMessageBox( - 'All open scores will be closed without saving before running the tests. Continue?' - )) { - ExitPlugin(); - } + // In an attempt to minimize the chance of Sibelius crashing randomly, close + // all scores before running the tests. + if (not Sibelius.YesNoMessageBox( + 'All open scores will be closed without saving before running the tests. Continue?' + )) + { + ExitPlugin(); + } - Sibelius.CloseAllWindows(false); - Sibelius.New(); + Sibelius.CloseAllWindows(false); + Sibelius.New(); - Self._property:pluginDir = GetPluginFolder('sibmei4.plg'); - Self._property:tempDir = CreateNewTempDir(); - Self._property:_SibTestFileDirectory = pluginDir & 'sibmeiTestSibs' - & Sibelius.PathSeparator; + Self._property:pluginDir = GetPluginFolder('sibmei4.plg'); + Self._property:tempDir = CreateNewTempDir(); + Self._property:_SibTestFileDirectory = pluginDir & 'sibmeiTestSibs' & Sibelius.PathSeparator; - suite = Test.Suite('Sibelius MEI Exporter', Self, sibmei); + suite = Test.Suite('Sibelius MEI Exporter', Self, sibmei); - suite - .AddModule('TestExportConverters') - .AddModule('TestLibmei') - .AddModule('TestExportGenerators') - .AddModule('TestUtilities') + suite + .AddModule('TestExportConverters') + .AddModule('TestLibmei') + .AddModule('TestExportGenerators') + .AddModule('TestUtilities') ; - suite.Run(); + suite.Run(); - sibmei4_batch_sib.ConvertFolder(Sibelius.GetFolder(_SibTestFileDirectory), extensions); + sibmei4_batch_sib.ConvertFolder( + Sibelius.GetFolder(_SibTestFileDirectory), + CreateSparseArray('sibmei4_extension_test') + ); - // We do not 'clean up' with Sibelius.CloseAllWindows() here because it - // sometimes causes Sibelius crashes. - Trace('Run `npm test` to test output written to ' & _SibTestFileDirectory); + // We do not 'clean up' with Sibelius.CloseAllWindows() here because it + // sometimes causes Sibelius crashes. + Trace('Run `npm test` to test output written to ' & _SibTestFileDirectory); } //$end function GetPluginFolder(plgName) { - //$module(Run.mss) - plgNameLength = Length(plgName); - - for each plugin in Sibelius.Plugins - { - path = plugin.File; - i = Length(path) - 2; - while (i >= 0 and CharAt(path, i) != Sibelius.PathSeparator) { - i = i - 1; - } + //$module(Run.mss) + plgNameLength = Length(plgName); + + for each plugin in Sibelius.Plugins + { + path = plugin.File; + i = Length(path) - 2; + while (i >= 0 and CharAt(path, i) != Sibelius.PathSeparator) { + i = i - 1; + } - if (Substring(path, i + 1) = plgName) { - return Substring(path, 0, i + 1); + if (Substring(path, i + 1) = plgName) { + return Substring(path, 0, i + 1); + } } - } - Sibelius.MessageBox(plgName & ' was not found'); - ExitPlugin(); + Sibelius.MessageBox(plgName & ' was not found'); + ExitPlugin(); } //$end From 7ec011c69653df489201d667161ce7acb909d5b4 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 14 Sep 2020 14:53:40 +0200 Subject: [PATCH 54/83] Follow convention to always use Self._property: prefix for global variables --- src/TextHandler.mss | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/TextHandler.mss b/src/TextHandler.mss index 01ee03f..36fe859 100644 --- a/src/TextHandler.mss +++ b/src/TextHandler.mss @@ -48,8 +48,9 @@ function InitTextSubstituteMap() { function HandleText (textObject) { // Step through the different ID types ('StyleId' and 'StyleAsText') and // check for text handlers for this type - for each Name idType in TextHandlers { - handlersForIdType = TextHandlers.@idType; + textHandlers = Self._property:TextHandlers; + for each Name idType in textHandlers { + handlersForIdType = textHandlers.@idType; idValue = textObject.@idType; if(handlersForIdType.MethodExists(idValue)) { From de80cae6152bca9ca638736c6982fb344f55c902 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 15 Sep 2020 15:35:50 +0200 Subject: [PATCH 55/83] Updated documentation --- Extensions.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Extensions.md b/Extensions.md index 1937ac4..ebbe520 100644 --- a/Extensions.md +++ b/Extensions.md @@ -78,6 +78,17 @@ Register your symbol and text handlers in this function. `InitSibmeiExtension()` method instead of defining them locally in the symbol handler methods. +* **`HandleControlEvent()`**: One of the two basic symbol handling functions. + Takes a SymbolItem and a value from a template dictionary and adds the symbol + to ``. + +* **`HandleModifier()`**: The other basic symbol handling function. Takes the + SymbolItem and a valie from a template dictionary and adds the symbol as a + child of ``, e.g. for articulations. + +* **`AddFormattedText()`**: A method used for the export of text styles. It + adds the content of TextWithFormatting to the element. + ## Example An example extension plugin can be found From bd53c3271040e839c3523bc6b42cccf29d45669a Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 15 Sep 2020 14:19:38 +0200 Subject: [PATCH 56/83] Add text to extensions test & AddFormattedText() available to extensions --- lib/sibmei4_extension_test.plg | 12 ++++++++++++ src/Extensions.mss | 5 +++++ test/mocha/test-extensions.js | 5 +++++ test/sibmeiTestSibs/extensions.sib | Bin 42833 -> 43342 bytes 4 files changed, 22 insertions(+) diff --git a/lib/sibmei4_extension_test.plg b/lib/sibmei4_extension_test.plg index 488ef27..297727f 100644 --- a/lib/sibmei4_extension_test.plg +++ b/lib/sibmei4_extension_test.plg @@ -20,6 +20,12 @@ ) ), Self); + api.RegisterTextHandlers(CreateDictionary( + 'StyleAsText', CreateDictionary( + 'My text', 'HandleMyText' + ) + ), Self); + }" HandleMySymbol "(self, obj) { @@ -28,4 +34,10 @@ libmei.AddAttribute(symbolElement, 'type', 'myRedType'); } }" + + HandleMyText "(self, textObj) { + textElement = libmei.AnchoredText(); + api.AddFormattedText(textElement, textObj); + return textElement; + }" } diff --git a/src/Extensions.mss b/src/Extensions.mss index 9fa92fa..7679cbe 100644 --- a/src/Extensions.mss +++ b/src/Extensions.mss @@ -149,6 +149,7 @@ function CreateApiObject () { apiObject.SetMethod('MeiFactory', Self, 'ExtensionAPI_MeiFactory'); apiObject.SetMethod('HandleControlEvent', Self, 'HandleControlEvent'); apiObject.SetMethod('HandleModifier', Self, 'HandleModifier'); + apiObject.SetMethod('AddFormattedText', Self, 'ExtensionAPI_AddFormattedText'); return apiObject; } //$end @@ -163,3 +164,7 @@ function ExtensionAPI_RegisterTextHandlers (this, textHandlerDict, plugin) { function ExtensionAPI_MeiFactory (this, templateObject) { MeiFactory(templateObject); } //$end + +function ExtensionAPI_AddFormattedText (this, parentElement, textObj) { + AddFormattedText (parentElement, textObj); +} //$end diff --git a/test/mocha/test-extensions.js b/test/mocha/test-extensions.js index 86e577c..ccda4fd 100644 --- a/test/mocha/test-extensions.js +++ b/test/mocha/test-extensions.js @@ -7,6 +7,7 @@ const utils = require('./utils'); describe("Extensions", function() { const mei = utils.getTestMeiDom('extensions.mei'); const symbols = xpath.evaluateXPath('//*:symbol', mei); + const text = xpath.evaluateXPath('//*:anchoredText', mei); it("exports custom symbols", function() { utils.assertAttrValueFormat(symbols, 'fontfam', 'myCustomFont'); @@ -22,4 +23,8 @@ describe("Extensions", function() { assert.strictEqual(String(i + 1), measure.getAttribute("n"), 'test file has 1 symbol per measure'); } }); + + it("exports custom text by name", function(){ + assert.notStrictEqual(text.length, 0 ,"custom is missing"); + }); }); diff --git a/test/sibmeiTestSibs/extensions.sib b/test/sibmeiTestSibs/extensions.sib index c61278e64bbbe1a29416d5fa0dded2a7c04087b3..74aaba9e3e2407b0dbba26e9945b74d4bd32a6a3 100644 GIT binary patch literal 43342 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

qk65$qq+>&f^rpt zKI%dGiPWOGKYUw3(P?uoKg3kmb;QK}NM*9&$HT=H<4Y7QC!GXXBuDyt{eJOoNZ5I? z&Q^;lHj`VY0w|>M@L~~UI@qux*CF=!Kr))^+vSYA2bEN^kF+Wvv$tKj8Uk_Q@Mnl^ z&1Yo-m><{W;|-h0<)A!#^@Pturm-Ol>!UEw(zM#kLEKkmH0`k8l`Or2n=edq~gTgjLI!s?vv77aWeX1es=`|Cc9#aS-Tvz)VA7v}50 za6++)p8m~abKM(P$YpK-%y_aQA&Kklz#t|7nn{$yQ{72PT!- zEN2e><6%?=xoOuBF9HD+%Dzg~R)C5fV9RluiWqGRGEjxzdc{pi<~Za0sI%NUTl-g^ z@5xsp6bhJ>M~^Ls$SVG`4JpyO$Lr|LR)CAsXlSt-84IBa~CD##=OI1b*Ssp)Y2naZHQ%zA@4Jg!8*&L3c0+ZINA29 z=N8yiVjL~xu8w4k&UFWbyM2j+A|KzG!+#fOcL$>dtzEZ}F4V*opGr7iVOB)h$fLUO FM{ei{LIwZ; From 5f7a921a58a2cb0deb053328d046a839e4c92b19 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Wed, 16 Sep 2020 11:19:01 +0200 Subject: [PATCH 57/83] More detailed extension documentation --- Extensions.md | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/Extensions.md b/Extensions.md index ebbe520..32f7832 100644 --- a/Extensions.md +++ b/Extensions.md @@ -12,27 +12,41 @@ them. ### `ExtensionAPIVersion` -A semantic version string specifying for which version of the Sibmei extension -API the extension was written. The current API version can be found in -`GLOBALS.mss`. +A [semantic version string](https://en.wikipedia.org/wiki/Software_versioning#Degree_of_compatibility) specifying for which version of the Sibmei extension +API the extension was written. The current API version of Sibmei can be found in +[`GLOBALS.mss`](https://github.com/music-encoding/sibmei/blob/master/src/GLOBALS.mss). ## Required Methods ### Symbol or Text Handlers -These methods take a Sibelius object as argument and return an MEI element that +The core purpose of an extension is to define symbol and text handlers to export Sibelius objects in custom ways. These handlers take two arguments: + +* `this` (this parameter should be ignored by the extension) +* a Sibelius object (`SymbolItem` or `SystemSymbolitem` for symbol handlers, `Text` and `SystemTextItem` for text handlers) + +A handler should return an MEI element (created using libmei) that Sibmei will append to the `` element. If `null` is returned instead, the Sibelius object will not be exported at all. ### `InitSibmeiExtension()` Sibmei calls this method and passes an API Dictionary as argument (see below). -Register your symbol and text handlers in this function. +Register your symbol and text handlers in this function using `RegisterSymbolHandlers()` and `RegisterTextHandlers()` (see below). + +## API Dictionary + +### Interaction with Sibmei + +Extensions must only interact with Sibmei through the API dictionary passed to `InitSibmeiExtension()`. The functionality provided by the API dictionary is guaranteed to remain backwards compatible with newer releases that retain the same major version number for the `ExtensionAPIVersion`, while Sibmei's core methods may change at any point. -#### API Dictionary Fields +If an extension requires access to functionality that is not exposed by the API dictionary, [create an issue]() or a pull request on GitHub. -* **`libmei`**: A refernce to libmei that can be used to construct and +### API data and methods + +* **`libmei`**: A reference to libmei that can be used to construct and manipulate MEI elements. + * **`RegisterSymbolHandlers()`**: Call this function to make a symbol handler known to Sibmei. To tell Sibelius which symbol to handle, it must be registered by the symbol's `Index` or `Name` properties. For built-in @@ -72,11 +86,20 @@ Register your symbol and text handlers in this function. * **`MeiFactory()`**: A convenience method that takes a template SparseArray as argument and generates an MEI element from it. For detailed information, see - the documentation comments in `Initialize.mss`. + the documentation comments in [`Utilities.mss`](https://github.com/music-encoding/sibmei/blob/master/src/Utilities.mss). It is a good idea to define template dictionaries as global variables in the `InitSibmeiExtension()` method instead of defining them locally in the symbol handler methods. + +* **`HandleControlEvent()`**: Pass this function two arguments: + + * The to be exported `SymbolItem` or `SystemSymbolItem` + * A template suitable for passing to `MeiFactory()` + + `HandleControlEvent()` will take care of creating an element and attaching it to the measure. + +* **`HandleModifier()`** takes the same arguments as `HandleControlEvent()`, but attaches the MEI element to a `` element instead of the `` element. * **`HandleControlEvent()`**: One of the two basic symbol handling functions. Takes a SymbolItem and a value from a template dictionary and adds the symbol @@ -92,4 +115,4 @@ Register your symbol and text handlers in this function. ## Example An example extension plugin can be found -[on GitHub](https://github.com/music-encoding/sibmei/tree/master/lib/sibmei4_extension_test.plg). +[on GitHub](https://github.com/music-encoding/sibmei/blob/master/lib/sibmei4_extension_test.plg). \ No newline at end of file From fa29b17fe2930c78e2dad2613cd89901342063b6 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Tue, 15 Sep 2020 09:00:57 +0200 Subject: [PATCH 58/83] Remove unused XMLIdToObjectMap --- src/ExportGenerators.mss | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 7d63117..0a678a3 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -1307,7 +1307,6 @@ function GenerateStaffGroups (score, barnum) { for each Staff s in score { std = libmei.StaffDef(); - libmei.XMLIdToObjectMap[std._id] = s; libmei.AddAttribute(std, 'n', s.StaffNum); libmei.AddAttribute(std, 'lines', s.InitialInstrumentType.NumStaveLines); From 217458836d34750395f8a7ec64143c3d1bb354e1 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Tue, 15 Sep 2020 10:02:11 +0200 Subject: [PATCH 59/83] Update re-generated libmei Generated from: https://github.com/notengrafik/libmei/tree/19c0cf2e798b8fd586ea1e3ac80fea20060bf129 Awaiting merge of pull request https://github.com/DDMAL/libmei/pull/119 --- lib/libmei4.plg | 1155 +++++++++++++++++++++++------------------------ 1 file changed, 566 insertions(+), 589 deletions(-) diff --git a/lib/libmei4.plg b/lib/libmei4.plg index df1ce3b..9dbbe13 100644 --- a/lib/libmei4.plg +++ b/lib/libmei4.plg @@ -1,6 +1,6 @@ { - + _License "() { return 'Copyright (c) 2011-2015 Andrew Hankinson, Alastair Porter, and Others @@ -24,15 +24,15 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.'; }" - + Arpeg "() { CreateElement('arpeg', null); }" -Attacca "() { - CreateElement('attacca', null); -}" - +Attacca "() { + CreateElement('attacca', null); +}" + BTrem "() { CreateElement('bTrem', null); }" @@ -53,10 +53,10 @@ Bend "() { CreateElement('bend', null); }" -BracketSpan "() { - CreateElement('bracketSpan', null); -}" - +BracketSpan "() { + CreateElement('bracketSpan', null); +}" + Breath "() { CreateElement('breath', null); }" @@ -73,10 +73,10 @@ Gliss "() { CreateElement('gliss', null); }" -GraceGrp "() { - CreateElement('graceGrp', null); -}" - +GraceGrp "() { + CreateElement('graceGrp', null); +}" + Hairpin "() { CreateElement('hairpin', null); }" @@ -89,14 +89,14 @@ HarpPedal "() { CreateElement('harpPedal', null); }" -Lv "() { - CreateElement('lv', null); -}" - -MNum "() { - CreateElement('mNum', null); -}" - +Lv "() { + CreateElement('lv', null); +}" + +MNum "() { + CreateElement('mNum', null); +}" + MRest "() { CreateElement('mRest', null); }" @@ -133,14 +133,14 @@ MultiRpt "() { CreateElement('multiRpt', null); }" -OLayer "() { - CreateElement('oLayer', null); -}" - -OStaff "() { - CreateElement('oStaff', null); -}" - +OLayer "() { + CreateElement('oLayer', null); +}" + +OStaff "() { + CreateElement('oStaff', null); +}" + Octave "() { CreateElement('octave', null); }" @@ -202,13 +202,13 @@ Rdg "() { }" Sp "() { - CreateElement('sp', null); -}" - -StageDir "() { - CreateElement('stageDir', null); -}" - + CreateElement('sp', null); +}" + +StageDir "() { + CreateElement('stageDir', null); +}" + Abbr "() { CreateElement('abbr', null); }" @@ -225,10 +225,10 @@ Corr "() { CreateElement('corr', null); }" -CpMark "() { - CreateElement('cpMark', null); -}" - +CpMark "() { + CreateElement('cpMark', null); +}" + Damage "() { CreateElement('damage', null); }" @@ -249,10 +249,10 @@ HandShift "() { CreateElement('handShift', null); }" -MetaMark "() { - CreateElement('metaMark', null); -}" - +MetaMark "() { + CreateElement('metaMark', null); +}" + Orig "() { CreateElement('orig', null); }" @@ -321,14 +321,14 @@ Tr "() { CreateElement('tr', null); }" -Fing "() { - CreateElement('fing', null); -}" - -FingGrp "() { - CreateElement('fingGrp', null); -}" - +Fing "() { + CreateElement('fing', null); +}" + +FingGrp "() { + CreateElement('fingGrp', null); +}" + Expression "() { CreateElement('expression', null); }" @@ -345,22 +345,22 @@ ItemList "() { CreateElement('itemList', null); }" -Manifestation "() { - CreateElement('manifestation', null); -}" - -ManifestationList "() { - CreateElement('manifestationList', null); -}" - -GenDesc "() { - CreateElement('genDesc', null); -}" - -GenState "() { - CreateElement('genState', null); -}" - +Manifestation "() { + CreateElement('manifestation', null); +}" + +ManifestationList "() { + CreateElement('manifestationList', null); +}" + +GenDesc "() { + CreateElement('genDesc', null); +}" + +GenState "() { + CreateElement('genState', null); +}" + ChordDef "() { CreateElement('chordDef', null); }" @@ -389,9 +389,9 @@ AccessRestrict "() { CreateElement('accessRestrict', null); }" -Acquisition "() { - CreateElement('acquisition', null); -}" +Acquisition "() { + CreateElement('acquisition', null); +}" AltId "() { CreateElement('altId', null); @@ -405,10 +405,10 @@ Application "() { CreateElement('application', null); }" -AttUsage "() { - CreateElement('attUsage', null); -}" - +AttUsage "() { + CreateElement('attUsage', null); +}" + Audience "() { CreateElement('audience', null); }" @@ -417,14 +417,14 @@ Availability "() { CreateElement('availability', null); }" -Bifolium "() { - CreateElement('bifolium', null); -}" - -Byline "() { - CreateElement('byline', null); -}" - +Bifolium "() { + CreateElement('bifolium', null); +}" + +Byline "() { + CreateElement('byline', null); +}" + CaptureMode "() { CreateElement('captureMode', null); }" @@ -433,14 +433,14 @@ CarrierForm "() { CreateElement('carrierForm', null); }" -CatRel "() { - CreateElement('catRel', null); -}" - -Category "() { - CreateElement('category', null); -}" - +CatRel "() { + CreateElement('catRel', null); +}" + +Category "() { + CreateElement('category', null); +}" + Change "() { CreateElement('change', null); }" @@ -449,18 +449,18 @@ ChangeDesc "() { CreateElement('changeDesc', null); }" -ClassDecls "() { - CreateElement('classDecls', null); +ClassDecls "() { + CreateElement('classDecls', null); }" Classification "() { CreateElement('classification', null); }" -ComponentList "() { - CreateElement('componentList', null); -}" - +ComponentList "() { + CreateElement('componentList', null); +}" + Condition "() { CreateElement('condition', null); }" @@ -481,18 +481,18 @@ Correction "() { CreateElement('correction', null); }" -Cutout "() { - CreateElement('cutout', null); -}" - -Dedication "() { - CreateElement('dedication', null); -}" - -DomainsDecl "() { - CreateElement('domainsDecl', null); -}" - +Cutout "() { + CreateElement('cutout', null); +}" + +Dedication "() { + CreateElement('dedication', null); +}" + +DomainsDecl "() { + CreateElement('domainsDecl', null); +}" + EditionStmt "() { CreateElement('editionStmt', null); }" @@ -505,17 +505,17 @@ EncodingDesc "() { CreateElement('encodingDesc', null); }" -ExhibHist "() { - CreateElement('exhibHist', null); -}" - -ExtMeta "() { - CreateElement('extMeta', null); -}" - -FileChar "() { - CreateElement('fileChar', null); -}" +ExhibHist "() { + CreateElement('exhibHist', null); +}" + +ExtMeta "() { + CreateElement('extMeta', null); +}" + +FileChar "() { + CreateElement('fileChar', null); +}" FileDesc "() { CreateElement('fileDesc', null); @@ -525,14 +525,14 @@ Fingerprint "() { CreateElement('fingerprint', null); }" -FoliaDesc "() { - CreateElement('foliaDesc', null); -}" - -Folium "() { - CreateElement('folium', null); -}" - +FoliaDesc "() { + CreateElement('foliaDesc', null); +}" + +Folium "() { + CreateElement('folium', null); +}" + Hand "() { CreateElement('hand', null); }" @@ -585,10 +585,10 @@ Meter "() { CreateElement('meter', null); }" -Namespace "() { - CreateElement('namespace', null); -}" - +Namespace "() { + CreateElement('namespace', null); +}" + Normalization "() { CreateElement('normalization', null); }" @@ -601,26 +601,26 @@ OtherChar "() { CreateElement('otherChar', null); }" -Patch "() { - CreateElement('patch', null); -}" - -PerfDuration "() { - CreateElement('perfDuration', null); -}" - +Patch "() { + CreateElement('patch', null); +}" + +PerfDuration "() { + CreateElement('perfDuration', null); +}" + PerfMedium "() { CreateElement('perfMedium', null); }" -PerfRes "() { - CreateElement('perfRes', null); -}" - -PerfResList "() { - CreateElement('perfResList', null); -}" - +PerfRes "() { + CreateElement('perfRes', null); +}" + +PerfResList "() { + CreateElement('perfResList', null); +}" + PhysDesc "() { CreateElement('physDesc', null); }" @@ -697,18 +697,18 @@ SysReq "() { CreateElement('sysReq', null); }" -TagUsage "() { - CreateElement('tagUsage', null); +TagUsage "() { + CreateElement('tagUsage', null); +}" + +TagsDecl "() { + CreateElement('tagsDecl', null); }" -TagsDecl "() { - CreateElement('tagsDecl', null); +Taxonomy "() { + CreateElement('taxonomy', null); }" -Taxonomy "() { - CreateElement('taxonomy', null); -}" - TermList "() { CreateElement('termList', null); }" @@ -717,10 +717,10 @@ TitleStmt "() { CreateElement('titleStmt', null); }" -TrackConfig "() { - CreateElement('trackConfig', null); -}" - +TrackConfig "() { + CreateElement('trackConfig', null); +}" + TreatHist "() { CreateElement('treatHist', null); }" @@ -745,22 +745,22 @@ Work "() { CreateElement('work', null); }" -WorkList "() { - CreateElement('workList', null); +WorkList "() { + CreateElement('workList', null); +}" + +Refrain "() { + CreateElement('refrain', null); }" -Refrain "() { - CreateElement('refrain', null); -}" - Verse "() { CreateElement('verse', null); }" -Volta "() { - CreateElement('volta', null); -}" - +Volta "() { + CreateElement('volta', null); +}" + Ligature "() { CreateElement('ligature', null); }" @@ -773,6 +773,10 @@ Proport "() { CreateElement('proport', null); }" +Stem "() { + CreateElement('stem', null); +}" + Cc "() { CreateElement('cc', null); }" @@ -841,162 +845,162 @@ Vel "() { CreateElement('vel', null); }" -AccMat "() { - CreateElement('accMat', null); -}" - -AddDesc "() { - CreateElement('addDesc', null); -}" - -Binding "() { - CreateElement('binding', null); -}" - -BindingDesc "() { - CreateElement('bindingDesc', null); -}" - -Catchwords "() { - CreateElement('catchwords', null); -}" - -Collation "() { - CreateElement('collation', null); -}" - -Colophon "() { - CreateElement('colophon', null); -}" - -DecoDesc "() { - CreateElement('decoDesc', null); -}" - -DecoNote "() { - CreateElement('decoNote', null); -}" - -Explicit "() { - CreateElement('explicit', null); -}" - -Foliation "() { - CreateElement('foliation', null); -}" - -Heraldry "() { - CreateElement('heraldry', null); -}" - -Layout "() { - CreateElement('layout', null); -}" - -LayoutDesc "() { - CreateElement('layoutDesc', null); -}" - -Locus "() { - CreateElement('locus', null); -}" - -LocusGrp "() { - CreateElement('locusGrp', null); -}" - -Rubric "() { - CreateElement('rubric', null); -}" - -ScriptDesc "() { - CreateElement('scriptDesc', null); -}" - -ScriptNote "() { - CreateElement('scriptNote', null); -}" - -Seal "() { - CreateElement('seal', null); -}" - -SealDesc "() { - CreateElement('sealDesc', null); -}" - -SecFolio "() { - CreateElement('secFolio', null); -}" - -Signatures "() { - CreateElement('signatures', null); -}" - -Stamp "() { - CreateElement('stamp', null); -}" - -Support "() { - CreateElement('support', null); -}" - -SupportDesc "() { - CreateElement('supportDesc', null); -}" - -TypeDesc "() { - CreateElement('typeDesc', null); -}" - -TypeNote "() { - CreateElement('typeNote', null); -}" - -AddName "() { - CreateElement('addName', null); -}" - -Bloc "() { - CreateElement('bloc', null); -}" - +AccMat "() { + CreateElement('accMat', null); +}" + +AddDesc "() { + CreateElement('addDesc', null); +}" + +Binding "() { + CreateElement('binding', null); +}" + +BindingDesc "() { + CreateElement('bindingDesc', null); +}" + +Catchwords "() { + CreateElement('catchwords', null); +}" + +Collation "() { + CreateElement('collation', null); +}" + +Colophon "() { + CreateElement('colophon', null); +}" + +DecoDesc "() { + CreateElement('decoDesc', null); +}" + +DecoNote "() { + CreateElement('decoNote', null); +}" + +Explicit "() { + CreateElement('explicit', null); +}" + +Foliation "() { + CreateElement('foliation', null); +}" + +Heraldry "() { + CreateElement('heraldry', null); +}" + +Layout "() { + CreateElement('layout', null); +}" + +LayoutDesc "() { + CreateElement('layoutDesc', null); +}" + +Locus "() { + CreateElement('locus', null); +}" + +LocusGrp "() { + CreateElement('locusGrp', null); +}" + +Rubric "() { + CreateElement('rubric', null); +}" + +ScriptDesc "() { + CreateElement('scriptDesc', null); +}" + +ScriptNote "() { + CreateElement('scriptNote', null); +}" + +Seal "() { + CreateElement('seal', null); +}" + +SealDesc "() { + CreateElement('sealDesc', null); +}" + +SecFolio "() { + CreateElement('secFolio', null); +}" + +Signatures "() { + CreateElement('signatures', null); +}" + +Stamp "() { + CreateElement('stamp', null); +}" + +Support "() { + CreateElement('support', null); +}" + +SupportDesc "() { + CreateElement('supportDesc', null); +}" + +TypeDesc "() { + CreateElement('typeDesc', null); +}" + +TypeNote "() { + CreateElement('typeNote', null); +}" + +AddName "() { + CreateElement('addName', null); +}" + +Bloc "() { + CreateElement('bloc', null); +}" + CorpName "() { CreateElement('corpName', null); }" -Country "() { - CreateElement('country', null); -}" - -District "() { - CreateElement('district', null); -}" - -FamName "() { - CreateElement('famName', null); -}" - -ForeName "() { - CreateElement('foreName', null); -}" - -GenName "() { - CreateElement('genName', null); -}" - -GeogFeat "() { - CreateElement('geogFeat', null); -}" - +Country "() { + CreateElement('country', null); +}" + +District "() { + CreateElement('district', null); +}" + +FamName "() { + CreateElement('famName', null); +}" + +ForeName "() { + CreateElement('foreName', null); +}" + +GenName "() { + CreateElement('genName', null); +}" + +GeogFeat "() { + CreateElement('geogFeat', null); +}" + GeogName "() { CreateElement('geogName', null); }" -NameLink "() { - CreateElement('nameLink', null); -}" - +NameLink "() { + CreateElement('nameLink', null); +}" + PeriodName "() { CreateElement('periodName', null); }" @@ -1005,78 +1009,78 @@ PersName "() { CreateElement('persName', null); }" -PostBox "() { - CreateElement('postBox', null); -}" - -PostCode "() { - CreateElement('postCode', null); -}" - -Region "() { - CreateElement('region', null); -}" - -RoleName "() { - CreateElement('roleName', null); -}" - -Settlement "() { - CreateElement('settlement', null); -}" - -Street "() { - CreateElement('street', null); -}" - +PostBox "() { + CreateElement('postBox', null); +}" + +PostCode "() { + CreateElement('postCode', null); +}" + +Region "() { + CreateElement('region', null); +}" + +RoleName "() { + CreateElement('roleName', null); +}" + +Settlement "() { + CreateElement('settlement', null); +}" + +Street "() { + CreateElement('street', null); +}" + StyleName "() { CreateElement('styleName', null); }" -Episema "() { - CreateElement('episema', null); -}" - -HispanTick "() { - CreateElement('hispanTick', null); -}" - -Liquescent "() { - CreateElement('liquescent', null); -}" - -Nc "() { - CreateElement('nc', null); -}" - -NcGrp "() { - CreateElement('ncGrp', null); -}" - -Neume "() { - CreateElement('neume', null); -}" - -Oriscus "() { - CreateElement('oriscus', null); -}" - -Quilisma "() { - CreateElement('quilisma', null); -}" - -SignifLet "() { - CreateElement('signifLet', null); -}" - -Strophicus "() { - CreateElement('strophicus', null); -}" - -Syllable "() { - CreateElement('syllable', null); -}" - +Episema "() { + CreateElement('episema', null); +}" + +HispanTick "() { + CreateElement('hispanTick', null); +}" + +Liquescent "() { + CreateElement('liquescent', null); +}" + +Nc "() { + CreateElement('nc', null); +}" + +NcGrp "() { + CreateElement('ncGrp', null); +}" + +Neume "() { + CreateElement('neume', null); +}" + +Oriscus "() { + CreateElement('oriscus', null); +}" + +Quilisma "() { + CreateElement('quilisma', null); +}" + +SignifLet "() { + CreateElement('signifLet', null); +}" + +Strophicus "() { + CreateElement('strophicus', null); +}" + +Syllable "() { + CreateElement('syllable', null); +}" + AvFile "() { CreateElement('avFile', null); }" @@ -1093,10 +1097,10 @@ Recording "() { CreateElement('recording', null); }" -When "() { - CreateElement('when', null); -}" - +When "() { + CreateElement('when', null); +}" + Ptr "() { CreateElement('ptr', null); }" @@ -1121,18 +1125,18 @@ Address "() { CreateElement('address', null); }" -AmbNote "() { - CreateElement('ambNote', null); -}" - -Ambitus "() { - CreateElement('ambitus', null); -}" - -Analytic "() { - CreateElement('analytic', null); -}" - +AmbNote "() { + CreateElement('ambNote', null); +}" + +Ambitus "() { + CreateElement('ambitus', null); +}" + +Analytic "() { + CreateElement('analytic', null); +}" + Annot "() { CreateElement('annot', null); }" @@ -1165,18 +1169,18 @@ BiblScope "() { CreateElement('biblScope', null); }" -BiblStruct "() { - CreateElement('biblStruct', null); -}" - +BiblStruct "() { + CreateElement('biblStruct', null); +}" + Body "() { CreateElement('body', null); }" -Caesura "() { - CreateElement('caesura', null); -}" - +Caesura "() { + CreateElement('caesura', null); +}" + Caption "() { CreateElement('caption', null); }" @@ -1193,10 +1197,10 @@ CastList "() { CreateElement('castList', null); }" -Cb "() { - CreateElement('cb', null); -}" - +Cb "() { + CreateElement('cb', null); +}" + Chord "() { CreateElement('chord', null); }" @@ -1209,18 +1213,18 @@ ClefGrp "() { CreateElement('clefGrp', null); }" -ColLayout "() { - CreateElement('colLayout', null); -}" - +ColLayout "() { + CreateElement('colLayout', null); +}" + Composer "() { CreateElement('composer', null); }" -Contributor "() { - CreateElement('contributor', null); -}" - +Contributor "() { + CreateElement('contributor', null); +}" + Creation "() { CreateElement('creation', null); }" @@ -1233,26 +1237,26 @@ Date "() { CreateElement('date', null); }" -Dedicatee "() { - CreateElement('dedicatee', null); -}" - -Depth "() { - CreateElement('depth', null); -}" - -Desc "() { - CreateElement('desc', null); -}" - -Dim "() { - CreateElement('dim', null); -}" - -Dimensions "() { - CreateElement('dimensions', null); -}" - +Dedicatee "() { + CreateElement('dedicatee', null); +}" + +Depth "() { + CreateElement('depth', null); +}" + +Desc "() { + CreateElement('desc', null); +}" + +Dim "() { + CreateElement('dim', null); +}" + +Dimensions "() { + CreateElement('dimensions', null); +}" + Dir "() { CreateElement('dir', null); }" @@ -1261,10 +1265,10 @@ Distributor "() { CreateElement('distributor', null); }" -Div "() { - CreateElement('div', null); -}" - +Div "() { + CreateElement('div', null); +}" + Dot "() { CreateElement('dot', null); }" @@ -1285,14 +1289,14 @@ Ending "() { CreateElement('ending', null); }" -Event "() { - CreateElement('event', null); -}" - -EventList "() { - CreateElement('eventList', null); -}" - +Event "() { + CreateElement('event', null); +}" + +EventList "() { + CreateElement('eventList', null); +}" + Expansion "() { CreateElement('expansion', null); }" @@ -1317,14 +1321,14 @@ GrpSym "() { CreateElement('grpSym', null); }" -Head "() { - CreateElement('head', null); -}" - -Height "() { - CreateElement('height', null); -}" - +Head "() { + CreateElement('head', null); +}" + +Height "() { + CreateElement('height', null); +}" + Identifier "() { CreateElement('identifier', null); }" @@ -1349,10 +1353,10 @@ Label "() { CreateElement('label', null); }" -LabelAbbr "() { - CreateElement('labelAbbr', null); -}" - +LabelAbbr "() { + CreateElement('labelAbbr', null); +}" + Layer "() { CreateElement('layer', null); }" @@ -1365,10 +1369,10 @@ Lb "() { CreateElement('lb', null); }" -Lg "() { - CreateElement('lg', null); -}" - +Lg "() { + CreateElement('lg', null); +}" + Librettist "() { CreateElement('librettist', null); }" @@ -1385,10 +1389,10 @@ Mei "() { CreateElement('mei', null); }" -Monogr "() { - CreateElement('monogr', null); -}" - +Monogr "() { + CreateElement('monogr', null); +}" + Music "() { CreateElement('music', null); }" @@ -1405,10 +1409,10 @@ Num "() { CreateElement('num', null); }" -Ornam "() { - CreateElement('ornam', null); -}" - +Ornam "() { + CreateElement('ornam', null); +}" + P "() { CreateElement('p', null); }" @@ -1473,14 +1477,14 @@ RelatedItem "() { CreateElement('relatedItem', null); }" -Relation "() { - CreateElement('relation', null); -}" - -RelationList "() { - CreateElement('relationList', null); -}" - +Relation "() { + CreateElement('relation', null); +}" + +RelationList "() { + CreateElement('relationList', null); +}" + Rend "() { CreateElement('rend', null); }" @@ -1533,10 +1537,10 @@ Space "() { CreateElement('space', null); }" -Speaker "() { - CreateElement('speaker', null); -}" - +Speaker "() { + CreateElement('speaker', null); +}" + Sponsor "() { CreateElement('sponsor', null); }" @@ -1561,18 +1565,18 @@ Syl "() { CreateElement('syl', null); }" -Symbol "() { - CreateElement('symbol', null); -}" - +Symbol "() { + CreateElement('symbol', null); +}" + Tempo "() { CreateElement('tempo', null); }" -Term "() { - CreateElement('term', null); -}" - +Term "() { + CreateElement('term', null); +}" + TextLang "() { CreateElement('textLang', null); }" @@ -1585,36 +1589,36 @@ TitlePage "() { CreateElement('titlePage', null); }" -TitlePart "() { - CreateElement('titlePart', null); -}" - -Width "() { - CreateElement('width', null); -}" - -Barre "() { - CreateElement('barre', null); -}" - -Argument "() { - CreateElement('argument', null); -}" - +TitlePart "() { + CreateElement('titlePart', null); +}" + +Width "() { + CreateElement('width', null); +}" + +Barre "() { + CreateElement('barre', null); +}" + +Argument "() { + CreateElement('argument', null); +}" + Back "() { CreateElement('back', null); }" -Epigraph "() { - CreateElement('epigraph', null); +Epigraph "() { + CreateElement('epigraph', null); }" Front "() { CreateElement('front', null); }" -Imprimatur "() { - CreateElement('imprimatur', null); +Imprimatur "() { + CreateElement('imprimatur', null); }" L "() { @@ -1629,18 +1633,18 @@ List "() { CreateElement('list', null); }" -Q "() { - CreateElement('q', null); -}" - +Q "() { + CreateElement('q', null); +}" + Quote "() { CreateElement('quote', null); }" -Seg "() { - CreateElement('seg', null); -}" - +Seg "() { + CreateElement('seg', null); +}" + AnchoredText "() { CreateElement('anchoredText', null); }" @@ -1653,41 +1657,40 @@ Line "() { CreateElement('line', null); }" -Mapping "() { - CreateElement('mapping', null); -}" - -PropName "() { - CreateElement('propName', null); -}" - -PropValue "() { - CreateElement('propValue', null); -}" - -SymName "() { - CreateElement('symName', null); -}" - -SymProp "() { - CreateElement('symProp', null); -}" - -SymbolDef "() { - CreateElement('symbolDef', null); -}" +Mapping "() { + CreateElement('mapping', null); +}" + +PropName "() { + CreateElement('propName', null); +}" + +PropValue "() { + CreateElement('propValue', null); +}" + +SymName "() { + CreateElement('symName', null); +}" + +SymProp "() { + CreateElement('symProp', null); +}" + +SymbolDef "() { + CreateElement('symbolDef', null); +}" SymbolTable "() { CreateElement('symbolTable', null); }" - + Initialize "() { tree_doc = CreateSparseArray(); flat_doc = CreateDictionary(); id_incr = 0; - Self._property:XMLIdToObjectMap = CreateDictionary(); Self._property:MEIDocument = tree_doc; Self._property:MEIFlattened = flat_doc; Self._property:MEIID = id_incr; @@ -1698,7 +1701,6 @@ Initialize "() { commentObj.text = comment; return commentObj; }" - CreateElement "(tagname, orig_id) { element = CreateDictionary( 'name', tagname, @@ -1723,7 +1725,6 @@ CreateElement "(tagname, orig_id) { return element; }" - GetChildren "(element) { c = CreateSparseArray(); for each child_id in element.children { @@ -1732,17 +1733,23 @@ GetChildren "(element) { } return c; }" - SetChildren "(element, childarr) { element.children = childarr; }" - +AddChildAtPosition "(element, child, position) { + AddChild(element, child); + c = element.children; + // shift all children that are at a higher index than `position` + for i = c.Length - 1 to position step -1 { + c[i] = c[i - 1]; + } + element.children[position] = child._id; +}" AddChild "(element, child) { cid = child._id; child._parent = element._id; element.children.Push(cid); }" - RemoveChild "(element, child) { newarr = CreateSparseArray(); @@ -1756,32 +1763,15 @@ RemoveChild "(element, child) { element.children = newarr; }" - -GetChildById "(element, childid) { - d = Self._property:MEIFlattened; - - for each elid in element.children - { - if (elid = childid) - { - return d[elid]; - } - } - - return False; -}" - GetAttributes "(element) { return element.attrs; }" - AddAttribute "(element, attrname, attrval) { a = element.attrs; // check and replace any newlines val = _encodeEntities(attrval); a[attrname] = val; }" - AddAttributeValue "(element, attrname, attrval) { // appends a value to an existing attribute. Used, for example, // in appending multiple articulations to @artic on note. @@ -1800,7 +1790,6 @@ AddAttributeValue "(element, attrname, attrval) { element.attrs[attrname] = val; }" - GetAttribute "(element, attrname) { attrs = element.attrs; if (attrs.PropertyExists(attrname)) @@ -1812,7 +1801,6 @@ GetAttribute "(element, attrname) { return False; } }" - SetAttributes "(element, new_attrs) { //sets all attributes, wiping out any previous ones element.attrs = CreateDictionary(); @@ -1823,11 +1811,9 @@ SetAttributes "(element, new_attrs) { AddAttribute(element, a.Name, a.Value); } }" - GetId "(element) { return element._id; }" - SetId "(element, value) { olddict = Self._property:MEIFlattened; oldid = element._id; @@ -1837,7 +1823,6 @@ SetId "(element, value) { newdict[value] = element; Self._property:MEIFlattened = newdict; }" - RemoveAttribute "(element, attrname) { // since there are no delete functions // for dictionaries, we set the attribute @@ -1848,19 +1833,15 @@ RemoveAttribute "(element, attrname) { GetName "(element) { return element.name; }" - SetText "(element, val) { element.text = _encodeEntities(val); }" - GetText "(element) { return element.text; }" - SetTail "(element, val) { element.tail = _encodeEntities(val); }" - GetTail "(element) { return element.tail; }" @@ -1869,7 +1850,6 @@ GetTail "(element) { // cleans up Self._property:MEIFlattened = CreateDictionary(); Self._property:MEIDocument = CreateSparseArray(); - Self._property:XMLIdToObjectMap = CreateDictionary(); Self._property:MEIID = 0; }" @@ -2073,7 +2053,7 @@ GetTail "(element) { meiDocumentToFile "(meidoc, filename) { meiout = _exportMeiDocument(meidoc); if (Sibelius.CreateTextFile(filename)) { - return Sibelius.AppendTextFile(filename, meiout, 1); + return Sibelius.AppendTextFile(filename, meiout, true); } else { return false; } @@ -2087,7 +2067,6 @@ GetTail "(element) { return res; }" - popMode "(arr) { if (arr.Length > 0) { return arr.Pop(); @@ -2096,7 +2075,6 @@ GetTail "(element) { return 15; } }" - _encodeEntities "(string) { /* @@ -2124,11 +2102,10 @@ GetTail "(element) { return string; }" - _xmlImport "(filename) { /* Based on the Quick-n-Dirty XML parser at - http://www.javaworld.com/javatips/jw-javatip128.html + https://www.infoworld.com/article/2077493/java-tip-128--create-a-quick-and-dirty-xml-parser.html */ xmlinput = Sibelius.ReadTextFile(filename, true); meidoc = CreateSparseArray(); From 09b0c07666d7d4b31155f17daff8019676173e66 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Tue, 15 Sep 2020 10:04:13 +0200 Subject: [PATCH 60/83] Change position of according to schema --- src/ExportGenerators.mss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 0a678a3..3cd1f46 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -1828,7 +1828,8 @@ function GenerateSmuflAltsym (glyphnum, glyphname) { if (Self._property:SymbolTable = null) { symbolTable = libmei.SymbolTable(); - libmei.AddChild(Self._property:MainScoreDef, symbolTable); + scoreDef = Self._property:MainScoreDef; + libmei.AddChildAtPosition(scoreDef, symbolTable, 0); Self._property:SymbolTable = symbolTable; } symbolTable = Self._property:SymbolTable; From 2391fc474695bd19ad4adde1b2c2b6c122a5ba97 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Tue, 15 Sep 2020 11:56:29 +0200 Subject: [PATCH 61/83] Fix schema validation problems --- src/ExportGenerators.mss | 4 ++++ src/TextHandler.mss | 17 ++++++++++++++--- src/Utilities.mss | 6 +++++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 3cd1f46..3c5476b 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -1843,6 +1843,10 @@ function GenerateSmuflAltsym (glyphnum, glyphname) { libmei.AddAttribute(symbol, 'glyph.auth', 'smufl'); libmei.AddAttribute(symbol, 'glyph.num', glyphnum); libmei.AddAttribute(symbol, 'glyph.name', glyphname); + // Add x/y attributes to satisfy some Schematron rules + libmei.AddAttribute(symbol, 'x', '0'); + libmei.AddAttribute(symbol, 'y', '0'); + symbolIds[glyphnum] = symbolDef._id; } diff --git a/src/TextHandler.mss b/src/TextHandler.mss index 36fe859..4413d3d 100644 --- a/src/TextHandler.mss +++ b/src/TextHandler.mss @@ -26,7 +26,9 @@ function InitTextSubstituteMap() { return CreateDictionary( 'Title', CreateSparseArray('Title'), 'Subtitle', CreateSparseArray('Title', CreateDictionary('type', 'subordinate')), - 'Dedication', CreateSparseArray('Dedication'), + // is only allowed on and , so use + // generic element + 'Dedication', CreateSparseArray('Seg', CreateDictionary('type', 'Dedication')), // , , , and // are only allowed in a few places, e.g. metadata or title pages. // We therfore use more generic elements @@ -92,7 +94,7 @@ function PageComposerTextHandler (this, textObject) { function TempoTextHandler (this, textObject) { // 'text.system.tempo' - tempo = libmei.Tempo(); + tempo = AddBarObjectInfoToElement(textObject, libmei.Tempo()); AddFormattedText(tempo, textObject); return tempo; } //$end @@ -120,7 +122,16 @@ function AddFormattedText (parentElement, textObj) { textWithFormatting = textObj.TextWithFormatting; if (textWithFormatting.NumChildren < 2 and CharAt(textWithFormatting[0], 0) != '\\') { - libmei.SetText(parentElement, textObj.Text); + if (parentElement.name = 'div') + { + p = libmei.P(); + libmei.SetText(p, textObj.Text); + libmei.AddChild(parentElement, p); + } + else + { + libmei.SetText(parentElement, textObj.Text); + } return parentElement; } diff --git a/src/Utilities.mss b/src/Utilities.mss index b544c9f..ee80539 100644 --- a/src/Utilities.mss +++ b/src/Utilities.mss @@ -311,7 +311,11 @@ function AddBarObjectInfoToElement (bobj, element) { } } - libmei.AddAttribute(element, 'staff', bar.ParentStaff.StaffNum); + if (bar.ParentStaff.StaffNum > 0) + { + // Only add @staff if this is not attached to the SystemStaff + libmei.AddAttribute(element, 'staff', bar.ParentStaff.StaffNum); + } libmei.AddAttribute(element, 'layer', voicenum); if (bobj.Type = 'Line') From 62cfd4a4ffef516eece2b6f6be826b699f8c69f3 Mon Sep 17 00:00:00 2001 From: Anna Plaksin Date: Tue, 22 Sep 2020 10:27:50 +0200 Subject: [PATCH 62/83] Deleted doubled function descriptions --- Extensions.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/Extensions.md b/Extensions.md index 32f7832..d64a25d 100644 --- a/Extensions.md +++ b/Extensions.md @@ -101,18 +101,10 @@ If an extension requires access to functionality that is not exposed by the API * **`HandleModifier()`** takes the same arguments as `HandleControlEvent()`, but attaches the MEI element to a `` element instead of the `` element. -* **`HandleControlEvent()`**: One of the two basic symbol handling functions. - Takes a SymbolItem and a value from a template dictionary and adds the symbol - to ``. - -* **`HandleModifier()`**: The other basic symbol handling function. Takes the - SymbolItem and a valie from a template dictionary and adds the symbol as a - child of ``, e.g. for articulations. - * **`AddFormattedText()`**: A method used for the export of text styles. It adds the content of TextWithFormatting to the element. ## Example An example extension plugin can be found -[on GitHub](https://github.com/music-encoding/sibmei/blob/master/lib/sibmei4_extension_test.plg). \ No newline at end of file +[on GitHub](https://github.com/music-encoding/sibmei/blob/master/lib/sibmei4_extension_test.plg). From 2689419872a05b3f96d54e5154ec4994b6dcba89 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 22 Sep 2020 11:14:43 +0200 Subject: [PATCH 63/83] Added application info for chosen extensions --- src/ExportGenerators.mss | 14 ++++++++++++++ src/Extensions.mss | 3 +++ 2 files changed, 17 insertions(+) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 3c5476b..65b84e5 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -121,6 +121,20 @@ function GenerateApplicationInfo () { libmei.AddChild(plgapp, plgname); libmei.AddChild(appI, plgapp); + if (ChosenExtensions) + { + for each Pair ext in ChosenExtensions + { + extapp = libmei.Application(); + libmei.SetId(extapp, ext.Name); + libmei.AddAttribute(extapp, 'type', 'extension'); + extName = libmei.Name(); + libmei.SetText(extName, ext.Value); + libmei.AddChild(extapp, extName); + libmei.AddChild(appI,extapp); + } + } + return appI; } //$end diff --git a/src/Extensions.mss b/src/Extensions.mss index 7679cbe..b17db95 100644 --- a/src/Extensions.mss +++ b/src/Extensions.mss @@ -138,6 +138,9 @@ function InitExtensions (extensions) { @plgName.InitSibmeiExtension(apiObject); } + // store chosenExtensions as global to add application info + Self._property:ChosenExtensions = chosenExtensions; + return true; } //$end From 1505764eaf9dba2321e67a4ceeb753d320ce8553 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Wed, 30 Sep 2020 14:00:36 +0200 Subject: [PATCH 64/83] Fixed storage of extension name --- src/Extensions.mss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Extensions.mss b/src/Extensions.mss index b17db95..3deb84e 100644 --- a/src/Extensions.mss +++ b/src/Extensions.mss @@ -127,7 +127,8 @@ function InitExtensions (extensions) { } else { for each plgName in extensions { - chosenExtensions[plgName] = AvailableExtensions[plgName]; + // Attention, choose AvailableExtensions with .@ + chosenExtensions[plgName] = AvailableExtensions.@plgName; } } From b75c4748b633589513b9bb726841eca9bae0463d Mon Sep 17 00:00:00 2001 From: annplaksin Date: Mon, 5 Oct 2020 10:17:50 +0200 Subject: [PATCH 65/83] Improved readability --- src/ExportGenerators.mss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 65b84e5..b400b82 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -121,9 +121,9 @@ function GenerateApplicationInfo () { libmei.AddChild(plgapp, plgname); libmei.AddChild(appI, plgapp); - if (ChosenExtensions) + if (Self._property:ChosenExtensions) { - for each Pair ext in ChosenExtensions + for each Pair ext in Self._property:ChosenExtensions { extapp = libmei.Application(); libmei.SetId(extapp, ext.Name); From 896d4362f4fc92ec285374d0cb36ab60ab4c969a Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 1 Feb 2021 19:17:29 +0100 Subject: [PATCH 66/83] Branch-independent links in extension documentation --- Extensions.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Extensions.md b/Extensions.md index d64a25d..cce943a 100644 --- a/Extensions.md +++ b/Extensions.md @@ -14,7 +14,7 @@ them. A [semantic version string](https://en.wikipedia.org/wiki/Software_versioning#Degree_of_compatibility) specifying for which version of the Sibmei extension API the extension was written. The current API version of Sibmei can be found in -[`GLOBALS.mss`](https://github.com/music-encoding/sibmei/blob/master/src/GLOBALS.mss). +[`GLOBALS.mss`](./src/GLOBALS.mss). ## Required Methods @@ -23,7 +23,7 @@ API the extension was written. The current API version of Sibmei can be found in The core purpose of an extension is to define symbol and text handlers to export Sibelius objects in custom ways. These handlers take two arguments: * `this` (this parameter should be ignored by the extension) -* a Sibelius object (`SymbolItem` or `SystemSymbolitem` for symbol handlers, `Text` and `SystemTextItem` for text handlers) +* a Sibelius object (`SymbolItem` or `SystemSymbolitem` for symbol handlers, `Text` and `SystemTextItem` for text handlers) A handler should return an MEI element (created using libmei) that Sibmei will append to the `` element. If `null` is returned instead, @@ -40,7 +40,7 @@ Register your symbol and text handlers in this function using `RegisterSymbolHan Extensions must only interact with Sibmei through the API dictionary passed to `InitSibmeiExtension()`. The functionality provided by the API dictionary is guaranteed to remain backwards compatible with newer releases that retain the same major version number for the `ExtensionAPIVersion`, while Sibmei's core methods may change at any point. -If an extension requires access to functionality that is not exposed by the API dictionary, [create an issue]() or a pull request on GitHub. +If an extension requires access to functionality that is not exposed by the API dictionary, [create an issue](https://github.com/music-encoding/sibmei/issues/new) or a pull request on GitHub. ### API data and methods @@ -86,7 +86,7 @@ If an extension requires access to functionality that is not exposed by the API * **`MeiFactory()`**: A convenience method that takes a template SparseArray as argument and generates an MEI element from it. For detailed information, see - the documentation comments in [`Utilities.mss`](https://github.com/music-encoding/sibmei/blob/master/src/Utilities.mss). + the documentation comments in [`Utilities.mss`](./src/Utilities.mss). It is a good idea to define template dictionaries as global variables in the `InitSibmeiExtension()` method instead of defining them locally in the symbol @@ -107,4 +107,4 @@ If an extension requires access to functionality that is not exposed by the API ## Example An example extension plugin can be found -[on GitHub](https://github.com/music-encoding/sibmei/blob/master/lib/sibmei4_extension_test.plg). +[on GitHub](./lib/sibmei4_extension_test.plg). From f41682c4abc2fe1e82f505c501f695418d225d53 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Thu, 4 Feb 2021 10:04:57 +0100 Subject: [PATCH 67/83] Remove dead code Was added in a WIP commit (7ffe10b), but it was never used --- src/ExportProcessors.mss | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/ExportProcessors.mss b/src/ExportProcessors.mss index 051a34a..937d02f 100644 --- a/src/ExportProcessors.mss +++ b/src/ExportProcessors.mss @@ -473,20 +473,6 @@ function ProcessVolta (mnum) { return null; } //$end -function ProcessTremolo (bobj) { - //$module(ExportProcessors.mss) - if (bobj.DoubleTremolos = 0) - { - return null; - } - - Log('Fingered tremolo: ' & bobj.DoubleTremolos); - tremEl = libmei.FTrem(); - libmei.AddAttribute(tremEl, 'beams', bobj.DoubleTremolos); - libmei.AddAttribute(tremEl, 'unitdur'); - -} //$end - function ProcessEndingSlurs (bar) { //$module(ExportProcessors.mss) slur_resolver = Self._property:SlurResolver; From fed5a4add637916188a376053939e67b5ebfe637 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Thu, 4 Feb 2021 11:27:06 +0100 Subject: [PATCH 68/83] Use better name for ControlEvent function and expose it for extensions --- lib/sibmei4_extension_test.plg | 2 +- src/ExportGenerators.mss | 54 +++++++++++++++------------------- src/Extensions.mss | 10 +++++++ src/GLOBALS.mss | 2 +- src/SymbolHandler.mss | 4 +-- src/TextHandler.mss | 6 ++-- src/Utilities.mss | 2 +- 7 files changed, 41 insertions(+), 39 deletions(-) diff --git a/lib/sibmei4_extension_test.plg b/lib/sibmei4_extension_test.plg index 297727f..7c5f800 100644 --- a/lib/sibmei4_extension_test.plg +++ b/lib/sibmei4_extension_test.plg @@ -36,7 +36,7 @@ }" HandleMyText "(self, textObj) { - textElement = libmei.AnchoredText(); + textElement = api.GenerateControlEvent(textObj, 'AnchoredText'); api.AddFormattedText(textElement, textObj); return textElement; }" diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index b400b82..3ca4128 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -1430,6 +1430,12 @@ function GenerateStaffGroups (score, barnum) { return parentstgrp; } //$end +function GenerateControlEvent (bobj, elementName) { + //$module(ExportGenerators.mss) + + return AddControlEventAttributes(bobj, libmei.@elementName()); +} //$end + function GenerateTuplet(tupletObj) { //$module(ExportGenerators.mss) tuplet = libmei.Tuplet(); @@ -1479,36 +1485,34 @@ function GenerateLine (bobj) { { case ('Slur') { - line = libmei.Slur(); + line = GenerateControlEvent(bobj, 'Slur'); slurrend = ConvertSlurStyle(bobj.StyleId); libmei.AddAttribute(line, 'lform', slurrend[1]); } case ('CrescendoLine') { - line = libmei.Hairpin(); + line = GenerateControlEvent(bobj, 'Hairpin'); libmei.AddAttribute(line, 'form', 'cres'); } case ('DiminuendoLine') { - line = libmei.Hairpin(); + line = GenerateControlEvent(bobj, 'Hairpin'); libmei.AddAttribute(line, 'form', 'dim'); } case ('OctavaLine') { - line = libmei.Octave(); + line = GenerateControlEvent(bobj, 'Octave'); octrend = ConvertOctava(bobj.StyleId); libmei.AddAttribute(line, 'dis', octrend[0]); libmei.AddAttribute(line, 'dis.place', octrend[1]); } case ('GlissandoLine') { - line = libmei.Gliss(); + line = GenerateControlEvent(bobj, 'Gliss'); } case ('Trill') { line = GenerateTrill(bobj); - // NB: Return here since the trill already has its properties set. - return line; } case ('Line') { @@ -1519,7 +1523,7 @@ function GenerateLine (bobj) { //brackets case ('bracket') { - line = libmei.Line(); + line = GenerateControlEvent(bobj, 'Line'); bracketType = 'bracket'; //horizontal brackets @@ -1606,7 +1610,7 @@ function GenerateLine (bobj) { //solid vertical line case ('vertical') { - line = libmei.Line(); + line = GenerateControlEvent(bobj, 'Line'); libmei.AddAttribute(line,'form','solid'); libmei.AddAttribute(line,'type','vertical'); } @@ -1618,7 +1622,7 @@ function GenerateLine (bobj) { { if (linecomps[3] = 'vertical') { - line = libmei.Line(); + line = GenerateControlEvent(bobj, 'Line'); libmei.AddAttribute(line,'form','dashed'); libmei.AddAttribute(line,'type','vertical'); } @@ -1626,25 +1630,25 @@ function GenerateLine (bobj) { //dashed horizontal line else { - line = libmei.Line(); + line = GenerateControlEvent(bobj, 'Line'); libmei.AddAttribute(line,'form','dashed'); } } //dotted horizontal line case('dotted') { - line = libmei.Line(); + line = GenerateControlEvent(bobj, 'Line'); libmei.AddAttribute(line,'form','dotted'); } //solid horizontal line case('plain') { - line = libmei.Line(); + line = GenerateControlEvent(bobj, 'Line'); libmei.AddAttribute(line,'form','solid'); } case ('vibrato') { - line = libmei.Line(); + line = GenerateControlEvent(bobj, 'Line'); libmei.AddAttribute(line, 'type', 'vibrato'); libmei.AddAttribute(line, 'form', 'wavy'); libmei.AddAttribute(line, 'place', 'above'); @@ -1654,26 +1658,18 @@ function GenerateLine (bobj) { //To catch diverse line types, set a default default { - line = libmei.Line(); + line = GenerateControlEvent(bobj, 'Line'); } } } } - if (line = null) - { - return null; - } - - line = AddBarObjectInfoToElement(bobj, line); - return line; } //$end function GenerateArpeggio (bobj) { //$module(ExportGenerators.mss) - arpeg = libmei.Arpeg(); orientation = null; switch (bobj.Type) @@ -1711,6 +1707,8 @@ function GenerateArpeggio (bobj) { } } + arpeg = GenerateControlEvent(bobj, 'Arpeg'); + if (orientation = null) { libmei.AddAttribute(arpeg, 'arrow', 'false'); @@ -1729,8 +1727,6 @@ function GenerateArpeggio (bobj) { } } - arpeg = AddBarObjectInfoToElement(bobj, arpeg); - return arpeg; } //$end @@ -1740,7 +1736,7 @@ function GenerateTrill (bobj) { /* There are two types of trills in Sibelius: A line object and a symbol object. This method normalizes both of these. */ - trill = libmei.Trill(); + trill = GenerateControlEvent(bobj, 'Trill'); bar = bobj.ParentBar; obj = GetNoteObjectAtPosition(bobj); @@ -1749,8 +1745,6 @@ function GenerateTrill (bobj) { libmei.AddAttribute(trill, 'startid', '#' & obj._id); } - trill = AddBarObjectInfoToElement(bobj, trill); - return trill; } //$end @@ -1805,13 +1799,11 @@ function GenerateFermata (bobj) { return null; } - fermata = libmei.Fermata(); + fermata = GenerateControlEvent(bobj, 'Fermata'); libmei.AddAttribute(fermata, 'form', 'norm'); libmei.AddAttribute(fermata, 'shape', shape); - fermata = AddBarObjectInfoToElement(bobj, fermata); - return fermata; } //$end diff --git a/src/Extensions.mss b/src/Extensions.mss index 3deb84e..b4c33b0 100644 --- a/src/Extensions.mss +++ b/src/Extensions.mss @@ -154,6 +154,8 @@ function CreateApiObject () { apiObject.SetMethod('HandleControlEvent', Self, 'HandleControlEvent'); apiObject.SetMethod('HandleModifier', Self, 'HandleModifier'); apiObject.SetMethod('AddFormattedText', Self, 'ExtensionAPI_AddFormattedText'); + apiObject.SetMethod('GenerateControlEvent', Self, 'ExtensionAPI_GenerateControlEvent'); + apiObject.SetMethod('AddControlEventAttributes', Self, 'ExtensionAPI_AddControlEventAttributes'); return apiObject; } //$end @@ -172,3 +174,11 @@ function ExtensionAPI_MeiFactory (this, templateObject) { function ExtensionAPI_AddFormattedText (this, parentElement, textObj) { AddFormattedText (parentElement, textObj); } //$end + +function ExtensionAPI_GenerateControlEvent (this, bobj, elementName) { + GenerateControlEvent(bobj, elementName); +} //$end + +function ExtensionAPI_AddControlEventAttributes (this, bobj) { + AddControlEventAttributes(bobj); +} //$end diff --git a/src/GLOBALS.mss b/src/GLOBALS.mss index 10a80b0..0336788 100644 --- a/src/GLOBALS.mss +++ b/src/GLOBALS.mss @@ -1,7 +1,7 @@ Version "4.0.0" PluginName "Sibelius to MEI 4 Exporter" Author "Andrew Hankinson" -ExtensionAPIVersion "1.0.0" +ExtensionAPIVersion "1.1.0" _InitialProgressTitle "Exporting %s to MEI" _ExportFileIsNull "You must specify a file to save." diff --git a/src/SymbolHandler.mss b/src/SymbolHandler.mss index 7898d54..7290bab 100644 --- a/src/SymbolHandler.mss +++ b/src/SymbolHandler.mss @@ -129,7 +129,7 @@ function HandleSymbol (sobj) { symbolHandlers.Name.@symbName(sobj, symbolMap[symbName]); } } - + } //$end function HandleModifier(this, sobj, mapValue){ @@ -158,7 +158,7 @@ function HandleControlEvent(this, sobj, mapValue){ symbol = MeiFactory(mapValue); - symbol = AddBarObjectInfoToElement(sobj, symbol); + symbol = AddControlEventAttributes(sobj, symbol); mlines = Self._property:MeasureObjects; mlines.Push(symbol._id); diff --git a/src/TextHandler.mss b/src/TextHandler.mss index 4413d3d..af0eef4 100644 --- a/src/TextHandler.mss +++ b/src/TextHandler.mss @@ -63,7 +63,7 @@ function HandleText (textObject) { function ExpressionTextHandler (this, textObject) { - dynam = AddBarObjectInfoToElement(textObject, libmei.Dynam()); + dynam = GenerateControlEvent(textObject, 'Dynam'); AddFormattedText(dynam, textObject); return dynam; } //$end @@ -94,7 +94,7 @@ function PageComposerTextHandler (this, textObject) { function TempoTextHandler (this, textObject) { // 'text.system.tempo' - tempo = AddBarObjectInfoToElement(textObject, libmei.Tempo()); + tempo = GenerateControlEvent(textObject, 'Tempo'); AddFormattedText(tempo, textObject); return tempo; } //$end @@ -102,7 +102,7 @@ function TempoTextHandler (this, textObject) { function FiguredBassTextHandler (this, textObject) { // 'text.staff.space.figuredbass' - harm = AddBarObjectInfoToElement(textObject, libmei.Harm()); + harm = GenerateControlEvent(textObject, 'Harm'); fb = libmei.Fb(); libmei.AddChild(harm, fb); ConvertFbFigures(fb, textObject); diff --git a/src/Utilities.mss b/src/Utilities.mss index ee80539..5f3b3bf 100644 --- a/src/Utilities.mss +++ b/src/Utilities.mss @@ -277,7 +277,7 @@ function GetNoteObjectAtPosition (bobj) { return null; } //$end -function AddBarObjectInfoToElement (bobj, element) { +function AddControlEventAttributes (bobj, element) { //$module(Utilities.mss) /* adds timing and position info (tstamps, etc.) to an element. From 466e798e12de2eb34affeec625c1959058aff88c Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Thu, 4 Feb 2021 12:11:41 +0100 Subject: [PATCH 69/83] Update extension documentation and improve some argument names --- Extensions.md | 127 ++++++++++++++++++++++++++------- assets/extension-choice.png | Bin 0 -> 13589 bytes lib/sibmei4_extension_test.plg | 4 +- src/SymbolHandler.mss | 8 +-- 4 files changed, 107 insertions(+), 32 deletions(-) create mode 100644 assets/extension-choice.png diff --git a/Extensions.md b/Extensions.md index cce943a..f3c5567 100644 --- a/Extensions.md +++ b/Extensions.md @@ -1,12 +1,58 @@ # Extension API -Sibmei's extension API is designed to allow defining the export behavior of -custom text styles and symbols or customizing the export behavior of existing -symbols. +With extensions to Sibmei, text objects and symbols can be exported in a customized way. This allows addressing custom symbols and text styles and project specific needs. -Extensions are regular Sibelius plugins written in ManuScript. They must define -specific global data and methods so that Sibmei can find them and interact with -them. +Extensions are regular Sibelius plugins written in ManuScript. When running Sibmei, it scans for extension plugins. Users can choose which extensions to activate when running Sibmei. Multiple extensions can be activated simultaneously. + +![choosing Sibmei extensions](assets/extension-choice.png) + +## Example + +```js +{ + // The `SibmeiExtensionAPIVersion` field must be present so Sibmei can + // recognize compatible extensions + SibmeiExtensionAPIVersion "1.0.0" + + Initialize "() { + // The extension choice dialog will list this extension as + // 'Example extension' (the first argument to to AddToPluginsMenu()). + // Second argument can be `null` because an extension plugin does not need a + // `Run()` method. + AddToPluginsMenu('Example extension', null); + }" + + // InitSibmeiExtension() is the entry point for Sibmei and must be present + // for Sibmei to recognize an extension plugin. + InitSibmeiExtension "(api) { + // It is recommended to register the api and libmei objects as global + // variables: + Self._property:api = api; + Self._property:libmei = api.libmei; + + // Declare which text styles this extension handles + api.RegisterTextHandlers(CreateDictionary( + // Text objects can be matched either by their StyleId or StyleAsText + // property. Here, we match by StyleAsText. + 'StyleAsText', CreateDictionary( + // We want the HandleMyText() method to handle Text objects matching + // textObj.StyleAsText = 'My text' + 'My text', 'HandleMyText' + ) + ), Self); + }" + + HandleMyText "(_, textObj) { + // Create and return an MEI element that Sibmei will append as a child to + // the measure element. + textElement = api.GenerateControlEvent(textObj, 'AnchoredText'); + api.AddFormattedText(textElement, textObj); + return textElement; + }" +} +``` + +See [another example](./lib/sibmei4_extension_test.plg) for code handling symbols. ## Required Data @@ -16,18 +62,22 @@ A [semantic version string](https://en.wikipedia.org/wiki/Software_versioning#De API the extension was written. The current API version of Sibmei can be found in [`GLOBALS.mss`](./src/GLOBALS.mss). +The API is guaranteed to remain backwards compatible with newer releases that retain the same major version number for `ExtensionAPIVersion`. With minor version numbers, new functionality is added while existing functionality remains backwards compatible. + ## Required Methods ### Symbol or Text Handlers -The core purpose of an extension is to define symbol and text handlers to export Sibelius objects in custom ways. These handlers take two arguments: +The core purpose of an extension is to define symbol and text handlers to export Sibelius objects in custom ways. (See `HandleMyText()` in the above [example](#example)) These handlers take two arguments: -* `this` (this parameter should be ignored by the extension) -* a Sibelius object (`SymbolItem` or `SystemSymbolitem` for symbol handlers, `Text` and `SystemTextItem` for text handlers) +* `this`: a Dictionary that is passed for technical reasons and *must be ignored by the extension* +* a Sibelius object (`SymbolItem` or `SystemSymbolitem` for symbol handlers, `Text` or `SystemTextItem` for text handlers) -A handler should return an MEI element (created using libmei) that +A text handler should return an MEI element (created using libmei) that Sibmei will append to the `` element. If `null` is returned instead, -the Sibelius object will not be exported at all. +the object will not be exported. + +A symbol handler should either call the `HandleModifier()` or `HandleControlEvent()` methods. If neither is called, the object will not be exported. Symbol handlers needn't return anything. ### `InitSibmeiExtension()` @@ -38,15 +88,17 @@ Register your symbol and text handlers in this function using `RegisterSymbolHan ### Interaction with Sibmei -Extensions must only interact with Sibmei through the API dictionary passed to `InitSibmeiExtension()`. The functionality provided by the API dictionary is guaranteed to remain backwards compatible with newer releases that retain the same major version number for the `ExtensionAPIVersion`, while Sibmei's core methods may change at any point. - -If an extension requires access to functionality that is not exposed by the API dictionary, [create an issue](https://github.com/music-encoding/sibmei/issues/new) or a pull request on GitHub. +Extensions must only interact with Sibmei through the API dictionary passed to `InitSibmeiExtension()` because Sibmei's core methods may change at any point. If an extension requires access to functionality that is not exposed by the API dictionary, [create an issue](https://github.com/music-encoding/sibmei/issues/new) or a pull request on GitHub. ### API data and methods +The API dictionary exposes the following object: + * **`libmei`**: A reference to libmei that can be used to construct and - manipulate MEI elements. - + manipulate MEI elements. *This dictionary must not be modified.* + +It exposes the following methods that must only be called in the initialization phase: + * **`RegisterSymbolHandlers()`**: Call this function to make a symbol handler known to Sibmei. To tell Sibelius which symbol to handle, it must be registered by the symbol's `Index` or `Name` properties. For built-in @@ -64,7 +116,7 @@ If an extension requires access to functionality that is not exposed by the API ), 'Index', CreateDictionary( myIndex, 'MyCustomSymbolHandler', - myOtherIndex, 'MyCustomSymbolHandler' + myOtherIndex, 'MyCustomSymbolHandler' ) ) ``` @@ -84,27 +136,50 @@ If an extension requires access to functionality that is not exposed by the API `StyleId` and `StyleAsText` instead of `Index` and `Name`. Always use `StyleId` for built-in text styles and `StyleAsText` for custom text styles. +The following methods must only be used by handler methods: + * **`MeiFactory()`**: A convenience method that takes a template SparseArray as argument and generates an MEI element from it. For detailed information, see the documentation comments in [`Utilities.mss`](./src/Utilities.mss). - It is a good idea to define template dictionaries as global variables in the + It is recommended to define template dictionaries as global variables in the `InitSibmeiExtension()` method instead of defining them locally in the symbol handler methods. - + * **`HandleControlEvent()`**: Pass this function two arguments: * The to be exported `SymbolItem` or `SystemSymbolItem` * A template suitable for passing to `MeiFactory()` - `HandleControlEvent()` will take care of creating an element and attaching it to the measure. + `HandleControlEvent()` creates an MEI element and attaches it to the `` element. It returns the element for further manipulation by the extension plugin. -* **`HandleModifier()`** takes the same arguments as `HandleControlEvent()`, but attaches the MEI element to a `` element instead of the `` element. +* **`HandleModifier()`**: Works similarly to `HandleControlEvent()`, but attaches the generated MEI element to a `` element instead of the `` element. -* **`AddFormattedText()`**: A method used for the export of text styles. It - adds the content of TextWithFormatting to the element. +* **`AddFormattedText()`**: Takes arguments: -## Example + * `parentElement`: MEI element that the formatted text nodes should be appended to + * `textObj`: A `Text` or `SystemTextItem` object. Its `TextWithFormatting` property is converted to MEI markup. + +* **`GenerateControlEvent()`**: Takes two arguments: + + * `bobj`: A `BarObject` + * `elementName`: Capitalized MEI element name, e.g. `'Line'`. + + Uses the `elementName` to generate an MEI element and adds applicable control event attributes (see `AddControlEventAttributes`) + +* **`AddControlEventAttributes()`**: Takes two arguments: + + * `bobj`: A `BarObject` + * `element`: An MEI element + + Adds the following control event attributes: -An example extension plugin can be found -[on GitHub](./lib/sibmei4_extension_test.plg). + * `@startid` (if a start object could be identified) and `@tstamp` + * If applicable (e.g. for lines), `@endid` (if an end object could be identifed) and `@tstamp2` + * `@staff` (if object is staff-attached) + * `@layer` + * For lines: + * `@dur.ppq` (unless `Duration` is 0) + * `@startho`, `@startvo`, `@endho`, `@endvo` + * For elements other than lines: + * `@ho`, `@vo` diff --git a/assets/extension-choice.png b/assets/extension-choice.png new file mode 100644 index 0000000000000000000000000000000000000000..e14d1c881035bbb972b0af71327a3dd5add8d83c GIT binary patch literal 13589 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 V*8CFBHc0@e$w(-Q*NYm5{67Ol>x=*Z literal 0 HcmV?d00001 diff --git a/lib/sibmei4_extension_test.plg b/lib/sibmei4_extension_test.plg index 7c5f800..5bc6e23 100644 --- a/lib/sibmei4_extension_test.plg +++ b/lib/sibmei4_extension_test.plg @@ -28,14 +28,14 @@ }" - HandleMySymbol "(self, obj) { + HandleMySymbol "(this, obj) { symbolElement = api.HandleControlEvent(obj, MySymbolTemplate); if (obj.ColorRed = 255) { libmei.AddAttribute(symbolElement, 'type', 'myRedType'); } }" - HandleMyText "(self, textObj) { + HandleMyText "(this, textObj) { textElement = api.GenerateControlEvent(textObj, 'AnchoredText'); api.AddFormattedText(textElement, textObj); return textElement; diff --git a/src/SymbolHandler.mss b/src/SymbolHandler.mss index 7290bab..53781f5 100644 --- a/src/SymbolHandler.mss +++ b/src/SymbolHandler.mss @@ -132,14 +132,14 @@ function HandleSymbol (sobj) { } //$end -function HandleModifier(this, sobj, mapValue){ +function HandleModifier(this, sobj, template){ //$module(SymbolHandler.mss) nobj = GetNoteObjectAtPosition(sobj); if (nobj != null) { - modifier = MeiFactory(mapValue); + modifier = MeiFactory(template); libmei.AddChild(nobj, modifier); } @@ -153,10 +153,10 @@ function HandleModifier(this, sobj, mapValue){ } //$end -function HandleControlEvent(this, sobj, mapValue){ +function HandleControlEvent(this, sobj, template){ //$module(SymbolHandler.mss) - symbol = MeiFactory(mapValue); + symbol = MeiFactory(template); symbol = AddControlEventAttributes(sobj, symbol); mlines = Self._property:MeasureObjects; From 3974fd0d4ffe4829f38d758611478e23302969b9 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 2 Feb 2021 16:17:35 +0100 Subject: [PATCH 70/83] Added basic fermata test --- test/mocha/test-fermatas.js | 14 ++++++++++++++ test/mocha/utils.js | 6 ++++++ test/sibmeiTestSibs/fermatas.sib | Bin 0 -> 40075 bytes 3 files changed, 20 insertions(+) create mode 100644 test/mocha/test-fermatas.js create mode 100644 test/sibmeiTestSibs/fermatas.sib diff --git a/test/mocha/test-fermatas.js b/test/mocha/test-fermatas.js new file mode 100644 index 0000000..a7843db --- /dev/null +++ b/test/mocha/test-fermatas.js @@ -0,0 +1,14 @@ +"use strict"; + +const assert = require('assert'); +const xpath = require('fontoxpath'); +const utils = require('./utils'); + +describe("Fermatas", () => { + const mei = utils.getTestMeiDom('fermatas.mei'); + + it("rests don't have @fermata attributes" , () => { + const rests = xpath.evaluateXPath('//*:rest',mei); + utils.assertHasAttrNot(rests,"fermata"); + }) +}); \ No newline at end of file diff --git a/test/mocha/utils.js b/test/mocha/utils.js index d582664..62d68e5 100644 --- a/test/mocha/utils.js +++ b/test/mocha/utils.js @@ -31,6 +31,12 @@ module.exports = { } }, + assertHasAttrNot: function(elements, attName) { + for (let i = 0; i < elements.length; i += 1) { + assert.strictEqual(elements[i].getAttribute(attName), null, `element ${i} should not have attribute @${attName}`); + } + }, + assertElsHasAttr: function(elements, indices, attName) { for (let i = 0; i < elements.length; i += 1) { const elementDescription = 'element index ' + i + ' (' + elements[i].localName + ')'; diff --git a/test/sibmeiTestSibs/fermatas.sib b/test/sibmeiTestSibs/fermatas.sib new file mode 100644 index 0000000000000000000000000000000000000000..9835c97981a520af7e95dfcace6f8d8f2e0f4105 GIT binary patch literal 40075 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 Date: Tue, 2 Feb 2021 17:24:04 +0100 Subject: [PATCH 71/83] Checking number of exported fermatas in fermata test --- test/mocha/test-fermatas.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/mocha/test-fermatas.js b/test/mocha/test-fermatas.js index a7843db..2fd449e 100644 --- a/test/mocha/test-fermatas.js +++ b/test/mocha/test-fermatas.js @@ -11,4 +11,9 @@ describe("Fermatas", () => { const rests = xpath.evaluateXPath('//*:rest',mei); utils.assertHasAttrNot(rests,"fermata"); }) + + it("all 36 fermatas are exported", () => { + const fermatas = xpath.evaluateXPath('//*:fermata', mei); + assert.strictEqual(fermatas.length, 36, "Not all 36 fermatas were created"); + }) }); \ No newline at end of file From d962e543c02223cb354adb2482372a71f429acfe Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Thu, 4 Feb 2021 07:37:12 +0100 Subject: [PATCH 72/83] WIP fermatas --- src/ExportGenerators.mss | 92 ++++++++++++------------------------- test/mocha/test-fermatas.js | 32 ++++++++++--- 2 files changed, 54 insertions(+), 70 deletions(-) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 3ca4128..0f583f5 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -845,15 +845,19 @@ function GenerateNoteRest (bobj, layer) { libmei.AddAttribute(nr, 'stem.mod', '1slash'); } - if (bobj.GetArticulation(PauseArtic) or bobj.GetArticulation(TriPauseArtic) or bobj.GetArticulation(SquarePauseArtic)) + if (bobj.GetArticulation(PauseArtic)) { - fermata = GenerateFermata(bobj); - if (fermata != null) - { - libmei.AddAttribute(fermata, 'startid', '#' & nr._id); - measureObjs = Self._property:MeasureObjects; - measureObjs.Push(fermata._id); - } + GenerateFermata(bobj, 'curved'); + } + + if (bobj.GetArticulation(TriPauseArtic)) + { + GenerateFermata(bobj, 'angular'); + } + + if (bobj.GetArticulation(SquarePauseArtic)) + { + GenerateFermata(bobj, 'square'); } if (bobj.GetArticulation(StaccatoArtic)) @@ -1225,12 +1229,19 @@ function GenerateBarRest (bobj) { } } - fermata = GenerateFermata(bobj); - if (fermata != null) - { - libmei.AddAttribute(fermata, 'startid', '#' & obj._id); - measureObjs = Self._property:MeasureObjects; - measureObjs.Push(fermata._id); + switch (bobj.PauseType) { + case(PauseTypeRound) + { + GenerateFermata(bobj, 'curved'); + } + case(PauseTypeTriangular) + { + GenerateFermata(bobj, 'angular'); + } + case(PauseTypeSquare) + { + GenerateFermata(bobj, 'square'); + } } if (bobj.Hidden = true) @@ -1749,61 +1760,16 @@ function GenerateTrill (bobj) { } //$end -function GenerateFermata (bobj) { +function GenerateFermata (bobj, shape) { //$module(ExportGenerators.mss) - /* Note rests can have multiple fermatas in Sibelius, - but this is currently not supported. - Also, fermatas added as symbols are not yet handled. - */ - shape = null; - - switch (bobj.Type) - { - case('NoteRest') - { - if (bobj.GetArticulation(PauseArtic)) - { - shape = 'curved'; - } - if (bobj.GetArticulation(TriPauseArtic)) - { - shape = 'angular'; - } - if (bobj.GetArticulation(SquarePauseArtic)) - { - shape = 'square'; - } - } - case('BarRest') - { - switch (bobj.PauseType) - { - case(PauseTypeRound) - { - shape = 'curved'; - } - case(PauseTypeTriangular) - { - shape = 'angular'; - } - case(PauseTypeSquare) - { - shape = 'square'; - } - } - } - } - - if (shape = null) - { - return null; - } - fermata = GenerateControlEvent(bobj, 'Fermata'); libmei.AddAttribute(fermata, 'form', 'norm'); libmei.AddAttribute(fermata, 'shape', shape); + measureObjs = Self._property:MeasureObjects; + measureObjs.Push(fermata._id); + return fermata; } //$end diff --git a/test/mocha/test-fermatas.js b/test/mocha/test-fermatas.js index 2fd449e..127b964 100644 --- a/test/mocha/test-fermatas.js +++ b/test/mocha/test-fermatas.js @@ -4,16 +4,34 @@ const assert = require('assert'); const xpath = require('fontoxpath'); const utils = require('./utils'); -describe("Fermatas", () => { +describe("Fermatas", function() { const mei = utils.getTestMeiDom('fermatas.mei'); - it("rests don't have @fermata attributes" , () => { + it("rests don't have @fermata attributes" , function() { const rests = xpath.evaluateXPath('//*:rest',mei); utils.assertHasAttrNot(rests,"fermata"); - }) + }); - it("all 36 fermatas are exported", () => { + it("has expected number of fermatas", function() { + const fermataCounts = [1, 1, 1, 5, 2, 2]; + const measures = xpath.evaluateXPath('//*:measure', mei); + for (let i = 0; i += 1; i < measures.length) { + const measure = measures[i]; + const expectedFermatas = fermataCounts[i % 6]; + const fermatas = xpath.evaluateXPathToNodes('.//*:fermata', measure); + assert.strictEqual(fermatas.length, expectedFermatas, `Expected ${expectedFermatas} in measure ${i + 1}, found ${fermatas.length}`); + } + }); + + it("expected fermata shapes", function() { const fermatas = xpath.evaluateXPath('//*:fermata', mei); - assert.strictEqual(fermatas.length, 36, "Not all 36 fermatas were created"); - }) -}); \ No newline at end of file + const expectedShapes = ["curved", "angular", "square", "curved", "angular", "square", "curved", "angular", "square", "angular", "curved", "curved"]; + for (let i = 0; i += 1; i < expectedShapes.length) { + const fermata = fermatas[i]; + const fermataNumber = i % 12 + 1; + const line = Math.floor(i / 12) + 1; + const foundShape = fermata.getAttribute("shape"); + assert.strictEqual(foundShape, expectedShapes[i], `Expected fermata ${fermataNumber} in line ${line} to have shape ${expectedShapes[i]}, but found ${foundShape}`); + } + }); +}); From 6885f8111b4486e66b3161491e1c9e3dcbe07a0d Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Thu, 4 Feb 2021 15:48:18 +0100 Subject: [PATCH 73/83] WIP fermatas --- src/ExportGenerators.mss | 52 +++++++++++++++++++++---------------- src/SymbolHandler.mss | 12 +++++++++ test/mocha/test-fermatas.js | 19 ++++++++++++-- 3 files changed, 58 insertions(+), 25 deletions(-) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 0f583f5..1ba2470 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -845,20 +845,7 @@ function GenerateNoteRest (bobj, layer) { libmei.AddAttribute(nr, 'stem.mod', '1slash'); } - if (bobj.GetArticulation(PauseArtic)) - { - GenerateFermata(bobj, 'curved'); - } - - if (bobj.GetArticulation(TriPauseArtic)) - { - GenerateFermata(bobj, 'angular'); - } - - if (bobj.GetArticulation(SquarePauseArtic)) - { - GenerateFermata(bobj, 'square'); - } + GenerateNoteRestFermatas(bobj); if (bobj.GetArticulation(StaccatoArtic)) { @@ -984,10 +971,7 @@ function GenerateRest (bobj) { libmei.AddAttribute(r, 'color', nrest_color); } - if (bobj.GetArticulation(PauseArtic)) - { - libmei.AddAttribute(r, 'fermata', 'above'); - } + GenerateNoteRestFermatas(bobj); return r; } //$end @@ -1230,17 +1214,18 @@ function GenerateBarRest (bobj) { } switch (bobj.PauseType) { + // TODO: Check for flipped fermatas case(PauseTypeRound) { - GenerateFermata(bobj, 'curved'); + GenerateFermata(bobj, 'curved', 'norm'); } case(PauseTypeTriangular) { - GenerateFermata(bobj, 'angular'); + GenerateFermata(bobj, 'angular', 'norm'); } case(PauseTypeSquare) { - GenerateFermata(bobj, 'square'); + GenerateFermata(bobj, 'square', 'norm'); } } @@ -1760,11 +1745,32 @@ function GenerateTrill (bobj) { } //$end -function GenerateFermata (bobj, shape) { +function GenerateNoteRestFermatas (noteRest) { + //$module(ExportGenerators.mss) + + // TODO: Check when a fermatat is flipped + if (noteRest.GetArticulation(PauseArtic)) + { + return GenerateFermata(noteRest, 'curved', 'norm'); + } + + if (noteRest.GetArticulation(TriPauseArtic)) + { + return GenerateFermata(noteRest, 'angular', 'norm'); + } + + if (noteRest.GetArticulation(SquarePauseArtic)) + { + return GenerateFermata(noteRest, 'square', 'norm'); + } +} //$end + + +function GenerateFermata (bobj, shape, form) { //$module(ExportGenerators.mss) fermata = GenerateControlEvent(bobj, 'Fermata'); - libmei.AddAttribute(fermata, 'form', 'norm'); + libmei.AddAttribute(fermata, 'form', form); libmei.AddAttribute(fermata, 'shape', shape); measureObjs = Self._property:MeasureObjects; diff --git a/src/SymbolHandler.mss b/src/SymbolHandler.mss index 53781f5..47c2745 100644 --- a/src/SymbolHandler.mss +++ b/src/SymbolHandler.mss @@ -30,6 +30,12 @@ function InitSymbolHandlers () { '214', 'HandleModifier', //marc above '217', 'HandleModifier', //upbow above '218', 'HandleModifier', //dnbow above + '220', 'HandleControlEvent', // square fermata above + '221', 'HandleControlEvent', // round fermata above + '222', 'HandleControlEvent', // triangular fermata above + '236', 'HandleControlEvent', // square fermata below + '237', 'HandleControlEvent', // round fermata below + '238', 'HandleControlEvent', // triangular fermata below '233', 'HandleModifier', //upbow below '234', 'HandleModifier', //dnbow below '243', 'HandleModifier', //snap @@ -72,6 +78,12 @@ function InitSymbolMap () { '214', CreateSparseArray('Artic', CreateDictionary('artic','marc', 'place','above')), //marc above '217', CreateSparseArray('Artic', CreateDictionary('artic','upbow', 'place','above')), //upbow above '218', CreateSparseArray('Artic', CreateDictionary('artic','dnbow', 'place','above')), //dnbow above + '220', CreateSparseArray('Fermata', CreateDictionary('shape', 'square', 'form', 'norm')), // square fermata above + '221', CreateSparseArray('Fermata', CreateDictionary('shape', 'curved', 'form', 'norm')), // round fermata above + '222', CreateSparseArray('Fermata', CreateDictionary('shape', 'angular', 'form', 'norm')), // triangular fermata above + '236', CreateSparseArray('Fermata', CreateDictionary('shape', 'square', 'form', 'inv')), // square fermata below + '237', CreateSparseArray('Fermata', CreateDictionary('shape', 'curved', 'form', 'inv')), // round fermata below + '238', CreateSparseArray('Fermata', CreateDictionary('shape', 'angular', 'form', 'inv')), // triangular fermata below '233', CreateSparseArray('Artic', CreateDictionary('artic','upbow', 'place','below')), //upbow below '234', CreateSparseArray('Artic', CreateDictionary('artic','dnbow', 'place','below')), //dnbow below '243', CreateSparseArray('Artic', CreateDictionary('artic','snap')), //snap diff --git a/test/mocha/test-fermatas.js b/test/mocha/test-fermatas.js index 127b964..0473ed8 100644 --- a/test/mocha/test-fermatas.js +++ b/test/mocha/test-fermatas.js @@ -25,13 +25,28 @@ describe("Fermatas", function() { it("expected fermata shapes", function() { const fermatas = xpath.evaluateXPath('//*:fermata', mei); - const expectedShapes = ["curved", "angular", "square", "curved", "angular", "square", "curved", "angular", "square", "angular", "curved", "curved"]; + const expectedShapes = ["curved", "angular", "square", "curved", "angular", "square", "curved", "angular", "angular", "square", "curved", "curved"]; for (let i = 0; i += 1; i < expectedShapes.length) { const fermata = fermatas[i]; const fermataNumber = i % 12 + 1; const line = Math.floor(i / 12) + 1; + const expectedShape = expectedShapes[i % 12]; const foundShape = fermata.getAttribute("shape"); - assert.strictEqual(foundShape, expectedShapes[i], `Expected fermata ${fermataNumber} in line ${line} to have shape ${expectedShapes[i]}, but found ${foundShape}`); + assert.strictEqual(foundShape, expectedShape, `Expected fermata ${fermataNumber} in line ${line} to have shape ${expectedShape}, but found ${foundShape}`); + } + }); + + it("expected fermata forms", function() { + const fermatas = xpath.evaluateXPath('//*:fermata', mei); + const expectedForms = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1]; + for (let i = 0; i += 1; i < expectedForms.length) { + const fermata = fermatas[i]; + const fermataNumber = i % 12 + 1; + const line = Math.floor(i / 12) + 1; + const flip = line == 3 ? -1 : 1; + const expectedForm = expectedForms[i % 12] * flip == 1 ? 'norm' : 'inv'; + const foundForm = fermata.getAttribute("form"); + assert.strictEqual(foundForm, expectedForm, `Expected fermata ${fermataNumber} in line ${line} to have form ${expectedForm}, but found ${foundForm}`); } }); }); From 8370541a6cda8ab53224b5a0caf25f45831fb294 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Thu, 4 Feb 2021 17:55:57 +0100 Subject: [PATCH 74/83] Make fermata/@shape work --- src/ExportGenerators.mss | 38 ++++++++++---------------- test/mocha/test-fermatas.js | 53 +++++++++++++++++++++++-------------- 2 files changed, 47 insertions(+), 44 deletions(-) diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 1ba2470..38fee64 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -845,7 +845,20 @@ function GenerateNoteRest (bobj, layer) { libmei.AddAttribute(nr, 'stem.mod', '1slash'); } - GenerateNoteRestFermatas(bobj); + if (bobj.GetArticulation(PauseArtic)) + { + GenerateFermata(bobj, 'curved', 'norm'); + } + + if (bobj.GetArticulation(SquarePauseArtic)) + { + GenerateFermata(bobj, 'square', 'norm'); + } + + if (bobj.GetArticulation(TriPauseArtic)) + { + GenerateFermata(bobj, 'angular', 'norm'); + } if (bobj.GetArticulation(StaccatoArtic)) { @@ -971,8 +984,6 @@ function GenerateRest (bobj) { libmei.AddAttribute(r, 'color', nrest_color); } - GenerateNoteRestFermatas(bobj); - return r; } //$end @@ -1745,27 +1756,6 @@ function GenerateTrill (bobj) { } //$end -function GenerateNoteRestFermatas (noteRest) { - //$module(ExportGenerators.mss) - - // TODO: Check when a fermatat is flipped - if (noteRest.GetArticulation(PauseArtic)) - { - return GenerateFermata(noteRest, 'curved', 'norm'); - } - - if (noteRest.GetArticulation(TriPauseArtic)) - { - return GenerateFermata(noteRest, 'angular', 'norm'); - } - - if (noteRest.GetArticulation(SquarePauseArtic)) - { - return GenerateFermata(noteRest, 'square', 'norm'); - } -} //$end - - function GenerateFermata (bobj, shape, form) { //$module(ExportGenerators.mss) fermata = GenerateControlEvent(bobj, 'Fermata'); diff --git a/test/mocha/test-fermatas.js b/test/mocha/test-fermatas.js index 0473ed8..a9ceec8 100644 --- a/test/mocha/test-fermatas.js +++ b/test/mocha/test-fermatas.js @@ -6,33 +6,46 @@ const utils = require('./utils'); describe("Fermatas", function() { const mei = utils.getTestMeiDom('fermatas.mei'); + const measures = xpath.evaluateXPath('//*:measure', mei); + // Fermatas may be written in arbitrary order, so we sort them. + const fermatasByMeasure = measures.map(measure => xpath + .evaluateXPathToNodes('.//*:fermata', measure) + .sort((a, b) => { + const tstampA = a.getAttribute('tstamp'); + const tstampB = b.getAttribute('tstamp'); + if (tstampA < tstampB) { + return -1; + } else if (tstampA > tstampB) { + return 1; + } + // For multiple fermatas at the same tstamp, sort alphabeticall by @shape + if (a.getAttribute('shape') < b.getAttribute('shape')) { + return -1; + } else { + return 1; + } + }) + ); + it("rests don't have @fermata attributes" , function() { const rests = xpath.evaluateXPath('//*:rest',mei); utils.assertHasAttrNot(rests,"fermata"); }); - it("has expected number of fermatas", function() { - const fermataCounts = [1, 1, 1, 5, 2, 2]; - const measures = xpath.evaluateXPath('//*:measure', mei); - for (let i = 0; i += 1; i < measures.length) { - const measure = measures[i]; - const expectedFermatas = fermataCounts[i % 6]; - const fermatas = xpath.evaluateXPathToNodes('.//*:fermata', measure); - assert.strictEqual(fermatas.length, expectedFermatas, `Expected ${expectedFermatas} in measure ${i + 1}, found ${fermatas.length}`); - } - }); - it("expected fermata shapes", function() { - const fermatas = xpath.evaluateXPath('//*:fermata', mei); - const expectedShapes = ["curved", "angular", "square", "curved", "angular", "square", "curved", "angular", "angular", "square", "curved", "curved"]; - for (let i = 0; i += 1; i < expectedShapes.length) { - const fermata = fermatas[i]; - const fermataNumber = i % 12 + 1; - const line = Math.floor(i / 12) + 1; - const expectedShape = expectedShapes[i % 12]; - const foundShape = fermata.getAttribute("shape"); - assert.strictEqual(foundShape, expectedShape, `Expected fermata ${fermataNumber} in line ${line} to have shape ${expectedShape}, but found ${foundShape}`); + const expectedShapes = [ + ["curved"], // b. 1, 7, 13 + ["angular"], // b. 2, 8, 14 + ["square"], // b. 3, 9, 15 + ["curved", "angular", "square", "angular", "curved"], // b. 4, 10, 16 + ["angular", "square"], // b. 5, 11, 17 + ["curved", "curved"] // b. 6, 12, 18 + ]; + for (let barIndex = 0; barIndex < measures.length; barIndex += 1) { + const foundShapes = (fermatasByMeasure[barIndex] || []).map(fermata => fermata.getAttribute("shape")); + const expectedShapesInBar = expectedShapes[barIndex % 6]; + assert.deepEqual(foundShapes, expectedShapesInBar, `Expected fermata shapes ${expectedShapesInBar} in bar ${barIndex + 1}, but found ${foundShapes}`); } }); From be0e888119af9fe989f8c43850e741a7b8716ec4 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Thu, 4 Feb 2021 18:06:29 +0100 Subject: [PATCH 75/83] fermata/@form tests --- test/mocha/test-fermatas.js | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/test/mocha/test-fermatas.js b/test/mocha/test-fermatas.js index a9ceec8..ac83f22 100644 --- a/test/mocha/test-fermatas.js +++ b/test/mocha/test-fermatas.js @@ -50,16 +50,19 @@ describe("Fermatas", function() { }); it("expected fermata forms", function() { - const fermatas = xpath.evaluateXPath('//*:fermata', mei); - const expectedForms = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1]; - for (let i = 0; i += 1; i < expectedForms.length) { - const fermata = fermatas[i]; - const fermataNumber = i % 12 + 1; - const line = Math.floor(i / 12) + 1; - const flip = line == 3 ? -1 : 1; - const expectedForm = expectedForms[i % 12] * flip == 1 ? 'norm' : 'inv'; - const foundForm = fermata.getAttribute("form"); - assert.strictEqual(foundForm, expectedForm, `Expected fermata ${fermataNumber} in line ${line} to have form ${expectedForm}, but found ${foundForm}`); + const expectedForms = [ + [1], // b. 1, 7, 13 + [1], // b. 2, 8, 14 + [1], // b. 3, 9, 15 + [1, 1, 1, 1, 1], // b. 4, 10, 16 + [1, 1], // b. 5, 11, 17 + [1, -1] // b. 6, 12, 18 + ]; + for (let barIndex = 0; barIndex < measures.length; barIndex += 1) { + const foundForms = (fermatasByMeasure[barIndex] || []).map(fermata => fermata.getAttribute("form")); + const flip = barIndex >= 12 ? -1 : 1; // Starting from bar 13, all fermatas are flipped + const expectedFormsInBar = expectedForms[barIndex % 6].map(factor => factor * flip == 1 ? 'norm' : 'inv'); + assert.deepEqual(foundForms, expectedFormsInBar, `Expected fermata forms ${expectedFormsInBar} in bar ${barIndex + 1}, but found ${foundForms}`); } }); }); From b2938c4f9b2b991834a0f933cdb8086e4189b4de Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Thu, 4 Feb 2021 21:31:12 +0100 Subject: [PATCH 76/83] Implement fermata/@form Fixes #136 --- src/ExportConverters.mss | 27 +++++++++++++++++++++++++++ src/ExportGenerators.mss | 13 ++++++------- src/Utilities.mss | 21 +++++++++++++++++++++ 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/src/ExportConverters.mss b/src/ExportConverters.mss index 1c0b5f9..3bb934f 100644 --- a/src/ExportConverters.mss +++ b/src/ExportConverters.mss @@ -1059,3 +1059,30 @@ function ConvertTimeStamp (time) { isodate = utils.Format('%s:%s:%s', hours, mins, secs); return isodate; } //$end + +function ConvertFermataForm (bobj) { + //$module(ExportConverters.mss) + + // Tries to find out @shape for 'keypad fermatas' of NoteRests and BarRests. + // At this point we expect that the calling function has already determined + // that the noteRest has a 'keypad fermata'. + + if (bobj.Type = 'BarRest') + { + stemweight = 0; + } + else + { + stemweight = bobj.Stemweight; + } + + if ((stemweight < 0) or (bobj.VoiceNumber % 2 = 1) or HasSingleVoice(bobj.ParentBar)) + { + return 'norm'; + } + else + { + return 'inv'; + } + +} //$end diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 38fee64..13bc0ce 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -148,7 +148,6 @@ function GenerateMEIMusic () { Self._property:LyricWords = CreateDictionary(); Self._property:SpecialBarlines = CreateDictionary(); Self._property:SystemText = CreateDictionary(); - Self._property:LayerObjectPositions = null; Self._property:ObjectPositions = CreateDictionary(); Self._property:VoltaBars = CreateDictionary(); @@ -847,17 +846,17 @@ function GenerateNoteRest (bobj, layer) { if (bobj.GetArticulation(PauseArtic)) { - GenerateFermata(bobj, 'curved', 'norm'); + GenerateFermata(bobj, 'curved', ConvertFermataForm(bobj)); } if (bobj.GetArticulation(SquarePauseArtic)) { - GenerateFermata(bobj, 'square', 'norm'); + GenerateFermata(bobj, 'square', ConvertFermataForm(bobj)); } if (bobj.GetArticulation(TriPauseArtic)) { - GenerateFermata(bobj, 'angular', 'norm'); + GenerateFermata(bobj, 'angular', ConvertFermataForm(bobj)); } if (bobj.GetArticulation(StaccatoArtic)) @@ -1228,15 +1227,15 @@ function GenerateBarRest (bobj) { // TODO: Check for flipped fermatas case(PauseTypeRound) { - GenerateFermata(bobj, 'curved', 'norm'); + GenerateFermata(bobj, 'curved', ConvertFermataForm(bobj)); } case(PauseTypeTriangular) { - GenerateFermata(bobj, 'angular', 'norm'); + GenerateFermata(bobj, 'angular', ConvertFermataForm(bobj)); } case(PauseTypeSquare) { - GenerateFermata(bobj, 'square', 'norm'); + GenerateFermata(bobj, 'square', ConvertFermataForm(bobj)); } } diff --git a/src/Utilities.mss b/src/Utilities.mss index 5f3b3bf..5a1a6de 100644 --- a/src/Utilities.mss +++ b/src/Utilities.mss @@ -602,6 +602,27 @@ function PrevNormalOrGrace (noteRest, grace) { return prev_obj; } //$end +function HasSingleVoice (bar) { + //$module(Utilities.mss) + + // Returns true if the bar has at most one single voice + + voiceNum = -1; + for each bobj in bar + { + if (voiceNum != bobj.VoiceNumber and (bobj.Type = 'NoteRest' or bobj.Type = 'BarRest')) + { + if (voiceNum > 0) + { + return false; + } + voiceNum = bobj.VoiceNumber; + } + } + + return true; +} //$end + function GetNongraceParentBeam (noteRest, layer) { //$module(Utilities.mss) /* From f65e5e0a2a999c53e3f4828dfe6d0aabc541944d Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Thu, 4 Feb 2021 23:25:08 +0100 Subject: [PATCH 77/83] Proper defaults for output file name and folder --- src/Run.mss | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Run.mss b/src/Run.mss index 7ae7f01..6395215 100644 --- a/src/Run.mss +++ b/src/Run.mss @@ -17,13 +17,14 @@ function Run() { // get the active score object activeScore = Sibelius.ActiveScore; - // it does not seem possible to get the current folder for the file - // so we will default to the user's documents folder. - // NB: it seems that if we don't specify a folder name, the filename - // is not properly set. - activeFileNameFull = activeScore.FileName; - activeFileName = utils.ExtractFileName(activeFileNameFull); - activePath = Sibelius.GetDocumentsFolder(); + if (Sibelius.FileExists(activeScore.FileName)) { + scoreFile = Sibelius.GetFile(activeScore.FileName); + activeFileName = scoreFile.NameNoPath & '.mei'; + activePath = scoreFile.Path; + } else { + activeFileName = 'untitled.mei'; + activePath = Sibelius.GetDocumentsFolder(); + } if (not InitGlobals(null)) { From 8b93ba802087dcf542e5259f1abe1d505136dee1 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Fri, 5 Feb 2021 10:03:00 +0100 Subject: [PATCH 78/83] Close all files before exporting test folder Speeds up processing and fixes #119 --- test/sib-test/Run.mss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/sib-test/Run.mss b/test/sib-test/Run.mss index ebf5048..35fc2bd 100644 --- a/test/sib-test/Run.mss +++ b/test/sib-test/Run.mss @@ -39,6 +39,8 @@ function Run() { suite.Run(); + Sibelius.CloseAllWindows(false); + sibmei4_batch_sib.ConvertFolder( Sibelius.GetFolder(_SibTestFileDirectory), CreateSparseArray('sibmei4_extension_test') From 19a107f1a9a79fc146bff842dcbb4c6f263d9b86 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Fri, 5 Feb 2021 11:34:31 +0100 Subject: [PATCH 79/83] Trigger mocha tests from ManuScript + documentation --- README.md | 18 +++++++++++++++++- test/sib-test/Run.mss | 18 ++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f511166..ca9166a 100644 --- a/README.md +++ b/README.md @@ -49,4 +49,20 @@ These unit tests are primarily used to test specific Sibmei functions. They use ### mocha -[Mocha](https://mochajs.org/) is used to test Sibmei's output from a set of test files. After exporting the test file set with sibmei (Testsibmei will automatically do that), run `npm test` from the root directory of this git repository. +[Mocha](https://mochajs.org/) is used to test Sibmei's output from a set of test files. After exporting the test file set with sibmei (Testsibmei will automatically do that), either run `npm test` from the root directory of this git repository or have Testsibmei automatically trigger the tests. The latter requires a `test.bat` or `test.sh` file in the same directory as the Sibmei `*.plg` files, depending on the operating system. Create a file that looks like this: + +#### Windows: test.bat + +``` +x: +cd x:\path\to\sibmei +cmd /k npm test +``` + +#### Mac: test.sh + +Help for testing and documenting for Mac welcome! + +## Writing Extensions + +For project specific handling of text and symbols, [extension plugins](Extensions.md) can be written. \ No newline at end of file diff --git a/test/sib-test/Run.mss b/test/sib-test/Run.mss index 35fc2bd..d0fd3e0 100644 --- a/test/sib-test/Run.mss +++ b/test/sib-test/Run.mss @@ -26,7 +26,7 @@ function Run() { Self._property:pluginDir = GetPluginFolder('sibmei4.plg'); Self._property:tempDir = CreateNewTempDir(); - Self._property:_SibTestFileDirectory = pluginDir & 'sibmeiTestSibs' & Sibelius.PathSeparator; + Self._property:_SibTestFileDirectory = pluginDir & 'sibmeiTestSibs' & Sibelius.PathSeparator; suite = Test.Suite('Sibelius MEI Exporter', Self, sibmei); @@ -46,9 +46,19 @@ function Run() { CreateSparseArray('sibmei4_extension_test') ); - // We do not 'clean up' with Sibelius.CloseAllWindows() here because it - // sometimes causes Sibelius crashes. - Trace('Run `npm test` to test output written to ' & _SibTestFileDirectory); + // Make sure we have an open window so Sibelius will neither crash nor + // decide to open a new window later that will force the mocha test results + // into the background. + Sibelius.New(); + + if (Sibelius.PathSeparator = '/') { + mochaScript = pluginDir & 'test.sh'; + } else { + mochaScript = pluginDir & 'test.bat'; + } + if (not (Sibelius.FileExists(mochaScript) and Sibelius.LaunchApplication(mochaScript))) { + Sibelius.MessageBox('Run `npm test` to test output written to ' & _SibTestFileDirectory); + } } //$end From f7fc603d502d02d6a4f9b1e16e0f038e69b24626 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Fri, 5 Feb 2021 13:00:35 +0100 Subject: [PATCH 80/83] Add a message to example extension This is how we recommend extensions to behave --- lib/sibmei4_extension_test.plg | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/sibmei4_extension_test.plg b/lib/sibmei4_extension_test.plg index 5bc6e23..6fa02c7 100644 --- a/lib/sibmei4_extension_test.plg +++ b/lib/sibmei4_extension_test.plg @@ -2,7 +2,15 @@ SibmeiExtensionAPIVersion "1.0.0" Initialize "() { - AddToPluginsMenu('Sibmei extension test', null); + AddToPluginsMenu('Sibmei extension test', 'Run'); + }" + + Run "() { + // The plugin will be listed in the menu, but it is not runnable. Give some + // instructions instead of showing no response when users try to run it. + Sibelius.MessageBox( + 'This plug-in is an extension of the sibmei MEI export plug-in. To use it, run MEI export.' + ); }" InitSibmeiExtension "(api) { From 8edba690fdf5963a36a6bbbfb9d6f5f3f9ccc7f3 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Fri, 5 Feb 2021 13:27:52 +0100 Subject: [PATCH 81/83] Cosmetics (comments and indentation) --- lib/sibmei4_batch_sib.plg | 2 +- src/ExportGenerators.mss | 1 - src/TextHandler.mss | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/sibmei4_batch_sib.plg b/lib/sibmei4_batch_sib.plg index e1c2cdf..2113101 100644 --- a/lib/sibmei4_batch_sib.plg +++ b/lib/sibmei4_batch_sib.plg @@ -19,7 +19,7 @@ if (not IsObject(folder)) { - Sibelius.MessageBox('Not a folder object: ' & folder); + Sibelius.MessageBox('Not a folder object: ' & folder); } else { diff --git a/src/ExportGenerators.mss b/src/ExportGenerators.mss index 13bc0ce..1f7ad51 100644 --- a/src/ExportGenerators.mss +++ b/src/ExportGenerators.mss @@ -1224,7 +1224,6 @@ function GenerateBarRest (bobj) { } switch (bobj.PauseType) { - // TODO: Check for flipped fermatas case(PauseTypeRound) { GenerateFermata(bobj, 'curved', ConvertFermataForm(bobj)); diff --git a/src/TextHandler.mss b/src/TextHandler.mss index af0eef4..2cf055b 100644 --- a/src/TextHandler.mss +++ b/src/TextHandler.mss @@ -111,7 +111,6 @@ function FiguredBassTextHandler (this, textObject) { function CreateAnchoredText (this, textObj) { - //$module(ExportConverters.mss) anchoredText = libmei.AnchoredText(); AddFormattedText(anchoredText, textObj); return anchoredText; From 50240d060700c1dea1d098b266f396cbc406ee5b Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Fri, 5 Feb 2021 14:11:16 +0100 Subject: [PATCH 82/83] Improve extensions documentation --- Extensions.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Extensions.md b/Extensions.md index f3c5567..055612f 100644 --- a/Extensions.md +++ b/Extensions.md @@ -68,7 +68,7 @@ The API is guaranteed to remain backwards compatible with newer releases that re ### Symbol or Text Handlers -The core purpose of an extension is to define symbol and text handlers to export Sibelius objects in custom ways. (See `HandleMyText()` in the above [example](#example)) These handlers take two arguments: +The core purpose of an extension is to define symbol and text handlers to export Sibelius objects in custom ways. (See `HandleMyText()` in the above [example](#example)) These handlers take two arguments: * `this`: a Dictionary that is passed for technical reasons and *must be ignored by the extension* * a Sibelius object (`SymbolItem` or `SystemSymbolitem` for symbol handlers, `Text` or `SystemTextItem` for text handlers) @@ -77,7 +77,7 @@ A text handler should return an MEI element (created using libmei) that Sibmei will append to the `` element. If `null` is returned instead, the object will not be exported. -A symbol handler should either call the `HandleModifier()` or `HandleControlEvent()` methods. If neither is called, the object will not be exported. Symbol handlers needn't return anything. +A symbol handler should either call the `HandleModifier()` or `HandleControlEvent()` methods. If neither is called, the object will not be exported. Symbol handlers needn't return anything. ### `InitSibmeiExtension()` @@ -88,7 +88,7 @@ Register your symbol and text handlers in this function using `RegisterSymbolHan ### Interaction with Sibmei -Extensions must only interact with Sibmei through the API dictionary passed to `InitSibmeiExtension()` because Sibmei's core methods may change at any point. If an extension requires access to functionality that is not exposed by the API dictionary, [create an issue](https://github.com/music-encoding/sibmei/issues/new) or a pull request on GitHub. +Extensions must only interact with Sibmei through the API dictionary passed to `InitSibmeiExtension()` because Sibmei's core methods may change at any point. If an extension requires access to functionality that is not exposed by the API dictionary, [create an issue](https://github.com/music-encoding/sibmei/issues/new) or a pull request on GitHub. ### API data and methods @@ -100,8 +100,8 @@ The API dictionary exposes the following object: It exposes the following methods that must only be called in the initialization phase: * **`RegisterSymbolHandlers()`**: Call this function to make a symbol handler - known to Sibmei. To tell Sibelius which symbol to handle, it must be - registered by the symbol's `Index` or `Name` properties. For built-in + known to Sibmei. To tell Sibmei which symbols the extension handles, the symbols must be + registered by their `Index` or `Name` property. For built-in symbols, always use the `Index` property, for custom symbols, always use the `Name` property. @@ -129,7 +129,7 @@ It exposes the following methods that must only be called in the initialization If no symbols are registered by either `Name` or `Index` property, the respective sub-dictionaries can be omitted. - Second argument must be `Self`. + Second argument of `RegisterSymbolHandler()` must be `Self`. * **`RegisterTextHandlers()`**: Works the same way as `RegisterSymbolHandlers()`, with the difference that sub-Dictionary keys are @@ -153,7 +153,7 @@ The following methods must only be used by handler methods: `HandleControlEvent()` creates an MEI element and attaches it to the `` element. It returns the element for further manipulation by the extension plugin. -* **`HandleModifier()`**: Works similarly to `HandleControlEvent()`, but attaches the generated MEI element to a `` element instead of the `` element. +* **`HandleModifier()`**: Works similarly to `HandleControlEvent()`, but attaches the generated MEI element to an event element (``, `` etc.) instead of the `` element. * **`AddFormattedText()`**: Takes arguments: @@ -175,7 +175,7 @@ The following methods must only be used by handler methods: Adds the following control event attributes: * `@startid` (if a start object could be identified) and `@tstamp` - * If applicable (e.g. for lines), `@endid` (if an end object could be identifed) and `@tstamp2` + * If applicable (e.g. for lines), `@endid` (if an end object could be identified) and `@tstamp2` * `@staff` (if object is staff-attached) * `@layer` * For lines: From 9079cc40eb8828c32a6b838d6994e45de2c6e137 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Fri, 5 Feb 2021 14:16:28 +0100 Subject: [PATCH 83/83] Make HandleModifier() fail gracefully when not finding a matching event --- src/SymbolHandler.mss | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/SymbolHandler.mss b/src/SymbolHandler.mss index 47c2745..57ce0d0 100644 --- a/src/SymbolHandler.mss +++ b/src/SymbolHandler.mss @@ -152,17 +152,16 @@ function HandleModifier(this, sobj, template){ if (nobj != null) { modifier = MeiFactory(template); - libmei.AddChild(nobj, modifier); + return modifier; } else { warnings = Self._property:warnings; - warnings.Push(utils.Format(_ObjectCouldNotFindAttachment, bar.BarNumber, voicenum, sobj.Name)); + barNum = sobj.ParentBar.BarNumber; + voiceNum = sobj.VoiceNumber; + warnings.Push(utils.Format(_ObjectCouldNotFindAttachment, barNum, voiceNum, sobj.Name)); } - - return modifier; - } //$end function HandleControlEvent(this, sobj, template){

34{sCb9_Winm~#YNP6_{s?VQ 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 Date: Tue, 30 Jun 2020 17:22:48 +0200 Subject: [PATCH 31/83] Changed to SetMethod-Dictionaries and renaming --- src/Initialize.mss | 24 +++- src/{SymbolStyles.mss => SymbolHandler.mss} | 127 ++++++++++---------- test/sibmeiTestSibs/symbols.sib | Bin 44005 -> 44006 bytes 3 files changed, 89 insertions(+), 62 deletions(-) rename src/{SymbolStyles.mss => SymbolHandler.mss} (62%) diff --git a/src/Initialize.mss b/src/Initialize.mss index 4989bb5..5cd27fc 100644 --- a/src/Initialize.mss +++ b/src/Initialize.mss @@ -1,4 +1,5 @@ function Initialize() { + //$module(Initialize.mss) Self._property:Logfile = GetTempDir() & LOGFILE; AddToPluginsMenu(PluginName,'Run'); @@ -6,6 +7,7 @@ function Initialize() { function InitGlobals () { + //$module(Initialize.mss) if (Sibelius.FileExists(Self._property:Logfile) = False) { Sibelius.CreateTextFile(Self._property:Logfile); @@ -32,6 +34,26 @@ function InitGlobals () { ); // Initialize symbol styles - InitSymbolHandlers(); + Self._property:SymbolHandlers = InitSymbolHandlers(); + Self._property:SymbolMap = InitSymbolMap(); } //$end + +function RegisterHandlers(handlers, handlerDefinitions, plugin) { + //$module(Initialize.mss) + // Text handlers can be registered by 'idType' StyleId or StyleAsText + // Symbol handlers can be registered by 'idType' Index or Name + + for each Name idType in handlers + { + if (null != handlerDefinitions[idType]) + { + handle = handlers[idType]; + for each Name id in handlerDefinitions[idType] + { + handle.SetMethod(id, plugin, handlerDefinitions[idType].@id); + } + } + } + +} //$end diff --git a/src/SymbolStyles.mss b/src/SymbolHandler.mss similarity index 62% rename from src/SymbolStyles.mss rename to src/SymbolHandler.mss index 5ac4853..8ee99f3 100644 --- a/src/SymbolStyles.mss +++ b/src/SymbolHandler.mss @@ -4,54 +4,58 @@ // '242' quadruple staccato function InitSymbolHandlers () { - //$module(SymbolStyles.mss) - - symbIndexHandler = CreateDictionary( - '36', 'HandleControlEvent', //inverted mordent - '37', 'HandleControlEvent', //mordent - '38', 'HandleControlEvent', //turn - '39', 'HandleControlEvent', //inverted turn - '52', 'HandleModifier', //heel - '53', 'HandleModifier', //heel (2) (was toe in previous version, but this seems to be wrong) - '54', 'HandleModifier', //toe - '160', 'HandleModifier', //stop - '162', 'HandleModifier', //open - '163', 'HandleModifier', //damp - '164', 'HandleModifier', //damp (2) - '165', 'HandleModifier', //damp (3) - '166', 'HandleModifier', //damp (4) - '212', 'HandleModifier', //ten above - '214', 'HandleModifier', //marc above - '217', 'HandleModifier', //upbow above - '218', 'HandleModifier', //dnbow above - '233', 'HandleModifier', //upbow below - '234', 'HandleModifier', //dnbow below - '243', 'HandleModifier', //snap - '480', 'HandleModifier', //scoop - '481', 'HandleModifier', //fall - '490', 'HandleModifier', //fingernail - '494', 'HandleModifier', //doit - '495', 'HandleModifier' //plop + //$module(SymbolHandler.mss) + + symbolHandlers = CreateDictionary( + 'Index', CreateDictionary(), + 'Name', CreateDictionary() ); - if(Self._property:SymbolIndexHandlers = null) - { - /*symbMethods = CreateDictionary(); + RegisterHandlers(symbolHandlers, CreateDictionary( + 'Index', CreateDictionary( + '36', 'HandleControlEvent', //inverted mordent + '37', 'HandleControlEvent', //mordent + '38', 'HandleControlEvent', //turn + '39', 'HandleControlEvent', //inverted turn + '52', 'HandleModifier', //heel + '53', 'HandleModifier', //heel (2) (was toe in previous version, but this seems to be wrong) + '54', 'HandleModifier', //toe + '160', 'HandleModifier', //stop + '162', 'HandleModifier', //open + '163', 'HandleModifier', //damp + '164', 'HandleModifier', //damp (2) + '165', 'HandleModifier', //damp (3) + '166', 'HandleModifier', //damp (4) + '212', 'HandleModifier', //ten above + '214', 'HandleModifier', //marc above + '217', 'HandleModifier', //upbow above + '218', 'HandleModifier', //dnbow above + '233', 'HandleModifier', //upbow below + '234', 'HandleModifier', //dnbow below + '243', 'HandleModifier', //snap + '480', 'HandleModifier', //scoop + '481', 'HandleModifier', //fall + '490', 'HandleModifier', //fingernail + '494', 'HandleModifier', //doit + '495', 'HandleModifier' //plop + ), + 'Name', CreateDictionary( + 'Pedal', 'HandleControlEvent' + ) + ), Self); + + return symbolHandlers; - for each Pair symb in symbIndexHandler - { - symbMethods.SetMethod(symb.Name, Self, symb.Value); - }*/ - - Self._property:SymbolIndexHandlers = symbIndexHandler; - } +}//$end +function InitSymbolMap () { + //$module(SymbolHandler.mss) // Create a dictionary with symbol index number as key (sobj.Index) and a value that determines the element that has to be created // 0th element in SparseArray is the element name as function call // following Dictionary contains attributes // TODO: key, CreateDictionary(Element, CreateDictionary(attname, attvalue)) - symbIndexMap = CreateDictionary( + return CreateDictionary( '36', CreateSparseArray('Mordent', CreateDictionary('form', 'lower')), //inverted mordent '37', CreateSparseArray('Mordent', CreateDictionary('form','upper')), //mordent '38', CreateSparseArray('Turn', CreateDictionary('form', 'upper')), //turn @@ -76,23 +80,15 @@ function InitSymbolHandlers () { '481', CreateSparseArray('Artic', CreateDictionary('artic','fall')), //fall '490', CreateSparseArray('Artic', CreateDictionary('artic','fingernail')), //fingernail '494', CreateSparseArray('Artic', CreateDictionary('artic','doit')), //doit - '495', CreateSparseArray('Artic', CreateDictionary('artic','plop')) //plop + '495', CreateSparseArray('Artic', CreateDictionary('artic','plop')), //plop + 'Pedal', CreateSparseArray('Pedal', CreateDictionary('dir', 'down', 'func', 'sustain')) //Pedal ); - if(Self._property:SymbolIndexMap = null) - { - Self._property:SymbolIndexMap = symbIndexMap; - } - - // Dictionary to handle symbols by name - Self._property:SymbolNameHandlers = CreateDictionary(); - Self._property:SymbolNameMap = CreateDictionary(); - -}//$end +} //$end function HandleSymbol (sobj) { - //$module(SymbolStyles.mss) + //$module(SymbolHandler.mss) Log('symbol index: ' & sobj.Index & ' name: ' & sobj.Name); Log(sobj.VoiceNumber); voicenum = sobj.VoiceNumber; @@ -116,20 +112,29 @@ function HandleSymbol (sobj) { } // get SymbolIndexHandlers and SymbolIndexMap - symbolHandlers = Self._property:SymbolIndexHandlers; - symbolMap = Self._property:SymbolIndexMap; + symbolHandlers = Self._property:SymbolHandlers; + symbolMap = Self._property:SymbolMap; - // look for symbol in SymbolIndexHandlers - if(symbolHandlers.PropertyExists(sobj.Index)) + // look for symbol index in symbolHandlers.Index + if(symbolHandlers.Index.MethodExists(sobj.Index)) + { + symbId = sobj.Index; + symbolHandlers.Index.@symbId(sobj, symbolMap[symbId]); + } + else { - handler = symbolHandlers[sobj.Index]; - @handler(sobj, symbolMap[sobj.Index]); + // look for symbol name in symbolHandlers.Name + if(symbolHandlers.Name.MethodExists(sobj.Name)) + { + symbName = sobj.Name; + symbolHandlers.Name.@symbName(sobj, symbolMap[symbName]); + } } } //$end -function HandleModifier(sobj, mapValue){ - //$module(SymbolStyles.mss) +function HandleModifier(this, sobj, mapValue){ + //$module(SymbolHandler.mss) makeElement = mapValue[0]; @@ -159,8 +164,8 @@ function HandleModifier(sobj, mapValue){ } //$end -function HandleControlEvent(sobj, mapValue){ - //$module(SymbolStyles.mss) +function HandleControlEvent(this, sobj, mapValue){ + //$module(SymbolHandler.mss) makeElement = mapValue[0]; diff --git a/test/sibmeiTestSibs/symbols.sib b/test/sibmeiTestSibs/symbols.sib index 7b34e6e21fc59c9492b888d8b77ec7daf1cc4eed..617f733e37b207f940c437928b63c6c57fc108fd 100644 GIT binary patch literal 44006 zcmV(~K+nGqQ%OQaOi5K!002J#1^`v0^8f$*000000024w0000CYf2Mn{4QaZ4cv+5BTjd^9X?9l+};HNmt3!D z-y9)qG4cC&)630zZ97@LS?JGeV{2UXK@UCzAQ#%*DgXcg0JMuox6h}0;o&4+;K6C5 z6ug-w6aY{UDCu~g(%b;0q%C7^<7RGO@Ear`0gw|_3G(V!R=Rt0(M~Kt(}fK##kr$K zeB!8GCDuhKTR|)2G2acFX5QP@8w{X3&&lYh?FY{~T(xfjr(Wx{7WLc=%x27rmvK9r zG`uW%5}+Q9Y*>WON3Ylb=D>##pwplu+S>g!eriu+0^5Hiv+Mjjqc*VA-89w`+Zif^ zRp7Yh!fDLYTd9eHkcY3*CtWs-10?UQJfQ)QRq2)aC-rnyH`GWl>U;n~vRPhLURe&1 zewpObMroIio9xe&b(}oM`?&vIAp)8&3p*GAlh{|_C}ut!J*i(N|2tQDTOKW$xIv5E z(0ig}M>3&@6>Ax?URwqSQ)qU@Q|CKhJt%2&RWFpB;C?UuC7X)$vVsrZ#9RnmcI%zo zON~=W35T#9#Hwa9VN7og8>M`yhf6#_u}! zAUwH8hBmOx$m~5*&KppE6>`;Q2il@p17&(P9-SZFqUb42&eeG+9ugTl67PsO z9|m%ut8@i%x}IFLk7&|}&#ay}OUszW27_0Js}3=}V&vqdhQJg(x8Vil`Cn3g#L&cA zX(dfV--qlU^rPZ|ja?Uov$5@$?~q^$%>K5gph1|Dd9-FR!d7oyHd$ex z&Jq&z$1WBJg;ISL(ODxe{v{}=ortq-D+@B88k1LXwc}MGW}KD@*u}pR=e+%BbKTnT zJ%oPMc>K(f5W$V!+*%y#nHgZ~G+66H`}{a%Thl57MnLgy9<~9q$>_}D-12JJRyPc{ z-zW9sNk7)b?K?v$$#58Z=`+DkzC=V88!|8+%&~Ey@%-Esu90B0GBHz{+Nq?ho{z2p z7o(hiLNTIwJNOpSf-e1VL|0CvAPIKasu)*Rrrtmu#;hnmQhxP|G9$*j_z`Y!cLkgO zVN5wccmqFlhVFph(2DUh#mJ)7q(O^o9PVPjCy5U$&-t)l^|mwT??{IdSEH>0KjR*k zrRoUDjSyM+{Bdsl?@g)Eer7+Txj|D7?j(k&D2lGuS^r;b_O8?e<5BiCBAA1*(kxT& ztjn=d?Wfe68T??Za#L2ib}eVIAlo`rGkv>QS*_LqNeKx6(&fehYUZ@G#t^D^Yh{uq z^n=eUoxneSzlet|&lF%$YDrTvW2Yb9L*(nS9pry0SP)Y4CaE^da-}8nF8m0JBcMnU zn9QHJ@)q!i`%|Uo7E6681LBMpv9=Lr=67X)zWXD=bo#$EiQf5b$)|_9tl=3#+n9lu z6qo~gpEMw#zGnmq?YFSHg8uqnDXdipG!v+;V#-6?vVb9gUEQ2@jDYV>D<^X={X$;; z^~3|hQX@+Tt3CJ%q+PY@aLMY|Z~LU&Gv3_l9Xs?Ham3E;m- z)^D+%kyhpNT%nQc;qj3Y4L*)?ulQ*QIopA{x2JUrg=y_#t9#IQu1bf3sy{C<-#l{q zEu!J(%J-c%{rdfk9Y_$)_CVfIPp@3$#BFrn7gM`O;=use)5|;=iY7vo;Lk)iz!f%O z&c2_x`r9y+CFMXoPPPgfIlwW6;v+PYU<9j&4zT~-=ah9;{?2MM5ZEMolXvqx+)Kju#x;UUeoIy{{L}`jVK1tbL!Br9si2b9x(%^rZsp_2T;%AL0;*eyC?3N!+r!Tp zv^)=K3~1gx6iH96ef3Vn>ij^Z>)QAxGY$tbU_qlPl}qImCw<#NplK?A(q!9sn=$!~ z52&O_|FUEP@(4?B8_1Mp^Ha~K+x5v5Vry~LH~MkFE=MS%3cX#8nb7a(|UPRMm&@Ni8;QJwqX&4zFE)%Cfju$7`lkfp!KO|nJ0*PA#6XfmM41LhTUU!^72BIqT+xrAZ`on9qpnl%E0U&D|ci$rx;HR!ms zq-_MqpNSHHql;_f*X9&0b_|9Q;6pU8VDRtJgPcaNf%kqD!#DL#XJ`orqFp}1Z zX#@Hvef!vsk}=i-TNq@W7{Ie>3K;tcMCB1JTs9fi+i7WXVN5a=zqe1HicneNq6qKm>ECb;$~0gAQzb?x?o#(3N*C1@0Tt&8EX4cHp$2)1V=E zU{wONn%=IUNt;F|yZa;@9n@~MNNd@y65VTKTXGr{S0rTBg~(M6z)JxEye1VQ=Zx(P z_fNi})!Zhv4Z?9i4?|JF!Abm2ZTXt}PN9h@;{?fcxOsErEx7iu@DOND?z)$>Fd2RC zy&HZDjQT-&ay#*?^9}q0wPm?m0irkv&uQ*yQ6H(KuFccVH-MZkID{Wvsf?Vhe6M-a z#dUmK7HI+!G(5P8Ca~n5mu#<42(dWZwoo0LBdX~_BvA*Ad;CS1>i3Idb+~3Sjs*oT zQ-BRH5~PGoz5XK+kX=sy|!Rhl_H`fE*v> zV~y06Cy{vvzwfg8n1+p$IVyzhf0j@oOLOwuupb-?I!xWMk2ds0wP$krj?a{nqV>#! z>}%_}oh~46Gw_-jug)L71iDJi6<+AajLMa$-sH4qTV9@=9C=q;Z|p>s;^i4O9y3Tb z&*Cf~NjyQzCq$fOJn?kJP`MZKrcrF%&WP3|lwZS`5*IxB-?}SF#O6#%i9zJn)9w#* zOIFd>Snk?bmjr&lvo&&;QIISi@yT+CCF~EWu78@A`}mj*GI0DaIWr;oHGYgtnM&~9 zMGtzCcBN``jgC*X``z8KcsKCThjcRBnpY8+2EsK<N4vbfPau5sU3t{2%;Ny z+~(Yif(Wyls&rzc_}NF@u%K*H_dHJ1s$&U?FjL6T)TJKwF?eI@k}%{1h8E^Z>5S8p z>hc(VHe-4l`FkT=UV@L)n$@X~{^imT3j%OB&zj}tN$F5f(N9x1S&1@m58Auc6=7T`KvYDHCo0rj%zFX?8`oMS}0M$k>KI(Q2<^nye?yVP>b5B)8S-{|)# zy7gB|$lA$c%5nR#HVNhr=2kWT`W(d?L$P&O;+=wiX~cqbiY?8-4Q6}emdA_tA4RoK zh@f*xA*6bX$lW*JWKgvAte@u$kd=-jL8AUEk^_3|HPBm$l%1_iFWUbcp~tYc+eC5L z`i5Sm0r%9rYrd#Wu|gSKq|G9I577YsZ`qp1Po=cUgr{ge@t<7ZF!XJ0D~U|&$>$z_ z?pxg05t8gm(vF!v{6B=Vu$P&*ky!Y=v~N3pY)%jmY%B#po}7bdx_IZTone3@EcnVi zLX*l`ms*>z!vAc)9>hgb!2%llV~O*JU48hs`)vMf{u{5>``CKBQ-2s>AeS_<^f47R znWjmwxnQ{f43Yyy)N#Sv{jObc-$o>nG^oo&+1Al5~Y8A4! z%??fjvAyF&38Lr$JXs&=fIKCUzi+K&VV3$sKSyE5@Ln=8t|Gb43{@lad(8a1M$F?Nw8p5_s0_gsC0Nu~N}Q+KoE!hX zT40+wmWg~uZq@ujb#&dR(1>b>=3=FgCts_Y^a;mc8JjFg0f2x>f34#f4X6K;K^)#O z2N}?}LWlE9+OOIVwtbzk-hqrgEcVW)m>`UJ4Ejh)GL`84h9qic;mSk3N&D7)@-Oz? z;%5AkUnUYq3I+uFi23HoFl}A}N};{r(jQTajp~kF=pgCUI zH_b%%WaE>rwO4GvX!~$;$>y_H1)qT~t~g-?Qp=zh>ay6N{nxgq_5~vbu@E5J?Q_Vi zrhzeWphSLRL7s@Bm%;D#-SvH_aR(R1KZ-56Z)YSu4k*Qn4O{fzFtuFng5QS=+bl7x zQZEwhM9?vM|0mHYi{PD{<-j6K!e!@FIJyGYDX_wML74awQI~l?>_b8*LUsmNq`$jM z&SePLdhincV$)Vuumu{+KBF=qjWY_xHXCC*agk_PJQ6_Xw93!(H5;HbQsvPu$5yk%G1p(65&8&x&aJLQ!QYZu`=5Xctos0pP+g=FI0l1 z5^-yO;%IA?ZODF0*R0IqX(cu9C=Gi{S}JPG6|YE%WGIUfOJ2l!pb1?a=BvzH&eC4J z=%W4OSKub+b`CH^S{ z9}ldsrfNXu<-b+rZ)vFS3@nX zw1mKE^}b}|ThuzFRaln16**iS!A<8g?K#Ke3|2EbE>O6@Kl~)8>U1_&{!8lTK%`cw z@nFBOj5Ea2l;Rlj21LQ`?}#Qp17Jt2hLyo%({h|L^Ih%Z2rsWLgtt}$VU4K>`h@bT zIT#L4mH?C|sG3QWJ^{{J`b{$NG51eH{K>dCCz^R_rRTZ3+C^lGppz7XYo|W8evZ1g z$hMZpFw{PKp#T>2p`7~ucV?J;cUgMEd|hBz*9V%{3L4b_>fL(KQ$~C;b>x(d?W+N1_BBcMQLAP4 z`m7V1lZ~N2ERel*Z+s&KIYJ*<=diGW6cBJdmuvKvvkL+D)z03GrW6JF(0Zf=CasXoz z@>FKt9K>bF|2Y@t`j1aGGB z4oS9HT>L_s&s|d>@Gi($uh0@<&NC;4QirhL1*!oZbxX&sb7$#dCA4Up5^J1wEPcdQ8StRtH7e+m8h-=JQa;7 z26P6&GNP$coXwTk&5hzzYC6LoPRW3CEY4bDs+Y$ADL+rkW$s$ffyaO*jELjZR73Jo z6EQ(W_;nk*=xi20lk6)x+eXv2Z)U5F2=?_(aixj~M)7HJC4l7TxE2Xu=7x2}j)2c?j(tQd9jeXtcD*~zORdI>Q+kK)JG1cM*kc2)yOA~&~91r*=Sg4N?J z@BsZ6-`JfNW7%%+fSoNXqHTJb%Y5J+viF&S z(*0lvt=y-d;8j@G*(l6-EdNzW-vqi_hO7sQWj+QB?JrOnF^c?J>m5KD602p6M)vXbyBLxl|F4ph;_6jhWWg5+-NL$QncX9zT$C z*3kK2Q%(~5h+h>p`dFjKy<$e9t3s*Pb34nL&IQz-FdF|CwMa0P{`vUp^CfHZ+;U75 zW)}Q26C>E_xzP1ixG6;HyinA0Hw|mObB@RSB$3yMyH1nHg2-PF2E4nLjy^ek()g*u zOWo^{2`IVU;(74h?ydM-F^I0aS02w7cI@N`xdZb2pEpM1I{HhhRiS8r(lVJpxvN~D z-V?sr1@vZc1a#%6>ra%m)4pKoqIB#&;8$ERR@D;>?DiCP5FMe6Rjr6%P5XwjlH6og zu##L(y~^#zBA%TSMOnH)3m$pBGes`*<#aavRE9H;yjCF}{3 z@+W+M|76G5s=Tstpv|3$t!q4GX!V)eS3y7W0i%qok*9h}_a1YK6+h77*>;~2HpeGf zK>I=Bnrix$i|uQw7vwvmr8rw-lD+3GXwNWbjW^`M&QkxaiX zC=}L)Oi~~J;uk*H7qJI#MU1P-@NS+IxzMtaw0k3&DbfSl&%Akvv2~I6{cHEq+!9*gqS?!dGcM6sU zc%Oh?ER7RV3Q&}P&l75VLPf{IUX0HWrkv*UyKOJuzas@!w_L7~B!I4yLndHr9K+L9 zsn-_TYd}Bc7qY_O#xqg$kp%ykdyD&N>UhMpqo>-q0qo2z1a<(}EpU7#m5<--Rah^U zvtE*LrlAz7rf>FNB9jWUjzjYW- zDOawqI|%Dfi=@x()dR2g@5vA|>+oh%6+j43b=9sLfocuZCvP981NeL>|?$R&7+4UXB=G#N;(pCqBPc|_P z5$9&=S_U)YDbj|H0k1j5k5bnQlO~;0S}{`-7fA(gz&S zbezbVvy4-5P#O;+H!q5q-2+^!4cE|y879VOD^ z886T6bH&(^3O|+ZiS{czq&w3){Su0A)%utf6q6QJyHt_9e6=k=wA^^FaI&-hcAaE1*i+31CvFvFl1vH0`-y zHTP1@ZZUwyn0b0n1J1!SW!%ZKO)5OYt#U~H2=331?yzF3_b?Hn%K+`#Iw6(l~`_EAizr!T^O#8 zTFsMMhi#Mahy(P<4u-MzJOl61Y8vz)=P>L?0UAio0 zhyyo0EtRB!Ny#2Mt#Tl1lxi!$!Jyy%??b^Q$5Y%6&>HEIN~|o~WZw-owQlnlRu6%2 zM%P0VQ_pCea<)#m>_xYF9h;_okMT5{y5GS(xL+0*c@B6LqvV6NQL+S%A&RvfIygnH zQfR*Z!n+pvXVthEF?9;#^1Xq6ShBG7nynG^Gjb{Te2h59*6tY8XGS65OSQdtMsSt` zT$*m)H8{>Fw?3b^11tH^5`>?d!?#AEabv|-~v7Pk> zoOz&U=gpw3B3RiUD7%PgUC;`!6?7{PBg-1toU3x$D8H5PE#RuS*g8#zm~p~cp_daz zv0s-KEnhb%9FYnBHX}HZCQD2Sb&aGJI}UG;k8KRV$ZG;{+L3tukbC}?DT^kT9ME5* zZ~c6nSeU zYY8mPx0jE}j&2UcVYurBYQY6CXDE*kl}STIlse}J`VM0ORN&nRZM+r;2yS;1{gcxB#AFMH~C zIX7fgeSz7mt#+S(Qmg)%jC$C_vHEpN0(TL3?{8q@+ER4FHPz`p+S#Z68SArS$~W{X9tvx0o4^tw-WN+fSG$7;+7P?A&3If z`p5)F_l$LZn_<1B4bAwym1_H_-^nNO31`%SZB;moXy&<}ad(4rIoQ3u^XI#f&)O0E zUgZOYdL5{WFG0ziP`i#qAC=uYtgLO$f#~AfK3R;UNXR~++E&E;V%W#O4RU1|@-v)s zDv)r$8cAQ2>gPb7t1Lm&bwa<0YZQt=A7n8l#|U#UPR$~85;e#UWB+dqMs$bF3(ot3 z3!ooy*)-%;Uk94f8Vxj$d9UPyBQ)g)yQfSRV((o5j=jwP7MFr61?k?35g6L}yr05T z&(cJgJy^`jnj$+M8*g&$@$(GBankqD z^4rmYTf6g%C14{v9y506_G@2XB9xvZv89JCKr9X&f(O7;{Bq`>?5c;)`{pbr>{q(4 zmA5UpFC-Kwu~G0 zRf^n%1T`Q)MnVoUwn152N+%6$IcE~8bP50()6LwZhQ2u~se3o;9)fxfLA-^&YNld= zqv!SItnke?tNIfy{q~eT!m6^+In_4XMtpwGuGj3DI?KpJomBg<|BJACOzpPs{g-xHzItu4_F&`YPTMqwIVypc?rTYJ z?`@>JjuR{)WW86ywrn%MnLfNV#&t-{o$y@P6u&&yXe#i(FoY~LnsD_&GDCT1md3R6 z_!heG)o-}#i-kt=0(UT&!#k58JHO=a4ov$nsf=ms4b{H&B$2fhh+Tc)D&o>b5BYfy?<( zlhUcy09|TAUHk%MZ^zIxu|2S7ajY>#AoD}ur-5i@z}n-RrF-Z7x``fzHn>7wmrRI} zmuBJ8QDc+U>Jhl!bUsFCH5CYw0|h}l4#X0+^#sL*;f}t2f2}u?^FAgc|76?wamZEC0U0{Z$ z{CaW$_k2NAZgwOam~8i(SAL;_g2@wcvI^!t3!j?g5={r94&RV5noFCKYAol%d$F)4 zmR7|fyK0_SuDf%0Z5nkMt;S)4GIme2x$brP$C?aa66o!F$b0&sI3^zj<^LPbyP7p|J_G1E}YMoAZmy+ zDuvx|ei^`i@9xF*92nQ)aukYd)b5dL)L{3_1N1Hh~@XWMEdGZyZq_;u|8V zB(BCt>dV!=Tp}0=GBWdb$sKQ>zh0Xw8v+oCmh0BPxFgz>Z3e8ABG;pi1SXW(Mv-y< zGwcMzZd6;tg%J=f`G#<_WH#V|(+Um+A|(pC==)YNDwVK-_zm51{CziFVl#Xh`Y-Ro zq2dwFKaJk=@=#HcVU{Z)*E6BY}jPscZ{CI=PTvbtuoJyL+Tr*>uy=l?*@U>=xLH*< zZN(?@L-B_VH8mB;RkHg^k8zPF#|NK2UBDq9-ITGP#R^LmV&7^f{+A@nuKtigHZIBe%YCq6DpjXXJ_ziQs=KL~AG1YGA>L2n&e|+Wb4@z0G@}$C zjaq4i@Zdkc7wz;z8A2@4+jRf8^&%r$(0$`KuyDukASFL4>7+K zt*eAAZF5)Oa(9ZmI8)8WpjpztzFx|sX^K5ifuJp?P*_U{7+pt@7YqA(ly8?#TsE%aDPd3oeFd+OG5ENx4-fZWVXkV0#8oo&(Gu5}0 zSWPnL5^`S_OTN{uO8-TDx5@~N@XD=+G#Sx%r#2|)H{Z;SdkPDlye9&6MouR#nu2kp zBN`M8Pm`7&3=B|$wPCz+S^L_-N65%Cce$}_!Vu$J zPn=)G=1pwIX0Xng4ae8x5t;AaZAYS4YcY5oCct@@n%RoXf?rMN*_J!ds)y04oB!C7 zX5le4Q>XOv+E&erZ8~K`-7`!E;g>9laR`dR!9oAUZ=R{yUw1egVOf@yrn$)Ko5x+D z=^}664b5u}p7P|+O1kSA!&D{ff*MV{s{5_$uRcfiwJ7J6?x(q_vgir)f7uWP)OlYO z7MnG)UoDXRVFj&CtLU3J>6_s0D{v4o1l#0mL#GViP))!nmBo=h#i!~0v9mAye6w-| z-~al1>M945TsIvT`mIhw$<0ntJ}#n-l_ktEH28mj4Hggf?#_>4GTSJG(_Oob6#*dI zNQu(#ez5N4P6yH$X=oD z7VqWoP1u&N@+zpG-Wt@ex513Jyh=n6BOZ?te=>X*H9<5{4|a4u^zqmndID83k z40M5^i@utxf#pr(FB4jfXk!6-_qo6>TXvAiC$pCrv-_IW_J#VuTzg@%zdV;FwkCVJ z#4ku%O%=m#xmt-Eu#k>ON!jQds98Je>;oRK7p+o z3oETgVuRj<7nHN}+T0lMk(GBc-?J2hG^H>$o+j|V2yEKF^}6Jsi1Y-Z;fVb2+#tXla|mN_Z%S4Tpt00;$-KwVYFucL(>2zYLXgxgeY zU!Y%op9N*jS&&Vt${ca`nTcMgL!?e1+I6$ZtQK-ZM>wT2+HFhynMr2D0XYzc*XGMeMtY)h3}a1}THdCA*HyYN-*2HgCBzj8FYAAV{V{6cZW z%6tmByH1A)u8GsgUX{}rVJSg4zA4h~DiZnMH|*OoPF55vLSScgC9u_UJ79lPteO?I z6^DnfanhPb=OK`b-&t!~|7=r9G3(7dW2=JxwA%Tl@}4YMAQ6^l4RUp>vLp!vQ6+rD z+Wf-IEhX9^*evEVQKDv_-GW!Q8LG4dh$Ou+!I2Uw%igS-mA5tf?5%3wieN;23srl@ z(7ucr_KI5a+mT^h>*qboIkR_KxC*wzL>lQr!Xl1+Qfx$Km_ZM1fyrzN%}n*j@W91>lEd zY#CEOeVE3jNtap#;YkIG)Z{tt7DI?kX(fimt*d;xD}iHd!SO_XFJ1Q89#sDwOH8cZ zloF!nr4PgXwo-2~;&(!|yVa%R9jOI06q;Q%&yZ5<)9s|9pN#c|UIVkyRGTG>t{T7b z5U!omYPH$VVaAWpMI6;GCy|*pMW4-;Ka6_{Xu@FW6#uifqovnL5C~_SBHcHJ7x%yb9EWK4HLhPC& zOWzWaJ1%XAO-v8D$PVFtAlvaTaBkVb{p9Y7G=Z`%v55uLY;;hXTdTyVW5dL45UIPC zOQDo+e_}uNz4SoI{49;w!V9;k;7p+|%DiD@0fYE1@YrS>&p4cRYwlAH<9l%Lv|aRg z;I=={v#{&^|72GlrCn|Sx_c=>f?7Gl<7??KvcGJgHZZ~dx{py+$G&cYq~4sY1q5=? zxar~s3WLz4YSS(sE?|LB9C{o2UhAX*U|=`isk^-U^0wtGgb`bs2# z2q*i;G2TSDa}!@TNI(JP{UK%=j2}xSOCJd|LyH0?cw!! z6Ohup@M*E)5ELvEe)kHoAaFnBZ-BIl?9#yZasB4x{Z)va)w{ra;y+yvdBaz2QO$_k znKY5W4ypV7AxI1ktdwaqdTVpJt+xKR8Ey=FT@W;lmWQ)5wrb@g1!*JSf`jvHUvdNcIb{V=u2J; z+SmjWg$@mUgf{)Tk;%GEAb(&?X-O(!EJ@%5iW^|@_V|Yzs^3hkpzAN*p>V}U>7`Pb z#h?Y30SEHg5wgBraMu=rf>TCgd`sf7k zM&9HEf`&$+wtIA*$>YHSs!xBOAkbL;x*4On6I(VL8K0S~9>Dc;X4>c;94kuGkLMA> zDz3NN&aJfp!7$gK4zE**$JkHqUJNwvL{D1N`Zguu^=ALR(HKgXfYoxa-%Ea~bG>`# zW2%H%@A8HFKp+0L#Cnx7$BEatwf{xkC4k>9XVMwKm+?&a+zWX7}3)c;K<=id0ja5>HK)#($De+eKIijTB<3+UQu zXI2xkME?nWYa~;qyU)#uJrAmg(yU-G?$?2Ct3w`QnO4ta^F=ZMm~C=om6De18YS@x9#BVQyuHKD7H7Wzpa5$>E4H78{ijZ*sD z&x9pH=?yp#i)@m_vsKBfN|e1g4@6K86^V zxw=~Euqw#1d?4XHj!p@cb>AQ;@TOo1g^(>bgo^R}Hwhj$DApy}%lvA;C~-%h>+DpW ziPtGA!o!EvsSSMki>bH%HW`-EB6@E=m78UaDtSp-`t@I5Pr^&Uib8fjg4b+5U%Q^w zF2?m0(;BsU<;XYzX#h{%h&#;es#Snrf2zahrq=USs)WvB4df=%vr*!E`Hdp z-0(%he^^37a72_LD+Xdjrh55f`bKi)!)BKlhbo(+7umGyVJ4ZYAwS?Eye_aujR6tCc8D!pyGS`zXZ1MFiq$X4!CxjA@<1Rwhf=Mwf_L!Mls z01N*MLzW$Kp>KPlsEb(Y{_WN{mw_jaB;UvvDW?k_`}amjOFQ<{KS(NeW-oGDvV2rT zE9w)60GRai`R_)pmme^SsSSoM{VdVXIU27u8eE2B{RB%uc9YX45{hhJz6{aMo3oIW zYml!FfCx)6#c9hgr|Z_C8e7qNYm|`!BaBE+E(1mQdpEhmkv6Y#ZOVaBvEKwTTE=^FWH5(uC~PRn*YIs>2t|rB-L**EOt_kf7L@Wg+p89ZokmyUvd&k{ze>b!jKe z`whl_mJ9EnwAkI>y7zw&&oEL5(~Oi2TksZTRdgMvHqwS%bl1aNeESl*>xyp=L&p?z z--R$x;=_WkMF($jb}MS^d2EPi0&aH%76Tf_-hmqmW2XurPH-PYz?ni=gKXVbX>Qge zQQ{e0l;?L22|D{i?w0`9DV+7Nz@&AJ}E9d*gq`Y zc)l&ckN1Q3 zGdspxfXc)_Q^l+R@3p#ffcCEaNzh266F_@rPYp6gK9VDl5isioKCIgaSH7`?)p|Vz z_6=X&co0Pz9o45%7m8oW-` z|Lc!XBke^ak!#6s@E;p(s>g!`6?V_mzu4n7Z?pGjPnJmFz?ojLwS>7w*8f`g8(`G1 zE#B*)c%LZmA$Yx6FPmW>ElkCAt!0s{G#63&1`ywCu!}3znJ_}{_CM{to})6+>U$L_ z?@-K2Z33QCA2Cq>P)7LIgnBpSLTNJHfk4ek&FBmi^63e2jT;CN#q5lQGcqt zU#)>(+h=tmj{6WB?3pr6&_;L%iV@>Avgfa#1&#BI>#bR%|24{uzh^fQQICyXmnT9c z<|jh$xFrXKnwpo0u%;OcKkDP*->*gIvo2uzg- zu97S0xTn=JEf-3?DQ-0SP~d^P+{mC!-&5zl?KQwZn>H2ZtJrJtkHH+>jQR3V>4|cN z^=uiExv>;`$td=-#EKf#;hfqZ1^WYb`DtZs*Sp%wi0RG#629*yOwgEb!uIoR-qqVBk(zDw(Zp?n$6Fp z-a8C)(_rqbQ_bGLeZSB8ugtBnE?#Dwck{sfukKR`d+yp>(+Vt|8KwuAs3~vDP}avrb+y)v06H~*29Jj1 z9XL+kTZdRP5oUk}PTs(tW+TN{GkI3 zyTqyGHFkBh5l3_qDlXMrvV|giQt)sDAn`%7+1-`O`+?KNS8Q%1r;a_XbJ(J|Z<%%! z{1ha4=TsSeDz_aBBnG?>GHyFepVatfUqjm$uozgAVfO=~g%(-T*Oiql^E{3B7bqq- zN-nn(LQuGDyyA@3_ z@((V#&NFcBZ&e>PRC;E?m|RKbIs3!pJi^lu+`+?!HPPeO|G{b{Y+R`w4lr`X1gYu~ zKGxS|(7!MS74U#r>XNtvpHLSAkh}4?LgsUCy{SQc6y8)YwuG8E0I{>~nE5h`(HP zdI_|tnax`qkLa(q-KpnIO0IZx$lza&QlXZJXl?#$ELz;Wk8q~nbgz}F)^;3qsa@E= z*PAxB-ULFh8E*x~X-s^7)R4;^CPWTe0!RywEiG9d#_JyFGTuuYSY>lHMTRe-kWm7u zmnXmu7D`H%{Y9#kb6uE!)w?0DWl@!~Ieu?tzsi?+%si79-{&+q7o6$I(XfcCA|tIC zMXQ3=4gS)>Q~9Tvu&0!-m_k$+FH<^jKmO3FzRfDDfeVHGVi~vbrdZ(jXcKEQ0{mrU z;~hJv05zIe-Ry~#+!gT7Y*gqouqI>Vt2PMNP#>M0=??}SJU?!AF}!AYfg_?%6bT7A zy^@EJcHF&%owa|MjCL-TZ9Pi`x+Tot&$|8bn7-xMjtq`S<#>pQAvfj13WM%yq?3|4 z_&xSfIgbJRM)~2x|HF~oj0$T3;x4&Gn)gRYf7WNpqMpuxdJtFI98|e^KZWHrvs0;< z@QuUeRtw)Lg(dN_&)edOER&r7NRQKUdhSAY)75hnwD{TrAAHZNXY$-vf0)bBeKezYGxK(RSqR z=IDa2Rl@Ef@#HA)IR%=%qaKe6f7W%)NId-Jb=uVpm@SDz$pRU6m!D@HGO zHps_^D9-Z7MGb|w@K`yYq>N5h+Wc5uq8vC+^qhPjy(fE3HWs9TeelKU$h}Ct>Yna0 zoDQaw5A;AmtP~&mXZhyJ-)TR;`2q1#TA>~a*|0d4Te9ufVo~-KJ-gX_Hr*LLv6^=~ zO(z^ofJle=C+&FjO$NZ#yqgp9a9utgTU*-1X;SZ4oB6gnNk@#J0Y}CX|mw?(2?e00QZ?ka)aR!;*KjOPa@9ZY+K&vc<&mYv}_g93* zYrq6W| zTe3%)C5ijUTzH0nHNfj@hjI#>%Z7SERA;P8xbJY zj#XrqNxv{Og@pBDl7cDd!aU+kn%q|>BxpG=B=7alnBOwISU7_>qzT}Q z+*ow_%YW!@kq`XAALXZ8YM;&;SM`MOHsXb$AIHq%YMv;X#0ES-_hD1RkC^OKWQAQY zX<4H?-fOsdGGhbi=@mq)bTsI1IKnf3cK=!htlxqHS!;25Et)Qk>iBnx=nRKo5q$VuR7T0w8pbeOCUgkey6Y6j zcg{6#LB4f<_971#um?SD3*+Jxl#fYns3uE6U14~~F;50Y2rh0Yri?~JUM{yY_Lt;b zddzUlhvJ*U)dzS2h|XCv{jd4KO?ENoW6j}1l3-x!$;y$^S| zWwc>|wjPew>?Ck|q439?dk`!`1$+MK%enERv5unp#h-?KC6G!YUV?95C1FYoBd!nF z?B#Ox;QUEw(0zrt1gev8cg0#Hv%EJg;axIXZ-M8on3jy?&V4;!!c?i2vPE08EE zZac-rlWy_CMm#3qx%25QWA`CumE1*DoM@%g-qO7V*UkGTJKzc@4Jx~hFAVK0w|`h8 z(m!DB_GB~nvviUpJ>%H698Yoasdzkm%P`cRg~+*1Cpg`{t*83TdKRe<{a#V}y3Brj z=6bnthVO`cNO`U1Ju-ar4LN9kS-y+BG~qJe({Q6HtV!O!&r$t867mg1D@^<#GqKZt ziHNO%`Odw?MKKlYSBEb-q!E5^BXPuyM zv6uOc?S8<)hU>RNvF@xH3r*;AjBG~K?#BFcij+Ds%#c=7?5>xBtQQMReWS){p!z{{ z1c?b%lXznsCWfNQd@m{Pe;5{m>Xe(({{3gcGBC;UkT?cd(c0kDfA~@RC!Dd=R`D0a zvbT{Z-Q{-qxvCwKsI?E3dJp?-B=>Q*qCF{*gUknZ= zPw2OKv$=5k6KHt@8hdEh3b3fpcDs8|)Y4WR&W*!o=5gl2#jPp6DX{f_~QGgDm;&XW2k?LKsb5ke!kv z#!V=~Kg}kc%KUdzZF<&WY5aZ#Ax=Nx_$DR4aX{XR1axr~97Ia$qH-XDH7jZE zJ#C;YmU&|UH9*S0MrbZ5mn?&jxcxZ|_T~GaG62(7q?QEb>x7N{ilqq}07B78pjX`t zkqQ2j$36RpH9sHrEOxYLoUCj7(Yv!d*Aw7buD@(yVC5CNGC_p@ZP~f%-we)HZyb!0 zBRg<55;^VfUx#=#9N2(R+3D$-WNbu}KI|j%NG|EGax=s-eoiNpqUwoUrV_gu7Mu&- z7y|gwwG1?Cg-9O2_%HDTlh5F2&{w5+552N7gcfH|dw-~40}N?Z=`3=p za|@EsU1hOTOK*OlO*dwE%6`yy5b*mu=h49Muh$JeIn78esFDIpJbG-Csk)`TnJTjm zooN2B(jMQ@kn7l%&!5_29rqKf16lmR_xH%w#>LtPoTSAw#!apuSlO~OnO=4vgbTFg z1(g8wr9)5%{UQBQt~JV7V*Grm{cg@$!K!&qR8bhLlgRsPg2K2jM&T>7ro-_CSQy>Z z1Qac^Ycw-Nk2oVmmEuJyJKiAUZOQtIwK_I2@Ehr2frxODE6Z0jx^rBRyAcp^#3gzd zrouk$Vy@oz-BRQ!NW72Yyt+)I>tZ-21bfpJq6;$_K|)Q@EiPYPqa!lBkST1aeVf{r z0?`>?6VTXU#oK7K2(LprON~v*(c6D;#i9qc!bZ2SMC$bayWR#ghiY&LCtqUp3W|~4 zk8M`^_$7Ln*E7BC|kaNnFDdPATxw0~bm*kQ&$hT2TGpZhS*^qWwHYBH`AqsOg zmYDU_@0gqjAIm7@|5kgn`A^p$pY*TRv9O%eeM+;^EF)rURO8}H zCaMaYKr8YZ!j(Tq`S);J{gxVO-*M>Dgp&gwZh3yewjB%49z;bVGa5oji>=q?unBF_ zbpKY^HwigjX~J2eaCCxdF%nWOjn%NU=eojvOzH%V)3W z6Vp9E6M0Zoo?y*IkzC`0EG#`PSAhnP1Nw^);mv@KS+TzOE&O4Fcy;A|8#z5%{cL6lu_YN_>?I~RUAN)uQ%BB-Z50LcNBekGK zsOK}=P7jorEy)U~?*hNfS+!MQUAo+OYW+zHag0$NAhf^+0Bm!cemNWl?9~b{7s@2p zGOTn8+f|_sEYY|0T|`gu{Q3_f7`DF4I=0TjOd?QpYj$ejtkts`(V<2o)Vsb}#rW13 zoZ6=24&lh752rJ?;#?TTI+hi=X6QjNYimz3OVg6mY1i+UZ7ANjERRa~!&-Hg#_kQU zUCI3SoYow>LVq zZBMA=wap;2S=YI>2!hjPt#(qlJli4Qe2LdnXJ-qEE5dCpqVSM(Y<9yiE+d=3gKF=a zp`~XG5v*Vy=`x~>)IY=H+`F$rPj{)dfxuz+k=pu-1i$WKV6UbQH<@2IGXP zfVxx;x#Yq3gbGBcRhfLVb9Od~*`zTc70yywpa44>v763aHH)zuKP#wv`Tc(Ro592_ z;9}QI;idRADWgLP8=%iNTn(qay3?&bFG7B5Pu&?UTdgkskH+IfUe%l04WISp43lMy zU7xerbT=XF?g{FCF$YNH^PvVx*C@Z&Q?3va5s8vQ!*!6gS^Rw_~BK}PT=iZ-!5#NU%yk0HojSU?sz{HO3 zRIoZ4y75?)D%iSgv8dM6;M$umqkeH|>7z%SAtf}030(agJDh)lFAk2#2)~*(PFMBnoKVlRfFj#?h&nVB z?tFmd1ec~S{P2ybmy?6~^!ieL>(v~vEK%fC!rlA3%M6NuP)%pOmlrtz5ZDn% zpeANf4Ey*#z6C^oh@YKmpL$gr-@y*;g1c1Ue3~IO8_rSlA(8b2X!j`!E`RtSH9UIO z4-G5Z_*iJ-aY;*ww`ccIt{c~2M8it^A$AHuU;1+h70{lh05O8g89sI0QDfTbloPQY zthT?~+c$9rfoQW~W?Mi>>o!?kYRbri3+(clb#_6I3-L0rM{SGub+*?)NS#H}1C~dc zWDts*`3V#Vv~Y}HA=U$7t22O)!AF+pSmUXG(4>L|?^OMX$u?i&dxF%DEIzMtEkhlx zDwhRYp)u`ac(gbEILHpR*(=WbA#F0sL~cDs0Q=**+AP@M_PT7NORJCjYP|vjP+EqyJP&D=?%ai= zD>-i5R=P0>!;cr%eMM(sUyT@W1)Y^7svO z#4yApP5)K_&KBRTJv1bYqbB^+WNUPp&KY`-#dAvEt){^npzGV(0;>4fEyh_OTe5_` zF4&6YjAAhK5L^T!wK(g^Fd+{qk27PTw{F~M|gex9#eSvS?l%r91!|SB49nkcuw=*@e%5eU=%`K4aRTQo-lVJln3! z9FmSEEe!qZnIvgCo{h1uEZ6cXjmnnRp7Hc*r&Ju{-5X)-Mk@ZGc9=M~luL^bs_0dP z+1_I3XNLMc`R~ON8D1Qd^ekpIPL{;M>TxhWq#B}!(EwfKz>N}8{v2Zm*e7lEmn>I^ z`GqB27i~tYof{4Cm-N97UP%7kamx?i`E+TntDFVC_UN>d5Qh2+bFDMuM+t;Gk*%rTMbV*m1C=}%KRY9@?(xi0bscIm9d3c zHpCN+G=++RWOPh30j5SEnIH+`@9L62t7i^u!jV;z0%2^%C24)V7)+X&V?Xhi$L^U* z@2>o-9i{|^&q@vN73YT?yI=o+wOgNl)Gye+9x16NT57nnM28fcx6+=U-J2AnCtDFV z_LG4zj& zi_BOjd3Ocmr)R+GW$S-69))dRR9^-u-ikcE0aK{DJ$J^czP|af`v*fc=yL*?7WLGp zBHA~og?TIW)9~ND{?Cq7%bJ)^nG&=$8%ncCuYWOT~kF44lC zGesYE57N`kfA7`Nnz%3qf@LYMfB$1)qE}1_eLj*PgfFm?zXt12T_Y8{*0T^$cMNXy z@ImPv>q&K$=>s{RFX_$D0s!cD`yduYV?e(ZUqr)@xCsv%7J84;@bU|hcXUJHQ|-YpvIJjqhtJhW z@lRJYA3f_zxB5mHU7+E&<*1qar>Y|k*fo5F9K8p8d4yMJ`B-hXZ*%Y$y`Dmj)~SKB zgdDdU&r$3n$u|cKP>_>wHh(^h?K=BwH!;^C(C9LXbd<1Kaw>$&;s4>Die)5=-a=#%Ve)>% z%7bQ7#6?#%E4j?1&fRA617(1F&MD>Q2d^sz&Tk`rq?BO@uEI6jT+GH%gZb)*S=N+> z{%&lbHU2(CUskPDo((5qepWlS>)~^NG?HCG-U@X4x3rJi8|zXIaLOf%2kS<<_ zbaEGy%rnQKlT)0xLAb+0zYGytCXl@xnSNLALc^-%AvcBF;%iuI&gNsm60G;C0%zw< z{-J{*Sp+c3K+981g9CM>tSC2A7sh9rA^pc^SUHML^_(LH$Xa{K8^Iyi*i{^weU-`o zfu)aU>Mg zSE3hQwflo>pFHIGRyg*Gq?Z*uvw)XQ6~6VQ{_fBD69+~evM6c`$p%#YRkfX4cqco} z8B|$PY1}6$Md%RSUB|b}Mx7dN4c`-S{ZH{s2l+gku8$1k?J&n_f;hW!_eXJ5lMArc zgP-RpEaX?8`5~n%*kE!?41$X zOmjpyKqy7Q+?EUY*GfxIay|NWFq*4S#3(O1G$}_A$NI!LGP;#Cb6qeIg8K-oA8d1R z?{6_j5sTPhWSVz2Kk%8{5M-IWFC=)J5MJW}*l!O_mwFl4UyKNc@(faJ@nHVQ9@BAX z5rQ!)UjWkrY9OK0q*U+wz|z!!Bh@{mZ~mx2!FSpeX9^G`1M-<0L$vlq*l?@WhV<#A zA8;uQ@n7P$!8>;nZgsP_Gmgyn#L>kOYsfKO zZlJW_4OK6D-15G}A0j5Af{28%19EY90VA*CK2K!rV)Z;3~ zb0>A@)d4p`8_gk*mc*a^Ljnm>T{tj5Plg>~5ndHNKqcpI!jtZ=m(q-Su;Al$F$8*# zT|T8R^MDamGiHT6Xu)T5DVcQz;Mn|ZA0#WHXjB(aQ=Sxo2YQaNun0f+DLf>pv)4I2 zV|}yrr$|riNkR8@fI(A?qe`@Qf{n}7{`}xMg8u0!e}~0CJqZ_WUI-k^(S&fsa&X&k z3Q_S-ChLrF-{qxDf~8s+=utmNRe*GQPIX?gb|wAnR*U!Sum4Qwm`dAPM`P^rIkI14 z1keX=?b9QZ=Okgg>C#q>Q0Cq}9?pEU(51~1z$!(GkJ?u=r?3ADum`}kZ&h~_I!}N$ zqN}z*!A+=b>9F8f$hX~Wrxi6%Wx&hQ?XgGqV9H5o`q#`o(zWf(Fm`oU_lvvz?3y8v zdO?@j>L0(-hWzo&(~G272tv5X1vfyXW#)X_VdBLs+hS8QGvW9-o=bNcN3{6OyAR+P z2k=4r%s*tcWZGwIo@-}j-}95jSbn3plMA$f($9tOpg2=2r4EO9AMXm#>i`PoyUJ9v z+_8qXde@pUJM&vVp`crhNG+chWU1wj(Ix$EQXa^t$yT`4=3lLS+i@QMe9~_mawt3M zStu>O_*q7Q+Da;>pnlMIQcJfpW@^LlBI)wRsKNEvsA`;0*pvl}yDZ1t*VlGMvYHYU zY#EZ^7aY~y+7P(AksX8g&Y2Snt`Ni} z&zvZvu!p-X!ddU=f)Cv@z%bEKG&Krg!+WYHAv6^!lHsy|G2T{kf!u2)KVW+r^?G9` zHyZiRVx#70r4I@MYgO7+Hzb*WSX~>Kl+}o1B)AXS;c9q zz=G3(@^`xnr4!&}P+yP{u&7rHpF4Z#JeO7gL#%w|EPrQ~R1MTd+1%&4^N>)KQ?)BC z6l@iHmrR-3F*QZ0SZW{f{BOu#Q~ zH@_9h&{sed;nz5Nk9?G6!YOx`W$)elW?v55pU@S&l99+k!unWD?GuJylvXS*?3MrE z>N=%7!b4S_d=2dM4N9o2*DW!p6%EA_pGOwQ3E~i+JJGAVhmy2Yr^1_-$w1;r?}MoQ z@F|Jva5`z8OhBbbDYNqzN__Jht?6MB_-kAQeAC=N*9sy#e?y81sk$&C>+or=+{JG6 z<6C}t%lAUIa}oIgvYl8NGP&8jNNza=gK;5+dejo!Jy*w~45vBT%ZfH1d5xU$@|sR! zE14m$42NrwvO6g}`vcbPOQ`ezR9C>!KhhfOB_)<@;ovn$*9a z&nNG^{bdUsjLtNMQTHpVRg`LfEn`%Kg@l#_H==muaC4S8cz_)DvpmoM{$)D3`Oajn zol2%Qxlk(TAsL5S|89E&FsX9rV`G4E;?O$>42`tzqJ&-%&q)Tjh-dD-WU9D~H|xB) zSQ~rsSu$5?2pN=}#QE@Xle_P@z1R`UWb_=EOMaHOG;sl1{^BU+QVCc~c)Ir9xrvf` z+Xtb;5T!WSHqK}ppY}(lHu>>1bkJefvFp%(z3- z-uBe;;fr=qMVLd*KYy&A3>Kysc#71E@tpA}DG8-?MxWy|>!pX34{(Yd+sk&gdNXzo z={pd?nzn2(GiP$KML7d~T_gWH1_+3UlvaUafM%B*x)TG@+aW1RI~$=v$C;iFnBIGM zvp}$v{0;p9q(|iUA8a0FxlPYUBScCfQx=#Et-%_7rhC;}O~gxyN*99#V>$@fF})v@ z*7Frd9VB7hk zH;f;S)nGJ&GSnT5Udw{D_@tUS#0!BWA=62}QG{9>zxAe#H-;A-DTf{v_$X~uIeQr* z=n`Si-q(LyN82zo+;7@e4tg$Mq=Av>Tv@;-IVZ3(*L(j&Rps zJa(TJ$kX+M{?j4aX9QxqV`Js0p#0C=BrBRTcvZohUK72LYbpZbD0C;^KS_}SF9kb~ za|Tqa=)J+SnBB(o66~@hB_u=pUOak@fB$ih9se2~L{-fY`3RlpJ)i`njTyN_CH!;~ zYgLEQd|gMM4)Wx)=<=UveyO3#CjE=Xl`*#ESH0DUfx0-fY0Ki* z_IKzFI52+_id5Mi1uH)6`cT%nK{jR;PnX1^+jJj=4zeA8d#vtp| z+Knhfu;m@YWJ85@)s~4RWL0!=KENStYnrrT)?x?KAa_@cS%NREQsMJw8Fg)`ASp0) zs^q)g5Spn?^k1%r={tXf3;S=Jma9B7{}rRGjl%FVg$w6xx3bpiFvo4rKw3xsOohDi z=;DBa^_@QqLAPZ0#J<_Z#L&bdsn*M@^304BM#DUdp^!)cN(&BR98XjA{rC0M#@Phc z^bDHp&K)@Yow4)ak=za0)?6=ktart1+6KL3;LjSH23kwTE%;7z#=7L-Ej#XV zJBb#>pGfyK-F<#Q%~y!bmi;tQ_7oRSkUs!8{jpRETG0;JSF}pCdd+lu9r98sfTOBqKKWD4R3#O*0pSX=TjNF3@ z@wksEaVud;vK_?ngl`H_2`)?dPQ|_ZS#bGRPOrBM_ZOz)K&P%Ee=8Q{?~k?T@-Chm zW5mb~N6G7rqPp{5*+&9f*)dSnRXPY}F`+gI~2GIFqa!;O0|MsWV0DMl4A{qWOBd+JSmYqZiIuNc4a){REtOmHZ4w#&8sH2|(h zOo_dxuCt?@D@+SJWEWMM)ofq|l(mS?y;JY_w;kU+2))}a6ZH3LTNkvz z!}qj(`OEGRZ7Bmq3udICS3EU}`Y;&yN~<_Rbw~ikZqNRW(CZg0d?lvu)@PV1C&Kdi zFCAGHS^<$D*#U4%Y-BZJiy1LAyRs)O5r$SgY7yj$g5TXY3+zU|-BcSHg~OXXD?GD< z5kuEygSCHrt<8k0uxe&*V0M`49H80Rc^Rodpk<(4S>8>#Fehr1d=V*aAm&4CM_bOe zS$Y$?t7ac)et%nLukGeIScsXnGO1N1sVm@|jOi8~m6$8XxL|sGAsu4oEEj#HEG3nk zaYT7|p&D}!5BrQ&-(n-1i}ZJ}x~_d7*M^!fKwDl~pu;b!q;nKKed z#xify9$&SAMGhq0?Cq-v)=w6eZ3mYM>KBHw<6igG?B3l1PM&?_OfwMq z_3c1pB|eHH6k78gy@-H$%b9ll9Uk%^7=caC!Bwsy*qm;WPN?Ftz- zv3YIWG<&LAU!J+0DmpR(n|ZSj#zeDlPb>o`u9Ef)t0t9qNwY-_ck!nQM0GNf2}aK> zdrWJY*3eDh+O?XZJfJiLl9i!yn#;FKk~dWzq^u(U76)2{QEIF&EZBs*_neq-YWA1S zEV-K}`g}z?{=U{OIjVnJL~#}&JP(WCnlbusMbs(k>_y6!+5r?f?zr{w%*>y?b%0r0Xa57BI+EKHgCQ znpk^%&^sA+lmcVX^jfvVNDBCjs%T zSuOv$QaBKe??ZWv96|y-An$oyQ)%KL=w0%&rW8EUTm1UD?)JxQU^>uxyGcix_hVY! zsCQ}?A7jz2ku1_CErGCiWMCEC$4Q-aU;T}oz!QK%E@1E488MC}=UY$)-jUAlVl+c! zBBkP<$=qmgq4kgl_-0DKTfK6!@h%gvD+d7P`;Ne%H|X0~ z?SXjGh3Cek?}prqw@sKVbAV4Yc_qZy5bxFj4qFsRf9-AbA3T#poVIkUzr_u71T?`3 zw&5Hkdx)RpGYRYtfq%{Yp7fVHlb8{VANpQ8CvI_piAuDLoLt0q0tzLb%T>{y_642T zheyOAq>PA7(V!Q;^Ab^SfTcu4K$ti3o>x9Qk!oSk!*KKl`*l;p>YZk+E4r)(arodIF8?os_MNA0$uS7I@qsXx9*8TpDgJ z&D8Gv%9wiX!qEin&g+TaZHA&werB|rpe4}L?a6;_er0K+7N1VN_Pj_5neP{yQs3WN z$xJ9;26*;IeN~+RrbBgF42D-A5hBKi(a^N0p#evJ>)Gk$>g>NSyh(ukCgh<2^R{Ak?svnSm<)Wbu`xvzYbO8XaSlpP}FCHJETuK?H z+%@d%fXKFW#FVYtk7B~nd-j9!jp8ng@TigLMt*%Yls3HrL0PVovT%dc6;_+G4NA*# z)|}RCD46x1o10XU1rh1$t$Cv;)1S?%PjKdmA{bQw5Y4QX0#DXcgS9!u|Hs%~1pt=2 zKU%%!*#9G2vuFbzBg=jBkibpuy-f$?cr`W?&1)m~6B5%F^EFULuI4(O#=ai} zyKAt6T<`U&88F4i=b|{M>3Ahyk+W`))DCPCpgyNyx5rpr_O30Dm z45BQ?fLgQ4HI)}@mhlU>xAqgpN*j-)j3IUVg6(f zmXNHZ{I-?wpiBvD+{o+>F&SI$*QXv?dpq_=cqyKz=9KE{Em^alW6Eu}*{PCmK7Rx0 zUu#kknkfN4+ACnUD@5<@X#!1>BR$u|!&(MBXZ2dU;OUfgFea$q0>B%D0ui>-Y%IDn zvHFB!6y*!UQmm)tvv8j^_PmWQt6Me15%)d;4e(X4cQ|_NtK~nFg_j4G(GxSwM{4)c z)*gu)G$*7%<3jH~4LRBo+X-)*cmb%vFXeex|e=w3c(0k1}Y^jgU~5ri$tVRcq$Txm6pn;b3cf6C%$kAh2K zAVg7UCLueG>W{INb3K5mj#BEkHh1V!vhuPi=(cM=9CdRjmt-T!fF`9^fqe79eTyJy z9PB=9EJG=VDT$YSb*~Wst8FofB1h-{9G&F13rMDISI#0RphHcP80=lfa&?7Xa~fa_ z#!5*LwYE5Nf+}bP!8WXsRsju*;YTvZr)Es&B|m-b$4Ovn7y-R?+YzFa_VnqcS{@I*ExTi?x2FCc5~>A;(>eWhrK|$V z%zTyU+KdzY3WWU#Px1J5m=pF0U#3^# zV+%hKHxwg@XqkuWf3#m&34u=Pr*fa`!PeC=GJRrATo+1M8P9mXFai|adtI*{D=$#s zD;Z1(FIPBUJaynq`L8OMpcjhlpMn??Ce6-I7Bfjg0A`vhI|}h3WN3L;9RV*6fve!j z$X%QC%Hy7bMo)62j2KW2;FnW(*>g)@Ge%;x>Z{vXA*k?&d zO~;(Js(PKHzC3u@Pe8G*l^UxrW;87^I?%z-ElOs^KdPOs^#NPl4_8%B~r&6nFqoYMi)aB}*<>Q8WHa z^_oHdQofEQvmp|<)n5N}=#zJfrQ*iTRqndO#$QNFcDU-VHe01|sFscrm3+1?RsW=U#$)S}C&s`s;3L@t{3*{MHjwM$9 zMO0id^Gb9V*@uiy#~e)GnUEhc#7(+dgZ!k zEii;@m@wcK(l-1|evn~c_ViO>`)EV!{P)!-o7V3+_j=8u@UiwJo2Njo?atW+I6l-6 ztFqWY4A;<08th}u=T(a#-L8J&C4}-|H;Y6p7o1se;vM2~ZyHd^N<3iM)O^t6BH>Ba zN$HAa9zu%;F=Jy(Kq8_D)Z52XE-2*oCkruR@JlD&M{Ai3{gRwKP?tVw)loJwr=-&B7@2H%N8!%p=um6`gFLt7JG z8gf;YF6FVQ8WHqmpI*-(j0bWia8~YtX+xiyX87wj_)zF^4Afa(V%37vir5?gI)z+9ts&DjHx{EYU#I3+ES;{<^DEs9c(N30$ z`a@@)E3ui*gDbl2qGn?7S#^vqSg;bY2k&YbWgNAI`D~ z#9DudkzX!je;dkXMZ?YpzkkTN>Lh#9?VfpT+ckm$nmNg65u!NPLe2V0^ z#q-Px1F{L1hP3wOZspx*2go|@SFE=0xk-tA22CxDqU3PD3k6REWDYpwi=rUc2LhL3R`@Szh-LRBC7A z;@n_g|MyZxg|9O!4&Jg~gMeb=tlIe1-{-#UKVHVk4Krlt~xw(t9Y)JOxcyHa5Xzsy0_)d=*IPw zf`omeb@zmLeQ2B)wMZ2u&2r-(fxZQ#AnhdRWA=Kp<>h zNP$5dYzL`0mD;)eslFpdkZ52|$EDc{v{BT`mW5<+h|R^(q-4@JG`QWWAK@vsLphw5bH7L=C8_5i(|8}q|i>|%<@A>o(oSGcv%6{cNARuZEX5My@~?vQy%U=ouW-rZLY+ZY_)$sDnbzrF{8 zI$eQATsi45Dpn%R4KvvX>?gFA+p@sPJYoLa@t9;^r-pKtJ#%fNP__`fq(#FX{tJs_ zpqQ?q4p$lY;Al9e{c>bMddz-+Sy6S^KxDAc`%Pe=0#_9K;FecOux0!xr~OxaD`4#a zEqrPZuJTzPoF}LGhb#Hm+xOBjCB!yqP_LNo`zJ_txEKZ*7l@m2FQ()v|EH%5o%ioF zAQ4SDcsPh)0vo`Uy44+uchiOw8YPXj;STw&VC+2 zB_JgzC~9eFb^XZf2)@eotoUa5m(Lh3x-3BDDzJ55R(T_?XoLE`;CEk)*>P&a|&yElDIx*EyJT{6`L}tL1_~k+u{LwX6Z|PV8B4WxKf{%r)4`uQly9%4QgSw`?-1 z`N|=dm!CM?Gi+6`EI(|f?PAz0{ItdkaFZPeFta;BS421rb|1+?C?aWgR)J;3qj5We zj;}rSIpHX~%ePE0eVTeC-BN`W^2t4@OaETPN8k^AQG<|S}Nf?Y;Nm6P||x! z{ooQLtkFO>#JsikeDix~^eq;PR6=+AzlGzAi!Q@E04nb;h*~mASa?tdH$3u;DtC2r z7KqeAl4tyB{~2vce1Ky2VOOrcHkvzJMs2-|q(&~vQf(4{<$0Ni>bwGl?WOvzq~0aY ztgurYu-P?cv#^uo9t^f`AnQpa)!dq5=NCthCinV@`6#6zoV!wRSoyt*!LNJXM&+(_ zXJh4PTHWRROOdMc-Qu(UTJ_dAM&3E?!2eeRF?t#h9RRNoQzPz_!4sQz-i_K@erD{u z>=mDvsQ2t@#O3{9+KjO$kvmU<$+yW}qSJ^t2Yt+V0#LGA&uR$f0W3t)y z;aG+9O-(Qo@Ba*vTx`i7`$S;AV}<(D1DU3P?tdh!i1GCS2Juje%n;^v`H=NDmnPdx z@wu>I0tbWHRBA?#75JZh*%Nvy*;mKtzCIq=f^mte7f zc_EOKSiD~50BBq%KL{mo=K7W1`q|Xh@;5_7>_bLC22xFc;Exx|#wsf}*|EQpQ@|*% zh4Lg>R7`9#KI{NZ0_cU_)wY3GNhJubw{GVPbT6MhoDBptb1Vvkyuk%6sC_`?vwB-6 zXLm$PPciIVraCDb8WZ{o|9X|$B_!2*6MJbVMg`43>vH>YAr}(-RSf_+f;`{=g$C=; z=nUq3El`$Q2qtq#)bm}J05ZNeSvf5Q=VSMjD z$!rw>&$1@g4wi={4o|()+{Lr!9Q70YTN+|I2H?RC-UJ>dSY>@&u1@e*HC&rJc1Ji; z{uLCQ+c`^!2Z3P5{D?!haU--p|m{LOE~1Q< zsTvJNK{_A)9VeOPV;B92b)ATh8B8tRAe*jzV`y1%7Nwq68l3!Fz*)R8udv^9pAB=% z8UmgA%JIao50i6bLlDI&@-VrZ0HG_S+1+9pj(rT#^xF-2#-7%;-}1`O^>BXmaQx>H z$&O9{zL#KgUai1yTUuX%0Xy1D9h6-0a613G;^5uWs+5lFF$0rr12P5tK|#HA));PP zYU?oQWxHD#ZAUE-Kyv6KS4aX9*cYRi9{0=7nnovl{g#y973)Qa=CdwdN~TMk^^VAi z$trSo7Se|)jSUsc#>&Vus5}jZ(Tpc^11sT~l=gFPeqJdYqT0I3|K3!B>OjaOoRoal zT}JlyA>~Jn!+X322G#f@xDwyQq}-y7Y+Wb~m8;Cbagcae6fzR`1tYYc}7QUThpqnV&GK&qLA zwebrJVQ&wkA`iFYYg(8DW8o+`^@-Dx-M9See|bxYq*%yv4?z>SRh6pb9+3*VA<74U zUo4xcb7}$(wUOZNP&?{({Y~*Sa6xiLme=cYEf6N;8^MqT0;hvoW-tVCS|kv-1ig!?C5a zdCg*KV9c}5vh=ATpMB}q^NbZ=%#WD?j?#h`Hjx&wQfTK5J|~!jw z{9&=(SYKp>H&?oZhow1HB@RVKC8zF%9Ej>{W=zqz#7|*NVl7;)$FVBo89f zvfOmYjApv3(fNngbIZ4gD03ykNaHOQjkV~}`s5HFp;?D0N5glU-O*1akPYDWyH;92 z2RsF2M8rQq4!s@Cp(KBNF&Hm39#@Ld?eT`{`pacnd|37Ebrh#_;w|k1hRP;*`=XP_ zb2}*%G}bUqCR-FVa)10X>62bXdsEb)%;hG7-dXaRCuSL{+ty+*_|dDrWp-{T`#+wI z1aFYlG><@DLgf@2x2oIsFko$vTTdL&;pmSOAm;+et)^AS-Gfj{WJ2|-a?0PGYU#j} zI`Z<`Fxb9R5!CU{KEaHFe;B8Kh4k2VI@l&gpETp|AWg-~;LLzkP3;4dM!iKdelxF0 zawq~(Y*zb3d*j=K$`S~ca)Q9Vshw$wg=Dnj9C_rPPl+k;Oh``poU3fdMi?+DxuPU> zrVFlbmB`>(`_pP3wp1YA$+e-hfNl^mr`S3_e9y0bDVam7tgA3~v#;ei#VsrXs^f4} zqmj+2fdU5K1qv2f@4lJ$X~mk7Irh3+T0-L}Y7Z!@YBAl&YptrDtI%lNCueiz+} z%{g3t=b12I&}_n-caqbrg-Je&ZQeznWgYa0^J5nd8jM}olTPeW?WDKmnbrCI-+5WC({0G1dXKFnxdSDFbGRzxurrpmP;MW7JW7O;!n4qW?F55HQnJ4FE`NI_mKy;6%xMA#M z7M`}C>a?rE&HgRFxHZ^R3Aw@xMve!k1~p%e(e_MIIG91E1j&5>rw$64hibQu7u(f; zq~&%mrMMf?N``UN2;n$?XTYcbP$?a5#rdxZZIbSG3@8HVb0>nvJ4P=+@BcvMFJyTTuLmZ7~u$)pbS=UFnp_c zg$=%I406ZeSag-+bY!P!Du05C9&O~rR^)yDsKE6VSS+3QWX>N_FLXI27nqZfBFJ6B zHK(e<`LUuO(S~z|5m;9@#4^SdBHnK#zUMF8{-`-D$_Pxr+y2mo7AnccDaW>hkUoY> zvKcfea_5@koL-A7NE(isG`1wJAAQa_4YdR%14fN6;)7V69vi>t3sKf(k_=@B38@$T zpFHLKKjrF8S^|!@m*Jii&!U%j9{5-Si)U&ebwO|E1(ICH%%rtBs%1>krX-DS%2Tek8#*9IyR_}`ez>_Y zQ&Al~+gX)??%~b3!9?&E3n!(&CUPJ30;^p+8V3xx`Cjvsl_5Jynz=r^DrwRz&`kq5 zjpH*mSFUw;p|Adp006cftpJ)(BZ)88r?Ic4mx9v37`MbZ{(0q_mF9w1=H9N?~jx2eXT_jI;2l{N0X zkY%CPD*$Rmek{aKeXFq>-*V757i%m|zc-NzJ1gO;2Z!kDL8a2UJ;jgZHJRS|fp}UZ zbUGI^)!@s6eP|pJA?L)eeuT;Ht#vc#p0xqWx$PxFnCBcH+LG|LX%!KbVc!Who z<5X*dt!!`ow5j}1&i_?C41{`Awmf5OB@{j!LW&AWX3^tfwZ&SBMSB9Xm&0GXF!6!- zC!yOr!e6)qxhZI@I=&(2z!7E|OIO3O*!$Wzpfh6-bLWiJJ+ioV4HpBWK9qw&S z%UL?am2g_Mh>;G7K+Hg_&SMdJ(xZ%&g|xZi9%Um81d5s(34IhEzL#&)h2N zi9jM|bQSL#wXd9#H+*eyp%8(sd+;Hd6s@^g9Qe^0@4Fd z?IqvsX1rtx+zM*i|IW1Japo=Q@QJ^S(%d;CFj(B_@Y(T#l3$3eB9~gQW-*27^DJl* z=~^E%pV5LwTREZK#GsM9E;@D0Ylp)3JMn{cEs^6aZQKR0zr!D|2h%VE$MQlmTNLeX zX6|lOa+JJ_A-twsqCmOWP08W-lYa=$4)E`{*qh{4p{w(z=_%>AqrpRwmbBs;GWs|O zKwYvIa?J>7BT<8|yq7;NJX zJAtY7Ekl^LFII{_k%V(mW@Uggt!$wDCoRN8ET}MoJ{VWMgRJ zB&bl6Yv!zx%~tJ)C*+vYe)1^uxiuq){^!WidY7OJSY3|SV9g0!jRP1bJwL3arMbLd z{_y@1y^{JCikerKfL9Kvgv!;>qPsG$9dOeP3sWD!%kU|5N)8r-4xF9~i=tk25$ej} zibf&&?A_x`S4)st8Tsw;aPZEe1;x^y5}wd2f8);bj68-ux0uKL@QEeLNE&1hf3GF9 z3Buu;4JS$jG(t*oerfjjn0ts)a#TP=SSOMVs<)O5VP_0^^kZcT8r-xfv3;vYdY-5? zMp7mdCGtJbRt)0VGTpX5Iqyoc2)?#*Q5k~1{FptH31?b&$2a%jPb!aq4LR9Y zhwc9ObRQ0iJEGy#OX|CN90Z`b0ts~2%-JX-EBUb0cbOFIZ#EOy8GaU3Cadf2{ylevy?>t6E|7 zQU}jsL6j9$1#N5p#%A34k7OD0-26S~RIQ>ZZnr9I2~1g8HN(qaVYnVMP!NhH&O;zl z;Vqxv^}51qP${jl?X!zHq0u_z%fw@IK>;&@m#L&VP|_O@aR9 z<|c9?Hxd*Y3F|AzHyG;X-{m%=MzLitB1&IIK9l8*+gpOs>c3yDm}u0Hzsj)2J5G3Z zBU&&9qQ`{Jx~xMUe2pw0=_6z0gA{vQhJ`u}Yzc0a{QeQkEgtBeSqcsJt!k~zf(csK z{{Y0h(?{JQbU!YRq=eR68U3tH6cwZ}5lm#S=|aE81{MBoZQSYU6AW*?Y{5^B_qc#$x#iHlf%HqejA4B7}6*;8w zldhd9IqrT6@Nb z?Rj7`piHnJ7*|P5a^Ab zaxeQ2rdh{5mhi@}KUOPEEzjTlKBi*8c~Pp}7<1c?FVWcH z+iLR?gt=x{rucLX0}~$ha0ngFPWm+N3jCdvF}_wtQqY_y!sFLRf{fE{)g}n=Op;~< z=V-T%8I;FVfGcut9!x z^ZJ#sw%)MzdrxL=fG9dfs=6GAnOO4KimCMqjH2D7b2hcY`CI)9_hlggwmT{(0TOLim4hG505}s_FO9G zat;>c$CFE?p}CE{vNNZ?uOSG1dqK01hgDtG`Wp+Xzj6P!#bY3;9jdGrn|zLVA>o(ZMiPs~&ciOw&>9T4(+AU3om=dgqpbRuKDL9@r-Z+!~Yo#|r>Q zPj%acJkGf@a*p40mk%N3Y}#6Uv|9e&MYT40-Gs0*`}0Jo@R%Y zffae`Il1*5mh~B#wDt0r7jq>zW-Vp`T!OVW-C+q(wFaMyjuO$>yw;l zPc<=P6aWnJ)g`<#3Bujj_6_fB=GQ7KNf#&Ejpti8XP~xwse>Ve-A%!YNy-+rV4n(?~q! z7Ax}z#rvxj+$@4RdF8vet;XH?+XQ~4O?HhkJMSu892`4OLhQ4>e8W zMYQSGe)1nxcC{&0nA8jIc)Hu#J${XNs6?Uh;YcG8Cn@bAg~kG*e&)S=Ejc*?AhXL<{(e+<4t#Ut%vB%kC8<_p*geG=Zz4ybL?teyuyFg z_~xu*1^n>r+cV0&{utTjUCjsX zr8gcL@jd-WIbbsqfWV1rLUAaeu30b~MDv*-zvm5{w*l;GX&VZzn_!2QzyCQ z?N+Q3s$Qw2)%Cz@WtX}8VPQ#XiDwYT9VoQ`D%lRp;(hmey2~UZ$ zN@jM(xiLDuhPH8aT_gTGWeh$etpbxtW(y{8zQb*PNTqxla<42t%my`u;7H8t$Z_4E zpQbn~wcD1k8Z8aX0Ww5mxa_2AD}lmShh%?Ynpa-HRXXvfbhU>l-l|ZVL=P^S}r( z+*ap)>V!F8zLXz{Qk{xW=VBFBU441UQ(n^lBQ1_ISisGtroEpjFrYn$a4=?7$Yk#! zb+`JC;Q@S@hy0!`!C!f!ogkP^Ke$;z8}rNjPq>iA(IDo;Mzy1+F21TaIs}pnT8qwc zHDo)`tl0IY`81gqL$YlHyT!=Q?k}`xG>C&uw@9v#IvfwjhNZz=zc?&y zBcZg=w=nh_=c%hv4SnoTryIvoao^Q-&#N{*c;85x|C7egcjIWP;Pb%r>Cy(+#r>Rr zR1a~rpR5w&`!@VY_m zM6XXY0Jw+?TGlS|7tI)CNFZ>W0N`)tM5HtNEXp>fcu*nVSK_;N6pB%3p_3UjdGW9A?s%81bN?>NFl}4txlH4Zi%5G9JEsfzYIgby+{@4!g zota-XuAN=eVRJ31Z5M0~%xQK8pusg*ImiK>o85z)de7gk{i= zi+Tc5nhRp@HLg&^WwzIp_r(vMP>n$k5ujKhbirhrq^bi^(ya1>I&IrmlmO1mb3p-W!{WLA25GyoluO6Uj zoS=1*!#>Y~{!3%t7&xl?3RI*HSS*^#PbK0E=35QszSkA3aP$g#53g(vvteM7iZ+I9 z!ZU$%$g;2f8Jvm;MVvMnj!vW`6q zuU0hnzl6~)^2CA%2h16fS9>h%MBj<{(A@qkT}!PC)V!p0)WobsGU^r0?8MMF|G4-&b?x}|0ODd08 zU{ec-Q`$BpfYEq77|{EEMBf@i8D$pYs&W1pdb?qgj#|X7X|eWse0hE^ji2rx61kf^&7dGVCVt{zoN zTGGVO>V&6n*IDim1n*(Z6bs!l{Wn)#GZpgAl!c_)*hb&@76$aCo9^qpM^pO77=}{E z2!x5HH0P;wku#8HJp`aXStBOf6#9WD7yro&Xe3!RXbFF@K51~VCTfQ8`Qd1ay{^K3 zwJTE_k>bv`e)bR6EnW4|&U}SWA+8&>N~%p_3|jLE2nL)0XA!mHrozs>R0CFm=~jwx&7b4=SNU zu%1I>^S1JxbB{Y0=Ky1<+Fd{+Q(rVDT1jIXbC{%DB-CJEc+}IO-Whg>S^Qy0=zb zBtEb+@RZ$5K(7uC|d<^EElYYxB*`<0z{xk~DCw9}6Dhv5-ysG8XTJg)4BR$A3DuJjB^5enY zan)G~EfD-IAl-AWhkf%Dt?zoQjo#(CoowTf#ydp9-;a>J5<5PW=pa^%4=xx;M=#dn^LMIiWx zXsEIqi>hVqa1MMAuqmAJvvSs)0sHan#=DCwGARkzk-4TNa~w;1!r7Fcqv1Dr89rUJ ziE7y6r8q8GF(sqg_@@5okHM%Uk7P7QOzV5Ri031A4gZoX)&_;49zNI1tBPhZs=2F+% z{x>6G!fb+-(PU0=OVqr&}VHnq7 z9`5XM2nv))jw(}kR0}Q{e?R=}t(Su5O|Z4`CQX$LuYJh1jT!kC{P<&T;YTcD=PM}F zntA>qSR7y+PWi>@Luxj-$U$?tO#$(gi*)2!KC2S^z`{8`O%k2B2+_aI9R%gLPR>JS zoyV+W?my5FPuR9qTEFcag-7$i8epNFjEnf(Sh^>feLd;7X7o9IjwZ-Gv3 zTgY=nuwumi3pes zd|o;P9f@0y!oH4jCMI&*=dXZ}(UD7suOp>Fqi*tj$#Klaa|S{v-O74Q?#Ig^Cq`4v z(YS@FKm}sHwWI~y`R=khx7ChfBssrAdyx9lnNDI=8OPaOTsBHy<-@aTT((3M&|PCl zR<49G^dW|`hDfw#3A0Myzh=zEZ_=e_tzbn z{(M@tp?ldkSR!QVy0OBX8xw)scg6!Z)Q(@wk_)>0-}ZNt_%^iJ{+u4z zL9_1B+n0Z001>Y{wT8H<7&rJEGZHtbA&PXlSStW#fm_g@)k*$_?zZBrb9mX>0LOL! z-B?oM)Lr+(f=2Om=jq?Z|IhjTJ75d&<$)G#d&iUKH&8kP{G!t+#^Us^ko-K6l+$>y$$)~TTt_tYK?Sxm_o=(=vxb*ub2l4*(>cy+P33afGCY3vkO<2ZZG zO8@$$ZpE`HQ5UafHQ_%WspsYD+0!Ugj-j1d8|Nt?19xk9q6bSpsKp2EZ5E>I+A@E< zCe4TXuU)d~#L1phSO1cJ_a*FlzUrbkWjps@ALVXn! zn{yHh1tB@8ZDDIlSimZ$&>@3ed0gSg5nlyIMRP2cnwuN&sXSK7U+bVrF5%AhE zw~3m7regdnf89O5-@wR`BHlqRhu-U8Ibk{>j%XAMU9O~watP)$*cd(PFc(r_X04rB z7&z^ymjW}ZoAr>JvbP8@{z20?1+K(G68#Y z1a&GwdT}+7&JeRQGyN{k-dv(b`Zt%x+kKou7$-nkJKID2|&a)D&_d63KX* zl*u?*C=Ay_k2FXflxWV;ge1oE!%O%RU!uEJ^=o^0y~=#XIU*{wRyO{;&Zh-MZm~@PdtC_ ziNar@|AtsadWp&a^c->rJg0yMBfsO&@OaQw9H26WVUJP~JCCIkQh~c{-pFKPs%9Bt) z;s6TR@GmSC!!SalF&x4R3rA=5H(}^kN4?j993ojzU$B6V7k0h5;td2HMb7kJ`_r#* zKdIn%^8jE_`2X2RM!%v2`rw?R>2oh1*`s<4#lLSE0-4L-hAo1hKV8w6 zYH!15Ks2&4s_@UK{vW|OXXDUk@ePy1*+Ts9fV{ET;X60=UX1G7c&Ijhek>d;4*j# zv^|ek7VEDu+S4}~McIW$hQv=mq~Ir3*QC@zS(~FZCN&|=rR2d2F&N|8|%ZQDy2PUc5u770$%VVU)Ny&2g68-IliY;!r zgW_=~I;i$?2Bt~8s+zb0CYGW-VdH3FH3yslc>d$@0Ds-LCIl@@wJK=qSM?{Pr+S;` zshIV|B}hNC0+!VH$&grr=welpT=4-X=(;N3`Pdbj!wWukYIC`@L>0G8<~dRHX-K{a zF#aF@B3|@0Irom4z{{wZuU$$EJ5+)HEkbBvv&ZpX4NJcA!r@U!_`jcApqn?f2FKY8i-wG z4%B?#+_>bDSVe0KJXj3cO0?*?ntGv9zZuCG7crFcLw!30P}7DY#=V*^=;z7ltUrXX z&uKqbdtC30Ao%Fkgu+p1wdkX*Uj@gehGmbJ4bAxaB51ZCaE`KiB}Cw|U5s&GhC9@v zV~|%webr?%@jP|n7^(XB>hc}WfC1Yj6##Gb5nWWgA-gcq${SWC8Hn&qbw@Ku!3v39 zyu@#!1w#}X+*_lYSqvaywc3if@%ASFMPLgl6Y&dMDR!G#5rinRaSthj&1;bEx+|e^ zR1$xnT1-lSXmPhve(k{0Q1sL9SWcs*zyp=Z^Hs5jB})`*T1`NgwXy7BJ98jDVKT&* z6J`*pH@JfyApuM?3w7FXeB$Ou_D^Ar2+wVskRz;VFL*a^#C$f*&YC3n{*(AOko=`o z-+9t{!Dw%y9n&4tuG+ieSoG%cXj`DUPZ8kewJq@%SF^f`q5N-H^ArSuL)G~ z+T#*e)Q;Q?(uXXJH-;4mr${nEcsKt|AQYi?#BoZ2s7mXEb#Z*44hq>hfN@dUR#>;` z=s3@Emq2BFTWKlql5Pa#LeaOa4eL{VJB_BB0qQ&yZPX;B2xi1t?Yucwva*<^I_zr^iCVtINiK0WNO*32443t~ z$@AvL^E;1LFFzZ(@NIRVOL2sUdmX~mmX9^9x^*!l4Au~k8j|`lMmf=rIrEZjh zT6>itJpv&*pd|Gvr+R=7P$FG&oNZ4^Cz+wm38bHr+yH15WsloKIzQWx2)^AS7u0}W zUS_Ob2x6~d%q{q_0tRz~8nR|F_qB@R3oG1{$2o1~Eo}O>0arX37t|{Ru6v2ikX2%X-5PRDeaRSUpO*ee=RCM@!iAqTb?ulO zHvjcu<76-X?DC?7fm>d zyUl8tyio`)il*7-3oGth6-k*tLob^QbW!|4=yt7w7nYSzCkloe4m33rtZ9D=*0qcB zXv=PJp+Fe@b+8d?z856!c7mbdG?BuLkluH&I=Z<-R_dDZwd9Y>N%IfG0PwQr@E>9~ zgHaut2K!d9>mjr}Tfg<{^`K?Xx>UL2Jn^Jp4pOP>idc6^4r};p>+3=hyj}@i^N?05 z;0G>k{`tctAGvh^;uIT+c}@MeM6eOm9-Mf+PLylafGVY!?#+4{usO9G)`m=vX4sT~ zZisFROv*t4jO4_7y-MiN7bgT+DaV{t=6neCzCr9+T(q`|QxVg`n+!f=~b7-tuwvXQ;Y}@+* zv{02e`)UVQgZC>XJA4&m%PhdRQ3{NqZXqqJa&aa8uJfgF6?0WUB;Qn_GDQUkp5AO= zzG-F8$MG9xe>YR5l1fXu0tX8?A}uY>XW$JS{Nl9H%+FcHmOQJ!Lc>xY`mEZl3KOB? zWameHSrN6}hXcLbRS$tT9^qOr!Ku8AXJ68dt_>q&m8rl(6rK@&34Eo^X5*S9qy!Sw ztk0PWin-siLb%&DH1nz7WxkXb^!ogXX}yk3RkIPnClKch|Kzri5g5Xv)JiHmN_FoA)=ZReAG`z6#^nrp2O9I#O76U{Aze6;kkT zqsKTO6us<)ENC->)fYa}Id03^ra zTYNz;VH?;pOAbK8rNLq@>2gOqKib6#Lbv{ z2cv@*I$?2nuP^k`z`TMvBojh;T~W#4H(_z3c_!~ncw*}Tc0>b9M0NZj1)V|_G1f0I znP2Ks(Gexu6tT{z{!sU7+wfA3QPgiK@n1s7N~f8Jj6BS zAEMK~P)_qVeg>#&1o$F6sv(D!3ejrX3mHA1Mb-|Rj|pXzb;>03H~rfMO?tJRjhY>? z`QtC9)LaYy;gc*K&fZ+rn(l^oaz7Ymf1uTC|Lp-miQf zdeZJXENs|9*;2ns3H`@2Z{8*1WW2)jB{-qqxoK*6)Nv+;~T(xt2Q6r0~ z-x+3|JLr~B&G2j$)s|^Uaixw`*<)v=Z2G!=Y|z(!$cbmX@L)D7)7#3F#rKK(AULz) zWN4{RX(ia55X8!IU;r8LREU6ex`@aoMS+AJa#|da{|!e)P>58Qq4b{dL{yzTkcJp$ z+{JbJ1FOhT7&1xa+dABK zbQeRe{6zP1 i=23on7xL^}8XsfSb$Z;Dra1~SoD;z3&33pVqH(*)m9CEf literal 44005 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 From b640f5926c55a9376b8d2a5d55b76abd32f50658 Mon Sep 17 00:00:00 2001 From: annplaksin Date: Tue, 30 Jun 2020 17:30:01 +0200 Subject: [PATCH 32/83] Using DataToMEI as element factory --- src/SymbolHandler.mss | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/src/SymbolHandler.mss b/src/SymbolHandler.mss index 8ee99f3..b02493f 100644 --- a/src/SymbolHandler.mss +++ b/src/SymbolHandler.mss @@ -136,23 +136,11 @@ function HandleSymbol (sobj) { function HandleModifier(this, sobj, mapValue){ //$module(SymbolHandler.mss) - makeElement = mapValue[0]; - nobj = GetNoteObjectAtPosition(sobj); if (nobj != null) { - modifier = libmei.@makeElement(); - - // add attributes - if (mapValue.Length = 2) - { - atts = mapValue[1]; - for each Pair att in atts - { - libmei.AddAttribute(modifier, att.Name, att.Value); - } - } + modifier = DataToMEI(mapValue); libmei.AddChild(nobj, modifier); } @@ -167,19 +155,7 @@ function HandleModifier(this, sobj, mapValue){ function HandleControlEvent(this, sobj, mapValue){ //$module(SymbolHandler.mss) - makeElement = mapValue[0]; - - symbol = libmei.@makeElement(); - - // add attributes if necessary - if (mapValue.Length = 2) - { - atts = mapValue[1]; - for each Pair att in atts - { - libmei.AddAttribute(symbol, att.Name, att.Value); - } - } + symbol = DataToMEI(mapValue); symbol = AddBarObjectInfoToElement(sobj, symbol); mlines = Self._property:MeasureObjects; From 3eee3d7dab0c3226484a1dadffe95020ca531621 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Fri, 3 Jul 2020 10:58:04 +0200 Subject: [PATCH 33/83] Add extension detection (no functionality yet) --- plgconfig.js | 2 +- src/GLOBALS.mss | 4 ++++ src/Initialize.mss | 52 ++++++++++++++++++++++++++++++++++++++++++++++ src/Run.mss | 47 +++++++++++++++++++++++++++++++++++++++++ src/TextStyles.mss | 2 +- 5 files changed, 105 insertions(+), 2 deletions(-) diff --git a/plgconfig.js b/plgconfig.js index c80e43a..f2189b4 100644 --- a/plgconfig.js +++ b/plgconfig.js @@ -7,7 +7,7 @@ var config = { plgCategory: 'MEI Export', pluginFilename: 'sibmei4.plg', linkLibraries: [ - 'libmei4.plg', 'sibmei4_batch_mxml.plg', 'sibmei4_batch_sib.plg', 'sibmei4_test_runner.plg' + 'libmei4.plg', 'sibmei4_batch_mxml.plg', 'sibmei4_batch_sib.plg', 'sibmei4_test_runner.plg', 'sibmei4_extension_test.plg' ], importDir: './import', buildDir: './build', diff --git a/src/GLOBALS.mss b/src/GLOBALS.mss index 98bb255..10a80b0 100644 --- a/src/GLOBALS.mss +++ b/src/GLOBALS.mss @@ -1,6 +1,7 @@ Version "4.0.0" PluginName "Sibelius to MEI 4 Exporter" Author "Andrew Hankinson" +ExtensionAPIVersion "1.0.0" _InitialProgressTitle "Exporting %s to MEI" _ExportFileIsNull "You must specify a file to save." @@ -16,3 +17,6 @@ _ObjectIsOnAnIllogicalObject "Bar %s, voice %s. %s is added to a %s object. This _ObjectCouldNotFindAttachment "Bar %s, voice %s. %s could not be attached to a Note object, so it will not appear in the output." LOGFILE "sibelius.log" + +AvailableExtensions +SelectedExtensions diff --git a/src/Initialize.mss b/src/Initialize.mss index 5cd27fc..4e22661 100644 --- a/src/Initialize.mss +++ b/src/Initialize.mss @@ -57,3 +57,55 @@ function RegisterHandlers(handlers, handlerDefinitions, plugin) { } } //$end + + +function RegisterExtensions () { + // Stores any found extensions in the global AvailableExtensions TreeDict + // Hash object. Keys are the names by which they can be be referenced in + // ManuScript, e.g. like `@name.SibmeiExtensionAPIVersion`. Values are + // the full name that is displayed to the user. + + apiSemver = SplitString(ExtensionAPIVersion, '.'); + errors = ''; + + for each pluginObject in Sibelius.Plugins + { + if (pluginObject.DataExists('SibmeiExtensionAPIVersion')) + { + plgName = pluginObject.File.NameNoPath; + extensionSemver = SplitString(@plgName.SibmeiExtensionAPIVersion, '.'); + + switch (true) + { + case (extensionSemver.NumChildren != 3) + { + error = 'Extension %s must have a valid semantic versioning string in field `ExtensionAPIVersion`'; + } + case ((apiSemver[0] = extensionSemver[0]) and (apiSemver[1] >= extensionSemver[1])) + { + error = null; + } + case ((apiSemver[0] < extensionSemver[0]) or (apiSemver[1] < extensionSemver[1])) + { + error = 'Extension %s requires Sibmei to be updated to a newer version'; + } + default + { + error = 'Extension %s needs to be updated to be compatible with the current Sibmei version'; + } + } + + if (null = error) + { + // Storing key/value pairs in old-style Hash TreeNodes needs @-indirection + AvailableExtensions.@plgName = pluginObject.Name; + } + else + { + errors = errors & utils.Format(error, plgName) & '\n'; + } + } + } + + return errors; +} //$end diff --git a/src/Run.mss b/src/Run.mss index 9948015..4fc14f4 100644 --- a/src/Run.mss +++ b/src/Run.mss @@ -25,6 +25,8 @@ function Run() { activeFileName = utils.ExtractFileName(activeFileNameFull); activePath = Sibelius.GetDocumentsFolder(); + ChooseExtensions(); + // Ask to the file to be saved somewhere filename = Sibelius.SelectFileToSave('Save as...', activeFileName, activePath, 'mei', 'TEXT', 'Music Encoding Initiative'); @@ -88,3 +90,48 @@ function DoExport (filename) { // clean up after ourself libmei.destroy(); } //$end + + +function ChooseExtensions () { + AvailableExtensions = CreateHash(); + extensionErrors = RegisterExtensions(); + if (extensionErrors != '') + { + Sibelius.MessageBox(extensionErrors); + } + if (not Sibelius.ShowDialog(ExtensionDialog, Self)) + { + return null; + } + // Unfortunately, SelectedExtensions only has the values from the AvailableExtensions + // object. + extensionIsSelected = CreateDictionary(); + for each extension in SelectedExtensions + { + extensionIsSelected[extension] = true; + } + for each extension in AvailableExtensions + { + // Cast TreeNode Hash object to its string value + fullExtensionName = extension & ''; + if (extensionIsSelected[extension]) + { + plgName = extension.Label; + // TODO: Register all symbol and text handlers provided by this + // plugin + Trace(plgName); + } + } +} //$end + + +function ActivateAllExtensions () { + SelectedExtensions = AvailableExtensions; + Sibelius.RefreshDialog(); +} //$end + + +function DeactivateAllExtensions () { + SelectedExtensions = CreateHash(); + Sibelius.RefreshDialog(); +} //$end diff --git a/src/TextStyles.mss b/src/TextStyles.mss index 6baefa6..54a6f93 100644 --- a/src/TextStyles.mss +++ b/src/TextStyles.mss @@ -412,7 +412,7 @@ function GetStyleAttributes (state) { { if (firstRendFlag = true) { - rendAttValue = rendAttValue & flagName; + rendAttValue = rendAttValue & flagName; firstRendFlag = false; } else From df369a540d4ad646307bcff10f74e8702254d4ae Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Fri, 3 Jul 2020 11:12:03 +0200 Subject: [PATCH 34/83] Add Dialog for extension selection --- src/Run.mss | 4 +- src/dialog/ExtensionDialog.msd | 83 ++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 src/dialog/ExtensionDialog.msd diff --git a/src/Run.mss b/src/Run.mss index 4fc14f4..32bc3b1 100644 --- a/src/Run.mss +++ b/src/Run.mss @@ -125,13 +125,13 @@ function ChooseExtensions () { } //$end -function ActivateAllExtensions () { +function SelectAllExtensions () { SelectedExtensions = AvailableExtensions; Sibelius.RefreshDialog(); } //$end -function DeactivateAllExtensions () { +function DeselectAllExtensions () { SelectedExtensions = CreateHash(); Sibelius.RefreshDialog(); } //$end diff --git a/src/dialog/ExtensionDialog.msd b/src/dialog/ExtensionDialog.msd new file mode 100644 index 0000000..9d4783d --- /dev/null +++ b/src/dialog/ExtensionDialog.msd @@ -0,0 +1,83 @@ +ExtensionDialog "Dialog" +{ + Title "Choose Sibmei extensions to activate" + X "138" + Y "282" + Width "205" + Height "170" + Controls + { + Text + { + Title "Available Sibmei extensions" + X "1" + Y "2" + Width "100" + Height "14" + } + ListBox + { + Title + X "1" + Y "15" + Width "201" + Height "60" + ListVar "AvailableExtensions" + AllowMultipleSelections "1" + Value "SelectedExtensions" + } + Button + { + Title "Activate All Extensions" + X "2" + Y "77" + Width "68" + Height "14" + Method "SelectAllExtensions" + } + Button + { + Title "Deactivate All Extensions" + X "72" + Y "77" + Width "68" + Height "14" + Method "DeselectAllExtensions" + } + Text + { + Title "Highlighted extensions are active." + X "1" + Y "99" + Width "204" + Height "10" + } + Text + { + Title "To activate multiple extensions, use Ctrl+click on Windows/Cmd+click on Mac" + X "1" + Y "109" + Width "205" + Height "14" + } + Button + { + Title "Export" + X "151" + Y "129" + Width "50" + Height "14" + DefaultButton "1" + EndDialog "1" + } + Button + { + Title "Cancel" + X "100" + Y "129" + Width "50" + Height "14" + EndDialog "0" + } + } +} From c5e4cf9c54f22b8b63a245fa6900e8e5b9aa90b8 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 6 Jul 2020 09:01:11 +0200 Subject: [PATCH 35/83] Draft of extension API --- Extensions.md | 82 ++++++++++++++++++++++++++++++++++ lib/sibmei4_extension_test.plg | 32 +++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 Extensions.md create mode 100644 lib/sibmei4_extension_test.plg diff --git a/Extensions.md b/Extensions.md new file mode 100644 index 0000000..5154f9a --- /dev/null +++ b/Extensions.md @@ -0,0 +1,82 @@ +# Extension API + +Sibmei's extension API is designed to allow defining the export behavior of +custom text styles and symbols or customizing the export behavior of existing +symbols. + +Extensions are regular Sibelius plugins written in ManuScript. They must define +specific global data and methods so that Sibmei can find them and interact with +them. + +## Required Data + +### `ExtensionAPIVersion` + +A semantic version string specifying for which version of the Sibmei extension +API the extension was written. The current API version can be found in +`GLOBALS.mss`. + +## Required Methods + +### Symbol or Text Handlers + +These methods take a Sibelius object as argument and return an MEI element that +Sibmei will append to the `` element. If `null` is returned instead, +the Sibelius object will not be exported at all. + +### `InitSibmeiExtension()` + +Sibmei calls this method and passes an API Dictionary as argument (see below). +Register your symbol and text handlers in this function. + +#### API Dictionary Fields + +* **`libmei`**: A refernce to libmei that can be used to construct and + manipulate MEI elements. +* **`RegisterSymbolHandlers()`**: Call this function to make a symbol handler + known to Sibmei. To tell Sibelius which symbol to handle, it must be + registered by the symbol's `Index` or `Name` properties. For built-in + symbols, always use the `Index` property, for custom symbols, always use the + `Name` property. + + The Dictionary that needs to be passed to `RegisterSymbolHandlers()` has the + following structure: + + ``` + CreateDictionary( + 'Name', CreateDictionary( + 'My custom symbol', 'MyCustomSymbolHandler', + 'My other custom symbol', 'MyAlternativeCustomSymbolHandler' + ), + 'Index', CreateDictionary( + myIndex, 'MyCustomSymbolHandler', + myOtherIndex, 'MyCustomSymbolHandler' + ) + ) + ``` + + If Sibmei finds a symbol with a `Name` or `Index` property matching a key in + the respective sub-Dictionaries, it will call the symbol handler registered + under that key. A method of that name must be present in the extension + plugin. + + If no symbols are registered by either `Name` or `Index` property, the + respective sub-dictionaries can be omitted. + +* **`RegisterTextHandlers()`**: Works the same way as + `RegisterSymbolHandlers()`, with the difference that sub-Dictionary keys are + `StyleId` and `StyleAsText` instead of `Index` and `Name`. Always use + `StyleId` for built-in text styles and `StyleAsText` for custom text styles. + +* **`MeiFactory()`**: A convenience method that takes a template SparseArray as + argument and generates an MEI element from it. For detailed information, see + the documentation comments in `Initialize.mss`. + + It is a good idea to define template dictionaries as global variables in the + `InitSibmeiExtension()` method instead of defining them locally in the symbol + handler methods. + +## Example + +An example extension plugin can be found +[on GitHub](https://github.com/music-encoding/sibmei/tree/master/lib/sibmei4_extension_test.plg). diff --git a/lib/sibmei4_extension_test.plg b/lib/sibmei4_extension_test.plg new file mode 100644 index 0000000..22f85f4 --- /dev/null +++ b/lib/sibmei4_extension_test.plg @@ -0,0 +1,32 @@ +{ + SibmeiExtensionAPIVersion "1.0.0" + + Initialize "() { + AddToPluginsMenu('Sibmei extension test', null); + }" + + InitSibmeiExtension "(api) { + Self._property:api = api; + Self._property:libmei = api.libmei; + + Self._property:MySymbolTemplate = CreateSparseArray('Symbol', CreateDictionary( + 'fontfam', 'myCustomFont', + 'glyph.name', 'mySymbolGlyph' + )); + + api.RegisterSymbolHandlers(CreateDictionary( + 'Name', CreateDictionary( + 'My symbol', 'HandleMySymbol' + ) + )); + + }" + + HandleMySymbol "(obj) { + symbolElement = api.MeiFactory(MySymbolTemplate); + if (obj.ColorRed = 255) { + libmei.AddAttribute(symbolElement, 'type', 'myRedType'); + } + return symbolElement; + }" +} From 46e2f8ae907756875542fb11d8503d1924ea8126 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Mon, 6 Jul 2020 09:50:41 +0200 Subject: [PATCH 36/83] Implement extension initialization Move extension related code to a dedicated file --- Extensions.md | 2 + lib/sibmei4_batch_mxml.plg | 2 + lib/sibmei4_batch_sib.plg | 2 + lib/sibmei4_extension_test.plg | 2 +- src/Extensions.mss | 150 +++++++++++++++++++++++++++++++++ src/Initialize.mss | 60 ++----------- src/Run.mss | 58 +++---------- src/SymbolHandler.mss | 14 +-- 8 files changed, 182 insertions(+), 108 deletions(-) create mode 100644 src/Extensions.mss diff --git a/Extensions.md b/Extensions.md index 5154f9a..1937ac4 100644 --- a/Extensions.md +++ b/Extensions.md @@ -63,6 +63,8 @@ Register your symbol and text handlers in this function. If no symbols are registered by either `Name` or `Index` property, the respective sub-dictionaries can be omitted. + Second argument must be `Self`. + * **`RegisterTextHandlers()`**: Works the same way as `RegisterSymbolHandlers()`, with the difference that sub-Dictionary keys are `StyleId` and `StyleAsText` instead of `Index` and `Name`. Always use diff --git a/lib/sibmei4_batch_mxml.plg b/lib/sibmei4_batch_mxml.plg index 2c9b632..f76c558 100644 --- a/lib/sibmei4_batch_mxml.plg +++ b/lib/sibmei4_batch_mxml.plg @@ -11,6 +11,8 @@ if (IsObject(folder)) { + sibmei4.InitGlobals(); + // count files for progress dialog numFiles = folder.FileCount('XML'); index = 0; diff --git a/lib/sibmei4_batch_sib.plg b/lib/sibmei4_batch_sib.plg index cfd3166..288ac16 100644 --- a/lib/sibmei4_batch_sib.plg +++ b/lib/sibmei4_batch_sib.plg @@ -23,6 +23,8 @@ } else { + sibmei4.InitGlobals(); + // count files for progress dialog numFiles = folder.FileCount('SIB'); index = 0; diff --git a/lib/sibmei4_extension_test.plg b/lib/sibmei4_extension_test.plg index 22f85f4..39f6b1d 100644 --- a/lib/sibmei4_extension_test.plg +++ b/lib/sibmei4_extension_test.plg @@ -18,7 +18,7 @@ 'Name', CreateDictionary( 'My symbol', 'HandleMySymbol' ) - )); + ), Self); }" diff --git a/src/Extensions.mss b/src/Extensions.mss new file mode 100644 index 0000000..b27a177 --- /dev/null +++ b/src/Extensions.mss @@ -0,0 +1,150 @@ +function RegisterAvailableExtensions (availableExtensions) { + //$module(Initialize.mss) + // Expects and empty TreeNode Hash map object as argument. + // Looks for existing extensions and registers them in this Hash map. + // Keys in the Hash map are the names by which the extension plugins can be + // referenced in ManuScript, e.g. like `@name.SibmeiExtensionAPIVersion`. + // Values are the full names that are displayed to the user. + + apiSemver = SplitString(ExtensionAPIVersion, '.'); + errors = ''; + + for each pluginObject in Sibelius.Plugins + { + if (pluginObject.DataExists('SibmeiExtensionAPIVersion')) + { + + plgName = pluginObject.File.NameNoPath; + extensionSemver = SplitString(@plgName.SibmeiExtensionAPIVersion, '.'); + + switch (true) + { + case (extensionSemver.NumChildren != 3) + { + error = 'Extension %s must have a valid semantic versioning string in field `ExtensionAPIVersion`'; + } + case ((apiSemver[0] = extensionSemver[0]) and (apiSemver[1] >= extensionSemver[1])) + { + error = null; + } + case ((apiSemver[0] < extensionSemver[0]) or (apiSemver[1] < extensionSemver[1])) + { + error = 'Extension %s requires Sibmei to be updated to a newer version'; + } + default + { + error = 'Extension %s needs to be updated to be compatible with the current Sibmei version'; + } + } + + if (null = error) + { + // Storing key/value pairs in old-style Hash TreeNodes needs @-indirection + availableExtensions.@plgName = pluginObject.Name; + } + else + { + errors = errors & utils.Format(error, plgName) & '\n'; + } + } + } + + return errors; +} //$end + + +function ChooseExtensions (availableExtensions, chosenExtensions) { + // Expects an empty Dictionary as second argument. + // Runs the ExtensionDialog and stores all extensions the user chose in the + // Dictionary. Adds key/value pairs in the same way as + // RegisterAvailableExtensions() + // Returns true on success, false if the user canceled the dialog. + + if (not Sibelius.ShowDialog(ExtensionDialog, Self)) + { + return false; + } + // Unfortunately, SelectedExtensions only has the selected values from the + // AvailableExtensions object, i.e. the extension plugin's full user facing + // name, not the PLG name that we need to reference it in ManuScript. + extensionIsSelected = CreateDictionary(); + for each fullExtensionName in SelectedExtensions + { + extensionIsSelected[fullExtensionName] = true; + } + for each extension in AvailableExtensions + { + // Cast TreeNode Hash object to its string value + fullExtensionName = extension & ''; + if (extensionIsSelected[extension]) + { + plgName = extension.Label; + chosenExtensions[plgName] = fullExtensionName; + } + } + + return true; +} //$end + + +function SelectAllExtensions () { + SelectedExtensions = AvailableExtensions; + Sibelius.RefreshDialog(); +} //$end + + +function DeselectAllExtensions () { + SelectedExtensions = CreateHash(); + Sibelius.RefreshDialog(); +} //$end + + +function InitExtensions () { + // Returns false if the user aborted the selection of extensions or if there + // are any errors, otherwise returns true. + + AvailableExtensions = CreateHash(); + errors = RegisterAvailableExtensions(AvailableExtensions); + if (null != errors) + { + Sibelius.MessageBox(errors); + return false; + } + + chosenExtensions = CreateDictionary(); + if (not ChooseExtensions(AvailableExtensions, chosenExtensions)) + { + return false; + } + + apiObject = CreateApiObject(); + + for each Name plgName in chosenExtensions + { + Trace(plgName); + @plgName.InitSibmeiExtension(apiObject); + } + + return true; +} //$end + + +function CreateApiObject () { + apiObject = CreateDictionary('libmei', libmei); + apiObject.SetMethod('RegisterSymbolHandlers', Self, 'ExtensionAPI_RegisterSymbolHandlers'); + apiObject.SetMethod('RegisterTextHandlers', Self, 'ExtensionAPI_RegisterTextHandlers'); + apiObject.SetMethod('MeiFactory', Self, 'ExtenionAPI_MeiFactory'); + return apiObject; +} //$end + +function ExtensionAPI_RegisterSymbolHandlers (this, symbolHandlerDict, plugin) { + RegisterHandlers(Self._property:SymbolHandlers, symbolHandlerDict, plugin); +} //$end + +function ExtensionAPI_RegisterTextHandlers (this, textHandlerDict, plugin) { + RegisterHandlers(Self._property:TextHandlers, textHandlerDict, plugin); +} //$end + +function MeiFactory (this, templateObject) { + DataToMEI(templateObject); +} //$end diff --git a/src/Initialize.mss b/src/Initialize.mss index 4e22661..d72eb5f 100644 --- a/src/Initialize.mss +++ b/src/Initialize.mss @@ -37,6 +37,14 @@ function InitGlobals () { Self._property:SymbolHandlers = InitSymbolHandlers(); Self._property:SymbolMap = InitSymbolMap(); + if (not InitExtensions()) + { + return false; + } + + Self._property:_Initialized = true; + + return true; } //$end function RegisterHandlers(handlers, handlerDefinitions, plugin) { @@ -57,55 +65,3 @@ function RegisterHandlers(handlers, handlerDefinitions, plugin) { } } //$end - - -function RegisterExtensions () { - // Stores any found extensions in the global AvailableExtensions TreeDict - // Hash object. Keys are the names by which they can be be referenced in - // ManuScript, e.g. like `@name.SibmeiExtensionAPIVersion`. Values are - // the full name that is displayed to the user. - - apiSemver = SplitString(ExtensionAPIVersion, '.'); - errors = ''; - - for each pluginObject in Sibelius.Plugins - { - if (pluginObject.DataExists('SibmeiExtensionAPIVersion')) - { - plgName = pluginObject.File.NameNoPath; - extensionSemver = SplitString(@plgName.SibmeiExtensionAPIVersion, '.'); - - switch (true) - { - case (extensionSemver.NumChildren != 3) - { - error = 'Extension %s must have a valid semantic versioning string in field `ExtensionAPIVersion`'; - } - case ((apiSemver[0] = extensionSemver[0]) and (apiSemver[1] >= extensionSemver[1])) - { - error = null; - } - case ((apiSemver[0] < extensionSemver[0]) or (apiSemver[1] < extensionSemver[1])) - { - error = 'Extension %s requires Sibmei to be updated to a newer version'; - } - default - { - error = 'Extension %s needs to be updated to be compatible with the current Sibmei version'; - } - } - - if (null = error) - { - // Storing key/value pairs in old-style Hash TreeNodes needs @-indirection - AvailableExtensions.@plgName = pluginObject.Name; - } - else - { - errors = errors & utils.Format(error, plgName) & '\n'; - } - } - } - - return errors; -} //$end diff --git a/src/Run.mss b/src/Run.mss index 32bc3b1..5a52539 100644 --- a/src/Run.mss +++ b/src/Run.mss @@ -25,7 +25,10 @@ function Run() { activeFileName = utils.ExtractFileName(activeFileNameFull); activePath = Sibelius.GetDocumentsFolder(); - ChooseExtensions(); + if (not InitGlobals()) + { + return false; + } // Ask to the file to be saved somewhere filename = Sibelius.SelectFileToSave('Save as...', activeFileName, activePath, 'mei', 'TEXT', 'Music Encoding Initiative'); @@ -43,12 +46,16 @@ function Run() { function DoExport (filename) { //$module(Run.mss) + if (not Self._property:_Initialized) + { + Trace('InitGlobals() must be called before running DoExport()'); + return null; + } + // first, ensure we're running with a clean slate. Self._property:libmei = libmei4; libmei.destroy(); - InitGlobals(); - // set the active score here so we can refer to it throughout the plugin Self._property:ActiveScore = Sibelius.ActiveScore; if (Self._property:ActiveScore = null) @@ -90,48 +97,3 @@ function DoExport (filename) { // clean up after ourself libmei.destroy(); } //$end - - -function ChooseExtensions () { - AvailableExtensions = CreateHash(); - extensionErrors = RegisterExtensions(); - if (extensionErrors != '') - { - Sibelius.MessageBox(extensionErrors); - } - if (not Sibelius.ShowDialog(ExtensionDialog, Self)) - { - return null; - } - // Unfortunately, SelectedExtensions only has the values from the AvailableExtensions - // object. - extensionIsSelected = CreateDictionary(); - for each extension in SelectedExtensions - { - extensionIsSelected[extension] = true; - } - for each extension in AvailableExtensions - { - // Cast TreeNode Hash object to its string value - fullExtensionName = extension & ''; - if (extensionIsSelected[extension]) - { - plgName = extension.Label; - // TODO: Register all symbol and text handlers provided by this - // plugin - Trace(plgName); - } - } -} //$end - - -function SelectAllExtensions () { - SelectedExtensions = AvailableExtensions; - Sibelius.RefreshDialog(); -} //$end - - -function DeselectAllExtensions () { - SelectedExtensions = CreateHash(); - Sibelius.RefreshDialog(); -} //$end diff --git a/src/SymbolHandler.mss b/src/SymbolHandler.mss index b02493f..28ec23a 100644 --- a/src/SymbolHandler.mss +++ b/src/SymbolHandler.mss @@ -38,10 +38,10 @@ function InitSymbolHandlers () { '490', 'HandleModifier', //fingernail '494', 'HandleModifier', //doit '495', 'HandleModifier' //plop - ), - 'Name', CreateDictionary( - 'Pedal', 'HandleControlEvent' ) + // 'Name', CreateDictionary( + // 'Pedal', 'HandleControlEvent' + // ) ), Self); return symbolHandlers; @@ -80,9 +80,9 @@ function InitSymbolMap () { '481', CreateSparseArray('Artic', CreateDictionary('artic','fall')), //fall '490', CreateSparseArray('Artic', CreateDictionary('artic','fingernail')), //fingernail '494', CreateSparseArray('Artic', CreateDictionary('artic','doit')), //doit - '495', CreateSparseArray('Artic', CreateDictionary('artic','plop')), //plop - 'Pedal', CreateSparseArray('Pedal', CreateDictionary('dir', 'down', 'func', 'sustain')) //Pedal - ); + '495', CreateSparseArray('Artic', CreateDictionary('artic','plop')) //plop + // 'Pedal', CreateSparseArray('Pedal', CreateDictionary('dir', 'down', 'func', 'sustain')) //Pedal + ); } //$end @@ -161,4 +161,4 @@ function HandleControlEvent(this, sobj, mapValue){ mlines = Self._property:MeasureObjects; mlines.Push(symbol._id); -} //$end \ No newline at end of file +} //$end From 1276b3e679d2e985062419f02eaf286fe836b053 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Tue, 7 Jul 2020 10:01:58 +0200 Subject: [PATCH 37/83] Make extensions work Control events tested, test for modifiers still to be written --- lib/sibmei4_extension_test.plg | 5 ++--- src/Extensions.mss | 7 ++++--- src/SymbolHandler.mss | 4 ++++ test/mocha/test-extensions.js | 25 +++++++++++++++++++++++++ test/mocha/utils.js | 15 ++++++++++++++- test/sibmeiTestSibs/extensions.sib | Bin 0 -> 42833 bytes 6 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 test/mocha/test-extensions.js create mode 100644 test/sibmeiTestSibs/extensions.sib diff --git a/lib/sibmei4_extension_test.plg b/lib/sibmei4_extension_test.plg index 39f6b1d..488ef27 100644 --- a/lib/sibmei4_extension_test.plg +++ b/lib/sibmei4_extension_test.plg @@ -22,11 +22,10 @@ }" - HandleMySymbol "(obj) { - symbolElement = api.MeiFactory(MySymbolTemplate); + HandleMySymbol "(self, obj) { + symbolElement = api.HandleControlEvent(obj, MySymbolTemplate); if (obj.ColorRed = 255) { libmei.AddAttribute(symbolElement, 'type', 'myRedType'); } - return symbolElement; }" } diff --git a/src/Extensions.mss b/src/Extensions.mss index b27a177..b716ba1 100644 --- a/src/Extensions.mss +++ b/src/Extensions.mss @@ -121,7 +121,6 @@ function InitExtensions () { for each Name plgName in chosenExtensions { - Trace(plgName); @plgName.InitSibmeiExtension(apiObject); } @@ -133,7 +132,9 @@ function CreateApiObject () { apiObject = CreateDictionary('libmei', libmei); apiObject.SetMethod('RegisterSymbolHandlers', Self, 'ExtensionAPI_RegisterSymbolHandlers'); apiObject.SetMethod('RegisterTextHandlers', Self, 'ExtensionAPI_RegisterTextHandlers'); - apiObject.SetMethod('MeiFactory', Self, 'ExtenionAPI_MeiFactory'); + apiObject.SetMethod('MeiFactory', Self, 'ExtensionAPI_MeiFactory'); + apiObject.SetMethod('HandleControlEvent', Self, 'HandleControlEvent'); + apiObject.SetMethod('HandleModifier', Self, 'HandleModifier'); return apiObject; } //$end @@ -145,6 +146,6 @@ function ExtensionAPI_RegisterTextHandlers (this, textHandlerDict, plugin) { RegisterHandlers(Self._property:TextHandlers, textHandlerDict, plugin); } //$end -function MeiFactory (this, templateObject) { +function ExtensionAPI_MeiFactory (this, templateObject) { DataToMEI(templateObject); } //$end diff --git a/src/SymbolHandler.mss b/src/SymbolHandler.mss index 28ec23a..78fa100 100644 --- a/src/SymbolHandler.mss +++ b/src/SymbolHandler.mss @@ -150,6 +150,8 @@ function HandleModifier(this, sobj, mapValue){ warnings.Push(utils.Format(_ObjectCouldNotFindAttachment, bar.BarNumber, voicenum, sobj.Name)); } + return modifier; + } //$end function HandleControlEvent(this, sobj, mapValue){ @@ -161,4 +163,6 @@ function HandleControlEvent(this, sobj, mapValue){ mlines = Self._property:MeasureObjects; mlines.Push(symbol._id); + return symbol; + } //$end diff --git a/test/mocha/test-extensions.js b/test/mocha/test-extensions.js new file mode 100644 index 0000000..86e577c --- /dev/null +++ b/test/mocha/test-extensions.js @@ -0,0 +1,25 @@ +"use strict"; + +const assert = require('assert'); +const xpath = require('fontoxpath'); +const utils = require('./utils'); + +describe("Extensions", function() { + const mei = utils.getTestMeiDom('extensions.mei'); + const symbols = xpath.evaluateXPath('//*:symbol', mei); + + it("exports custom symbols", function() { + utils.assertAttrValueFormat(symbols, 'fontfam', 'myCustomFont'); + utils.assertAttrValueFormat(symbols, 'glyph.name', 'mySymbolGlyph'); + assert.strictEqual(symbols.length, 2, '2 symbols expected'); + utils.assertAttrOnElements(symbols, [1], 'type', 'myRedType'); + }); + + it("attaches control events to measures", function(){ + for (let i = 0; i < 2; i++) { + const measure = symbols[i].parentElement; + assert.strictEqual(measure.tagName, "measure", 'must be attached to measures'); + assert.strictEqual(String(i + 1), measure.getAttribute("n"), 'test file has 1 symbol per measure'); + } + }); +}); diff --git a/test/mocha/utils.js b/test/mocha/utils.js index 97660d3..d582664 100644 --- a/test/mocha/utils.js +++ b/test/mocha/utils.js @@ -43,15 +43,28 @@ module.exports = { } }, + /** + * @param {Element|Element[]} elements + * @param {string} attName + * @param {string|RegExp} expectedFormat If a string is supplied, the + * attributes will be tested for strict equality, otherwise if they match + * the RegExp. + */ assertAttrValueFormat: function (elements, attName, expectedFormat) { + if (!elements instanceof Array) { + elements = [elements]; + } for (let i = 0; i < elements.length; i += 1) { const actualValue = elements[i].getAttribute(attName); if (actualValue == undefined) { assert.ok(false, 'element ' + i + ' has no @' + attName); } - else { + else if (expectedFormat instanceof RegExp) { assert.ok(expectedFormat.test(actualValue), 'value on element ' + i + ' does not match'); } + else { + assert.strictEqual(actualValue, expectedFormat); + } } } } diff --git a/test/sibmeiTestSibs/extensions.sib b/test/sibmeiTestSibs/extensions.sib new file mode 100644 index 0000000000000000000000000000000000000000..c61278e64bbbe1a29416d5fa0dded2a7c04087b3 GIT binary patch literal 42833 zcmV({K+?YtQ%OQaOi5K!0021v764N@ZvX%QFaQ7m0ssI20RR91DgXcg0000001s11 zLPbnTRZ{=}IRF*_000000024w0001WXAovVR#@$+QFz*P4b!1on$hE{$ru?2)? z+oi{VsgYetT{TLIe;SE)qjBrq4A^j$P$z#rO{pymSO5S30AFq{BWozouiyCp;}zy= zlOtca;a7<%Cgg~FiKi9cLKNHv*1Ol5&U9P#&~9d)FdjKvOh|G&JY$HaOl2w_KQk?w z5RlF#f5+b8FFrn+P^sMny3dkJ`efKu1CaA*Wdd6?3Q~f4(Bu8>C#zbX6$BbHj>n40 z^71==-=>5)RV5y>%CJehM>t znH(6HAF2qB8ldN-sppj9%kOM4MX{l{ z@F{0za*9LtfZOsj9$F{C%3l;CU_^O^Cyr8ssI|4-i>uXOtK4 zj?FT$n-lLv(Asgoyc$-F2$ty$0w16?Jw+J<|AtP;5<=Z*l!&8rMV``u_{;AWddZLV zr~Rm*#)~`cuZEHn_8dFbe#)RbXBJcMY}@l2G=EDKj1q=?{MKCk8Ld70Pl6U0HtnTk z?>brA2BNF5qFOLGx3O#bmdiXI^u-6CoJmZ@Ns>8!Li=>%Er;!dK0gDAm5Db77 zCd!8alg4?`W3F30ft#CG(-n;Wak5WVSnhCWU@KI15HSn$VjU&x7OD)OGl0Jt*n`ii zXJg><)DE2EC1Nu{-pz)^99ih%e^`F>gaOlimWj257}Yo*t9a0_tlJ0MrCt)3Bs0oT zfnCF*xV-AKf9;?1P%)I2kfigMf_4oHCaWpz7tqxpapKC%Xmn}PKU;P{=dJ$tSd+BBiy>|BjAD8>%MD~$}07edGLHM`WIyEAGPDaXzC zxyQrtZu~(MSpxmM&8zb!Zn07agP?g;aQHt|!J|E`ZH|zR{nHT)T0gGxx#|ZBIEkU- zgoUgqE;X2ANN9H%)Ysn0_~W6#X1gVUrR1~a`D;SAB6JgvSm_OF9HD)}VhSpE=e5?g zUC$kD@yx4X7cSqoyi@Zq6U$)CPk?`M*L*PRTy`CLWPxb(k!TDPOXC_awj%bmGUmir zj%h>YyU^`=c_X|_{xA3=f&^VjRwV5^Aicn*m7Pl-9&HsTV_YUuW*Sllq`X~KImPYq@lm?+86y(|Z#7PZp_m#oL)~6FU{> zg6TG0AfkT-+M*G7L>i2tMl!`6Kcgz;fdlvt(+V;V55nyfQM$W7EDE=q@YMF7q0i!>7uz1S4_f^k%<;4{KZ zTC$YIVhYK>97E{vZ3VeE6m^M<4)fkL7|yiesfxWNtq{yV>6K%}uGpPwM8dJ4*$rXLyjq!Zg`2FGBYUUh^C<~6`i z#fapt=SGH#lOw{>Xq={2;Q4Nubg_5^4>IgEDFv@3{_LF97@@_d0QUjy+Ogke=W3Eb z6LtO{UZ){+u(1)**)uXZcm39Y8NUM((qD`2NnNr$;inul4pSOVjW?>JiMWbdzfO`B ziSqg`rOZrp7Qfrr7QTFv$MlM}h*Kv9xWTz%ji_7-Fj`dQ)h+J6vNkOt=TkhxF^hJl zdf_5#&ffe*149dtPh?C&?Dl*HM;(!%H8)a$km4%tE^}SPs-UW|QkEX||GXuv9=w%R zHw95($b8}Hp!1zO{m*B=;P~{i{EVWR7g+IqEE`Ctk^m`=k}ljlx~{O5dQx<-M6C76 z@IL)m^`(T{-Nak3$VYK;VcnC8X0zh*JSZ&!M0>S%@?Y(#GH4D>`tRK@>_X}HyQm8$eE7j<;IQik*oFr8RZ6Nq z@FJOJxFS5x(*TQCu9D4!BB%)$Qf1v+B78>NdJa9Ziq^WbnMvOpnkvq1>iz&rmUejehgdGF6Y+}4U4 znT%@U)XR`V?pB|(jqt1zVD&*jj1Dp8zj8TRzoqdl? zAM+gD^5J~|1NM_wxjmgDfu&o=EQR=jQcdgAzeKp|$BqE%2(waCeqq?G+8i9OK*MK8 zu~oz#@qX>_7n`;$lhTrHqKHg|Tk1-wC590aIkF7#0r#d!*SnynXWxxmbQ1?|!7k$q*8f*_<=$%Miq;?VEI*Uer}L_2#ID*3 z%^+60eT7FZ|9N$0&-&16VoqX)p;7tKBaC>!3{v zy(lH{Dj!7(KSXCOcv;A0duJ#AbnU0oyB-gG?js_K`nG%6^h;NgJ!FFPa(~M^C~j<8 zWe4AJ3uQ3sZh1&WV8+uoEPvQlKVf&d*gQjhm+j1T4{C>lw_fclecx_i1J*z0x6j%i zpmTD85H@ZQBw1>MEYkcwTpJ^qc=4B#Wf#!0b}TLyeW%20+Esm25DKi-hy z*j6Mv0)~$|v_BYNmn4WF%cIwbuW%qyw~8G96w%XkhxUMD7^ID1Sm3@Z=SM8H7?BQW zv6$C*MbiIsasx34w%099f0f`xhHKl&_@edAfZ7!WJHa}_9~`Y(b~5=&egndt<+^CF zJhZCxE489Kd!A`f0gD5Hw^O~43UO)2m)37fvH3rr&U2^NSlF4v{g$doJo|RnRGi~B}iY? zm#<+|_~@l7C7TlD{kNHE47y8@CXr#M90(uh?h>&LSQ6j3V-4#_i>h-goGv8!$6FLl z5`#M0;HEkIh$WizcU0x3J zDBoThwBKE@`T=nQ$&`0hyXWGUt)(HKWy?-g?u8qd__lv%_+M*D)Wb5c^}FGEfi^4r zPERI-ba>0n#YYOL)80gWRfr<(;Vyg|kA?_Qg;|msHj@^rC&YQnyv|xg1zy7O?5%l#`=#EF+OKW^xmhBx;H8ux9H8rl9nIJsE|eyG_vBAujq3S z@CQ1$7-vj{n}tM)G$I<_9=cjHt-R_xzZ=a0l6+w{fEeq^92}~>hpw%V`2(B4FdMk` zAE+d#McHYqH5x=E0b)cjs5zB}n_9bx-{~`m%#*!_BJYEd<=CR#Te7gP&U>Q3z}f%c z=U?;hLd5WDYn^_>Sm?fx#!vTh1s9vpx|!o!{W~1f**JMlY+Q|rgpo(ZUd%QVNhMFc z%>nE0_Xoo0;FS{_Z=W~x&bITyLBv#&)BS$)a8wQ{g)P;90X-og*|fVkVoI}OItg>` z=D4cudlLaT75~x16 z7PXuEpEQ1D^In#^$uQ=mh!Bpa%?yA~K~Q$-BnHE66vxAgKKTTGmlerfki2oG)#b`@ zIopjaM5;OE-Lv%Bpu_450G~T9JFK*GX+zKc$>H)Nbk=TJ;NC64h_YqsaXy_9v&i0S&Tr zR1GX|~pmd%awbE=ua)*)} z0(G>5LJo~1luQ@!e%0DcMc5k%Y2}vazE<|QtZtqTYx;LF9Nbs5oQ>qVKiLq zv*MEdTv!**<7o8|gAXHP7~Qa6LQ=~0Zs+zZtleA0|20<|BX*b#*nY8KuXEY0cQPf| z@-R`hr`!NCOYG!w;l1RuSK_UI0;@N}d^6jaZ4`@nD~7ft=vksZmk7o81VHoC_-N_O zIE{(uEWY$TXWyZ;n;wmy-(=rAKgxl_9_4Q#EUoWOPgu4tgA;sxS;|RB#q6$hZzigF zGf5Xmg9$_5>W|7}^m0dX&Bm0Cp6MsM5>d$nB+=E~B%P|AbGOvN;OH~dzsI+cUbIq0 z?q|G54IaLJLA&ffNB2uBn1)lw@H(hyrW~La_9CEPXbcc^D2X02BCm!y_D|JEwv(+W z@HGah`n(g8@9)B zf>IVBG7PsVF$!D z#4i3AICNy8I>m)XYg|@`$ab61tx)k)EBps!Fdc{pR=)CU8vp{Z*!b|*hhm6_>PzdA^16LHHfvArHd%#&#%YBF0R>0D zZQhg|P*unMi_~oImoa6S*-Ol?PK=gpv;to2EZyA!37zhJl;@_b@@5{(-s-8=dPxa_ z(4=YO?LS6=O~rp5Pho^4cHbq^i0sAtAcQWKaKQlYxavu+?ao{tSD_|{QbbB zRx@Hq<0r5Bj<8-yH1t~E_h>%w1mJGprTOM}ViBb6GTSRGWY>yOX;dXz=2pC448F^0 zk9O!gKTOi2f5BTvqw#ti7{}D))FpV;g=a}R0`!BulI;wqRytB~j6@%e%0eYHBPZAO z#G<}N^lk*3)b1$>x>DZ!F=`R;;I_k%l~?t<16d&?Bs2*0@1UU8lwv*lXQx|re7Fd9 z(@_Cuy^#9tj=r!#XiPqy-}|-FHMnnRCD)*wsZEp7WYWLYVH*sWvC~p0XQhAH`9GlD z@GmC(ms05CKyu5K^-!>e3m3)Wo|YzUG&-_+>QQM@z3x$&@S-(fcUuP&YmGl4JgIGK zrzV-cy_8J#3iUiKX-Lx%j%S$>UK9`{@sXExAtN9~QKWyNw}UDcu!k(rd|h5bLi@&j zveO^Hof>vSCtIpK#E?3c{9kycr!-mFOWYR~bkM>iLRAP!Djbo~8djOBw_4bbN-{m( z`dF+ltc}8^tDjEa+^~Woa~pJ}V^3V)9S?!0?Y<=OpnjgXG{?caOhGb;|5i7wkY5L{g$sOKeTNG(6J`S!ypDC7pM?`39jB7Q{v^N-&@78oS)_`v{pdm zA@iGsb_37M>>8zI!`KaGgE3*te1!q~E=n9=nDRqpFQ6u2SQre9tr|z;@w5C5FwYtp zFu`q{Sb~AQO`kMu#oA3k!{a5D5-B`TuVs)G3*u21^Pc!2rhY&&A(QzcQ!4uvJpGotE z9WwL_Cem(OBP+>}r6kpD7$q6=;8|e3`4tzA(^N#hOYN3L$s9ybMWbY|d5w#K@@D{_ zlfd{{TPF^Xl6W0f*oDie2y=r)bX5fi%>-INCiP3o7jn9BqHt+IX z#Z+Cc9lDo#w@2!*1ky6oPxeMm8L7x@Z4lvjPlBCIAG#}^^TrrA-G~rwu~1!QY-Q6s z7{KsmE`R4Ht{>y@Ud+$y--ie@n?K??m|poepdIj&d{{}2c@N9_L{YN6mLy)cg|IH6 zIJ10671t;1N^vI5RJWHnmijPfMVhM-mf(KbP+_M$RN6Yi&eljU4O0a0DVZO6?vRIA z)Z7*?aa<>|DFuNDlj%pSayWN1;CacOIVh`cBtrt3s34c>fnHTIaPM-{gybFBgsszb z|2A!1yT^B(Y@EQ84{Y@txGK8!<$w6EFa$C3A0jlht&6{ z*Bng?$^IgFwA^8pq>Yt$41|EGSSgsOjYqN6MQ$?;c{%o>(s>7P(Q?$cY~q9VQMa@! z$(tDrqm)XL-@KW%XHyk6T`8&TWNbML4g+Tpy}N#g!dvhA1wb;~TJT4BIDR?(=7Dr* z$c@y04vO%Lc^`Z7wzB4H_(PFb;nVuO#=@j)8kyj&Hr$xN914`v(dPEWbt(0-{Hqj~Q#BwHfy?YN>Rw9N=gs~!ar2)WuKSC##xOOOS{Ab2^P66b$(9V zN+$M}{|ukwiuewix`;eKL3iE7?IUXas?C!*Ca?7)P>>g)P3*wSK2RpM@7+83M0F*p z2Q8>}I5BC6NzE&RH&oWU{ZOrlvIMW?%?heXo?0ym6J2e~Ftv6ol?Ca5r zp)t!P#?L}#+VYu5C>$$ZyrEliz5!cVmZMvtV|nErv3HfFQ^=Ig$K~l6P$anViKc($i#f_)5DSi*!7U0iMp^g9XV^iG-h2Pk~3rrG8C%G*@07!Q6$9v;uM>F@Gs1Orl z<@7xT!xYljO;I{h?C}L3rbdE2)$uoeGP9-d0dUO5@G=E+w~>VhKT5jkEAWAo8j8;K zHW-$DAr6XXBwm&S?AtsMQ`SX%pn5J%Vrh2!;ss(5*u!QHbv_xE;B~Y0jo@lHzN*(b zCDA4y=K5iLnZcY+wFf~`iNv<#HnK7Egs(L?npvmmD1dFcCMDYY@Y6B!JTM#%H5Q2A zx0PyiE=e7X=u-0+%jW-t{E+PVcWY#M~31tXAV6gsuH{I*GD zu0ebyQy6Mqb_ML)byn9Y&6#frI#I@~_fG5aJ?-^{>NdXbH|TXtVyHOK{bQhtJ%1eT z2;^oJkG3}x_e7X%_@*95F_=Lyb2HV!ps)mvm&N)aNA)jVDp68THr3yUFWq*VaJ>I-CZ*Ja#3bHYhrB(!5k)4lI5Pmk zwuVc@tVOl8_6yOlP7CKT9bDw;Q)4xV*sgg*~M_+ z9=2|wMNIpl=IfbMp5xEt49jSFaLU^JZ#&b9&sv^iddgU~Am^ipCPFBtblbm<2bQ?P z@dz8uj61O9ECkmA508l(U4?TZaBY*au=b&*AT+D>o>NH5GH=F!c%-nCT71r(Epj!K z%IxS^?`lIFvIP`1t76R{ssiU5UfGcDOkG&$o( zb*}Ts=@;x!qS~R)TKz|l?8G6@yDayQhg^lSmW=i+zXxT}U52yN$}5)crw*}~oyrQv z%?nl!#(u=wl=pFlS;8M9AmD~5@wuvWYwWk{My28i`)k)-RR?nNTpUP*iz&y`KK*HW9v#2kP6 zwy38{ndvU9%kGy(6aPOz6Vm=wCdvAamL2Yq1A-pInH=PhPnl%ex#Mhq$ z>0pFkCB<0owakBilm#8ib@&_tx{EHuT~|mjWDI*$Lx?Y7y{xr*>v;Z(QPC)(8i3q! zV1S|)@M_B8-Mrh(jV+XHER=ef?+7)+uToWEUp^%5&8ZhQ62ne3p(L&DBVF7iVHOMo z6?epOBt)bx@+b=SD)3h3M8R9MgjdfP6Iww=!e4lf|G><0{?b6f%FxeyuEsprLLMP| zQROMZAIEV5Ky^#>ZaY@z6OaxCFobRojS^)5UlVw*}GB`}bE;8T^;G909u zI&u-xT+#U-+f7@!q16iy~rP}LvNJ(lrU9%Rh65~FthNCDLcY~7@2;-Di=(!QR9NB@{9wivMVT$`cWym3II12O6}7J7zj|L4ep;R z%!z=%SM*^k=P~=R**oB9$h88?rzMauGe%97|+hS)X*D1nY>%d$KR_o8CI zJ5>u;HwN^R=Mp$pPvjLx4ts0s!yzjS#uo$rL1?g25oR=BcubnzkEOMy>s~fT2wLwq zazi!8uM78#?HQ!ULUJM@f_=fCrj6%=`vqByPVRMO%tWJ1NKGe>^9@;yzw6YI^HS&O zpd1VT(HSBL!c}0AqWEDIky;<~;j^Cb>pjREU!@4wmb2LgchkU~LR5OJxPxrG$CL+l zsHoQXs}Y?hW>4SR~>C{E!-|f{Vn=R{N}~#!4a++ z6jNoGVB#1AN5?BsgOqX-PPtiisIPM)s!3B0JFuX)1~F+Gke9;QCrGEGy)beG6_UC5 zVVdFnbe})te4YT}@Ikd}DW2Novk`J~^m_6cFKA=8ZAzlr3L;jGEC!5#5g;G543vM) zNnpFWt&69U8N;-hP(=q$Bf&gzD_uWu=!JoHS}6|Pg-sfY|0QCxXA}*)!pmNc;mByt z4Gmf+YDQ7$ij1IpH_;3q(0rSxSdXX@DzHWrnwL9ZdPcnqm2&TE!|0y+Th|l5KPS%^ zeoGcAn=x2L48*m1LFWO;kblD}+=CWCIviT^Yg%3c!C?xFEE`7}bh9P*e0BI)3ex5k zJ~nAzHKoLCL#r5CR=Ei(2bsk~T*KC`bl3=$Bl~CQ9d~U$&mT7UEhl{<1;QN9yll^G z%NzuL`#uN};SUsWUfY5MrnG9qnLYZ*c@`$Qq9e0O>7u7k*M#$dFr|!-6lVM+M!=mt zZM2aa{G9ndF;_>_NHgz0GzM8;81XVWzm{K*K7suA~pLdkOG60p6` zB0XMP!E-(p)`Pr1@T2D@qCHv{gN*#_T=iN4iuv)fwplL^dCrIlhbECb(gH{w=#;#& zd5~$W`W#Z6kw{8VkZAIy1E72GLCafg)o6%_C-Ii*JlrQ_{FKq~OKX>SajWZg5D%QM z8Bo1q9oLNQ6MO&vTM%j7*)j!jiZpCO-m^q15vCAfBGz>gU}QulUF`Q+ylEyxSulE@ z6q{Ad?5ay?zd{W2$+Ph1)1&+&xCE+dQrC#;cD?La$eKwSJ&%lWwGex{++!{SqCVGk z4t~UjP4Q7H&g@(8?uVG?g>bfs0&tH2*W|;mxxMXH*!L_?(6OSl; zhuzvsN*v`|126H=WKf$LF><@rZpkD`8a9fW)s?P^(2G=A#b^|86*5ceQI^7O4N2HC zZ`6MvuT;V)4wze4B*`!xdI}4d8LRf@(B@pLQtiNuP&a~KG)>~rGsR3c&Vz20{F948 zFP=ehNJrweiuO4O5~G@nR=_LlVtpXiG>>l3r`*cpVl^$0mZruOf4%!UjQ$y3mxA&> zA!kLtfzV-(z`iEW%O#A~Jw+YI>k!F5HY$@U^htBdBf!Gp=)cj?{O~gr-!kYE(Qcqi zw%&Nd3@&Hs#pYe=>Z;DD+Oj-#G_v$ek;9XmAwzG6>|Q#w7Q7|EE!b-&+!=j&&KiXS z`40#t1)2z4-waDVPaOoQD3PYJXQmBOZ1}JuS}6e|QWo}{T4hyDc?Q{#%3ZhL|C`I8 zE)&CrY)fLWU4VK=Vs>**K9k-B>JXsBKO-Cl5AADVtwpA@vhq8ZD~(Z-2*-BdmM=4_ zWXb<82QzqDZ^}L(cWR$^A&S(w#5mO&*l=FZWo=9}(++i&8*FI%UjrMCmj<=e!RL25 z%m`O{b&(lSJA8uH@%#YW$pI#J-7?tbt)^B^nx}4ra@GJXo)D;H51|PsnF$lSDh7xY zS`s;jw6mylX119dGJDd4mdQ8esj|SW>B-1DWTve4%!ouq7b1i`;)&{8F5R;AP-AQx zve;Mv-bNwcT})}1(>4{$%sT-`p^3nH96iB%)~hvdpW=FBu6FOQ5WQw>KQ}zogx5kY zmRph*c+sR#S1MtUHSM(O&d{3WQ|dRw)I_56rM}?+N#|a7pUD0Bk{rJ3dYrf%PSvuS z%ns(xpXvy5{tuf0!|9R5u=KY$B|EG)utnxBr@Gco!AYR(^Dp-RpbtGJoPZE}@p!*P z^0+jbY9Q#>>o#>Ag0m?72l*nZI2ydtAFM4}X^{5L9yAN!KcE+>-mkXycQbJ7K^<2@ z>8C$?%A>m(I1&4a!}N`|XQ3{e6Y;3eE$Pn z3PatXz-w;vvqSn}=LM$^@Q79@wl!2vJA&%_;q~Snp zw6!6DY|WZ4Ej_>_!fsWsRW#67q_^-^v@yk@WLbd`n25*g5r0r|tI1*o*@JCP(G}Dt z*Ly!kD+=lCycp-(#w);28erVp9e}vp4lpgI0HeoO*1E+*sSPf5J_bf6vR=^E4F9xH zwJm{Tf5lLHH#2?#&srVw+#poct?0;6B)jxY+}o}3BEMMO6OY)IaJaS&vp$sCXnOzThDP4hLxk7zb!F96TULw8Vz&6i7xY%w+hWxwTN*gy0pjmRTH z2nw!#1P9A}tDg7J>Y>Hxnik`U%D~6{G@EkBI}r8YP?hi(XL5RNywS^^f~A$RLl;n# zV4ShcRuO5>hE$Puxia6sa!^}fjEeGZJ2tO$&S4O04urV3K4%v!j9By?p^0GX@<%4%{E{Gy9RmsxbUOetvK9lwT@8(AzqWt${ z%Q;WUn%C=%sq4s*SoOX3|9Y=FSd3U3QsBCM*p@=@Rfoj1EYDm3YhHdu`DyU*tmq?d zel|zh%KshB2M*`$jdJV(#1!<-AM3}r&v$_zRnK#lM^>s|SA&k^?wN1VShiQlVdvX9 znczyROlGvS(cUqBPiW&@3e^WaRRMCfb*2bs5kx?+H00jVuh330<4Z0phc$)GqF58%}^LB0vLj7B7{K8l-G4b2pDIbPe@pCbbgjg6CL*x+EZ>pMwT7mos6SHQ( zoNX;l9x$p5PIfdHEG{k{gMG zQkuw=wMK~5@-kH~Nj=@cBNooV$o=Ng@`DErS>mzXb$!Rrw%Hdb)C{ijCfin{^n`sfysJ*QQ_$)<=2Hb$%g{E(*hY6sp8HtVzEk~#!S zuX#s=@S0{&%Xxbc;#n(4E;JJml=s22vwtI?l%Cg}bga0jl2pEBB5#P^W?iTv1Ycc;VxYfgUQoMs~X5U<~rp z$to2A;6!5|WeW1nMOMiU@YEC^(-Ql1**#EakN1*zAF^gB<1(W7H65(GDz;+_@eEd9 zBUkba{f2hnHL<9W?`0ZZGMHpFdr-P|-cTb2f-5%YqtsWT-@e-Q$c`N+@c9_RODi2A z81U9wJO+z0ex_6s0luthE-DP^;dxrlEx5$7%u{+gI}0eBAfR=yQ`Hk>WkBlp9=gP3NAxYGm5Q=L}UaI~e>HJqtQ(3Q}(lPg&o#mBv;6 z5(V#L*=>5=GV;p8Or0Lz9FfYCMJqHgQ5S;&Rr2gmt4wdV&RBWL=X$I(yR4dV@<;b* zq@`OM*#g#p8a!+Kh!JK}K^-R++t99~8yw*1*fxmLC8=8H?vb8BuHtDi|2qy+RTT4D zd!>z#whEoBdEQBd0EXggA82zt8g1VvDKj%-Syt|yn9bwpmU6r;owW)DE*U&JWpgt9 zd2nt}7keV5c@+Q0X28>y{cVg#$wwLJe;LV_WnIcLBGi4k~5XW&OXAi{gyKBE78S=a zS@YEF`$H;ZuFjZP)T3phD2X_bAOkkjal0q9=$7mFZQb@PI7AQ$#Q{=+ z+kzpq6rUb@bY4dNhf&q{*S@aBc5VziDO7Su+eH2pN0x&x#Pv#1*r4gbkRm)Gc4bU9YUWWxFK78*Fa>KZ zMkEPnDu4HN`$#j7TDDnEr0cf(vKzZ*y1_f#zcAbMXu0?M6QP6*K_>kx6B$Gps_L(H z93$>A@&1}nS=w%MLP#9lHvgdT_FVW?<{`$vB{?dp~<5gjIpV zKXbm!fP8IoT!i#av>XqVK#E;PRh=uf@lTw;-Hj2mA(tkL*+sGU{j5#;EInR+pj&DX zBwyf^tFhXNt~*g7B~Y}@QQQ;{FxG*=B1+@W!$5tK;N>*Pa}8(TxppPCHxW_kE2~9& zLd9FVX|^j_pF17b6mMzOWggVWSBM6)G*{|*s*31z|1+Jg#xN85rOy^?TD}aio1?pp zdx~PLA#Z9!7BOH0IDS2vWmSpsEvK%vlKHi z#EK#a8I@cpZ&-EK&3YZsIz#APhzo?mqd$Sq==_ItJ@y|!P2NiB=9GLLNi}pNxC8!n zdm!mHeD0U@7iu;&T@?cVFadO<(R$|Y(l$AFv0XM$tue*}8-acnqnl6W7V>zOwALkNJk5bygb1YF!5Z*YrMXusGE7wOn{(F_7~#VJ?|30To{1I6Crwq z3(8Y45HP6z+xvk&itq>8eOnKu&Y>^;tHu8h5l}P$`^9%zXe%*O|M|LRPA(`&&3+9U=r`CZ};ZBqC!Y1~}hG$7!?xu738ijpn3e z;@816tFbcMHmJZQ!m;_ptKKVDdVl?OUU&lL4%jd*yNAuA&Zq&HPIrSSq^5%5itRrI z8Bx@&CE5O+)NtlR(Qg{*R+)y`IP z)amkroAcjf6)NR+29wSQiAP?N`K^W!{S9>Vm+84%%A4ayA7h_&jlAQgKD4n=PI}`T zahzxmG-sB!d_k09FK(6GD&BwVop%!I; z#0a#Aa8~AB6-iTzq$LzS(x|1uM7*5|V89`-KaI1~t)K#*~s=k{s^2)#NylZElDKOCL)ge6a z%c2XWZmq0%eMG;r|<3Kb32qRW6|^2y9gBF4i<-nkFHgybU&_ zbi(ASx96?=v99wctrhn?Lo;f;hJFLeb3QqEnQKZ{*V+c$Op(U|13Rr)7?0NS-mqwk z{$%wi#y%Jm&Hqtb28_^LtyJEOVc|IF6?;UMji6u47nMPhhJ64MAH$zSmGJZdStx+P zq&;O7uyYRLR0s-bBOkQN5iPizE`%U?81m>yg7!_6Gg{lxV( z?mtLygJHKeHS{-Cxximzm5pGG|kvQG!mB)^|$tIH?{pa=ot z4b5)Jh43x2@nRf1DaAzd#;ovM419BH)Zq6Apzdw;ydJ`F-a1Jv14s)lehFp?XJAd% z1gNd!`+b`M*%q~^_Dl4&wX5)QD{L*ZEA&up*>!H*h@p;AYN&ePFfM=x z?SAY%M$sQM7yBP;sGq}93ohSOBikUY{pc4x=|hW#C40F)q_OU&m+b`A%j+V&#x)X?7Yxd(Ju|1t$ycpU&i5Fg78H;{lS_w+#XxB zTb*_|NteTuwR}Sp@&Us?%;it>%>f%a#N*#p1(SZ0i8;S_KMeOUegBv%{hBqtKLQioZ-0M?k=t{CJ6iS~)_49N?EQndCxagoP}R*Ao5bg7(x+%?%;Jg9ncM7^#98 zo#Db7Epud?)+BNZEM-C_6V~2*g=8ob{gc#gj{hng6B0pwL-XjHL}vXsDiG_!OnE21 z1<5#aF$lYOi>skx6`OIk*A~e8Jpk;}B1u-89;9-s@HLT=cvsBSZ%W81-lgsij7HY! zkZ7xa5}f*^)^p z5ydFe=?dP?oDxCTOi>ok`u#B^8li4FZktfBQ1(1|XCO5iYifz`jbJ@wY6f{7k)r}d zxY$h5;rr0^1LUMN&)oO!t-VNe&lTOGk;m<_?_*FvK^dSSra1ZDxD294UNJ+a24au4 zdtF2V9)7OWNueYbh%^2(&THEGrI;o+M5Ef zXT@6+it?xJo$z4GAdtBAy$r|W29InHO$c5g^1>HHrfG(q0t=%yx)AKhOy)2BfmL%1 zjIhShU4MK-&$r63d2TYR64F)w{ z(z95r&`kZpx}-kS@HutHq7-M*!n1U0w96m3}8TEeuH-?6n{cMA;99yA8X${E-##t2s28G6^D* zlaJDYhvVyijp>%3t%1a-h{)-XE&@Dfl=CSZ|7aG8Zo+X~4Yi=$I5H{s%j&VXafpd` zO}zF>!EJOkq1^a=DBO)DHu@ut|1)TKBF(?72#9Lv(lg5)kA-Du2O?n$&2|8XCP4#e zUMY)E&QDKgITr0HxGeia%-$iwSsi-ZGEp=(rNX`ZS{}nb- z)ycemxkNAbKgG6SJGSNPOD_+%E$Sp@w((ZO2l(3QaCS^;=?d!4x0`>%z_B+aI(vE! z*#4S5=P})2_6A6mD zzp_c{{mw(c`F{N*w~0_hW7|fNY2df|h$|i!7tYdcw-35+&00QDERG$H1$ov5?CXMzy(o(MeMLw7zkjF!yR-qpn3Sc?1JS-Oj8pZFLt4!pAFhn{Je8qzWJP z?o9`$V?=SCdN77{GRP^p)IHPUg(z$|zt?RITK?y4a~mjXK|?bf?Lns>Z#A`OS7X^6 zeX+-)n#09;FA!kQq`kAo`?#rbXTnA^#VMahzRxKl^8ocJIdA5+XVzB@n1&zP{e$Km zY}|^zvx`4q=O#${Zu4KHY%XhCBP8m<&zw|gdwT9LWk<;vYLRI45-59vsc!SN2kJf= zg~gZg8%pZf8{9B0aP}`JB)I}!`>mnT2EFy>0g4jYfproDOeEk2kF9K|hawT;igaj! zICuF8a3d@1@<@w*k@dctc1OWNhf;_9Q8HzNgXtlPdQj5U8k?dm5qPW}dT;muKmCS% zJ6*xg#vZVOP9*ne=Vr3uL>sMDJ&{*WB5I>;@#kU*cc{?;#&1e4yD_&fE5nY3_3Bh* z>BMO?EiR`!d4GtHo}ozhDKFGa@qwbQP`ct@qgdA0OxT(W>C|Ite6j zW8ns;hd2`g%)@u425`C|H7uzX z?Q?uJ6&IME!d%snV3OrLBqTDc^FvwcexRFDQ|s*TE&7jIPc)!I8Uu5bxVcAyl^US|LH-$>f8=QCk~ulTbNsLy z@Ulq<=P8)WVBo#`S{g za$vG^4g+3tN3>}kUc8o(mLb3V+uTKTTy>QvQ4!} zl0n1`R#kvtN`x~?J}eexUuGwLP*wj@SuY3>n@smbZ)?h!ZWH0>w|3u9__vb3m@}EE@Txv&7x{pZmT(Rjp&FCi1 zE2-I#rY{`$J~Pto00JcwS4mIS2QLh;%k(XHBjdj=hG-)GoXDE@SSe{^G_lD5uoUFd z-?hBXY&agCDc_Vyu6&-Va{527-CKB~NBXI#v9?V!au`%a&9NpdR5fQ&BwT->axZ4( zv?|pZ37P#23uAW{T9#qh$Q#fh0gQtbUjD0tq)q=yQSj(iw1PAl5xS4|Pa7}jis}5J z5!J&uoeXjS+j`Q(ay!Wk`xm9THB7Z`z=FM)H}Pp{`N%Dg_0(-Z%nmvO8*EC7ebQ(C zmO=HRXhc)f(er8FKvsxHWYC&gW2?6-PAr)2>(#nb1!xvY1-YfT8#xBJas9MarQHtM_#YZm90CX+2gKI2JUjFmRb1e`!pbYgjCR2AV&s40M;)x~Qa*m~)ixgF^7iQhbYv0)7*d)f<^#&vE9{Ja$)xZrC-5%i z03aZ1XXD0}a$B29=IZ3WQ$~@~$-?Z_Q&}_8=9CDgL|vApLwI}lwrf^OmX@+Q!||)| zlLMY~QYl?%{CI)%*xXSq0f5XnH=u8ul;nJ=)*;598_4dUjT|Ah4wg}8It!{Xv0LiM z@(^ZhA76@@I&E7K|04j!t9RpYx?fD86d5z8$=Mh~xIzByjV?pTe>(0wsQ3GVeO2Xg z^79f=AmwuwQLM2j<zsXy%tzTn27~g@>|PC|GHoq?qIX_V9oc*PgAZy|D!lkK*l`R! zI!V=lBb?&vLK;7R)5+&hgN~s}geaiv@3l(YD_uEd3Yang<fnBB~G2XCyWL7AcgrdBuBPzBQA>=j|rcH{!GepzJ4t1_ArZ z1~%hImQ!nIjNN?Evzvzflcg?tDG6|dIcEld=0TC-Um>2N)Mbz}qDd<)1Z93~`g_d+p$3AZ z912OnZ`1{c`E3g=W*UJrE2ZneVrreVr%-2w$cRq4!ktc!8 z`bEN0=2)jVk<(5ZW$4k++?#h0{-xO-%-oad0<=NX5Kp%NLFwttVCP>4 zHqw2sLmzoai!g9VVksso40fX13v}jeJO}a4u;UhYr%TWd@Ev@$)vvtg!6l|-1l)9g zXv)x0$q_$p>RJY5LmY$;ss>ya_QX0>gkw!Xs|pQahvW-u=f+Su%VFuC z5fQwl&7%SAz4DF)gb2o|yGWIfbW%wWjQs4>!<{=41(ko@kN7U~!}{yNUi$j`iC4i; zg^+aIS!)5d^p>2RVsc%>gNh?+Z}8a@3I+WY2mch2yF8}S_KdP}hw7aDkSVXhK|CXq zF2$Rq=v^?B8V~>kOV#iwWaC;&nwbP?9Ml@P>OO3czE@hLkGj??XCW#FuC*Ww=`@Qw zisSrk@jedUBqMX;)~Ak<_*ENy(iu7sI*jZ3o)aiV# z{+VJod%IgVa%wc^Ic>xF!7<)sIVmFF({*fpJgJ2-mTw^AIxL6F1GC=SBAdVR3G;T%W_q(v+@ z{nS(p+g z#HqytE38E`7-hqs_s3H^6J#Hgw|coqc-zSbIUM6G%n}~itS5OX&QhF$Zwm3k_aCH+ zl3(iwx1_N0Hp9?7uy1xmP9vs0IzrV0wA!;={h@u^OI|N(W2mWaDPs-Wcpf^sAj(0g ztl19DL9GRWm)|yh5BByip%{&6#{I$tIUb}j2itNJ72DqkIWFya3*%`FIDsJ`t><$$ z1Z#X@{CeBIr%&w>9aI!;j^*Noz#vgDF@i}$O?~jusa|a{!v^jOiYBoRMka>)F2Qf9sG!ce`$C4#z(l)y&B73!C0P zkPYQ{Yii+!xZ--#_O}a$|BrPEzwc;SH_s(9S4Y~OBlyLi^;v+?%sP(M@z7m*R43mukYytQRe7tmJb+(+eW%owTjuP6XobetwF-1t?sqr_< zU!NoWFp6vg6&@XtNG=EtWpZj{8~f;5DjLX48U>f|b20zC9Xp7!x%knFErXch{{`g2 z_!bS3^LCRExrnEcy>Cg+w`P>=_r(qgiD8qE$fPQisZR-8?JbeR;Y@QG+H-E*V zP`ffxLGz+y7Dvll3=j1E$u=)8Fitw@pPrt;Na^DptwQvOPQx3mk zTA;h@=)eGwA(u4CPpgiBs&7%bd^4Bjm^9h`!tLvURr)h!{^;3N%dzl$FnOdZDf>uD zoe2f}eztK8sZWqv^rSmNZyfR8VTY#mTLsCVRt=th=%bkpKMd)eSSW9mt*rJr$Ga?vdFEdp;w#(#rSB76}29N<&JS2MnsRUI-{Q(s|;(yLfF3)|4| z(C4Sw-cx~%FzMK2f4s(rmw7Zt!>4kc2yQ-B3KD$6%%aKouxbE)1O4SRo8LdFbHA!+ zuN_}6W4pUXY%OLy1bIi zK_csWdBlUOy%qlMS#@V-YQ^u!5?A zL@(NYJTt1jpy<{bjfJd7ds?LM!kV!GK%$mzL%TeecEeqWuIO}Cq;l;@EmE|}U200u z`wrfSO{d>GYru$G@ER-wW>>)~n~l=l{=ePK7UG@1nR_Gq)!j6asLZItR3Ou7YYkM8 zH#jhv(#Kmy0(|yKEGF?b{RW~4iiTo5BTmVSuGPJEP{pncL=&eu59q$Y?Och#I4TQR z@?50>COTc*DK=HBRw}NudWz!Es!9^mN~oZNQ%**Qc)ze4gVUK`&CE_bT#Wfcpi*^h zcj&T{m~4WWf4#KS71<2`lA?Fcyq-W(X2&5iGwv-=)=P_xP=%L};yUp=?45<3o^%x) zQ26Q8MWJZ@Q$V1zvSeXRN=iyfnzU}!;@t&fG#?I6*h^e1xtfhG7eJD&z>03Z$%HFC zW{WDT5O~dE5l-TR=V0O<=hg~Qr5l$^k$)YsV9nr!|FlRwUI0ak*^?1AO_YGr14r#2 z+fOQ?n|4GOdo9hJe$B%AGzJ*ho4`vA%uq>I1I}vq+KCoQ6ZI%I~7LWs5UFPOZS{)1O6 zQ3o5JjrJg~djdU-joj7^bvamr57Iqohf6xP3~9*ml%^mL>f#zKpWy;-QRO>l z{W?X)tKkcA<=8s3+RM$ zioYfbW9?avHHUInw&@2YmNVaB)$aM?=MGW563be1s0iIu9t|>?l7}Bqgs7#uM@RE2 zItvR7aG%;L6B4cRX#pX|P;lO|Uanix)mC_sHe;%LwLJCTRI+xbCFU&O0&iCsC2J!d z29yM>48mkc5FmgLXZGuQS`SI1LB-gdniX-Vcc~X?kVnaYN6phfYhdu>C<%T*L`)4j z&YO|fdMM*0R+xF`t4(L@QPlvc4D<;&S_*c9;-0SQRT;N0y1INI(^OefXkEltLgrwQ zuw`!3c2Q>|j&n(!ijor1y~9+)!RF15**u|`m(BX6-28WEGq3Sn4Z1YBL&%wEd_8vac`Bk$R(R?nHftew;r^Qy zlBeLZr)tDq*N)y$iDeI1{+=pnd~a5J4i=(qJi`N^*+X<2t3I zWw*?=fmObHg<5VW6;#ZrZC<+@*S`|(;J{@KTp}p|B2ak!B8S3TvEj4IuE;U*&IBS1x65tWLKsz)ccvW#A_Z)jrZ_p$b zUJ}nd141~bn1Zw@R5F=flf)?dQvHv*g)u*SkQ|~HlyO8O8GDZssJZwDN|Nw5tKmo6 zb6M=IEdt}EA+&v|-TFnC zr{=T8?}|!e!F~aoIJFUv?jTOndFwP?wCYsZ8j>9B@1TiJBkb#(L$fqV#`0cgM(7mW zbV>3VLfY)L@$#tb@{r(RY*GAKkz9t#wqzd zJQ31Ehw&ck{Bg3d0zEV9?TwhK$c*I5m=Pj&2@|@pZ{y@LUC?S+AhCi%1}RSNW+^IS zx;j7%Au$FBLG5qY71`h1nJ8UbxmmA_AoXgXfwVRBY|C}^Dwbh9I1b|_yA)y!y^Cn% z7t-JF?CDm_en;H1-KLDqs7g5#5)&e3<|t{x4E@vR@JxTJ+g+w)LG;He7b*4A_Xrz5 zy2PN7;civB%1GsEk3>GqYibKk0Qz!O#<^#*!$4xiIm=!x1hJw^T zeE*TL?I`+)86OP8fP$t^`q}i-FlpW%ETM}N5sGOPO~XRjxDGWL6n2F&4eYR>xy%S4 zu|1HrtS*pVm`keoNHT}?w~cp~5Heu@5F4!9wriNG$IFz@<46e3wMAg0igsiR+I&pM z4`GRBQqRI^0S-*bTNZDUO8kh;zIn1W+-^UtX(V8fWlCNIW&BiZPj9%Y#zFFlrakm5 z#ZuK;f*>h73n(``-B5fX32UI{%F9u51-%waz({$R?a6c~!>MAIw&=iL+`zD@tSK-7 zq9MA^tgHKw@`q4=*24}qK6|38mSE(3ob5lJ#-dHY;9}pAm7Hj_b(9-WE9UbyPfDbkun%%%E-nS-vb+wBfs`A}8Mo;IBANO!YxxT--sS!m#@PF;hs8Rbl*{ zx1v4Qs+M2jJt0ajrqYb#TG!?qrXAksRZNZgW>WXqGN&eQF6!X0v~*0ie|gs(I4c(DCR*fQTF5>cs7>&F+u{ zQDK{f9u-v+hXVDYV}3~v+Um&o@6SKKnoP7WxW}eV_xkJ=EgY0jlxYK3H2O)srcZ=K*I~(i z!JV;omhlW|9$c3xQ#&mroDR}!L|iEh|Fh-q4*T}toOLh#*h3yT6UgiBF;HQUvu9__ zF`{w~6Wm8{aTO2FVtKb7Yjbs*kRuXc=}Z()3u za`Ye>15Xtz3Dj0OS3;kVRSf3IMECEl^j_cl9G>u@;atVf)a8QZzZHwJm1r4oW_Sv_gB2@@I|TPRHl#f1T@_KLCx<_M zbUm*o=R^iDnP|wtjrE#Hx8k^vt>I_3>ln?@f59(p2%V!T_^e^P3Tfw50nb)$qQ5tq zEm42XC@pn%7yoA)U{!o*{d@^!n<183^4qMdDDF5?zZN;+p2V_&EB>Gj@|9-~;0FWR zUAOo*Pyw)nq2(HxrSDfF*68AlvZ3fA3D;)U8iTn8$~+W`?eh?5yfhxM{aY4$seL2= zE_t;EwM&hLbIRts<`Dfj&+%PSVd9h>w@ri}&=A_{WkH(nj$ty_9Y#^8QQuni&Of6I z*|yXGUEghgSW`~fp#S*P@2ilG?8g#1KzbuiiLe}}>14tNcO6Q0Qe4Y?KCJ?qd9j60 z!x_d(Op=b0+UN)qlF-r0ml!AYh5F1QJlM>k8Y!14gNS=u{bneu*t?kZh(Hy}us^TD zg*XQ?UBq;FwmqAUd+$5Dw%KgRe2GN zcJ=)>Gjn7qU5;M<^w@mK+oV5Ug}Md3l2C*739$!U=If-zS#(^n8XGcX3}%_*+W(pN znI9T4jo@~IR)>g8&3B#riJx8jQA3+_`-@07j+Q)VPYy8PInRTb-3b4V7#Q~?g)WkjQOZ=K^qw2i$rp!YV zn=ML|dgS`e=GiclKQzCLV$ip(iD$h17(eS~A#3nqDiLAu1U3{Z z7>CPCWiUuKI|v~?NQ9SSk}b^suvqxNk<5TXR16Q9t=jJq&xBxf_CQ{gRPC-))<1-2 zCZB1;lGSt^e=jiGT2O=BShX`@Nyle z=$~B@+9(f+%lrXPss6(*XOz{A6r&+z@0PpC zZUen_QYE1xUK|M~kv+Hl#mI=%qG2x3uQT0IsT~|DZ89NkpNdbXj-*sXG~Z|jR|(@4 ziDdj%X=_v=XL>0gK+T2*WtWA41ch@e=2jev#W}HKmD5!Ql4p}yK;*Ex`HTq2B`6gm zUFZ3>)TzYCR(5gd5A@1SCUnqgi%@j%L-7bR<6?swxL!}ouAomM+ULEFUDAFl9@@|SgFE)P{m`VhJ9^fYf*9*PrrNG}2Y#uAFwRlr{_NhpY+~u$6T3ZNy zT<;uhp&@^1@XIh7J5Y&*lA-%{%H0Iip&^9FN~K4K0N2RiF;6mx!iuI#oRa zt{^LJ2G7G=Ru^ypmB=X5kh_1ccER#MA(=rX>Jk8ZZOCAsc}Ko2JH)`nE-A)V!+$m| z{TF{rs&hz9t*_3IW}xK`e_d$MV>ru0G>KQ`1f}NN?8NbaIQV>MmpiUGiMteAZj)pT zJw@sEuq>h#Tt=J%zpoSxR!t&C$jYIY>lw)U*jZZnxNF|o6cYEv=d%&!Svcb*zBW7babU)=0Cg%M<+ouEGKzlFc zV|3*f+Ow5!9GujD<7+w%Aar+SV>eNnN0Z!`QsPeID9p*g+*nAS!6nKE1yU(6kgWhH2h6SPuCLafsXM6-w zTT@oZcp2raHp)5^NgZ^cLA2mL>as6nVGCs9n|Fwbd4~6NZk6)$Pp>8_lRqT!o1nIY zQhvpV~h(_A;Edw42edW6xE|N;Etj$Yuz^Lh+`@E9>aFd1y^14i-mtr@-<3|F}*oPC5Uj67)Bx??(lzM&@4+8+86nM`YFx7>#v!P}ahh`oU zWB*89{CYM~E6L653BNl7M=qsh;;*O`37?~kERmdy!dJcs`NWt#V3$Zg8Oy1dT%Eb} zV!bPRmj77i7qBBw@CKjs%kNapAkA)t=n16Tw-;~0b&Zx)W5Fxzl}uTl=eYP1ZnVk8 zWjpGzg@U5H%>13@N?+|iFe=<%CNJD9O%>8nBQD_|a6^qR{cM%t#Dn5|b)=4w#RDyA zU#d6`g|opxz6&$$JBVB;%KwYU)0kiL{Ha4;T*VNF=U9bw+<UCbm-JGiW$6n0H8KyTJpyInwR(>VAH)g*kS-; zVyyDQerWEMuEWt>an4UrYn5Y~2S;Vj4$pRidS1G-l(MA+iR){m%kA=6nr1?K(T6<2 zm5YyxYIG_Z8KjluAs14pZ{%E%{SL=Xz>YRE|6OPgu|?ZgqK=BmLy8fW2<(7bJ*$Aq zV?be({Ebbp#45aNY!`>J0wPAy%l{YX!z0PRhwdln{#H|5r ze6`sXZdP~4_{)7Z0_-UUZo<~W%NbYN@KX^J*+DG@o}}%cLp)mBsT;By@+(Uz$8yxU za#CNX+9vlz3$)cdwJl2HcmsSxwEh)Gn?%(B!TMB4OsZ%kcBQXwwi&H48-@kzO_|(Y zmOfV=cZcXs;`Ub9>e$mkw$}Yk+kxE$s%hKV!$uFbV8%rKW#2@UDT@L`{i(LYPaN*5W#`0Or>#cC zMRyeaci^g43qJd_t6$S~y@K6@4+I^-&t>^&{H8u6dAKq6)i-w4?G-peU)U&Y;uReY z6fM2?vv<>bN{qtRv#j*XpD1H=rpQ!d>sity9F)SZW*`pLSlz;b)P5s-jHxpz+r9g} z8!3c{EVIDn%YH_?Yxel2HXVQ2J4*Dh|AP&CUnTw)MBqX@&dPMK3ashp+ioTsRGi3jxps`q22Zay6`1}qj=KhU*eW`)#8=EXniEPh0Eq}T>D2Pg zXmwt%{jD=v4oAIv<(TRpKZDg5X^1t+l0xEKejxFTv;zA{6gfOYYNoJ-vkt z6HnMDT~bsV!zJYW2<<4ZZHp;xH@4e*qegYkf#Wh1j8j^3(73)!aV_VX9T7N!ud2i! zFE_;sr65urfxakuRtIGyEej1Y@v$0{ddfGi`ntlHL_t=ciQ~5wkz#bv1M>Xi@Hq|3 z2A0+`&xmoQQ!{lY5i%YfDp_{1#I+o;bBmete}4^;4{vws)c^`a?iCOEiK<@el~qU?F; zmNrVhN~senH?5LwNz{i=+H9qXM)vUv(2){31p*X%)g3b*O(>8BmaESLqYN4f?GBo0 zaz|V&FyAgX=LrhrIxV?_^31`hMDxo{pFMaY`M4_$C=IY26w0`X9E|HRTl6rn*hgY! zu0WTdgl_$+1G2luK%p7tkaZ4Tb&HREj!cF#W;&fu8*Vx#cT!iKu3-lxQvK$vqNNK! zFrU@s;@vsX69kC|z3*)F6hOwuvg(`Q_H&czYF-blXp>&*Q~CweK<;3!W0Scmp>uBCaN>j(Rf_m_fc~2S(dZ$ht2_|Mlz9 zGf~BYmPGJ*2MHTOhqM4GyoP4j>r0qoZ+sBbRzSH88Z6dF+pr=5v#Ao}nDqWH2Fnqz zwgnXu6NZuWCi6Yse9kjSuvs3# zCl2N0Kzf$XKQ)qsP!oM=72gJSYttIB@n)TwjH^Uw(hIQ~C9?~$U9o#e&`;p~+vF7wszlk!lq5uw0O zM8A(akxfSX9*2SlPy#@)0E>|T5c^f<>){K81&f^H5RdAun9Y*+d$}v?PKFg9JJNj$ z0|i!M{_Gi+7)w7cEmYB3Y7Sg*cc`>HOTa9Q8nWC}XR)Mu5T_Kysc-}{Ww)VFnA!7>((q!` zUM5z&+-DzIxDhOGtDVG~p?UQ7hQHRS>epKc9%-}{Pm~9m1vy4S?F!j%)$R7V5J0FI zbHtT4;NJP@R!>cY3o8v$nvw;O=@S4;&OYF)h^2g~&rLAI_;?GV8@%}S>}qY@09)zY zcN00R#D(sAmTI9^vM17yEnpgzmLa176Dok1Y?$wxMurYX#7!7Yw-SSet5ZJU)WmKwiM!2=Y z1E{Ml1U!w|bz0?~u)f@aZb3$xqnvZ1+Ob-2;bOs9W5Y)cH2e%4(qWmfuNxo(GV||K zSMuQ5yaola2k~*}8Ml?sRhWx=7#mV1PU+fe=N~A? zn-CdnO6Yj5a8XNqm{|y+7^>Kx6pVq!A=%3p&hBoH8yPK-Kli{zW%3e7M{(kMzS`}( z1vZcQT^296c~`m0E>rjipwpk5w>ro8tkWkn$an$66U)>k>Li72mDomAuS$ZMXWNTK zG)*QeS%Jxe*l!wy`)nv|#R8xzrOAGp_w8(nu_$vf$1T0yU@ClQ&Jeq;QXqXEuT#LO z+-*$Tgo?J62nJeGQNTg~{&ZsXotwAjtg>aznw^bRrqC#Gi4 z-N^#CW?|*FMkoKO#dLDmv#&>mZ?&P8nc--_b&e?u8OCSGVO2l)jl1TlB*Jo5W# z)Kw@~dv=51;`}(MvjVbc(OB5w)yYmE=erfpRJ9B2t56U{Uzx|AF`N$nqE@9u^NkB8 zuss=X?yR|0KBGuFlEy~y8x|56pnJzg4!C2U1Kd|iAf_JTz`%#lYfd6?oMV-`$&^lk zIu`H2ZAUJmC3;H%&N51R2QM^4Ys@duSTyY^bgEjbHR@HzQk9p1W3)xrK)aC>S*p4a zR`g|f<>b&`izHdX@QxkNgAUhw^Y95i@NUX$hA*JpvXUf(q&7XYiV~oB_+A~(@a`hc z5VKG&kq=yR+e|l>wTtY6-x^RB2sRzbVx?Om)R6ltppqrtHJ^4vsI(w5ZFOZIz_jaO z5YLvb5Qcgtn{+UNGQ1tm{mm0r?K6Y_2*zWTZ$+)o>y`0H*#;c;&hMcLdi1`X&TU|k z*JR$KpGwLB%R(>eP`+iP8HViw;`X^8}Ok6G$ zPC(4J>6&0uqUCNPHKek|4Sgc^=WX(L7UhEjwICTzzQ3p_;(45LZ}X}1N&xa)m%Sdl zmt@4N!N?Q(P9IYe9Q*fd#g!st$ad)dWud6{BqjO#nHdhxJjalOE zjfqW*5l3`|N!N-AmJQ$kYD?^rFTS+`BhpO6^$E`iNc@CGebm6vKg6^PZ^d(@#-%uD zcpbp2F?i$h)(r>omr)pD_y#o_N&&4}d9`>+B#cy0di&)%WNDYCkk+%|4+YP5i+THN z5S8LT{Q&F+o4^r)Ojmoa&8U|AF4im}-)xJ-QUs?{zA^VudZ{_3LXlWu(d9AdC;Ke+ z{IjHzn1R|HO7P~Ud@Miec%-cA0(7U?nHh?eq|o0v06*vqP@!E1M|N+aj~k)(regI~TQa;rrdN4!&5(_p`4|F+Vk%OUnVL!)EM zULN*o!$XQRVGHk&mG?3$4-Gt#*fn^az5RrG8cf|AyK5+xJlyk|6kFh|Q$G#jb1BN{ z&X@cGynLKD*|`|5yslTh_c{k`jFosl;d#XF)5`CXJH@RC=_QD&Lh(-jnsJ&0u|ZcaQ#?+ z-PbD5s<@Ef2u&qR}zD#$6VSy43Va>QIK0h)T91wgaQl z!<=5gbLhw0t<+yodS%_u3J{rKyh;pQ=LkO0pzfOe*AE5Ohxy&>d)Ha))Cq%}nZp1b zabiA&U&Fx9x!J2FC_gkEpqylIBQOmq)!mLdy7DixQ*CW(kytJV)1xK4FA*Ct;YYek zmEd#s)|d}Jg;R+|94X)R)6?zE z^nh+RIi~l67paI0Bb_r5U2wA-Y+F@|S>2AHFhILOFFMiX8o@;}n9KJ-_uC3mfZ;HT zR~Uh!6T*s$k;7y^HhNGniY7!-0~?}Xhv;>mnI8pj(!|D~k_^!X_kUj9N5EItULPi3 zqF}wKmAtvDKzKIE)F!r^V=}#}xNl29`By8oPE6G3OZWs9?QB@%oZ&(m<^Ke0%K-0)p+Vds^TtQ?jl`=yH93( z+fCI!E><+)=5LJ+xWFP9uv>cqZ5mw-7P8>(hiLf*?FiPQutGII>qrwAw;-9d; zt~U{UhcQ``AU-@~*f7@&be*5|^(6XLi}g>Ln)F)jlEYVjMQLlVzS@Z&zW}r$i!9E%&7kN%~XTH?yhX6|TYxz%meRebKUyPzPNZ0&8vC3ZEM+j=oq*;Vp ziK(R&6))Qg*%k9lE6}pp2R?rT=DOJimgj`R4C&Yk5P23>iH`;b3 z%26k5-?Tif?Ag(`dM8s66|s;<2EDfhnaX{P5)^YIu<+P5Lw#jP%#XP^0|4ROZMS|% z^2CH^9%cEN9lE_Ohk6@1ro?U11VP2tyVG( zmhdk2BMa>!ZFNUkm3e2i74?Vc`$6ooRE;SdE(H#tQvEdPrqgJA=4$s?oz%Gp(u=*E z>(AxZZMTg~+N(9h&Tqbz>Ct=KkeMjRKYSce_{HQZ>lU!&Aw-XEFEmm8uFdtA*7k*j zm7^V6QLptnPSPLRo1VFAfQdFCmhdvjQ_s-+>J9&QX`s~k2mJS6bv&6%ulO1%wQZbx zA>oH1PR&yg*>9i%1+8_4Yh2`B#8A9qK8c0^R-Npd#JhUVhA*MW@RO4c^FJihEU%Ce^R(ivbvEh&$(uvSkF-?V&_W4wUkC|ZE}E!ZNE?16J%>mds{ zQ^A8gvUEZGE&sv8sfr@bbTCb{f8W?gTD}`Qt1{d3gpcutlvl+nA=d1)+M501D-bh4 zDbzjYyZNj`-PpJwrFDwR|99wNz0Cre_Vwvhg+9Hd;=5ur!VjzJSD5vB&_v8r3e?8F zN56pg2_8$h(Df&Mx+99eK1XNJS?k@iu+Bxkm+JmnWg1px@i1vkp%+&cT;AX zFqB+-?kVc^oT#r0pm6y*x+O4EPU;tMivvL}lIPH!hZP(Ni2TaTxGL^Sxv~WjNbdL< zM_;fQ*zi8T@6W5m_ru1_`jUUd@!=xv`kkNEq^&^;d(Ta9re*6*2sgG zW*uu=M8itEw8TM99OcA`jGg6eyls@-2>(wxTgYDwx}bynuj5vW6y#H?!y2^$)`j}{ zCjbO&mu1@a>=ONWN-n)8h$2cNtHHEziM)`g&%~6nNi{ZqZNyW^Hfs?NYI$SH5~Pka zY_V%%x2T9XP~^b{m&wvi&=Cf44-r=%CG6L+uYQ6qAPt$~$BEm<(g+f#)~z+SSpb~; zfrpcvrr5x*!N32)kmg3OlrEe~VCM!mCBt;HJZ--h6DtK?WQQ|DMg{iLS%z(9NX1|a z6-!`GCeHT-*gXkIqykx;ay!a$T!GPJo^gs7ZyA<)S>LFgFo3(Xb)?)EhF> zX|khMR#*J3VI3xC){Lbox%@7OZw_p4-MlB7BGR^EzbPCyILj2A=m_Qk*l)3+!~mH3 z+kUuD5)#Y(`T9=AAXE&pFh{^>+62v3N%u}pbBy;}nvi+@d(GgK_5`8sVa&c6UVHE> z3RMoH-PHp-9wgA86yE6!6u~G}b;PBA!E?+(Lg!3i^VgNC)Oj89osCX@?2v(Gtf43@ zu0lYRIFOQ{H+msfu!8Y;opt`~vQ9g(a9itT-cLjYO~^T78QQ$*MNTE!pr#XeisN9l zbGAciC>j-hk1l5xA>q~-Km$4rrAJ-QLrdeMo(|9hD*=JiHJ_t=F6CL>*Kys12=g&? z(fjM(akD8l=@Ri1+RKwpNrbK0VwX?gPsi;xFt0o0a4UE)VKkD=6> zRCVg@KDwoK|E+R*f#y+Ln$v?AHw*>w~ z%DkX{2D$^8vkF}|?Zn+?{!LLSkPEHr~Gf|K$O@;^)C{|}12WL_9yiHd5iKQ!_l~Oin1-8+_ zeWr!W86nY4Rqu~wMPBf~=^cK#i|A?{`>JGjHyltF@c=FXaeMZG+YNott11GnzC0oL ze_Bu}c5}f@=dgRY7QkRwa7eD>TX`V$dMT$L>;me(#zJh@$zdZOSX$V;E^HGOeC=Bu z(~y_e^oEJGtHiKexugk^Kd526-||Wd_dZ1?^;p%CL6W^LokI;oaYc~ni?#`(qzM<> zole2BjPN1d$|nUkl_(8$^nC(jSewDl5Ng}y%%J5o9-@g9vOX?iU<22+R!9 zXt}O@e335tA_*}9#O-=-v1^ZrBmF^twfjbZ^9^Mm_P%|-kiD3qAxpJ!d9OE*YhLmD zI?tZU*gK*i+8Q#}Z5AaW**NNT}7T52`-A24{2FYyb&*j+?BKtq> zuq#x-;SWeKk*S9dbx*p-PAsAf%8l?q+yiHwZ>GSEsMFU!`iRB)F(nYq!$G?S;-eVB zt^>-<&I10M2fTfuY6QQ{tiB#(VRia5jH6q2f=-ZL?jHc2Afos~P++XnWc_A%ij+NR zUcpq<=DA$@4jARD5&mn@w1dpgoW5Nq1mW!wRoXG-Udn?KR|bjPUNSkyFDER}PJU{4 z5I+1P1cr4?Qn&;%;g~_NUNMJ9im2`pMx)feD%OFAX|J zl zO?0}7o6X<}6(?Yb5L>&a11TAkOdzrZbeZd|yYkAQ*1w$A$Z(v$_xWnkGuO4RW z^inY{)PB;yH@O&NdsRW4bDVnZUipJ+q&!o$_Nv;7o6SU7> zq)DJ4MAIH5KjNsOCX3)5%t@mUUGJaE&-KZ?2)F&M$~=gafZw8s_Sbu)K-qNJm2tke z8U=wuByk+8*Xf5|FtWv7^7$tnTddxeb~SL8bIc;m{vxuj5UIyn9TseMDvhhDGdOP6^4%j$M?7tYA{b5dg_=2oo@Hd1vP(_`8AY$!N9YHg zYiAu+>RK$z=ghEAZsr!Ea2t6fatw;DMa;?Nzx<_9!)9h1wbE^VEl1zIX2Qg&6qVAm z(~yHIRvf2G;=E*l{|D=Ef}}Rrtb)zstM2uh9?-jfPP}{Z%!AW#cs?QYxbKcyoVENU zM_|TRFDCOuFk1_?wvM!8lYEE7Uw$d7190StS1}yH`eTUP?Tjwht!^o5bsX_`J2aj| z^MB1svEO?T*1ye!8${h0`MNwai{k<2?^uAU887t`^@Tj5NIrPv&d=fn2gEyt)PA5l zgd{JRe42<~Oy=l#$%;Q?_vHkYXV!?0>!(iPv11O zcmBPCOsN{R7fD%owE7_Ck8-0Y0DLBgaGcGzE*;P-d5CP~e7mAKsj`-4ABaMSGf*uy zO$M5`v`d8d84Xa=NVM;8zJUzoq6SGC666PBo2EH6p`KU=`HV0v6sJ6=IUOta{hNOm zZrs0>Ie5u2p>kqePxYe4I|2?ZOj821MTlfZ75QIMgLs@d5)z@{*iz=bo5u`8W@N8PB*BB!6t zNUWLA;ajlRbt9(3RQ}LOoi;k?B=vLFhVoBJbH7?xS$nAs3WAbXWx4NIWT^q|jEvzc zIOqm-m_L#0$CJUTlgA-SqsmUQ;%U+g%uo3ksST-V!c%T#-#A2jEgL)SIND%-!sh4d zmsew;j;#p--g#(rjrRjae)RJuNeN_ZZ4~=~efkuV%gQ4h&Gxsc+L3|`Ms5flht`n+ z`Ou?C!TNvCMK;Rok08>C%u3%2q@RolY5xI&wK=JMeP3B%XYkZz4gKaml__1YCID@% zM0Da!WmPR4^4>+7xLpLz&`K$jFcfiZ|G0+AvI!gz-@nMv$5dEG>A|5Bk#Sn&qAjA< zK#fzXJ%gX7YJrS(>YGyptNYuxS{Wz^na7B)u!j67b>obwgeU^7ztq@eOXg0etiD~- zj!Z$3JQT?vECp*)epJ4v4wIFUs@nF@H?-Gc2+FTFG{al7GESiF_)% z$i(INF=fKq1#9$7yGF|FJsm(jd2v?NV8) z)T=M$PG^|vXoRVXzV;MtYp8sOw5}Akd(&>8K^n_vl&`v@?=nma0gA~gQEyD=|JDy3 zbZ=BaXSlOhBH6w_1u6$9h%wrAm)(tenEUDM5v}XxVx2jsBBx2^bGZ5VG6MPNn_sy0 z`$3Ho&Z?TQsiP0lrg_|2;*gqeA9)tlF>tOls!>V#PZ$#7RWCf1#!7>;yPL)e!9nf8 zeO#>-&eBc#Ye3uWUe#Tsf48lQo=lRSyy|loX3tgH{ z-JH{rk>T11@llg0%jz&uV>V1G0`VL=Q})1&X!G=f_wL6@FeVaYu&uT{nO+FGc_Kb? zWoW9Amm^f0^A)IR~Lc)Myk`*iYs6-3};6)`RLn~)UWEN`_LQE*Z znzOML@B)#4M20vyNlNE;TY)+6%KyUm7<mX|reod` zH5%8IHTpve$e$Glj6|Und_|ta$+Fc#bJ-q}|KLFh8dfekX>x)@_^N9!z&D&OHjT4I?lsCR_3-F3;PUfDD$#YC_>W z_*~G?T>U|}N_`L@a{pOqOY3gZel$#mmm)tp7GlDLxe9BB5@tt}Wn#)XYipQCW3z3W zkk}}6N#pyV0H>rYEG&Q6g_MErq@PYfEF}Y%kmswhcn{`83d1vwl3p>W4?+R2lyWW*2H(h)M!3 zq3@gd0*+U=H%aqF^buk|A~%pHng}ko{+^hIYPq|<3~{3pttC}QKy#j!HEn>FZK|XbC%|d%HXBa%#--gL^;ruaCgE1$SRm)+GFUJO zl)vJMtzfwy0^|hLDyy(u#-Yh^`3Jf|;_&I};`YMH!@=ua`N2lfpvOwd{N<=z%%nBA z!#Cwuzk9>@+BQKiC-{V34iyvG?ALa?8j^ zgdr(U(++UEKkHA3)gTOZr`xzJOG*&XQXRI{Iz~3qy;)TIW!-zdbHV;zR1+k1vtQN^ zgSnS>bpUFTrn`fL4HXSNjv9Dx2@VzTda#VIBh^1mq`+ibMqE_T-dT5s_b(WfO0Q>{ z)e776KIo(SqdspM+pOJ!(GAO!1WeLN0f>|7=c zpOC|Kt&%x{C+BYm1S#{NM~1~r4*+7p7Y54`6t!1ri39^Vte@xE&L0v^PVaOi+~7ID z>-@ks3@5K8Y^HaKph2Z=(a12;1m}4wkbAS!Alcg?ssU0G{ax8qdB&&F>)dRx;2mT= z>xRj`1^cNX7ta5)(xA*bQLp44wqjj+ov$96C7re?TeAET0t)he+iOl3pBrxZ6eG(`kz@jDdZigySx7e#~I{W0Z zuVwNCP-0+=UG!T1$*bBx+r6!%*I!TqLDS148hH*0m@xE`9%AF{)Ju+vD!P9FB(TJ5 zs8E&)FCZ@}jzsTfPKm2Az@sc6I6^hTI;ZmoC^)pdhckU4-fzDyUlSzM$^PV`t7hV{ z8AQV4n9c4ald`|kBErDe0FRLvp|(sH#r_Q_EYrui`n7!6lyXD~xen>9Ud67lc)yzh z{1aM+uffcqSJPeZep-Mp<@@*qd)g!fYlb!dNUc%Hp3l~%#8{f0fMB+n4A~*G_nk}< zI7_?^;SNs9_U0&0ZBhk_J;%_c2m>6d@|-LbS|1}rQ%_`g2QXi+ZrU}Kx=a(!Jaqg* zBQ-4gUoCw8rPZVS-6e}Tfcjyq0Nk@Y7ZnB&Qcx=226AqLI-6Jr!~8zPl{##ooik7- zgc~MrC%(>w5Vs3!#9% z>H(pN26etW+;&i{*6sUcKkhDQXW0#lI2<6lfXTpWJXG{Ds|SVgYPLs>|FzPRw=b5d z1I2UcD!n{#zZn5An}7l5^Nzksnm7CwVXVlz^H3;HD5V#f=lTid=-L2Mo`K`&osx5B^Bh*&eUv;CE?_sIT&MQhZEgX+>m$f zZwL?CPY-gfwn-tU2US#%C9fZKqBbmWRz^uEJ7-m@Hy?Pft$>M&SF`%J&OLd z1_PYssBsOR^~5{7_3-C@e7pDLO7#^skjHYB_*pl3$dZc(G6kzg8;Hb*c{|{& zgNZwm6*+RHkFR>sF6neGLX37*4R{)X{f^{I0le#Wlgi-x90fv}1}KYyZJ1;&j+N2) z)q*6~6`8G&48>jSy%3P)C@qNgQ<4P=G~`cKe46dmm)GQ~1^Z(p4$r9tck2U>&k>c7 z8J|{mUWY2AEPON82RJkPj}tS4wuM`vR|>5=!MdW1qB3Q#J#+Wpx|M0qV}InvM*9|f zgeTu`fXucESdEG+uUTZO+#CN-h}M(bODmI&jYgP}z;ziFd7)$1u`Dd+hfCrmmi9t1 z|BGYbaMI?WpHke5gVhHr{pt^PGJkn9_xsCJHo-d2a9)O|V4G?Fly;RldU8q{qmFNp zD_F<^z%cLp%xxM3oC7nv3xjBl;Gg&O2WM-SU+<_TFA}#EK^Exd#^`_PCw@IfJqJWk zb0oV;BuTKon}*5>?b_f7jQd?b2hXCsy7 zoScS#xMheSOq&z%W-+scD!A*C-X93dfqbmKy;oiomS7y|dSMg&BTdC2wMx|3gywt75fw77 zu}+!CXB>aBPYC4C0KFA_4Hqp{s*2VEtKm+fc{G(Otn_wQ1^}^02r)=zYyd&bnxC-BoBrQHl^Y{67b$BoWBT50xF#l~z@~Co3#0yZMpKILBO-Ze!cDL%R#qTM2?YZiH;`k@jcGsw-KPn<;t@ zZ^jlb9Y!pEd^XZ9O>}y&iYK&D2QJGG_sta^hFnW%3qj$MMLA@#p219f-riu=2B5|WAA7y zGL|iN{99GWxnu*kO{yi1>Hv-C)Mh}@ihZhCSfla;%wj%)hMc{~efaJfF7(|U%}dl@ zAImmJf8KsHjQMu|@D2)rN zvR++q);glNl@);?{}~5(Qby6Jz>v@OHMbZx8K6Fv!?#DED$;i)c3mnLBJ=_Rm=awF z)9`40!79CrSH^3GEht4_(c*t@>XoS&5 z!afmg4^L&2D3kG0nwVZO zyv?f^>#es?-?$5ZW+aG`Z+Mytu&O3#6J_*rE8|`Xb{_%f%IGG8BJr|Q(6c-?T5_*e z$9)?%x_kiSi)F+snJASY$O&yKE*S2;KnbV2ccrCj7}`~;*5z={K&d4`m@>-7B|k-< z#*_;R72%8WuwC9`y+p%%yXbcwg{+HET6T;%te?wtk2Xae22Z5smo2lV1^7*(J5w0< z?jO^1>aDHmV-&XGfy#5o)r{7YaHYY+-?XHieaD*{I;OEbZq8Sm?cMGcQmf=yxRR3bz3Ge(gn5c&<3V<~v z0zH%P65q*8bZ2wLgWAs4DBG?3x{T-Pjg*3b=FnPvOL?_TbpD{FxbhEvJjhV(oYppR zW4L@C;yoYUj_~R4*q%Wla)3nQuS~0N<*VKGxK0CSTU5QTR@to4J=!e?=>$VbWRHk% zk3FM`&xg@<9})TClEZEkZKK!IrqzPdGc8J!Eg)fsDz0@=ua*a#tjSF*uZta}qDZQI zX)R3dN;mIk@M!!7wePQ1NSFVte{UC2hI?5j(ds<)m3SCvlNcR$h^-> z;m>F6AI-}3WHgcHg&Jt!am$&?1PTX2tJs7IYwRkr)IZkbo<7HmO3A<^94M%FqQMui3t*j z3?6<*skX%i2w`J*XVPhMuq4q{-LU)v-tYw^dWl>9y11T{nYTGZwOC%>LCD0vaUz1fLhs0P8ZHjY4oHa=HZ*_RfFop9Le&^2Ehmds-|_JpI0w9bS!9P!O zdHW|guMrgM$1w=GJyrXTOzat~4oPTZs^HHn)k7LeluLDNn#3Lv>?9=Gp+zPg0-V0R zav9Wb)mY+9DXevpTHekW5IPD;KqVp(ym%~U41|-jg z&4}xeWZa@7`>iw383LBd-bBX*WS9|Ec~(Ai)ycIW3O&AnW(7xJDVb=m!E;PI>^|(? z^@w4iIhL1+;AmCLFbTi_auF>&hdL|GrR+L@c7lEYaweL;;TI zwtRQr^Q3Xwm@zX2BHh7vteK#fNkSafIU4MNdOHG#@5nKax67QPctUGsfR1fIe|Hn3 zmh_rwbEPo46qyIlk<454!Lx7(U3zz7O~u zN8ZV-*23(*rUlV-h(&0CdF@Y8p1AK}_f!PED(0s{E`JNy&|oK>CE4)iGNMgjgNpAd zjUD)p6t_e4Mf6&m;*~?lZrj#SP~*4P9m8HrZp~w=VpEwxs>0oS{nsQNZXr8+-B#wI zC;@stU?6hw`*?q;7k{|aZh@XW?O&$~zAg0) zfuEc-6eruiz>Lo@7n{}^%BQLJFO>)y@w%?v7G&I3)A{{#693UY4wqOM;=d<^Yt5zY#Zh$53kN!;E9` zD~XCvvp$k{v!)6(d$K1ZUmIpts~VjubNeP+rkfNpI#_NA!JFbW$6n-Ho$E}pleVxo z{8orh$qMc`@@J=xsR2x4u)2CrNLei4n;q?C4!}{6hYg|gtrx>R@s%quC@*oM?i6sz zyw6}>iJR8Mw&U;`50M}~FfE@wYWX(>kmkFh6@d;Q&XMNpp&(~5|45=Z+&~RKBN?#r z#=eS{^u=GVrVjfkl8z`3@@@I5F`RewvG<(dTLB4H-<6^sH_5ki@Pb-ff<(n}cO#LFf$*uV>&P(Q$|eCw&)-4^&z)OPA_8)6i0@DHvBlAtp0q zhl*$VL0Yoq=AnudDrdV0BmAf%N=T&2xfNXP;f2v*8aEmMEUMc=0vQq$I6f`}3~HEK zfqM_3X*-SDnMr?KieZC)mhunR>Dr#t$N`jAha`!TjN!0cKr5ye4+K-PqP|u z?LJW)#+m{W(ppA7$q(4nwGFo|kNr>rAJd)au1ERd`H72Y9$`*+05OW9S?PY<6OmQI zSM?M+h#dXTsdm0ft3w1ZxL;n`fE*(L|9lBr=JrzkfPnF zbvP`?!J4sM*}ZKZ*_1tSk<0Ou<+DdE(YAGc&5p_f4R&Au#P1U&?oR!7Ycil<7%ir_ zEg|2_K2GPk7;LjvY@>D5-7wILSgQ2PXEY!=bAg!|NL}W?k*44o?WR{=BzF)g`F5b! z=Efg}&p9F6;I6J+=a?o61#-6HHAut!=(3mZxDti-_X)=;84ca* z7ygFpu1Ada;@{C|Ige8Gy)hytF@}kZxHk7YS1u-l|92zsyiF_))-Ny-g+?gjUeec_ z1^JJX!{oO5^a*dkaA0<2v~ATfg*ewQg;YrP)l#O-Bm0XZV4T$`%mho{(hq0Vgfyd9}i5A7Q7!fHhGv~cNiLN)3kbC(p z$t+-6G1ye@!JNcg``cb*ETA3@GLRQJSP*hg_-V^|tuK_ZiZjMoBdewk=VAZ-Q`K`3 zqqO(+Kr22Q{pFg8^*+?Eu@i1@=Wdp6c86|U25=w6yOqD>ZJNq0{^-Oyl=LRHcYz`O z5E6Pp{m72OLw5zMpq`RhK6f=cEnP*YT3Q(buYk;2ZmLm`A(hM{*t*mvR%8k(NxhM= zWIPJO0v~y^{KPd1QeyAF!NML3I>o~u3FL%O-u6zp>!C~u2jB^Kpfi`;{n!oJ_t>zN z3AqH+F(Ci^Q4fSy3j-GKXjx+;1Zfgyn