Package apple.avfaudio
Class AVSpeechSynthesizer
- java.lang.Object
-
- org.moe.natj.general.NativeObject
-
- org.moe.natj.objc.ObjCObject
-
- apple.NSObject
-
- apple.avfaudio.AVSpeechSynthesizer
-
- All Implemented Interfaces:
NSObject
public class AVSpeechSynthesizer extends NSObject
AVSpeechSynthesizer AVSpeechSynthesizer allows speaking of speech utterances with a basic queuing mechanism. Create an instance of AVSpeechSynthesizer to start generating synthesized speech by using AVSpeechUtterance objects.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceAVSpeechSynthesizer.Block_requestPersonalVoiceAuthorizationWithCompletionHandlerstatic interfaceAVSpeechSynthesizer.Block_writeUtteranceToBufferCallbackstatic interfaceAVSpeechSynthesizer.Block_writeUtteranceToBufferCallbackToMarkerCallback_1static interfaceAVSpeechSynthesizer.Block_writeUtteranceToBufferCallbackToMarkerCallback_2-
Nested classes/interfaces inherited from class apple.NSObject
NSObject.Block_accessibilityActivateBlock_ret, NSObject.Block_accessibilityActivationPointBlock_ret, NSObject.Block_accessibilityAttributedHintBlock_ret, NSObject.Block_accessibilityAttributedLabelBlock_ret, NSObject.Block_accessibilityAttributedUserInputLabelsBlock_ret, NSObject.Block_accessibilityAttributedValueBlock_ret, NSObject.Block_accessibilityContainerTypeBlock_ret, NSObject.Block_accessibilityCustomActionsBlock_ret, NSObject.Block_accessibilityCustomRotorsBlock_ret, NSObject.Block_accessibilityDecrementBlock_ret, NSObject.Block_accessibilityElementsBlock_ret, NSObject.Block_accessibilityElementsHiddenBlock_ret, NSObject.Block_accessibilityFrameBlock_ret, NSObject.Block_accessibilityHeaderElementsBlock_ret, NSObject.Block_accessibilityHintBlock_ret, NSObject.Block_accessibilityIdentifierBlock_ret, NSObject.Block_accessibilityIncrementBlock_ret, NSObject.Block_accessibilityLabelBlock_ret, NSObject.Block_accessibilityLanguageBlock_ret, NSObject.Block_accessibilityMagicTapBlock_ret, NSObject.Block_accessibilityNavigationStyleBlock_ret, NSObject.Block_accessibilityPathBlock_ret, NSObject.Block_accessibilityPerformEscapeBlock_ret, NSObject.Block_accessibilityRespondsToUserInteractionBlock_ret, NSObject.Block_accessibilityShouldGroupAccessibilityChildrenBlock_ret, NSObject.Block_accessibilityTextualContextBlock_ret, NSObject.Block_accessibilityTraitsBlock_ret, NSObject.Block_accessibilityUserInputLabelsBlock_ret, NSObject.Block_accessibilityValueBlock_ret, NSObject.Block_accessibilityViewIsModalBlock_ret, NSObject.Block_automationElementsBlock_ret, NSObject.Block_isAccessibilityElementBlock_ret, NSObject.Block_setAccessibilityActivateBlock, NSObject.Block_setAccessibilityActivationPointBlock, NSObject.Block_setAccessibilityAttributedHintBlock, NSObject.Block_setAccessibilityAttributedLabelBlock, NSObject.Block_setAccessibilityAttributedUserInputLabelsBlock, NSObject.Block_setAccessibilityAttributedValueBlock, NSObject.Block_setAccessibilityContainerTypeBlock, NSObject.Block_setAccessibilityCustomActionsBlock, NSObject.Block_setAccessibilityCustomRotorsBlock, NSObject.Block_setAccessibilityDecrementBlock, NSObject.Block_setAccessibilityElementsBlock, NSObject.Block_setAccessibilityElementsHiddenBlock, NSObject.Block_setAccessibilityFrameBlock, NSObject.Block_setAccessibilityHeaderElementsBlock, NSObject.Block_setAccessibilityHintBlock, NSObject.Block_setAccessibilityIdentifierBlock, NSObject.Block_setAccessibilityIncrementBlock, NSObject.Block_setAccessibilityLabelBlock, NSObject.Block_setAccessibilityLanguageBlock, NSObject.Block_setAccessibilityMagicTapBlock, NSObject.Block_setAccessibilityNavigationStyleBlock, NSObject.Block_setAccessibilityPathBlock, NSObject.Block_setAccessibilityPerformEscapeBlock, NSObject.Block_setAccessibilityRespondsToUserInteractionBlock, NSObject.Block_setAccessibilityShouldGroupAccessibilityChildrenBlock, NSObject.Block_setAccessibilityTextualContextBlock, NSObject.Block_setAccessibilityTraitsBlock, NSObject.Block_setAccessibilityUserInputLabelsBlock, NSObject.Block_setAccessibilityValueBlock, NSObject.Block_setAccessibilityViewIsModalBlock, NSObject.Block_setAutomationElementsBlock, NSObject.Block_setIsAccessibilityElementBlock, NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAVSpeechSynthesizer(org.moe.natj.general.Pointer peer)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static booleanaccessInstanceVariablesDirectly()static AVSpeechSynthesizeralloc()static AVSpeechSynthesizerallocWithZone(org.moe.natj.general.ptr.VoidPtr zone)static booleanautomaticallyNotifiesObserversForKey(@NotNull java.lang.String key)static voidcancelPreviousPerformRequestsWithTarget(@NotNull java.lang.Object aTarget)static voidcancelPreviousPerformRequestsWithTargetSelectorObject(@NotNull java.lang.Object aTarget, @NotNull org.moe.natj.objc.SEL aSelector, @Nullable java.lang.Object anArgument)static @NotNull NSArray<java.lang.String>classFallbacksForKeyedArchiver()static @NotNull org.moe.natj.objc.ClassclassForKeyedUnarchiver()booleancontinueSpeaking()static java.lang.StringdebugDescription_static()@Nullable AVSpeechSynthesizerDelegatedelegate()static java.lang.Stringdescription_static()static longhash_static()AVSpeechSynthesizerinit()static NSObject.Function_instanceMethodForSelector_retinstanceMethodForSelector(org.moe.natj.objc.SEL aSelector)static NSMethodSignatureinstanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)static booleaninstancesRespondToSelector(org.moe.natj.objc.SEL aSelector)booleanisPaused()booleanisSpeaking()static booleanisSubclassOfClass(org.moe.natj.objc.Class aClass)static @NotNull NSSet<java.lang.String>keyPathsForValuesAffectingValueForKey(@NotNull java.lang.String key)booleanmixToTelephonyUplink()Set to YES to send synthesized speech into an outgoing telephony audio stream.static AVSpeechSynthesizernew_objc()@Nullable NSArray<? extends AVAudioSessionChannelDescription>outputChannels()Specify the audio channels to be used for synthesized speech as described by the channel descriptions in AVAudioSession's current route.booleanpauseSpeakingAtBoundary(long boundary)static longpersonalVoiceAuthorizationStatus()Returns your app's current authorization to use personal voices.static voidrequestPersonalVoiceAuthorizationWithCompletionHandler(@NotNull AVSpeechSynthesizer.Block_requestPersonalVoiceAuthorizationWithCompletionHandler handler)Asks the user to allow your app to use personal voices for speech synthesis Call this method before performing any other tasks associated with speech synthesis using personal voices.static booleanresolveClassMethod(org.moe.natj.objc.SEL sel)static booleanresolveInstanceMethod(org.moe.natj.objc.SEL sel)voidsetDelegate(@Nullable AVSpeechSynthesizerDelegate value)voidsetDelegate_unsafe(@Nullable AVSpeechSynthesizerDelegate value)voidsetMixToTelephonyUplink(boolean value)Set to YES to send synthesized speech into an outgoing telephony audio stream.voidsetOutputChannels(@Nullable NSArray<? extends AVAudioSessionChannelDescription> value)Specify the audio channels to be used for synthesized speech as described by the channel descriptions in AVAudioSession's current route.voidsetUsesApplicationAudioSession(boolean value)The AVSpeechSynthesizer will use the AVAudioSession sharedInstance when set to YES.static voidsetVersion_static(long aVersion)voidspeakUtterance(@NotNull AVSpeechUtterance utterance)AVSpeechUtterances are queued by default.booleanstopSpeakingAtBoundary(long boundary)Call stopSpeakingAtBoundary: to interrupt current speech and clear the queue.static org.moe.natj.objc.Classsuperclass_static()booleanusesApplicationAudioSession()The AVSpeechSynthesizer will use the AVAudioSession sharedInstance when set to YES.static booleanuseStoredAccessor()Deprecated.static longversion_static()voidwriteUtteranceToBufferCallback(@NotNull AVSpeechUtterance utterance, @NotNull AVSpeechSynthesizer.Block_writeUtteranceToBufferCallback bufferCallback)Use this method to receive audio buffers that can be used to store or further process synthesized speech.voidwriteUtteranceToBufferCallbackToMarkerCallback(@NotNull AVSpeechUtterance utterance, @NotNull AVSpeechSynthesizer.Block_writeUtteranceToBufferCallbackToMarkerCallback_1 bufferCallback, @NotNull AVSpeechSynthesizer.Block_writeUtteranceToBufferCallbackToMarkerCallback_2 markerCallback)Use this method to receive audio buffers and associated metadata that can be used to store or further process synthesized speech.-
Methods inherited from class apple.NSObject
accessibilityActivate, accessibilityActivateBlock, accessibilityActivationPoint, accessibilityActivationPointBlock, accessibilityAssistiveTechnologyFocusedIdentifiers, accessibilityAttributedHint, accessibilityAttributedHintBlock, accessibilityAttributedLabel, accessibilityAttributedLabelBlock, accessibilityAttributedUserInputLabels, accessibilityAttributedUserInputLabelsBlock, accessibilityAttributedValue, accessibilityAttributedValueBlock, accessibilityContainerType, accessibilityContainerTypeBlock, accessibilityCustomActions, accessibilityCustomActionsBlock, accessibilityCustomRotors, accessibilityCustomRotorsBlock, accessibilityDecrement, accessibilityDecrementBlock, accessibilityDirectTouchOptions, accessibilityDragSourceDescriptors, accessibilityDropPointDescriptors, accessibilityElementAtIndex, accessibilityElementCount, accessibilityElementDidBecomeFocused, accessibilityElementDidLoseFocus, accessibilityElementIsFocused, accessibilityElements, accessibilityElementsBlock, accessibilityElementsHidden, accessibilityElementsHiddenBlock, accessibilityFrame, accessibilityFrameBlock, accessibilityHeaderElementsBlock, accessibilityHint, accessibilityHintBlock, accessibilityIdentifierBlock, accessibilityIncrement, accessibilityIncrementBlock, accessibilityLabel, accessibilityLabelBlock, accessibilityLanguage, accessibilityLanguageBlock, accessibilityMagicTapBlock, accessibilityNavigationStyle, accessibilityNavigationStyleBlock, accessibilityPath, accessibilityPathBlock, accessibilityPerformEscape, accessibilityPerformEscapeBlock, accessibilityPerformMagicTap, accessibilityRespondsToUserInteraction, accessibilityRespondsToUserInteractionBlock, accessibilityScroll, accessibilityShouldGroupAccessibilityChildrenBlock, accessibilityTextualContext, accessibilityTextualContextBlock, accessibilityTraits, accessibilityTraitsBlock, accessibilityUserInputLabels, accessibilityUserInputLabelsBlock, accessibilityValue, accessibilityValueBlock, accessibilityViewIsModal, accessibilityViewIsModalBlock, accessibilityZoomInAtPoint, accessibilityZoomOutAtPoint, addObserverForKeyPathOptionsContext, attemptRecoveryFromErrorOptionIndex, attemptRecoveryFromErrorOptionIndexDelegateDidRecoverSelectorContextInfo, autoContentAccessingProxy, automationElements, automationElementsBlock, awakeAfterUsingCoder, awakeFromNib, class_objc, classForCoder, classForKeyedArchiver, copy, dealloc, debugDescription, description, dictionaryWithValuesForKeys, didChangeValueForKey, didChangeValueForKeyWithSetMutationUsingObjects, didChangeValuesAtIndexesForKey, doesNotRecognizeSelector, fileManagerShouldProceedAfterError, fileManagerWillProcessPath, finalize_objc, forwardingTargetForSelector, forwardInvocation, handleQueryWithUnboundKey, handleTakeValueForUnboundKey, hash, indexOfAccessibilityElement, isAccessibilityElement, isAccessibilityElementBlock, isEqual, isKindOfClass, isMemberOfClass, isProxy, methodForSelector, methodSignatureForSelector, mutableArrayValueForKey, mutableArrayValueForKeyPath, mutableCopy, mutableOrderedSetValueForKey, mutableOrderedSetValueForKeyPath, mutableSetValueForKey, mutableSetValueForKeyPath, observationInfo, observeValueForKeyPathOfObjectChangeContext, performSelector, performSelectorInBackgroundWithObject, performSelectorOnMainThreadWithObjectWaitUntilDone, performSelectorOnMainThreadWithObjectWaitUntilDoneModes, performSelectorOnThreadWithObjectWaitUntilDone, performSelectorOnThreadWithObjectWaitUntilDoneModes, performSelectorWithObject, performSelectorWithObjectAfterDelay, performSelectorWithObjectAfterDelayInModes, performSelectorWithObjectWithObject, prepareForInterfaceBuilder, provideImageDataBytesPerRowOrigin_Size_UserInfo, removeObserverForKeyPath, removeObserverForKeyPathContext, replacementObjectForCoder, replacementObjectForKeyedArchiver, respondsToSelector, self, setAccessibilityActivateBlock, setAccessibilityActivationPoint, setAccessibilityActivationPointBlock, setAccessibilityAttributedHint, setAccessibilityAttributedHintBlock, setAccessibilityAttributedLabel, setAccessibilityAttributedLabelBlock, setAccessibilityAttributedUserInputLabels, setAccessibilityAttributedUserInputLabelsBlock, setAccessibilityAttributedValue, setAccessibilityAttributedValueBlock, setAccessibilityContainerType, setAccessibilityContainerTypeBlock, setAccessibilityCustomActions, setAccessibilityCustomActionsBlock, setAccessibilityCustomRotors, setAccessibilityCustomRotorsBlock, setAccessibilityDecrementBlock, setAccessibilityDirectTouchOptions, setAccessibilityDragSourceDescriptors, setAccessibilityDropPointDescriptors, setAccessibilityElements, setAccessibilityElementsBlock, setAccessibilityElementsHidden, setAccessibilityElementsHiddenBlock, setAccessibilityFrame, setAccessibilityFrameBlock, setAccessibilityHeaderElementsBlock, setAccessibilityHint, setAccessibilityHintBlock, setAccessibilityIdentifierBlock, setAccessibilityIncrementBlock, setAccessibilityLabel, setAccessibilityLabelBlock, setAccessibilityLanguage, setAccessibilityLanguageBlock, setAccessibilityMagicTapBlock, setAccessibilityNavigationStyle, setAccessibilityNavigationStyleBlock, setAccessibilityPath, setAccessibilityPathBlock, setAccessibilityPerformEscapeBlock, setAccessibilityRespondsToUserInteraction, setAccessibilityRespondsToUserInteractionBlock, setAccessibilityShouldGroupAccessibilityChildrenBlock, setAccessibilityTextualContext, setAccessibilityTextualContextBlock, setAccessibilityTraits, setAccessibilityTraitsBlock, setAccessibilityUserInputLabels, setAccessibilityUserInputLabelsBlock, setAccessibilityValue, setAccessibilityValueBlock, setAccessibilityViewIsModal, setAccessibilityViewIsModalBlock, setAutomationElements, setAutomationElementsBlock, setIsAccessibilityElement, setIsAccessibilityElementBlock, setNilValueForKey, setObservationInfo, setShouldGroupAccessibilityChildren, setValueForKey, setValueForKeyPath, setValueForUndefinedKey, setValuesForKeysWithDictionary, shouldGroupAccessibilityChildren, storedValueForKey, superclass, takeStoredValueForKey, takeValueForKey, takeValueForKeyPath, takeValuesFromDictionary, unableToSetNilForKey, validateValueForKeyError, validateValueForKeyPathError, valueForKey, valueForKeyPath, valueForUndefinedKey, valuesForKeys, willChangeValueForKey, willChangeValueForKeyWithSetMutationUsingObjects, willChangeValuesAtIndexesForKey
-
-
-
-
Method Detail
-
accessInstanceVariablesDirectly
public static boolean accessInstanceVariablesDirectly()
-
alloc
public static AVSpeechSynthesizer alloc()
-
allocWithZone
public static AVSpeechSynthesizer allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
-
automaticallyNotifiesObserversForKey
public static boolean automaticallyNotifiesObserversForKey(@NotNull @NotNull java.lang.String key)
-
cancelPreviousPerformRequestsWithTarget
public static void cancelPreviousPerformRequestsWithTarget(@NotNull @NotNull java.lang.Object aTarget)
-
cancelPreviousPerformRequestsWithTargetSelectorObject
public static void cancelPreviousPerformRequestsWithTargetSelectorObject(@NotNull @NotNull java.lang.Object aTarget, @NotNull @NotNull org.moe.natj.objc.SEL aSelector, @Nullable @Nullable java.lang.Object anArgument)
-
classFallbacksForKeyedArchiver
@NotNull public static @NotNull NSArray<java.lang.String> classFallbacksForKeyedArchiver()
-
classForKeyedUnarchiver
@NotNull public static @NotNull org.moe.natj.objc.Class classForKeyedUnarchiver()
-
continueSpeaking
public boolean continueSpeaking()
-
debugDescription_static
public static java.lang.String debugDescription_static()
-
delegate
@Nullable public @Nullable AVSpeechSynthesizerDelegate delegate()
-
description_static
public static java.lang.String description_static()
-
hash_static
public static long hash_static()
-
init
public AVSpeechSynthesizer init()
-
instanceMethodForSelector
public static NSObject.Function_instanceMethodForSelector_ret instanceMethodForSelector(org.moe.natj.objc.SEL aSelector)
-
instanceMethodSignatureForSelector
public static NSMethodSignature instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)
-
instancesRespondToSelector
public static boolean instancesRespondToSelector(org.moe.natj.objc.SEL aSelector)
-
isPaused
public boolean isPaused()
-
isSpeaking
public boolean isSpeaking()
-
isSubclassOfClass
public static boolean isSubclassOfClass(org.moe.natj.objc.Class aClass)
-
keyPathsForValuesAffectingValueForKey
@NotNull public static @NotNull NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey(@NotNull @NotNull java.lang.String key)
-
mixToTelephonyUplink
public boolean mixToTelephonyUplink()
Set to YES to send synthesized speech into an outgoing telephony audio stream. If there's no active call, setting this property has no effect. API-Since: 13.0
-
new_objc
public static AVSpeechSynthesizer new_objc()
-
outputChannels
@Nullable public @Nullable NSArray<? extends AVAudioSessionChannelDescription> outputChannels()
Specify the audio channels to be used for synthesized speech as described by the channel descriptions in AVAudioSession's current route. Speech audio will be replicated to each specified channel. Default is nil, which implies system defaults. API-Since: 10.0
-
pauseSpeakingAtBoundary
public boolean pauseSpeakingAtBoundary(long boundary)
-
resolveClassMethod
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
-
resolveInstanceMethod
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
-
setDelegate_unsafe
public void setDelegate_unsafe(@Nullable @Nullable AVSpeechSynthesizerDelegate value)
-
setDelegate
public void setDelegate(@Nullable @Nullable AVSpeechSynthesizerDelegate value)
-
setMixToTelephonyUplink
public void setMixToTelephonyUplink(boolean value)
Set to YES to send synthesized speech into an outgoing telephony audio stream. If there's no active call, setting this property has no effect. API-Since: 13.0
-
setOutputChannels
public void setOutputChannels(@Nullable @Nullable NSArray<? extends AVAudioSessionChannelDescription> value)Specify the audio channels to be used for synthesized speech as described by the channel descriptions in AVAudioSession's current route. Speech audio will be replicated to each specified channel. Default is nil, which implies system defaults. API-Since: 10.0
-
setUsesApplicationAudioSession
public void setUsesApplicationAudioSession(boolean value)
The AVSpeechSynthesizer will use the AVAudioSession sharedInstance when set to YES. The AVSpeechSynthesizer will use a separate AVAudioSession for playback when set to NO. Additionally, the audio session will mix and duck other audio, and its active state will be managed automatically. The separate audio session will use AVAudioSessionRouteSharingPolicyDefault, which means that it may have a different route from the app’s shared instance session. Default is YES. API-Since: 13.0
-
setVersion_static
public static void setVersion_static(long aVersion)
-
speakUtterance
public void speakUtterance(@NotNull @NotNull AVSpeechUtterance utterance)AVSpeechUtterances are queued by default. Enqueing the same AVSpeechUtterance that is already enqueued or is speaking will raise an exception.
-
stopSpeakingAtBoundary
public boolean stopSpeakingAtBoundary(long boundary)
Call stopSpeakingAtBoundary: to interrupt current speech and clear the queue.
-
superclass_static
public static org.moe.natj.objc.Class superclass_static()
-
usesApplicationAudioSession
public boolean usesApplicationAudioSession()
The AVSpeechSynthesizer will use the AVAudioSession sharedInstance when set to YES. The AVSpeechSynthesizer will use a separate AVAudioSession for playback when set to NO. Additionally, the audio session will mix and duck other audio, and its active state will be managed automatically. The separate audio session will use AVAudioSessionRouteSharingPolicyDefault, which means that it may have a different route from the app’s shared instance session. Default is YES. API-Since: 13.0
-
version_static
public static long version_static()
-
writeUtteranceToBufferCallback
public void writeUtteranceToBufferCallback(@NotNull @NotNull AVSpeechUtterance utterance, @NotNull @NotNull AVSpeechSynthesizer.Block_writeUtteranceToBufferCallback bufferCallback)Use this method to receive audio buffers that can be used to store or further process synthesized speech. The dictionary provided by -[AVSpeechSynthesisVoice audioFileSettings] can be used to create an AVAudioFile. API-Since: 13.0
-
writeUtteranceToBufferCallbackToMarkerCallback
public void writeUtteranceToBufferCallbackToMarkerCallback(@NotNull @NotNull AVSpeechUtterance utterance, @NotNull @NotNull AVSpeechSynthesizer.Block_writeUtteranceToBufferCallbackToMarkerCallback_1 bufferCallback, @NotNull @NotNull AVSpeechSynthesizer.Block_writeUtteranceToBufferCallbackToMarkerCallback_2 markerCallback)Use this method to receive audio buffers and associated metadata that can be used to store or further process synthesized speech. The dictionary provided by -[AVSpeechSynthesisVoice audioFileSettings] can be used to create an AVAudioFile. API-Since: 16.0
-
personalVoiceAuthorizationStatus
public static long personalVoiceAuthorizationStatus()
Returns your app's current authorization to use personal voices. The user can reject your app's request to use personal voices, but your request can also be denied if personal voices are not supported on the device. The app can also change your app's authorization status at any time from the Settings app. [@Returns] The app's current authorization status value. For a list of values, see AVSpeechSynthesisPersonalVoiceAuthorizationStatus. API-Since: 17.0
-
requestPersonalVoiceAuthorizationWithCompletionHandler
public static void requestPersonalVoiceAuthorizationWithCompletionHandler(@NotNull @NotNull AVSpeechSynthesizer.Block_requestPersonalVoiceAuthorizationWithCompletionHandler handler)Asks the user to allow your app to use personal voices for speech synthesis Call this method before performing any other tasks associated with speech synthesis using personal voices. This method executes asynchronously, returning shortly after you call it. At some point later, the system calls the provided handler block with the results. When your app's authorization status is PersonalVoiceAuthorizationStatus.notDetermined, this method causes the system to prompt the user to grant or deny permission for your app to use personal voices. The user's response is saved so that future calls to this method do not prompt the user again. API-Since: 17.0
-
useStoredAccessor
@Deprecated public static boolean useStoredAccessor()
Deprecated.
-
-