From cc6ecd4f901c31507fc1134ab0cc28e3ad0f4064 Mon Sep 17 00:00:00 2001 From: bd_ Date: Mon, 12 Feb 2024 19:24:35 +0900 Subject: [PATCH] Update parameters docs and Saved field handling (#661) * docs: new parameters UI documentation Closes: #635 * feat(params), changelog-callout: adjust handling of Saved flag with parameters * chore: fix docs links --- .../Parameters/ParameterConfigDrawer.uxml | 14 +- Editor/RenameParametersHook.cs | 9 +- .../ParameterConflictTestParams.asset | 20 + .../ParameterConflicts.prefab | 16 - .../RenameParametersTests.cs | 32 +- .../SavedParamResolution.prefab | 581 ++++++++++++++++++ .../SavedParamResolution.prefab.meta | 7 + .../SavedParamResolutionParams.asset | 45 ++ .../SavedParamResolutionParams.asset.meta | 8 + docs~/docs/reference/parameters.md | 92 ++- docs~/docs/reference/parameters.png | Bin 0 -> 56946 bytes docs~/docs/unity-2019/index.md | 17 + docs~/docs/unity-2019/old-parameters.md | 50 ++ .../parameters-devmode.png | Bin .../parameters-enduser.png | Bin .../current/reference/parameters.md | 79 ++- .../current/reference/parameters.png | Bin 0 -> 58075 bytes .../current/unity-2019/index.md | 17 + .../current/unity-2019/old-parameters.md | 41 ++ .../parameters-devmode.png | Bin .../parameters-enduser.png | Bin 21 files changed, 944 insertions(+), 84 deletions(-) create mode 100644 UnitTests~/RenameParametersTests/SavedParamResolution.prefab create mode 100644 UnitTests~/RenameParametersTests/SavedParamResolution.prefab.meta create mode 100644 UnitTests~/RenameParametersTests/SavedParamResolutionParams.asset create mode 100644 UnitTests~/RenameParametersTests/SavedParamResolutionParams.asset.meta create mode 100644 docs~/docs/reference/parameters.png create mode 100644 docs~/docs/unity-2019/index.md create mode 100644 docs~/docs/unity-2019/old-parameters.md rename docs~/docs/{reference => unity-2019}/parameters-devmode.png (100%) rename docs~/docs/{reference => unity-2019}/parameters-enduser.png (100%) create mode 100644 docs~/i18n/ja/docusaurus-plugin-content-docs/current/reference/parameters.png create mode 100644 docs~/i18n/ja/docusaurus-plugin-content-docs/current/unity-2019/index.md create mode 100644 docs~/i18n/ja/docusaurus-plugin-content-docs/current/unity-2019/old-parameters.md rename docs~/i18n/ja/docusaurus-plugin-content-docs/current/{reference => unity-2019}/parameters-devmode.png (100%) rename docs~/i18n/ja/docusaurus-plugin-content-docs/current/{reference => unity-2019}/parameters-enduser.png (100%) diff --git a/Editor/Inspector/Parameters/ParameterConfigDrawer.uxml b/Editor/Inspector/Parameters/ParameterConfigDrawer.uxml index c0217356..993eaf16 100644 --- a/Editor/Inspector/Parameters/ParameterConfigDrawer.uxml +++ b/Editor/Inspector/Parameters/ParameterConfigDrawer.uxml @@ -27,14 +27,12 @@ - - - - - - - - + " + + + + + diff --git a/Editor/RenameParametersHook.cs b/Editor/RenameParametersHook.cs index 7a212d9b..592bff98 100644 --- a/Editor/RenameParametersHook.cs +++ b/Editor/RenameParametersHook.cs @@ -84,6 +84,8 @@ namespace nadena.dev.modular_avatar.core.editor ResolvedParameter.defaultValue = info.ResolvedParameter.defaultValue; ResolvedParameter.hasExplicitDefaultValue = info.ResolvedParameter.hasExplicitDefaultValue; } + + ResolvedParameter.saved = info.ResolvedParameter.saved; } void MergeCommon(ParameterInfo info) @@ -108,6 +110,8 @@ namespace nadena.dev.modular_avatar.core.editor ConflictingValues = ConflictingValues.Union(info.ConflictingValues); ConflictingSyncTypes = ConflictingSyncTypes.Union(info.ConflictingSyncTypes); + ResolvedParameter.saved = ResolvedParameter.saved || info.ResolvedParameter.saved; + encounterOrder = Math.Min(encounterOrder, info.encounterOrder); } } @@ -208,6 +212,7 @@ namespace nadena.dev.modular_avatar.core.editor } expParams.parameters = parameters.ToArray(); + if (expParams.CalcTotalCost() > VRCExpressionParameters.MAX_PARAMETER_COST) { BuildReport.LogFatal("error.rename_params.too_many_synced_params", new[] @@ -253,8 +258,8 @@ namespace nadena.dev.modular_avatar.core.editor newParameter.name = parameter.name; newParameter.valueType = parameter.valueType; newParameter.networkSynced = parameter.networkSynced; - newParameter.saved = parameter.saved; - + newParameter.saved = parameter.saved || info.ResolvedParameter.saved; + return newParameter; } diff --git a/UnitTests~/RenameParametersTests/ParameterConflictTestParams.asset b/UnitTests~/RenameParametersTests/ParameterConflictTestParams.asset index f73dd4b9..6ccf96ac 100644 --- a/UnitTests~/RenameParametersTests/ParameterConflictTestParams.asset +++ b/UnitTests~/RenameParametersTests/ParameterConflictTestParams.asset @@ -14,6 +14,26 @@ MonoBehaviour: m_EditorClassIdentifier: parameters: - name: a + valueType: 1 + saved: 0 + defaultValue: 0.5 + networkSynced: 1 + - name: b + valueType: 1 + saved: 0 + defaultValue: 0.5 + networkSynced: 0 + - name: c + valueType: 1 + saved: 0 + defaultValue: 0.5 + networkSynced: 1 + - name: d + valueType: 1 + saved: 0 + defaultValue: 0.5 + networkSynced: 1 + - name: e valueType: 1 saved: 0 defaultValue: 0.5 diff --git a/UnitTests~/RenameParametersTests/ParameterConflicts.prefab b/UnitTests~/RenameParametersTests/ParameterConflicts.prefab index f485cb10..a07fe285 100644 --- a/UnitTests~/RenameParametersTests/ParameterConflicts.prefab +++ b/UnitTests~/RenameParametersTests/ParameterConflicts.prefab @@ -44,7 +44,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -99,7 +98,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -154,7 +152,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -209,7 +206,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -266,7 +262,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -648,7 +643,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -703,7 +697,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -758,7 +751,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -813,7 +805,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -868,7 +859,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -923,7 +913,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -978,7 +967,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -1036,7 +1024,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -1094,7 +1081,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -1150,7 +1136,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: @@ -1208,7 +1193,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} m_Name: m_EditorClassIdentifier: - migrationCompleted: 0 parameters: - nameOrPrefix: a remapTo: diff --git a/UnitTests~/RenameParametersTests/RenameParametersTests.cs b/UnitTests~/RenameParametersTests/RenameParametersTests.cs index ce016f64..0441d79c 100644 --- a/UnitTests~/RenameParametersTests/RenameParametersTests.cs +++ b/UnitTests~/RenameParametersTests/RenameParametersTests.cs @@ -129,7 +129,7 @@ namespace modular_avatar_tests.RenameParametersTests public void AnimatorOnlyParametersTests() { var prefab = CreatePrefab("AnimatorOnlyParameterValues/AOPV.prefab"); - + AvatarProcessor.ProcessAvatar(prefab); var fx = prefab.GetComponent().baseAnimationLayers @@ -138,25 +138,43 @@ namespace modular_avatar_tests.RenameParametersTests Assert.NotNull(fx); AssertParamStates(fx); - + var action = prefab.GetComponent().baseAnimationLayers .First(l => l.type == VRCAvatarDescriptor.AnimLayerType.FX) .animatorController as AnimatorController; Assert.NotNull(action); - + AssertParamStates(action); - + void AssertParamStates(AnimatorController controller) { var parameters = controller.parameters.Select( - p => new KeyValuePair(p.name, p) - ).ToImmutableDictionary(); - + p => new KeyValuePair(p.name, p) + ).ToImmutableDictionary(); + Assert.LessOrEqual(Mathf.Abs(parameters["float"].defaultFloat - 0.5f), 0.005f); Assert.AreEqual(23, parameters["int"].defaultInt); Assert.AreEqual(true, parameters["bool"].defaultBool); } } + + public void SavedParameterResolution() + { + var prefab = CreatePrefab("SavedParamResolution.prefab"); + + AvatarProcessor.ProcessAvatar(prefab); + + var expParams = prefab.GetComponent().expressionParameters.parameters + .Select(p => new KeyValuePair(p.name, p)) + .ToImmutableDictionary(); + + Assert.IsTrue(expParams["a"].saved); + Assert.IsTrue(expParams["b"].saved); + Assert.IsFalse(expParams["c"].saved); + Assert.IsTrue(expParams["d"].saved); + Assert.IsFalse(expParams["e"].saved); + Assert.IsTrue(expParams["f"].saved); + } } } diff --git a/UnitTests~/RenameParametersTests/SavedParamResolution.prefab b/UnitTests~/RenameParametersTests/SavedParamResolution.prefab new file mode 100644 index 00000000..b4084b39 --- /dev/null +++ b/UnitTests~/RenameParametersTests/SavedParamResolution.prefab @@ -0,0 +1,581 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1530946484152775677 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9018531205874519413} + - component: {fileID: 1450892749070254822} + m_Layer: 0 + m_Name: P + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9018531205874519413 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1530946484152775677} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1004026017946301937} + m_Father: {fileID: 4330319568773249460} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1450892749070254822 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1530946484152775677} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} + m_Name: + m_EditorClassIdentifier: + parameters: + - nameOrPrefix: a + remapTo: + internalParameter: 0 + isPrefix: 0 + syncType: 2 + localOnly: 0 + defaultValue: 0.1 + saved: 1 + hasExplicitDefaultValue: 1 + - nameOrPrefix: b + remapTo: + internalParameter: 0 + isPrefix: 0 + syncType: 2 + localOnly: 0 + defaultValue: 0.1 + saved: 0 + hasExplicitDefaultValue: 1 + - nameOrPrefix: c + remapTo: + internalParameter: 0 + isPrefix: 0 + syncType: 2 + localOnly: 0 + defaultValue: 0.1 + saved: 0 + hasExplicitDefaultValue: 1 +--- !u!1 &1723107023395060245 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4330319568773249460} + - component: {fileID: 3940830586206015896} + m_Layer: 0 + m_Name: ParentWins + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4330319568773249460 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723107023395060245} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9018531205874519413} + - {fileID: 2975848956331614837} + m_Father: {fileID: 4626702805245235648} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3940830586206015896 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723107023395060245} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} + m_Name: + m_EditorClassIdentifier: + parameters: + - nameOrPrefix: a + remapTo: + internalParameter: 0 + isPrefix: 0 + syncType: 2 + localOnly: 0 + defaultValue: 0 + saved: 0 + hasExplicitDefaultValue: 0 +--- !u!1 &2017725079828776469 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1004026017946301937} + - component: {fileID: 2296002262718039012} + m_Layer: 0 + m_Name: P (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1004026017946301937 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2017725079828776469} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9018531205874519413} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2296002262718039012 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2017725079828776469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} + m_Name: + m_EditorClassIdentifier: + parameters: + - nameOrPrefix: a + remapTo: + internalParameter: 0 + isPrefix: 0 + syncType: 2 + localOnly: 0 + defaultValue: 1 + saved: 0 + hasExplicitDefaultValue: 1 +--- !u!1 &6770422488765167315 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2975848956331614837} + - component: {fileID: 2064238697324958721} + m_Layer: 0 + m_Name: P (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2975848956331614837 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6770422488765167315} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4330319568773249460} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2064238697324958721 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6770422488765167315} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71a96d4ea0c344f39e277d82035bf9bd, type: 3} + m_Name: + m_EditorClassIdentifier: + parameters: + - nameOrPrefix: a + remapTo: + internalParameter: 0 + isPrefix: 0 + syncType: 2 + localOnly: 0 + defaultValue: 0 + saved: 0 + hasExplicitDefaultValue: 0 + - nameOrPrefix: b + remapTo: + internalParameter: 0 + isPrefix: 0 + syncType: 2 + localOnly: 0 + defaultValue: 0 + saved: 1 + hasExplicitDefaultValue: 0 + - nameOrPrefix: c + remapTo: + internalParameter: 0 + isPrefix: 0 + syncType: 2 + localOnly: 0 + defaultValue: 0 + saved: 0 + hasExplicitDefaultValue: 0 +--- !u!1 &7084253093336051501 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4626702805245235648} + - component: {fileID: 4852552130019921331} + - component: {fileID: 2446920962079874121} + - component: {fileID: 7800490051996613361} + m_Layer: 0 + m_Name: SavedParamResolution + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4626702805245235648 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7084253093336051501} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.19918329, y: 0.8600853, z: -0.6144587} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4330319568773249460} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4852552130019921331 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7084253093336051501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 542108242, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: + ViewPosition: {x: 0, y: 1.6, z: 0.2} + Animations: 0 + ScaleIPD: 1 + lipSync: 0 + lipSyncJawBone: {fileID: 0} + lipSyncJawClosed: {x: 0, y: 0, z: 0, w: 1} + lipSyncJawOpen: {x: 0, y: 0, z: 0, w: 1} + VisemeSkinnedMesh: {fileID: 0} + MouthOpenBlendShapeName: Facial_Blends.Jaw_Down + VisemeBlendShapes: [] + unityVersion: + portraitCameraPositionOffset: {x: 0, y: 0, z: 0} + portraitCameraRotationOffset: {x: 0, y: 1, z: 0, w: -0.00000004371139} + networkIDs: [] + customExpressions: 1 + expressionsMenu: {fileID: 11400000, guid: a595189001d956b429e278804db4f4b0, type: 2} + expressionParameters: {fileID: 11400000, guid: 9de5c7db05ac4b54f9954df994380e66, + type: 2} + enableEyeLook: 0 + customEyeLookSettings: + eyeMovement: + confidence: 0.5 + excitement: 0.5 + leftEye: {fileID: 0} + rightEye: {fileID: 0} + eyesLookingStraight: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyesLookingUp: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyesLookingDown: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyesLookingLeft: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyesLookingRight: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyelidType: 0 + upperLeftEyelid: {fileID: 0} + upperRightEyelid: {fileID: 0} + lowerLeftEyelid: {fileID: 0} + lowerRightEyelid: {fileID: 0} + eyelidsDefault: + upper: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + lower: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyelidsClosed: + upper: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + lower: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyelidsLookingUp: + upper: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + lower: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyelidsLookingDown: + upper: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + lower: + linked: 1 + left: {x: 0, y: 0, z: 0, w: 0} + right: {x: 0, y: 0, z: 0, w: 0} + eyelidsSkinnedMesh: {fileID: 0} + eyelidsBlendshapes: + customizeAnimationLayers: 0 + baseAnimationLayers: + - isEnabled: 0 + type: 0 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + - isEnabled: 0 + type: 4 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + - isEnabled: 0 + type: 5 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + specialAnimationLayers: + - isEnabled: 0 + type: 6 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + - isEnabled: 0 + type: 7 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + - isEnabled: 0 + type: 8 + animatorController: {fileID: 0} + mask: {fileID: 0} + isDefault: 1 + AnimationPreset: {fileID: 0} + animationHashSet: [] + autoFootsteps: 1 + autoLocomotion: 1 + collider_head: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_torso: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_footR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_footL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_handR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_handL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerIndexL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerMiddleL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerRingL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerLittleL: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerIndexR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerMiddleR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerRingR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + collider_fingerLittleR: + isMirrored: 1 + state: 0 + transform: {fileID: 0} + radius: 0 + height: 0 + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} +--- !u!114 &2446920962079874121 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7084253093336051501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1427037861, guid: 4ecd63eff847044b68db9453ce219299, type: 3} + m_Name: + m_EditorClassIdentifier: + launchedFromSDKPipeline: 0 + completedSDKPipeline: 0 + blueprintId: + contentType: 0 + assetBundleUnityVersion: + fallbackStatus: 0 +--- !u!95 &7800490051996613361 +Animator: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7084253093336051501} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 0} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 diff --git a/UnitTests~/RenameParametersTests/SavedParamResolution.prefab.meta b/UnitTests~/RenameParametersTests/SavedParamResolution.prefab.meta new file mode 100644 index 00000000..0c6d5527 --- /dev/null +++ b/UnitTests~/RenameParametersTests/SavedParamResolution.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7fb50d2a5bf2fb84ea1b11300f6e3b5d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnitTests~/RenameParametersTests/SavedParamResolutionParams.asset b/UnitTests~/RenameParametersTests/SavedParamResolutionParams.asset new file mode 100644 index 00000000..283de89c --- /dev/null +++ b/UnitTests~/RenameParametersTests/SavedParamResolutionParams.asset @@ -0,0 +1,45 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1506855854, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: SavedParamResolutionParams + m_EditorClassIdentifier: + parameters: + - name: a + valueType: 1 + saved: 1 + defaultValue: 0.5 + networkSynced: 0 + - name: b + valueType: 1 + saved: 0 + defaultValue: 0.5 + networkSynced: 0 + - name: c + valueType: 1 + saved: 0 + defaultValue: 0.5 + networkSynced: 0 + - name: d + valueType: 1 + saved: 1 + defaultValue: 0.5 + networkSynced: 0 + - name: e + valueType: 1 + saved: 0 + defaultValue: 0.5 + networkSynced: 0 + - name: f + valueType: 1 + saved: 1 + defaultValue: 0.5 + networkSynced: 0 diff --git a/UnitTests~/RenameParametersTests/SavedParamResolutionParams.asset.meta b/UnitTests~/RenameParametersTests/SavedParamResolutionParams.asset.meta new file mode 100644 index 00000000..0a42875f --- /dev/null +++ b/UnitTests~/RenameParametersTests/SavedParamResolutionParams.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9de5c7db05ac4b54f9954df994380e66 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/docs~/docs/reference/parameters.md b/docs~/docs/reference/parameters.md index 07df8cea..c039c184 100644 --- a/docs~/docs/reference/parameters.md +++ b/docs~/docs/reference/parameters.md @@ -1,43 +1,83 @@ # Parameters -The Modular Avatar Parameters component allows you to define the animator parameters your prefab uses either internally, or to communicate with other components. -It allows the end-user to easily rename parameters to avoid conflicts, or to wire up multiple prefabs without having to alter animators directly. -It also allows for automatic configuration of synced parameters. +The Modular Avatar Parameters component allows you to define the animator parameters your gimmick uses either internally, +or to communicate with other components. It renames parameters to avoid conflicts, and defines synced and unsynced +animator parameters and their defaults -The Parameters component has two display modes: One for end-users of prefabs, and one for prefab developers. -End-users can rename fields, and configure their AV3 parameters settings (saved state and default value). -Developers can adjust the sync type and set parameters to be internal/hidden from end-users. +![Parameters UI](parameters.png) -![End-user display](parameters-enduser.png) ![Developer display](parameters-devmode.png) ## When should I use it? -The Parameters component should be used when you're building a prefab which makes use of animator parameters other than VRChat builtins. +The Parameters component should be used when you're building a gimmick which makes use of animator parameters other +than VRChat builtins. ## How do I use it? -### End-users +### Setting defaults -The parameters component on prefabs can be used to rename parameters to avoid conflicts, and to adjust whether synced parameters are saved across avatar reloads (and their default value). -By renaming multiple prefab parameters to be the same, you can make them all share the same state and animate at the same time. -Alternately, by changing conflicting names to be different, you can resolve prefab conflicts. -Finally, you can mark parameters as being unsynced to save on bandwidth, if desired. +The parameters UI shows each parameter initially in a collapsed view. This view makes it easy to set the default values +for each parameter, and whether they are saved when you change avatars, or change worlds. Setting a non-blank default +value will override the value in the main Expressions Parameters asset, if any. -### Prefab developers +You can set a blank value here as well; this can be useful if multiple MA Parameters components define the same +parameter, where the "default value" field will ignore any MA Parameters component which does not set a default. +Setting default values for the same parameter in multiple Parameters components will result in a warning, as it's +unclear which should be used. -Add the parameters component to the root of your prefab, and click "Show Prefab Developer Options". You'll see a list of all parameters used in your prefab. +For the "Saved" option, generally speaking the parameter will be saved if any MA Parameters component sets it to be +saved. However, there is an exception; see the section on "Nesting" for more information. Note also that the "Saved" +setting will be enabled if either MA Parameters or the original Expression Parameters asset enables saving for the +parameter. -Each parameter can be configured with the following options: +### Renaming parameters -* Internal - Hides the parameter, and automatically renames the parameter with a unique name. -* PhysBones Prefix - Indicates this is a parameter passed to a PhysBone "parameter" field (and thus it really references a number of sub-parameters) -* Param type - Indicates what type a parameter is, or if it's only present on the animator (and not the Expressions Parameters asset) +By setting the "Change name to" field you can _rename_ a parameter. That is, if you have a parameter "foo", which has +a "Change name to" setting of "bar", then on the object with the MA Parameters component and its children you can +refer to this parameter as "foo" (eg in [MA Menu Item](menu-item.md), [MA Merge Animator](merge-animator.md), or in +VRChat Contact Receivers); however, outside of this object, the parameter will be referred to as "bar". -Parameters components can be nested. This lets you build up a complex prefab out of sub-prefabs, some which may be added multiple times, and while avoiding parameter name conflicts. +By renaming parameters on multiple components to use the same name, you can wire up one gimmick to trigger another. +You can also select "Auto Rename" to have Modular Avatar automatically select an unused name; this will help avoid +accidental name collisions between different gimmicks. -Parameter renaming will be applied to the following components underneath (or on the same GameObject as) the Parameters component: -* [Modular Avatar Merge Animator](merge-animator.md) -* [Modular Avatar Menu Installer](menu-installer.md) -* VRC Physics Bone -* VRC Contact Receiver -* Animator (although this is unlikely to be very useful) +### Creating new parameters + +You can define a new parameter in two different ways. First, you can click the "+" button at the bottom of the list of +parameters; then click the chevron next to the parameter to set its name. + +Second, you can expand the "Unregistered Parameters" section; this section lists parameters which have been +detected in components inside this GameObject and its children. You can click the "Add" button to add the parameter, +or the magnifying glass to see where the parameter was detected. + +Either way, after creating the parameter, click the chevron next to the new parameter to expand the detailed view. +There, you can set the parameter type (which controls whether the parameter is synced), and other attributes of the +parameter. + +### PhysBones and Contacts + +MA Parameters can rename parameters used by VRChat PhysBone components and Contact Receivers. For PhysBones, enter the +prefix (the value in the "Parameter" field of the VRC Phys Bone component) as the parameter name, and click the +"Is PhysBone Prefix" option. This will be automatically set if you add it via the "Unregistered Parameters" section. + +### Expression Parameters + +Set the "Parameter type" field to register the parameter in the VRC Expressions Parameters list. This will sync the +parameter over the network, and allow for it to be used in the expressions menu and in OSC. If you don't need the +parameter to be synced, click "Local Only". + +### Nesting + +MA Parameters components can be nested. This lets you build up a complex system out of multiple subcomponents. Each +MA Parameters component can apply renamings to all of its children. This means that if you have an inner MA Parameters +which renames "foo" to "bar", and an outer MA Parameters which sets "bar" to "auto rename", you can still access "bar" +in the objects in-between. + +There are a few notable subtleties when nesting components: + +* The "Saved" parameter will take the outermost "Saved" setting. However, when multiple MA Parameters components which + are not nested set "Saved" to different values, the parameter will be saved if any of the components set it to be + saved. +* The "Default Value" field will take the outermost setting; however, if outer components have a blank default value, + the innermost non-blank default value will be used. If multiple components which are not nested set a non-blank + default value, a warning will be shown, as it's unclear which should be used. \ No newline at end of file diff --git a/docs~/docs/reference/parameters.png b/docs~/docs/reference/parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..bef9b2af3fa383c646d3c456ed475bbf3c4a8133 GIT binary patch literal 56946 zcmZ^~byQT}8#OK=-H0?uNr%!o(nxoAcS^$`T>>H!(%l_{NC_w)NH-%44N^nb5bwp$ z_xH!|UF$t-v6#7B=H9vIoafoke)f)4SCz-bqQH9cnBf^ z(cj8QYWtb)FQNNUZMIz;%jCX*lBVk7ThA*`A}I={ zHy8xF1()i`1y)v+q<;bh4?Bl+8>-zNl59Vp7dC#fv0Au^4ZSa4u-uQ z1O{mHvzD^VzY(X)bY=Fxm#ZXY5fKsQn*Y7E^mliht2Nt2u#s^z0mxGYQII_;<4Btx#o;gE#y*`OO(_HwkmA<2O#)cb#=j zH8c6u%fUS+WVyJV`ya2n@9WmRos-ox!ScwOR@ZK!3= zbgz{m`SWLM!KHU8u&=a9MbESGm`bl6_zI&Bps@M%>sJrOKv^cg(~ZjG?H6~*eITO51aGh3=cndiIcQ1;Y` z`pd-u6mg(XTvB2X|D5yoIsBD-Y)^$wmF{e3;H9M-2e+z^x`*P(A6IXI-%Y>2af-9Z zLMH>tAI#vx+|`a-y4@ih#l^+?(RkF=@<}waElzXhuAxXMX!-+*)WQDm+}B2^C4#<= zZ9l9m~RXwgCDN9^IDTY_wz4R zv+a|_PGZK2GSt(Crjo#C4DIWQqIm7HR+-*IR@#Xf=v&tGhl4K8Mb;Hko3j(TMXqPO~U?XlK~|&RD(l_(`JYr_d`3?^v%R z4oAa1`S|nOEy!l*+3?WNiOoc>OUT)T{Kc%1+x1QH{QVsQy74RJ?v-<%_s#j99WJFn zvr3l0LQgn)jnBcN&#ZynwMazM?o1V;adH;c>XwH~BQ_tt0&#%`-Axq92Y!RqTZC_J zY+Q8_Zbjjcuk8uAEKUo!E$mfHED56dvmekvMPe)H_NcGV)x7=c zCpUO??=z`^-B_-8T2>b2Z&rg?lCu4MXJ~_!Jdd}~R#S(NfkVP=$PHIya0Wy!Ayb}M zoJ~C;O$}pG*Cze3UT3NVCdT(pvNIVT?Qju@IM9LoMEPYcD+1Yx(@*s zASXZn4EQ7^&+ogrXz@vwTh~H*Sy>r^yVrZp#4bm~`^2o-Z}wqJu=_7vthc?b-`)9~ zQOZjdF|h_5u?tbyb>f2*aZGvj-B}sv+|1Oq`Cy}8z@WAGJbqCPnH2F0(Q7pZdI)Mi z8DhU{lLa=x#*evbgQgWz$rN!z(@w-;y8tks=7+$yotrFCa{2X%sYm99K4==Go^oV?a>VfJ3!-}5Rmlmr?Au$eH>5OFoCJ)_11!3blAv%(8 z7ALCHAG%vM&6Qvs^O~0~r+@2Ekd98rK$oTVe4JL}(LB{M*dgL&@B4Nma`gJwI0NH=7@@G)>bmr8 z#T4m=&*a^NY>#&6y!V<8A&QjDy5D_L$ZgSMg#9WvQv}07KUxVXRZ2-Wo_Q!+i})aYBSv8yzoxyV#mi9t^ry1r_95anERJ~O97C<0_uKr% zRxszPdhQJ31Qh<7hw6GR)DgEJq5uO^rQr@j_AK;XDkAjZ4)(y=5q!Ow&UE2bnE4Z8 zi7ubtMhT}qc+Jbp8>}An>9hCU8i#)U_wd#4p(uADrrg09SG4==I<55%W)6D;^x7v~ zN2Vj0{KHwilY)vpZyz_)#v7;NOIQdfgN@84$tY(1?>yHlrqyDxn%u%y)WKFcC;0?K z0uR{n^d+(ELZMr>d=v4$U%Tqpo-IAATh4S?zH~5|YtXg3+wXOJ_NfUgGd+@YR6I?g zD*~lbt)bUlhAgI^?=C}Cc=NNlYS51Fj~B!^&F+YUR#MR`x$^2g(r7wT+K^ihc>CGI zJ?!DMG$i7c6vIxEjMfj@+ZA-0Sw$nzY@uwt^FpJ|GGFr9*c(b{pm@U-yn>gN!oZpS0UE(m(_g{h?jo2v7v8Z z53*yfKf2DejB*mIBH9yu)#=S(jq=xo-!BfADD`aq-B9uCnD#YoU16OmPX5!QF7-2y z%68YZhcTAGiHzvFqO~*c7y6%>P*Z`4BCw64tjo2HY?v!$bGR$4r`coYdrX~!u^Z(& z*^k*?Mn?6Se9ao;;~Jy)EL3+VddvibtdW85q&kaa8$eL6F8W*|we8%Tw1>b-5|bcxbeO$gAn8+kWeV>(cIVCa^x^)T$yvg6e5*vg}% zh)F{bBQ{Eu!U1Z_q^{N-_GCzEDV`p54nB{M`5Y}F4#fFHtLxvs(sDD9lVeL>Kf#=K2!6?__v_X9RF&h}6vyn0-5ZU}d@u^WP-xj|az zQy4$+5ICMaKF@z2*whVXukz#>sD$e~L7_Me(!XY$_2QS)7V2|m48&(V9j9BCR05w> z=Vdqxw`48!yIQ%Nuk1Oyt*a&v)Fh(TibE>4Wg%^Q!fAS)iC@^%=;>_=)l?q8I$6)( zH;foMOHDs7`0ZWVv(B3{v(oexxA35gtM95lrLU)!<&>Q@RU4`}>z$fH3Wg29-OEF7 zb=`i-C=Cv`u(cVaHQJ@v2-sT*SMYP>l?Kt%6AAwJR5Ju;sxnV5=zQuLbR$zw{^80T3nzq`D`kM`GfV?YPOIfCU9aKB!4pYH144heLU-7)=8LV4 z=W7Nd9eW}|)~X-P&CO7!xms#vAPx^6M}*QfI@!$UzFgvHvOt8D2A&%(_DpA{eRDIC z%pY2Es|ak>H&w)~@{D;IY!;ALj@!xI5S$>AAq$yspFlhvxdNV=;oi1^ha9cpb6k%+Fie8oweR#PYW`a-)Nv{G?rmBt^9WZW+I{# zPEbkarks?f>x?0!bLIu~&w(*?s@RF~$xKp2t~D)V;qGBV@{^Xi%8gCKwVuHdY3m-+IcJVU4d4Y1Nr$xfpC|QyIIrJ z!e1tqhu|vDo&3!b?bZVq)dUVFs|AOI{WqOj)rO4rC5H>nfec6=Y(v_!E}MgKq4E&7 zWS7H}p;Q1xD+57#gGFJ*vN)DCEiYpOz1!#a%_kYW0^ngH&+W!iIp;Y$PM2Fyi~2M_ z)+qvhN9NEruQHeA4q^R(AjSN*rY(la`Fwu_d_|`4m|hx%m*fSgD=xLp_z3RV=$xDe zM|5Nwr5P@6G3f>_We?sli7m=6K#4J>-Yy`jcWZHz&AsDX{)#Q)>AZ!M@|ra^tHkfW z$=UMB*VS@*y_Y&DLdhw3614C)!P%_{PvV0=ShG?`w4Q-z9Ix_*kzNxASis3xA2TxS zulfA3sH!!_1X^e_O~dx2fq_CuMiVQ0*5^!cye;``^-|6EZq$!g|}}T zfa>gekMpqq^eCu0ettXt=lyZckke-WX>_Z5w?=&es#3XOU*m2|GcL9KLf0T%ainIL z0m-2e|KiP5M@|ize@n&0ZEMX<*GSr%l#aoK_?6Oq*xw#D?v_%U5zO2GBIJYJq4ANOfj-{jp0aRW0L}p4~r*srZB07{7Pl`Z53SS{mrmMOTUst z{g3M4Gy+U@ChDN{rxsy^QzwHArNM0^jOrK9m$mfC%x^0dJlsf9a7KSa*==31vzMMrk0E3C9im5&ds?d;H* zcY9`(Feg+#sVTP*gb`4b4Cv+7xj-QTo*N1 zD{++yTLgt%m`~L`r1L<1SSc}L^Gfx;PnhG%0L4i<`5*7yC_P zi;FEz;%`z(EcOFoh+OZ3#Tn@Zpz=HbYSnXsr@2jUQ(j8c>D8Iuchq&9#ED=2@q+lm zP0i4?-`9R!!xG)j_UiCF-Ap$NV6p6$il_r{ZF&hBv+3m+_<|Q!=6Cc>uUg+C1ehQf z0Ce^IK}IbFxQGRtbQ9aMJn%QYGQY#Zqs4g`Y}uo%#`Ltr2Ja!!WwCnzPgkXNKNGhj zkBF}F<;ZbYwgc+|;ug8}S_32+#Q>YM%cdR@C%_!sa}I_pRsY;pGi*`NUtY9`aM|%l zMz5G9rm5eB>dAv2x^BFDlVQZj^F14t%N=e%V~m0}x)Me83>Miz*t$f7$sf7iv(sxL zdD5eA`d2tWUV6T1w;dN`K(8acS_r{2bgId6c`N({(qtiOBuP?fs#HZJtS_#KnS20u zoSx7<>zanh-m3vQ_YC)xfsPaESv8YLrEcbIhS#w;>nqe(2PaNI3C#RVD22fQ6#BP{ zQ?D~eG!}%n6+P^uX1js|+jk1%_o1+R$WqYhNTgtCh3y1KqD#N76^3d= z!eg;6QCwCQ_z^2>AadSLiVV>&0_>q33(sTQtob(${I(rehcKy_$=qKWF_8DQAOjnr4G`r)HgRyk^Zet(BI# z`-tdQSw#3EPZ*G#I~v|7Cw==@E36atd-Uft!;yV*1HOz^oWjd$0QCEH*o!%}|? za)K~^qu!!8*ZET3-vzk6mT%(km4bBzyZrg; zLG!V&O7jKF+0I0tYx{u!zP_GWaEpoej83FrW*_0CWmau!#5PNfjG|!~qjtM# z-~qqeF2IGLg&Z(hg!HZuCk)NyONL{aF$7nXe>%R`_=4r8l+M+}q?9)Qr_Jl2VSu(( zJlXp~;J^lPd2sYm8deIdg${0_yR=H{1I|V%47u^DPM@?Anc1S(Gw){EB|3yaZgN8m zw>&X2^w5|h2OCpOo$f;|Q$_x&Z+78251zL50K_b01z?Hx`-qP4Wx5A-PjC1Kvyi{c zX%PR05^L9ZZp%yLN-qWAmQFW`tzx~(sh+51gOXzCzbFGttiL2I`j6y1MPt2W$d^QxSK{Jx3Si!a~$KqJ10uJvSOe%XJU8Xu&s zh5^C{-PRv0whZ?XlMq*ma~d`ujgz=s9j#u3)82lsQjDl>L@i!B%AUB(lA0JfNJI@z zkhtC;cBAoIPY_%T1c+e{R!TN+?M(YHg|GC^lhwziS+0!$u~B>E1F$yNr?*!FAc%t& zsP!(*(uvZy;j@Ci;zBq3ykRzdD4X}3NFCQ?dZHtt^e4EzI15pR7KgA`AY)7ohA!7q zPbGh_-$}=Yb`>NzVP+okS|6xWCLTc*+Y^%9YD4lgvy!+HH)H#R?as|`-sZa<)2asV zHo+MsSpD}*m5^CP-hKk=m-Ei9)o>9WD(^p)j5m=Qb7$R?7XpXYu?vWxEF2XRCc)uJ z`mrU)UKst@UA@ik;3;X!;M@y-M_T9nC#e)t1W0i_jSf>U@$vU&YfkUQ5SQ>)fL;3I zwrY;ar^jF)sY8RTJyojW@;l?z@<8-8&h&Qy+mTEizoIbN$g=VmXWpy)p=?A*p5Nai zNl+I$Hk};BIM+Qt;a&4( zX{3XxIuOx=nhedrtE9aqP&k&6@NGM!XyyqF?=Fq(#fJLK*xwzQ$} z-fHKBDC;sdCi};~$Mwc_;{|`2oH%?+CUqb>Zn=G-4+p*U3{)VjvoteR-7}dK{5^)# zMJ?e^ls~N8Z?kN+z6Qwqo#ZA#FG6j3bCalo#!j{j(6yXyye71h;&WcgUljDG*({SC zz1jGl;fOj@NnjE4q$lCKv{%bc4{Zjiz#Piz`~08lZ){?}%fJ}7h(BPMhddx)2Z^GG zEFDW;W8xB0rUsR=&fJj3r);8P++(sBtZrmhQ0@5g+Q{GzzZ~ZjNoG^O)u)IhICz_` zzWB~obYClGzzx>b`GfAyX-d^%=~-!7b{p>rf)LX-IbX_tan?2Cz-gT8gq{JZQu}%t zz4E>h6Vff|CH;i7ac872K2!nCgwZgHg^7Ejo*5X9ouLgCWtOO|H6cNVk`T!VZFqRxk(7O-ANb-pli z6&&vFTh9<0$e2WZcap?SdFRzy{5=I(LS6GVOI7y9Zkj=B3A!1Vauz9OU)zimbZc-d zm2D%G0ym6bsh>ZmoPaP<>vgNq`ct_66u0S7X% z@fU1$*|3b1*K`dO4;{POP6x^%zh^J(<|WbMSvHkJd}?r@;|L;r`@fXiMturTs)#UU zi_1+$0vGyewgWd`u!>IQq-A-b2<%ebQrf-*LUnm~_-4ERW;(-@u(3PI>U>ONyH4O}H zJ{Kz}T_)k=Lk!{FJlb6hnMAflKc=vD|JPC?gc(sLDN(OwUe?QieJAG-4v75wH3~I8 z*m_8A9sPuJN}hPAkMvl)^Dl$$<{4?XGgu@FKn+~XO4B?2BsZmpn=JOrJ_YS5nAf!i z6?)&!xmEw1E~78-?-cBTPH$2ff%}u3wKm#3odg?h6$W35Q7fvph^w?4m;$v@ncLLt z=F{%h&A-0P^qxctAA&0Wj2g%REKm1_?UJ)}%Ao|kVUaBS8i_Nu)X_R~%WI*9!bmr# zRM!exsZhUQ^%m$_*}x!!p-y_ks!sN8$?me}`HEoEqj?q`EH3wUF3*+rI*&jgOBM0w z9cN#r7HZ0xm7NE3w}j6)8r7V8)%^OMez%g%hKxRqqmcs;ERL=Qwlf#bN1+@T(umiW z{<5(e=NQj%o{sMLMWkBvMfuNT%1;zI%D{5CyRO#iv2cRli@e)ek@hB*E8l2#nj7sS zg09FN(S46V`rzK{omrUmlt}k$185%|y4oJQC(?k+#Rjc5;0;OSsqehM*^{s|IrH)3 z)c)khF-D433Ut9}Av93tKMnASd9{o5?e*aN-F^WK-;P;K;+I!3{&Z60MY|2AR}!7a z{ggeEg*vgfrrNO91xIJo{UVqS^t$AdyU@+JWr@-mD8O|&PnuLl7m2S;SPEG!8O^tK z>NXj64($0^8o`uR4OTTX(B|<^46CsdlvVKM9Tm7H-hLu#$@CyxjuVxWVZ{C)? zl8{Yt?qU>8C{d3Z{-xN>ctsK<`~~brVq`;1C`|a@hHyNHp8saZDV9BbeS)1gP(PtV zkDiaCGFtA_#=jfTQrb}PV)kO$&3WNS9 z7!jDgSgY@cu%zROkukVe&GAvGrHG3TCpNgAU0~8Hj7M-e8_IvBbB`31!rJp>c-Md% zg`DJiA#ZOPg2B9xKQ;oHr@e@@=*E1x&ppH1`>Xrm4qk^N(sM~(zlO7~HXruJLp{B${<=S=Dy5+7ng5G&jhyvsKNk+fT=zW*2PayO(23VuMlm?- zZz>(w&C%89uVi4z-Saeqx{{d>sO)TS?xm9=?2rj&hJn2_pO(nr5|~xc;h`I{P&Vs6 z!l$&{{;MpR;F`S5`Y`5}i=*Xi(5JrJN2^Z6Rt}kzWC+DO3mPgi!twVzjnnJPyyS7( z>!o;9U$7}UKFu}wZegmG(RY%DjnFz5y_+G^j%DRNe7=IS;sCAy> zgk7nc91h(-8|-mryz(RNP>JVc4Xgu6d^Qp%N>uF}l~=6lbaiDE>U=J|GYZMhJa@JN z!sRyWow)HtU91Ef{~&i=FXris11%n z7v0fIL8xN6 z%s74xt-pUOX9;-}s(g9<6U8*<@*`XwEj>Tv8IsFHp={4&?5fQ6F`z+ zC+cdPqC^-*2ylHLeqCHz8dSoa6%&)eWNmG|F=Y$TfJ58|y-*j+mj1L?+vkHw2i*)_ zC!E}EnP#+hn+~wkd-j6LcERgV$37-nIXs_JXSF68i0w*Cno&&}KVt2v(=$v7OyQ@& zz9#_YO)wcdL82uyy!||OzluI>9B8LB!0V!Qc`B|S$xz^N1U*ls^-uXe9%V`@kN0)# zf^f=EIe4T_i5&(5gE3ktNGXs z1?bwr<@ycWs4tLBgxpbPm}un9*bhk~@ABKIM{fM6QMoe52tO5Ok|w z44Yf}$RV|3Lhxdk=Ojb&Ci|_quO6dc4fzRYog9DOP4kSAgz(9gGZb20R3m&2g>X{JkrSyA&e655oHj2I0oGK>qhv1c_#7F70yX z?VxCJh`~dGpQJp`1KHqW93wq)g@q2<;*X4>I_DC)RerZZOqU`n0-^~y0&`GhPdc-K zUj0Jwx$Jv{>U{zFRja@LuD{Dy)xsC~5a!F%5`}N2%6v~@q-S^&6`72(#4)Vs=Dc@f zc9@Ein*x4)uB&_j))FH{hfeIkW%AOc`DEE`n+4d!El!0hS#HNVhN2uv!li>wvtVb* zS39&i3rB%{V;}34Y0EwcyZN%IbY3 zgt}AL+Y(^!^V21y^Ld&c{}O(XgM<#xq-iOWoD?C$#-?uF`kn5@oSTi2NK#@%QBa+# z#;Y}tJ)n3DPCgg1f63R9d6ci0c_Hw34Mo*Ghed7%dty3%>pjjh4d3(WzO+y*+;A$M z^4>^N)1A=p9-8vm@m6L?EcEyT;g##Rzc2SDOXBebNAJ_S$0p{&yWA0bEdcizc;%hC z%l+`%vF?kj4&LUqY#MgvVN1eoN4sHa#31|);|D$A&wC>hcgMeUINO(5AqCLur`_zh zP$)3his#f-HP>f$!AC^Bh}lsF@r)T$QD}N3MxLBC zj@$V&d-fNKF`*f8CL*7}n~xjbx@xCj4}M5p z?5%V9O+LMU1%GhNwYZ81v@4)y-`tbmZSjjv`xh6NkW82TpfsQ(wl*S7{x&)J@-=;T zARl3g+p})ahsg{Ae_E#+2B8|vT$4w3QfPPmF>dUFPw5aWqOe7`qgPt53+6ERLSf zo-}nEQ4D8ZUSRd!2bB3eJV(nI%s`aZwc8GQLs|*v7!^NIvD7uoVZ)lfvA^`^?L2Tn zgD!&g>D~1qw?PeiGTJPh|!#F?4aBHQ(rGHB-2flPmE`dHv}CX|0^r`3F9fz$Bfyf6OYI4Oh!hh>7y0UpO* zTmL9+s?QHQf8>{<&uwMejodnC>dIsyF|@5P_zLP@KO0?d!|;k=rtty@&c& z37~hIU-E^y0Lf!ULyjCoqSIA*M5OF?eJW%(bv1LsFmLUt&*T8n6m|6mcH2K z{?)1GQGZX+!{V!*hM|N*sH!D?k3J`s2`H=3`Pq!LJLXN_&a0Ajl)spG=XSBbu$&${ zAb$xe{PqK4@O-)a;%M=^)AqI9X!c){7J!ABG&6dO;UpHKuR@Qb(NeS~^L{;3&A2)p z`hZU0vJtGKN!!=E?Pid)hL7J!=U7J#zFP%@@AM>O_ zH8y5Y&)yy55%)}2SJl)k%(K635%_%?hhJdhJ9U`MGu`jWuo{Uy?&+>ncK_I2-r}nu(KAao4-_vdZ{M0GC5X<1>7P69F2&mxKkIjdAp73?dC{JUHvC}5$6 zD*MBdux4>`lUoW<0_p8=CH!`BuB?tk<=d`nwp&Xp2SlXBX(2V;%rzKse*Qw{Djzml zlq6v|508qUK3RIh6uFBL`X0NJ2-SW_o|sok4ZhsjX(|1+u#S)}Qk^I&9cZyG$da0D z4A%#oI|g1X*aaiR@K-~5B=ZW$d2O#wn*qfa51A}_JWu&Pv~^74?o11xSq$G|I~-r) z=!JYqbeF1ytleU>!vzBNu)G}d5R9*U`*1u!ODfP{h3KG}Mckf_iSNJL8SgRE`YQHJ z0)$W=1cG`RY;16_9uB^2zXvyfIt18!xjT-+I`1x^7o(zZzoxFE{tlpXNkU2Rz$+w! zuQa;6-c5}2f(Q*>$b-C|`%+x&qoDCEc*BFqEIM{*Cj>1z!)tzppu;x;^w=O_dtC4@ z+~&|g_CO1Zk1op3wfV?oJ*)*_*#f^Bzz~{7ueV6S9$K}l+MDLJ(M2~(APAn@{ZOWw z|L^Er+ZX7r-g+UfWy=14L~aq6;2P#I^3`}JArI{BdGF1h_Fxl*zd(~hqKlQJDChDhilvcc#KDQ6MN7eu#zoqC zRIaTcWwuWgCzbkZ=afq%Pzg_lKShf8DA`TltMd-T0vYqX(INa%SoIdQ*`(cvM7KPy z57O!a-3m8|C@&)6N^84&iq@S4)C~$#p4@Eu^P|(3S}VJ7Ko{>vUR7PQIyAFmpsyvmC^6 zUIoz1EP!)fW-bC8zj*>_hgHqX`z1r=kp9X8eXF`rgsQQ; zX5Bn-=Y;KU7eM_JA5kne9E;khvNU>pB%|P&{6gyeP|~d$uXvPHS+@>A_Ru3fJF&iv zP0RdbNEU;E`{BuD4m@b!QJ8vlFaWx5h%VcakhTEjA9+|P=(qdS=o#v(+V4VJ>!PbA zf^V+sx5T3I-$ce#;?3z|g`-$R?&6I+sq4HjbegX(fa6QX)Smz=FYu@Ra)*Bx_^o9) zF5*{0Ft(d)jdaTgCy7@IKY@l*P^LGg7#~WmDtNQ6=Msra^+~(@DewvJODGwEvFvHzZZ=W6W zS{>Fw@kpU7=061HWSra`6V6=E_o6VKYJ2U}NuS3ONO?)1}tQ#7x)pMSu+RBY?=A<-m z`v=l0JcI6$zd#+Ft@`C8qXlR!(cXVq?HQg4eNfLWIlP*b-`%^qaO+?-J7{Ub;_9Hh z)-QXQZkzzMoCgm;6KBIaEt82B1jF<^&>w!6k&~+o_fn=7_(g>CMqsEsoPr+KXDGu6 z3t}CKg9GPX`NEzvAYN&j@ZA_|w5?_;J14yiJI;p_(6LwVs=xiVTUiyff_5W8I7(Je zUrj_{nfO>8Jn44v%RtSKA^`3APZ`#%JOEQX4 z6!GOAuR&OnkDP+#_vrp%2}pCzaOb*2-&;~6i#U0SzK`4fKl5*Lae-!KtRPG&Hi9A3 zLc?HwF2ClW&MPiy(s!s)jf1}tZ>Nvfe&t1#Nh>58>E?(BXg|Tb_QJW8Gx>f2691iW zS^|#pMfEQQ*W@avU-7igR*+B`N&y+ib?OjaQc==mRbAI^QUY~DB3RwHIjuBo^*!E7 zVC*>YMQb6Z`Pb~-=Q_1J_sVn^;oD5k#~>08DZ-xE_*X;-@Ykdu_xZg#4sy@WcjU3$-f&$ffd^bA zj7)3)hoa@+YH;|CsmVOx7r0!f!{Nz5PJQlbJQuqnna6~TM#565r0tD?Lw86_hGDI3 zk3ntW9aaC+huk9Z{d1#{7cuHcg_Y7r7_GWWobf)VjqA2oJZQsy;L_{7d|(^8I)`7c@W1-@0>y-2nnKWZe*||S zq?ZV4i{ZJP;u(LNcywCX5EwqQtj|MXr8*J-PKN$QJ8Ir$UTESZxMy`K=GU7>YXE5?Z3^Lx%WyQUc<;f2aW<8_r=b*6$i ze#bw9+=jzXF!F*0MlSqn-W6IGq+^3n(n=6UsFBq+mGL_zeNw7PYSyD7TL4TiZ` zR3+(Z1!J|^(*(Maw!>$2SuR9e*IYJl;zRCF^Oi5;ujK)?R@J8z2ZyZZ1~s_YSW&rk zOTQZ(`5QV_zRh=i7)?tz=06c_r9a`#b8DF$i$^VHgLE#b1AQ?|=!8#Ell)nnCb--V~nf&CxhK<5PW(r46V}IE4edb*{gKa03_!U+p*1Tv>_ZiXDAU`@j()3FvRK7 z^~9D^PLT3F`=`pTaJJ7OxJXLy{?QXVE@R{=GV^?{S@J(swx7J0Ga6x`gRirn$Qt&F zrh_J+!Uab1P@;0*8(AFZXL~W>#3QHAGXFbY<_(0k5_^&m9ne%io<{tb+8&1jYoecf z%wzfS&F6qZ`JdA&`>SrPu>;Tyt+|Rfre(m{?U!vgYH=j_om}`k4+Jx8wkK33`JZ+? zwhz$sIRnO>w9L$1q~h0D+^D&^xra!Kaiu^c1BRyRa60$p_>UGa8!wu~;OHm>a4?~H zvDE=)Cx03XvSUA_QTf>_szRi9oKuhEzy)_WKVI{1pM%12p@%Jz6!=ID)$jb0=FakFip)zOkG z9*E{O#LUXd`jxo>P`24QI5_l7H%O1O!r`*AN*_9qS^=AwXa{XMA`b2B!CJScaz$FJK&emxk<{w>ikK#m)A~^$qu5$+ZB@jUVY@YCG$p`8J zR>rz%{|p%3#KnR*jlYg-YHB(Iq8W(eOr^O)C?Kt+5=1|i-v!#qG*OCEB}%0KEPTN6 zv&)FT0N(MZt*{D(q2Exv0#fGCDR1m{3on5JKq-b*AP?ARi7%P}N~bwMw71P&`5MBs znZ9QSLVPg^KA-8KdYoU@QPBM{K4QcTZ1w2zaC!8wn1tM&dr;47C6{XyMFCR0hsIc9 zW;CxP94OUmYXu%}&vw8{bO6+~4c+(Wbr*mLZ8nX|#1XLK;ilypvvsU}PEKC6>6mmy zTpVE2czoS)A9nTr%_zQ00+Tyi#;n7yVazJWskW`ZO4DVr`S`l}w2$_FTqx~erYfD5-F3dc2avmM zFxMHh`ofnXJ_m*{AK=0V0Al7A6R<*%n)(%}@eWZ)J~p5(ifHc!)z(h++4L>=_pGag zbZQJ|R7DT?0s)OtxbT+FSAM72XEf<%LB~I7YW0(PNUwx-0khEC|A1|M zlT;9^pF8AQ$qf9cxN~2{#Z+p!eNy{vmrWE9O5R1IfLB&LBAVE1zxIZF1aQkS;+9aO z)@B1&5n@ic68#Gwz~SyIZysdH02*hN_IZ*&;EuWrc@*jsCV%>g#_Y~Bay&C#p(TEV zLn-i^#%~1)u~U>J#^UiQ)2iBGs`NTQTUzL9OaD{&VOeg#&^;hXM*Q+k18jOw{4|FP z5}K@6ON};4S;Ahn7Vd`i=ApsIKS^iH)My{=l33Ejs*sf*A{}{lx&F4R9zvjW9=>DV z)!_Ea<-mg}HBbvsU;CfC0oKXo8!Q~s#9^-X-=^Sen~?oSH(m;}8YJB`;1>+=dv^bM zu!Cw-EIc39t=3;1SfH}1sxZy|sxbG>d(ZiFYosT;j$VI)CKZ(V$g+*`Ma-4aBaLOe z>T~VB^JxcccP@ZJFE_u(${sZQx_5fPF7KfG+2^>B%XZi`w^EsEPLRnF_Hi`mwuc6M zWdU@Fvs;fhgqf8yR$ROYb7~)*e8u}1VpL_JLntFhLh~h+JxKg_`2^7PY?NgLyc;G> zw&#hQo3f!P0VuROIkv2CVd$lw#%fROuBuq8-%<1%MW$?-GQfJn z_4nDWx{&BZXP|E$_^@qTOo-oM@<-pZaMcKqwsM|?_*c7&3#eP5aHC{6+C2*6wcJC) zarjdvGYGHSvRK|04m!y1aU%>Zidk5{|{OC1j%dFHLF{hoBFICB8JaNxsdYdoAOSq=;GAL9+ zjjyig^A$kNd?xd;uev^)QiED0iQBq$97lyEKL+ks-+P46=g&9`@o`knOO?N@4ey{y z&cy>p+(44>L!vWzZY<^{2jp3Zi&1xuM?ZPbr?BTzzl)MYI8(@O3s{jQz^uL>7ku_N@~2~CSpfHHXjN}&2OW1;kYh% z{YK_3sbCQ;Nl3GHDGPiO4*&^(>4@gr8+Y~51aq0D+5y@SF?~aVC^E9JE`IGop&r!| z`e%3>PZOD7!IvgxNiQw`Y!{0O@z}NVy>gnVOjQADDxbqYe}@TzCv%DaQh{EF!G3+X z%(3!HjIVez!M}BP3A?n>&f3wEOAbRutNB?7ldjb2=(cEKJsV=LyBdplGW_Zic7M^@ zJM<#Ba<mR_J52844}71^Z2aJ~oYt3{UZg_+{I?P$BLmb4&*P z=HZtIrD^}h&!hE;;U&Kf>pbek{x8c_RAZnqE1pWQflvpB5@#KsNm!y|vf>rQJ~3T< zPe%nO-Yv{g@A*sGeI?5SsP+IX(op`1ryeQwfBdV435aD2ujeW#98)9{7!eIa=ad?8p30 zOZ;)G0zNl)DZv@yf3JlNAKLt~`#C zaqs{Bajn^NQxOVmCTfv)EE!sD+7+5VDFmGD0T6(-rJ(T+$@t$jJr^5o;t!TPp@3V( z5pb~d{25{bfnbe|jn#myg(koFU-b@r@Mg2~!s{yF7>|xWVQynnQw?B^=*b>(0<@{Q z@+T)JVZuyG%F1VNrU44YTy-K2OZBnW2MkZ50z)}J5khNQTf-u`glhlOEsrJr^nuUO z|HF{lif8;qanHDCIo%$b*SUlyoO$^9`7<5?X)>{ir>Ey?jo9SW)WQD+#PkFJIM&no zU~UA&IQ-JCN+1+&g1hRZI|I%+I5{~pM0_wrHt#xP`r(7givMqj7Mtjl>iy%BIxw3D zfJ?RK^W!A`xB=Qq&J1!N>IADem&~IK`)=)nG6*HFpZ|` zIhXN{r2YRNqxlf1fxf^2S?UDd;NjN%w02!M~I+w{mO~3d4`~-}+^zR-?S8h?l{|E0ZLte_Z z-RxHV>yG6SBB;ll>|PL{jmP*H3(TyO#(bXufN6+Es>k#vKq_~QzXNQ! zOXFt0c{}010gBsS7R)!~di_*8ugs9GR5FunBBMBx8QCK(GovD8WF4|MsU#yaGi8+($BvYc3duNj*?S%Q zu7_Ular=CK-_IXkf4$$m3g?{X<9b}zeO<#IFHGXpg{!|MyN@5;f@|PT&GwAF-S4lN z60XxdroR`WI~r$lvy+QKEJ^J2DZ8Fu6HHOYANXhBs>BV^1&0qD_RWRfI(e0ucf^Rh zk4uU7kr+AQ{z7xH`;yi9t?3fz1#j0KLysLj=gZG8&Ub?qcB(6BhNsGbUN-+j;g_@B zH%1I{!LqaN^53%zUHj^lXC__0^Gm)IquCpif`t+2#cSj0 zpV`vMzyzC^fh77=>p4sV|(;|D68nwm$wx{#8A<8{W`dd6t{Y zl9~)nw6yq_{kk8H-PxGHQ5!`k)sEc0`Jw$jNWpi+(p?VANfuHwy^rBi@i2&5OY#*M z&XwvUIPUIjd$V<>g2qPV@L=D|RR3boZG>Qts=8hvpkb$=arvr5sXsIjLA> z%I9gqSMv#Ufn)tI&Og}PO!3~#)e47$)8fR=43~G|<&pvsDN&7A>u%Tik*vbSZ+81W7e5JaSrh>AoG9a7Tn&TF z&cF?D;qS=xWqoZaH7Yf4qLBMC&iwxEkfPy`D0|4^BMI6AL;AeR-$&ven_T3RY{Ivt z%kue%Kj?RfOSw&6prv#mS=1t^AE;#4wf+ZvlbspcM-Iybt(FLIUDi1|9OtLI0Nl{| zUCZC!a-S4XdUNc|2g~&|(8$@2e283qjUrjCVa6ZW=Bc;(Fl|Svz2}Q;CVrOL57w6e zVvJt#wfTT%9~KKo&ctU5_}At8nQ|~4(INg`nlF!>9quo>z!bSX%8ohA)B9U&xg=%# zvjQX2i;<)9D^O}nAWWqzI#IY{ls-jEPi50lhbi6fgQ#1Gg;msh_uZqk{uYkfO=iZ+ z?T=H0eM3i zDfEjcK8J-kdDuaD1XQN)9(Zs`HA(PCR2vx?y%AJ{+mdi3lGh{pzT)cP z%3|Vtg3Vm@eAt-uPAcK)aRsMK2@06S7A|AAkQ2r)TIuFU(!$0cnZ8vVSes1Y{@#cp zZsK$%Lk`>5aW^_j`o2w9U_gBeF_W$!K5R93A?yS{v{UmWn=+kMQM$wMPU)HVq`e-8 znawU*cJ(FG zqGR8=cSPl$9 z;U#XKS%@Ws{g}pQx1GW%vgQO9mHT$O2bA0>3n@)h>uehf-gt8e|df$_(7)HSF-BBe3Mw zF0ghkM~}Fa9;Kc>96m9`oHFR|_DHP9__hHqoitb#z-Q0|ppHfpDHS9t z6;A>lwhaMa@6cTdVuZn7Kn?x(#u-lCUVS%*)|Qr#DZ{5IhY9Y_zd1~2R8>_A)rBe= z0eWD4zq_+F19S0Pa8-3be!Lf8fo6^~moBTTzpsX{sk&ReXoP_Ag84F&cy{=NVN!m+ zz^m(JZ-S#CKq}Z49DqAMj@}!eOs>W98BC)N6sk-=HLJ{I8@aspdte}Cs;Ew!`!*4% zvE#^}ddSTxQxvJS*Ph@$#~> z`lU+?Y$_DQ}7{r!Eg0m6%`9HaReslA^*HN=SAmu3q zQ9Hs&M>M9%15vD$ODD7yTYy8FBHJUlrN02UJ>D*DR!@9f)LgOfnY#_=K35Qm2$c^V zxDJZ?nf~{ZMtgWOXY5DE@A|@xrW9tDLA&unhrZ{aO4eh!&}4VB8+vvl8qK0M3X3&vc$>@DkW#e}P~4wj->z{p zeU;NmhA=h7(Vla&34a17`QO5&P>)f_G#d(pzymTplGuX6R)rLvgl^e|Mg}B{0qh0D zlH+C*Ma`@wXiRE!3Gaex*r0Jf3u+C*+E;aq=2>x-{$dBjz4_ zxG-+slFH)C{7_q>q_B(g`Q#G7jg8~eQy8(?tzkQt!Q=Z5-w=EqPE=I|YgtqH5wg2z z+6z&&ynll%yEye=KO_a*;!=rP#%VzJWPWksAE%oBnmE;CLJFqJ}glvwRz~z;Isy=AfkT!DJ95{KzxlA53w0`gg+5y+MEG z%$dc8&WTokj`HYW-1!H;9D}!qkJON7p*ISspWp)r1v>zCVETt>$-oC3)V$GRxc6U2 zZT2E`;D5hli*1-BpEm;R*>9AnH41mxPJ+MLDg6Ewx546`_?)I`vV4I76B%}GjS)R z9BN@WJ90TUS}zpMkqG#mLD^ivb%6fx8{PLx8##v8R2+2!p$(xCv$JmTe(c%xX^0mn z1uf`VL@C@iSN*Tr)oCW}K^)eaVU7Wr|24QOPu-T)c&p=v-LR}k_M;BKp1=t z>NEbT{y6ukQ$Jx$w~Sfq45nZ`b1UQ~&;k;swfm+z()nsZq`xFews$wQ#Bj~jQwlGu zT?GteJHI02X+K;q)aP$sypXm@cx{jUB-b$ct#v}t2F&oTbtFgDt;sVM;4rsM3<6s< z5Vf^ARZs>`*1D@o1{jWCu3x9E^qZ)xAx666NhkrN4xR8q zJuTVq2o6Fe0y(8CAI!~?9cE#sjj%~Z3RX9xw4~-zB=$j$Beu)54&;=P$IdPiJ%=Ip z%PD~SZO?l{9)8Lyl{DaBzgw9Tv&M&?$b&03i;hEPe&?u!QlMR3Bd6&P0&oF30J1_@%K*I8~!r?9~r z9xE?XcS&RA0DPV+VTXK!Xc>~F$1Vi;2c2{IV+5x3>c#pxwUFATQ$8n-|ik{Q+fCchkc*YNm{_oaweX(N#3B`p5>|1Tw=&m zHXdUs-ugj7AL{@{OpQbL%?BISbOz>{xcQ2PLB~n9-SuFfo%si!Ms^^oal>`pb6m`y zL5M?h+2LX!1D6+d@eY)VZL!Dg!8U}prC$Kmt#+J() zE;Bewv@<e~7`I|30p+Ct2If@H-i7{OD?GfogcHGV=#bdRWh{jFN z^u=j}hKBm-J(-}iP;mH=&}X?tC!oyOZ}bg%g?XQbFa$=`1Bqg>|_bf z5)#iiXfIBeBx<2t_yJGODL~mhHa#CB5zX<^amb}zcFm1vP7AZ~va$On%W7n+ez`px zb~#2;ju9}W^<3blMJxvdBxH&d#4rg1j*BBeImrnS8q;Y`ric==UOdbb-5Q3A^fC;} zk?Hyt_e2ApCLRisY+c%0%n6UOte{gkEt7Gb@#jw0MCftrYq^C_nXn&hNE=LPWO%k8 zy}@nXkvn~W?5u4HPA_$?10ceYZCaZz%@1hTEa6eZXc(N%Cl}S$fD})Hw@!NE;#WoCbNiaYvv5@B=p=Zp z&U@|L7GZ|_Bj&V}Qb0y8(->kZL>QusRKQG}MZ3dh{y3~dn=X4=R*5fG=Oz5y?|V>H~xggY5@snJED=v94}53ESs4VY)%xgNb!h7!z~`cj4+= zbOG0}EfDHi5bwG-M0^r)p42Y5wK6w2*k@=A*`yLKfAmd0s0IsIykM2}=z-}FtN7YT zzXi=y1->r5SCWbJeS`q_@|lI+WpnCUjd!*17F=j^Z8Ywh$tfEXFCHW#MfT59ySp$r z76ZSrQJMY1HKCw+$|6zynZUwE=ZDDS)<|9P=LQn9$f8&>xSM)XeBeP3yrU&S!9nj7u(hgFP=Y`@V>YiSO)?fD9FVG9XzqLiEk{8Czw@-ma z_7;c?3J}Dem>-DpzU*-uS#nYHVz*joQwCvfpwWdS(VD$HkOUQG)1z9+wUB~4w=RMB zO&Xyl1io&s6!^R&V|A;gNv%&~ILJReg>qFr*YUxq6Jxci-OpUZZtFAL7`g|HFBPW1 zM_B@$>y}4=oS*1cOXM22*Gwl06QM~&RQfg;1ydf$cEgZj?(j}$D&z>KhVhoWtpoD097!id!{?3u91?006`Bor$> z^1-6@DQ{rxX+P#@i$nn3-c?n}3@T3>Epp_Uvwx%gRX>3OknLuFRTy)FASd3^+S+qB zxTDH_iLeWQeWTZg8h4?7yq1#13$>3sKYNZ)epS|-mWfCuD2TiSavErW2&6x-5kS?w6 zxV;~yRJva!^;UP;I|7&kqs6Ml4W_!Xqsg*uI-|pt14C08I4=Z7bGt445>Eql088Na zbfcyj5I*o~u(8c>_LPm@Ll^;ifgmO(br>?htTJHE) z$tS1Ycdp+E-x1)v&`EgM&W}+~-<6PFsNaMOOt<(6MvBhZCgJe)gK3pc{Vv@kdQBN@ zjIk#Zs;gFhTz51mxZn~j!jS&a)MzZNmz^Wj${vp>v!w}M$^??HjE_zQ!!4>)5u`uC z9*$$cdso3jx?13~&2Mx~hVL>JBi&7W`r;WSr0d>UXN`w?qU+1l{QJjU|~`nTUaGd|B_Vr z=N)lSmYffdTUjub11fVyW0m{~+_Bn>f!o#&A%(nysM||uCdhk2!xydWMJAgxMM z*nGnUI{oS}%BNITb)KpZiMJCcRhmY6Xp9wfxQN13dj)P*ev?bF$!Z=FzC4Gpm}`Ye z?W75d{mxw)J3c+Z3%IS>62OPpreT7-x6qC;@Pm6&EsjDlfE!=fyf8-dxS_Gn9S5)fg$B+_8WcarhK%4C!6yg5AQO3Z8KadATf5QjC zDSK2m3$OBPJ8+bkM4wIAL@_$LR8&QtYxiDVdzYt-jqB%!4;~(RX`!Vya7V9g-*kp4RrCj*f)5d!u|9_L5e{^7H-->mVo~b zBF~0z;6F)jG+z7^`FnQJVKST+`sOeDo zLTQhbx0XfZ*Z1P?+{a=EZV7X9bN|(3a>mBO58GUwxf^~&cy;T%>-7Aqm73L`cLU1+ zFzt?O`qNXCaV3!zDxoJNklDef1cInPj6`w)<&QG=KsT0M#-s!9?tCwX=EZaOB&ls` zF6;J_d0>2dz`2wUdjfzF7Xw~ui6WRf`km8+rhR%h2oaGI>ClOD;zs7IxaWiKAJ|X9 zEe@fRXN~Tc1MbY08@+9|k7DmtZFq2JWoGspzjvK6EuMCr8?XbEf+~xTXH)R3O-HT$ zvI>+-n1D`#3hEY;tD+%zNMYY5bmCq|vCsbiZEy5qIIkf-KAyFh`Absgh7GRl&Ud~~ zZEdKf@h}J*_W>emt#fG)>V1)%Y}`Za08=w-J_uK;2A_r`{mSu*TjT79r%$&Spp8v- z`!on$bTi|=_CFB+tF~jP2$1p^N#W76$`q|re6)*Q(KkaW{BWKA{p zG@9CX8f2$$N}+&2^rhH|96IQ03^~Km*MCWlP^YiTT?j#SyH#zUK2eT86@WPXJ}b$4 zzohos`Gv1Tw3#`u9s*WM7+G0aiA?ki?F)uWiB*RAGYnq8V4H*hFYiY=;bHmOVX;i; zEcR4bp>d?ar_`J;Mk-vEqp!+?^s3Shf2Y34T;JUJi!9$E1 zKF0%wqhdI(jR^UrF{C16u>(SgH32|5d$`b++?SP7X&Bq)!43BcLTB9rc}um7EN8i3 z*g)fk)Nit2_E9P}%&$K`UQZE;LoiSea$@_2@adznet~>b=ACWt*Tg=EIZD0OI7AO8 z8D(^?%bdHll@=NnZkp{z{E$te1 zjAi&Gjb>^zoo}eOTGbKpibRlu2m@E}ZVgL8^aV=ZwojfeIT2Gd2V)@lB{T`ZW8$%d zn#J}40?mQL?F|y{GWhTg<#h;14?{#_OOc+wgIWl2kQX24m{ROX7Iv_6L`BWtx_q@G zHjlYqXS`u}hI<{@ehPThkJ`|U9HBPSlqKs`AB4phMZ)C0ad4&)@+ zr*A9;9B)`>r9_K^s{QW1VL@_4`v24eA|09a%lMM~|I`CNJzk;eW!+a-OR{8Fdo1db zz9Lrufa-RDt=1*2W9K{v`Kh#6XwkNx0k0*EK7bF~8R!l|RsEc2@apj8rr;@QxWj~y zgfPbKw$vg$gi}KpyX|e*)>DS4CnxnQ8On#$H8c)owa!9^`3^jTeF#MC^&_F22I&9L zv%NQ^uhKadr;6JBC>aJ>=V{IA8qof52O?XKp-2?;oE5J zhu8^gOh2?8NTn{P0_VtftTh&)1E97l1?FU95g@v2plL@7m!8GOjz#aO-==$tP+3Fv z2|2PJS0rf!VE-*}UY@bxg)Pg#5845r5%^swVJ(79Zoq`7Ao5NRxLds9Ls&csSY^q% zNV5MfQYa>@d7)F^kpjhVtKWx1R)WS0C(1^{r}h4EaL9U5B}(zxsgT{A%)mq!UUaHK z`ux4^F&0qR|9n#Gf@(^Wo+_>?;sHACJrvZ`87l4inYZ?X0|1K3`miRb2er#HhX9-8e3GfC+!H?*zakl4BJB-%mqzS-D-!^@apr@zhqjDXu-yH_C-wAi$EL^{M(XXAK=A3=7 z#$4@o&lwZ(JOdO!UaQ;`PD@;>FrVhfIAHW4$0vl;yK>69RLqDvp&QE_jPhDV&;*>ZDE*Xb4Ui z#^aCi9ha~r&%%Y(DrZgs^S-hT7piZ2wj2>tX1B5D>-i73SczNG*mpfY_QFl7mNb7U z98npmIB3z?E(`Q^fyZ7!NQ%(h98xslOemqdhps$H(u=9}7fa65GBZ2)?q>jGrK&!U z#^!^vlSJP6R1a~h&&+fFjgh{bIef7}t&DA(_1?rU9Tu7TE% z?Cv!@xlfuyzc3%Febh7;Q#dCa)VPzN9zpIGWI}s}wfzp|UdIAwoiR{-y9f zedix}i7xejhO~b#QTcbR{ad*IHd~PoR2Lf?73aQzfN#V!3VxTyS2=YYj7gl2pF9zi zl$3<7BKlwx<{8nm;v4qdtlYALMcSS1gWw#2^7ig`SN0akxr*}a5Jr21F9L0tBD^pp z7Q*onRz5L6X9g7#6zud}U%%cffX7ATsw=R)rGVU$>cw`U^>Ek0YXw6JnUmTFC2o)h z@Ai4DPTvOL=WmXFcfnj=EnK3vp(K_d4sbb!^SL)9mc2y~*%CDB-ximapjNxo9a9+; z_FkZzf+~!k8nedPbf%l$?oD#}aTSdta)n6ofhdo?)&tPH!l01GpHSR0U%n*P%N%hE zd&1&%81+uQuzaTp#0gB`BV^0I-wG5bD&Y1H2Hdl`Po8v3mA)p`$ATF|2q6f2VT4~c z{oSe3QURAMrHODCan9n0ycD&P9`ue78 zuO%j0tsS0L0w1B1{1U3(Knx2!w*V;z2bw)VZP1?h0b&z-0cf#6qH$0R_d-p_Rwv%8 z{HSozsGrkzLFO|WTq2?BLhE%4xRLoVT`Q}sni|lY6p~OLUbk?wg;IjVGAJECG?8r^$m>T0`3s6wkJ#HvU0Ss|b?TF2R zZ=gd#eWE=A%UyqG#(DUJp)O`gq;14aFiCI_fcTr9Gw*N_#|z@HX~T-|qS#d}Bfp;R z%Rb1qCE+xF*+($x|f@LvyM~jSy3;*ThR5@ZyTGd(-UuIZQzqt@*G{w&n>M zX^#31BpUPqeGkDj8>HHp6!ydYJOWf~sR#Rjb02G$bsSc-KYS!|--k$S`oS-71!H%h zo=>F(gmndpJA$BpuaRR$-G=Wy69poAyZ zp)B4*t{k#YNTGztuR)%j8UTv1)jY{=^@at;GX+a9L@vAMM?)XG;pw>fJ9|rf7viCJ zSO03}EYmJ3k_0)>apnZHtMvSY@>|$g_4Ta#;;kAjhKr;(CVy3wX!+X( zZWViNEY@SqUI0kp?vnwqz~)ruupvvHE`Eyp+q?`1-yQw>994AZYzgTETD%vZ8nJbk z@qeV2|jJA zQ}Sb>r~J~u+E{nqIR(xFaPws+4A1_AQRIqExh!G60XF~x3&AH(wUg*NZSB{uU*R3K z3Q)>5e4TKmKF8J(!L5?H{Axx_2inAXgNH93YQG8hS^doY5!tXZi!IP3BOy?rnfBi0 zGX>ndzyA(k?1TRMnb`O)DWw(H`^rl4X>>BBe(hk1>`)X**U}G}*qLvjnL%`|n5z$k+CseHyc^;MrgA~uJ}UFu=Y*P zlYxC>%DXvkqz~DNqky+q^Pm4~FOku92or_2lg%{|r$~G}=;Iq3@$QU@6IhRQqHamt z!l8nFo%)fcOgHNeXpmQk_8ia{w{az_r^1%h<20xa(DmCEN-g7$iCINR_9D8--d|og zijhdKHC=Y;vlyf|O=L;47-ZAR2Rv**3k+XL@n3nfY#DHJlaKBL z^Xpka%K3_h8D}Z6A!wqd(FhPV?gEF_^e6LJ=eDfL?!&{_Uo}28HHZ0bgSfYx2IK2+ zvR2zomT&Vy=jF$F$8!isE;5Hy_#s{|=sC&o8w<`qg{i*>PU;N5bk^5pentSHj0FgN zUfvRS$uu#)Dsq~N=nMRH)!vQ+VSb9@21!w(2?cZslUgS^>4i!Cc<*(@gBvj#T@!n2 zxKz1oUAk=iuKzk6Uqr5PV=)yf-QPL>iVhRcKV)6Z|9;Qy;SmRJ?84yus%0t*74!|L z+D6dHZvV{S_&Zk6C4khBaG*CdG_(#`m2$~%)T5o8u22o@=U>)wz#zlHr$K=@XBD!+ z0!Wa@UZ+PO$Oy|nzV#?poVEI0>H-vr5sDmnNV)ESKf8M@k)vh(d;)q*lqcD=%vx87>hKqNFG3S+{uhZxb5hGu92Dy!F!GvP_kLWsXV z*u_or2z+ajlR84);Nskp`}FbS!Eu%fd#{n>KVDrafPZn$ zb=n54PZflat~E#4ry>FSReZ3S_-Y&Qgd^XX?!y1LoL9x3$M!`#QlG`r`*yV?Ns3 z((q{7fy4whRx+dO3D#Y7Hqi52M!+5j$M|mupFiK%JyPNYZ_w zLyi;E z4gC80172Ry3mC3gzZk&++6O7K5Hwm4%x93dUPrzp{g7kmp$jPV2tL%t+P^B5X0D%h zJr4lyj+)bR@J?L?V4Jc`4+w0z`Jri7=MJIS4W-e^5&KyHQ3_F**fyNaLJRnR0?j)O z?hcx)&k5qUhvgrMz|FxE3=KdpthUYIv=`u~A<5>1`FpakR-udT0G-J<#O-28@Mmxl zfId%JUzOgv_OmkScjjXy8)PY?Y^RTgN=rl~gj+Y4d(!Hw1dlXCDhVxZAiP(soxo-o z7It0Ibuc|~tnps3f84x)h}6{Q{ftuqeR$L0vG-+w2#^g=A1dQ zGXVuAoO%?Fs5HC#3SP%x1%V6)R;QSVPht&bWS zAFUqyO*Yzn>YmD0 z1r-5W;K~CwvHNEP8?ocDaUd}ox22*N^;ou%bJ~RAoJ5_1nm8xF<7B`%TPGP+5!wEQ zH=p*aIWvX$Q~5C(98YKwJ@*avuiDknO{T+UA+_seB6PICU7E%o(Cj79#2A|($Tau8~VXvsC z0po67uJgV0k#;)OCKdNBMR+j8Jf!)loSJ$Uf9ApNhmV0Hc9laNNlC}o;;$G}Xzo9E zQf|3JVIUwtvjv~1#xx0{i$x4Ei$E3Fx-d1TEw7eI5uc!DXV&4XLRe)WQ=tv~nK*Ga zS}*)AWLzwwifK5)$$8)Cv^{ex-=7Volio>hQ?)vPkbeUc|^QF$jXx&FBW&|q5eB^KX!+kPHkr;?*0(4r#3pAG;Nl0 zbV2L;DS#`EH0Qsq9X9-Vsp{)#saU^LUIFB4o-8Z@2Jz`nE&GQ>(wQ`dq_pwuAtlWb zn@1#+@I#!_Ci*`sxkCr2Z5A7FU6*6%UZ;2RaM&(h3`y^$#PUUrZYaGZ*d(hw50Sll z_`Is3Qkt}=!2;T+wF(yeKl}|lRGt5lUSOZdl?GZqhkc90gznsJvcF&3>a_15L45nQwzVV2GZ7u(yloW9ytB1!nMPrZb ze-iUV?asB+;0ZO~S2lk}{q0k7vZEBdQcaanDR)#Ev$e@c4(| zrD<2GTGL6h1VTVMk&)4*FhQqhYw##wn$;ch1lBK82*=DripJ&|*o9SZt5Is+$veWc zx!ri2qP6&*BXehz*gGY=V9U-W^=oA(@vc%W%%bK2gEsf|SPtmv*eQJ4B5=~P?I?e` z_D(upXM19J8d(M|0?6AKICm9iubw`1(%6M_y$amwm>vc3`VO8HFZ#=&E#1CmJ4dJ4 zJwohxS=&hDfC#OpTm+EhX~5hSp{|BCyGsbheMt`hRwB(S>`AOQLWy2Y#;KP*nN&Cb zw_=O;pP(GYmn{F1bE&263BUFoc{H{pG0?d}&%jU}y8lQnV)Bc1*s{$>f5FmHVpRx<-3PM|EnSs%4DhC(YYXB_kzID35 zTBxf4sQc$O00PkdregfqV9KjEm8~d8WvZvhqVVml8!StHltLhfA60Cy@mL5tRrp4E z2$9fI6q?O3;8WNGXdx~o9G%@&AYAtlRd7Wd`~ko_{H6s8=GU(MoB{lo`qZbWS0$3R zJtEKZl2AaiuO)OkbxFIE1J&>M=5Q)zQ+O3iS)m|A!$t7Xd_s%R+nCS_?IVv#Vl$EB zg%oZ^EERHOFM%3;8p~Av-104mmaYPGISnepJrCNAmLeEnOKmziGcJvx8QmZUz~1W+ zp@M)9Z@W0q(z?}ND|blicW5|-kprx^tgFC8?zp(kBYOo!zHG?uadY}r3=C+jExZce z<55%4jv;)bDVO*L@l=G^m%_bpmd);(pU^K%r-utIS}vb0AAPJojXWTTQZCSy15bvD z1W3hd9vzO&K$r-uP=uc19xh)BNq>MHBh}k2f_@3CL{~*D!2_POUQgoa`HX>$sA1QRiuBz*}{Tzly|$n z4T(S=V(0TNEL*4F0Yc@Fi6P6Elh%M8>Fw580Em6;ay&>4>X4^(?e|+l{dbQpC|Obh z&xd0p7Ww;=*x)C1I7eAIblQZeJmMg4l9-_kK6pyMAJ%^FHK~KR?JK1^PYWw<3i#>t z5NJAIRO{*L`gsOtT%zeiQ}dNda$R`(pmFx5(B$rcZtBV#--}DIN?u8jGI3<(cULpI zVv~P=24QZF%yO{!OddeYey~d4E;J<6k9+9XP5#;&?>Wa{vZy0>4v3gM-nKw~0_Dg^##!8|gf`fXgm)Qr zHs^@>6S@%QjoF3l>7}guz$LF@lmpTWkFsH(g)PB4cMp+_MQ1QdZIU>^2I~cgib6*E zH42f7CZ}0uXl{_lZ5zDXON_GDfLlD?{rWU8 zzNOG3n*MS4Z0&C8^y8{^FX%Pc{=O1b%cuXPAMLC5EQ5fblh4n<64MJe%7$Sn>G7>6 zj~>x}7PTKPh1r8Xv2uHq2Xe3t@_Hb%98QthfH?H_F1UR7%>kl}>qSsu%Oehqu=*iEF2U*n>c~qyLCZM!p06@EU?Z>hyg_?m2|OV+az`J}@3$7OOcKv(E-n zIaWcS(g|&`_taob&02gtm;mjd-s~kPqx>m*i8zRR`{YJdH;yvhMU={a0wLwl4MAZH1Li0gel5`i$c`}zREiK(UC^|RzmjTlJ z2~eda+7Am)fV)dXn7$37x#hldmojKRQG;=PcFhrZxjqoYjr@GDSFWUS;1K@_Q1y+n z$D)069o!#8H+^wg zkm8jrK$UCbF6}Z)5j5W}h*b`Eko|#f?JdISOHgEo5^2U)+H&$s$VfLhNe0h?FtSSe z!v=ErdU-|~B<1yadNQE0188w&-0fzib5Wf?nP(FjmBm1Y3Jsdb*3R?sQo-KUrY&(D zaMI~}cz6_^^cG)x58y0?eOI>D8rB_Z4q9ve_nW@)*Sp#gaIZe#poDoNIgO?d0Izm1 zqv9ge7`S$eB5;?MA5bLz3gj9OL`nr3vxv{l`{?05;$>-z#%Q43xs1Q~X)z`O%H$E* z6={1%oh4<@I;SN)_7sFXV0Tgns8UO0Wo08}cY|%qXLoM*AB7j^Si_JbESe2_^b{fa4<9M1x%b|ly!Kz6%{|bP1-~Q9k3i}a zbZA#*`nnOZu)G20sdr=J`#*EmSps5#cJY zA>Z#=eEe^wQ$LVcZ%zTxrS0SNi#>6Gh=s<#X zX!}+p?Y$aOUIDfrI3*%50`&Y``z7wEZD7Zq2ycCPfU|(V{tm31%_d#QOmudsGUo@9 zad$U_&~e!U;lATNUkP=IP5`>(kk?ZE_df|D{$}e(8E!0g5^mrgs0#j><34MMwcee9 zXXaI*8Wym5_w%z5vxEHpP{Vt{uV)V2(n5O#-1_U4gx3>eV;iOG0;b2ko-OotLhjJ+ z_2@UBAAo>YG)_M7=(FfZsI&XbBovUy6CAF01t$@T$Cl5*vxlmq@DN27crqQIaT zC^`%9L&I0_&RNo6)>DItS=kV|g);1LC+cYwSQdMb#5Rcf#Ibx!??N%q4iA0+7v^wX zh_)CIz;d)3fGy1c>bQiw3DeufJ*T#eK#kK76l`t626=iYQ_xR381kSZ=NeFaq>mt8 zn2PMWnAPX`84SRTu84;55-C1Hc6)m8bG(?W6b`ibuDjc7Tk?iw_xinLOY6LY=T2;W z+zD%m83`ceQCSxlD#1_4?N%VMUfebaia)A%gXFI*p-OeU z9gt-t=a#y7A6mknfcj!F20ZoD1{LsFZ}uA0U$TJ)H(6VLEYP2h`ZT!-kaUawakSQs z(h8pmkP&pm@PU+@nK77LuUO`2!ymN2!hFu~Yjir2sh6$Enq?Gse9c`jZE~Bx6@;h2 zzFeF3F~W{s2pyMTIT=_Gn0M{(MPpqjZJ{wnmlQ)im;zd$pZQlyDApoNx;nQ`agM22 zPJ-ufIZvWHVaVwYSUqvmaPk*B8hg)R)lSe0a{yP=$wfG?Nb=-MXjht4hL>RBKs z@ommFJ1TCRRL_{Ul=W~9gL^*BJDm4Nr8w#jKBsM)wK+hQSG^Zjj+NM*0=pwWSJ0V< z3L&j)NEW;W38Lfv=NgUq`8FFVQ|R#4%F7cZDRkmT3{elOc?+PPFRi+k>CzO|HxZN2HLr%?KL({(6j_r96XtLNikD2THDnwrc3)EPqaxeeci@3+p^f zD!AlTxgs3dR{*5wg2-^A;VB{NE#-ZO)*{8aVbP0mp}t}iF`lO~UE|$3nW81w7~B17 zux!BN6^i%aHhgj0SY>GtLUno-kR$HTXR-EW2KhZ}_eQ(VDlSrgt`{ztme7lJxs1d| z^EAbs((ErFhby;9QzeXLE61bF*n^AHFCD^%mz04uE^snLgW;%ycEjpXmIKRy=IoT4 z;JW_ax+O#F5k>r+o4VGmTD&Rkr=h+}zBn<4RXx~|G}2T~nn8$DC2FWKRUq}NqFcO# zU4oV#69xZ8ae1NJ`%)%B{gAHWQl4+~a|^W}J8M3>-S*;B03ozj`G6!B{erxlENyR2 zv+Seglv+1!Ja_RB5j#6UPBA4FDA3J^w9ao%eN&Xo48=?x?^}-4$+@U+4Tgk=%=x|) zhEhf(WL(R>6#fj@=aU2t?Tle1%diQh>76FdmrCISJfxX6;4YE;p5a5}e<6U(T*mq> zY^=&>kT{qgwuZtiZ8!ruQ^LII;1OAu!8_r>3$dU^<8v1;GDP+3;`dPbtCM$`S1lE7 zoh(QLQ*R4Jr^So%$b>O$#nXA8D%9Znj2C3Yn!v4Etd6ovCTdHoCbe%Qi#-M4M~?Jn z$gEFeEiEh#(%4J$Q}Gi$Al1ocKE%DbUq!D8UB0Qejh7!%p~+En-8(Y-IuhN1&eoWZ zol47Ry@8G31Kou5ef*m3Uy$W-s@$pV1bug;gJ)iDv%d9na_U5SPL{{N#2q^S0a^4N z!E$%9ylTIKm(z<=d*6o&rw@%n!Hri28Y{qN@xF;|d=1>i9-Rhs7uP%B)}B3kcK9>W zkHo0m1v%MYx=S8921_d|QoSacREK%6Chz3|Z67+UyJB(_Jx0dxv=^h?whVECfQdMSm> z_=v;OgG3Zy7Z*Yj=N#+gFe6di=Z1oKGRQUHHb0k6^Z=96;5rGK5V>L6TI;KTd-&%* zZgM?^Ifl51IUS{u^TM*S{h&=JJm9Ugs{w)%iM341oyk!q8tTVUqNd58PW&ac=Kat4 zoH(0Fzh{96s1K$Mf9bI#MF?V>GevMcEq>$HV zPyNmu@j&LuT+p+k>dwfG)O)VfZlA)_9HoyN#xHQ=V9n+30h)zMK3CSN3g5FRbJVYjpiZ+z4Q zbO0sLA#U_uGk(yM?Pq!vhbgUqwlRe*5bL7=OMiyY%2P^YD@_U|N_Oph8Nm+gZ=M%@3J%5$qPFny@S3J5&;EiI3#?(K`n$=(;s^L1;Sz z=I+MlQAfP@Qo_~4TUVQ{&!jZxf3iN5qT{tw%-VNop|W=(9TV&}*h9mo>NP+=UBC8h zP8DgPllcj6*l#UVv}`ruie-(twmxq)T1yv% zPYhevPMk^E@|rD9+BP$BqcMtZzmn{~CPFYayUE(#&g12y&{;r4xPk7o_PV>XfZe?| zDyokI+QxSMP3W5{C-XCjmCPaE@pNXQ^ z#^;2ypO7WaBnV$eDpiX#ymC=QVGc)4Tp>G&I@fu@@=FLSxdNk!sjU;}EipG)N}D`v z!|fKisc{h-x}z1~NtiKthCix|8{J4BbA*0)N%($pu#5CM9{J-O_SIqTk6;g)c)kUs zWaF+$rE{)58H?0>Q@hjr4(+~PIVc|l!9cPhMd|@@E<6_qwZNZZ{DvWT$91Etv zeGZ;nOVDz!nzl}y?xP$OQ}l^nV#e|GQ11p$Eo@-G%DU^mNPykS#2TFLC%kwHBkUB{ z1V>~i-USRo-oT;(`2B{%gGy2}Iraru^KM+ERG=m!1*BwU%WHvNIlU%AitCtRSUDRe zs<5F~0heDJci-*9BVohRPjSZO8n|2GTNg*v>21U3>*H1D$KJb48PWuM{VtaA7&Ia^ zKHfJG!A0(dkGG@NlzL=(e44VI$$s5T_To{ud(_l!{pfNzPqS-P_c0WOFb|5Q5D`u+ zNnU?EnRcb2T~af`;cG}cducAT{X5x1LOu0{657p@UKoFKrRN^p0#^YT^-4mFzQ;i;&UVgG?m~lDI!}X?vxY35@Meb&&C8Z++ zQtRY2s^&^^D$7{vhrr_=y-Y1Kd@!U440Bh?*^)vdF+F_L(cxH(vHh|qNYGU>|G&Qe zJD%$P{{zQMl2K;L%E-#0>{UitMaVctWpCLta;VH~k<1d3k?gF5tYZ}^t6>vS_9oxQ zQ`hzWyg#4c@B8ha>vmmTj&ok;^?E)YkNbMCZOuQqMbsOK(wun7_VzC*Aj;&`> zjF`)ghsig4gN4>F(_3FE=eL5acms_*&QpVaZ1u^VpSfAVa+C%Qx9HOhM?+I>a6?Pi zX?MLl*X17gp4Ja4oP-FbWsmSJsj0W-bqyX>E~oP==jocZpHRK3>~ejYcFSyKxfITk zVV&Z%?;i_k7XR2QDyZwiy>+^1fs^hg$!MpwduiNQcllElYHK#z0%|9TQB{|fL9JT* z#?rf{SH|+~yvE67?Ymg`$?53k{DoT(1YuvIbz+Xp+N*JQgwI;aVZ{5IckMLk$s@)e zty>Ybrc1lK-u#1>mIxyaV!QKm2c*O<#;;tj_mn(9;ZlD}_x-qHd;rbaIXn{X^cHz7 zc+>2DBhH=)X!>!a&9R10j+*aKO_&fBovs?+5e&GXvs_l{FNY<#lvjzpx9_=4Q0 ziTk8vv>eH*kAnGCY9DR7PMO?irKL!&Ta*&HKYAb_s(bXL;CrLWYt0XSm81%nTON~P zvM7=b6e`zwI@09VgTK$^Q=`6CTIqKr|TX~Yip>KAq=d_kO$Gkj#8 z=U|}kxOIaanJoL@30k2%bv(g#dzZKrRqK!6$gTl3&9ZLeshk9zqKLoFzz&GfYE?jL z?K$RdG8LZ6f1-g@C%Gt;SmNf%vr=D`eY_lTNlTNhCk0F~$9)9?7Vi0%CZ+~izQK+5 z3`#P5BBV-AaK0$7_%g@pc(L`7%(UqK`jh7iLw6_V>?)_^*)PZULGpB zhT~cW8*L%wJgr*BJ67q`A~QoGt7jBi8{Rkj!hBY?sdopNx8G9xi7)&SwwJsVKYWO2 z)8uZw+p>`>b(HV;>e3gv9dd#9>mW8hewJ;CGlu2+VnzN&kL3d$9>x!eOOp&@qpbOw zt7a4DsUGTMX);n`?$@fOvTDXZ^THZ#M18WhYokkwrZK!l%X*rdSA9XTLSm#z+e?e@ zdDy4^K;eK?>B&wWYoVDHruplJRFa$B9DL3z{{XXY7>RNc=QDzK0blW|}$~RkUd*O^sQ2=y%WB1~YyAd;_+AFc{j}^j;z> z()cSzd#K{Spg?&huPzhNy+?);t=HUb{Qtul{7-ZKKd|3E1KI>wpRc|vH0jXRyM#@o z7aHUn`a%*GhKGRWU_{H&v7ooW@Mb@>_mWhU$#fW+eH~aD6$V^ z$0v{{mgXtlq1qax7DN7!;U5{5;FenXFHbCzH|zs-K#V#FTYo4+BD0~sViAMpI`F5g zfg@o3gCZG{t^?(QmTa-aEjHoT7r|WV8@fZri@?$|lI#A|vAV+Kr-g(um zyzLCi8A9G&EoV#%#7>jSlN}7vSOK-iAToGl-bBJCD6TjoUERk>r;7IEqWr+ZZFmO* z!+U>j7aAcY`F||1IDnk(L2_369$c9J?X^7`%=J8jaEnDPP3Ak=+iDudHjvBAR?dzR z6X)O}l*5#=U2UojfePpguKCCI8UT|Q3dX}t)GU;{PO2E62!FWP63yZS$l5ZO&(RgI z-@~7HxLks8IVbgIj*M430W3ZQ#AL%)u;7n$n0Wv;CnPNVw(2|5DMXWLKFJ`U%}9eu z1pe&XT>*?m3j*fTn(iGF=}mz(k^CvrKIJIa1Mm??#L+Q&TkRrQ6AeLEC8EdORAq+@;KzkLQ_FZb@u8nwkOqi80K>6O3?}`)9S1ID_ za4C|-hmn!yl$2LDNbxKH*jj(Mfr8F6f1nOLEoIx3rXI-U8xT;AJ3zXn22X2b*D29m zWRW;8p-yqRf#^^fs5*HQF)@@R$2PH-+QaWtPcO5>6&mwjubJQiY5f$X6*wxnC&T48dboz)6)u>m~h9h9vi!rn0iK zueKSwM##efSRbKw{51dz^n75cPJoH}C1ZkfB1z!o|Ab(9v@D^&1D2E`Yrr^ql96Ws zT&^g4LRJRmb%e1qLQO{80;~kE2SsQt^Q-}ipMiuGkZfeug&1_ZA`yUr0>_Co7Q`)J zaW;AVMW&7LArutGUW1MFB|zu`IwQ{uC6L)2o_{Gq@c+D7IQHeu?ZUll)4AaP{C; z&;BpZE7C+Di4j`XG>(t1KDDr0l>(=fE`22@Y=5nFl}ja&AxEXWTKCioL|4e&>$BRGJsk)?krkLvyJ`Ue4s zYP$w2O#8rF@MHNB-7R3y#M9U=p4Bg^{{guMn^H=QN8zm0S)TF@%=v40O0m8^-FBEQ``6tckThNyu$&Iq@tIDdrpLLO~A`xZ~}69I`|1I3N<)X3{9 z&w!-zMy6rE+%Bg5WxOQ)pf|Jy$Ip;LwB`y(DTvR59+q?)16b{+l+lk91)x{y15Q4T zW$X*)`vYL?@X*9Gv%(np#_AvoccF(i}j*lOv=(~guZOpx!bLUyKCOlQr ztRE9XYp+6-=8~nzD7(Jk!XfryO|>y_wVK=`PF`N58w#hqA2H>P&W$~^6&ZN;Qhs)e zMJfBZOJ{8I@M83Bpj0}uUrQ$jcy3|e21Z0g;K+A6!c8u*FvB5oM?$huIkDuKtR?V= z`&mt)C%@bOT_Dzt?CS9sAy0PyDaD-n_d(gxrG;=SWG+*i&pF-fW^Tv~2hM3)d4#f| zKNA* zq;EYa@&cqj0l6hUpi7@anfpi)gi;LQ)F1&j>mx&8Zke{sy0rhBWnv5eMLKht&!pCbB1@ z4Uu2W%4%x`9+){4q>Dltvr)%@mTm#R-esd+1-qD??x1AXw0>ZvAssgm)lTFg2N(XI zO2mf&VQ7h5W{}Etv&15_%la$IuSFt;7&iHuK?+mkhgtPNmRY1m_LyOGfz+X|$l&rC zS%cB$hYpaY!GROb$<2L4Tk*|5Ych(ENm7<#qs9h0Zn(a1Oeu2Z>>pAWX|pfFz4n#@ zsDHBB9&T0$yr|S;mGWX60mk6#3y2g(y2&nf8)VUcc?HqzZy7|vb8D>2K!BXIJAUAi zm8L@h-D@zj-LYYizEj38k4}BqTfOun{gc-QQ(!UNpI=a9zc@K)03P(OAuXXN$u%TI z+eL?*GvnMca+4tnYZvZ^3eZ+#~4@1{m0Y7;I?%{vlqB0i^pbY}(5j6aqwSl$8Nb*0LXH9(*{} z6>9y8?}o$5i4?fQu~LV#iSyJ%KAD>kJ4WQ|4L!`6W`7NNFedFa^hV0Q0n8BeT;|9UF^pQW#ykbW-06DF9uvxy&9L9v-Eh`XoN8t((ws?#9S`fJ zdB%0MT@>4l#r&g@Q|?)jvCU#oFfE`9$*6lg&DJ&E>_*d)k(T06U|c7oFAu?Q*l?07 zfmz^fzKUA>2|CG{0Gg8_7TrhA-xEAQ0Ed40raRqJn-($Gi7PAu_b;(z@JhMYzmR0? zJ*6Ri9vINKRnV)3J!>+Iy zf83KOTS#GneNG^M3mP9>iXt1OQaH16%#RnwI z;m3+RU{@~QmH*c*`%gN-zu^N4|FO;fSA5ZbhPVG2+4ikKsAJna{OX?^0{*dA57A-Y zUht1qHZ~SFJybFxm_C4at=D=y`>HAP`Hu@HFk72%+-J;C7zlVC5p@lX?P&Y}|yR>9()u0O6Xm%Ku3e`KQlDmH#Z{NkLFSfF$R5Ml5jP(XSw-2ju|o z3l-p`2L3?E*bj7;n=8O;_-R=1Xy+7ff)6RkprWwO$Lq3Fv#wwx@bw>LJt}pvkb@9iCUu% z78EFC=Y|+u+STK-AOc83hD=0c!K;oZW7MetPA-LYPTtLkaPdUD+n#&l{~gfIsmOlCW=b=^M?JrBI$-zYrc%Awvh4Hbay#w zdyji3POUE9$l+Ri;|jZQywb=XFW(tFiBZSy5c^~M67i7qg`Z7^W?447wGDN}e<}=5 z?3~Jl5X{qBo_P|@_wPX+cN#$A3#5OzNJY_LjRpnFJ}7xUP^NxCveu3Z-p=wb7_}FC??A&U zeP9$|v_(Ic{PmwN3%8{D@X)R9zGa=ee{pRzgk@_#)#YJfoWJ%_j1=~KPOZkK7x3Uf zS1WpiF#0BgO4wA)r(m0%*WSFRbl23mmofI2Oe9YAN%+r*xlU-`P!IZS8 zb0`xlsmj6eMZ?EKY>N%JxbKjK#vVCjbxJ{!eBw7*w7KCHqosw##_Z%~c!MAH>Bj!6 zIibF9_wBKe$bwwGIuhkqh3f!+@Q%+FsUdG*>uMH@vXniC=J$aA9(vJ0h9Y9ix7&l`3r=G z3++^gM2lqBNzSrij6d$C5ew}5V<{vqS%x#N-<}(w;ycTn{tJaJjy?o#ssd&=-M=PT z^S$w31M07T!ScY0z2TuJ_mnli+tJD1%V1@FDZ!^iMSI*uuj$#d%J~P3zeyQBCK{Nl zW^f6%ctskmwggQ_8aXVKFkaHPe8%snad>nUQ+2sahHm>>z^ z=nFcla&rUP?^}u4PkoDq+s&9x(hB&q(3oquod2^i-d}wJE91Mh5=vta!6h=f?-QNn zV>y&>3?EhBYq2=Y!=-5wL3PjyWb7`~0S4_p$1*z$>;pNik~;Fm?zeH!bu`&&fAofw zD6oxL^{|gPXJ&|)H9e3ZBF5Gvw)zXSM0nI3iIPrR(f5*xKPyLL8d0nPaobwo9>1!Y zPgrlD6z%QDr*vog=q;6f{x75^x1_m2&j7v`Ugy6cwq?=bXuz zBc@ip`UlpHvR!9a4${oEGBERAm{bI%Q!HFCtnNzZ*wtNC-PAt8YH-}rUE@%;Y*rBH z)VQuI_4vn?*ynks&C0R24qBC3aCP8HEv(o@K6)f5TW~0AZBFD#(5J$e&cPF4xQhOn zOK?;ju0||2@E!b{a%`A$L>xyifx$Lfu4ZRQ1AnOlXU%E@SBgC~%uf&VU0jKk^Wurs zb}~Q6PD290l|B{tmGzub8+DKQxj!vTOi;#R$uw<+MBr7WH}>N9tT*?{DFfhTopFb( zY~XipE$rDB|6U;CR?Z6o<>7Ha3mUx8&e}#e+!)_1>$Jcb$OQh0L_WAbRf)3if?w2F zV&-|=SmZV|Yi?PLti3_O?}Hf~6Zv!ubbej#*(!c7_B9Z?{~%C#@u5@86hgm`K`x$2 z$!oKX@>c+*w7~~#w{YGPC-RFtbwNx_22eT{G(y$AeH9A6RYqXoWB+|UVVHg-E_FTP z(Qbe+ReF%Dzp>~@rYwU1hd>CD6oiF$e-=ApvFQ$QF)N4we|rn7VfhHXaY&3(&`S_8ngTt$Sd7*dUiej}4R#ctk=w#B$Skb(8{?mq z?yh~s@4BkO5!=2!V1RG2WA~9|bSTqAj^ISuyMEuupEhnD*fuR>%WH?*Jo{{+GJ+vBw$-rTs|n!r|S-9?U+OyAIA)ez7lhKLX2gx%)`1esi0 z*+yZTO86ev1V}%K7z5$A^P_-87Z!M`buav`G?(~Q_Q@f41N{qKZsfkCf z+gfL@YwM=EJ{!FzPe_P%Z}JjFKo)?k{p()cV$*{R^nqc3)d-_~wPIIDr9A<7AqBMS z>IUSi$itM?2(y|T&}d`gE%0QM+;pt6#LYn>$ElYlfJPsKS(_9F!01^L4=AzWvY(7S zYw=brUty`m_#KP+5X#Sha#`3B17s3v8ijw3SBu#Jr-T_hI)9__k+?$s+^t;*bvlNW zu8j~Me6sHIvs>i9-I794=W7ad9O?}g=TrG5Ngd)iatqMvxW=YXnz$^dq9_MiQ)d+o zUp5`b+RdrOl&|1*XkG=y4k_H?*U&*~CP61`r8*5$);A)86Xr)ZIH8%T95E+hgJ^Yw zIo(FF>W+o8{DsZSx!*K5(-}nJz@e*s3L7Bwscu1y&No_oFDy$U7{najY0kdzykuQI z!|Kl#v~ZPAG%g2Vo?H*SMK^rWE!EvN6(Wp|-fK28)>^HGbjk)uFrszZ@fA`g+_*VK zmIR`9p>qLsntdm~a4BmUE`bEC$zL&SJOAaG0PV4Ed5TCHc_!!jgMzRPL5q+O!;6h0 zm)%*Q^U}h)3Nf+ zeV~X$mV~290#A#Mh9Rb_SS9byj_>k3v2kDo)C|APhJ=ea%^oO16Pk7l745^W=)vmc zEGyjfPfO?cR@qe@CM3c62V6|S;L8pMj6xh4fU~&cgIg~hIdy!gAv-`|m^)C%6FwEB>Zs9fybn?YoMKK;jmX#b1s$ z;@kFr*$=JP8Lo}|32j_C!5F%~xzQEQxxNo~D zNh|l<)+xTe`ZNB~qkOC2tgtaz1BPjjQ|1Ici-gUOeiUy~W+YZcIfZ&#cJ5N`*_cZOi+U7!xTQKp83vny8h!%g`%<3DY1PlE$pt}Me9;yIC6h3?(sT| zbS~~y4d`5hs>I@_1K+)Tm!?^zg6_nJHfxz^dQtWs5Y2}f;&(Q zVb>|QOY-NE4+Z@Icu53#1JoBQ3WYGAY5dWV()L#`2lLvOZgft+8>b^SVxC>{y>g=h z=8h*D;_9pzGJ+F(%+9`IP)=o{T-wJ$AwmuVj{4)ge(1TG%fGpHSlBuMd3F?{9Eh!- zc<7=^*#JL&vi!T}R|`ASz+qSxAap$z+b@t}bX}gtD_?j4Ud`jEy66>9{WO5xkJ0h% zYM(Q-VS%7OkYe&2Fin5{oWnbigBGB*(ut=W%6Te8*{9*Zhd9Fs5yG-Fa%41+M*V?X zO?D2`6Og&PYy(GDt6MJ#9_mI4P(3rXLr8@1O4ZLhHf#B;TX-H)rHTN3TPmOLG6TXdU7Z{t58)`l`H`O}KlR42a^^aY z3=`&!5OUHbLxU_1pNvnx$mCVA+_PNyuM z1suwg2`|SioKf@t{HSMd9Qr4z0GdmbwW$6%#xi=$Qvtzd<}YhMY>tMuTrqR2FVNNm z0XNQN*O%kooD2VE3IQFH$y|EqwQey89UBaehH4deTMRguf$>jy}NDjeu9sN6G%#uu%K{&xicyhuX7XT1W@@X%X$S zws0U$aVWn&v(-K#S5xIUtNj+5sovr3q4iir^ah3%0eR+ilb8X#8+I9+lsx(xDLzC8 zAW{lnd>8NveWVuXkgFW=CxZtdNx)QYz%2Z1Y*u^m*#3w5Mto!DY`mSJVhzwYqp*VN z=B(JAm1&FFEi|pcwLW@*c7_~3K?!e~44%njz`CiIlv@?;|G4sO%>I0)l?Aro^HqA{ z|9r#&XlWZ2PZ}PFr?TWf9}&yrHq{wgQQf(JJ^#IUXmwr)>i4ea?E`kzf46g43*goFUh$Zdz|n%%z>!hn>bE5xrrpTcc-i#yMn@EtHj9Ps!5 z{0dYY;d6%l-y7$K|0g9zhezLT-mG2i&9dxxoDKm)ZCdX&rkO;5i5(LA=GAw>)M5P$Y+JHnWmP!@!j?fVnK5Pp1$$M3Eq8k+cO>b6Bf#BmZ=9A#gZcKIASe z*{QB7xbL7p4Mamz1he#c9GE02z=r-HI*aTZh2KJeGlEQf(H;#`Sa38Nd-Yr>n{&u1 z&j)x>%l1bb%di)h3}$3|iRotnW3zXm3@*MdsQ#H(S%}zUBW$=iI74Okb~a?t%qsx1 zPS4A8EG|t{iyqtHrxqJ93Frn-#{!H>cV`>SR7t=_nktSSZ{3-VwxCu|_*N=eqC$Qi zFYJ)~3bAI5K_`vqy3Sq-_x&V|n73m9{)Xe5q;_^{onZ%E(>Mz}Pg1{uyJCG>2K zsI@XX%V~RjPb$*fn#a*(4kh{|B4>b%$y|W!BR<#&DK-bwrzt?5rVxUi4v6n!s9=5Vb#=}e|?w3@@X zyGLiQMHmecP!dF;KzRlO2iS74dEEONp$y7O64Y2oM$_i_ELD4Zn47|x(behlbuhI_ z*0wWfAdruCTnBSM9V(C6Zc0z^%b#B!UKY;sP#qg(cv{>GrlYV zEZVGcxB^H)Q6lQO>e+%(z(^mg=ibx&*dC-&?*{GISN&#sA&V;?!srj0ho3EfKug1X zO|J@=+Q+rbUc1NfYtZYq6ye8n^);&w>O6)FJ;C5(@R9b2AptL9-OY54hL#Z{h)t0A zfQqlo50J-%u?11~z)9wH)g@o*9L(;wo6TP=HI0)px^}_#M=x?h*w$RBk#v7IvM@l*i>;}IN{x=Rwxqc&HGAznG9U}xw zbo7-+*8pPKpFJJ0S99{73%&Vlnc;FxX961N(CG6jN zMi@%8zNi&SZAjMv>5(-*0~Wla@I5+}csSHtYtWpMeD>A+{5d|xchSG#Yc!l&OBhts zhWjrsG>nLwp-EN!fS;8fg)7^DhMI{1RWF_2Q|Jn_41czVFA7F5nh_9kxtPQf=dq2v zrn}Zy`LvPz0^htxN=|L6a|4Ns6eW!kr9h&|L99REep+9eqx#LY2>U)-{sQFHbO26| zv2uI&<_i!+)F`t(N3;H3fwo3Z;KKul8s^cEd-cy5C!1Y*UPZboU*S70(o^uLhKp?p zE?zWk+0q^GgPQ3?6+B?N@I&^Af9fqNTCVETLf*s&!&Sbcp^dw4#6|V^!!AgCId#_< z;sZSLnL)QCI(QliO|PoAb#I445v$FktS^KZg$Uyes`q?u5uDW!WIe`l^cg`z(~+5@ zt|onAk8LNkN!q_DofK?1U~WsS6!FotPl^(QdfN5N0Z$!W19{7ZWkOWm18PdsFH9cV zB4gMJp*F=5CRUOR3!M=7KzF-Qft*mZMFOR8yYw9CUXAR(`lgO5aGIbs@zfA+Z#IO0 z;~nPGdd|vU=rF6@HP2!1D9P>*ZhW)i-zq^@MWKg*U3+ zcGuo-UGp?%185BUr}Hkq4#iOQa&WOcTS6_TvQB#6k?iB&=jet@VOQ&Z&%vP+nGq-d z`9wsUAj~FkUy*xo{cU`q{Y3vki)z+4g63qirCCUc0Sh|%V)Munrbb=Q13!4B4`=?C zh+B^42!8c3{0)b#Z$@I{+&6=YN3&H{Hwq0`b42K2kU|s(bQEMDb_|ufd z5Z=`F0#}=Q>$CgBb9^#oauEV;(ZFqvUcb!mtZ{9PiagCgKP18!y%4(_NvbaD&`C3z z`{EROxfMg5_;j9lCsl1R{(HRev2yz|r;7)zQkqG%0Mm|pt%LvDzw0tWL6-omQy!>T zc?2+^CY*?ZnJN23A#5o@SN8RZgSOySGKJg`yYFb6L~TppDbE2mZ;Q##?IWK-mm>7! z0CR%$ckdS<`Qu*46u{I!YuWb}TE3zcr8-r3nVC1iDxW}a(*X4_CV#U9q4iK_8^B$w z$GLn0UdJ6`t@<(bOohs-|ctr*PkLqt)G4G`b%#3Z{{zwa|Ua9K_ z6>vJ0N-Qhh0>%c-Gi_Rq5EpY779c4l!XBf!;B~Y@Y>>JEY~Kv1A(99uiXJB@cQP&4uEaTkCTW*Qw$y+P2%oMQH#cxa(UjLiB7fp0{-#1c9a zc_A@kl@uJGVRZuM@|(A%VQ4X%z5vS?%x}vXnZvTbQRv{KSndHmE&e;eJUc^?b$k{0 zcorErY$_wyKWuKpfifnvJtByZ$kdQpSXwd)OPeAKyUd|O+O6~hOgFj$9o>JJE_mAS zus#74d{Gkc-`n3#zC&)gQBZnE{FnsmVDiTS!q+(spN*9OGfb?;1o^J_WpXDZy0c0BqnK=PYVkJq<4RQjuTO78lQa0iv%FjfOCe z3^!l&7z^cYaTvig!E|sdA7-YqGfV(I!4^Nq2l!6@G#Bk>d5QvNEFdiN9RSF#5t?qs z3d>B@L1Gim><)xdf}X#e=MNKU1oYHCDb&-B-zizd+E{oyJbjAOV+Pq$Dz|}_6r;@aXvu~0QQYSF2~i!m;&9y z+;WXD0XM)$7>^H-JZS5caj>hpj359$CU;eZRR(dMAP?qjJUxe!u?kVjM~|3X3VxV# zy;umD{K4pe#v7dPmZ|@Ew%Ow$?j~PY3b^=|>UR$*tBzo~<|5j&wE=A_J+BoH#uyt) ztccAwg3X$hEP2M@g}2N1dssBnubiVo_1x>!!iMbb%ryig2zEcr7v_FrQe?PwX}8j`_@dLYy3O*OUh@XC+(OfrxNE~!+PZ0Lb-K|YY1_F_Bf+s z1o8EXyrnx=^rSHI2-@_56h(8Jj*#D;OzViUdTHa{fzIt)hlJ`uphEeBkd;GlD$W0p z!>Wh~BI<)*w&#hygN;u5Y%PRYIb{N^;ezL%jWt*hrAlxKm@sLDk(mho4rx14NqNFN z29qo`^RwkZX=c=U%wr-FOsCD|b=hvU=%2^Ni>I~Q#2VDR7gK>Ml_a_t^`wnisL@zP zbuQ)ubF15@n8ByUVHz^S!B`SMI|DpkR=xBHq^buF(X&gMyv0&+6 zTj@$y=L!ll(HyrhV^NK$SM?#}wJIFXDC#V~Oki0;*fJwqTF-F! z1V?^`bSrb6(4RElztY`ZY3D6$a=`j;9Hv$x=8t%-vaM6XKV;7Eb3i?z#(hc_W5cu# zTKn-umv5b6mqjCgQqNNmo*ue9l~{1x^uaBL`v}e&1+*i2J|zzea*(lVMB?E~?yg-D zm}GK`n(k{gpSb}c)cAJKYRVT~lZRUEvc|LEazFp6b%wWljgvd(piQ>6tx8BLWyTqs z1-jrr-HjL@2^G&2+5UXMmsM1BwV&v-c*zI)A3u^f__lzHmBS+V0xFKPMwX=wAnA(p zVLM7M#8FkD+DkuGv&j?S|1A6SkQTf@kVao@l^NEY zbqCJTDy!a?E`NW0Up9mIDQ`8#Pv}Kw-kcpy%wAbmL}eW8Q~leC`)_vGVdX()8YRv?f6q#%fiRKOea)iz!_m2c`t=4UF zXG#@bPZ~djcSTeUn2tD+(5LU!EfRI`fLTevwynNu2jJS<`d%YqBOUO@bWkvi!u}jf z+wrhqElY+QJW-r)T=J^T0Tv|zkrFA;HTp9sjIFJ2Y5Z$2G(`AqSQ$kDr_ybGU^5Ip za4s)4cUzYO{I;(P=wR~kl)d4vUt1TiI*9j#{edB{5`%MypTFS-fM39rr$UsX;2Bh6 zrJ$UezWG&7hA7IC*Esa{8{xYja{%P(O5YV|fNu6ur`lXW!h}(@c4G!D+JN`}8h{{A z!y82=mn!%EY+q&cN7&YYZT6F~-S!cEgjQK7dwhiPy#ex^Rh*8_vAYBL`VO&MEAzv$ zOnw`q>F{W`3HJrU?(MC>IQ8>9h|MS_eI%`{;&}#q7`6y1YaroH)wm(5LM7vM%3raz zzzgdkq03cuCR}cwZ5b9OdGte8UC4$TpkI-*1GOL%X)>Se2<^PrvI~eHetigm_P@S( z9X{ERjp)KNHBAx^;%o)r(mP%YYdIH z0~uxMDKkg`fRDlzhTygdyXHY2ISoo2`xpko@NwMI1rAo#r&5xB=W=i_a$ZnAf(RVC zF3~z`8MmaKVdXn}fIX5x?4shnIKnjKlrF>E=G$eTCqkAgI|e<50(uE0F!TmNfUUrF zOhLC#tCX1kd*HIhuKCk{I6s?T1nV_hir)Q@SbqEIwR6YWiir6qCUTR!jH6L8?f_ik zyUr#$SV5B3qTiaGD>>SCjK{nB<(y{m_^c_(5{|>`O-tQ{vbe|u-4AW!$#DeXxeg8J zQuUrlT}q#2I@X7dbs{^4$2J1c!wCO!# z1(1a|if-y~G2Dsx`YiqOp;*T&B0cpow!}1AfE2$SFhTwAm{|8T%B00n1lF-fNu1U_ zEHo@17IUSWXXQ?7#kEv0uoqWf98V%OoGLyO$O2m3Q3z8!^VX%{T^Ev@6dzO!D^uEVLzVDC&T!P>;i4f-8eLNLF8+Iq)vw+;A?nkUha-rq_)viS{J zdfK!GCwwT9a)>@gMy3UlR&}kf3i+4Wm?Gj~TbX9bpS5 zI)(oTogjcR6ptKv`=*uB`+3W*F|?-&53zi;QTUXYW%f)IJf{WDz&0lg^(?5y3%}h% z>L?5mEgQoxT#Hb4>T^wF;@-!IAKv+?R~Od%u+#B*%?FrjVzVe^18}+}i%IP`gX?ew zgBGr%BX0xNEHiL>j{{G|v z>{H@x+bq$W>EpcaPrc_yq|n_5GXAbWFqTPNCtZ}8#pHeQ{{(W%G4Z~c$O2hf+amu0 zDXDY9&om6pq-`|fJ-%Jxl52xw>;&(ni1pSvf`r0%?Hnfvt2@{0eK6s;LOq+bRN)q! zhR)_<^j#(=5h0`#tKe<=$emEt&s8mr-(8mEK!5_rv zSjmQNJ*Se%ucW6~mY!JqUEVqS;%)+*O+nqk^nzvzOy}w&x08PTTFNUQQ80h(l>g}~ z80pLda`__5?WOqN_)vH8&R47_*&JW`wF$hfd1IuK>Gkf7_kI+%nJG$!Qx$XWJSquf zZ;jG@d#-SZ47uP>WmUkAU#|TX+HcyUe@n@Mk>|OdpCOA1BBj#i z{WNWrs{6$uN{RL0!*vC70XM5+IrL@PXQp2r7j&=?B2g+RFd5cKF!uAVgd17K35uk3 z38(lU8yHK=i(uJ9g8OAu8}t?RBgCL&vx%V-v6VC%r|R5}S#*wS_)ap4LDM zNL_;Y8ElfeIv&sJ=WGbsn93F!2W!M;xm+|X^3`8vLS z2@IKxeA3;EB4aa{7V9!fOxn&Ln;kvEw3h&l3j6)h+9{A^{=-Gw3%zd-2!K6h_;=o0 z%qOUvNn18EWb`h?hMlqdv3-PlS#*%QF#eo1@9g5_`7U=C&XwyPaR2w-FTaiUVG(AV z*_185axI>?+!%U)Bq)7)8H~#4?-SS(b z>uYU3*=$MQTXza_@Q5G3GBkDnPuL3hGpV=rlXuNXxyUcg+aUeHvwXgGmJ z4Gs1HZ3m^yl-#5lSA3+Bz_Ig0O?qV?4Nq<7hZCz~PcOgk(`6>SUHwx~aRb~6<`>U) zG*QF5&GR|qCGe@}U2fRN$Oq@VMXG09n_2hT#j0PLr+FNU7bBn;Z>}LOLai);ygeOh zeRr~4g0!GSu5S7T_P7fIBq8uu*y~4&P5sN~I(jYkb<7AZb^kk`>Uz&)NLVrUWM=g{83g^S16D(@&A7S DM#K{! literal 0 HcmV?d00001 diff --git a/docs~/docs/unity-2019/index.md b/docs~/docs/unity-2019/index.md new file mode 100644 index 00000000..50e8456b --- /dev/null +++ b/docs~/docs/unity-2019/index.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 11 +--- + +# Unity 2019 support + +Modular Avatar has begun phasing out support for Unity 2019. While you can still use Modular Avatar on Unity 2019, +new features might not be available for Unity 2019. In a future version, support will be removed; currently, this is +likely to occur at 1.11.0. + +## Differences in Unity 2019 + +The following features behave differently between Unity 2019 and Unity 2022 with Modular Avatar: + +* [MA Parameters](/docs/reference/parameters) has a new UI in 2022. You can find the [documentation for the old UI here](old-parameters.md). + * Because of this, it is not possible to override the default value for a parameter to 0 in 2019 (0 will be treated + as if the default value was unset). diff --git a/docs~/docs/unity-2019/old-parameters.md b/docs~/docs/unity-2019/old-parameters.md new file mode 100644 index 00000000..0be08292 --- /dev/null +++ b/docs~/docs/unity-2019/old-parameters.md @@ -0,0 +1,50 @@ +# MA Parameters (Unity 2019) + +:::info + +The UI for this component has been reimplemented for Unity 2022. See the +[new documentation page](/docs/reference/parameters.md) if you're using a newer version of Unity. + +::: + +The Modular Avatar Parameters component allows you to define the animator parameters your prefab uses either internally, or to communicate with other components. +It allows the end-user to easily rename parameters to avoid conflicts, or to wire up multiple prefabs without having to alter animators directly. +It also allows for automatic configuration of synced parameters. + +The Parameters component has two display modes: One for end-users of prefabs, and one for prefab developers. +End-users can rename fields, and configure their AV3 parameters settings (saved state and default value). +Developers can adjust the sync type and set parameters to be internal/hidden from end-users. + +![End-user display](parameters-enduser.png) ![Developer display](parameters-devmode.png) + +## When should I use it? + +The Parameters component should be used when you're building a prefab which makes use of animator parameters other than VRChat builtins. + +## How do I use it? + +### End-users + +The parameters component on prefabs can be used to rename parameters to avoid conflicts, and to adjust whether synced parameters are saved across avatar reloads (and their default value). +By renaming multiple prefab parameters to be the same, you can make them all share the same state and animate at the same time. +Alternately, by changing conflicting names to be different, you can resolve prefab conflicts. +Finally, you can mark parameters as being unsynced to save on bandwidth, if desired. + +### Prefab developers + +Add the parameters component to the root of your prefab, and click "Show Prefab Developer Options". You'll see a list of all parameters used in your prefab. + +Each parameter can be configured with the following options: + +* Internal - Hides the parameter, and automatically renames the parameter with a unique name. +* PhysBones Prefix - Indicates this is a parameter passed to a PhysBone "parameter" field (and thus it really references a number of sub-parameters) +* Param type - Indicates what type a parameter is, or if it's only present on the animator (and not the Expressions Parameters asset) + +Parameters components can be nested. This lets you build up a complex prefab out of sub-prefabs, some which may be added multiple times, and while avoiding parameter name conflicts. + +Parameter renaming will be applied to the following components underneath (or on the same GameObject as) the Parameters component: +* [Modular Avatar Merge Animator](/docs/reference/merge-animator) +* [Modular Avatar Menu Installer](/docs/reference/menu-installer) +* VRC Physics Bone +* VRC Contact Receiver +* Animator (although this is unlikely to be very useful) diff --git a/docs~/docs/reference/parameters-devmode.png b/docs~/docs/unity-2019/parameters-devmode.png similarity index 100% rename from docs~/docs/reference/parameters-devmode.png rename to docs~/docs/unity-2019/parameters-devmode.png diff --git a/docs~/docs/reference/parameters-enduser.png b/docs~/docs/unity-2019/parameters-enduser.png similarity index 100% rename from docs~/docs/reference/parameters-enduser.png rename to docs~/docs/unity-2019/parameters-enduser.png diff --git a/docs~/i18n/ja/docusaurus-plugin-content-docs/current/reference/parameters.md b/docs~/i18n/ja/docusaurus-plugin-content-docs/current/reference/parameters.md index ef89da58..6df024dc 100644 --- a/docs~/i18n/ja/docusaurus-plugin-content-docs/current/reference/parameters.md +++ b/docs~/i18n/ja/docusaurus-plugin-content-docs/current/reference/parameters.md @@ -1,41 +1,70 @@ # Parameters -Parametersコンポーネントでは、アセットが内部で使っている、あるいはほかのアセットとの総合通信に使うアニメーターパラメーターを設定することができます。 -ユーザーが名前かぶりを避けるためにパラメーター名を簡単に変更することができたり、アニメーターを触らずとも二つのアセットを連携できたりします。 -また、同期パラメーターの自動設定もできます。 +Modular AvatarのParameters コンポーネントで、ギミックが内部で使ってたり、外とやり取りするためのパラメーターを定義できます。 +衝突を避けるために名前を変更したり、同期・非同期パラメーターとその初期値を設定できます。 -Parametersコンポーネントに表示モードが二つあります。一つはアセットユーザー向けで、もう一つはアセット作者向けです。 -ユーザーがパラメーターの名前を変えたり、同期パラメーターの保存状態やデフォルト値を設定できます。 -開発者モードでは、同期モードを設定したり、ユーザーが見えないように内部パラメーターとして設定できます。 +![Parameters UI](parameters.png) -![End-user display](parameters-enduser.png) ![Developer display](parameters-devmode.png) ## いつ使うもの? -VRChatの標準パラメーター以外のパラメーターを使ったアセットを作り時は使いましょう。 +VRChatが提供するパラメーター以外の、自分で定義するパラメーターを使うギミックを作る際に使います。 ## 使い方 -### ユーザー向け +### 初期値を設定する -Parametersコンポーネントで名前かぶりを避けるためにパラメーター名を変えたり、アバター読み込みでパラメーターの値が保存されるかを設定できます。 -複数のアセットのパラメーターを同じにすることで、同じ値を共有させて、同時にアニメーションさせることができます。 -また、被る名前を変えることで干渉を避けることもできます。 そして、同期する・しないかも設定できます。 +ParametersのUIは最初はたたんだ状態でパラメーター情報を表示します。この表示では初期値と、アバター変更やワールド移動でで保存されるかを +設定できます。空以外の設定だと、Expressions Parametersに設定された初期値も上書きします。 -### プレハブ開発者向け +複数のMA Parametersで同じパラメーターが設定された場合は、初期値を空欄にするのが便利です。設定されたところだけ初期値に関与します。 +なお、複数のMA Parametersコンポーネントで同じパラメーターの初期値を設定してしまうと初期値が不定になるため注意がでます。 -自分のアセットのルートにParametersを追加し、「プレハブ開発者向け設定を表示」をクリック。アセットで使われるパラメーターのリストが表示されます。 +「保存する」設定に関しては、どれか一つのMA Parametersで有効になっている場合は保存状態となります。しかし、例外もあります。詳しくは +「入れ子にする」に参照。なお、Expressions ParametersとMA Parameters両方に定義される場合は、どちらか(あるいは両方)に「保存する」が +有効になっていると、保存される扱いとなります。 -パラメーターには以下の設定があります。 -* 内部値 - パラメーターを非表示にし、ユニークな名前に自動変更します -* PhysBones前置詞 - この値がPhysBoneのparameter欄に設定されるもので、いくつかのサブパラメーターのくくりであることを示します。 -* パラメーター型 - Expressions Parametersに登録されるかどうかと、値の型を指定します +### 名前を変更 -Parametersコンポーネントは、入れ子式(ネスト状)で使うことができます。複雑なアセットをサブプレハブから構築し、名前かぶりを避けつつ同じプレハブを複数回使ったりすることもできます。 +「名前を変更」欄に新しい名前を入れると、パラメーターのリネームができます。たとえば、「hoge」という名のパラメーターに、「piyo」という +「名前を変更」設定を入れると、MA Parametersコンポーネントのあるオブジェクトとその子では「hoge」として参照できます。その中の +[MA Menu Item](menu-item.md)、[MA Merge Animator](merge-animator.md)、VRChat Contact Receiverなどは「hoge」で扱うわけです。 +しかし、そのオブジェクトの外では、「piyo」として扱われます。 -パラメーターの名前変更は、Parametersコンポーネントと同じオブジェクトとその子に付いている、以下のコンポーネントに適用されます -* [Modular Avatar Merge Animator](merge-animator.md) -* [Modular Avatar Menu Installer](menu-installer.md) -* VRC Physics Bone -* VRC Contact Receiver -* Animator (あまり役に立たないかもしれませんが・・・) +複数のMA Parametersで名前がかぶるように設定すると、一つのギミックで別のギミックを制御するように連動させることができたりします。 +また、「自動リネーム」を設定すれば、Modular Avatarに自動的に衝突しない名前を選択してもらえます。これで意図してない名前の衝突を避ける +ことができます。 + +### パラメーターの新規作成 + +新規のパラメーターを作る方法がふたつです。まず、リストの下の「+」を押してから、作られたパラメーターの左の▶を押して、パラメーター名を +記入することです。 + +また、「未登録パラメーター」のところを開いて登録することもできます。このリストには、このオブジェクトとその子で検出されている未登録 +パラメーターがリストアップされます。「追加」を押せばワンクリックで登録できるし、虫眼鏡牡丹をクリックすると検出された場所が表示されます。 + +どのみち、パラメーターを作ったら▶を押せば詳細画面を開けます。そこで同期状態をつかさどるパラメーター型を設定したり、その他詳細設定ができます。 + +### PhysBoneやContact + +MA ParametersはVRC Phys BoneやContact Receiverコンポーネントにも対応しています。PhysBonesの場合は、VRC Phys Boneコンポーネント +の「Parameter」欄にも登録されている、前置詞をパラメーター名にしてから、「PhysBone前置詞名」を有効にしてください。なお、 +「未登録パラメーター」のリストから追加する場合は自動的に設定されます。 + +### Expression Parameters + +VRC Expression Parametersに登録する場合は、「パラメーター型」を設定してください。ネットワーク経由で同期されるようになり、 +Expressions Menu(アクションメニュー)やOSCで使えるようになります。ネットワーク同期が不要の場合は「Local Only」を設定してくささい。 + +### 入れ子にする + +MA Parametersコンポーネントは入れ子状態にできます。これで複雑なシステムを、複数のモジュールから組み上げることができます。 +MA Parametersコンポーネントはそれぞれ、その子に名前変更を施します。例えば、中のほうのMA Parametersが「hoge」→「piyo」でリネームし、 +外が「piyo」を自動リネームするとしたら、その間のオブジェクトでは「piyo」としてアクセスできます。 + +入れ子にした場合の特別の取り扱いが一部あります。 + +* 「保存する」設定は、親側で登録された設定を優先します。ただし、入れ子になってないMA Parametersで「保存する」設定が異なる場合は、 + どれか一つでも「保存する」が有効になった場合は有効になります。 +* 「初期値」設定は、親側で登録された設定を優先します。ただし、親の設定が空欄の場合は子の設定を考慮する。なお、入れ子になってない状態で + 「初期値」設定が異なる場合は初期値が不定になるため注意が表示されます。 \ No newline at end of file diff --git a/docs~/i18n/ja/docusaurus-plugin-content-docs/current/reference/parameters.png b/docs~/i18n/ja/docusaurus-plugin-content-docs/current/reference/parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..575a7bd895411abc032d5bbaab519e03cee28ccb GIT binary patch literal 58075 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 R34RZwD5oZyD`V>S{{UKHtt