use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
#[cfg(feature = "objc2-core-graphics")]
use objc2_core_graphics::*;
use crate::*;
#[doc(alias = "HIShapeRef")]
#[repr(C)]
pub struct HIShape {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
cf_type!(
unsafe impl HIShape {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
unsafe impl RefEncode<"__HIShape"> for HIShape {}
);
#[doc(alias = "HIMutableShapeRef")]
#[repr(C)]
pub struct HIMutableShape {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
cf_type!(
unsafe impl HIMutableShape: HIShape {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
unsafe impl RefEncode<"__HIShape"> for HIMutableShape {}
);
pub const kHIShapeEnumerateInit: c_uint = 1;
pub const kHIShapeEnumerateRect: c_uint = 2;
pub const kHIShapeEnumerateTerminate: c_uint = 3;
pub const kHIShapeParseFromTop: c_uint = 0;
pub const kHIShapeParseFromBottom: c_uint = 1 << 0;
pub const kHIShapeParseFromLeft: c_uint = 0;
pub const kHIShapeParseFromRight: c_uint = 1 << 1;
pub const kHIShapeParseFromTopLeft: c_uint = kHIShapeParseFromTop | kHIShapeParseFromLeft;
pub const kHIShapeParseFromBottomRight: c_uint = kHIShapeParseFromBottom | kHIShapeParseFromRight;
pub type HIShapeEnumerateProcPtr = Option<
unsafe extern "C-unwind" fn(c_int, *const HIShape, *const CGRect, *mut c_void) -> OSStatus,
>;
unsafe impl ConcreteType for HIShape {
#[doc(alias = "HIShapeGetTypeID")]
#[inline]
fn type_id() -> CFTypeID {
extern "C-unwind" {
fn HIShapeGetTypeID() -> CFTypeID;
}
unsafe { HIShapeGetTypeID() }
}
}
impl HIShape {
#[doc(alias = "HIShapeCreateEmpty")]
#[inline]
pub unsafe fn new_empty() -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateEmpty() -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateEmpty() };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "HIShapeCreateWithRect")]
#[inline]
pub unsafe fn with_rect(in_rect: *const CGRect) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateWithRect(in_rect: *const CGRect) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateWithRect(in_rect) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "HIShapeCreateCopy")]
#[inline]
pub unsafe fn copy(&self) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateCopy(in_shape: &HIShape) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateCopy(self) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "HIShapeCreateIntersection")]
#[inline]
pub unsafe fn intersection(&self, in_shape2: Option<&HIShape>) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateIntersection(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateIntersection(self, in_shape2) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "HIShapeCreateDifference")]
#[inline]
pub unsafe fn create_difference(
&self,
in_shape2: Option<&HIShape>,
) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateDifference(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateDifference(self, in_shape2) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "HIShapeCreateUnion")]
#[inline]
pub unsafe fn create_union(&self, in_shape2: Option<&HIShape>) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateUnion(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateUnion(self, in_shape2) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "HIShapeCreateXor")]
#[inline]
pub unsafe fn create_xor(&self, in_shape2: Option<&HIShape>) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateXor(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateXor(self, in_shape2) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "HIShapeIsEmpty")]
#[inline]
pub unsafe fn is_empty(&self) -> bool {
extern "C-unwind" {
fn HIShapeIsEmpty(in_shape: &HIShape) -> Boolean;
}
let ret = unsafe { HIShapeIsEmpty(self) };
ret != 0
}
#[doc(alias = "HIShapeIsRectangular")]
#[inline]
pub unsafe fn is_rectangular(&self) -> bool {
extern "C-unwind" {
fn HIShapeIsRectangular(in_shape: &HIShape) -> Boolean;
}
let ret = unsafe { HIShapeIsRectangular(self) };
ret != 0
}
#[doc(alias = "HIShapeContainsPoint")]
#[inline]
pub unsafe fn contains_point(&self, in_point: *const CGPoint) -> bool {
extern "C-unwind" {
fn HIShapeContainsPoint(in_shape: &HIShape, in_point: *const CGPoint) -> Boolean;
}
let ret = unsafe { HIShapeContainsPoint(self, in_point) };
ret != 0
}
#[doc(alias = "HIShapeIntersectsRect")]
#[inline]
pub unsafe fn intersects_rect(&self, in_rect: *const CGRect) -> bool {
extern "C-unwind" {
fn HIShapeIntersectsRect(in_shape: &HIShape, in_rect: *const CGRect) -> Boolean;
}
let ret = unsafe { HIShapeIntersectsRect(self, in_rect) };
ret != 0
}
#[doc(alias = "HIShapeGetBounds")]
#[inline]
pub unsafe fn bounds(&self, out_rect: *mut CGRect) -> *mut CGRect {
extern "C-unwind" {
fn HIShapeGetBounds(in_shape: &HIShape, out_rect: *mut CGRect) -> *mut CGRect;
}
unsafe { HIShapeGetBounds(self, out_rect) }
}
#[doc(alias = "HIShapeReplacePathInCGContext")]
#[cfg(feature = "objc2-core-graphics")]
#[inline]
pub unsafe fn replace_path_in_cg_context(&self, in_context: Option<&CGContext>) -> OSStatus {
extern "C-unwind" {
fn HIShapeReplacePathInCGContext(
in_shape: &HIShape,
in_context: Option<&CGContext>,
) -> OSStatus;
}
unsafe { HIShapeReplacePathInCGContext(self, in_context) }
}
#[doc(alias = "HIShapeEnumerate")]
#[inline]
pub unsafe fn enumerate(
&self,
in_options: OptionBits,
in_proc: HIShapeEnumerateProcPtr,
in_refcon: *mut c_void,
) -> OSStatus {
extern "C-unwind" {
fn HIShapeEnumerate(
in_shape: &HIShape,
in_options: OptionBits,
in_proc: HIShapeEnumerateProcPtr,
in_refcon: *mut c_void,
) -> OSStatus;
}
unsafe { HIShapeEnumerate(self, in_options, in_proc, in_refcon) }
}
}
impl HIMutableShape {
#[doc(alias = "HIShapeCreateMutable")]
#[inline]
pub unsafe fn new() -> Option<CFRetained<HIMutableShape>> {
extern "C-unwind" {
fn HIShapeCreateMutable() -> Option<NonNull<HIMutableShape>>;
}
let ret = unsafe { HIShapeCreateMutable() };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "HIShapeCreateMutableCopy")]
#[inline]
pub unsafe fn new_copy(in_orig: &HIShape) -> Option<CFRetained<HIMutableShape>> {
extern "C-unwind" {
fn HIShapeCreateMutableCopy(in_orig: &HIShape) -> Option<NonNull<HIMutableShape>>;
}
let ret = unsafe { HIShapeCreateMutableCopy(in_orig) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "HIShapeCreateMutableWithRect")]
#[inline]
pub unsafe fn with_rect(in_rect: *const CGRect) -> Option<CFRetained<HIMutableShape>> {
extern "C-unwind" {
fn HIShapeCreateMutableWithRect(
in_rect: *const CGRect,
) -> Option<NonNull<HIMutableShape>>;
}
let ret = unsafe { HIShapeCreateMutableWithRect(in_rect) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "HIShapeSetEmpty")]
#[inline]
pub unsafe fn set_empty(in_shape: Option<&HIMutableShape>) -> OSStatus {
extern "C-unwind" {
fn HIShapeSetEmpty(in_shape: Option<&HIMutableShape>) -> OSStatus;
}
unsafe { HIShapeSetEmpty(in_shape) }
}
#[doc(alias = "HIShapeSetWithShape")]
#[inline]
pub unsafe fn set_with_shape(
in_dest_shape: Option<&HIMutableShape>,
in_src_shape: Option<&HIShape>,
) -> OSStatus {
extern "C-unwind" {
fn HIShapeSetWithShape(
in_dest_shape: Option<&HIMutableShape>,
in_src_shape: Option<&HIShape>,
) -> OSStatus;
}
unsafe { HIShapeSetWithShape(in_dest_shape, in_src_shape) }
}
}
impl HIShape {
#[doc(alias = "HIShapeIntersect")]
#[inline]
pub unsafe fn intersect(
&self,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus {
extern "C-unwind" {
fn HIShapeIntersect(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus;
}
unsafe { HIShapeIntersect(self, in_shape2, out_result) }
}
#[doc(alias = "HIShapeDifference")]
#[inline]
pub unsafe fn difference(
&self,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus {
extern "C-unwind" {
fn HIShapeDifference(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus;
}
unsafe { HIShapeDifference(self, in_shape2, out_result) }
}
#[doc(alias = "HIShapeUnion")]
#[inline]
pub unsafe fn union(
&self,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus {
extern "C-unwind" {
fn HIShapeUnion(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus;
}
unsafe { HIShapeUnion(self, in_shape2, out_result) }
}
#[doc(alias = "HIShapeXor")]
#[inline]
pub unsafe fn xor(
&self,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus {
extern "C-unwind" {
fn HIShapeXor(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus;
}
unsafe { HIShapeXor(self, in_shape2, out_result) }
}
}
impl HIMutableShape {
#[doc(alias = "HIShapeOffset")]
#[inline]
pub unsafe fn offset(
in_shape: Option<&HIMutableShape>,
in_dx: CGFloat,
in_dy: CGFloat,
) -> OSStatus {
extern "C-unwind" {
fn HIShapeOffset(
in_shape: Option<&HIMutableShape>,
in_dx: CGFloat,
in_dy: CGFloat,
) -> OSStatus;
}
unsafe { HIShapeOffset(in_shape, in_dx, in_dy) }
}
#[doc(alias = "HIShapeInset")]
#[inline]
pub unsafe fn inset(
in_shape: Option<&HIMutableShape>,
in_dx: CGFloat,
in_dy: CGFloat,
) -> OSStatus {
extern "C-unwind" {
fn HIShapeInset(
in_shape: Option<&HIMutableShape>,
in_dx: CGFloat,
in_dy: CGFloat,
) -> OSStatus;
}
unsafe { HIShapeInset(in_shape, in_dx, in_dy) }
}
#[doc(alias = "HIShapeUnionWithRect")]
#[inline]
pub unsafe fn union_with_rect(
in_shape: Option<&HIMutableShape>,
in_rect: *const CGRect,
) -> OSStatus {
extern "C-unwind" {
fn HIShapeUnionWithRect(
in_shape: Option<&HIMutableShape>,
in_rect: *const CGRect,
) -> OSStatus;
}
unsafe { HIShapeUnionWithRect(in_shape, in_rect) }
}
}
#[deprecated = "renamed to `HIShape::new_empty`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeCreateEmpty() -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateEmpty() -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateEmpty() };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `HIShape::with_rect`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeCreateWithRect(
in_rect: *const CGRect,
) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateWithRect(in_rect: *const CGRect) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateWithRect(in_rect) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `HIShape::copy`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeCreateCopy(
in_shape: &HIShape,
) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateCopy(in_shape: &HIShape) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateCopy(in_shape) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `HIShape::intersection`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeCreateIntersection(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateIntersection(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateIntersection(in_shape1, in_shape2) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `HIShape::create_difference`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeCreateDifference(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateDifference(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateDifference(in_shape1, in_shape2) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `HIShape::create_union`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeCreateUnion(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateUnion(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateUnion(in_shape1, in_shape2) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `HIShape::create_xor`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeCreateXor(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<CFRetained<HIShape>> {
extern "C-unwind" {
fn HIShapeCreateXor(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
) -> Option<NonNull<HIShape>>;
}
let ret = unsafe { HIShapeCreateXor(in_shape1, in_shape2) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `HIShape::is_empty`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeIsEmpty(in_shape: &HIShape) -> bool {
extern "C-unwind" {
fn HIShapeIsEmpty(in_shape: &HIShape) -> Boolean;
}
let ret = unsafe { HIShapeIsEmpty(in_shape) };
ret != 0
}
#[deprecated = "renamed to `HIShape::is_rectangular`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeIsRectangular(in_shape: &HIShape) -> bool {
extern "C-unwind" {
fn HIShapeIsRectangular(in_shape: &HIShape) -> Boolean;
}
let ret = unsafe { HIShapeIsRectangular(in_shape) };
ret != 0
}
#[deprecated = "renamed to `HIShape::contains_point`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeContainsPoint(
in_shape: &HIShape,
in_point: *const CGPoint,
) -> bool {
extern "C-unwind" {
fn HIShapeContainsPoint(in_shape: &HIShape, in_point: *const CGPoint) -> Boolean;
}
let ret = unsafe { HIShapeContainsPoint(in_shape, in_point) };
ret != 0
}
#[deprecated = "renamed to `HIShape::intersects_rect`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeIntersectsRect(
in_shape: &HIShape,
in_rect: *const CGRect,
) -> bool {
extern "C-unwind" {
fn HIShapeIntersectsRect(in_shape: &HIShape, in_rect: *const CGRect) -> Boolean;
}
let ret = unsafe { HIShapeIntersectsRect(in_shape, in_rect) };
ret != 0
}
extern "C-unwind" {
#[deprecated = "renamed to `HIShape::bounds`"]
pub fn HIShapeGetBounds(in_shape: &HIShape, out_rect: *mut CGRect) -> *mut CGRect;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-graphics")]
#[deprecated = "renamed to `HIShape::replace_path_in_cg_context`"]
pub fn HIShapeReplacePathInCGContext(
in_shape: &HIShape,
in_context: Option<&CGContext>,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `HIShape::enumerate`"]
pub fn HIShapeEnumerate(
in_shape: &HIShape,
in_options: OptionBits,
in_proc: HIShapeEnumerateProcPtr,
in_refcon: *mut c_void,
) -> OSStatus;
}
#[deprecated = "renamed to `HIMutableShape::new`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeCreateMutable() -> Option<CFRetained<HIMutableShape>> {
extern "C-unwind" {
fn HIShapeCreateMutable() -> Option<NonNull<HIMutableShape>>;
}
let ret = unsafe { HIShapeCreateMutable() };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `HIMutableShape::new_copy`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeCreateMutableCopy(
in_orig: &HIShape,
) -> Option<CFRetained<HIMutableShape>> {
extern "C-unwind" {
fn HIShapeCreateMutableCopy(in_orig: &HIShape) -> Option<NonNull<HIMutableShape>>;
}
let ret = unsafe { HIShapeCreateMutableCopy(in_orig) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `HIMutableShape::with_rect`"]
#[inline]
pub unsafe extern "C-unwind" fn HIShapeCreateMutableWithRect(
in_rect: *const CGRect,
) -> Option<CFRetained<HIMutableShape>> {
extern "C-unwind" {
fn HIShapeCreateMutableWithRect(in_rect: *const CGRect) -> Option<NonNull<HIMutableShape>>;
}
let ret = unsafe { HIShapeCreateMutableWithRect(in_rect) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
extern "C-unwind" {
#[deprecated = "renamed to `HIMutableShape::set_empty`"]
pub fn HIShapeSetEmpty(in_shape: Option<&HIMutableShape>) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `HIMutableShape::set_with_shape`"]
pub fn HIShapeSetWithShape(
in_dest_shape: Option<&HIMutableShape>,
in_src_shape: Option<&HIShape>,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `HIShape::intersect`"]
pub fn HIShapeIntersect(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `HIShape::difference`"]
pub fn HIShapeDifference(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `HIShape::union`"]
pub fn HIShapeUnion(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `HIShape::xor`"]
pub fn HIShapeXor(
in_shape1: &HIShape,
in_shape2: Option<&HIShape>,
out_result: Option<&HIMutableShape>,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `HIMutableShape::offset`"]
pub fn HIShapeOffset(
in_shape: Option<&HIMutableShape>,
in_dx: CGFloat,
in_dy: CGFloat,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `HIMutableShape::inset`"]
pub fn HIShapeInset(
in_shape: Option<&HIMutableShape>,
in_dx: CGFloat,
in_dy: CGFloat,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `HIMutableShape::union_with_rect`"]
pub fn HIShapeUnionWithRect(
in_shape: Option<&HIMutableShape>,
in_rect: *const CGRect,
) -> OSStatus;
}