text: //
  //     Generated by class-dump 3.5 (64 bit).
  //
  //     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
  //
  
  #pragma mark Blocks
  
  typedef void (^CDUnknownBlockType)(void); // return type and parameters are unknown
  
  #pragma mark Named Structures
  
  struct CGPoint {
      double x;
      double y;
  };
  
  struct CGRect {
      struct CGPoint _field1;
      struct CGSize _field2;
  };
  
  struct CGSize {
      double width;
      double height;
  };
  
  struct CHCandidateResult {
      unsigned int _field1;
      float _field2;
  };
  
  struct CHNeuralNetwork {
      CDUnknownFunctionPointerType *_field1;
      int _field2;
      char *_field3;
      unsigned long long _field4;
      unsigned int *_field5;
      unsigned int _field6;
      unsigned int _field7;
      unsigned int _field8;
      unsigned int _field9;
      unsigned int _field10;
  };
  
  struct CJKChar {
      struct vector<std::__1::vector<double, std::__1::allocator<double>>, std::__1::allocator<std::__1::vector<double, std::__1::allocator<double>>>> strokes;
      unsigned long long currentStrokeIndex;
      unsigned int mSize;
      struct Matrix<double> bitmap;
      double lineHeight;
  };
  
  struct Hanzi {
      struct vector<std::__1::vector<Coord, std::__1::allocator<Coord>>, std::__1::allocator<std::__1::vector<Coord, std::__1::allocator<Coord>>>> _field1;
  };
  
  struct Matrix<double> {
      CDUnknownFunctionPointerType *_vptr$Matrix;
      double *_data;
      unsigned int _w;
      unsigned int _h;
  };
  
  struct Matrix<float> {
      CDUnknownFunctionPointerType *_field1;
      float *_field2;
      unsigned int _field3;
      unsigned int _field4;
  };
  
  struct Network {
      unsigned int _field1;
      unsigned int _field2;
      struct basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> _field3;
      unsigned int _field4;
      struct vector<NetworkNode, std::__1::allocator<NetworkNode>> _field5;
      struct vector<NetworkEdge, std::__1::allocator<NetworkEdge>> _field6;
      struct vector<const NetworkEdge *, std::__1::allocator<const NetworkEdge *>> _field7;
      struct SymbolMap _field8;
      struct map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>> _field9;
      _Bool _field10;
      _Bool _field11;
      float *_field12[2];
      struct map<unsigned int, std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>>, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>>>>> _field13;
      struct set<uint128, std::__1::less<uint128>, std::__1::allocator<uint128>> _field14;
  };
  
  struct NetworkEdge;
  
  struct NetworkNode;
  
  struct SymbolMap {
      CDUnknownFunctionPointerType *_field1;
      struct vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char>>> _field2;
      struct map<std::__1::basic_string<char>, int, std::__1::less<std::__1::basic_string<char>>, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, int>>> _field3;
  };
  
  struct VariantMap {
      int *_field1;
      int *_field2;
      int *_field3;
      int _field4;
      int *_field5;
      unsigned long long _field6;
  };
  
  struct _NSRange {
      unsigned long long _field1;
      unsigned long long _field2;
  };
  
  struct __tree_end_node<std::__1::__tree_node_base<void *>*> {
      struct __tree_node_base<void *> *__left_;
  };
  
  struct basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> {
      struct __compressed_pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__rep, std::__1::allocator<char>> {
          struct __rep {
              union {
                  struct __long {
                      unsigned long long _field1;
                      unsigned long long _field2;
                      char *_field3;
                  } _field1;
                  struct __short {
                      union {
                          unsigned char _field1;
                          char _field2;
                      } _field1;
                      char _field2[23];
                  } _field2;
                  struct __raw {
                      unsigned long long _field1[3];
                  } _field3;
              } _field1;
          } _field1;
      } _field1;
  };
  
  struct map<std::__1::basic_string<char>, int, std::__1::less<std::__1::basic_string<char>>, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, int>>> {
      struct __tree<std::__1::__value_type<std::__1::basic_string<char>, int>, std::__1::__map_value_compare<std::__1::basic_string<char>, std::__1::__value_type<std::__1::basic_string<char>, int>, std::__1::less<std::__1::basic_string<char>>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char>, int>>> {
          struct __tree_node<std::__1::__value_type<std::__1::basic_string<char>, int>, void *> *_field1;
          struct __compressed_pair<std::__1::__tree_end_node<std::__1::__tree_node_base<void *>*>, std::__1::allocator<std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char>, int>, void *>>> {
              struct __tree_end_node<std::__1::__tree_node_base<void *>*> _field1;
          } _field2;
          struct __compressed_pair<unsigned long, std::__1::__map_value_compare<std::__1::basic_string<char>, std::__1::__value_type<std::__1::basic_string<char>, int>, std::__1::less<std::__1::basic_string<char>>, true>> {
              unsigned long long _field1;
          } _field3;
      } _field1;
  };
  
  struct map<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>, std::__1::less<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>>, std::__1::allocator<std::__1::pair<const std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>>> {
      struct __tree<std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>, std::__1::__map_value_compare<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>, std::__1::less<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>>, true>, std::__1::allocator<std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>>> {
          struct __tree_node<std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>, void *> *__begin_node_;
          struct __compressed_pair<std::__1::__tree_end_node<std::__1::__tree_node_base<void *>*>, std::__1::allocator<std::__1::__tree_node<std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>, void *>>> {
              struct __tree_end_node<std::__1::__tree_node_base<void *>*> __first_;
          } __pair1_;
          struct __compressed_pair<unsigned long, std::__1::__map_value_compare<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>, std::__1::less<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>>, true>> {
              unsigned long long __first_;
          } __pair3_;
      } __tree_;
  };
  
  struct map<unsigned int, std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>>, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>>>>> {
      struct __tree<std::__1::__value_type<unsigned int, std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>>>, std::__1::__map_value_compare<unsigned int, std::__1::__value_type<unsigned int, std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>>>, std::__1::less<unsigned int>, true>, std::__1::allocator<std::__1::__value_type<unsigned int, std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>>>>> {
          struct __tree_node<std::__1::__value_type<unsigned int, std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>>>, void *> *_field1;
          struct __compressed_pair<std::__1::__tree_end_node<std::__1::__tree_node_base<void *>*>, std::__1::allocator<std::__1::__tree_node<std::__1::__value_type<unsigned int, std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>>>, void *>>> {
              struct __tree_end_node<std::__1::__tree_node_base<void *>*> _field1;
          } _field2;
          struct __compressed_pair<unsigned long, std::__1::__map_value_compare<unsigned int, std::__1::__value_type<unsigned int, std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>>>, std::__1::less<unsigned int>, true>> {
              unsigned long long _field1;
          } _field3;
      } _field1;
  };
  
  struct map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<const unsigned int, unsigned int>>> {
      struct __tree<std::__1::__value_type<unsigned int, unsigned int>, std::__1::__map_value_compare<unsigned int, std::__1::__value_type<unsigned int, unsigned int>, std::__1::less<unsigned int>, true>, std::__1::allocator<std::__1::__value_type<unsigned int, unsigned int>>> {
          struct __tree_node<std::__1::__value_type<unsigned int, unsigned int>, void *> *_field1;
          struct __compressed_pair<std::__1::__tree_end_node<std::__1::__tree_node_base<void *>*>, std::__1::allocator<std::__1::__tree_node<std::__1::__value_type<unsigned int, unsigned int>, void *>>> {
              struct __tree_end_node<std::__1::__tree_node_base<void *>*> _field1;
          } _field2;
          struct __compressed_pair<unsigned long, std::__1::__map_value_compare<unsigned int, std::__1::__value_type<unsigned int, unsigned int>, std::__1::less<unsigned int>, true>> {
              unsigned long long _field1;
          } _field3;
      } _field1;
  };
  
  struct set<uint128, std::__1::less<uint128>, std::__1::allocator<uint128>> {
      struct __tree<uint128, std::__1::less<uint128>, std::__1::allocator<uint128>> {
          struct __tree_node<uint128, void *> *_field1;
          struct __compressed_pair<std::__1::__tree_end_node<std::__1::__tree_node_base<void *>*>, std::__1::allocator<std::__1::__tree_node<uint128, void *>>> {
              struct __tree_end_node<std::__1::__tree_node_base<void *>*> _field1;
          } _field2;
          struct __compressed_pair<unsigned long, std::__1::less<uint128>> {
              unsigned long long _field1;
          } _field3;
      } _field1;
  };
  
  struct vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>> {
      struct CHCandidateResult *_field1;
      struct CHCandidateResult *_field2;
      struct __compressed_pair<CHCandidateResult *, std::__1::allocator<CHCandidateResult>> {
          struct CHCandidateResult *_field1;
      } _field3;
  };
  
  struct vector<Coord, std::__1::allocator<Coord>>;
  
  struct vector<NetworkEdge, std::__1::allocator<NetworkEdge>> {
      struct NetworkEdge *_field1;
      struct NetworkEdge *_field2;
      struct __compressed_pair<NetworkEdge *, std::__1::allocator<NetworkEdge>> {
          struct NetworkEdge *_field1;
      } _field3;
  };
  
  struct vector<NetworkNode, std::__1::allocator<NetworkNode>> {
      struct NetworkNode *_field1;
      struct NetworkNode *_field2;
      struct __compressed_pair<NetworkNode *, std::__1::allocator<NetworkNode>> {
          struct NetworkNode *_field1;
      } _field3;
  };
  
  struct vector<const NetworkEdge *, std::__1::allocator<const NetworkEdge *>> {
      struct NetworkEdge **_field1;
      struct NetworkEdge **_field2;
      struct __compressed_pair<const NetworkEdge **, std::__1::allocator<const NetworkEdge *>> {
          struct NetworkEdge **_field1;
      } _field3;
  };
  
  struct vector<const void *, std::__1::allocator<const void *>> {
      void **_field1;
      void **_field2;
      struct __compressed_pair<const void **, std::__1::allocator<const void *>> {
          void **_field1;
      } _field3;
  };
  
  struct vector<double, std::__1::allocator<double>>;
  
  struct vector<int, std::__1::allocator<int>> {
      int *_field1;
      int *_field2;
      struct __compressed_pair<int *, std::__1::allocator<int>> {
          int *_field1;
      } _field3;
  };
  
  struct vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char>>> {
      struct basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> *_field1;
      struct basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> *_field2;
      struct __compressed_pair<std::__1::basic_string<char>*, std::__1::allocator<std::__1::basic_string<char>>> {
          struct basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> *_field1;
      } _field3;
  };
  
  struct vector<std::__1::vector<Coord, std::__1::allocator<Coord>>, std::__1::allocator<std::__1::vector<Coord, std::__1::allocator<Coord>>>> {
      struct vector<Coord, std::__1::allocator<Coord>> *_field1;
      struct vector<Coord, std::__1::allocator<Coord>> *_field2;
      struct __compressed_pair<std::__1::vector<Coord, std::__1::allocator<Coord>>*, std::__1::allocator<std::__1::vector<Coord, std::__1::allocator<Coord>>>> {
          struct vector<Coord, std::__1::allocator<Coord>> *_field1;
      } _field3;
  };
  
  struct vector<std::__1::vector<double, std::__1::allocator<double>>, std::__1::allocator<std::__1::vector<double, std::__1::allocator<double>>>> {
      struct vector<double, std::__1::allocator<double>> *__begin_;
      struct vector<double, std::__1::allocator<double>> *__end_;
      struct __compressed_pair<std::__1::vector<double, std::__1::allocator<double>>*, std::__1::allocator<std::__1::vector<double, std::__1::allocator<double>>>> {
          struct vector<double, std::__1::allocator<double>> *__first_;
      } __end_cap_;
  };
  
  struct vector<unsigned long, std::__1::allocator<unsigned long>> {
      unsigned long long *_field1;
      unsigned long long *_field2;
      struct __compressed_pair<unsigned long *, std::__1::allocator<unsigned long>> {
          unsigned long long *_field1;
      } _field3;
  };
  
  #pragma mark Typedef'd Structures
  
  // Template types
  typedef struct Matrix<float> {
      CDUnknownFunctionPointerType *_field1;
      float *_field2;
      unsigned int _field3;
      unsigned int _field4;
  } Matrix_273a43f8;
  
  typedef struct map<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>, std::__1::less<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>>, std::__1::allocator<std::__1::pair<const std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>>> {
      struct __tree<std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>, std::__1::__map_value_compare<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>, std::__1::less<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>>, true>, std::__1::allocator<std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>>> {
          struct __tree_node<std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>, void *> *__begin_node_;
          struct __compressed_pair<std::__1::__tree_end_node<std::__1::__tree_node_base<void *>*>, std::__1::allocator<std::__1::__tree_node<std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>, void *>>> {
              struct __tree_end_node<std::__1::__tree_node_base<void *>*> __first_;
          } __pair1_;
          struct __compressed_pair<unsigned long, std::__1::__map_value_compare<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::__value_type<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>, std::__1::vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>>>, std::__1::less<std::__1::set<unsigned long, std::__1::less<unsigned long>, std::__1::allocator<unsigned long>>>, true>> {
              unsigned long long __first_;
          } __pair3_;
      } __tree_;
  } map_6bca5f83;
  
  typedef struct vector<CHCandidateResult, std::__1::allocator<CHCandidateResult>> {
      struct CHCandidateResult *_field1;
      struct CHCandidateResult *_field2;
      struct __compressed_pair<CHCandidateResult *, std::__1::allocator<CHCandidateResult>> {
          struct CHCandidateResult *_field1;
      } _field3;
  } vector_06f11b7b;
  
  typedef struct vector<const void *, std::__1::allocator<const void *>> {
      void **_field1;
      void **_field2;
      struct __compressed_pair<const void **, std::__1::allocator<const void *>> {
          void **_field1;
      } _field3;
  } vector_de520796;
  
  typedef struct vector<int, std::__1::allocator<int>> {
      int *_field1;
      int *_field2;
      struct __compressed_pair<int *, std::__1::allocator<int>> {
          int *_field1;
      } _field3;
  } vector_3203cf93;
  
  typedef struct vector<unsigned long, std::__1::allocator<unsigned long>> {
      unsigned long long *_field1;
      unsigned long long *_field2;
      struct __compressed_pair<unsigned long *, std::__1::allocator<unsigned long>> {
          unsigned long long *_field1;
      } _field3;
  } vector_eb9481f9;
  
  #pragma mark -
  
  //
  // File: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/CoreHandwriting.framework/CoreHandwriting
  // UUID: ED1E2C6F-239E-3C34-9DBE-3339ECE87EB6
  //
  //                           Arch: x86_64
  //                Current version: 0.0.0
  //          Compatibility version: 1.0.0
  //                 Source version: 150.0.0.0.0
  //            Minimum iOS version: 8.0.0
  //                    SDK version: 8.0.0
  //
  // Objective-C Garbage Collection: Unsupported
  //
  
  @protocol NSCopying
  - (id)copyWithZone:(struct _NSZone *)arg1;
  @end
  
  @interface CHPointFIFO : NSObject
  {
      CHPointFIFO *_nextFIFO;
  }
  
  @property(retain, nonatomic) CHPointFIFO *nextFIFO; // @synthesize nextFIFO=_nextFIFO;
  - (void)clear;
  - (void)flush;
  - (void)addPoint:(struct CGPoint)arg1;
  - (void)emitPoint:(struct CGPoint)arg1;
  - (void)dealloc;
  - (id)initWithFIFO:(id)arg1;
  
  @end
  
  @interface CHBoxcarFilterPointFIFO : CHPointFIFO
  {
      NSMutableArray *_prevPoints;
      unsigned long long _width;
  }
  
  @property(nonatomic) unsigned long long width; // @synthesize width=_width;
  @property(retain, nonatomic) NSMutableArray *prevPoints; // @synthesize prevPoints=_prevPoints;
  - (void)clear;
  - (void)flush;
  - (void)addPoint:(struct CGPoint)arg1;
  - (void)emitAveragedPoint;
  - (void)dealloc;
  - (id)initWithFIFO:(id)arg1 width:(unsigned long long)arg2;
  
  @end
  
  @interface CHRecognitionResult : NSObject
  {
      double _score;
  }
  
  @property double score; // @synthesize score=_score;
  - (id)initWithScore:(double)arg1;
  - (id)description;
  
  @end
  
  @interface CHSketchRecognitionResult : CHRecognitionResult
  {
      NSString *_string;
      double _rotation;
  }
  
  @property(readonly) double rotation; // @synthesize rotation=_rotation;
  @property(readonly) NSString *string; // @synthesize string=_string;
  - (void)dealloc;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3;
  
  @end
  
  @interface CHEllipseRecognitionResult : CHSketchRecognitionResult
  {
      struct CGPoint _center;
      struct CGSize _size;
  }
  
  @property(readonly) struct CGSize size; // @synthesize size=_size;
  @property(readonly) struct CGPoint center; // @synthesize center=_center;
  - (id).cxx_construct;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3 center:(struct CGPoint)arg4 size:(struct CGSize)arg5;
  
  @end
  
  @interface CHChatBubbleRecognitionResult : CHEllipseRecognitionResult
  {
      double _stemWidth;
      struct CGPoint _stemLocation;
  }
  
  @property(readonly) double stemWidth; // @synthesize stemWidth=_stemWidth;
  @property(readonly) struct CGPoint stemLocation; // @synthesize stemLocation=_stemLocation;
  - (id).cxx_construct;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3 center:(struct CGPoint)arg4 size:(struct CGSize)arg5 stemLocation:(struct CGPoint)arg6 stemWidth:(double)arg7;
  
  @end
  
  @interface CHDrawing : NSObject <NSCopying>
  {
      struct CJKChar _drawing;
  }
  
  @property(nonatomic) struct CJKChar drawing; // @synthesize drawing=_drawing;
  - (id).cxx_construct;
  - (void).cxx_destruct;
  - (id)copyWithZone:(struct _NSZone *)arg1;
  - (void)setLineHeight:(double)arg1;
  - (vector_eb9481f9)strokeIndicesSortedByMinXCoordinate;
  - (id)sortedDrawing;
  - (Matrix_273a43f8)orientationRepresentationForSampling:(unsigned long long)arg1 convolutionWidth:(unsigned long long)arg2;
  - (Matrix_273a43f8)bitmapRepresentationForSize:(struct CGSize)arg1 drawingAlgorithm:(int)arg2;
  - (Matrix_273a43f8)bitmapRepresentationForSize:(struct CGSize)arg1;
  - (id)xyRepresentation;
  - (struct _NSRange)matchingStrokePrefixRangeForDrawing:(id)arg1;
  - (_Bool)isPrefixForDrawing:(id)arg1;
  - (void)clear;
  - (void)endStroke;
  - (void)addPoint:(struct CGPoint)arg1;
  - (struct CGRect)bounds;
  - (unsigned long long)strokeCount;
  - (struct CGPoint)pointForStrokeIndex:(unsigned long long)arg1 pointIndex:(unsigned long long)arg2;
  - (unsigned long long)pointCountForStrokeIndex:(unsigned long long)arg1;
  - (unsigned long long)pointCount;
  - (id)initWithContentsOfFile:(id)arg1;
  
  @end
  
  @interface CHHeartRecognitionResult : CHSketchRecognitionResult
  {
      struct CGPoint _center;
      struct CGSize _size;
  }
  
  @property(readonly) struct CGSize size; // @synthesize size=_size;
  @property(readonly) struct CGPoint center; // @synthesize center=_center;
  - (id).cxx_construct;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3 center:(struct CGPoint)arg4 size:(struct CGSize)arg5;
  
  @end
  
  @interface CHLineSketchRecognitionResult : CHSketchRecognitionResult
  {
      int _startEndpointType;
      int _endEndpointType;
      struct CGPoint _startLocation;
      struct CGPoint _endLocation;
      struct CGPoint _midpointLocation;
      struct CGPoint _controlPoint;
  }
  
  @property(readonly) struct CGPoint controlPoint; // @synthesize controlPoint=_controlPoint;
  @property(readonly) struct CGPoint midpointLocation; // @synthesize midpointLocation=_midpointLocation;
  @property(readonly) struct CGPoint endLocation; // @synthesize endLocation=_endLocation;
  @property(readonly) struct CGPoint startLocation; // @synthesize startLocation=_startLocation;
  @property(readonly) int endEndpointType; // @synthesize endEndpointType=_endEndpointType;
  @property(readonly) int startEndpointType; // @synthesize startEndpointType=_startEndpointType;
  - (id).cxx_construct;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3 startLocation:(struct CGPoint)arg4 startEndpointType:(int)arg5 endLocation:(struct CGPoint)arg6 endEndpointType:(int)arg7 midPointLocation:(struct CGPoint)arg8 controlPointLocation:(struct CGPoint)arg9;
  
  @end
  
  @interface CHOutlinedArrowSketchRecognitionResult : CHSketchRecognitionResult
  {
      struct CGPoint _center;
      struct CGSize _size;
      struct CGPoint _controlPoint;
  }
  
  @property(readonly) struct CGPoint controlPoint; // @synthesize controlPoint=_controlPoint;
  @property(readonly) struct CGSize size; // @synthesize size=_size;
  @property(readonly) struct CGPoint center; // @synthesize center=_center;
  - (id).cxx_construct;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3 center:(struct CGPoint)arg4 size:(struct CGSize)arg5 controlPointLocation:(struct CGPoint)arg6;
  
  @end
  
  @interface CHPentagonRecognitionResult : CHSketchRecognitionResult
  {
      struct CGPoint _center;
      struct CGSize _size;
  }
  
  @property(readonly) struct CGSize size; // @synthesize size=_size;
  @property(readonly) struct CGPoint center; // @synthesize center=_center;
  - (id).cxx_construct;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3 center:(struct CGPoint)arg4 size:(struct CGSize)arg5;
  
  @end
  
  @interface CHPointStrokeFIFO : CHPointFIFO
  {
      CHDrawing *_strokes;
  }
  
  @property(retain, nonatomic) CHDrawing *strokes; // @synthesize strokes=_strokes;
  - (void)clear;
  - (void)flush;
  - (void)addPoint:(struct CGPoint)arg1;
  - (void)dealloc;
  - (id)initWithFIFO:(id)arg1;
  
  @end
  
  @interface CHQuadCurvePointFIFO : CHPointFIFO
  {
      NSMutableArray *_prevPoints;
      struct CGPath *_path;
      double _lineWidth;
      UIView *_view;
  }
  
  @property(retain, nonatomic) UIView *view; // @synthesize view=_view;
  @property(nonatomic) double lineWidth; // @synthesize lineWidth=_lineWidth;
  @property(nonatomic) struct CGPath *path; // @synthesize path=_path;
  @property(retain, nonatomic) NSMutableArray *prevPoints; // @synthesize prevPoints=_prevPoints;
  - (void)clear;
  - (void)flush;
  - (void)addPoint:(struct CGPoint)arg1;
  - (void)dealloc;
  - (id)initWithFIFO:(id)arg1 strokeView:(id)arg2;
  
  @end
  
  @interface CHRecognizer : NSObject
  {
      _Bool _saveDrawingUntilNextCandidateAccepted;
      int _recognitionType;
      int _recognitionMode;
      unsigned long long _maxRecognitionResultCount;
      NSCharacterSet *_activeCharacterSet;
      struct CHNeuralNetwork *_engine;
      NSObject<OS_dispatch_queue> *_recognitionQueue;
      struct Network *_radicalClusterFST;
      struct Network *_formatGrammarFST;
      struct __LMCharacterNgramModel *_characterLanguageModel;
      struct __Mecabra *_mecabra;
      void *_mecabraStaticLexicon;
      void *_mecabraDynamicLexicon;
      NSURL *_learningDictionaryURL;
      CHDrawing *_savedDrawing;
      NSString *_savedTop1CandidateString;
      CHDrawing *_cachedDrawing;
      struct VariantMap *_scVariantMap;
      struct VariantMap *_tcVariantMap;
      void **_icuTransliterator;
      unsigned long long _lastCharacterStrokeCount;
      NSMutableIndexSet *_lastCharacterStrokeIndexes;
      struct CGSize _minimumDrawingSize;
      map_6bca5f83 _cachedResults;
  }
  
  + (id)defaultPunctuationResultsForRecognitionType:(int)arg1;
  @property(nonatomic) NSMutableIndexSet *lastCharacterStrokeIndexes; // @synthesize lastCharacterStrokeIndexes=_lastCharacterStrokeIndexes;
  @property(nonatomic) unsigned long long lastCharacterStrokeCount; // @synthesize lastCharacterStrokeCount=_lastCharacterStrokeCount;
  @property(nonatomic) void **icuTransliterator; // @synthesize icuTransliterator=_icuTransliterator;
  @property(nonatomic) struct VariantMap *tcVariantMap; // @synthesize tcVariantMap=_tcVariantMap;
  @property(nonatomic) struct VariantMap *scVariantMap; // @synthesize scVariantMap=_scVariantMap;
  @property(nonatomic) map_6bca5f83 cachedResults; // @synthesize cachedResults=_cachedResults;
  @property(copy, nonatomic) CHDrawing *cachedDrawing; // @synthesize cachedDrawing=_cachedDrawing;
  @property(nonatomic) _Bool saveDrawingUntilNextCandidateAccepted; // @synthesize saveDrawingUntilNextCandidateAccepted=_saveDrawingUntilNextCandidateAccepted;
  @property(copy, nonatomic) NSString *savedTop1CandidateString; // @synthesize savedTop1CandidateString=_savedTop1CandidateString;
  @property(copy, nonatomic) CHDrawing *savedDrawing; // @synthesize savedDrawing=_savedDrawing;
  @property(retain, nonatomic) NSURL *learningDictionaryURL; // @synthesize learningDictionaryURL=_learningDictionaryURL;
  @property(nonatomic) void *mecabraDynamicLexicon; // @synthesize mecabraDynamicLexicon=_mecabraDynamicLexicon;
  @property(nonatomic) void *mecabraStaticLexicon; // @synthesize mecabraStaticLexicon=_mecabraStaticLexicon;
  @property(nonatomic) struct __Mecabra *mecabra; // @synthesize mecabra=_mecabra;
  @property(nonatomic) struct __LMCharacterNgramModel *characterLanguageModel; // @synthesize characterLanguageModel=_characterLanguageModel;
  @property(nonatomic) struct Network *formatGrammarFST; // @synthesize formatGrammarFST=_formatGrammarFST;
  @property(nonatomic) struct Network *radicalClusterFST; // @synthesize radicalClusterFST=_radicalClusterFST;
  @property(readonly, nonatomic) struct CGSize minimumDrawingSize; // @synthesize minimumDrawingSize=_minimumDrawingSize;
  @property(nonatomic) NSObject<OS_dispatch_queue> *recognitionQueue; // @synthesize recognitionQueue=_recognitionQueue;
  @property(nonatomic) struct CHNeuralNetwork *engine; // @synthesize engine=_engine;
  @property(retain, nonatomic) NSCharacterSet *activeCharacterSet; // @synthesize activeCharacterSet=_activeCharacterSet;
  @property(nonatomic) int recognitionMode; // @synthesize recognitionMode=_recognitionMode;
  @property(nonatomic) int recognitionType; // @synthesize recognitionType=_recognitionType;
  @property(nonatomic) unsigned long long maxRecognitionResultCount; // @synthesize maxRecognitionResultCount=_maxRecognitionResultCount;
  - (id).cxx_construct;
  - (void).cxx_destruct;
  - (void)rescoreCandidatesWithLangaugeModel:(vector_06f11b7b *)arg1 history:(id)arg2;
  - (void)applyTransliterationAndSyntheticCandidates:(vector_06f11b7b *)arg1;
  - (id)applySentenceTransliterationCandidates:(unsigned short *)arg1 codesLen:(int)arg2 codesMax:(int)arg3;
  - (id)recognitionResultsForDrawing:(id)arg1 options:(id)arg2;
  - (id)recognitionResultsForDrawing:(id)arg1 options:(id)arg2 shouldCancel:(CDUnknownBlockType)arg3;
  - (id)recognitionResultsForMultipleCharacterDrawing:(id)arg1 sortedStrokeIndices:(vector_eb9481f9 *)arg2 network:(struct Network *)arg3 options:(id)arg4 ch:(struct Hanzi *)arg5 shouldCancel:(CDUnknownBlockType)arg6;
  - (id)bestNetworkPaths:(struct Network *)arg1 count:(unsigned long long)arg2 mecabraIDs:(vector_3203cf93 *)arg3;
  - (id)recognitionResultsForSingleCharacterDrawing:(id)arg1 options:(id)arg2;
  - (id)recognitionResultsForSketchDrawing:(id)arg1 options:(id)arg2;
  - (id)lineCandidateResultForDrawing:(id)arg1 candidate:(struct CHCandidateResult *)arg2;
  - (id)outlineArrowCandidateResultForDrawing:(id)arg1 candidate:(struct CHCandidateResult *)arg2 rejectionResult:(id *)arg3;
  - (id)rectangleCandidateResultForDrawing:(id)arg1 candidate:(struct CHCandidateResult *)arg2;
  - (id)pentagonCandidateResultForDrawing:(id)arg1 candidate:(struct CHCandidateResult *)arg2 rejectionResult:(id *)arg3;
  - (id)ellipseCandidateResultForDrawing:(id)arg1 candidate:(struct CHCandidateResult *)arg2 rejectionResult:(id *)arg3;
  - (id)chatBubbleCandidateResultForDrawing:(id)arg1 candidate:(struct CHCandidateResult *)arg2 rejectionResult:(id *)arg3;
  - (id)triangleCandidateResultForDrawing:(id)arg1 candidate:(struct CHCandidateResult *)arg2;
  - (id)starCandidateResultForDrawing:(id)arg1 candidate:(struct CHCandidateResult *)arg2;
  - (void)endpointsForDrawing:(id)arg1 startLocation:(struct CGPoint *)arg2 endLocation:(struct CGPoint *)arg3;
  - (id)characterSetForStrings:(id)arg1;
  - (id)supportedStrings;
  - (id)supportedCharacterSet;
  - (id)sketchCodeForDescription:(id)arg1;
  - (id)sketchDescriptionForCode:(int)arg1;
  - (void)dealloc;
  - (id)initWithType:(int)arg1 mode:(int)arg2;
  - (id)strokeIndexesForLastCharacter;
  - (vector_de520796)completionsForCandidate:(id)arg1 candidateContext:(id)arg2 prefix:(id)arg3 option:(unsigned long long)arg4;
  - (vector_de520796)completionsForCandidate:(id)arg1 prefix:(id)arg2 option:(unsigned long long)arg3;
  - (void)candidateAccepted:(void *)arg1;
  - (void)candidatesCleared;
  - (void)updateUserDictionaryLexicon:(id)arg1;
  - (void)updateAddressBookLexicon:(id)arg1;
  - (void)logCandidateIfAppropriate:(void *)arg1;
  - (void)releaseLMResources;
  - (void)loadEngineModel;
  - (id)initWithType:(int)arg1 mode:(int)arg2 learningDictionaryURL:(id)arg3;
  
  @end
  
  @interface CHRectangleSketchRecognitionResult : CHSketchRecognitionResult
  {
      struct CGPoint _upperLeftPoint;
      struct CGPoint _upperRightPoint;
      struct CGPoint _lowerLeftPoint;
      struct CGPoint _lowerRightPoint;
  }
  
  @property(readonly) struct CGPoint lowerRightPoint; // @synthesize lowerRightPoint=_lowerRightPoint;
  @property(readonly) struct CGPoint lowerLeftPoint; // @synthesize lowerLeftPoint=_lowerLeftPoint;
  @property(readonly) struct CGPoint upperRightPoint; // @synthesize upperRightPoint=_upperRightPoint;
  @property(readonly) struct CGPoint upperLeftPoint; // @synthesize upperLeftPoint=_upperLeftPoint;
  - (id).cxx_construct;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3 upperLeftPoint:(struct CGPoint)arg4 upperRightPoint:(struct CGPoint)arg5 lowerLeftPoint:(struct CGPoint)arg6 lowerRightPoint:(struct CGPoint)arg7;
  
  @end
  
  @interface CHScribbleRecognitionResult : CHSketchRecognitionResult
  {
      struct CGPoint _center;
      struct CGSize _size;
  }
  
  @property(readonly) struct CGSize size; // @synthesize size=_size;
  @property(readonly) struct CGPoint center; // @synthesize center=_center;
  - (id).cxx_construct;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3 center:(struct CGPoint)arg4 size:(struct CGSize)arg5;
  
  @end
  
  @interface CHStarRecognitionResult : CHSketchRecognitionResult
  {
      struct CGPoint _center;
      struct CGSize _size;
  }
  
  @property(readonly) struct CGSize size; // @synthesize size=_size;
  @property(readonly) struct CGPoint center; // @synthesize center=_center;
  - (id).cxx_construct;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3 center:(struct CGPoint)arg4 size:(struct CGSize)arg5;
  
  @end
  
  @interface CHTextRecognitionResult : CHRecognitionResult
  {
      _Bool _rare;
      NSString *_string;
      NSArray *_wordRanges;
      NSArray *_wordIDs;
  }
  
  @property(readonly) NSArray *wordIDs; // @synthesize wordIDs=_wordIDs;
  @property(readonly) NSArray *wordRanges; // @synthesize wordRanges=_wordRanges;
  @property(readonly) NSString *string; // @synthesize string=_string;
  @property(readonly) _Bool rare; // @synthesize rare=_rare;
  - (void)dealloc;
  - (id)initWithString:(id)arg1 score:(double)arg2 rare:(_Bool)arg3 wordRanges:(id)arg4 wordIDs:(id)arg5;
  
  @end
  
  @interface CHTriangleRecognitionResult : CHSketchRecognitionResult
  {
      struct CGPoint _vertex1;
      struct CGPoint _vertex2;
      struct CGPoint _vertex3;
  }
  
  @property(readonly) struct CGPoint vertex3; // @synthesize vertex3=_vertex3;
  @property(readonly) struct CGPoint vertex2; // @synthesize vertex2=_vertex2;
  @property(readonly) struct CGPoint vertex1; // @synthesize vertex1=_vertex1;
  - (id).cxx_construct;
  - (id)initWithString:(id)arg1 score:(double)arg2 rotation:(double)arg3 vertex1:(struct CGPoint)arg4 vertex2:(struct CGPoint)arg5 vertex3:(struct CGPoint)arg6;
  
  @end
  
  