+#ifndef __TVOS_PROHIBITED
+ #define __TVOS_PROHIBITED
+#endif
+
+#ifndef __TVOS_AVAILABLE
+ #define __TVOS_AVAILABLE(_vers)
+#endif
+
+#ifndef __TVOS_DEPRECATED
+ #define __TVOS_DEPRECATED(_start, _dep, _msg)
+#endif
+
+
+/* for use marking APIs available info for Watch OS */
+#if defined(__has_feature)
+ #if __has_feature(attribute_availability_watchos)
+ #define __WATCHOS_UNAVAILABLE __OS_AVAILABILITY(watchos,unavailable)
+ #define __WATCHOS_PROHIBITED __OS_AVAILABILITY(watchos,unavailable)
+ #define __WATCHOS_AVAILABLE(_vers) __OS_AVAILABILITY(watchos,introduced=_vers)
+ #define __WATCHOS_DEPRECATED(_start, _dep, _msg) __WATCHOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(watchos,deprecated=_dep,_msg)
+ #endif
+#endif
+
+#ifndef __WATCHOS_UNAVAILABLE
+ #define __WATCHOS_UNAVAILABLE
+#endif
+
+#ifndef __WATCHOS_PROHIBITED
+ #define __WATCHOS_PROHIBITED
+#endif
+
+#ifndef __WATCHOS_AVAILABLE
+ #define __WATCHOS_AVAILABLE(_vers)
+#endif
+
+#ifndef __WATCHOS_DEPRECATED
+ #define __WATCHOS_DEPRECATED(_start, _dep, _msg)
+#endif
+
+
+/* for use marking APIs unavailable for swift */
+#if defined(__has_feature)
+ #if __has_feature(attribute_availability_swift)
+ #define __SWIFT_UNAVAILABLE __OS_AVAILABILITY(swift,unavailable)
+ #define __SWIFT_UNAVAILABLE_MSG(_msg) __OS_AVAILABILITY_MSG(swift,unavailable,_msg)
+ #endif
+#endif
+
+#ifndef __SWIFT_UNAVAILABLE
+ #define __SWIFT_UNAVAILABLE
+#endif
+
+#ifndef __SWIFT_UNAVAILABLE_MSG
+ #define __SWIFT_UNAVAILABLE_MSG(_msg)
+#endif
+
+#if __has_include(<AvailabilityProhibitedInternal.h>)
+ #include <AvailabilityProhibitedInternal.h>
+#endif
+
+/*
+ Macros for defining which versions/platform a given symbol can be used.
+
+ @see http://clang.llvm.org/docs/AttributeReference.html#availability
+ */
+
+/*
+ * API Introductions
+ *
+ * Use to specify the release that a particular API became available.
+ *
+ * Platform names:
+ * macos, ios, tvos, watchos
+ *
+ * Examples:
+ * __API_AVAILABLE(macos(10.10))
+ * __API_AVAILABLE(macos(10.9), ios(10.0))
+ * __API_AVAILABLE(macos(10.4), ios(8.0), watchos(2.0), tvos(10.0))
+ */
+#define __API_AVAILABLE(...) __API_AVAILABLE_GET_MACRO(__VA_ARGS__,__API_AVAILABLE4, __API_AVAILABLE3, __API_AVAILABLE2, __API_AVAILABLE1)(__VA_ARGS__)
+
+
+/*
+ * API Deprecations
+ *
+ * Use to specify the release that a particular API became unavailable.
+ *
+ * Platform names:
+ * macos, ios, tvos, watchos
+ *
+ * Examples:
+ *
+ * __API_DEPRECATED("No longer supported", macos(10.4, 10.8))
+ * __API_DEPRECATED("No longer supported", macos(10.4, 10.8), ios(2.0, 3.0), watchos(2.0, 3.0), tvos(9.0, 10.0))
+ *
+ * __API_DEPRECATED_WITH_REPLACEMENT("-setName:", tvos(10.0, 10.4), ios(9.0, 10.0))
+ * __API_DEPRECATED_WITH_REPLACEMENT("SomeClassName", macos(10.4, 10.6), watchos(2.0, 3.0))
+ */
+#define __API_DEPRECATED(...) __API_DEPRECATED_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_MSG5,__API_DEPRECATED_MSG4,__API_DEPRECATED_MSG3,__API_DEPRECATED_MSG2,__API_DEPRECATED_MSG1)(__VA_ARGS__)
+#define __API_DEPRECATED_WITH_REPLACEMENT(...) __API_DEPRECATED_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_REP5,__API_DEPRECATED_REP4,__API_DEPRECATED_REP3,__API_DEPRECATED_REP2,__API_DEPRECATED_REP1)(__VA_ARGS__)
+
+/*
+ * API Unavailability
+ * Use to specify that an API is unavailable for a particular platform.
+ *
+ * Example:
+ * __API_UNAVAILABLE(macos)
+ * __API_UNAVAILABLE(watchos, tvos)
+ */
+#define __API_UNAVAILABLE(...) __API_UNAVAILABLE_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE3,__API_UNAVAILABLE2,__API_UNAVAILABLE1)(__VA_ARGS__)